summaryrefslogtreecommitdiffstats
path: root/libmpdemux/demuxer.c
diff options
context:
space:
mode:
authorUoti Urpala <uau@glyph.nonexistent.invalid>2010-04-23 20:14:59 +0300
committerUoti Urpala <uau@glyph.nonexistent.invalid>2010-04-23 20:14:59 +0300
commite3bd668ebd5f669e5f7d109191c87c678b569bb7 (patch)
tree81386faedc65029b861daec506bf553a39f3ace0 /libmpdemux/demuxer.c
parent97db8519c8f64dc8b0163b1eff6cbe4d6fe75c11 (diff)
downloadmpv-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/demuxer.c')
-rw-r--r--libmpdemux/demuxer.c37
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;
}