summaryrefslogtreecommitdiff
path: root/libavfilter/audio.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2012-06-13 21:04:06 +0200
committerMichael Niedermayer <michaelni@gmx.at>2012-06-13 22:43:57 +0200
commitc7b9eab2be7099b0d4f2fed4feaf69a7dda379f0 (patch)
tree019d5b0a7eaa5e15782ec67d61100d9a3f91e916 /libavfilter/audio.c
parent4a6d790a6fc0de15112a7bbfe8b2b58ef058a48d (diff)
parent8517e9c476e8cf92d9ed25b6486bb43d3dc2c49d (diff)
downloadffmpeg-c7b9eab2be7099b0d4f2fed4feaf69a7dda379f0.tar.gz
Merge remote-tracking branch 'qatar/master'
* qatar/master: rtmp: Add a new option 'rtmp_buffer', for setting the client buffer time rtmp: Set the client buffer time to 3s instead of 0.26s rtmp: Handle server bandwidth packets rtmp: Display a verbose message when an unknown packet type is received lavfi/audio: use av_samples_copy() instead of custom code. configure: add all filters hardcoded into avconv to avconv_deps avfiltergraph: remove a redundant call to avfilter_get_by_name(). lavfi: allow building without swscale. build: Do not delete tests/vsynth2 directory, which is no longer created. lavfi: replace AVFilterContext.input/output_count with nb_inputs/outputs lavfi: make AVFilterPad opaque after two major bumps. lavfi: add avfilter_pad_get_type() and avfilter_pad_get_name(). lavfi: make avfilter_get_video_buffer() private on next bump. jack: update to new latency range API as the old one has been deprecated rtmp: Tokenize the AMF connection parameters manually instead of using strtok_r ppc: Rename H.264 optimization template file for consistency. lavfi: add channelsplit audio filter. golomb: check remaining bits during unary decoding in get_ur_golomb_jpegls() sws: fix planar RGB input conversions for 9/10/16 bpp. Conflicts: Changelog configure doc/APIchanges ffmpeg.c libavcodec/golomb.h libavcodec/v210dec.h libavfilter/Makefile libavfilter/allfilters.c libavfilter/asrc_anullsrc.c libavfilter/audio.c libavfilter/avfilter.c libavfilter/avfilter.h libavfilter/avfiltergraph.c libavfilter/buffersrc.c libavfilter/formats.c libavfilter/version.h libavfilter/vf_frei0r.c libavfilter/vf_pad.c libavfilter/vf_scale.c libavfilter/video.h libavfilter/vsrc_color.c libavformat/rtmpproto.c libswscale/input.c tests/Makefile Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavfilter/audio.c')
-rw-r--r--libavfilter/audio.c18
1 files changed, 6 insertions, 12 deletions
diff --git a/libavfilter/audio.c b/libavfilter/audio.c
index 1334c2b7bc..d473b99393 100644
--- a/libavfilter/audio.c
+++ b/libavfilter/audio.c
@@ -160,7 +160,7 @@ void ff_default_filter_samples(AVFilterLink *inlink, AVFilterBufferRef *samplesr
{
AVFilterLink *outlink = NULL;
- if (inlink->dst->output_count)
+ if (inlink->dst->nb_outputs)
outlink = inlink->dst->outputs[0];
if (outlink) {
@@ -190,10 +190,7 @@ 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, size, planar = av_sample_fmt_is_planar(samplesref->format);
- int planes = !planar ? 1:
- av_get_channel_layout_nb_channels(samplesref->audio->channel_layout);
-
+ int size;
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);
@@ -204,13 +201,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 */
- /* src can be larger than dst if it was allocated larger than necessary.
- dst can be slightly larger due to extra alignment padding. */
- size = FFMIN(samplesref->linesize[0], link->cur_buf->linesize[0]);
- for (i = 0; samplesref->data[i] && i < 8; i++)
- memcpy(link->cur_buf->data[i], samplesref->data[i], size);
- for (i = 0; i < planes; i++)
- memcpy(link->cur_buf->extended_data[i], samplesref->extended_data[i], size);
+ 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