summaryrefslogtreecommitdiffstats
path: root/libmpdemux
diff options
context:
space:
mode:
authordiego <diego@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-09-12 09:00:10 +0000
committerdiego <diego@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-09-12 09:00:10 +0000
commitc7ee94590ab32e2832e0b0ee49dffbbffb1a4939 (patch)
treeef5a5027113dbf29aa985c1bde64568552b127f8 /libmpdemux
parentaf06a4425b1434778e1b9ab1edfa33ffe0f9497e (diff)
downloadmpv-c7ee94590ab32e2832e0b0ee49dffbbffb1a4939.tar.bz2
mpv-c7ee94590ab32e2832e0b0ee49dffbbffb1a4939.tar.xz
Support for variable fps OGM files, blessed by Moritz.
patch by Sergey Khlutchin, Elphel, Inc git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@19808 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux')
-rw-r--r--libmpdemux/demux_ogg.c3
-rw-r--r--libmpdemux/video.c1
2 files changed, 4 insertions, 0 deletions
diff --git a/libmpdemux/demux_ogg.c b/libmpdemux/demux_ogg.c
index 79f7e02e32..822ad3e283 100644
--- a/libmpdemux/demux_ogg.c
+++ b/libmpdemux/demux_ogg.c
@@ -1434,6 +1434,7 @@ static void demux_ogg_seek(demuxer_t *demuxer,float rel_seek_secs,float audio_de
float pts;
int is_keyframe;
int samplesize=1;
+ ogg_int64_t granulepos_orig;
if(demuxer->video->id >= 0) {
ds = demuxer->video;
@@ -1552,6 +1553,7 @@ static void demux_ogg_seek(demuxer_t *demuxer,float rel_seek_secs,float audio_de
break;
}
is_gp_valid = (op.granulepos >= 0);
+ granulepos_orig=op.granulepos;
demux_ogg_read_packet(os,&op,context,&pts,&is_keyframe,samplesize);
if (precision && is_gp_valid) {
precision--;
@@ -1581,6 +1583,7 @@ static void demux_ogg_seek(demuxer_t *demuxer,float rel_seek_secs,float audio_de
vo_sub = &ogg_sub;
vo_osd_changed(OSDTYPE_SUBTITLE);
clear_sub = -1;
+ op.granulepos=granulepos_orig;
demux_ogg_add_packet(ds,os,ds->id,&op);
return;
}
diff --git a/libmpdemux/video.c b/libmpdemux/video.c
index cc3cf56b8e..9b15599a72 100644
--- a/libmpdemux/video.c
+++ b/libmpdemux/video.c
@@ -579,6 +579,7 @@ int video_read_frame(sh_video_t* sh_video,float* frame_time_ptr,unsigned char**
case DEMUXER_TYPE_MOV:
case DEMUXER_TYPE_FILM:
case DEMUXER_TYPE_VIVO:
+ case DEMUXER_TYPE_OGG:
case DEMUXER_TYPE_ASF: {
float next_pts = ds_get_next_pts(d_video);
float d= next_pts > 0 ? next_pts - d_video->pts : d_video->pts-pts1;