Commit Graph
100 Commits
Author SHA1 Message Date
Muhammad Faiz b7d476b138 fate/libavcodec: add codec_desc test
Remove runtime check at codec_desc.c

Reviewed-by: wm4 <nfxjfg@googlemail.com>
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2018-02-12 06:06:37 +07:00
Muhammad Faiz 909e00ae81 avformat/format: temporarily use old next api
Should fix https://ffmpeg.org/pipermail/ffmpeg-devel/2018-February/225066.html

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2018-02-10 07:23:41 +07:00
Muhammad Faiz 81d6501be7 checkasm/Makefile: add EXTRALIBS-swresample
Should fix https://ffmpeg.org/pipermail/ffmpeg-devel/2018-February/225058.html

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2018-02-09 17:50:44 +07:00
Muhammad Faiz 5a2abf00f1 avcodec/codec_desc: sort codec_descriptors
Use bsearch on avcodec_descriptor_get().

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2018-02-09 17:39:01 +07:00
Muhammad Faiz caa4bd7a9f avcodec/me_cmp: remove ff_me_cmp_init_static()
Precalculate and constify ff_square_tab.

Reviewed-by: James Almer <jamrial@gmail.com>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2018-02-05 22:42:59 +07:00
Muhammad Faiz 3caecf7ce8 avcodec: do not use init_static_data on some codecs
They don't modify AVCodec, no needs to call it at register. They will be
wasteful if these codecs are unused. Instead, call static data initialization
at codecs' init.

Benchmark:
old: 51281340 decicycles in avcodec_register_all,       1 runs,      0 skips
new:  6738960 decicycles in avcodec_register_all,       1 runs,      0 skips

Reviewed-by: wm4 <nfxjfg@googlemail.com>
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2018-02-04 06:11:07 +07:00
Muhammad Faiz 8329ae781a avutil/crc: use ff_thread_once at av_crc_get_table
Fix tsan warnings.

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-11-14 06:25:05 +07:00
Muhammad Faiz 3ddd10290a avfilter/af_firequalizer: fix minval on cepstrum calculation
The impulse response is scaled with 2/rdft_len.

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-08-25 17:36:04 +07:00
Muhammad Faiz e0e991f8a1 avfilter/af_firequalizer: reindent after previous commit
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-08-25 10:39:16 +07:00
Muhammad Faiz ae1ce0db91 avfilter/af_firequalizer: add min_phase option
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-08-25 10:35:23 +07:00
Muhammad Faiz f2d23ec03f avfilter/vf_ssim: fix temp size calculation
Also use av_mallocz_array.
Fix Ticket6519.

Reviewed-by: Tobias Rapp <t.rapp@noa-archive.com>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-08-04 06:53:39 +07:00
Muhammad Faiz c8305079da avcodec/rdft: reorder calculation
old:
 165188 decicycles in  rdft,   65536 runs,      0 skips
 165865 decicycles in irdft,   65536 runs,      0 skips
new:
 142487 decicycles in  rdft,   65536 runs,      0 skips
 141498 decicycles in irdft,   65536 runs,      0 skips

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-07-26 06:13:05 +07:00
Muhammad Faiz 7e9f550003 avfilter/w3fdif: do not write to line before start line
That line has been written by previous job.
Fix tsan warning.

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-07-23 20:32:42 +07:00
Muhammad Faiz 22b72de04b avfilter/pthread: use slice threading from avutil
Benchmark (with 2 cpus):
./ffmpeg -f rawvideo -s 1280x720 -t 1000 -i /dev/zero \
    -filter_threads $threads -vf transpose=clock -f null null
threads=2:
  old: 31.129s 31.446s 31.574s
  new: 29.602s 29.636s 29.656s
threads=3 (nb_threads = nb_cpus + 1 is bad choice at this situation):
  old: 40.132s 40.279s 40.279s
  new: 39.308s 39.570s 39.693s
threads=4:
  old: 31.306s 31.366s 31.654s
  new: 30.231s 30.360s 30.451s

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-07-19 15:51:38 +07:00
Muhammad Faiz b505f15b15 avcodec/pthread_slice: use slice threading from avutil
Also remove pthread_cond_broadcast(progress_cond) on uninit.
Broadcasting it is not required because workers are always
parked when they are not in thread_execute. So it is imposible
that a worker is waiting on progress_cond when uninitialized.

Benchmark:
./ffmpeg -threads $threads -thread_type slice -i 10slices.mp4 -f null null
threads=2:
  old: 70.212s 70.525s 70.877s
  new: 65.219s 65.377s 65.484s
threads=3:
  old: 65.086s 66.306s 66.409s
  new: 63.229s 65.026s 65.116s
threads=4:
  old: 60.993s 61.482s 62.123s
  new: 59.224s 59.441s 59.667s
threads=5:
  old: 57.576s 57.860s 58.832s
  new: 53.032s 53.948s 54.086s

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-07-19 15:51:32 +07:00
Muhammad Faiz a3d3cfa65c avutil: merge slice threading implementation from avcodec and avfilter
Rework it to improve performance. Now mutex is not shared by workers,
instead each worker has its own mutex and condition variable. This
reduces lock contention between workers. Also use atomic variable for
counter.

The interface also allows execute to run special function on main
thread, requested by Ronald.

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-07-19 15:50:07 +07:00
Muhammad Faiz 0780ad9c68 avcodec/rdft: remove sintable
It is redundant with costable. The first half of sintable is
identical with the second half of costable. The second half
of sintable is negative value of the first half of sintable.

The computation is changed to handle sign of sin values, in
C code and ARM assembly code.

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-07-11 13:22:02 +07:00
Muhammad Faiz 1af615683e avcodec/fft_template: use ff_thread_once on costable initialization
Make it thread-safe and avoid redundant initialization.

Reviewed-by: Rostislav Pehlivanov <atomnuker@gmail.com>
Reviewed-by: wm4 <nfxjfg@googlemail.com>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-07-07 09:41:52 +07:00
Muhammad Faiz fc3a03fcf9 avfilter: take_samples: do not directly return frame when samples are skipped
Modifying data pointer when skipping samples may make it unaligned.
Workaround for Ticket6349.

This should fix the crash of ticket's testcase and a crash/regression
with avxsynth (reported by Michael Niedermayer).

Also change frame->nb_samples < max to frame->nb_samples <= max.
This improves performance. Benchmark:
./ffmpeg -filter_complex "aevalsrc=0:n=1166,firequalizer=fixed=on" -f null null
old:
  25767 decicycles in take_samples,    1023 runs,      1 skips
  25422 decicycles in take_samples,    2047 runs,      1 skips
  25181 decicycles in take_samples,    4095 runs,      1 skips
  24904 decicycles in take_samples,    8191 runs,      1 skips

new:
    550 decicycles in take_samples,    1024 runs,      0 skips
    548 decicycles in take_samples,    2048 runs,      0 skips
    545 decicycles in take_samples,    4096 runs,      0 skips
    544 decicycles in take_samples,    8192 runs,      0 skips

Reviewed-by: Nicolas George <george@nsup.org>
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-05-20 23:19:46 +07:00
Muhammad Faiz 162414cefe avfilter/graphparser: allow specifying filter@id as filter instance
See http://lists.ffmpeg.org/pipermail/ffmpeg-user/2017-April/035975.html
Parsed_filter_X could remain and user can override it with custom one.

Example:
ffplay -f lavfi "nullsrc=s=640x360,
sendcmd='1 drawtext@top reinit text=Hello; 2 drawtext@bottom reinit text=World',
drawtext@top=x=16:y=16:fontsize=20:fontcolor=Red:text='',
drawtext@bottom=x=16:y=340:fontsize=16:fontcolor=Blue:text=''"

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-05-19 20:21:47 +07:00
Muhammad Faiz c4be288fdb ffmpeg: count packets when queued
Because write_packet() fakely writes packets to muxer by queueing
them when muxer hasn't been initialized, it should also increment
frame_number fakely.
This is required because code in do_streamcopy() rely on
frame_number.

Should fix Ticket6227

Reviewed-by: James Almer <jamrial@gmail.com>
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-05-03 01:47:32 +07:00
Muhammad Faiz 9b4648a2cd avcodec/decode: do not treat discarded frames as eof when draining
Fix fate failures:
    make fate-mov THREADS=32

Reviewed-by: wm4 <nfxjfg@googlemail.com>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-05-03 01:31:48 +07:00
Muhammad Faiz d535e0c140 avcodec/pthread_frame, decode: allow errors to happen on draining
So, all frames and errors are correctly reported in order.
Also limit the numbers of error during draining to prevent infinite loop.

This fix fate failure with THREADS>=4:
  make fate-h264-attachment-631 THREADS=4
This also reverts a755b725ec.

Suggested-by: wm4, Ronald S. Bultje, Marton Balint
Reviewed-by: w4 <nfxjfg@googlemail.com>
Reviewed-by: Ronald S. Bultje <rsbultje@gmail.com>
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-04-30 05:48:21 +07:00
Muhammad Faiz e061826eb2 avfilter/lavfutils: use image2pipe demuxer on ff_load_image
allow protocols other than file to be used
for example, use data protocol to embed a file in script

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-04-29 01:23:25 +07:00
Muhammad Faiz cdd3048134 tests: do not use AVFrame accessor
Reviewed-by: wm4 <nfxjfg@googlemail.com>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-04-23 14:47:54 +07:00
Muhammad Faiz 327a1c0dee examples: do not use AVFrame accessor
Reviewed-by: wm4 <nfxjfg@googlemail.com>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-04-23 14:43:51 +07:00
Muhammad Faiz 8893c943a9 ff*: do not use AVFrame accessor
Reviewed-by: wm4 <nfxjfg@googlemail.com>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-04-23 14:43:31 +07:00
Muhammad Faiz 6af050d7d0 avfilter: do not use AVFrame accessor
Reviewed-by: wm4 <nfxjfg@googlemail.com>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-04-23 14:40:30 +07:00
Muhammad Faiz 8103c59522 avdevice: do not use AVFrame accessor
Reviewed-by: wm4 <nfxjfg@googlemail.com>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-04-23 14:35:08 +07:00
Muhammad Faiz 9f030ee00f avformat: do not use AVFrame accessor
Reviewed-by: wm4 <nfxjfg@googlemail.com>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-04-23 14:30:53 +07:00
Muhammad Faiz 31f61b0d4f avcodec: do not use AVFrame accessor
Reviewed-by: wm4 <nfxjfg@googlemail.com>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-04-23 14:27:47 +07:00
Muhammad Faiz 3408f46694 avfilter/avf_showcqt: add attack option
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-04-09 14:38:42 +07:00
Muhammad Faiz de1308429a swresample/x86/resample: extend resample_double to support avx and fma3
benchmark:
sse2 10.670s
avx   8.763s
fma3  8.380s

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-03-19 12:24:41 +07:00
Muhammad Faiz c52638cca2 swresample/swresample: do not use s32p internally by default when resampling
use fltp when doing s32 -> s32 resampling
because s32p has no simd optimization

benchmark:
old 17.913s
new  7.584s (use fma3)

Reviewed-by: wm4 <nfxjfg@googlemail.com>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-03-18 13:57:03 +07:00
Muhammad Faiz 3ba7b47d5c swresample/resample: do not assert compensation_distance on rebuild_filter
when set_compensation is called with zero sample_delta,
compensation does not happen (because dst_incr == ideal_dst_incr)
but compensation_distance is set

regression since 01ebb57c03

Found-by: wm4 <nfxjfg@googlemail.com>
Reviewed-by: wm4 <nfxjfg@googlemail.com>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-03-17 09:59:44 +07:00
Muhammad Faiz 1f7eb216b0 swresample/options: enable linear_interp and exact_rational by default
better quality without speedloss

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-03-17 00:08:03 +07:00
Muhammad Faiz 6c7a0876fe swresample/swresample: do not reset tsf on swr_alloc_set_opts
so tsf option in aresample will have effect
previously tsf/internal_sample_format had no effect

fate is updated
s32p previously used fltp internally
dblp previously used fltp/dblp internally

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-03-13 02:45:36 +07:00
Muhammad Faiz 0bab78f7e7 avfilter/af_firequalizer: add av_restrict on convolution func
slightly improved speed

Reviewed-by: wm4 <nfxjfg@googlemail.com>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-03-12 03:21:55 +07:00
Muhammad Faiz 53a5cea478 swresample/resample: do not allow odd filter_length
except filter_length == 1

odd filter_length gives worse frequency response,
even when compared with shorter filter_length

also makes build_filter simpler

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-03-09 13:09:14 +07:00
Muhammad Faiz fe57bf7cd6 fate/swresample: fix FUZZ typo
unintentionally changed to 0.01 at
'61926b6c3e560283ef6c015d6d85c32716942833'

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-03-08 21:51:02 +07:00
Muhammad Faiz 61926b6c3e swresample/resample: use uniform normalization
this gives better frequency response

update swresample fate and other fates
that depend on resampling

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-03-08 16:09:38 +07:00
Muhammad Faiz 776f289c0f avdevice/alldevices: make avdevice_register_all thread safe
use ff_thread_once

Suggested-by: wm4 <nfxjfg@googlemail.com>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-03-07 20:34:44 +07:00
Muhammad Faiz af7010ad05 avfilter/allfilters: make avfilter_register_all thread safe
use ff_thread_once

Suggested-by: wm4 <nfxjfg@googlemail.com>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-03-07 20:34:44 +07:00
Muhammad Faiz 49635f0a46 avfilter/allformats: make av_register_all thread safe
use ff_thread_once

Suggested-by: wm4 <nfxjfg@googlemail.com>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-03-07 20:34:44 +07:00
Muhammad Faiz e85e840880 avcodec/allcodecs: make avcodec_register_all thread safe
use ff_thread_once

Suggested-by: wm4 <nfxjfg@googlemail.com>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-03-07 20:34:44 +07:00
Muhammad Faiz c4a3526b57 avfilter/showcqt: make minimum timeclamp option lower
high basefreq does not require high timeclamp

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2017-01-30 05:41:49 +07:00
Muhammad Faiz 2b0112d42d swresample/resample: remove swri_resample function
integrate it inside multiple_resample
allow some calculations to be performed outside loop

Suggested-by: Michael Niedermayer <michael@niedermayer.cc>
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-12-14 06:48:34 +07:00
Muhammad Faiz 6a8c0d8357 swresample/resample: do not allow negative dst_size return value
This should fix Ticket6012

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-12-14 00:43:44 +07:00
Muhammad Faiz 01ebb57c03 swresample/resample: do not rebuild filter when sample_delta is zero
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-12-04 01:32:26 +07:00
Muhammad Faiz da34e4e132 swresample/soxr: fix invalid use of linear_interp
give very bad quality for soxr resampler.
linear_interp is intended for  using linear interpolation
between filter bank so quality will be better.

i guess this is misunderstood as 'do not use filter bank,
but directly interpolate linearly between samples'.

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-11-26 05:52:24 +07:00
Muhammad Faiz 06f94149c6 swresample/resample: optimize exact_rational=on:linear_interp=on case
separate dsp.resample to dsp.resample_common and dsp.resample_linear
and choose to call faster resample_common even when linear_interp=on
when c->frac and c->dst_incr_mod are both zero

speed up resampling when exact_rational and linear_interp are both
enabled because exact_rational force c->frac and c->dst_incr_mod to
be zero when soft compensation does not happen

benchmark on exact_rational=on:linear_interp=on
        old     new
real    8.432s  5.097s
user    7.679s  4.989s
sys     0.125s  0.107s

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-11-25 03:22:04 +07:00
Muhammad Faiz ebb4c783d0 fate/swresample: add resample exact_lin and exact_lin_async test
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-11-25 03:21:56 +07:00
Muhammad Faiz b4e9252ae3 avfilter/af_firequalizer: add fft2 option
2-channels convolution using complex fft
improves speed significantly

not sure if it should be enabled by default
so disable it by default

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-11-04 09:45:01 +07:00
Muhammad Faiz 0686537002 avfilter/avf_showcqt: add bar_t option
custom bargraph transparency

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-10-29 22:11:58 +07:00
Muhammad Faiz 258c49d614 avfilter/firequalizer: use zero phase kernel
this makes real-valued kernel

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-10-20 14:10:53 +07:00
Muhammad Faiz 56689a46b3 avfilter/showcqt: add cscheme option
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-10-20 14:10:43 +07:00
Muhammad Faiz 23b6f880d6 avfilter/firequalizer: add cubic_interpolate function on gain
smoother version of gain_interpolate

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-10-19 14:05:46 +07:00
Muhammad Faiz d3be186ed1 avfilter/firequalizer: add dumpfile and dumpscale option
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-10-18 22:41:43 +07:00
Muhammad Faiz acd74f9200 swresample/resample: fix return value of build_filter
return AVERROR code on error

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-10-18 22:36:01 +07:00
Muhammad Faiz 2c1be03cb3 fate: add swr-convertaudio test
test for flt to s16
should pass on correct rounding to nearest

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-10-18 14:45:07 +07:00
Muhammad Faiz 923488bdaa avfilter/showcqt: add font option
this is fontconfig pattern

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-10-18 00:47:57 +07:00
Muhammad Faiz 92de89d14a avfilter/firequalizer: optimize gain/gain_entry command
do not rebuild when gain/gain_entry command are
equal with old gain/gain_entry

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-10-18 00:47:42 +07:00
Muhammad Faiz 1a9513bfbc avfilter/firequalizer: add scale option
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-10-17 03:17:50 +07:00
Muhammad Faiz 8e53c1567c doc/filters: document tukey window on firequalizer
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-10-16 05:54:34 +07:00
Muhammad Faiz 01ab60201b avfilter/firequalizer: add tukey window
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-10-16 05:50:47 +07:00
Muhammad Faiz 7c5fca15bb avfilter/firequalizer: change WFUNC_MIN/MAX to NB_WFUNC
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-10-16 05:48:36 +07:00
Muhammad Faiz a11757d7cb avfilter/showcqt: add csp option
from colorspace filter

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-10-16 05:41:09 +07:00
Muhammad Faiz c593a70cda fate: add test for firequalizer filter
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-10-14 01:46:37 +07:00
Muhammad Faiz 47d2be3056 avfilter/firequalizer: fix blackman window calculation
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-10-10 02:27:31 +07:00
Muhammad Faiz 1b7eaead0c avfilter/showcqt: set some frame properties
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-06-24 15:33:16 +07:00
Muhammad Faiz 6031e5d1af swresample/x86: add support for exact_rational
phase_shift and phase_mask is removed
generally exact_rational=on is faster than exact_rational=off

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-06-21 05:18:21 +07:00
Muhammad Faiz 7f1b503ec2 swresample/resample: do not increase phase_count on exact_rational
high phase_count is only useful when dst_incr_mod is non zero
in other word, it is only useful on soft compensation

on init, it will build filter with low phase_count
but when soft compensation is enabled, rebuild filter
with high phase_count

this approach saves lots of memory

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-06-17 16:02:49 +07:00
Muhammad Faiz ee575acb8c swresample/resample: add support for odd phase_count
because exact_rational does not guarantee
that phase_count is even

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-06-17 16:00:13 +07:00
Muhammad Faiz f92b56de96 fate: add swr-resample_exact_async tests
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-06-16 00:21:39 +07:00
Muhammad Faiz 6602361295 avfilter/graphparser: remove '\n' from parse_filter
this allow a filter to be written like this:
aformat =
    sample_fmts  = fltp|flt:
    sample_rates = 44100|44800

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-06-13 16:17:53 +07:00
Muhammad Faiz 0b8dcb3349 doc/resampler: add exact_rational option
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-06-13 13:12:05 +07:00
Muhammad Faiz 241e250520 fate: add libswresample exact_rational test
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-06-13 12:36:09 +07:00
Muhammad Faiz b8c6e5a661 swresample: add exact_rational option
give high quality resampling
as good as with linear_interp=on
as fast as without linear_interp=on
tested visually with ffplay
ffplay -f lavfi "aevalsrc='sin(10000*t*t)', aresample=osr=48000, showcqt=gamma=5"
ffplay -f lavfi "aevalsrc='sin(10000*t*t)', aresample=osr=48000:linear_interp=on, showcqt=gamma=5"
ffplay -f lavfi "aevalsrc='sin(10000*t*t)', aresample=osr=48000:exact_rational=on, showcqt=gamma=5"

slightly speed improvement
for fair comparison with -cpuflags 0
audio.wav is ~ 1 hour 44100 stereo 16bit wav file
ffmpeg -i audio.wav -af aresample=osr=48000 -f null -
        old         new
real    13.498s     13.121s
user    13.364s     12.987s
sys      0.131s      0.129s

linear_interp=on
        old         new
real    23.035s     23.050s
user    22.907s     22.917s
sys      0.119s     0.125s

exact_rational=on
real    12.418s
user    12.298s
sys      0.114s

possibility to decrease memory usage if soft compensation is ignored

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-06-13 12:36:01 +07:00
Muhammad Faiz 2991d93520 avfilter/src_movie: call open_stream after guess_channel_layout
fix error 'Channel layout change is not supported' when
opening wav file

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-06-09 02:00:10 +07:00
Muhammad Faiz a096d3ec47 avfilter/avf_showcqt: set range on fps/rate/r option
see Ticket #5618

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-06-09 01:16:26 +07:00
Muhammad Faiz 1e69ac9246 avfilter/avf_showcqt: cqt_calc optimization on x86
on x86_64:
        time    PSNR
plain   3.303   inf
SSE     1.649   107.087535
SSE3    1.632   107.087535
AVX     1.409   106.986771
FMA3    1.265   107.108437

on x86_32 (PSNR compared to x86_64 plain):
        time    PSNR
plain   7.225   103.951979
SSE     1.827   105.859282
SSE3    1.819   105.859282
AVX     1.533   105.997661
FMA3    1.384   105.885377

FMA4 test is not available

Reviewed-by: James Almer <jamrial@gmail.com>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-06-08 16:09:43 +07:00
Muhammad Faiz 77d4dfbec6 avfilter/af_firequalizer: add zero_phase option
simply by substracting pts to compensate delay
also handle AV_NOPTS_VALUE

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-06-07 07:55:48 +07:00
Muhammad Faiz 1e6a0c9d14 avfilter/avf_showcqt: render default font at 960x16
and let ffmpeg scaler scale it
this impoves quality

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-06-04 14:05:04 +07:00
Muhammad Faiz 1b05521bb7 avfilter/avf_showcqt: full chroma blending on draw_axis_yuv
improve quality on axis drawing with yuv422p and yuv420p format

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-06-02 16:14:16 +07:00
Muhammad Faiz defab0825f avfilter/src_movie: add various commands
add seek command
add get_duration command

Update to codecpar by commiter

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-05-25 17:19:41 +02:00
Muhammad Faiz 1d4400ac7f avfilter/graphparser: add '\r' as whitespace
for compatibility with platforms that treat it
as newline

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-05-06 07:37:12 +07:00
Muhammad Faiz 83065939cb avutil/parsing: add '\r' as whitespace
for compatibility with platforms that treat it
as newline

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-05-06 07:35:45 +07:00
Muhammad Faiz d2f73c3daf avfilter/avf_showcqt: add . 2016-05-05 14:03:32 +07:00
Muhammad Faiz fd0c9789cf avfilter/avf_showcqt: add performance debugging log
for easier development

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-03-08 20:50:26 +07:00
Muhammad Faiz 7dd60a0b54 avfilter/avf_showcqt: remove CoeffsType
seems not useful

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-03-06 16:36:37 +07:00
Muhammad Faiz d1401cb1d0 avfilter/avf_showcqt: optimize draw routines
optimize draw_bar_yuv (slightly faster)
optimize draw_axis (about 2x faster)

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-02-29 16:06:39 +07:00
Muhammad Faiz 6eb4021d47 avfilter/avf_showcqt: use lrint
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-02-23 22:14:08 +07:00
Muhammad Faiz 76377d66b7 avfilter/avf_showcqt: remove unneeded headers 2016-02-23 01:05:08 +07:00
Muhammad Faiz bfc61b0fcc avfilter: add firequalizer filter
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-02-23 00:44:07 +07:00
Muhammad Faiz 7c11e727f6 avfilter/avf_showcqt: improve pts handling
correct output pts based on input pts
make seeking possible
output frame one by one on eof
tested with showinfo filter

Suggested-by: Paul B Mahol <onemda@gmail.com>
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-02-17 16:13:09 +01:00
Muhammad Faiz 54ed3ebbe4 avfilter/showcqt: BASEFREQ and ENDFREQ cast to double
fix default basefreq/endfreq comparison
on platform that does not do comparison
in double type

found on zeranoe 32-bit build, where
default freq range is detected as non-default

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-12-07 01:28:48 +01:00
Muhammad Faiz 6df2c94130 avfilter/showcqt: remove yuv offset
this makes draw_bar faster
slightly different result with old version

check result (with ~3 minutes audio file):
old:
    real    0m49.611s
    user    0m49.260s
    sys     0m0.073s
new:
    real    0m47.606s
    user    0m47.378s
    sys     0m0.068s
PSNR between old and new:
yuv444p PSNR
    y:109.519298 u:107.506485 v:104.746878
    average:106.816074 min:99.167305 max:inf
yuv422p PSNR
    y:109.519298 u:108.025801 v:104.489734
    average:107.279817 min:98.007467 max:inf
yuv420p PSNR
    y:109.519298 u:108.363875 v:105.290200
    average:108.261511 min:97.461812 max:inf

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-11-03 23:47:09 +01:00
Muhammad Faiz 306808f10f avfilter/showcqt: fix dependency with avformat
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-30 22:45:46 +01:00
Muhammad Faiz f8d429e0c5 avfilter/avf_showcqt: rewrite showcqt and add features
add yuv444p, yuv422p, and yuv420p output format (lower cpu usage
on ffplay playback because it does not do format conversion)
custom size with size/s option (fullhd option is deprecated)
custom layout with bar_h, axis_h, and sono_h option
support rational frame rate (within fps/r/rate option)
relaxed frame rate restriction (support fractional sample step)
support all input sample rates
separate sonogram and bargraph volume (with volume/sono_v and
volume2/bar_v)
timeclamp option alias (timeclamp/tc)
fcount option
gamma option alias (gamma/sono_g and gamma2/bar_g)
support custom frequency range (basefreq and endfreq)
support drawing axis using external image file (axisfile option)
alias for disabling drawing to axis (text/axis)
possibility to optimize it using arch specific asm code

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-28 02:30:03 +01:00
Muhammad Faiz 5b48dd75d5 avfilter/avf_showcqt: use frequency domain windowing
faster initialization and less code
slightly different result computationally from previous
coeffclamp option is ignored

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-09-18 18:27:18 +02:00