diff options
-rw-r--r-- | vobsub.c | 17 | ||||
-rw-r--r-- | vobsub.h | 1 |
2 files changed, 18 insertions, 0 deletions
@@ -978,6 +978,23 @@ vobsub_get_packet(void *vobhandle, float pts,void** data, int* timestamp) { return -1; } +int +vobsub_get_next_packet(void *vobhandle, void** data, int* timestamp) +{ + vobsub_t *vob = (vobsub_t *)vobhandle; + if (vob->spu_streams && 0 <= vobsub_id && (unsigned) vobsub_id < vob->spu_streams_size) { + packet_queue_t *queue = vob->spu_streams + vobsub_id; + if (queue->current_index < queue->packets_size) { + packet_t *pkt = queue->packets + queue->current_index; + ++queue->current_index; + *data = pkt->data; + *timestamp = pkt->pts100; + return pkt->size; + } + } + return -1; +} + void vobsub_reset(void *vobhandle) { @@ -5,6 +5,7 @@ extern void *vobsub_open(const char *subname, const char *const ifo, const int f extern void vobsub_reset(void *vob); extern int vobsub_parse_ifo(void* this, const char *const name, unsigned int *palette, unsigned int *width, unsigned int *height, int force, int sid, char *langid); extern int vobsub_get_packet(void *vobhandle, float pts,void** data, int* timestamp); +extern int vobsub_get_next_packet(void *vobhandle, void** data, int* timestamp); extern void vobsub_close(void *this); extern void *vobsub_out_open(const char *basename, const unsigned int *palette, unsigned int orig_width, unsigned int orig_height, const char *id, unsigned int index); |