From: Frantisek D. <va...@us...> - 2005-11-21 10:28:29
|
Update of /cvsroot/xine/xine-lib/src/demuxers In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9724/src/demuxers Modified Files: demux_idcin.c Log Message: Fixed IDCIN demuxer (it can't never work :->) - sending Mr. Huffman morbidly by pieces now. Index: demux_idcin.c =================================================================== RCS file: /cvsroot/xine/xine-lib/src/demuxers/demux_idcin.c,v retrieving revision 1.52 retrieving revision 1.53 diff -u -r1.52 -r1.53 --- demux_idcin.c 13 Jun 2004 21:28:53 -0000 1.52 +++ demux_idcin.c 21 Nov 2005 10:28:18 -0000 1.53 @@ -359,6 +359,7 @@ demux_idcin_t *this = (demux_idcin_t *) this_gen; buf_element_t *buf; xine_bmiheader *bih = (xine_bmiheader *)this->bih; + uint32_t i, size; this->video_fifo = this->stream->video_fifo; this->audio_fifo = this->stream->audio_fifo; @@ -370,14 +371,28 @@ /* send init info to decoders */ bih->biSize = sizeof(xine_bmiheader) + HUFFMAN_TABLE_SIZE; - buf = this->video_fifo->buffer_pool_alloc (this->video_fifo); - buf->decoder_flags = BUF_FLAG_HEADER|BUF_FLAG_STDHEADER|BUF_FLAG_FRAMERATE| - BUF_FLAG_FRAME_END; - buf->decoder_info[0] = IDCIN_FRAME_PTS_INC; /* initial video_step */ - buf->size = bih->biSize; - memcpy(buf->content, this->bih, buf->size); - buf->type = BUF_VIDEO_IDCIN; - this->video_fifo->put (this->video_fifo, buf); + size = bih->biSize; + + i = 0; + do { + buf = this->video_fifo->buffer_pool_alloc (this->video_fifo); + buf->decoder_info[0] = IDCIN_FRAME_PTS_INC; /* initial video_step */ + if (size > buf->max_size) { + buf->size = buf->max_size; + buf->decoder_flags = BUF_FLAG_HEADER|BUF_FLAG_STDHEADER| + BUF_FLAG_FRAMERATE; + } else { + buf->size = size; + buf->decoder_flags = BUF_FLAG_HEADER|BUF_FLAG_STDHEADER| + BUF_FLAG_FRAMERATE|BUF_FLAG_FRAME_END; + } + memcpy(buf->content, this->bih + i, buf->size); + buf->type = BUF_VIDEO_IDCIN; + this->video_fifo->put (this->video_fifo, buf); + + size -= buf->size; + i += buf->size; + } while (size); if (this->audio_fifo && this->wave.nChannels) { |