comparison libmpdemux/demuxer.c @ 29504:940fb22fd9dd

Reuse ds_get_packet in ds_get_packet_pts
author reimar
date Sun, 23 Aug 2009 15:32:42 +0000
parents a373af1e3b24
children 342a78c13eeb
comparison
equal deleted inserted replaced
29503:a3e1ef1c76d0 29504:940fb22fd9dd
644 644
645 int ds_get_packet_pts(demux_stream_t *ds, unsigned char **start, double *pts) 645 int ds_get_packet_pts(demux_stream_t *ds, unsigned char **start, double *pts)
646 { 646 {
647 int len; 647 int len;
648 *pts = MP_NOPTS_VALUE; 648 *pts = MP_NOPTS_VALUE;
649 if (ds->buffer_pos >= ds->buffer_size) { 649 len = ds_get_packet(ds, start);
650 if (!ds_fill_buffer(ds)) { 650 if (len < 0)
651 // EOF 651 return len;
652 *start = NULL;
653 return -1;
654 }
655 }
656 // Return pts unless this read starts from the middle of a packet 652 // Return pts unless this read starts from the middle of a packet
657 if (!ds->buffer_pos) 653 if (len == ds->buffer_pos)
658 *pts = ds->current->pts; 654 *pts = ds->current->pts;
659 len = ds->buffer_size - ds->buffer_pos;
660 *start = &ds->buffer[ds->buffer_pos];
661 ds->buffer_pos += len;
662 return len; 655 return len;
663 } 656 }
664 657
665 int ds_get_packet_sub(demux_stream_t *ds, unsigned char **start) 658 int ds_get_packet_sub(demux_stream_t *ds, unsigned char **start)
666 { 659 {