diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2014-05-26 20:37:34 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2014-05-26 21:05:03 +0200 |
commit | d35000c2dcb7a5d27c3e1c1d06f9291df177081a (patch) | |
tree | 91ef582470071cbee563df7e1b0b7e7e0696b066 /libavcodec | |
parent | 2d56f0d05475d3f8abb1dd11b8a61873a444e286 (diff) | |
download | ffmpeg-d35000c2dcb7a5d27c3e1c1d06f9291df177081a.tar.gz |
avcodec/g723_1: fix writing into input frame data and warning
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/g723_1.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/libavcodec/g723_1.c b/libavcodec/g723_1.c index e4bde2afd1..66afd6af6a 100644 --- a/libavcodec/g723_1.c +++ b/libavcodec/g723_1.c @@ -2346,11 +2346,15 @@ static int g723_1_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, int16_t weighted_lpc[LPC_ORDER * SUBFRAMES << 1]; int16_t vector[FRAME_LEN + PITCH_MAX]; int offset, ret; - int16_t *in = (const int16_t *)frame->data[0]; + int16_t *in_orig = av_memdup(frame->data[0], frame->nb_samples * sizeof(int16_t)); + int16_t *in = in_orig; HFParam hf[4]; int i, j; + if (!in) + return AVERROR(ENOMEM); + highpass_filter(in, &p->hpf_fir_mem, &p->hpf_iir_mem); memcpy(vector, p->prev_data, HALF_FRAME_LEN * sizeof(int16_t)); @@ -2456,6 +2460,8 @@ static int g723_1_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, offset += LPC_ORDER; } + av_freep(&in_orig); in = NULL; + if ((ret = ff_alloc_packet2(avctx, avpkt, 24)) < 0) return ret; |