Mercurial > mplayer.hg
diff 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 |
line wrap: on
line diff
--- a/libmpdemux/muxer_avi.c Mon Feb 20 23:50:40 2006 +0000 +++ b/libmpdemux/muxer_avi.c Tue Feb 21 09:39:22 2006 +0000 @@ -665,10 +665,19 @@ } } +static void avifile_fix_parameters(muxer_stream_t *s){ + /* adjust audio_delay_fix according to individual stream delay */ + if (s->type == MUXER_TYPE_AUDIO) + s->muxer->audio_delay_fix -= (float)s->decoder_delay * s->h.dwScale/s->h.dwRate; + if (s->type == MUXER_TYPE_VIDEO) + s->muxer->audio_delay_fix += (float)s->decoder_delay * s->h.dwScale/s->h.dwRate; +} + int muxer_init_muxer_avi(muxer_t *muxer){ muxer->cont_new_stream = &avifile_new_stream; muxer->cont_write_chunk = &avifile_write_chunk; muxer->cont_write_header = &avifile_write_header; muxer->cont_write_index = &avifile_write_index; + muxer->fix_stream_parameters = &avifile_fix_parameters; return 1; }