summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* avcodec/huffyuvdsp: use an actual unsigned long constantJames Almer2017-02-19
| | | | | Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: James Almer <jamrial@gmail.com>
* avcodec/wavpacl: Fix runtime error: left shift of negative value -1Michael Niedermayer2017-02-19
| | | | | | | Fixes: 607/clusterfuzz-testcase-5108792465293312 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/targets/ffmpeg Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avcodec/flac: Fix several integer overflowsMichael Niedermayer2017-02-19
| | | | | | Fixes: 686513-media Found-by: Matt Wolenetz <wolenetz@google.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* Factor CHECKED out of DEBUG so it can be set seperatlyMichael Niedermayer2017-02-19
| | | | | Suggested-by: Matt Wolenetz <wolenetz@google.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avcodec/pngdec: Store metadata directly into AVFrameMichael Niedermayer2017-02-19
| | | | | | | | Fixes memleak Fixes: 500/clusterfuzz-testcase-6315221727576064 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/targets/ffmpeg Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/utils: Also fill dts==RELATIVE_TS_BASE packets in ↵Michael Niedermayer2017-02-19
| | | | | | | | | | | | update_initial_durations() This dts value can end up in the list in the absence of durations and is in that case semantically identical to AV_NOPTS_VALUE. We can alternatively prevent storing RELATIVE_TS_BASE if there is no duration. Fixes Ticket3640 Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avcodec/mpeg12dec: Provide debug level log on skiped P/B framesMichael Niedermayer2017-02-19
| | | | Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avcodec/h264: sse2, avx h luma mbaff deblock/loop filterJames Darnley2017-02-18
| | | | | | | | | | | | | | x86-64 only Yorkfield: - sse2: ~2.17x (434 vs. 200 cycles) Nehalem: - sse2: ~2.94x (409 vs. 139 cycles) Skylake: - sse2: ~3.10x (370 vs. 119 cycles) - avx: ~3.29x (370 vs. 112 cycles)
* x86util: import MOVHL macroJames Darnley2017-02-18
| | | | | | | | | | Originally committed to x264 in 1637239a by Henrik Gramner who has agreed to re-license it as LGPL. Original commit message follows. x86: Avoid some bypass delays and false dependencies A bypass delay of 1-3 clock cycles may occur on some CPUs when transitioning between int and float domains, so try to avoid that if possible.
* avcodec/h264: add named parameters to x86 functionJames Darnley2017-02-18
|
* avcodec/x86: deduplicate PASS8ROWS macroJames Darnley2017-02-18
|
* tests/fate/hevc: remove vsync drop from where it is not needed anymoreMichael Niedermayer2017-02-18
| | | | Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avcodec/cuvid: add drop_second_field as input optionMiroslav Slugeň2017-02-18
| | | | Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
* avcodec/cuvid: don't overwrite deinterlace at progressive inputMiroslav Slugeň2017-02-18
| | | | | | | If there is progressive input it will disable deinterlacing in cuvid for all future frames even those interlaced. Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
* avformat/m4vdec: Detect raw mpeg4video with unidentified non mpeg headers ↵Michael Niedermayer2017-02-18
| | | | | | | | | | | with a very low score Fixes Ticket 6018 This fixes a regression, and allows playback of files containing mpeg4video that are otherwise not supported Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/hlsenc: set default http method to PUT when method is nullSteven Liu2017-02-18
| | | | | | | | | | When the http method is not set, the method will use POST for ts, PUT for m3u8, it is not unify, now set it unify. This ticket id: #5315 Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Reviewed-by: Moritz Barsnick <barsnick@gmx.net> Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
* opusenc: initialize the emphasis coefficients on initRostislav Pehlivanov2017-02-18
| | | | Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
* lavf/riff: Support decoding files with broken mediasubtype base guid.Thierry Foucu2017-02-17
| | | | Fixes ticket #6100.
* avcodec/opus: Check count of ambisonic channelsMichael Niedermayer2017-02-17
| | | | | | | https://tools.ietf.org/html/draft-ietf-codec-ambisonics-01#section-3.1 specifies the maximum as 227 Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* libopus: decode ambisonics with non-diegetic sourcesFelicia2017-02-17
| | | | | | | | | | | Channel mapping 2 additionally supports a non-diegetic stereo track appended to the end of a full-order ambisonics signal, such that the total channel count is either (n + 1) ^ 2, or (n + 1) ^ 2 + 2 where n is the ambisonics order Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avcodec/fmvc: fix decoding of odd size videosPaul B Mahol2017-02-17
| | | | Signed-off-by: Paul B Mahol <onemda@gmail.com>
* lavc/avpacket: Initialize a variable in error path.Carl Eugen Hoyos2017-02-17
| | | | | | Fixes ticket #6153. Tested-by: Tyson Smith
* wmaprodec: fix leaking fdsp on init failureAndreas Cadhalpun2017-02-17
| | | | | Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
* mpegaudiodec_template: fix leaking fdsp for mp3on4floatAndreas Cadhalpun2017-02-17
| | | | | Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
* vaapi_vp8: Use VP8_MAX_QUANT instead of magic numberMark Thompson2017-02-17
|
* doc: correct order of options for channelmap filterMulvya2017-02-16
| | | | Signed-off-by: Mulvya <mulvya@gmail.com>
* Changelog: add entry for the native Opus encoderRostislav Pehlivanov2017-02-16
| | | | Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
* avcodec/opusenc: Add () protecting macro argumentsMichael Niedermayer2017-02-16
| | | | Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avcodec/error_resilience: Fix "assignment from incompatible pointer type" ↵Michael Niedermayer2017-02-16
| | | | | | warning Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* lavc/vda_h264_dec.c Fix NULL pointer dereferencePavel Koshevoy2017-02-16
| | | | | | ps.sps_list entries may be NULL, so check before dereferencing Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* swr/aarch64: add missing ret to ff_resample_common_apply_filter_x8_float_neonMatthieu Bouron2017-02-16
|
* configure: add missing mdct15 dependencyJames Almer2017-02-16
|
* configure: remove unnecessary opus encoder dependencyJames Almer2017-02-16
| | | | audiodsp is not used by the encoder.
* opusenc: fix coarse energy quantization with 2 bits leftRostislav Pehlivanov2017-02-15
| | | | | | Fixes CID1400584 Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
* opus_pvq: fix uninitialized variable usageRostislav Pehlivanov2017-02-15
| | | | | | Fixes CID1400586 Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
* doc: correct table end for metadata filterMulvya2017-02-15
| | | | Signed-off-by: Mulvya <mulvya@gmail.com>
* adpcm: fix clipping for yamahaPaul B Mahol2017-02-15
| | | | | | | According to specification max value allowed is 0x6000. Fixes #5862. Signed-off-by: Paul B Mahol <onemda@gmail.com>
* avcodec/h264_sei: Check actual presence of SEI picture timing instead of ↵Michael Niedermayer2017-02-15
| | | | | | implying it Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/dashenc: Only use temporary files when outputting to file protocolThomas Stephens2017-02-14
| | | | | | | | | Skips using temporary files when outputting to a protocol other than "file", which enables dash to output content over network protocols. The logic has been copied from the HLS format. Reviewed-by: Steven Liu <lingjiujianke@gmail.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avcodec/hevc_parser: export framerate, remove one dependency on the decoderMichael Niedermayer2017-02-14
| | | | | | Fixes Ticket6090 Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* HTTP: improve performance by reducing forward seeksJoel Cunningham2017-02-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit optimizes HTTP performance by reducing forward seeks, instead favoring a read-ahead and discard on the current connection (referred to as a short seek) for seeks that are within a TCP window's worth of data. This improves performance because with TCP flow control, a window's worth of data will be in the local socket buffer already or in-flight from the sender once congestion control on the sender is fully utilizing the window. Note: this approach doesn't attempt to differentiate from a newly opened connection which may not be fully utilizing the window due to congestion control vs one that is. The receiver can't get at this information, so we assume worst case; that full window is in use (we did advertise it after all) and that data could be in-flight The previous behavior of closing the connection, then opening a new with a new HTTP range value results in a massive amounts of discarded and re-sent data when large TCP windows are used. This has been observed on MacOS/iOS which starts with an initial window of 256KB and grows up to 1MB depending on the bandwidth-product delay. When seeking within a window's worth of data and we close the connection, then open a new one within the same window's worth of data, we discard from the current offset till the end of the window. Then on the new connection the server ends up re-sending the previous data from new offset till the end of old window. Example (assumes full window utilization): TCP window size: 64KB Position: 32KB Forward seek position: 40KB * (Next window) 32KB |--------------| 96KB |---------------| 160KB * 40KB |---------------| 104KB Re-sent amount: 96KB - 40KB = 56KB For a real world test example, I have MP4 file of ~25MB, which ffplay only reads ~16MB and performs 177 seeks. With current ffmpeg, this results in 177 HTTP GETs and ~73MB worth of TCP data communication. With this patch, ffmpeg issues 4 HTTP GETs and 3 seeks for a total of ~22MB of TCP data communication. To support this feature, the short seek logic in avio_seek() has been extended to call a function to get the short seek threshold value. This callback has been plumbed to the URLProtocol structure, which now has infrastructure in HTTP and TCP to get the underlying receiver window size via SO_RCVBUF. If the underlying URL and protocol don't support returning a short seek threshold, the default s->short_seek_threshold is used This feature has been tested on Windows 7 and MacOS/iOS. Windows support is slightly complicated by the fact that when TCP window auto-tuning is enabled, SO_RCVBUF doesn't report the real window size, but it does if SO_RCVBUF was manually set (disabling auto-tuning). So we can only use this optimization on Windows in the later case Signed-off-by: Joel Cunningham <joel.cunningham@me.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avcodec/cuvid: add format mismatch debug logsTimo Rothenpieler2017-02-14
|
* avcodec/cuvid: set width and height before calling get_formatTimo Rothenpieler2017-02-14
| | | | | The external hw_frames_ctx is initialized in that callback, and needs that information to be accurate.
* avcodec/cuvid: update hw_frames_ctx reference after get_format callTimo Rothenpieler2017-02-14
|
* avcodec/nvenc: push cuda context before encoding a frameTimo Rothenpieler2017-02-14
| | | | Thanks to Miroslav Slugeň for figuring out what was going on here.
* MAINTAINERS: add myself as mdct/opus maintainerRostislav Pehlivanov2017-02-14
| | | | Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
* doc/encoders: add documentation for the Opus encoderRostislav Pehlivanov2017-02-14
| | | | Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
* opus: add a native Opus encoderRostislav Pehlivanov2017-02-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This marks the first time anyone has written an Opus encoder without using any libopus code. The aim of the encoder is to prove how far the format can go by writing the craziest encoder for it. Right now the encoder's basic, it only supports CBR encoding, however internally every single feature the CELT layer has is implemented (except the pitch pre-filter which needs to work well with the rest of whatever gets implemented). Psychoacoustic and rate control systems are under development. The encoder takes in frames of 120 samples and depending on the value of opus_delay the plan is to use the extra buffered frames as lookahead. Right now the encoder will pick the nearest largest legal frame size and won't use the lookahead, but that'll change once there's a psychoacoustic system. Even though its a pretty basic encoder its already outperforming any other native encoder FFmpeg has by a huge amount. The PVQ search algorithm is faster and more accurate than libopus's algorithm so the encoder's performance is close to that of libopus at zero complexity (libopus has more SIMD). The algorithm might be ported to libopus or other codecs using PVQ in the future. The encoder still has a few minor bugs, like desyncs at ultra low bitrates (below 9kbps with 20ms frames). Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
* opus_celt: rename structures to better names and reorganize themRostislav Pehlivanov2017-02-14
| | | | | | | | | | | | | | | | | | | | This is meant to be applied on top of my previous patch which split PVQ into celt_pvq.c and made opus_celt.h Essentially nothing has been changed other than renaming CeltFrame to CeltBlock (CeltFrame had absolutely nothing at all to do with a frame) and CeltContext to CeltFrame. 3 variables have been put in CeltFrame as they make more sense there rather than being passed around as arguments. The coefficients have been moved to the CeltBlock structure (why the hell were they in CeltContext and not in CeltFrame??). Now the encoder would be able to use the exact context the decoder uses (plus a couple of extra fields in there). FATE passes, no slowdowns, etc. Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
* opus_celt: move quantization and band decoding to opus_pvq.cRostislav Pehlivanov2017-02-14
| | | | | | | | | | | | | | A huge amount can be reused by the encoder, as the only thing which needs to be done would be to add a 10 line celt_icwrsi, a wrapper around it (celt_alg_quant) and templating the ff_celt_decode_band to replace entropy decoding functions with entropy encoding. There is no performance loss but in fact a performance gain of around 6% which is caused by the compiler being able to optimize the decoding more efficiently. Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>