- 11 Oct, 2015 16 commits
-
-
Ganesh Ajjanagadde authored
Removes unnecessary isatty(), fixes Ticket2964 Signed-off-by:
Ganesh Ajjanagadde <gajjanagadde@gmail.com> Signed-off-by:
Ronald S. Bultje <rsbultje@gmail.com>
-
Claudio Freire authored
Reindent
-
Claudio Freire authored
This finalizes merging of the work in the patches in ticket #2686. Improvements to twoloop and RC logic are extensive. The non-exhaustive list of twoloop improvments includes: - Tweaks to distortion limits on the RD optimization phase of twoloop - Deeper search in twoloop - PNS information marking to let twoloop decide when to use it (turned out having the decision made separately wasn't working) - Tonal band detection and priorization - Better band energy conservation rules - Strict hole avoidance For rate control: - Use psymodel's bit allocation to allow proper use of the bit reservoir. Don't work against the bit reservoir by moving lambda in the opposite direction when psymodel decides to allocate more/less bits to a frame. - Retry the encode if the effective rate lies outside a reasonable margin of psymodel's allocation or the selected ABR. - Log average lambda at the end. Useful info for everyone, but especially for tuning of the various encoder constants that relate to lambda feedback. Psy: - Do not apply lowpass with a FIR filter, instead just let the coder zero bands above the cutoff. The FIR filter induces group delay, and while zeroing bands causes ripple, it's lost in the quantization noise. - Experimental VBR bit allocation code - Tweak automatic lowpass filter threshold to maximize audio bandwidth at all bitrates while still providing acceptable, stable quality. I/S: - Phase decision fixes. Unrelated to #2686, but the bugs only surfaced when the merge was finalized. Measure I/S band energy accounting for phase, and prevent I/S and M/S from being applied both. PNS: - Avoid marking short bands with PNS when they're part of a window group in which there's a large variation of energy from one window to the next. PNS can't preserve those and the effect is extremely noticeable. M/S: - Implement BMLD protection similar to the specified in ISO-IEC/13818:7-2003, Appendix C Section 6.1. Since M/S decision doesn't conform to section 6.1, a different method had to be implemented, but should provide equivalent protection. - Move the decision logic closer to the method specified in ISO-IEC/13818:7-2003, Appendix C Section 6.1. Specifically, make sure M/S needs less bits than dual stereo. - Don't apply M/S in bands that are using I/S Now, this of course needed adjustments in the compare targets and fuzz factors of the AAC encoder's fate tests, but if wondering why the targets go up (more distortion), consider the previous coder was using too many bits on LF content (far more than required by psy), and thus those signals will now be more distorted, not less. The extra distortion isn't audible though, I carried extensive ABX testing to make sure. A very similar patch was also extensively tested by Kamendo2 in the context of #2686.
-
Ganesh Ajjanagadde authored
This adds av_warn_unused_result whenever it is relevant. Signed-off-by:
Ganesh Ajjanagadde <gajjanagadde@gmail.com> Signed-off-by:
Ronald S. Bultje <rsbultje@gmail.com>
-
Jean-Yves Avenard authored
Fixes Ticket4922. Commit 06010238 broke configure, since the inversion ! was missed while converting the grep to a case statement. Reviewed-by:
Nicolas George <george@nsup.org> Reviewed-by:
Timothy Gu <timothygu99@gmail.com> Signed-off-by:
Ganesh Ajjanagadde <gajjanagadde@gmail.com>
-
James Almer authored
Reviewed-by:
Paul B Mahol <onemda@gmail.com> Signed-off-by:
James Almer <jamrial@gmail.com>
-
Paul B Mahol authored
Signed-off-by:
Paul B Mahol <onemda@gmail.com>
-
Paul B Mahol authored
It appears that Xbox ADPCM is same as WAV adpcm. Signed-off-by:
Paul B Mahol <onemda@gmail.com>
-
Michael Niedermayer authored
Suggested-by: ubitux Signed-off-by:
Michael Niedermayer <michael@niedermayer.cc>
-
Michael Niedermayer authored
Fixes: CID1322305 and CID1322304 Signed-off-by:
Michael Niedermayer <michael@niedermayer.cc>
-
Clément Bœsch authored
-
Michael Niedermayer authored
Avoids memleak on error Fixes CID1322342 Signed-off-by:
Michael Niedermayer <michael@niedermayer.cc>
-
Michael Niedermayer authored
Revert "Merge commit '8b830ee9'" (avconv: Do not try to configure filter outputs without streams) FFmpeg already tests for this case in configure_output_filter() and printed a clearer error message example: ./ffmpeg -f lavfi -i color -f lavfi -i color -filter_complex "[1]null[x],[0][1]overlay" -f null - before the merge / after the revert: Filter null has a unconnected output after the merge / before the revert: Output pad "default" with type video of the filter instance "Parsed_null_0" of null not connected to any destination Error configuring complex filters. Invalid argument This reverts commit 3e3779cd, reversing changes made to 0b28039a. Reviewed-by:
Ganesh Ajjanagadde <gajjanag@mit.edu>
-
Michael Niedermayer authored
This reduces the memory & cache need from 256 to 64 bytes the code also seems faster with this change Signed-off-by:
Michael Niedermayer <michael@niedermayer.cc>
-
Ganesh Ajjanagadde authored
This uses Stein's binary GCD algorithm: https://en.wikipedia.org/wiki/Binary_GCD_algorithm to get a roughly 4x speedup over Euclidean GCD on standard architectures with a compiler intrinsic for ctzll, and a roughly 2x speedup otherwise. At the moment, the compiler intrinsic is used on GCC and Clang due to its easy availability. Quick note regarding overflow: yes, subtractions on int64_t can, but the llabs takes care of that. The llabs is also guaranteed to be safe, with no annoying INT64_MIN business since INT64_MIN being a power of 2, is shifted down before being sent to llabs. The binary GCD needs ff_ctzll, an extension of ff_ctz for long long (int64_t). On GCC, this is provided by a built-in. On Microsoft, there is a BitScanForward64 analog of BitScanForward that should work; but I can't confirm. Apparently it is not available on 32 bit builds; so this may or may not work correctly. On Intel, per the documentation there is only an intrinsic for _bit_scan_forward and people have posted on forums regarding _bit_scan_forward64, but often their documentation is woeful. Again, I don't have it, so I can't test. As such, to be safe, for now only the GCC/Clang intrinsic is added, the rest use a compiled version based on the De-Bruijn method of Leiserson et al: http://supertech.csail.mit.edu/papers/debruijn.pdf. Tested with FATE, sample benchmark (x86-64, GCC 5.2.0, Haswell) with a START_TIMER and STOP_TIMER in libavutil/rationsl.c, followed by a make fate. aac-am00_88.err: builtin: 714 decicycles in av_gcd, 4095 runs, 1 skips de-bruijn: 1440 decicycles in av_gcd, 4096 runs, 0 skips previous: 2889 decicycles in av_gcd, 4096 runs, 0 skips Signed-off-by:
Ganesh Ajjanagadde <gajjanagadde@gmail.com> Signed-off-by:
Michael Niedermayer <michael@niedermayer.cc>
-
Michael Niedermayer authored
Fixes CID1322359, CID1322358 Signed-off-by:
Michael Niedermayer <michael@niedermayer.cc>
-
- 10 Oct, 2015 24 commits
-
-
Ganesh Ajjanagadde authored
Proper names should be capitalized in all user facing API as far as possible. The option names themselves have not been changed since: 1. We consistently keep option names in lower case. 2. Changing them would break existing scripts. 3. I suspect that we want to be similar to Sox and its relevant options. The converse is also true: improper names should not be capitalized generally. Signed-off-by:
Ganesh Ajjanagadde <gajjanagadde@gmail.com> Signed-off-by:
Michael Niedermayer <michael@niedermayer.cc>
-
Ganesh Ajjanagadde authored
During a build, a lot of *.o.-hash files are created - had not noticed this as they are usually dumped in tmpfs on Linux. However, they sometimes are present during a long build in the project directory, making it annoying to commit while the project is being built. These have been observed with Clang, -fsanitize-undefined on Arch Linux, though other configurations may also generate such temporaries. The solution here is on lines with the Linux kernel's .gitignore: https://github.com/torvalds/linux/blob/master/.gitignore. Signed-off-by:
Ganesh Ajjanagadde <gajjanagadde@gmail.com> Signed-off-by:
Michael Niedermayer <michael@niedermayer.cc>
-
Ganesh Ajjanagadde authored
Proper names should be capitalized in all user facing API as far as possible. The option names themselves have not been changed since: 1. We consistently keep option names in lower case. 2. Changing them would break existing scripts. The converse is also true: improper names should not be capitalized generally. Signed-off-by:
Ganesh Ajjanagadde <gajjanagadde@gmail.com> Signed-off-by:
Michael Niedermayer <michael@niedermayer.cc>
-
Zhang Rui authored
Signed-off-by:
Michael Niedermayer <michael@niedermayer.cc>
-
Zhang Rui authored
av_fifo_generic_write() does not return any error code. Signed-off-by:
Michael Niedermayer <michael@niedermayer.cc>
-
Paul B Mahol authored
Signed-off-by:
Paul B Mahol <onemda@gmail.com>
-
Rodger Combs authored
-
Paul B Mahol authored
Signed-off-by:
Paul B Mahol <onemda@gmail.com>
-
Ganesh Ajjanagadde authored
Signed-off-by:
Ganesh Ajjanagadde <gajjanagadde@gmail.com>
-
Ganesh Ajjanagadde authored
Signed-off-by:
Ganesh Ajjanagadde <gajjanagadde@gmail.com>
-
Ganesh Ajjanagadde authored
This should fix the undefined behavior reported in: https://trac.ffmpeg.org/ticket/4727. I can reproduce this at runtime: simply stick in an abort call in asym_quant to check if c < 0 and run FATE. I don't know ac3 so I can't confirm if negative coefficients are intentional, but at the moment they clearly are according to FATE. This resolves the undefined behavior. Tested with FATE. Signed-off-by:
Ganesh Ajjanagadde <gajjanagadde@gmail.com> Signed-off-by:
Michael Niedermayer <michael@niedermayer.cc>
-
Hendrik Leppkes authored
* commit 'c3e5c47b': libopenh264enc: Added max_nal_size option Merged-by:
Hendrik Leppkes <h.leppkes@gmail.com>
-
Hendrik Leppkes authored
* commit '00cc10ae': asfdec: do not skip padding if offset is above packet size - padding Merged-by:
Hendrik Leppkes <h.leppkes@gmail.com>
-
Hendrik Leppkes authored
* commit 'a8956eca': cabac: Make CABAC states hardcoded Merged-by:
Hendrik Leppkes <h.leppkes@gmail.com>
-
Anton Khirnov authored
There's not much reason to generate such a small table at runtime. Signed-off-by:
Derek Buitenhuis <derek.buitenhuis@gmail.com>
-
Derek Buitenhuis authored
This becomes unuseful in the following commit. This reverts commit 092d1977. Signed-off-by:
Derek Buitenhuis <derek.buitenhuis@gmail.com>
-
Hendrik Leppkes authored
* commit '2830bce4': w32pthreads: Load dynamically loaded functions on demand Merged-by:
Hendrik Leppkes <h.leppkes@gmail.com>
-
Hendrik Leppkes authored
* commit 'b22693b0': w32pthreads: Add pthread_once emulation Merged-by:
Hendrik Leppkes <h.leppkes@gmail.com>
-
Hendrik Leppkes authored
* commit '8b830ee9': avconv: Do not try to configure filter outputs without streams Merged-by:
Hendrik Leppkes <h.leppkes@gmail.com>
-
Hendrik Leppkes authored
* commit 'd7a5a178': configure: When disabling a library disable all the related components Merged-by:
Hendrik Leppkes <h.leppkes@gmail.com>
-
Hendrik Leppkes authored
* commit '58b42345': dcadec: reorganise context data Merged-by:
Hendrik Leppkes <h.leppkes@gmail.com>
-
Hendrik Leppkes authored
* commit '3a4d369e': g2m: Relax resolution change constraints Merged-by:
Hendrik Leppkes <h.leppkes@gmail.com>
-
James Almer authored
p1 and p2 are int32_t. Reviewed-by:
Ronald S. Bultje <rsbultje@gmail.com> Signed-off-by:
James Almer <jamrial@gmail.com>
-
Rodger Combs authored
Fixes trac #3842
-