diff options
author | Uoti Urpala <uau@glyph.nonexistent.invalid> | 2010-04-23 20:14:59 +0300 |
---|---|---|
committer | Uoti Urpala <uau@glyph.nonexistent.invalid> | 2010-04-23 20:14:59 +0300 |
commit | e3bd668ebd5f669e5f7d109191c87c678b569bb7 (patch) | |
tree | 81386faedc65029b861daec506bf553a39f3ace0 /libmpdemux | |
parent | 97db8519c8f64dc8b0163b1eff6cbe4d6fe75c11 (diff) | |
download | mpv-e3bd668ebd5f669e5f7d109191c87c678b569bb7.tar.bz2 mpv-e3bd668ebd5f669e5f7d109191c87c678b569bb7.tar.xz |
Move seek-reset functionality out of demuxer.c
Move code for resetting decoders after seeks, chapter seeks and angle
changes out of demuxer.c. This functionality belongs on a higher
level; the demux layer can't always know what kind of reinitialization
is required.
Diffstat (limited to 'libmpdemux')
-rw-r--r-- | libmpdemux/demuxer.c | 37 |
1 files changed, 0 insertions, 37 deletions
diff --git a/libmpdemux/demuxer.c b/libmpdemux/demuxer.c index df1dea62e7..3838a5ea84 100644 --- a/libmpdemux/demuxer.c +++ b/libmpdemux/demuxer.c @@ -59,8 +59,6 @@ #define PARSE_ON_ADD 0 static void clear_parser(sh_common_t *sh); -void resync_video_stream(sh_video_t *sh_video); -void resync_audio_stream(sh_audio_t *sh_audio); // Demuxer list extern const demuxer_desc_t demuxer_desc_rawaudio; @@ -1218,10 +1216,6 @@ void demux_flush(demuxer_t *demuxer) int demux_seek(demuxer_t *demuxer, float rel_seek_secs, float audio_delay, int flags) { - demux_stream_t *d_audio = demuxer->audio; - demux_stream_t *d_video = demuxer->video; - sh_audio_t *sh_audio = d_audio->sh; - sh_video_t *sh_video = d_video->sh; double tmp = 0; double pts; @@ -1238,16 +1232,9 @@ int demux_seek(demuxer_t *demuxer, float rel_seek_secs, float audio_delay, } // clear demux buffers: demux_flush(demuxer); - if (sh_audio) - sh_audio->a_buffer_len = 0; - - demuxer->stream->eof = 0; demuxer->video->eof = 0; demuxer->audio->eof = 0; - if (sh_video) - sh_video->timer = 0; // !!!!!! - if (flags & SEEK_ABSOLUTE) pts = 0.0f; else { @@ -1274,9 +1261,6 @@ int demux_seek(demuxer_t *demuxer, float rel_seek_secs, float audio_delay, if (demuxer->desc->seek) demuxer->desc->seek(demuxer, rel_seek_secs, audio_delay, flags); - if (sh_audio) - resync_audio_stream(sh_audio); - return 1; } @@ -1497,8 +1481,6 @@ int demuxer_seek_chapter(demuxer_t *demuxer, int chapter, double *seek_pts, char **chapter_name) { int ris; - sh_video_t *sh_video = demuxer->video->sh; - sh_audio_t *sh_audio = demuxer->audio->sh; if (!demuxer->num_chapters || !demuxer->chapters) { demux_flush(demuxer); @@ -1507,15 +1489,7 @@ int demuxer_seek_chapter(demuxer_t *demuxer, int chapter, double *seek_pts, &chapter); if (ris != STREAM_UNSUPPORTED) demux_control(demuxer, DEMUXER_CTRL_RESYNC, NULL); - if (sh_video) { - ds_fill_buffer(demuxer->video); - resync_video_stream(sh_video); - } - if (sh_audio) { - ds_fill_buffer(demuxer->audio); - resync_audio_stream(sh_audio); - } // exit status may be ok, but main() doesn't have to seek itself // (because e.g. dvds depend on sectors, not on pts) *seek_pts = -1.0; @@ -1644,8 +1618,6 @@ int demuxer_get_current_angle(demuxer_t *demuxer) int demuxer_set_angle(demuxer_t *demuxer, int angle) { int ris, angles = -1; - sh_video_t *sh_video = demuxer->video->sh; - sh_audio_t *sh_audio = demuxer->audio->sh; angles = demuxer_angles_count(demuxer); if ((angles < 1) || (angle > angles)) @@ -1658,15 +1630,6 @@ int demuxer_set_angle(demuxer_t *demuxer, int angle) return -1; demux_control(demuxer, DEMUXER_CTRL_RESYNC, NULL); - if (sh_video) { - ds_fill_buffer(demuxer->video); - resync_video_stream(sh_video); - } - - if (sh_audio) { - ds_fill_buffer(demuxer->audio); - resync_audio_stream(sh_audio); - } return angle; } |