70 #if FF_API_AVFILTERBUFFER
71 AVFilterBufferRef* avfilter_get_audio_buffer_ref_from_arrays(
uint8_t **
data,
72 int linesize,
int perms,
75 uint64_t channel_layout)
79 AVFilterBufferRef *samplesref =
av_mallocz(
sizeof(*samplesref));
81 if (!samples || !samplesref)
85 samplesref->buf->free = ff_avfilter_default_free_buffer;
86 if (!(samplesref->audio =
av_mallocz(
sizeof(*samplesref->audio))))
89 samplesref->audio->nb_samples = nb_samples;
90 samplesref->audio->channel_layout = channel_layout;
96 samplesref->perms = perms | AV_PERM_READ;
98 samples->refcount = 1;
102 memcpy(samples->data, data,
104 memcpy(samplesref->data, samples->data,
sizeof(samples->data));
106 samples->linesize[0] = samplesref->linesize[0] = linesize;
109 samples-> extended_data =
av_mallocz(
sizeof(*samples->extended_data) *
111 samplesref->extended_data =
av_mallocz(
sizeof(*samplesref->extended_data) *
114 if (!samples->extended_data || !samplesref->extended_data)
117 memcpy(samples-> extended_data, data,
sizeof(*data)*planes);
118 memcpy(samplesref->extended_data, data,
sizeof(*data)*planes);
120 samples->extended_data = samples->data;
121 samplesref->extended_data = samplesref->data;
129 if (samples && samples->extended_data != samples->data)
133 if (samplesref->extended_data != samplesref->data)
134 av_freep(&samplesref->extended_data);