Mercurial > mplayer.hg
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 } |