avcodec/g723_1: fix writing into input frame data and warning

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Michael Niedermayer 2014-05-26 20:37:34 +02:00
parent 2d56f0d054
commit d35000c2dc
1 changed files with 7 additions and 1 deletions

View File

@ -2346,11 +2346,15 @@ static int g723_1_encode_frame(AVCodecContext *avctx, AVPacket *avpkt,
int16_t weighted_lpc[LPC_ORDER * SUBFRAMES << 1]; int16_t weighted_lpc[LPC_ORDER * SUBFRAMES << 1];
int16_t vector[FRAME_LEN + PITCH_MAX]; int16_t vector[FRAME_LEN + PITCH_MAX];
int offset, ret; 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]; HFParam hf[4];
int i, j; int i, j;
if (!in)
return AVERROR(ENOMEM);
highpass_filter(in, &p->hpf_fir_mem, &p->hpf_iir_mem); highpass_filter(in, &p->hpf_fir_mem, &p->hpf_iir_mem);
memcpy(vector, p->prev_data, HALF_FRAME_LEN * sizeof(int16_t)); 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; offset += LPC_ORDER;
} }
av_freep(&in_orig); in = NULL;
if ((ret = ff_alloc_packet2(avctx, avpkt, 24)) < 0) if ((ret = ff_alloc_packet2(avctx, avpkt, 24)) < 0)
return ret; return ret;