mirror of
https://github.com/mpv-player/mpv
synced 2025-04-10 19:51:43 +00:00
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
This commit is contained in:
parent
af06a4425b
commit
c7ee94590a
@ -1434,6 +1434,7 @@ static void demux_ogg_seek(demuxer_t *demuxer,float rel_seek_secs,float audio_de
|
|||||||
float pts;
|
float pts;
|
||||||
int is_keyframe;
|
int is_keyframe;
|
||||||
int samplesize=1;
|
int samplesize=1;
|
||||||
|
ogg_int64_t granulepos_orig;
|
||||||
|
|
||||||
if(demuxer->video->id >= 0) {
|
if(demuxer->video->id >= 0) {
|
||||||
ds = demuxer->video;
|
ds = demuxer->video;
|
||||||
@ -1552,6 +1553,7 @@ static void demux_ogg_seek(demuxer_t *demuxer,float rel_seek_secs,float audio_de
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
is_gp_valid = (op.granulepos >= 0);
|
is_gp_valid = (op.granulepos >= 0);
|
||||||
|
granulepos_orig=op.granulepos;
|
||||||
demux_ogg_read_packet(os,&op,context,&pts,&is_keyframe,samplesize);
|
demux_ogg_read_packet(os,&op,context,&pts,&is_keyframe,samplesize);
|
||||||
if (precision && is_gp_valid) {
|
if (precision && is_gp_valid) {
|
||||||
precision--;
|
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_sub = &ogg_sub;
|
||||||
vo_osd_changed(OSDTYPE_SUBTITLE);
|
vo_osd_changed(OSDTYPE_SUBTITLE);
|
||||||
clear_sub = -1;
|
clear_sub = -1;
|
||||||
|
op.granulepos=granulepos_orig;
|
||||||
demux_ogg_add_packet(ds,os,ds->id,&op);
|
demux_ogg_add_packet(ds,os,ds->id,&op);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -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_MOV:
|
||||||
case DEMUXER_TYPE_FILM:
|
case DEMUXER_TYPE_FILM:
|
||||||
case DEMUXER_TYPE_VIVO:
|
case DEMUXER_TYPE_VIVO:
|
||||||
|
case DEMUXER_TYPE_OGG:
|
||||||
case DEMUXER_TYPE_ASF: {
|
case DEMUXER_TYPE_ASF: {
|
||||||
float next_pts = ds_get_next_pts(d_video);
|
float next_pts = ds_get_next_pts(d_video);
|
||||||
float d= next_pts > 0 ? next_pts - d_video->pts : d_video->pts-pts1;
|
float d= next_pts > 0 ? next_pts - d_video->pts : d_video->pts-pts1;
|
||||||
|
Loading…
Reference in New Issue
Block a user