summaryrefslogtreecommitdiff
path: root/recordmydesktop/src/flush_to_ogg.c
diff options
context:
space:
mode:
Diffstat (limited to 'recordmydesktop/src/flush_to_ogg.c')
-rw-r--r--recordmydesktop/src/flush_to_ogg.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/recordmydesktop/src/flush_to_ogg.c b/recordmydesktop/src/flush_to_ogg.c
index f28adbe..8fa762f 100644
--- a/recordmydesktop/src/flush_to_ogg.c
+++ b/recordmydesktop/src/flush_to_ogg.c
@@ -54,20 +54,24 @@ void *FlushToOgg(ProgData *pdata){
}
//last packages
+ pdata->enc_data->m_ogg_ts.e_o_s=1;
videoflag=ogg_stream_flush(&pdata->enc_data->m_ogg_ts,&videopage);
if(videoflag){
video_bytesout+=fwrite(videopage.header,1,videopage.header_len,pdata->enc_data->fp);
video_bytesout+=fwrite(videopage.body,1,videopage.body_len,pdata->enc_data->fp);
videoflag=0;
}
- if(!pdata->args.nosound)
- audioflag=ogg_stream_flush(&pdata->enc_data->m_ogg_vs,&audiopage);
- if(audioflag){
- audio_bytesout+=fwrite(audiopage.header,1,audiopage.header_len,pdata->enc_data->fp);
- audio_bytesout+=fwrite(audiopage.body,1,audiopage.body_len,pdata->enc_data->fp);
- audioflag=0;
+ if(!pdata->args.nosound){
+ pdata->enc_data->m_ogg_vs.e_o_s=1;
+ do{
+ audioflag=ogg_stream_flush(&pdata->enc_data->m_ogg_vs,&audiopage);
+ if(audioflag){
+ audio_bytesout+=fwrite(audiopage.header,1,audiopage.header_len,pdata->enc_data->fp);
+ audio_bytesout+=fwrite(audiopage.body,1,audiopage.body_len,pdata->enc_data->fp);
+ audioflag=0;
+ }
+ }while(!ogg_page_eos(&audiopage));
}
-
ogg_stream_clear(&pdata->enc_data->m_ogg_ts);
if(!pdata->args.nosound)
ogg_stream_clear(&pdata->enc_data->m_ogg_vs);
© All Rights Reserved