Mercurial > mplayer.hg
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 { |