Lines Matching refs:ac
70 void ff_audio_convert_set_func(AudioConvert *ac, enum AVSampleFormat out_fmt, in ff_audio_convert_set_func() argument
77 switch (ac->func_type) { in ff_audio_convert_set_func()
79 if (av_get_packed_sample_fmt(ac->in_fmt) == in_fmt && in ff_audio_convert_set_func()
80 av_get_packed_sample_fmt(ac->out_fmt) == out_fmt) { in ff_audio_convert_set_func()
81 ac->conv_flat = conv; in ff_audio_convert_set_func()
82 ac->func_descr = descr; in ff_audio_convert_set_func()
83 ac->ptr_align = ptr_align; in ff_audio_convert_set_func()
84 ac->samples_align = samples_align; in ff_audio_convert_set_func()
86 ac->conv_flat_generic = conv; in ff_audio_convert_set_func()
87 ac->func_descr_generic = descr; in ff_audio_convert_set_func()
89 ac->has_optimized_func = 1; in ff_audio_convert_set_func()
95 if (ac->in_fmt == in_fmt && ac->out_fmt == out_fmt && in ff_audio_convert_set_func()
96 (!channels || ac->channels == channels)) { in ff_audio_convert_set_func()
97 ac->conv_interleave = conv; in ff_audio_convert_set_func()
98 ac->func_descr = descr; in ff_audio_convert_set_func()
99 ac->ptr_align = ptr_align; in ff_audio_convert_set_func()
100 ac->samples_align = samples_align; in ff_audio_convert_set_func()
102 ac->conv_interleave_generic = conv; in ff_audio_convert_set_func()
103 ac->func_descr_generic = descr; in ff_audio_convert_set_func()
105 ac->has_optimized_func = 1; in ff_audio_convert_set_func()
111 if (ac->in_fmt == in_fmt && ac->out_fmt == out_fmt && in ff_audio_convert_set_func()
112 (!channels || ac->channels == channels)) { in ff_audio_convert_set_func()
113 ac->conv_deinterleave = conv; in ff_audio_convert_set_func()
114 ac->func_descr = descr; in ff_audio_convert_set_func()
115 ac->ptr_align = ptr_align; in ff_audio_convert_set_func()
116 ac->samples_align = samples_align; in ff_audio_convert_set_func()
118 ac->conv_deinterleave_generic = conv; in ff_audio_convert_set_func()
119 ac->func_descr_generic = descr; in ff_audio_convert_set_func()
121 ac->has_optimized_func = 1; in ff_audio_convert_set_func()
128 av_log(ac->avr, AV_LOG_DEBUG, "audio_convert: found function: %-4s " in ff_audio_convert_set_func()
129 "to %-4s (%s)\n", av_get_sample_fmt_name(ac->in_fmt), in ff_audio_convert_set_func()
130 av_get_sample_fmt_name(ac->out_fmt), descr); in ff_audio_convert_set_func()
219 ff_audio_convert_set_func(ac, ofmt, ifmt, 0, 1, 1, "C", CONV_FUNC_NAME(ofmt, ifmt));… in CONV_FUNC_GROUP()
220 ff_audio_convert_set_func(ac, ofmt ## P, ifmt, 0, 1, 1, "C", CONV_FUNC_NAME(ofmt ## P, ifmt));…
221 ff_audio_convert_set_func(ac, ofmt, ifmt ## P, 0, 1, 1, "C", CONV_FUNC_NAME(ofmt, ifmt ##…
223 static void set_generic_function(AudioConvert *ac)
252 void ff_audio_convert_free(AudioConvert **ac) in ff_audio_convert_free() argument
254 if (!*ac) in ff_audio_convert_free()
256 ff_dither_free(&(*ac)->dc); in ff_audio_convert_free()
257 av_freep(ac); in ff_audio_convert_free()
266 AudioConvert *ac; in ff_audio_convert_alloc() local
269 ac = av_mallocz(sizeof(*ac)); in ff_audio_convert_alloc()
270 if (!ac) in ff_audio_convert_alloc()
273 ac->avr = avr; in ff_audio_convert_alloc()
274 ac->out_fmt = out_fmt; in ff_audio_convert_alloc()
275 ac->in_fmt = in_fmt; in ff_audio_convert_alloc()
276 ac->channels = channels; in ff_audio_convert_alloc()
277 ac->apply_map = apply_map; in ff_audio_convert_alloc()
282 ac->dc = ff_dither_alloc(avr, out_fmt, in_fmt, channels, sample_rate, in ff_audio_convert_alloc()
284 if (!ac->dc) { in ff_audio_convert_alloc()
285 av_free(ac); in ff_audio_convert_alloc()
288 return ac; in ff_audio_convert_alloc()
295 ac->func_type = CONV_FUNC_TYPE_FLAT; in ff_audio_convert_alloc()
296 ac->planes = in_planar ? ac->channels : 1; in ff_audio_convert_alloc()
298 ac->func_type = CONV_FUNC_TYPE_INTERLEAVE; in ff_audio_convert_alloc()
300 ac->func_type = CONV_FUNC_TYPE_DEINTERLEAVE; in ff_audio_convert_alloc()
302 set_generic_function(ac); in ff_audio_convert_alloc()
305 ff_audio_convert_init_aarch64(ac); in ff_audio_convert_alloc()
307 ff_audio_convert_init_arm(ac); in ff_audio_convert_alloc()
309 ff_audio_convert_init_x86(ac); in ff_audio_convert_alloc()
311 return ac; in ff_audio_convert_alloc()
314 int ff_audio_convert(AudioConvert *ac, AudioData *out, AudioData *in) in ff_audio_convert() argument
320 if (ac->dc) { in ff_audio_convert()
322 av_log(ac->avr, AV_LOG_TRACE, "%d samples - audio_convert: %s to %s (dithered)\n", in ff_audio_convert()
323 len, av_get_sample_fmt_name(ac->in_fmt), in ff_audio_convert()
324 av_get_sample_fmt_name(ac->out_fmt)); in ff_audio_convert()
326 return ff_convert_dither(ac->dc, out, in); in ff_audio_convert()
331 if (ac->has_optimized_func) { in ff_audio_convert()
334 int aligned_len = FFALIGN(len, ac->samples_align); in ff_audio_convert()
335 if (!(ptr_align % ac->ptr_align) && samples_align >= aligned_len) { in ff_audio_convert()
340 av_log(ac->avr, AV_LOG_TRACE, "%d samples - audio_convert: %s to %s (%s)\n", len, in ff_audio_convert()
341 av_get_sample_fmt_name(ac->in_fmt), in ff_audio_convert()
342 av_get_sample_fmt_name(ac->out_fmt), in ff_audio_convert()
343 use_generic ? ac->func_descr_generic : ac->func_descr); in ff_audio_convert()
345 if (ac->apply_map) { in ff_audio_convert()
346 ChannelMapInfo *map = &ac->avr->ch_map_info; in ff_audio_convert()
348 if (!ff_sample_fmt_is_planar(ac->out_fmt, ac->channels)) { in ff_audio_convert()
349 av_log(ac->avr, AV_LOG_ERROR, "cannot remap packed format during conversion\n"); in ff_audio_convert()
354 if (ff_sample_fmt_is_planar(ac->in_fmt, ac->channels)) { in ff_audio_convert()
355 conv_func_flat *convert = use_generic ? ac->conv_flat_generic : in ff_audio_convert()
356 ac->conv_flat; in ff_audio_convert()
358 for (p = 0; p < ac->planes; p++) in ff_audio_convert()
364 ac->conv_deinterleave_generic : in ff_audio_convert()
365 ac->conv_deinterleave; in ff_audio_convert()
367 for (p = 0; p < ac->channels; p++) in ff_audio_convert()
370 convert(data, in->data[0], len, ac->channels); in ff_audio_convert()
374 for (p = 0; p < ac->planes; p++) { in ff_audio_convert()
379 av_samples_set_silence(&out->data[p], 0, len, 1, ac->out_fmt); in ff_audio_convert()
383 switch (ac->func_type) { in ff_audio_convert()
388 for (p = 0; p < ac->planes; p++) in ff_audio_convert()
389 ac->conv_flat_generic(out->data[p], in->data[p], len); in ff_audio_convert()
391 for (p = 0; p < ac->planes; p++) in ff_audio_convert()
392 ac->conv_flat(out->data[p], in->data[p], len); in ff_audio_convert()
398 ac->conv_interleave_generic(out->data[0], in->data, len, in ff_audio_convert()
399 ac->channels); in ff_audio_convert()
401 ac->conv_interleave(out->data[0], in->data, len, ac->channels); in ff_audio_convert()
405 ac->conv_deinterleave_generic(out->data, in->data[0], len, in ff_audio_convert()
406 ac->channels); in ff_audio_convert()
408 ac->conv_deinterleave(out->data, in->data[0], len, in ff_audio_convert()
409 ac->channels); in ff_audio_convert()