From e0f7e3297073e341b43522d67ad717a3d568cd3c Mon Sep 17 00:00:00 2001 From: Benjamin Larsson Date: Fri, 9 Dec 2005 16:08:18 +0000 Subject: Cook compatibe decoder, patch by Benjamin Larsson Add cook demucing, change rm demuxer so that it reorders audio packets before sending them to the decoder, and send minimum decodeable sized packets; pass only real codec extradata fo the decoder Fix 28_8 decoder for the new demuxer strategy Originally committed as revision 4726 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/ra288.c | 36 +++++++----------------------------- 1 file changed, 7 insertions(+), 29 deletions(-) (limited to 'libavcodec/ra288.c') diff --git a/libavcodec/ra288.c b/libavcodec/ra288.c index 4cff310..9082920 100644 --- a/libavcodec/ra288.c +++ b/libavcodec/ra288.c @@ -228,41 +228,19 @@ static int ra288_decode_frame(AVCodecContext * avctx, void *data, int *data_size, uint8_t * buf, int buf_size) { - if(avctx->extradata_size>=6) - { -//((short*)(avctx->extradata))[0]; /* subpacket size */ -//((short*)(avctx->extradata))[1]; /* subpacket height */ -//((short*)(avctx->extradata))[2]; /* subpacket flavour */ -//((short*)(avctx->extradata))[3]; /* coded frame size */ -//((short*)(avctx->extradata))[4]; /* codec's data length */ -//((short*)(avctx->extradata))[5...] /* codec's data */ - int bret; void *datao; - int w=avctx->block_align; /* 228 */ - int h=((short*)(avctx->extradata))[1]; /* 12 */ - int cfs=((short*)(avctx->extradata))[3]; /* coded frame size 38 */ - int i,j; - if(buf_sizeblock_align) { - av_log(avctx, AV_LOG_ERROR, "ffra288: Error! Input buffer is too small [%d<%d]\n",buf_size,w*h); + av_log(avctx, AV_LOG_ERROR, "ffra288: Error! Input buffer is too small [%d<%d]\n",buf_size,avctx->block_align); return 0; } + datao = data; - bret = 0; - for (j = 0; j < h/2; j++) - for (i = 0; i < h; i++) - { - data=decode_block(avctx,&buf[j*cfs+cfs*i*h/2],(signed short *)data,cfs); - bret += cfs; - } + data = decode_block(avctx, buf, (signed short *)data, avctx->block_align); + *data_size = (char *)data - (char *)datao; - return bret; - } - else - { - av_log(avctx, AV_LOG_ERROR, "ffra288: Error: need extra data!!!\n"); - return 0; - } + return avctx->block_align; } AVCodec ra_288_decoder = -- cgit v1.1