| @@ -34,7 +34,6 @@ | |||||
| /** decoder context */ | /** decoder context */ | ||||
| typedef struct EightSvxContext { | typedef struct EightSvxContext { | ||||
| AVFrame frame; | |||||
| uint8_t fib_acc[2]; | uint8_t fib_acc[2]; | ||||
| const int8_t *table; | const int8_t *table; | ||||
| @@ -85,6 +84,7 @@ static int eightsvx_decode_frame(AVCodecContext *avctx, void *data, | |||||
| int *got_frame_ptr, AVPacket *avpkt) | int *got_frame_ptr, AVPacket *avpkt) | ||||
| { | { | ||||
| EightSvxContext *esc = avctx->priv_data; | EightSvxContext *esc = avctx->priv_data; | ||||
| AVFrame *frame = data; | |||||
| int buf_size; | int buf_size; | ||||
| int ch, ret; | int ch, ret; | ||||
| int is_compr = (avctx->codec_id != AV_CODEC_ID_PCM_S8_PLANAR); | int is_compr = (avctx->codec_id != AV_CODEC_ID_PCM_S8_PLANAR); | ||||
| @@ -136,26 +136,25 @@ static int eightsvx_decode_frame(AVCodecContext *avctx, void *data, | |||||
| } | } | ||||
| /* get output buffer */ | /* get output buffer */ | ||||
| esc->frame.nb_samples = buf_size * (is_compr + 1); | |||||
| if ((ret = ff_get_buffer(avctx, &esc->frame)) < 0) { | |||||
| frame->nb_samples = buf_size * (is_compr + 1); | |||||
| 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; | ||||
| } | } | ||||
| for (ch = 0; ch < avctx->channels; ch++) { | for (ch = 0; ch < avctx->channels; ch++) { | ||||
| if (is_compr) { | if (is_compr) { | ||||
| delta_decode(esc->frame.data[ch], &esc->data[ch][esc->data_idx], | |||||
| delta_decode(frame->data[ch], &esc->data[ch][esc->data_idx], | |||||
| buf_size, &esc->fib_acc[ch], esc->table); | buf_size, &esc->fib_acc[ch], esc->table); | ||||
| } else { | } else { | ||||
| raw_decode(esc->frame.data[ch], &esc->data[ch][esc->data_idx], | |||||
| raw_decode(frame->data[ch], &esc->data[ch][esc->data_idx], | |||||
| buf_size); | buf_size); | ||||
| } | } | ||||
| } | } | ||||
| esc->data_idx += buf_size; | esc->data_idx += buf_size; | ||||
| *got_frame_ptr = 1; | |||||
| *(AVFrame *)data = esc->frame; | |||||
| *got_frame_ptr = 1; | |||||
| return avpkt->size; | return avpkt->size; | ||||
| } | } | ||||
| @@ -184,9 +183,6 @@ static av_cold int eightsvx_decode_init(AVCodecContext *avctx) | |||||
| } | } | ||||
| avctx->sample_fmt = AV_SAMPLE_FMT_U8P; | avctx->sample_fmt = AV_SAMPLE_FMT_U8P; | ||||
| avcodec_get_frame_defaults(&esc->frame); | |||||
| avctx->coded_frame = &esc->frame; | |||||
| return 0; | return 0; | ||||
| } | } | ||||