mirror of
https://github.com/mpv-player/mpv
synced 2024-12-24 07:33:46 +01:00
vobsub seeking support by Lu Ran
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@11590 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
d5066b11ef
commit
0955d23934
@ -3398,7 +3398,8 @@ if(rel_seek_secs || abs_seek_pos){
|
|||||||
/* FIXME there should be real seeking for vobsub */
|
/* FIXME there should be real seeking for vobsub */
|
||||||
if(sh_video) sh_video->pts=d_video->pts;
|
if(sh_video) sh_video->pts=d_video->pts;
|
||||||
if (vo_vobsub)
|
if (vo_vobsub)
|
||||||
vobsub_reset(vo_vobsub);
|
//vobsub_reset(vo_vobsub);
|
||||||
|
vobsub_seek(vo_vobsub,sh_video->pts);
|
||||||
#if 0
|
#if 0
|
||||||
if(sh_video && d_video->packs == 0)
|
if(sh_video && d_video->packs == 0)
|
||||||
ds_fill_buffer(d_video);
|
ds_fill_buffer(d_video);
|
||||||
|
16
vobsub.c
16
vobsub.c
@ -1267,6 +1267,22 @@ vobsub_get_next_packet(void *vobhandle, void** data, int* timestamp)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void vobsub_seek(void * vobhandle, float pts)
|
||||||
|
{
|
||||||
|
vobsub_t * vob = (vobsub_t *)vobhandle;
|
||||||
|
packet_queue_t * queue;
|
||||||
|
int seek_pts100 = (int)pts * 90000;
|
||||||
|
|
||||||
|
if (vob->spu_streams && 0 <= vobsub_id && (unsigned) vobsub_id < vob->spu_streams_size) {
|
||||||
|
queue = vob->spu_streams + vobsub_id;
|
||||||
|
queue->current_index = 0;
|
||||||
|
while ((queue->packets + queue->current_index)->pts100 < seek_pts100)
|
||||||
|
++queue->current_index;
|
||||||
|
if (queue->current_index > 0);
|
||||||
|
--queue->current_index;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
vobsub_reset(void *vobhandle)
|
vobsub_reset(void *vobhandle)
|
||||||
{
|
{
|
||||||
|
1
vobsub.h
1
vobsub.h
@ -15,6 +15,7 @@ extern void vobsub_out_output(void *me, const unsigned char *packet, int len, do
|
|||||||
extern void vobsub_out_close(void *me);
|
extern void vobsub_out_close(void *me);
|
||||||
extern int vobsub_set_from_lang(void *vobhandle, unsigned char * lang);
|
extern int vobsub_set_from_lang(void *vobhandle, unsigned char * lang);
|
||||||
extern unsigned int vobsub_get_forced_subs_flag(void const * const vobhandle);
|
extern unsigned int vobsub_get_forced_subs_flag(void const * const vobhandle);
|
||||||
|
extern void vobsub_seek(void * vobhandle, float pts);
|
||||||
|
|
||||||
#endif /* MPLAYER_VOBSUB_H */
|
#endif /* MPLAYER_VOBSUB_H */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user