diff options
author | Miguel Freitas <miguelfreitas@users.sourceforge.net> | 2001-11-26 13:29:54 +0000 |
---|---|---|
committer | Miguel Freitas <miguelfreitas@users.sourceforge.net> | 2001-11-26 13:29:54 +0000 |
commit | cf8b82cc4cebe5b4736510ee66b5f998ed62a4a3 (patch) | |
tree | 16c29dff04ff97799703a14e2dcf3693aa7ca2cb /src | |
parent | 78a4e06085c64ef87caf796fbedf0ca4ed2bcf17 (diff) | |
download | xine-lib-cf8b82cc4cebe5b4736510ee66b5f998ed62a4a3.tar.gz xine-lib-cf8b82cc4cebe5b4736510ee66b5f998ed62a4a3.tar.bz2 |
dammit...how big these asf fragments can be??? i doesnt make any difference now.
CVS patchset: 1116
CVS date: 2001/11/26 13:29:54
Diffstat (limited to 'src')
-rw-r--r-- | src/demuxers/demux_asf.c | 34 |
1 files changed, 18 insertions, 16 deletions
diff --git a/src/demuxers/demux_asf.c b/src/demuxers/demux_asf.c index 380b226e2..8fe1c021d 100644 --- a/src/demuxers/demux_asf.c +++ b/src/demuxers/demux_asf.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: demux_asf.c,v 1.14 2001/11/18 03:53:23 guenter Exp $ + * $Id: demux_asf.c,v 1.15 2001/11/26 13:29:54 miguelfreitas Exp $ * * demultiplexer for asf streams * @@ -628,6 +628,7 @@ static void asf_send_buffer_nodefrag (demux_asf_t *this, asf_stream_t *stream, int frag_len, int payload_size) { buf_element_t *buf; + int bufsize; if (stream->frag_offset == 0) { /* new packet */ @@ -650,18 +651,16 @@ static void asf_send_buffer_nodefrag (demux_asf_t *this, asf_stream_t *stream, } } - buf = stream->fifo->buffer_pool_alloc (stream->fifo); - buf->content = buf->mem; - this->input->read (this->input, buf->content, frag_len); - - /* - printf ("demux_asf: read %d bytes :", frag_len); - hexdump (buf->content, frag_len); - */ - if( frag_len > stream->fifo->buffer_pool_buf_size ) - printf("demux_asf: fragment larger than fifo buffer (frag_len=%d)\n", frag_len ); - else { - stream->frag_offset += frag_len; + + while( frag_len ) { + if ( frag_len < stream->fifo->buffer_pool_buf_size ) + bufsize = frag_len; + else + bufsize = stream->fifo->buffer_pool_buf_size; + + buf = stream->fifo->buffer_pool_alloc (stream->fifo); + buf->content = buf->mem; + this->input->read (this->input, buf->content, bufsize); if (stream->fifo == this->video_fifo) { buf->input_pos = this->input->get_current_pos (this->input); @@ -673,10 +672,13 @@ static void asf_send_buffer_nodefrag (demux_asf_t *this, asf_stream_t *stream, buf->PTS = timestamp * 90; buf->SCR = timestamp * 90; buf->type = stream->buf_type; - buf->size = frag_len; - - /* test if whole packet read */ + buf->size = bufsize; + timestamp = 0; + stream->frag_offset += bufsize; + frag_len -= bufsize; + + /* test if whole packet read */ if (stream->frag_offset == payload_size) { buf->decoder_info[0] = 2; stream->frag_offset = 0; |