mirror of https://git.ffmpeg.org/ffmpeg.git
lavfi/audio: use av_samples_copy() instead of custom code.
Fixes a possible invalid write, found by Nicolas George.
This commit is contained in:
parent
ce03b0881a
commit
9cdf74f904
|
@ -185,10 +185,6 @@ void ff_filter_samples(AVFilterLink *link, AVFilterBufferRef *samplesref)
|
|||
/* prepare to copy the samples if the buffer has insufficient permissions */
|
||||
if ((dst->min_perms & samplesref->perms) != dst->min_perms ||
|
||||
dst->rej_perms & samplesref->perms) {
|
||||
int i, planar = av_sample_fmt_is_planar(samplesref->format);
|
||||
int planes = !planar ? 1:
|
||||
av_get_channel_layout_nb_channels(samplesref->audio->channel_layout);
|
||||
|
||||
av_log(link->dst, AV_LOG_DEBUG,
|
||||
"Copying audio data in avfilter (have perms %x, need %x, reject %x)\n",
|
||||
samplesref->perms, link->dstpad->min_perms, link->dstpad->rej_perms);
|
||||
|
@ -199,8 +195,10 @@ void ff_filter_samples(AVFilterLink *link, AVFilterBufferRef *samplesref)
|
|||
link->cur_buf->audio->sample_rate = samplesref->audio->sample_rate;
|
||||
|
||||
/* Copy actual data into new samples buffer */
|
||||
for (i = 0; i < planes; i++)
|
||||
memcpy(link->cur_buf->extended_data[i], samplesref->extended_data[i], samplesref->linesize[0]);
|
||||
av_samples_copy(link->cur_buf->extended_data, samplesref->extended_data,
|
||||
0, 0, samplesref->audio->nb_samples,
|
||||
av_get_channel_layout_nb_channels(link->channel_layout),
|
||||
link->format);
|
||||
|
||||
avfilter_unref_buffer(samplesref);
|
||||
} else
|
||||
|
|
Loading…
Reference in New Issue