Skip to content
Snippets Groups Projects
Commit bae4f479 authored by Justin Ruggles's avatar Justin Ruggles
Browse files

adxenc: alloc/free coded_frame instead of keeping it in the ADXContext

parent 0588935e
No related branches found
No related tags found
No related merge requests found
...@@ -40,7 +40,6 @@ typedef struct ADXChannelState { ...@@ -40,7 +40,6 @@ typedef struct ADXChannelState {
} ADXChannelState; } ADXChannelState;
typedef struct ADXContext { typedef struct ADXContext {
AVFrame frame;
int channels; int channels;
ADXChannelState prev[2]; ADXChannelState prev[2];
int header_parsed; int header_parsed;
......
...@@ -107,6 +107,14 @@ static int adx_encode_header(AVCodecContext *avctx, uint8_t *buf, int bufsize) ...@@ -107,6 +107,14 @@ static int adx_encode_header(AVCodecContext *avctx, uint8_t *buf, int bufsize)
return HEADER_SIZE; return HEADER_SIZE;
} }
#if FF_API_OLD_ENCODE_AUDIO
static av_cold int adx_encode_close(AVCodecContext *avctx)
{
av_freep(&avctx->coded_frame);
return 0;
}
#endif
static av_cold int adx_encode_init(AVCodecContext *avctx) static av_cold int adx_encode_init(AVCodecContext *avctx)
{ {
ADXContext *c = avctx->priv_data; ADXContext *c = avctx->priv_data;
...@@ -118,8 +126,8 @@ static av_cold int adx_encode_init(AVCodecContext *avctx) ...@@ -118,8 +126,8 @@ static av_cold int adx_encode_init(AVCodecContext *avctx)
avctx->frame_size = BLOCK_SAMPLES; avctx->frame_size = BLOCK_SAMPLES;
#if FF_API_OLD_ENCODE_AUDIO #if FF_API_OLD_ENCODE_AUDIO
avcodec_get_frame_defaults(&c->frame); if (!(avctx->coded_frame = avcodec_alloc_frame()))
avctx->coded_frame = &c->frame; return AVERROR(ENOMEM);
#endif #endif
/* the cutoff can be adjusted, but this seems to work pretty well */ /* the cutoff can be adjusted, but this seems to work pretty well */
...@@ -169,6 +177,9 @@ AVCodec ff_adpcm_adx_encoder = { ...@@ -169,6 +177,9 @@ AVCodec ff_adpcm_adx_encoder = {
.id = AV_CODEC_ID_ADPCM_ADX, .id = AV_CODEC_ID_ADPCM_ADX,
.priv_data_size = sizeof(ADXContext), .priv_data_size = sizeof(ADXContext),
.init = adx_encode_init, .init = adx_encode_init,
#if FF_API_OLD_ENCODE_AUDIO
.close = adx_encode_close,
#endif
.encode2 = adx_encode_frame, .encode2 = adx_encode_frame,
.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S16, .sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S16,
AV_SAMPLE_FMT_NONE }, AV_SAMPLE_FMT_NONE },
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment