mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-02-25 16:21:13 +00:00
af_pan: remove the indirect function call.
libswresample is used in all cases.
This commit is contained in:
parent
6a3f1726af
commit
eb9ba527e7
@ -48,11 +48,6 @@ typedef struct PanContext {
|
|||||||
int nb_output_channels;
|
int nb_output_channels;
|
||||||
|
|
||||||
int pure_gains;
|
int pure_gains;
|
||||||
void (*filter_samples)(struct PanContext*,
|
|
||||||
AVFilterBufferRef*,
|
|
||||||
AVFilterBufferRef*,
|
|
||||||
int);
|
|
||||||
|
|
||||||
/* channel mapping specific */
|
/* channel mapping specific */
|
||||||
int channel_map[SWR_CH_MAX];
|
int channel_map[SWR_CH_MAX];
|
||||||
struct SwrContext *swr;
|
struct SwrContext *swr;
|
||||||
@ -332,14 +327,6 @@ static int config_props(AVFilterLink *link)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void filter_samples_channel_mapping(PanContext *pan,
|
|
||||||
AVFilterBufferRef *outsamples,
|
|
||||||
AVFilterBufferRef *insamples,
|
|
||||||
int n)
|
|
||||||
{
|
|
||||||
swr_convert(pan->swr, outsamples->data, n, (void *)insamples->data, n);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void filter_samples(AVFilterLink *inlink, AVFilterBufferRef *insamples)
|
static void filter_samples(AVFilterLink *inlink, AVFilterBufferRef *insamples)
|
||||||
{
|
{
|
||||||
int n = insamples->audio->nb_samples;
|
int n = insamples->audio->nb_samples;
|
||||||
@ -347,8 +334,7 @@ static void filter_samples(AVFilterLink *inlink, AVFilterBufferRef *insamples)
|
|||||||
AVFilterBufferRef *outsamples = avfilter_get_audio_buffer(outlink, AV_PERM_WRITE, n);
|
AVFilterBufferRef *outsamples = avfilter_get_audio_buffer(outlink, AV_PERM_WRITE, n);
|
||||||
PanContext *pan = inlink->dst->priv;
|
PanContext *pan = inlink->dst->priv;
|
||||||
|
|
||||||
pan->filter_samples(pan, outsamples, insamples, n);
|
swr_convert(pan->swr, outsamples->data, n, (void *)insamples->data, n);
|
||||||
|
|
||||||
avfilter_copy_buffer_ref_props(outsamples, insamples);
|
avfilter_copy_buffer_ref_props(outsamples, insamples);
|
||||||
outsamples->audio->channel_layout = outlink->channel_layout;
|
outsamples->audio->channel_layout = outlink->channel_layout;
|
||||||
outsamples->audio->planar = outlink->planar;
|
outsamples->audio->planar = outlink->planar;
|
||||||
@ -368,7 +354,6 @@ static int query_formats(AVFilterContext *ctx)
|
|||||||
/* libswr supports any sample and packing formats */
|
/* libswr supports any sample and packing formats */
|
||||||
avfilter_set_common_sample_formats(ctx, avfilter_make_all_formats(AVMEDIA_TYPE_AUDIO));
|
avfilter_set_common_sample_formats(ctx, avfilter_make_all_formats(AVMEDIA_TYPE_AUDIO));
|
||||||
avfilter_set_common_packing_formats(ctx, avfilter_make_all_packing_formats());
|
avfilter_set_common_packing_formats(ctx, avfilter_make_all_packing_formats());
|
||||||
pan->filter_samples = filter_samples_channel_mapping;
|
|
||||||
|
|
||||||
// inlink supports any channel layout
|
// inlink supports any channel layout
|
||||||
formats = avfilter_make_all_channel_layouts();
|
formats = avfilter_make_all_channel_layouts();
|
||||||
|
Loading…
Reference in New Issue
Block a user