|
|
|
@@ -47,7 +47,6 @@ static float quant_table[96]; |
|
|
|
#define BINK_BLOCK_MAX_SIZE (MAX_CHANNELS << 11) |
|
|
|
|
|
|
|
typedef struct { |
|
|
|
AVFrame frame; |
|
|
|
GetBitContext gb; |
|
|
|
int version_b; ///< Bink version 'b' |
|
|
|
int first; |
|
|
|
@@ -143,9 +142,6 @@ static av_cold int decode_init(AVCodecContext *avctx) |
|
|
|
else |
|
|
|
return -1; |
|
|
|
|
|
|
|
avcodec_get_frame_defaults(&s->frame); |
|
|
|
avctx->coded_frame = &s->frame; |
|
|
|
|
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
@@ -294,6 +290,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, |
|
|
|
int *got_frame_ptr, AVPacket *avpkt) |
|
|
|
{ |
|
|
|
BinkAudioContext *s = avctx->priv_data; |
|
|
|
AVFrame *frame = data; |
|
|
|
GetBitContext *gb = &s->gb; |
|
|
|
int ret, consumed = 0; |
|
|
|
|
|
|
|
@@ -321,22 +318,21 @@ static int decode_frame(AVCodecContext *avctx, void *data, |
|
|
|
} |
|
|
|
|
|
|
|
/* get output buffer */ |
|
|
|
s->frame.nb_samples = s->frame_len; |
|
|
|
if ((ret = ff_get_buffer(avctx, &s->frame)) < 0) { |
|
|
|
frame->nb_samples = s->frame_len; |
|
|
|
if ((ret = ff_get_buffer(avctx, frame)) < 0) { |
|
|
|
av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n"); |
|
|
|
return ret; |
|
|
|
} |
|
|
|
|
|
|
|
if (decode_block(s, (float **)s->frame.extended_data, |
|
|
|
if (decode_block(s, (float **)frame->extended_data, |
|
|
|
avctx->codec->id == AV_CODEC_ID_BINKAUDIO_DCT)) { |
|
|
|
av_log(avctx, AV_LOG_ERROR, "Incomplete packet\n"); |
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
} |
|
|
|
get_bits_align32(gb); |
|
|
|
|
|
|
|
s->frame.nb_samples = s->block_size / avctx->channels; |
|
|
|
*got_frame_ptr = 1; |
|
|
|
*(AVFrame *)data = s->frame; |
|
|
|
frame->nb_samples = s->block_size / avctx->channels; |
|
|
|
*got_frame_ptr = 1; |
|
|
|
|
|
|
|
return consumed; |
|
|
|
} |
|
|
|
|