diff options
Diffstat (limited to 'recordmydesktop/src/encode_sound_buffer.c')
-rw-r--r-- | recordmydesktop/src/encode_sound_buffer.c | 66 |
1 files changed, 33 insertions, 33 deletions
diff --git a/recordmydesktop/src/encode_sound_buffer.c b/recordmydesktop/src/encode_sound_buffer.c index 73f6d48..aeea402 100644 --- a/recordmydesktop/src/encode_sound_buffer.c +++ b/recordmydesktop/src/encode_sound_buffer.c @@ -27,12 +27,12 @@ #include <recordmydesktop.h> -void *EncodeSoundBuffer(void *pdata){ +void *EncodeSoundBuffer(ProgData *pdata){ - int sampread=((ProgData *)pdata)->periodsize/(2*((ProgData *)pdata)->args.channels); + int sampread=pdata->periodsize/(2*pdata->args.channels); pthread_mutex_t smut; pthread_mutex_init(&smut,NULL); - while((((ProgData *)pdata)->running)){ + while((pdata->running)){ float **vorbis_buffer; int count=0,i,j; SndBuffer *buff; @@ -40,51 +40,51 @@ void *EncodeSoundBuffer(void *pdata){ if(Paused){ pthread_mutex_t tmut; pthread_mutex_init(&tmut,NULL); - pthread_cond_wait(&((ProgData *)pdata)->pause_cond,&tmut); + pthread_cond_wait(&pdata->pause_cond,&tmut); } - if(((ProgData *)pdata)->sound_buffer==NULL) - pthread_cond_wait(&((ProgData *)pdata)->sound_data_read,&smut); + if(pdata->sound_buffer==NULL) + pthread_cond_wait(&pdata->sound_data_read,&smut); - pthread_mutex_lock(&((ProgData *)pdata)->sound_buffer_mutex); - buff=((ProgData *)pdata)->sound_buffer; + pthread_mutex_lock(&pdata->sound_buffer_mutex); + buff=pdata->sound_buffer; //advance the list - ((ProgData *)pdata)->sound_buffer=((ProgData *)pdata)->sound_buffer->next; - pthread_mutex_unlock(&((ProgData *)pdata)->sound_buffer_mutex); - - vorbis_buffer=vorbis_analysis_buffer(&((ProgData *)pdata)->enc_data->m_vo_dsp,sampread); + pdata->sound_buffer=pdata->sound_buffer->next; + pthread_mutex_unlock(&pdata->sound_buffer_mutex); + + vorbis_buffer=vorbis_analysis_buffer(&pdata->enc_data->m_vo_dsp,sampread); for(i=0;i<sampread;i++){ - for(j=0;j<((ProgData *)pdata)->args.channels;j++){ + for(j=0;j<pdata->args.channels;j++){ vorbis_buffer[j][i]=((buff->data[count+1]<<8)| (0x00ff&(int)buff->data[count]))/32768.f; count+=2; } } - vorbis_analysis_wrote(&((ProgData *)pdata)->enc_data->m_vo_dsp,sampread); - - while(vorbis_analysis_blockout(&((ProgData *)pdata)->enc_data->m_vo_dsp,&((ProgData *)pdata)->enc_data->m_vo_block)==1){ - - vorbis_analysis(&((ProgData *)pdata)->enc_data->m_vo_block,NULL); - vorbis_bitrate_addblock(&((ProgData *)pdata)->enc_data->m_vo_block); - - while(vorbis_bitrate_flushpacket(&((ProgData *)pdata)->enc_data->m_vo_dsp,&((ProgData *)pdata)->enc_data->m_ogg_pckt2)){ - pthread_mutex_lock(&((ProgData *)pdata)->libogg_mutex); - ogg_stream_packetin(&((ProgData *)pdata)->enc_data->m_ogg_vs,&((ProgData *)pdata)->enc_data->m_ogg_pckt2); - pthread_mutex_unlock(&((ProgData *)pdata)->libogg_mutex); + vorbis_analysis_wrote(&pdata->enc_data->m_vo_dsp,sampread); + + while(vorbis_analysis_blockout(&pdata->enc_data->m_vo_dsp,&pdata->enc_data->m_vo_block)==1){ + + vorbis_analysis(&pdata->enc_data->m_vo_block,NULL); + vorbis_bitrate_addblock(&pdata->enc_data->m_vo_block); + + while(vorbis_bitrate_flushpacket(&pdata->enc_data->m_vo_dsp,&pdata->enc_data->m_ogg_pckt2)){ + pthread_mutex_lock(&pdata->libogg_mutex); + ogg_stream_packetin(&pdata->enc_data->m_ogg_vs,&pdata->enc_data->m_ogg_pckt2); + pthread_mutex_unlock(&pdata->libogg_mutex); } } - ((ProgData *)pdata)->avd-=((ProgData *)pdata)->periodtime; + pdata->avd-=pdata->periodtime; free(buff->data); free(buff); } - vorbis_analysis_wrote(&((ProgData *)pdata)->enc_data->m_vo_dsp,0); -// while(vorbis_analysis_blockout(&((ProgData *)pdata)->enc_data->m_vo_dsp,&((ProgData *)pdata)->enc_data->m_vo_block)==1){ -// vorbis_analysis(&((ProgData *)pdata)->enc_data->m_vo_block,NULL); -// vorbis_bitrate_addblock(&((ProgData *)pdata)->enc_data->m_vo_block); -// while(vorbis_bitrate_flushpacket(&((ProgData *)pdata)->enc_data->m_vo_dsp,&((ProgData *)pdata)->enc_data->m_ogg_pckt2)) -// ogg_stream_packetin(&((ProgData *)pdata)->enc_data->m_ogg_vs,&((ProgData *)pdata)->enc_data->m_ogg_pckt2); + vorbis_analysis_wrote(&pdata->enc_data->m_vo_dsp,0); +// while(vorbis_analysis_blockout(&pdata->enc_data->m_vo_dsp,&pdata->enc_data->m_vo_block)==1){ +// vorbis_analysis(&pdata->enc_data->m_vo_block,NULL); +// vorbis_bitrate_addblock(&pdata->enc_data->m_vo_block); +// while(vorbis_bitrate_flushpacket(&pdata->enc_data->m_vo_dsp,&pdata->enc_data->m_ogg_pckt2)) +// ogg_stream_packetin(&pdata->enc_data->m_ogg_vs,&pdata->enc_data->m_ogg_pckt2); // } pthread_exit(&errno); @@ -106,10 +106,10 @@ void SyncEncodeSoundBuffer(ProgData *pdata,signed char *buff){ vorbis_analysis_wrote(&pdata->enc_data->m_vo_dsp,sampread); while(vorbis_analysis_blockout(&pdata->enc_data->m_vo_dsp,&pdata->enc_data->m_vo_block)==1){ - + vorbis_analysis(&pdata->enc_data->m_vo_block,NULL); vorbis_bitrate_addblock(&pdata->enc_data->m_vo_block); - + while(vorbis_bitrate_flushpacket(&pdata->enc_data->m_vo_dsp,&pdata->enc_data->m_ogg_pckt2)){ pthread_mutex_lock(&pdata->libogg_mutex); ogg_stream_packetin(&pdata->enc_data->m_ogg_vs,&pdata->enc_data->m_ogg_pckt2); |