summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
...
* lavc/qsvenc: add tile encoding support for VP9Haihao Xiang2022-01-29
| | | | | | | Add -tile_rows and -tile_cols options to specify the number of tile rows and columns Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
* libavutil/hwcontext_opencl: fix a bug for mapping qsv frame to openclnyanmisaka2022-01-29
| | | | | | | | | | | | | | | mfxHDLPair was added to qsv, so modify qsv->opencl map function as well. Now the following commandline works: ffmpeg -v verbose -init_hw_device vaapi=va:/dev/dri/renderD128 \ -init_hw_device qsv=qs@va -init_hw_device opencl=ocl@va -filter_hw_device ocl \ -hwaccel qsv -hwaccel_output_format qsv -hwaccel_device qs -c:v h264_qsv \ -i input.264 -vf "hwmap=derive_device=opencl,format=opencl,avgblur_opencl, \ hwmap=derive_device=qsv:reverse=1:extra_hw_frames=32,format=qsv" \ -c:v h264_qsv output.264 Signed-off-by: nyanmisaka <nst799610810@gmail.com> Signed-off-by: Wenbin Chen <wenbin.chen@intel.com>
* libavcodec/vaapi_decode: fix the problem that init_pool_size < nb_surfaceWenbin Chen2022-01-29
| | | | | | | | | | | | | | | | | | | | For vaapi if the init_pool_size is not zero, the pool size is fixed. This means max surfaces is init_pool_size, but when mapping vaapi frame to qsv frame, the init_pool_size < nb_surface. The cause is that vaapi_decode_make_config() config the init_pool_size and it is called twice. The first time is to init frame_context and the second time is to init codec. On the second time the init_pool_size is changed to original value so the init_pool_size is lower than the reall size because pool_size used to initialize frame_context need to plus thread_count and 3 (guarantee 4 base work surfaces). Now add code to make sure init_pool_size is only set once. Now the following commandline works: ffmpeg -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 \ -hwaccel_output_format vaapi -i input.264 \ -vf "hwmap=derive_device=qsv,format=qsv" \ -c:v h264_qsv output.264 Signed-off-by: Wenbin Chen <wenbin.chen@intel.com>
* x86/tx_float: mark AVX2 functions as AVXSLOWLynne2022-01-29
| | | | | | | | | | | | | Makes Bulldozer prefer AVX functions rather than AVX2, which are 64% slower: AVX: 117653 decicycles in av_tx (fft), 1048535 runs, 41 skips AVX2: 193385 decicycles in av_tx (fft), 1048561 runs, 15 skips The only difference between both is that vgatherdpd is used in the former. We don't want to mark them with the new SLOW_GATHER flag however, since gathers are still faster on Haswell/Zen 2/3 than plain loads.
* lavu/tx: do not unconditionally free subcontexts if initialization failsLynne2022-01-29
| | | | | | | | | If a codelet initializes 2 subtransforms, and the second one fails, the failure would free all subcontexts. Instead, if there are subcontexts still left, don't free the array. If all initializations fail, the init() function will return, and reset_ctx() from the previous step will clean up all contained subtransforms.
* lavu/tx: reset subcontext pointer if initialization failsLynne2022-01-29
| | | | Thanks to mkver for pointing this out.
* lavu/tx: print debug info even if no transforms are foundLynne2022-01-28
|
* avutil/tx: add null pointer check after av_malloczSteven Liu2022-01-28
| | | | | | | Fix CID: 1497863 there will get null pointer in attempt to initialize each if alloc memory failed. Signed-off-by: Steven Liu <liuqi05@kuaishou.com>
* avutil/tx: remove deadcode of the control flowSteven Liu2022-01-28
| | | | | | | | | Fix CID: 1497864 The control flow should return ENOSYS if nb_cd_matches is 0 at before and the ret equal AVERROR(ENOMEM) or goto end label, so remove the last control flow if (ret >= 0) before end label. Signed-off-by: Steven Liu <liuqi05@kuaishou.com>
* hwcontext_vulkan: avoid using 64-bit enumsLynne2022-01-27
| | | | MSVC (2016, but possibly more) still force enums to be basic ints.
* lavu/tx: avoid using 64-bit enumsLynne2022-01-27
| | | | MSVC (2016, but possibly more) still force enums to be basic ints.
* configure: add libplacebo to help messageZhao Zhili2022-01-27
|
* libavcodec/qsvenc: Add intra refresh to hevc_qsv and add new intra refresh ↵Wenbin Chen2022-01-27
| | | | | | | | | | | | parameter Add intra refresh support to hevc_qsv as well. Add an new intra refresh type: "horizontal", and an new param ref_cycle_dist. This param specify the distance between the beginnings of the intra-refresh cycles in frames. Signed-off-by: Wenbin Chen <wenbin.chen@intel.com> Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
* libavcodec/qsvenc: Add b_strategy option to hevc_qsvWenbin Chen2022-01-27
| | | | | | | | Add b_strategy option to hevc_qsv. By enabling this option, encoder can use b frames as reference. Signed-off-by: Wenbin Chen <wenbin.chen@intel.com> Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
* libavcodec/qsvenc: Add max slice size support to hevc_qsvWenbin Chen2022-01-27
| | | | | | | Add max_slice_size option to hevc_qsv as well. Signed-off-by: Wenbin Chen <wenbin.chen@intel.com> Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
* avcodec/h264data: Add missing rational.h inclusionAndreas Rheinhardt2022-01-27
| | | | | | Fixes checkheaders. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* x86/tx_float: add missing FF_TX_OUT_OF_PLACE flag to functionsLynne2022-01-27
| | | | This caused smaller length dedicated transforms to not be picked up.
* lavu/tx: clean up CPU flags checkLynne2022-01-27
| | | | Just makes it more readable.
* x86/tx_float: do not build tx_float_init.c if x86 assembly is disabledLynne2022-01-27
| | | | | | | | This broke builds with --disable-mmx, which also disabled assembly entirely, but ARCH_X86 was still true, so the init file tried to find assembly that didn't exist. Instead of checking for architecture, check if external x86 assembly is enabled.
* avcodec/h264_parse: Move ff_h264_get_profile() to h264_ps.hAndreas Rheinhardt2022-01-26
| | | | | | It is a more fitting place for it. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/h264_*: Remove unnecessary internal.h inclusionsAndreas Rheinhardt2022-01-26
| | | | | | Also remove some other unnecessary headers while at it. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/h264dec: Remove unnecessary headersAndreas Rheinhardt2022-01-26
| | | | | | | E.g. the inclusion of parser.h comes from a time when the parser used a H264Context. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/h264*: Remove unnecessary h264_mvpred.h inclusionsAndreas Rheinhardt2022-01-26
| | | | | | | This is only needed by h264_cabac.c and h264_cavlc.c. Also fix up the other headers while at it. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* lavc/svq3: stop including h264dec.hAnton Khirnov2022-01-26
| | | | | | | The only thing that is actually used directly from there is the PART_NOT_AVAILABLE constant, which can be moved to h264pred.h. Otherwise it only depends on other indirectly included headers.
* lavc/x86/h264_qpel: stop unnecessarily including h264decAnton Khirnov2022-01-26
|
* lavc/vdpau: stop unnecessarily including h264decAnton Khirnov2022-01-26
|
* lavc/h264: move MB_TYPE defs from h264dec.h to h264_parseAnton Khirnov2022-01-26
| | | | Allows to stop including h264dec.h in h264data.c.
* lavc/h264_parse: stop including h264dec.hAnton Khirnov2022-01-26
| | | | | | It is unnecessary and only files that are parts of the decoder (as opposed to standalone code called by the decoder) are allowed to include h264dec.h
* lavc/h264data.h: stop including h264dec.hAnton Khirnov2022-01-26
| | | | This header does not need anything from there.
* lavc/h264: move some shared code from h264dec to h264_parseAnton Khirnov2022-01-26
|
* lavc/h264_parser: add missing headersAnton Khirnov2022-01-26
|
* lavc/h264: replace MAX_DELAYED_PIC_COUNT by H264_MAX_DPB_FRAMESAnton Khirnov2022-01-26
|
* lavc/h264: replace MAX_DELAYED_PIC_COUNT with FF_ARRAY_ELEMS where appropriateAnton Khirnov2022-01-26
|
* lavc/h264dec.h: Move MMCOOpcode to h264_parse.hAnton Khirnov2022-01-26
| | | | | Both parser and decoder use it, so h264_parse is the proper place for it.
* lavc/h264: replace MAX_MMCO_COUNT with H264_MAX_MMCO_COUNTAnton Khirnov2022-01-26
| | | | | | They apparently serve the same purpose; the latter is one larger and has a comment explaining how the value is derived, so seems more trustworthy.
* avcodec/h264dec: Move pack8to16 to its only userAndreas Rheinhardt2022-01-26
| | | | | | Namely to h264_cabac.c. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/h264dec: Move find_start_code() to its only userAndreas Rheinhardt2022-01-26
| | | | Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* lavu/tx: do not mix declarations and codeLynne2022-01-26
|
* x86/tx_float: add permute-free FFT versionsLynne2022-01-26
| | | | These are used in the PFA transforms and MDCTs.
* lavu: bump minor and add APIchanges for new lavu/tx additionsLynne2022-01-26
|
* lavu/tx: add an RDFT implementationLynne2022-01-26
| | | | | | | | | | | | | | | | | | RDFTs are full of conventions that vary between implementations. What I've gone for here is what's most common between both fftw, avcodec's rdft and what we use, the equivalent of which is DFT_R2C for forward and IDFT_C2R for inverse. The other 2 conventions (IDFT_R2C and DFT_C2R) were not used at all in our code, and their names are also not appropriate. If there's a use for either, we can easily add a flag which would just flip the sign on one exptab. For some unknown reason, possibly to allow reusing FFT's exp tables, av_rdft's C2R output is 0.5x lower than what it should be to ensure a proper back-and-forth conversion. This code outputs its real samples at the correct level, which matches FFTW's level, and allows the user to change the level and insert arbitrary multiplies for free by setting the scale option.
* lavu/tx: rewrite internal code as a tree-based codelet constructorLynne2022-01-26
| | | | | | | | | | This commit rewrites the internal transform code into a constructor that stitches transforms (codelets). This allows for transforms to reuse arbitrary parts of other transforms, and allows transforms to be stacked onto one another (such as a full iMDCT using a half-iMDCT which in turn uses an FFT). It also permits for each step to be individually replaced by assembly or a custom implementation (such as an ASIC).
* lavu/tx: improve documentation for existing transformsLynne2022-01-26
|
* avcodec/h264_parser: don't alter decoder private dataJames Almer2022-01-24
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* tests: add test for ffmpeg's fix_sub_duration featureJan Ekström2022-01-24
| | | | | | | | This long-existing feature calculates subtitle durations by keeping it around until the following subtitle is decoded, and then utilizes the following subtitle's pts as the end point of the previous one. Signed-off-by: Jan Ekström <jan.ekstrom@24i.com>
* doc/filters: note format constraint for volumedetectGyan Doshi2022-01-24
|
* libavcodec/qsvenc: fix a memory leak problemWenbin Chen2022-01-24
| | | | | | | | | | "qf->frame" ref to input frame but it isn't released. av_frame_unref() is added before refering qf->frame to new frame to make sure the previous reference is released. Reported-by: Mark Samuelson <Mark.Samuelson@sonicfoundry.com> Signed-off-by: Wenbin Chen <wenbin.chen@intel.com> Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
* avfilter/vf_libvmaf: update filter for libvmaf v2.0.0Kyle Swanson2022-01-23
|
* avfilter/vf_v360: improve xyz_to_dfisheye()Paul B Mahol2022-01-22
|
* fate/ffmpeg: Add test for autorotating videoAndreas Rheinhardt2022-01-22
| | | | Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>