您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ speex_bits_write函数代码示例

51自学网 2021-06-03 08:09:04
  C++
这篇教程C++ speex_bits_write函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中speex_bits_write函数的典型用法代码示例。如果您正苦于以下问题:C++ speex_bits_write函数的具体用法?C++ speex_bits_write怎么用?C++ speex_bits_write使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了speex_bits_write函数的29个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: encode

//function encodes input buffer, stores in output buffer, return number of compressed bytesint encode(char* in, char* out, int max_bytes){  int nbBytes; //track the size of compressed buffer  speex_bits_reset(&enc_bits);  //Flush the struct's bits and prepare for next frame  speex_encode_int(enc_state, (short*)in, &enc_bits); //encode the input  int num_bytes = speex_bits_write(&enc_bits, out, max_bytes); //copy the encoded bytes to output stream  return num_bytes; //return the length of the compressed buffer}
开发者ID:jpanikulam,项目名称:visar,代码行数:8,


示例2: SpeexEncode

//*****************************************************************************////! Encode a single frame of speex encoded audio.//!//! /param pui16InBuffer is the buffer that contains the raw PCM audio.//! /param ui32InSize is the number of valid bytes in the /e pui16InBuffer//! buffer.//! /param pui8OutBuffer is a pointer to the buffer to store the encoded audio.//! /param ui32OutSize is the size of the buffer pointed to by the//! /e pui8OutBuffer pointer.//!//! This function will take a buffer of PCM audio and encode it into a frame//! of speex compressed audio.  The /e pui16InBuffer parameter should contain//! a single frame of PCM audio.  The /e pui8OutBuffer will contain the encoded//! audio after returning from this function.//!//! /return This function returns the number of encoded bytes in the//! /e pui8OutBuffer parameter.////*****************************************************************************int32_tSpeexEncode(int16_t *pui16InBuffer, uint32_t ui32InSize,            uint8_t *pui8OutBuffer, uint32_t ui32OutSize){    int32_t i32Bytes;    //    // Reset the bit stream before encoding a new frame.    //    speex_bits_reset(&g_sSpeexEncoder.sBits);    //    // Encode a single frame.    //    speex_encode_int(g_sSpeexEncoder.pvState, pui16InBuffer,                     &g_sSpeexEncoder.sBits);    //    // Read the PCM data from the encoded bit stream.    //    i32Bytes = speex_bits_write(&g_sSpeexEncoder.sBits, (char *)pui8OutBuffer,                                ui32OutSize);    //    // Return the number of bytes in the PCM data.    //    return(i32Bytes);}
开发者ID:GuillaumeGalasso,项目名称:Embedded_Systems--Shape_The_World,代码行数:48,


示例3: while

bool NetworkSoundRecorder::onProcessSamples(const cpp3ds::Int16 *samples, std::size_t sampleCount){	m_samples.insert(m_samples.end(), samples, samples + sampleCount);	std::vector<char> encodedSamples;	char out[m_frameSize*2];	int size = m_samples.size();	int i = 0;	while (size >= m_frameSize)	{		spx_int16_t* audioFrame = &m_samples[0] + i * m_frameSize;		speex_preprocess_run(m_speexPreprocessState, audioFrame);		speex_bits_reset(&m_speexBits);		speex_encode_int(m_speexState, audioFrame, &m_speexBits);		char bytes = speex_bits_write(&m_speexBits, out, sizeof(out));		encodedSamples.push_back(bytes);		encodedSamples.insert(encodedSamples.end(), out, out + bytes);		i++;		size -= m_frameSize;	}	std::vector<cpp3ds::Int16>(m_samples.end() - size, m_samples.end()).swap(m_samples);	std::cout << "size: " << sampleCount * sizeof(cpp3ds::Int16) << std::endl;	m_context->client.sendVoiceData(m_context->name.toAnsiString(), &encodedSamples[0], encodedSamples.size());	return true;}
开发者ID:Cruel,项目名称:DrawAttack,代码行数:34,


示例4: SpeexEncode

//*****************************************************************************////! Encode a single frame of speex encoded audio.//!//! /param pusInBuffer is the buffer that contains the raw PCM audio.//! /param ulInSize is the number of valid bytes in the pusInBuffer buffer.//! /param pucOutBuffer is a pointer to the buffer to store the encoded audio.//! /param ulOutSize is the size of the buffer pointed to by the pucOutBuffer//! pointer.//!//! This function will take a buffer of PCM audio and encode it into a frame//! of speex compressed audio.  The /e pusInBuffer parameter should contain//! a single frame of PCM audio.  The /e pucOutBuffer will contain the encoded//! audio after returning from this function.//!//! /return This function returns the number of encoded bytes in the//! /e pucOutBuffer parameter.////*****************************************************************************intSpeexEncode(short *pusInBuffer, unsigned long ulInSize,            unsigned char *pucOutBuffer, unsigned long ulOutSize){    int iBytes;    //    // Reset the bit stream before encoding a new frame.    //    speex_bits_reset(&g_sSpeexEncoder.sBits);    //    // Encode a single frame.    //    speex_encode_int(g_sSpeexEncoder.State, pusInBuffer,                     &g_sSpeexEncoder.sBits);    //    // Read the PCM data from the encoded bit stream.    //    iBytes = speex_bits_write(&g_sSpeexEncoder.sBits, (char *)pucOutBuffer,                              ulOutSize);    //    // return the number of bytes in the PCM data.    //    return(iBytes);}
开发者ID:yangjunjiao,项目名称:Luminary-Micro-Library,代码行数:47,


示例5: tdav_codec_speex_encode

tsk_size_t tdav_codec_speex_encode(tmedia_codec_t* self, const void* in_data, tsk_size_t in_size, void** out_data, tsk_size_t* out_max_size){		tdav_codec_speex_t* speex = (tdav_codec_speex_t*)self;	tsk_size_t outsize = 0;		if(!self || !in_data || !in_size || !out_data){		TSK_DEBUG_ERROR("Invalid parameter");		return 0;	}		speex_bits_reset(&speex->encoder.bits);	speex_encode_int(speex->encoder.state, (spx_int16_t*)in_data, &speex->encoder.bits);	if(*out_max_size <speex->encoder.size){		if((*out_data = tsk_realloc(*out_data, speex->encoder.size))){			*out_max_size = speex->encoder.size;		}		else{			*out_max_size = 0;			return 0;		}	}		outsize = speex_bits_write(&speex->encoder.bits, *out_data, speex->encoder.size/2);   return outsize;}
开发者ID:SayCV,项目名称:doubango,代码行数:27,


示例6: speex_encode_frame

static int speex_encode_frame(AVCodecContext *avctx,                      unsigned char *frame, int buf_size, void *data){    SpeexContext *s = avctx->priv_data;    int bytes_written = 0;        if (avctx->channels == 2)        speex_encode_stereo_int(data, avctx->frame_size, &s->bits);            speex_encode_int(s->st, data, &s->bits);    //speex_bits_insert_terminator(&s->bits);            if (!(avctx->flags2 & CODEC_FLAG2_NO_OUTPUT))    {    	bytes_written = speex_bits_write(&s->bits, frame, buf_size);    }	speex_bits_reset(&s->bits);    if (avctx->debug & FF_DEBUG_BITSTREAM)    {            av_log(avctx, AV_LOG_DEBUG, "Speex: encoded speex frame (%d bytes total, framesize: %d)/n",             bytes_written, avctx->frame_size);    }        return bytes_written;}
开发者ID:paranojik,项目名称:multitv,代码行数:28,


示例7: Pcm16_2_Speex

int Pcm16_2_Speex( unsigned char* out_buf, unsigned char* in_buf, 		   unsigned int size,		   unsigned int channels, unsigned int rate, long h_codec ){  SpeexState* ss;  short* pcm = (short*) in_buf;  char* buffer = (char*)out_buf;  div_t blocks;      ss = (SpeexState*) h_codec;      if (!ss || channels!=1)    return -1;  blocks = div(size>>1, ss->frame_size);  if (blocks.rem) {    ERROR("Pcm16_2_Speex: not integral number of blocks %d.%d/n", 	  blocks.quot, blocks.rem);    return -1;  }      /* For each chunk of ss->frame_size bytes, encode a single frame */  speex_bits_reset(&ss->encoder.bits);  while (blocks.quot--) {    speex_encode_int(ss->encoder.state, pcm, &ss->encoder.bits);    pcm += ss->frame_size;  }      buffer += speex_bits_write(&ss->encoder.bits, buffer, AUDIO_BUFFER_SIZE);  return buffer - (char*)out_buf;}
开发者ID:Chocolatbuddha,项目名称:sems,代码行数:31,


示例8: speex_bits_reset

JNIEXPORT jint JNICALL Java_com_speex_encode_Speex_encode    (JNIEnv *env, jobject obj, jshortArray lin, jint offset, jbyteArray encoded, jint size) {        jshort buffer[enc_frame_size];        jbyte output_buffer[enc_frame_size];	int nsamples = (size-1)/enc_frame_size + 1;	int i, tot_bytes = 0;	if (!codec_open)		return 0;	speex_bits_reset(&ebits);	for (i = 0; i < nsamples; i++) {		env->GetShortArrayRegion(lin, offset + i*enc_frame_size, enc_frame_size, buffer);		speex_encode_int(enc_state, buffer, &ebits);	}	//env->GetShortArrayRegion(lin, offset, enc_frame_size, buffer);	//speex_encode_int(enc_state, buffer, &ebits);	tot_bytes = speex_bits_write(&ebits, (char *)output_buffer,				     enc_frame_size);	env->SetByteArrayRegion(encoded, 0, tot_bytes,				output_buffer);        return (jint)tot_bytes;}
开发者ID:xuechinahb,项目名称:langs,代码行数:27,


示例9: Java_org_thoughtcrime_redphone_codec_SpeexCodec_encode

JNIEXPORT jint JNICALL Java_org_thoughtcrime_redphone_codec_SpeexCodec_encode (JNIEnv *env, jobject obj, jshortArray decArr, jbyteArray encArr, jint rawLen ){  if( !initialized ) {    logv( env, "tried to encode without initializing" );    return -1;  }  //  logv( env, "entered encode %d", rawLen );  //  logv( env, "encoding %d samples", rawLen );  jshort *raw_stream = env->GetShortArrayElements( decArr, NULL );  speex_bits_reset( &enc_bits );  //  logv( env, "bits reset" );  //  speex_preprocess_run( prepState, (spx_int16_t *)raw_stream );  speex_encode_int( enc, (spx_int16_t *)raw_stream, &enc_bits );  //  logv( env, "encode complete" );  env->ReleaseShortArrayElements( decArr, raw_stream, JNI_ABORT );  //  logv( env, "writing up to %d bytes to buffer", enc_frame_size );  int nbytes = speex_bits_write( &enc_bits, enc_buffer, enc_frame_size );  //  logv( env, "wrote %d bytes to buffer", nbytes );  env->SetByteArrayRegion( encArr, 0, nbytes, (jbyte*)enc_buffer );  //  logv( env, "wrote back to java buffer" );  return (jint)nbytes;}
开发者ID:3141592653589793,项目名称:RedPhone,代码行数:31,


示例10: encode_speex

static int encode_speex(int16_t * input_frame, uint8_t nbframes, char * output, int bitrate) {	int i, bytesToWrite, nbBytes;  SpeexBits bits;  void * state;  long long total;  speex_bits_init(&bits);  state = speex_encoder_init(&speex_nb_mode);  speex_encoder_ctl(state, SPEEX_SET_QUALITY, &bitrate);  speex_bits_reset(&bits);    total = 0;  for(i=0;i<5*160;i++) {    total += input_frame[i];  }  total /= (5*160);  if(abs(total) < 10)    return 0;  for(i=0;i<5;i++) {	  speex_encode_int(state, input_frame + (i*160), &bits);  }	bytesToWrite = speex_bits_nbytes(&bits);  nbBytes = speex_bits_write(&bits, output, bytesToWrite);  speex_bits_destroy(&bits);  speex_decoder_destroy(state);	return nbBytes;}
开发者ID:Youx,项目名称:soliloque-client,代码行数:29,


示例11: while

void* SpeexEncoder::encodingThreadMethod(void)	{	Threads::Thread::setCancelState(Threads::Thread::CANCEL_ENABLE);	// Threads::Thread::setCancelType(Threads::Thread::CANCEL_ASYNCHRONOUS);		while(true)		{		try			{			/* Read raw audio data from the recording PCM device: */			size_t numFrames=read(recordingBuffer,speexFrameSize);						/* Check for possible error conditions: */			if(numFrames==speexFrameSize&&speex_encode_int(speexState,recordingBuffer,&speexBits)>=0)				{				/* Write packed bits into the SPEEX packet queue: */				char* speexPacket=speexPacketQueue.getWriteSegment();				speex_bits_write(&speexBits,speexPacket,speexPacketSize);				speexPacketQueue.pushSegment();				speex_bits_reset(&speexBits);				}			}		catch(Sound::ALSAPCMDevice::OverrunError)			{			/* Restart the recording PCM device: */			prepare();			start();			}		}		return 0;	}
开发者ID:KeckCAVES,项目名称:CollaborationInfrastructure,代码行数:32,


示例12: spx_encode_frame

int spx_encode_frame(int handle ,short *const pcm_data ,char *speex_data){   // char cbits[200];    float input[FRAME_SIZE];    speex_encode_union_t * speex_encode_u = (speex_encode_union_t *)handle;    /*Flush all the bits in the struct so we can encode a new frame*/    speex_bits_reset(&speex_encode_u->bits);    /*Encode the frame*/   // memcpy(input,pcm_data,FRAME_SIZE*2);    int i;    for (i = 0; i < FRAME_SIZE; i++)          input[i] = pcm_data[i];    speex_encode(speex_encode_u->state, input, &speex_encode_u->bits);    ////write rtp packet header!!!!!RTP HEADER    //memcpy(speex_data ,&speex_encode_u->rtp_header ,RTP_HEADER_SIZE);    ///*Copy the bits to an array of char that can be written*/    //int nbBytes = speex_bits_write(&speex_encode_u->bits, &speex_data[RTP_HEADER_SIZE], 38);    //fwrite(&speex_data[RTP_HEADER_SIZE] ,1 ,38 ,fp_speex_send);	int nbBytes = speex_bits_write(&speex_encode_u->bits, speex_data, 38);	fwrite(speex_data ,1 ,38 ,fp_speex_send);	printf("after speex_encode ,write nbBytes = %d  to file !/n" ,nbBytes);	return 0;}
开发者ID:chris-magic,项目名称:voice_processing,代码行数:27,


示例13: speex_bits_nbytes

void AudioInput::flushCheck() {	if (bPreviousVoice && iFrames < g.s.iFramesPerPacket)		return;	int flags = 0;	if (g.iAltSpeak > 0)		flags += MessageSpeex::AltSpeak;	if (g.s.lmLoopMode == Settings::Server)		flags += MessageSpeex::LoopBack;	if (! bPreviousVoice)		flags += MessageSpeex::EndSpeech;	flags += (iFrames - 1) << 4;	int len = speex_bits_nbytes(&sbBits);	QByteArray qba(len + 1, 0);	qba[0] = static_cast<unsigned char>(flags);	speex_bits_write(&sbBits, qba.data() + 1, len);	MessageSpeex msPacket;	msPacket.qbaSpeexPacket = qba;	msPacket.iSeq = iFrameCounter;	if (g.s.lmLoopMode == Settings::Local) {		LoopPlayer::lpLoopy.addFrame(qba, msPacket.iSeq);	} else if (g.sh) {		g.sh->sendMessage(&msPacket);	}	iFrames = 0;	speex_bits_reset(&sbBits);}
开发者ID:ArminW,项目名称:re-whisper,代码行数:34,


示例14: speex_encoder_encode

int	speex_encoder_encode(unsigned char* src, int inlen, unsigned char*dest, int outlen) {	int len = 0;	speex_bits_reset(&bits);	speex_encode_int(speex_encoder, (short*)src, &bits);	len = speex_bits_write(&bits, dest, outlen);	return len;}
开发者ID:yunzed,项目名称:libflvspx,代码行数:7,


示例15: spx_encode_frame

int spx_encode_frame(int handle ,short *pcm_data ,char *speex_data){   // char cbits[200];    float input[FRAME_SIZE];    speex_encode_union_t * speex_encode_u = (speex_encode_union_t *)handle;    /*Flush all the bits in the struct so we can encode a new frame*/    speex_bits_reset(&speex_encode_u->bits);    /*Encode the frame*/   // memcpy(input,pcm_data,FRAME_SIZE*2);    int i;    for (i = 0; i < FRAME_SIZE; i++)    			input[i] = pcm_data[i];    speex_encode(speex_encode_u->state, input, &speex_encode_u->bits);    /*Copy the bits to an array of char that can be written*///    nbBytes = speex_bits_write(&speex_encode_u->bits, cbits, 200);    int nbBytes = speex_bits_write(&speex_encode_u->bits, speex_data, 38);    printf("nbBytes = %d /n" ,nbBytes);//    /*Write the size of the frame first. This is what sampledec expects but//     it’s likely to be different in your own application*///    fwrite(&nbBytes, sizeof(int), 1, stdout);//    printf("nbBytes = %d /n" ,nbBytes);//    /*Write the compressed data*///    //fwrite(cbits, 1, nbBytes, stdout);}
开发者ID:chris-magic,项目名称:libspeex-study,代码行数:25,


示例16: main

int main(int argc, char **argv){   char *inFile;   FILE *fin;   short in[FRAME_SIZE];   float input[FRAME_SIZE];   char cbits[2000];   int nbBytes;   /*Holds the state of the encoder*/   void *state;   /*Holds bits so they can be read and written to by the Speex routines*/   SpeexBits bits;   int i, tmp;   /*Create a new encoder state in narrowband mode*/   state = speex_encoder_init(&speex_nb_mode);   //printf("inited/n");   /*Set the quality to 8 (15 kbps)*/   tmp=8;   speex_encoder_ctl(state, SPEEX_SET_QUALITY, &tmp);   inFile = argv[1];   fin = fopen(inFile, "r");   /*Initialization of the structure that holds the bits*/   speex_bits_init(&bits);   while (1)   {      /*Read a 16 bits/sample audio frame*/      fread(in, sizeof(short), FRAME_SIZE, fin);      if (feof(fin))         break;      /*Copy the 16 bits values to float so Speex can work on them*/      for (i=0;i<FRAME_SIZE;i++)         input[i]=in[i];      /*Flush all the bits in the struct so we can encode a new frame*/      speex_bits_reset(&bits);      /*Encode the frame*/      speex_encode(state, input, &bits);      /*Copy the bits to an array of char that can be written*/      nbBytes = speex_bits_write(&bits, cbits, 2000);      /*Write the size of the frame first. This is what sampledec expects but       it's likely to be different in your own application*/      fwrite(&nbBytes, sizeof(int), 1, stdout);      /*Write the compressed data*/      fwrite(cbits, 1, nbBytes, stdout);         }      /*Destroy the encoder state*/   speex_encoder_destroy(state);   /*Destroy the bit-packing struct*/   speex_bits_destroy(&bits);   fclose(fin);   return 0;}
开发者ID:kaainet,项目名称:smart_bus_proto,代码行数:59,


示例17: encodeSPEEX

BYTE* encodeSPEEX(signed short *data){	char *pCh = (char*)(&in_byte[0]);	speex_bits_reset(&inbits);	speex_encode_int(pEnc, data, &inbits);	speex_bits_write(&inbits, pCh, SPEEX_SIZE);	return (BYTE*)pCh;}
开发者ID:SrgShv,项目名称:speex_stm32,代码行数:8,


示例18: spx_codec_encode

/* * Encode frames. */static pj_status_t spx_codec_encode( pjmedia_codec *codec, 				     const struct pjmedia_frame *input,				     unsigned output_buf_len, 				     struct pjmedia_frame *output){    struct spx_private *spx;    unsigned samples_per_frame;    int tx = 0;    spx_int16_t *pcm_in = (spx_int16_t*)input->buf;    pj_size_t nsamples;    spx = (struct spx_private*) codec->codec_data;    if (input->type != PJMEDIA_FRAME_TYPE_AUDIO) {	output->size = 0;	output->buf = NULL;	output->timestamp = input->timestamp;	output->type = input->type;	return PJ_SUCCESS;    }    nsamples = input->size >> 1;    samples_per_frame=spx_factory.speex_param[spx->param_id].samples_per_frame;    PJ_ASSERT_RETURN(nsamples % samples_per_frame == 0, 		     PJMEDIA_CODEC_EPCMFRMINLEN);    /* Flush all the bits in the struct so we can encode a new frame */    speex_bits_reset(&spx->enc_bits);    /* Encode the frames */    while (nsamples >= samples_per_frame) {	tx += speex_encode_int(spx->enc, pcm_in, &spx->enc_bits);	pcm_in += samples_per_frame;	nsamples -= samples_per_frame;    }    /* Check if we need not to transmit the frame (DTX) */    if (tx == 0) {	output->buf = NULL;	output->size = 0;	output->timestamp.u64 = input->timestamp.u64;	output->type = PJMEDIA_FRAME_TYPE_NONE;	return PJ_SUCCESS;    }    /* Check size. */    pj_assert(speex_bits_nbytes(&spx->enc_bits) <= (int)output_buf_len);    /* Copy the bits to an array of char that can be written */    output->size = speex_bits_write(&spx->enc_bits, 				    (char*)output->buf, output_buf_len);    output->type = PJMEDIA_FRAME_TYPE_AUDIO;    output->timestamp = input->timestamp;    return PJ_SUCCESS;}
开发者ID:imace,项目名称:mbgapp,代码行数:60,


示例19: memcpy

OsStatus MpeSipxSpeexUWb::encode(const MpAudioSample* pAudioSamples,                              const int numSamples,                              int& rSamplesConsumed,                              unsigned char* pCodeBuf,                              const int bytesLeft,                              int& rSizeInBytes,                              UtlBoolean& sendNow,                              MpSpeechType& speechType){   int size = 0;   if (speechType == MP_SPEECH_SILENT && ms_bEnableVAD && mBufferLoad == 0)   {      // VAD must be enabled, do DTX      rSamplesConsumed = numSamples;      rSizeInBytes = 0;      sendNow = TRUE; // sends any unsent frames now      return OS_SUCCESS;   }   memcpy(&mpBuffer[mBufferLoad], pAudioSamples, sizeof(MpAudioSample)*numSamples);   mBufferLoad = mBufferLoad + numSamples;   assert(mBufferLoad <= 640);   // Check for necessary number of samples   if(mBufferLoad == 640)   {      speex_bits_reset(&mBits);      // We don't have echo data, but it should be possible to use the      // Speex echo cancelator in sipxtapi.      if(mDoPreprocess)         speex_preprocess(mpPreprocessState, mpBuffer, NULL);      speex_encode_int(mpEncoderState, mpBuffer, &mBits);      // Copy to the byte buffer      size = speex_bits_write(&mBits,(char*)pCodeBuf, bytesLeft);            // Reset the buffer count.      mBufferLoad = 0;      if (size > 0)      {         sendNow = true;      }   }   else   {      sendNow = false;   }   rSamplesConsumed = numSamples;   rSizeInBytes = size;      return OS_SUCCESS;}
开发者ID:Jaroslav23,项目名称:sipxtapi,代码行数:56,


示例20: assert

uint16 t_speex_audio_encoder::encode(int16 *sample_buf, uint16 nsamples, 			uint8 *payload, uint16 payload_size, bool &silence){	assert(payload_size >= _max_payload_size);	silence = false;	speex_bits_reset(&speex_bits);                if (speex_encode_int(speex_enc_state, sample_buf, &speex_bits) == 0) 		silence = true;	return speex_bits_write(&speex_bits, (char *)payload, payload_size);}
开发者ID:gwozniak,项目名称:twinkle,代码行数:13,


示例21: switch_speex_encode

static switch_status_t switch_speex_encode(switch_codec_t *codec,										   switch_codec_t *other_codec,										   void *decoded_data,										   uint32_t decoded_data_len,										   uint32_t decoded_rate, void *encoded_data, uint32_t *encoded_data_len, uint32_t *encoded_rate,										   unsigned int *flag){	struct speex_context *context = codec->private_info;	short *buf;	int is_speech = 1;	if (!context) {		return SWITCH_STATUS_FALSE;	}	buf = decoded_data;	if (context->pp) {		is_speech = speex_preprocess(context->pp, buf, NULL);	}	if (is_speech) {		is_speech = speex_encode_int(context->encoder_state, buf, &context->encoder_bits)			|| !context->codec_settings.dtx;	} else {		speex_bits_pack(&context->encoder_bits, 0, 5);	}	if (is_speech) {		switch_clear_flag(context, SWITCH_CODEC_FLAG_SILENCE);		*flag |= SWITCH_CODEC_FLAG_SILENCE_STOP;	} else {		if (switch_test_flag(context, SWITCH_CODEC_FLAG_SILENCE)) {			*encoded_data_len = 0;			*flag |= SWITCH_CODEC_FLAG_SILENCE;			return SWITCH_STATUS_SUCCESS;		}		switch_set_flag(context, SWITCH_CODEC_FLAG_SILENCE);		*flag |= SWITCH_CODEC_FLAG_SILENCE_START;	}	speex_bits_pack(&context->encoder_bits, 15, 5);	*encoded_data_len = speex_bits_write(&context->encoder_bits, (char *) encoded_data, context->encoder_frame_size);	speex_bits_reset(&context->encoder_bits);	(*encoded_data_len)--;	return SWITCH_STATUS_SUCCESS;}
开发者ID:kgrofelnik,项目名称:mod_portaudio-endpoints,代码行数:51,


示例22: speexout_encode

    /* encode PCM data to speex frames */static void speexout_encode(t_speexout *x){    if ( x->x_bytesbuffered > x->x_framesize )    {      speex_bits_reset(&x->x_bits);            {        t_int sp=0, rp=0;               while( sp < x->x_framesize )          {             rp=(x->x_outp+sp)%IN_BUFFER_SIZE;             // post( "speexout~ : sp=%d : rp=%d", sp, rp );             x->x_encchunk[ sp++ ] = *(x->x_inbuf+rp);          }          speex_encode(x->x_encstate, x->x_encchunk, &x->x_bits);      }      x->x_outp = (x->x_outp+x->x_framesize)%IN_BUFFER_SIZE;      x->x_bytesbuffered -= x->x_framesize;      x->x_encsize = speex_bits_write(&x->x_bits, x->x_outbuf+1, OUT_BUFFER_SIZE );      if ( x->x_encsize < 127 )      {         *(x->x_outbuf) = (char)x->x_encsize;       }      else      {         post( "speexout~ : encoding error : frame is more than 127 bytes" );         x->x_encsize = -1;      }      x->x_bytesemitted += x->x_encsize;#ifdef DATADEBUG      {        t_int si;          printf( "speexout~ : encoded :  " );          for ( si=0; si<x->x_encsize; si++ )          {              printf( "%d ", *(x->x_outbuf+si) );          }          printf( "/n" );      }#endif    }    else    {      x->x_encsize = -1;    }}
开发者ID:Angeldude,项目名称:pd,代码行数:50,


示例23: enc_process

static void enc_process(MSFilter *f){	SpeexEncState *s=(SpeexEncState*)f->data;	mblk_t *im;	int nbytes;	uint8_t *buf;	int frame_per_packet=1;	if (s->frame_size<=0)		return;	ms_filter_lock(f);	if (s->ptime>=20)	{		frame_per_packet = s->ptime/20;	}	if (frame_per_packet<=0)		frame_per_packet=1;	if (frame_per_packet>7) /* 7*20 == 140 ms max */		frame_per_packet=7;	nbytes=s->frame_size*2;	buf=(uint8_t*)alloca(nbytes*frame_per_packet);	while((im=ms_queue_get(f->inputs[0]))!=NULL){		ms_bufferizer_put(s->bufferizer,im);	}	while(ms_bufferizer_read(s->bufferizer,buf,nbytes*frame_per_packet)==nbytes*frame_per_packet){		mblk_t *om=allocb(nbytes*frame_per_packet,0);//too large...		int k;		SpeexBits bits;		speex_bits_init(&bits);		for (k=0;k<frame_per_packet;k++)		{			speex_encode_int(s->state,(int16_t*)(buf + (k*s->frame_size*2)),&bits);			s->ts+=s->frame_size;		}		speex_bits_insert_terminator(&bits);		k=speex_bits_write(&bits, (char*)om->b_wptr, nbytes*frame_per_packet);		om->b_wptr+=k;		mblk_set_timestamp_info(om,s->ts-s->frame_size);		ms_bufferizer_fill_current_metas(s->bufferizer, om);		ms_queue_put(f->outputs[0],om);		speex_bits_destroy(&bits);	}	ms_filter_unlock(f);}
开发者ID:TheBaobabTeam,项目名称:linphone-android,代码行数:49,


示例24: main

int main(int argc, char **argv){    char *inFile;    FILE *fin;    short in[FRAME_SIZE];    float input[FRAME_SIZE];    char cbits[200];    int nbBytes;    /*保存编码的状态*/    void *state;    /*保存字节因此他们可以被speex常规读写*/    SpeexBits bits;    int i, tmp;    //新建一个新的编码状态在窄宽(narrowband)模式下    state = speex_encoder_init(&speex_nb_mode);    //设置质量为8(15kbps)    tmp=8;    speex_encoder_ctl(state, SPEEX_SET_QUALITY, &tmp);    inFile = argv[1];    fin = fopen(inFile, "r");    //初始化结构使他们保存数据    speex_bits_init(&bits);    while (1) {        //读入一帧16bits的声音        fread(in, sizeof(short), FRAME_SIZE, fin);        if (feof(fin))        break;        //把16bits的值转化为float,以便speex库可以在上面工作        for (i=0;i<FRAME_SIZE;i++)        input[i]=in[i];        //清空这个结构体里所有的字节,以便我们可以编码一个新的帧        speex_bits_reset(&bits);        //对帧进行编码        speex_encode(state, input, &bits);        //把bits拷贝到一个利用写出的char型数组        nbBytes = speex_bits_write(&bits, cbits, 200);        //首先写出帧的大小,这是sampledec文件需要的一个值,但是你的应用程序中可能不一样        fwrite(&nbBytes, sizeof(int), 1, stdout);        //写出压缩后的数组        fwrite(cbits, 1, nbBytes, stdout);    }    //释放编码器状态量    speex_encoder_destroy(state);    //释放bit_packing结构    speex_bits_destroy(&bits);    fclose(fin);    return 0;}
开发者ID:Catentropy,项目名称:mylab,代码行数:48,


示例25: throw

uint16 SpeexPlugin::encode(int16 *sample_buf, uint16 nsamples, uint8 *payload,		uint16 payload_size, bool &silence)		throw(OperationNotPerfomedException) {	if (payload_size < MAX_PAYLOAD_SIZE)		throw OperationNotPerfomedException("The buffer is not large enough");	if (!encoder)		throw OperationNotPerfomedException("Encoder not ready");	//	// Falta fazer o echo cancelling	//	//	//	if (usingEchoCancellation && !echoCapturedLast) {	//		uint32 samplesize = getSampleSize();	//		spx_int16_t *input_buf = new spx_int16_t[samplesize / 2];	//	//		for (int i = 0; i < getSampleSize() / 2; i++) {	//			input_buf[i] = sample_buf[i];	//		}	//	//		speex_echo_capture(echocancellation, input_buf, sample_buf);	//		echoCapturedLast = true;	//		delete input_buf;	//	}	bool preprocessing_silence = false;	if (preprocess) {		preprocessing_silence = !speex_preprocess_run(preprocess, sample_buf); //Garantir que o nsamples sera sempre o mesmo		bool speex_dsp_vad;		speex_preprocess_ctl(preprocess, SPEEX_PREPROCESS_GET_VAD,				&speex_dsp_vad);		if (!speex_dsp_vad)			preprocessing_silence = false;	}	silence = false;	speex_bits_reset(&encoder->bits);	silence = speex_encode_int(encoder->state, sample_buf, &encoder->bits) == 0;	silence = silence || preprocessing_silence;	return speex_bits_write(&encoder->bits, (char *) payload, payload_size);}
开发者ID:txithihausen,项目名称:streamadapt,代码行数:46,


示例26: gviSpursSpeexEncode

void gviSpursSpeexEncode(SpursSpeexTaskOutput *spuTaskOut){		short *inBuffer;	float *speexBuffer;	char *outBuffer;	unsigned int i;	spuTaskOut->mSpeexEncodedFrameSize = 0;	spuTaskOut->mSpeexInitialized = 1;	spuTaskOut->mSpeexSamplesPerFrame = 0;	spuTaskOut->mSpeexReturnCode = 0;	spuTaskOut->mSpeexOutBufferSize = 0;	speexBuffer = (float *)memalign(16, gviSpursSpeexTaskDesc.mInputBufferSize * sizeof(float));	inBuffer = (short *)memalign(16, gviSpursSpeexTaskDesc.mInputBufferSize * sizeof(short));	outBuffer = (char *)memalign(16, gviSpursSpeexTaskDesc.mOutputBufferSize);		memset(speexBuffer, 0, gviSpursSpeexTaskDesc.mInputBufferSize * sizeof(float));	memset(inBuffer, 0, gviSpursSpeexTaskDesc.mInputBufferSize * sizeof(short));	memset(outBuffer, 0, gviSpursSpeexTaskDesc.mOutputBufferSize);	cellDmaGet(inBuffer, (uint64_t)gviSpursSpeexTaskDesc.mInputBuffer, gviSpursSpeexTaskDesc.mInputBufferSize * sizeof(short), DMA_TAG(1), 0,0);	cellDmaWaitTagStatusAll(DMA_MASK(1));			// convert the input to floats for encoding	for(i = 0 ; i < gviSpursSpeexTaskDesc.mInputBufferSize ; i++)		speexBuffer[i] = inBuffer[i];	// (re)initialize the bits struct	speex_bits_init_buffer(&gviSpursSpeexBits,gviSpursSpeexBitsBuffer,sizeof(gviSpursSpeexBitsBuffer));	// flush the bits	speex_bits_reset(&gviSpursSpeexBits);	// encode the frame	speex_encode(gviSpursSpeexStateBuffer, speexBuffer, &gviSpursSpeexBits);	// write the bits to the output	spuTaskOut->mSpeexOutBufferSize = speex_bits_write(&gviSpursSpeexBits, (char *)outBuffer, gviSpursSpeexTaskDesc.mEncodedFrameSize);	//spuDebugPrintf("[Speex][SPU] transferring data back, output size should be: %d/n", gviSpursSpeexTaskDesc.mOutputBufferSize>16?gviSpursSpeexTaskDesc.mOutputBufferSize:16);	cellDmaPut(outBuffer, (uint64_t)gviSpursSpeexTaskDesc.mOutputBuffer, gviSpursSpeexTaskDesc.mOutputBufferSize, DMA_TAG(1), 0, 0);	cellDmaWaitTagStatusAll(DMA_MASK(1));	//spuDebugPrintf("[Speex][SPU] done transferring data back/n");	free(speexBuffer);	free(inBuffer);	free(outBuffer);	spuTaskOut->mSpeexReturnCode = 0;}
开发者ID:AntonioModer,项目名称:xray-16,代码行数:46,


示例27: encode

static int encode(struct auenc_state *st, uint8_t *buf,		  size_t *len, const int16_t *sampv, size_t sampc){	const size_t n = st->channels * st->frame_size;	int ret, r;	if (*len < 128)		return ENOMEM;	/* VAD */	if (!sampv || !sampc) {		/* 5 zeros interpreted by Speex as silence (submode 0) */		speex_bits_pack(&st->bits, 0, 5);		goto out;	}	/* Handle multiple Speex frames in one RTP packet */	while (sampc > 0) {		/* Assume stereo */		if (2 == st->channels) {			speex_encode_stereo_int((int16_t *)sampv,						st->frame_size, &st->bits);		}		ret = speex_encode_int(st->enc, (int16_t *)sampv, &st->bits);		if (1 != ret) {			warning("speex: speex_encode_int: ret=%d/n", ret);		}		sampc -= n;		sampv += n;	} out:	/* Terminate bit stream */	speex_bits_pack(&st->bits, 15, 5);	r = speex_bits_write(&st->bits, (char *)buf, (int)*len);	*len = r;	speex_bits_reset(&st->bits);	return 0;}
开发者ID:FOSSRIT,项目名称:baresip,代码行数:45,


示例28: speex_encoder_ctl

int AudioInput::encodeSpeexFrame(short *psSource, unsigned char *buffer) {	int vbr = 0;	speex_encoder_ctl(esSpeex, SPEEX_GET_VBR_MAX_BITRATE, &vbr);	if (vbr != iAudioQuality) {		vbr = iAudioQuality;		speex_encoder_ctl(esSpeex, SPEEX_SET_VBR_MAX_BITRATE, &vbr);	}	if (! bPreviousVoice)		speex_encoder_ctl(esSpeex, SPEEX_RESET_STATE, NULL);	speex_encode_int(esSpeex, psSource, &sbBits);	int len = speex_bits_write(&sbBits, reinterpret_cast<char *>(buffer), 127);	iBitrate = len * 50 * 8;	speex_bits_reset(&sbBits);	return len;}
开发者ID:ashurta,项目名称:mumble,代码行数:18,


示例29: gviSpeexEncode

void gviSpeexEncode(GVByte * out, const GVSample * in){	int bytesWritten;	int i;	// convert the input to floats for encoding	for(i = 0 ; i < gviSpeexSamplesPerFrame ; i++)		gviSpeexBuffer[i] = in[i];	// flush the bits	speex_bits_reset(&gviSpeexBits);	// encode the frame	speex_encode(gviSpeexEncoderState, gviSpeexBuffer, &gviSpeexBits);	// write the bits to the output	bytesWritten = speex_bits_write(&gviSpeexBits, (char *)out, gviSpeexEncodedFrameSize);	GS_ASSERT(bytesWritten == gviSpeexEncodedFrameSize);}
开发者ID:gamespy-tech,项目名称:GameSpyOpenSource,代码行数:19,



注:本文中的speex_bits_write函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ speex_decoder_ctl函数代码示例
C++ speex_bits_unpack_unsigned函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。