[FFmpeg-devel] [PATCH] swresample/swresample: do not use s32p internally by default when resampling

wm4 nfxjfg at googlemail.com
Thu Mar 16 08:01:27 EET 2017


On Thu, 16 Mar 2017 12:43:10 +0700
Muhammad Faiz <mfcc64 at gmail.com> wrote:

> use fltp when doing s32 -> s32 resampling
> because s32p has no simd optimization
> 
> benchmark:
> old 17.913s
> new  7.584s (use fma3)
> 
> Signed-off-by: Muhammad Faiz <mfcc64 at gmail.com>
> ---
>  libswresample/swresample.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/libswresample/swresample.c b/libswresample/swresample.c
> index f2e6600..74c96dc 100644
> --- a/libswresample/swresample.c
> +++ b/libswresample/swresample.c
> @@ -223,6 +223,8 @@ av_cold int swr_init(struct SwrContext *s){
>          }else if(   av_get_planar_sample_fmt(s-> in_sample_fmt) == AV_SAMPLE_FMT_S32P
>                   && av_get_planar_sample_fmt(s->out_sample_fmt) == AV_SAMPLE_FMT_S32P
>                   && !s->rematrix
> +                 && s->out_sample_rate == s->in_sample_rate
> +                 && !(s->flags & SWR_FLAG_RESAMPLE)
>                   && s->engine != SWR_ENGINE_SOXR){
>              s->int_sample_fmt= AV_SAMPLE_FMT_S32P;
>          }else if(av_get_bytes_per_sample(s->in_sample_fmt) <= 4){

Wouldn't going over float lose bits? I guess most times, s32 is
actually 24 bit padded (since we have no 24 bit format). But it could
be true 32 bit as well (with all bits used). Or does it use double, or
am I missing something else?


More information about the ffmpeg-devel mailing list