comparison libmpdemux/muxer_avi.c @ 17659:92ac78a93625

Fix video delay when encoding with B-frames. Encoding delay is adjusted for on-the-fly during encoding. Decoding delay is compensated for by setting an appropriate dwStart on the audio stream (only in muxer_avi at this point).
author corey
date Tue, 21 Feb 2006 09:39:22 +0000
parents 5963b50c2178
children 4928dd61f136
comparison
equal deleted inserted replaced
17658:d407eb5bcd68 17659:92ac78a93625
663 } else { 663 } else {
664 avifile_write_standard_index(muxer); 664 avifile_write_standard_index(muxer);
665 } 665 }
666 } 666 }
667 667
668 static void avifile_fix_parameters(muxer_stream_t *s){
669 /* adjust audio_delay_fix according to individual stream delay */
670 if (s->type == MUXER_TYPE_AUDIO)
671 s->muxer->audio_delay_fix -= (float)s->decoder_delay * s->h.dwScale/s->h.dwRate;
672 if (s->type == MUXER_TYPE_VIDEO)
673 s->muxer->audio_delay_fix += (float)s->decoder_delay * s->h.dwScale/s->h.dwRate;
674 }
675
668 int muxer_init_muxer_avi(muxer_t *muxer){ 676 int muxer_init_muxer_avi(muxer_t *muxer){
669 muxer->cont_new_stream = &avifile_new_stream; 677 muxer->cont_new_stream = &avifile_new_stream;
670 muxer->cont_write_chunk = &avifile_write_chunk; 678 muxer->cont_write_chunk = &avifile_write_chunk;
671 muxer->cont_write_header = &avifile_write_header; 679 muxer->cont_write_header = &avifile_write_header;
672 muxer->cont_write_index = &avifile_write_index; 680 muxer->cont_write_index = &avifile_write_index;
681 muxer->fix_stream_parameters = &avifile_fix_parameters;
673 return 1; 682 return 1;
674 } 683 }