Mercurial > mplayer.hg
changeset 15994:13ae8ec083f6
-delay for MEncoder, step 3.
author | ods15 |
---|---|
date | Sun, 17 Jul 2005 19:26:49 +0000 |
parents | 4cc096594a6a |
children | c3755444496d |
files | mencoder.c |
diffstat | 1 files changed, 13 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/mencoder.c Sun Jul 17 19:25:58 2005 +0000 +++ b/mencoder.c Sun Jul 17 19:26:49 2005 +0000 @@ -240,6 +240,9 @@ int already_read; } s_frame_data; +/// Returns a_pts +static float calc_a_pts(demux_stream_t *d_audio); + #ifdef USE_EDL #include "edl.h" static edl_record_ptr edl_records = NULL; ///< EDL entries memory area @@ -1607,6 +1610,14 @@ return timeleft; } +static float calc_a_pts(demux_stream_t *d_audio) { + sh_audio_t * sh_audio = d_audio ? d_audio->sh : NULL; + float a_pts = 0.; + if (sh_audio) + a_pts = d_audio->pts + (ds_tell_pts(d_audio) - sh_audio->a_in_buffer_len)/(float)sh_audio->i_bps; + return a_pts; +} + #ifdef USE_EDL static int edl_seek(edl_record_ptr next_edl_record, demuxer_t* demuxer, demux_stream_t *d_audio, muxer_stream_t* mux_a, s_frame_data * frame_data, int framecopy) { sh_audio_t * sh_audio = d_audio->sh; @@ -1644,7 +1655,7 @@ sh_video->timer += frame_data->frame_time; if (sh_audio) { - a_pts = d_audio->pts + (ds_tell_pts(d_audio) - sh_audio->a_in_buffer_len)/(float)sh_audio->i_bps; + a_pts = calc_a_pts(d_audio); while (sh_video->pts - frame_data->frame_time > a_pts) { int len; if (samplesize) { @@ -1657,7 +1668,7 @@ len = ds_get_packet(sh_audio->ds, &crap); } if (len <= 0) break; // EOF of audio. - a_pts = d_audio->pts + (ds_tell_pts(d_audio)-sh_audio->a_in_buffer_len)/(float)sh_audio->i_bps; + a_pts = calc_a_pts(d_audio); } }