diff options
author | corey <corey@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2006-02-19 09:34:37 +0000 |
---|---|---|
committer | corey <corey@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2006-02-19 09:34:37 +0000 |
commit | 89d848a8a2be6efa1ba63b9544623a66b9154107 (patch) | |
tree | aa961a18dfa40a2054645b95ea59be24bfc81b57 /libmpdemux | |
parent | 0d29a779f819a3465480d7f2df523d07094e2e58 (diff) | |
download | mpv-89d848a8a2be6efa1ba63b9544623a66b9154107.tar.bz2 mpv-89d848a8a2be6efa1ba63b9544623a66b9154107.tar.xz |
dwStart support for mencoder.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@17649 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux')
-rw-r--r-- | libmpdemux/muxer.h | 1 | ||||
-rw-r--r-- | libmpdemux/muxer_avi.c | 13 |
2 files changed, 14 insertions, 0 deletions
diff --git a/libmpdemux/muxer.h b/libmpdemux/muxer.h index fedbad64f8..ae7882e90c 100644 --- a/libmpdemux/muxer.h +++ b/libmpdemux/muxer.h @@ -59,6 +59,7 @@ typedef struct muxer_t{ off_t movi_start; off_t movi_end; off_t file_end; // for MPEG it's system timestamp in 1/90000 s + float audio_delay_fix; // index: AVIINDEXENTRY *idx; int idx_pos; diff --git a/libmpdemux/muxer_avi.c b/libmpdemux/muxer_avi.c index 7169a8a4b0..7b3a32413e 100644 --- a/libmpdemux/muxer_avi.c +++ b/libmpdemux/muxer_avi.c @@ -285,6 +285,19 @@ static void avifile_write_header(muxer_t *muxer){ mp_msg(MSGT_MUXER, MSGL_INFO, "ODML: vprp aspect is %d:%d.\n", aspect >> 16, aspect & 0xffff); } + /* deal with stream delays */ + for (i = 0; muxer->streams[i] && i < MUXER_MAX_STREAMS; ++i) { + muxer_stream_t *s = muxer->streams[i]; + if (s->type == MUXER_TYPE_AUDIO && muxer->audio_delay_fix > 0.0) { + s->h.dwStart = muxer->audio_delay_fix * s->h.dwRate/s->h.dwScale; + mp_msg(MSGT_MUXER, MSGL_INFO, MSGTR_SettingAudioDelay, (float)s->h.dwStart * s->h.dwScale/s->h.dwRate); + } + if (s->type == MUXER_TYPE_VIDEO && muxer->audio_delay_fix < 0.0) { + s->h.dwStart = -muxer->audio_delay_fix * s->h.dwRate/s->h.dwScale; + mp_msg(MSGT_MUXER, MSGL_INFO, MSGTR_SettingVideoDelay, (float)s->h.dwStart * s->h.dwScale/s->h.dwRate); + } + } + if (isodml) { unsigned int rifflen, movilen; int i; |