mirror of
				https://github.com/nyanmisaka/ffmpeg-rockchip.git
				synced 2025-11-01 04:53:04 +08:00 
			
		
		
		
	af_amix: use AVFloatDSPContext.vector_fmac_scalar()
This commit is contained in:
		| @@ -32,6 +32,7 @@ | |||||||
| #include "libavutil/audio_fifo.h" | #include "libavutil/audio_fifo.h" | ||||||
| #include "libavutil/avassert.h" | #include "libavutil/avassert.h" | ||||||
| #include "libavutil/avstring.h" | #include "libavutil/avstring.h" | ||||||
|  | #include "libavutil/float_dsp.h" | ||||||
| #include "libavutil/mathematics.h" | #include "libavutil/mathematics.h" | ||||||
| #include "libavutil/opt.h" | #include "libavutil/opt.h" | ||||||
| #include "libavutil/samplefmt.h" | #include "libavutil/samplefmt.h" | ||||||
| @@ -152,6 +153,7 @@ static int frame_list_add_frame(FrameList *frame_list, int nb_samples, int64_t p | |||||||
|  |  | ||||||
| typedef struct MixContext { | typedef struct MixContext { | ||||||
|     const AVClass *class;       /**< class for AVOptions */ |     const AVClass *class;       /**< class for AVOptions */ | ||||||
|  |     AVFloatDSPContext fdsp; | ||||||
|  |  | ||||||
|     int nb_inputs;              /**< number of inputs */ |     int nb_inputs;              /**< number of inputs */ | ||||||
|     int active_inputs;          /**< number of input currently active */ |     int active_inputs;          /**< number of input currently active */ | ||||||
| @@ -263,14 +265,6 @@ static int config_output(AVFilterLink *outlink) | |||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
| /* TODO: move optimized version from DSPContext to libavutil */ |  | ||||||
| static void vector_fmac_scalar(float *dst, const float *src, float mul, int len) |  | ||||||
| { |  | ||||||
|     int i; |  | ||||||
|     for (i = 0; i < len; i++) |  | ||||||
|         dst[i] += src[i] * mul; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Read samples from the input FIFOs, mix, and write to the output link. |  * Read samples from the input FIFOs, mix, and write to the output link. | ||||||
|  */ |  */ | ||||||
| @@ -295,9 +289,10 @@ static int output_frame(AVFilterLink *outlink, int nb_samples) | |||||||
|         if (s->input_state[i] == INPUT_ON) { |         if (s->input_state[i] == INPUT_ON) { | ||||||
|             av_audio_fifo_read(s->fifos[i], (void **)in_buf->extended_data, |             av_audio_fifo_read(s->fifos[i], (void **)in_buf->extended_data, | ||||||
|                                nb_samples); |                                nb_samples); | ||||||
|             vector_fmac_scalar((float *)out_buf->extended_data[0], |             s->fdsp.vector_fmac_scalar((float *)out_buf->extended_data[0], | ||||||
|                                (float *) in_buf->extended_data[0], |                                        (float *) in_buf->extended_data[0], | ||||||
|                                s->input_scale[i], nb_samples * s->nb_channels); |                                        s->input_scale[i], | ||||||
|  |                                        FFALIGN(nb_samples * s->nb_channels, 16)); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     avfilter_unref_buffer(in_buf); |     avfilter_unref_buffer(in_buf); | ||||||
| @@ -500,6 +495,8 @@ static int init(AVFilterContext *ctx, const char *args, void *opaque) | |||||||
|         ff_insert_inpad(ctx, i, &pad); |         ff_insert_inpad(ctx, i, &pad); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     avpriv_float_dsp_init(&s->fdsp, 0); | ||||||
|  |  | ||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Justin Ruggles
					Justin Ruggles