comparison libmpdemux/demuxer.c @ 18242:caac2ca98168

4 - Implement a better way to calculate current audio pts and use it for audio decoded with ad_libvorbis, ad_ffmpeg and ad_faad. Patch by Uoti Urpala
author rtognimp
date Mon, 24 Apr 2006 10:58:40 +0000
parents 4231482179b6
children 87161f96fa66
comparison
equal deleted inserted replaced
18241:b19dada1aeeb 18242:caac2ca98168
222 sh = demuxer->a_streams[id]; 222 sh = demuxer->a_streams[id];
223 // set some defaults 223 // set some defaults
224 sh->samplesize=2; 224 sh->samplesize=2;
225 sh->sample_format=AF_FORMAT_S16_NE; 225 sh->sample_format=AF_FORMAT_S16_NE;
226 sh->audio_out_minsize=8192;/* default size, maybe not enough for Win32/ACM*/ 226 sh->audio_out_minsize=8192;/* default size, maybe not enough for Win32/ACM*/
227 sh->pts=MP_NOPTS_VALUE;
227 if (!demux_aid_vid_mismatch) 228 if (!demux_aid_vid_mismatch)
228 mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_AUDIO_ID=%d\n", id); 229 mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_AUDIO_ID=%d\n", id);
229 } 230 }
230 return demuxer->a_streams[id]; 231 return demuxer->a_streams[id];
231 } 232 }
500 ds->buffer_pos+=len; 501 ds->buffer_pos+=len;
501 return len; 502 return len;
502 } 503 }
503 } 504 }
504 505
506 int ds_get_packet_pts(demux_stream_t *ds,unsigned char **start, double *pts)
507 {
508 int len;
509 *pts = MP_NOPTS_VALUE;
510 if(ds->buffer_pos>=ds->buffer_size){
511 if (!ds_fill_buffer(ds)) {
512 // EOF
513 *start = NULL;
514 return -1;
515 }
516 // Should use MP_NOPTS_VALUE for "unknown pts" in the packets too
517 if (ds->current->pts)
518 *pts = ds->current->pts;
519 }
520 len=ds->buffer_size-ds->buffer_pos;
521 *start = &ds->buffer[ds->buffer_pos];
522 ds->buffer_pos+=len;
523 return len;
524 }
525
505 int ds_get_packet_sub(demux_stream_t *ds,unsigned char **start){ 526 int ds_get_packet_sub(demux_stream_t *ds,unsigned char **start){
506 while(1){ 527 while(1){
507 int len; 528 int len;
508 if(ds->buffer_pos>=ds->buffer_size){ 529 if(ds->buffer_pos>=ds->buffer_size){
509 *start = NULL; 530 *start = NULL;