diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2013-02-04 04:00:12 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-02-04 04:05:59 +0100 |
commit | be989f92367839201456c95356f1c4dc13223671 (patch) | |
tree | 45b4c7ef7f151df7d8926dda79854e64eb779da1 /libswresample/swresample.c | |
parent | 24244cec2fdd3d3ade79a32d5f0b3ccf5eae01ff (diff) | |
download | ffmpeg-be989f92367839201456c95356f1c4dc13223671.tar.gz |
swr: reorder init code to make rematrix status available earlier
This also makes some other fields available earlier which may
be usefull one day
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libswresample/swresample.c')
-rw-r--r-- | libswresample/swresample.c | 54 |
1 files changed, 27 insertions, 27 deletions
diff --git a/libswresample/swresample.c b/libswresample/swresample.c index e55f9be150..bb2bf05fbd 100644 --- a/libswresample/swresample.c +++ b/libswresample/swresample.c @@ -265,6 +265,33 @@ av_cold int swr_init(struct SwrContext *s){ return AVERROR(EINVAL); } + switch(s->engine){ +#if CONFIG_LIBSOXR + extern struct Resampler const soxr_resampler; + case SWR_ENGINE_SOXR: s->resampler = &soxr_resampler; break; +#endif + case SWR_ENGINE_SWR : s->resampler = &swri_resampler; break; + default: + av_log(s, AV_LOG_ERROR, "Requested resampling engine is unavailable\n"); + return AVERROR(EINVAL); + } + + if(!s->used_ch_count) + s->used_ch_count= s->in.ch_count; + + if(s->used_ch_count && s-> in_ch_layout && s->used_ch_count != av_get_channel_layout_nb_channels(s-> in_ch_layout)){ + av_log(s, AV_LOG_WARNING, "Input channel layout has a different number of channels than the number of used channels, ignoring layout\n"); + s-> in_ch_layout= 0; + } + + if(!s-> in_ch_layout) + s-> in_ch_layout= av_get_default_channel_layout(s->used_ch_count); + if(!s->out_ch_layout) + s->out_ch_layout= av_get_default_channel_layout(s->out.ch_count); + + s->rematrix= s->out_ch_layout !=s->in_ch_layout || s->rematrix_volume!=1.0 || + s->rematrix_custom; + if(s->int_sample_fmt == AV_SAMPLE_FMT_NONE){ if(av_get_planar_sample_fmt(s->in_sample_fmt) <= AV_SAMPLE_FMT_S16P){ s->int_sample_fmt= AV_SAMPLE_FMT_S16P; @@ -284,17 +311,6 @@ av_cold int swr_init(struct SwrContext *s){ return AVERROR(EINVAL); } - switch(s->engine){ -#if CONFIG_LIBSOXR - extern struct Resampler const soxr_resampler; - case SWR_ENGINE_SOXR: s->resampler = &soxr_resampler; break; -#endif - case SWR_ENGINE_SWR : s->resampler = &swri_resampler; break; - default: - av_log(s, AV_LOG_ERROR, "Requested resampling engine is unavailable\n"); - return AVERROR(EINVAL); - } - set_audiodata_fmt(&s-> in, s-> in_sample_fmt); set_audiodata_fmt(&s->out, s->out_sample_fmt); @@ -326,22 +342,6 @@ av_cold int swr_init(struct SwrContext *s){ return -1; } - if(!s->used_ch_count) - s->used_ch_count= s->in.ch_count; - - if(s->used_ch_count && s-> in_ch_layout && s->used_ch_count != av_get_channel_layout_nb_channels(s-> in_ch_layout)){ - av_log(s, AV_LOG_WARNING, "Input channel layout has a different number of channels than the number of used channels, ignoring layout\n"); - s-> in_ch_layout= 0; - } - - if(!s-> in_ch_layout) - s-> in_ch_layout= av_get_default_channel_layout(s->used_ch_count); - if(!s->out_ch_layout) - s->out_ch_layout= av_get_default_channel_layout(s->out.ch_count); - - s->rematrix= s->out_ch_layout !=s->in_ch_layout || s->rematrix_volume!=1.0 || - s->rematrix_custom; - #define RSC 1 //FIXME finetune if(!s-> in.ch_count) s-> in.ch_count= av_get_channel_layout_nb_channels(s-> in_ch_layout); |