summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* hwcontext_qsv: support frame mappingAnton Khirnov2016-11-071-0/+37
| | | | Signed-off-by: Maxym Dmytrychenko <maxym.dmytrychenko@intel.com>
* hwcontext_qsv: transfer data through the child context when VPP failsAnton Khirnov2016-11-071-0/+40
| | | | | | | | Uploading/downloading data through VPP may not work for some formats, in that case we can still try to call av_hwframe_transfer_data() on the child context. Signed-off-by: Maxym Dmytrychenko <maxym.dmytrychenko@intel.com>
* hwcontext_qsv: do not fail when download/upload VPP session creation failsAnton Khirnov2016-11-071-2/+14
| | | | | | | Certain pixel formats (e.g. P8) might not be supported for download/upload through VPP operations, but can still be used otherwise. Signed-off-by: Maxym Dmytrychenko <maxym.dmytrychenko@intel.com>
* hwcontext_qsv: add support for the P8 formatAnton Khirnov2016-11-071-0/+1
| | | | | | | | | | | | When using GPU surfaces with QSV, one needs to supply a frame allocator, which will be invoked to pass surface pools to libmfx. For encoding, this allocator gets invoked not only for the pool of input frames, but also for a separate pool of (apparently) reconstructed frames and another pool of MFX_FOURCC_P8, which on Windows needs to return D3DFMT_P8 D3D surfaces. Those are probably used to store the encoded bitstream on the GPU. Signed-off-by: Maxym Dmytrychenko <maxym.dmytrychenko@intel.com>
* hwcontext_dxva2: add support for the P8 formatAnton Khirnov2016-11-071-2/+18
| | | | | | | This format is used internally by the QSV encoder to store the encoded bitstream. Signed-off-by: Maxym Dmytrychenko <maxym.dmytrychenko@intel.com>
* hwcontext_dxva2: frame mapping supportAnton Khirnov2016-11-071-21/+68
| | | | Signed-off-by: Maxym Dmytrychenko <maxym.dmytrychenko@intel.com>
* dxva2: fix surface selection when compiled with both d3d11va and dxva2Hendrik Leppkes2016-11-071-1/+2
| | | | | | | Fixes a regression introduced in be630b1e08ebe8f766b1798accd6b8e5e096f5aa Signed-off-by: Anton Khirnov <anton@khirnov.net>
* libx265: Add option to force IDR framesDerek Buitenhuis2016-11-072-2/+5
| | | | | | | This is in the same the same vein as 380146924ecad2e05e9dcc5c3c2e1b5ba47c51e8. Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com> Signed-off-by: Martin Storsjö <martin@martin.st>
* x86: Drop stray semicolons after function definitionsDiego Biurrun2016-11-052-11/+11
| | | | | libavcodec/x86/rv40dsp_init.c:97:2: warning: ISO C does not allow extra ‘;’ outside of a function [-Wpedantic] libavcodec/x86/vp9dsp_init.c:94:40: warning: ISO C does not allow extra ‘;’ outside of a function [-Wpedantic]
* configure: Silence lld-link when getting the version numberMartin Storsjö2016-11-041-1/+1
| | | | | | | | | | | | In recent lld-link versions, this command prints the version to stdout, but also prints an error to stderr: $ lld-link -flavor gnu --version LLD 4.0.0 (trunk 285641) lld-link: error: no input files lld-link: error: target emulation unknown: -m or at least one .o file required Signed-off-by: Martin Storsjö <martin@martin.st>
* arm: vp9mc: Insert a literal pool at the middle of the fileMartin Storsjö2016-11-041-0/+1
| | | | | | | | | This fixes errors like this when building non-pic binaries with armv6 as baseline: Error: invalid literal constant: pool needs to be closer Signed-off-by: Martin Storsjö <martin@martin.st>
* hwcontext_vaapi: Frame mapping supportMark Thompson2016-11-031-41/+52
| | | | | Can map to any supported software format (using a GPU copy if it doesn't actually match the surface format underneath).
* lavfi: Hardware map filterMark Thompson2016-11-034-1/+338
| | | | | | | | | | | | Takes a frame associated with a hardware context as input and maps it to something else (another hardware frame or normal memory) for other processing. If the frame to map was originally in the target format (but mapped to something else), the original frame is output. Also supports mapping backwards, where only the output has a hardware context. The link immediately before will be supplied with mapped hardware frames which it can write directly into, and this filter then unmaps them back to the actual hardware frames.
* hwcontext: Hardware frame mappingMark Thompson2016-11-035-7/+365
| | | | | | | | | | Adds the new av_hwframe_map() function, which allows mapping between hardware frames and normal memory, along with internal support for implementing it. Also adds av_hwframe_ctx_create_derived(), for creating a hardware frames context associated with one device using frames mapped from another by some hardware-specific means.
* Drop unreachable break and return statementsDiego Biurrun2016-11-038-12/+0
|
* float_dsp: Have implementation match function pointer prototypeDiego Biurrun2016-11-031-1/+1
| | | | | libavutil/x86/float_dsp_init.c(144) : warning C4028: formal parameter 1 different from declaration libavutil/x86/float_dsp_init.c(144) : warning C4028: formal parameter 2 different from declaration
* dnxhdenc: Have function pointer prototype match implementationDiego Biurrun2016-11-031-2/+4
| | | | | libavcodec/dnxhdenc.c(326) : warning C4028: formal parameter 1 different from declaration libavcodec/dnxhdenc.c(329) : warning C4028: formal parameter 1 different from declaration
* pixblockdsp: Have function pointer prototype match implementationDiego Biurrun2016-11-031-2/+4
| | | | | | libavcodec/pixblockdsp.c(58) : warning C4028: formal parameter 1 different from declaration libavcodec/pixblockdsp.c(63) : warning C4028: formal parameter 1 different from declaration libavcodec/pixblockdsp.c(66) : warning C4028: formal parameter 1 different from declaration
* ituh263dec: Have function signature match across declaration and definitionDiego Biurrun2016-11-031-1/+5
| | | | | libavcodec/ituh263dec.c(215) : warning C4028: formal parameter 1 different from declaration libavcodec/ituh263dec.c(215) : warning C4028: formal parameter 2 different from declaration
* vf_hwupload_cuda: Fix build errorMark Thompson2016-11-031-1/+1
| | | | | | Broken by e3fb74f7f9a8f1895381355f40c92cac3c1023d9. Signed-off-by: Diego Biurrun <diego@biurrun.de>
* svq3: Drop unused function dctcoef_get()Diego Biurrun2016-11-031-5/+0
| | | | libavcodec/svq3.c:627:29: warning: unused function 'dctcoef_get' [-Wunused-function]
* intrax8: Have function signature match across declaration and definitionDiego Biurrun2016-11-031-1/+1
| | | | libavcodec/intrax8.c(776) : warning C4028: formal parameter 1 different from declaration
* options_table: Remove a now unnecessary include of config.hMartin Storsjö2016-11-031-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | The include of config.h was added in 2012 in 1d9c2dc8, due to the use of CONFIG_SNOW_ENCODER ifdefs within options_table.h. When the snow codec was dropped later (in a0c5917f8 in 2013), this include no longer served any purpose. options_table.h is included in builds for the host as well, when building documentation. config.h should not be included in code that is built for the host, since it can contain workarounds for the target compiler/environment, like adding a missing define of restrict, defining getenv(x) to NULL for environments that lack getenv. The seemingly innocent include reordering in 2025d37871 broke builds that have getenv(x) defined to NULL in config.h (Windows CE and Windows Phone/RT), since libavcodec/options_table.h include config.h, while libavformat/options_table.h end up bringing in more system headers, and those system headers can contain a proper definition of getenv, which clash with the getenv define in config.h. This was avoided earlier as long as libavformat/options_table.h (or avformat.h) was included before libavcodec/options_table.h. This fixes builds for Windows Phone/RT and CE. Signed-off-by: Martin Storsjö <martin@martin.st>
* arm: vp9: Add NEON optimizations of VP9 MC functionsMartin Storsjö2016-11-036-3/+913
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This work is sponsored by, and copyright, Google. The filter coefficients are signed values, where the product of the multiplication with one individual filter coefficient doesn't overflow a 16 bit signed value (the largest filter coefficient is 127). But when the products are accumulated, the resulting sum can overflow the 16 bit signed range. Instead of accumulating in 32 bit, we accumulate the largest product (either index 3 or 4) last with a saturated addition. (The VP8 MC asm does something similar, but slightly simpler, by accumulating each half of the filter separately. In the VP9 MC filters, each half of the filter can also overflow though, so the largest component has to be handled individually.) Examples of relative speedup compared to the C version, from checkasm: Cortex A7 A8 A9 A53 vp9_avg4_neon: 1.71 1.15 1.42 1.49 vp9_avg8_neon: 2.51 3.63 3.14 2.58 vp9_avg16_neon: 2.95 6.76 3.01 2.84 vp9_avg32_neon: 3.29 6.64 2.85 3.00 vp9_avg64_neon: 3.47 6.67 3.14 2.80 vp9_avg_8tap_smooth_4h_neon: 3.22 4.73 2.76 4.67 vp9_avg_8tap_smooth_4hv_neon: 3.67 4.76 3.28 4.71 vp9_avg_8tap_smooth_4v_neon: 5.52 7.60 4.60 6.31 vp9_avg_8tap_smooth_8h_neon: 6.22 9.04 5.12 9.32 vp9_avg_8tap_smooth_8hv_neon: 6.38 8.21 5.72 8.17 vp9_avg_8tap_smooth_8v_neon: 9.22 12.66 8.15 11.10 vp9_avg_8tap_smooth_64h_neon: 7.02 10.23 5.54 11.58 vp9_avg_8tap_smooth_64hv_neon: 6.76 9.46 5.93 9.40 vp9_avg_8tap_smooth_64v_neon: 10.76 14.13 9.46 13.37 vp9_put4_neon: 1.11 1.47 1.00 1.21 vp9_put8_neon: 1.23 2.17 1.94 1.48 vp9_put16_neon: 1.63 4.02 1.73 1.97 vp9_put32_neon: 1.56 4.92 2.00 1.96 vp9_put64_neon: 2.10 5.28 2.03 2.35 vp9_put_8tap_smooth_4h_neon: 3.11 4.35 2.63 4.35 vp9_put_8tap_smooth_4hv_neon: 3.67 4.69 3.25 4.71 vp9_put_8tap_smooth_4v_neon: 5.45 7.27 4.49 6.52 vp9_put_8tap_smooth_8h_neon: 5.97 8.18 4.81 8.56 vp9_put_8tap_smooth_8hv_neon: 6.39 7.90 5.64 8.15 vp9_put_8tap_smooth_8v_neon: 9.03 11.84 8.07 11.51 vp9_put_8tap_smooth_64h_neon: 6.78 9.48 4.88 10.89 vp9_put_8tap_smooth_64hv_neon: 6.99 8.87 5.94 9.56 vp9_put_8tap_smooth_64v_neon: 10.69 13.30 9.43 14.34 For the larger 8tap filters, the speedup vs C code is around 5-14x. This is significantly faster than libvpx's implementation of the same functions, at least when comparing the put_8tap_smooth_64 functions (compared to vpx_convolve8_horiz_neon and vpx_convolve8_vert_neon from libvpx). Absolute runtimes from checkasm: Cortex A7 A8 A9 A53 vp9_put_8tap_smooth_64h_neon: 20150.3 14489.4 19733.6 10863.7 libvpx vpx_convolve8_horiz_neon: 52623.3 19736.4 21907.7 25027.7 vp9_put_8tap_smooth_64v_neon: 14455.0 12303.9 13746.4 9628.9 libvpx vpx_convolve8_vert_neon: 42090.0 17706.2 17659.9 16941.2 Thus, on the A9, the horizontal filter is only marginally faster than libvpx, while our version is significantly faster on the other cores, and the vertical filter is significantly faster on all cores. The difference is especially large on the A7. The libvpx implementation does the accumulation in 32 bit, which probably explains most of the differences. Signed-off-by: Martin Storsjö <martin@martin.st>
* vp9: Flip the order of arguments in MC functionsMartin Storsjö2016-11-036-85/+77
| | | | | | | | | This makes it match the pattern already used for VP8 MC functions. This also makes the signature match ffmpeg's version of these functions, easing porting of code in both directions. Signed-off-by: Martin Storsjö <martin@martin.st>
* lavfi: Always propagate hw_frames_ctx through linksMark Thompson2016-11-0211-9/+30
| | | | | | | | | | | | | | | Also adds a new flag to mark filters which are aware of hwframes and will perform this task themselves, and marks all appropriate filters with this flag. This is required to allow software-mapped hardware frames to work, because we need to have the frames context available for any later mapping operation in the filter graph. The output from the filter graph should only propagate further to an encoder if the hardware format actually matches the visible format (mapped frames are valid here and have an hw_frames_ctx, but this should not be given to the encoder as its hardware context).
* lavfi: Use ff_get_video_buffer in all filters using hwframesMark Thompson2016-11-025-31/+11
|
* lavfi: Make default get_video_buffer work with hardware framesMark Thompson2016-11-021-4/+10
|
* doc: Turn off noisy deprecation warnings in the option printerDiego Biurrun2016-11-021-4/+10
|
* rtmpproto: Restructure zlib code to avoid unreachable code warningDiego Biurrun2016-11-021-4/+5
| | | | libavformat\rtmpproto.c(1165) : warning C4702: unreachable code
* bink: Have function pointer prototype match implementationDiego Biurrun2016-11-021-1/+3
| | | | libavcodec/binkdsp.c(156) : warning C4028: formal parameter 1 different from declaration
* idct: Have function pointer prototype match implementationDiego Biurrun2016-11-021-3/+5
| | | | libavcodec/idctdsp.c(175) : warning C4028: formal parameter 2 different from declaration
* aactab: Move extern keyword to the front of array declarationsDiego Biurrun2016-11-021-2/+2
| | | | libavcodec/aactab.h:49:1: warning: ‘extern’ is not at beginning of declaration [-Wold-style-declaration]
* vf_drawtext: Move static keyword to beginning of variable declarationDiego Biurrun2016-11-021-3/+2
| | | | libavfilter/vf_drawtext.c:226:1: warning: ‘static’ is not at beginning of declaration [-Wold-style-declaration]
* examples/decode_video: remove a stray unrelated commentAnton Khirnov2016-11-021-2/+0
|
* examples/decode_video: constify the AVCodec instanceAnton Khirnov2016-11-021-1/+1
|
* examples/encode_video: use the AVFrame API for allocating the frameAnton Khirnov2016-11-021-7/+12
| | | | | It is more efficient and so preferred over allocating the buffers manually.
* examples/encode_video: set the framerateAnton Khirnov2016-11-021-1/+3
|
* examples/encode_video: constify the AVCodec instanceAnton Khirnov2016-11-021-1/+1
|
* examples/avcodec: split the remaining two examples into separate filesAnton Khirnov2016-11-024-166/+192
|
* examples/decode_audio: constify the AVCodec instanceAnton Khirnov2016-11-021-1/+1
|
* examples/avcodec: split audio decoding into a separate exampleAnton Khirnov2016-11-024-98/+142
| | | | | The four examples (audio/video encoding/decoding) are completely independent so it makes little sense to have them all in one file.
* examples/encode_audio: use the AVFrame API for allocating the dataAnton Khirnov2016-11-021-16/+10
| | | | It is simpler and more efficient.
* examples/encode_audio: constify AVCodec instancesAnton Khirnov2016-11-021-4/+4
|
* examples/avcodec: split audio encoding into a separate exampleAnton Khirnov2016-11-024-171/+215
| | | | | The four examples (audio/video encoding/decoding) are completely independent so it makes little sense to have them all in one file.
* avconv: support parsing bitstream filter optionsJames Almer2016-11-023-23/+39
| | | | | | | | | Example usage: avconv -i INPUT -bsf filter[=opt1=val1:opt2=val2] OUTPUT Signed-off-by: James Almer <jamrial@gmail.com> Signed-off-by: Anton Khirnov <anton@khirnov.net>
* mov: Evaluate the movie display matrixVittorio Giovara2016-11-015-17/+40
| | | | | | | | | | | This matrix needs to be applied after all others have (currently only display matrix from trak), but cannot be handled in movie box, since streams are not allocated yet. So store it in main context, and apply it when appropriate, that is after parsing the tkhd one. Fate tests are updated accordingly. Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
* fate: Add tests for mov display matrixVittorio Giovara2016-11-017-0/+32
| | | | | | Rotation, sample/display aspect ratio and pure matrix export. Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
* avprobe: Add -show_stream_entry to get a single stream propertyVittorio Giovara2016-11-011-0/+56
| | | | | | | | | This is needed for improved fate testing and it is modeled after -show_format_entry. The main behavioral difference is that when a print function is called with an empty key, rather than discarding it, the closes key in the hierarchy is used instead. Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
* openssl: Allow newer TLS versions than TLSv1Mark Thompson2016-10-311-1/+6
| | | | | | The use of TLSv1_*_method() disallows newer protocol versions; instead use SSLv23_*_method() and then explicitly disable the deprecated protocol versions which should not be supported.
OpenPOWER on IntegriCloud