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