summaryrefslogtreecommitdiff
path: root/libavfilter/audio.c
diff options
context:
space:
mode:
authorNicolas George <nicolas.george@normalesup.org>2012-12-30 19:28:51 +0100
committerNicolas George <nicolas.george@normalesup.org>2013-01-01 15:19:04 +0100
commit82541d833016ff899b6f19a02de8781538e24c36 (patch)
treea50b2f5fcdf03f0b511a842c7638e06574eb080e /libavfilter/audio.c
parent765158dd82a2e985f4eb0b201a8256964403f623 (diff)
downloadffmpeg-82541d833016ff899b6f19a02de8781538e24c36.tar.gz
lavfi: merge all filtering code into ff_filter_frame.
Diffstat (limited to 'libavfilter/audio.c')
-rw-r--r--libavfilter/audio.c111
1 files changed, 0 insertions, 111 deletions
diff --git a/libavfilter/audio.c b/libavfilter/audio.c
index 74cf9a8130..72dcd148a4 100644
--- a/libavfilter/audio.c
+++ b/libavfilter/audio.c
@@ -179,114 +179,3 @@ AVFilterBufferRef* avfilter_get_audio_buffer_ref_from_arrays(uint8_t **data,
nb_samples, sample_fmt,
channels, channel_layout);
}
-
-static int default_filter_frame(AVFilterLink *link, AVFilterBufferRef *frame)
-{
- return ff_filter_frame(link->dst->outputs[0], frame);
-}
-
-int ff_filter_samples_framed(AVFilterLink *link, AVFilterBufferRef *samplesref)
-{
- int (*filter_frame)(AVFilterLink *, AVFilterBufferRef *);
- AVFilterPad *src = link->srcpad;
- AVFilterPad *dst = link->dstpad;
- int64_t pts;
- AVFilterBufferRef *buf_out;
- int ret;
-
- FF_TPRINTF_START(NULL, filter_frame); ff_tlog_link(NULL, link, 1);
-
- if (link->closed) {
- avfilter_unref_buffer(samplesref);
- return AVERROR_EOF;
- }
-
- if (!(filter_frame = dst->filter_frame))
- filter_frame = default_filter_frame;
-
- av_assert1((samplesref->perms & src->min_perms) == src->min_perms);
- samplesref->perms &= ~ src->rej_perms;
-
- /* 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) {
- 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);
-
- buf_out = ff_default_get_audio_buffer(link, dst->min_perms,
- samplesref->audio->nb_samples);
- if (!buf_out) {
- avfilter_unref_buffer(samplesref);
- return AVERROR(ENOMEM);
- }
- buf_out->pts = samplesref->pts;
- buf_out->audio->sample_rate = samplesref->audio->sample_rate;
-
- /* Copy actual data into new samples buffer */
- av_samples_copy(buf_out->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
- buf_out = samplesref;
-
- link->cur_buf = buf_out;
- pts = buf_out->pts;
- ret = filter_frame(link, buf_out);
- ff_update_link_current_pts(link, pts);
- return ret;
-}
-
-int ff_filter_samples(AVFilterLink *link, AVFilterBufferRef *samplesref)
-{
- int insamples = samplesref->audio->nb_samples, inpos = 0, nb_samples;
- AVFilterBufferRef *pbuf = link->partial_buf;
- int nb_channels = av_get_channel_layout_nb_channels(link->channel_layout);
- int ret = 0;
-
- av_assert1(samplesref->format == link->format);
- av_assert1(samplesref->audio->channels == link->channels);
- av_assert1(samplesref->audio->channel_layout == link->channel_layout);
- av_assert1(samplesref->audio->sample_rate == link->sample_rate);
-
- if (!link->min_samples ||
- (!pbuf &&
- insamples >= link->min_samples && insamples <= link->max_samples)) {
- return ff_filter_samples_framed(link, samplesref);
- }
- /* Handle framing (min_samples, max_samples) */
- while (insamples) {
- if (!pbuf) {
- AVRational samples_tb = { 1, link->sample_rate };
- int perms = link->dstpad->min_perms | AV_PERM_WRITE;
- pbuf = ff_get_audio_buffer(link, perms, link->partial_buf_size);
- if (!pbuf) {
- av_log(link->dst, AV_LOG_WARNING,
- "Samples dropped due to memory allocation failure.\n");
- return 0;
- }
- avfilter_copy_buffer_ref_props(pbuf, samplesref);
- pbuf->pts = samplesref->pts +
- av_rescale_q(inpos, samples_tb, link->time_base);
- pbuf->audio->nb_samples = 0;
- }
- nb_samples = FFMIN(insamples,
- link->partial_buf_size - pbuf->audio->nb_samples);
- av_samples_copy(pbuf->extended_data, samplesref->extended_data,
- pbuf->audio->nb_samples, inpos,
- nb_samples, nb_channels, link->format);
- inpos += nb_samples;
- insamples -= nb_samples;
- pbuf->audio->nb_samples += nb_samples;
- if (pbuf->audio->nb_samples >= link->min_samples) {
- ret = ff_filter_samples_framed(link, pbuf);
- pbuf = NULL;
- }
- }
- avfilter_unref_buffer(samplesref);
- link->partial_buf = pbuf;
- return ret;
-}