Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-12-29lavc/qsvdec: disable gpu copy when not supportedZhong Li
Signed-off-by: Zhong Li <zhongli_dev@126.com>
2019-12-29lavc/qsvdec: fix the error retrun code in ff_qsv_get_continuous_buffer()Zhong Li
Signed-off-by: Zhong Li <zhongli_dev@126.com>
2019-10-26lavc/qsvdec: remove unused check_dec_paramLinjie Fu
Signed-off-by: Linjie Fu <linjie.fu@intel.com>
2019-10-09lavc/qsvdec: Add GPU-accelerated memory copy supportLinjie Fu
GPU copy enables or disables GPU accelerated copying between video and system memory. This may lead to a notable performance improvement. Memory must be sequent and aligned with 128x64. CMD: ffmpeg -init_hw_device qsv=hw -filter_hw_device hw -c:v h264_qsv -gpu_copy on -i input.h264 -f null - or: ffmpeg -c:v h264_qsv -gpu_copy on -i input.h264 -f null - Signed-off-by: Linjie Fu <linjie.fu@intel.com> Signed-off-by: ChaoX A Liu <chaox.a.liu@intel.com> Signed-off-by: Zhong Li <zhong.li@intel.com>
2019-09-26lavc/qsv: add memory type messageZhong Li
Signed-off-by: Zhong Li <zhong.li@intel.com>
2019-09-26lavc/qsv: Fix MSDK initialization failure in system memory modeZhong Li
MSDK does not create internal acceleration device on Linux, So MFXVideoCORE_SetHandle() is necessary. It has been added for ff_qsv_init_session_device(). But missed for ff_qsv_init_internal_session() due to commit 1f26a23 overwrited commit db89f45 Fix #7030 Signed-off-by: Zhong Li <zhong.li@intel.com>
2019-08-20lavc/qsvdec: remove orignal parser code since not needed nowZhong Li
Signed-off-by: Zhong Li <zhong.li@intel.com>
2019-08-20lavc/qsvdec: Replace current parser with MFXVideoDECODE_DecodeHeader()Zhong Li
Using MSDK parser can improve qsv decoder pass rate in some cases (E.g: sps declares a wrong level_idc, smaller than it should be). And it is necessary for adding new qsv decoders such as MJPEG and VP9 since current parser can't provide enough information. Actually using MFXVideoDECODE_DecodeHeader() was disscussed at https://ffmpeg.org/pipermail/ffmpeg-devel/2015-July/175734.html and merged as commit 1acb19d, but was overwritten when merged libav patches (commit: 1f26a23) without any explain. Split decode header from decode_init, and call it for everyframe to detect format/resoultion change. It can fix some regression issues such as hevc 10bits decoding. Signed-off-by: Zhong Li <zhong.li@intel.com> Signed-off-by: Dmitry Rogozhkin <dmitry.v.rogozhkin@intel.com>
2019-05-07lavc/qsvdec: fix hevc level incorrectly mapZhong Li
libmfx hevc level defination is same as h264, not level_idc of SPEC. Signed-off-by: Zhong Li <zhong.li@intel.com>
2019-05-07lavc/qsvdec: add query function and provide error messageZhong Li
It is helpful to know why some clips decoding failed. Ticket#7330 is a good example, with this patch it is easily to know bitstream codec level is out of support range. Signed-off-by: Zhong Li <zhong.li@intel.com>
2018-12-09qsvdec: Fix running with assert_level > 0Mark Thompson
Assertion avctx->codec_id != AV_CODEC_ID_NONE failed at src/libavcodec/parser.c:128 The setting on the internal AVCodecContext used for parsing only is otherwise irrelevant, so just set it to avoid the assert.
2018-11-06lavc/qsvdec: flush buffered data before reinitLinjie Fu
Flush the buffered data in libmfx before video param reinit in case the frames drop. Cache the first frame causing the reinit and decode zero-size pkt to flush the buffered pkt before reinit. After all the buffered pkts being flushed, resume to reinit and decode. Fix the issue in ticket #7399. [V2]: Move the definition of zero_pkt to where it is exactly used. Signed-off-by: Linjie Fu <linjie.fu@intel.com> Signed-off-by: Zhong Li <zhong.li@intel.com>
2018-09-03Merge commit 'c1bcd321ea2c2ae1765a1e64f03278712221d726'James Almer
* commit 'c1bcd321ea2c2ae1765a1e64f03278712221d726': avcodec/qsv: fix async support Merged-by: James Almer <jamrial@gmail.com>
2018-07-26avcodec/qsv: fix async supportDmitry Rogozhkin
Current implementations of qsv components incorrectly work with async level, they actually try to work in async+1 level stepping into MFX_WRN_DEVICE_BUSY and polling loop. This change address this misbehaviour. Signed-off-by: Dmitry Rogozhkin <dmitry.v.rogozhkin@intel.com> Cc: Maxym Dmytrychenko <maxim.d33@gmail.com> Cc: Zhong Li <zhong.li@intel.com> Signed-off-by: Maxym Dmytrychenko <maxim.d33@gmail.com>
2018-04-14Merge commit '54307b35311e9a871b3d8ecb2b2eecfc16de0163'James Almer
* commit '54307b35311e9a871b3d8ecb2b2eecfc16de0163': lavc/qsvdec: set complete_frame flags for progressive picture Merged-by: James Almer <jamrial@gmail.com>
2018-04-14Merge commit '52ed83fa1a7f5170447eff6fad0b6c57119596e9'James Almer
* commit '52ed83fa1a7f5170447eff6fad0b6c57119596e9': lavc/qsvdec: expose frame pic_type and key_frame Merged-by: James Almer <jamrial@gmail.com>
2018-04-08lavc/qsvdec: set complete_frame flags for progressive pictureZhong Li
Set the flag MFX_BITSTREAM_COMPLETE_FRAME when it is a progressive picture. This can fix vc1 decoding segment fault issues because can't set the start code correctly. See: ./avconv -hwaccel qsv -c:v vc1_qsv -i /fate-suite/vc1/SA00040.vc1 -vf "hwdownload, format=nv12" -f rawvideo /dev/null v2: fix some h264 interlaced clips regression a. field_order of some h264 interlaced video (e.g: cama3_vtc_b.avc) is marked as AV_FIELD_UNKNOWN in h264_parser.c. This is not a completed frames. So only set the MFX_BITSTREAM_COMPLETE_FRAME when it is progressive. b. some clips have both progressive and interlaced frames (e.g.CAPAMA3_Sand_F.264), the parsed field_order maybe changed druing the decoding progress. This patch has been verified for other codecs(mpeg2/hevc/vp8). Signed-off-by: Zhong Li <zhong.li@intel.com> Signed-off-by: Maxym Dmytrychenko <maxim.d33@gmail.com>
2018-04-08lavc/qsvdec: expose frame pic_type and key_frameZhong Li
Currently pict_type and key_frame are unset. Add an extra param to fetch the picture type from qsv decoder The judgement “key frame is equal to IDR frame” only suitable for H264. For HEVC, all IRAP frames are key frames, and other codecs have no IDR frame. Signed-off-by: ChaoX A Liu <chaox.a.liu@intel.com> Signed-off-by: Zhong Li <zhong.li@intel.com> Signed-off-by: Maxym Dmytrychenko <maxim.d33@gmail.com>
2018-02-12Merge commit '6829a079444e10818a847e153121fb458cc5c0a8'James Almer
* commit '6829a079444e10818a847e153121fb458cc5c0a8': qsvdec: Relax the surface vs coded dimension check Merged-by: James Almer <jamrial@gmail.com>
2018-01-26qsvdec: Relax the surface vs coded dimension checkZhong Li
Fix a common vp8 decoding failure. Many vp8 clips cannot decode if hw_frames_ctx is enabled, reporting "Error during QSV decoding.: incompatible video parameters (-14)". It is due to mfx.FrameInfo.Width/Height not matching coded_w/coded_h. See: avconv -hwaccel qsv -init_hw_device qsv -c:v vp8_qsv -i vp8-test-vectors-r1/vp80-00-comprehensive-001.ivf -vf "hwdownload,format=nv12" -pix_fmt yuv420p -f md5 - Signed-off-by: Zhong Li <zhong.li@intel.com> Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2018-01-17Merge commit 'cbe28bc069dde1d53d937ee10700bb123279c7c8'Mark Thompson
* commit 'cbe28bc069dde1d53d937ee10700bb123279c7c8': qsv: better to use alignment by 16 and HEVC 10b requires alignment by 32 Merged-by: Mark Thompson <sw@jkqxz.net>
2018-01-08qsv: better to use alignment by 16 and HEVC 10b requires alignment by 32Maxym Dmytrychenko
2017-12-20lavc: Add hardware config metadata for decoders supporting hardware outputMark Thompson
This includes a pointer to the associated hwaccel for decoders using hwaccels - these will be used later to implement the hwaccel setup without needing a global list. Also added is a new file listing all hwaccels as external declarations - this will be used later to generate the hwaccel list at configure time.
2017-11-27lavc: Add hardware config metadata for decoders supporting hardware outputMark Thompson
This includes a pointer to the associated hwaccel for decoders using hwaccels - these will be used later to implement the hwaccel setup without needing a global list. Also added is a new file listing all hwaccels as external declarations - this will be used later to generate the hwaccel list at configure time.
2017-06-15qsvdec: Allow use of hw_device_ctx to make the internal sessionMark Thompson
(cherry picked from commit 8848ba0bd6b035af77d4f13aa0d8aaaad9806fe8)
2017-06-15qsv: Add ability to create a session from a deviceMark Thompson
(cherry picked from commit 4936a48b1e6fc2147599541f8b25f43a8a9d1f16)
2017-05-05Merge commit 'b68e353136db6f963212c457281d9716516cdc59'Clément Bœsch
* commit 'b68e353136db6f963212c457281d9716516cdc59': qsvdec: do not sync PIX_FMT_QSV surfaces Merged-by: Clément Bœsch <cboesch@gopro.com>
2017-04-02qsvdec: Allow use of hw_device_ctx to make the internal sessionMark Thompson
2017-04-02qsv: Add ability to create a session from a deviceMark Thompson
2017-04-01Merge commit '76167140a91c081a0cf9d0abcaa4da18d1bacadb'Clément Bœsch
* commit '76167140a91c081a0cf9d0abcaa4da18d1bacadb': qsvdec: Drop stray extra braces around initializer Merged-by: Clément Bœsch <u@pkh.me>
2017-03-31Merge commit '0940b748bdba36c4894fc8ea6be631d821fdf578'James Almer
* commit '0940b748bdba36c4894fc8ea6be631d821fdf578': qsvdec: Only warn about unconsumed data if it happens more than once Merged-by: James Almer <jamrial@gmail.com>
2017-03-31Merge commit '4ab61cd983b539749bd621ea271624ddb5196a8e'Mark Thompson
* commit '4ab61cd983b539749bd621ea271624ddb5196a8e': qsv{enc,dec}: extend the internal frame allocator Merged-by: Mark Thompson <sw@jkqxz.net>
2017-03-31Merge commit '00aeedd84105a17f414185bd33ecadebeddb3a27'Mark Thompson
* commit '00aeedd84105a17f414185bd33ecadebeddb3a27': qsv{dec,enc}: use a struct as a memory id with internal memory allocator Merged-by: Mark Thompson <sw@jkqxz.net>
2017-03-31Merge commit '404e51478ecad060249d5b9bee6ab39a8a9d8c1c'Mark Thompson
* commit '404e51478ecad060249d5b9bee6ab39a8a9d8c1c': qsv{dec,enc}: always use an internal mfxFrameSurface1 Minor fixups for differences in the QSV encoder because of a53cc. Merged-by: Mark Thompson <sw@jkqxz.net>
2017-03-27Merge commit '801ac7156d3efb8e088fb6024f568eb36a293887'Clément Bœsch
* commit '801ac7156d3efb8e088fb6024f568eb36a293887': qsv: Be informative when reporting that no data has been consumed Merged-by: Clément Bœsch <u@pkh.me>
2017-03-16Merge commit 'e328178da90f44690e0076f4dbfd16da9175f441'Clément Bœsch
* commit 'e328178da90f44690e0076f4dbfd16da9175f441': qsvdec: only access hwaccel_context is the pixel format is QSV Merged-by: Clément Bœsch <u@pkh.me>
2017-03-12Merge commit '95414eb2dc63a6f934275b4ed33dedd4369f2c49'Mark Thompson
* commit '95414eb2dc63a6f934275b4ed33dedd4369f2c49': qsv: print more complete error messages Merged-by: Mark Thompson <sw@jkqxz.net>
2017-01-12qsvdec: do not sync PIX_FMT_QSV surfacesAnton Khirnov
Introducing enforced sync points in arbitrary places is bad for performance. Since the vast majority of receiving code (QSV VPP or encoders, retrieving frames through hwcontext) will do the syncing, this change should not be visible to most callers. But bumping micro just in case. This is also consistent with what VAAPI hwaccel does.
2016-12-08qsvdec: Fix memory leak on errorTimothy Gu
Bug-Id: CID 1396851 Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2016-12-07qsvdec: Fix memory leakTimothy Gu
Fixes CID1396851.
2016-11-17qsvdec: Drop stray extra braces around initializerDiego Biurrun
libavcodec/qsvdec.c:93:5: warning: braces around scalar initializer
2016-11-14qsvdec: Only warn about unconsumed data if it happens more than onceMark Thompson
2016-11-14qsvdec: Pass field order information to libmfxMark Thompson
The VC-1 decoder fails to initialise if this is not set.
2016-11-14qsvdec: Pass the correct profile to libmfxMark Thompson
This was correct for H.26[45], because libmfx uses the same values derived from profile_idc and the constraint_set flags, but it is wrong for other codecs. Also avoid passing FF_LEVEL_UNKNOWN (-99) as the level, as this is certainly invalid.
2016-11-14Merge commit '924e2ecd2b7d51cca60c79351ef16b04dd4245c3'Hendrik Leppkes
* commit '924e2ecd2b7d51cca60c79351ef16b04dd4245c3': qsvdec: when a frames ctx is supplied, use its frame dimensions Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2016-11-14Merge commit '92736c74fb1633e36f7134a880422a9b7db14d3f'Hendrik Leppkes
* commit '92736c74fb1633e36f7134a880422a9b7db14d3f': qsvdec: add support for P010 (10-bit 420) decoding Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2016-11-14Merge commit 'ce320cf1c4daab3e2e3726ed7d2e879d10f7b991'Hendrik Leppkes
* commit 'ce320cf1c4daab3e2e3726ed7d2e879d10f7b991': qsvdec: use the same mfxFrameInfo for allocating frames that was passed to DECODE_Init Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2016-11-14Merge commit '536bb17e9659c5ed7576a218d4085cdd6d5742fa'Hendrik Leppkes
* commit '536bb17e9659c5ed7576a218d4085cdd6d5742fa': qsvdec: make ff_qsv_map_pixfmt() return a MFX fourcc as well Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2016-11-07qsv{enc,dec}: extend the internal frame allocatorAnton Khirnov
Handle the internal frame requests, which is required by the HEVC encoding plugin. Signed-off-by: Maxym Dmytrychenko <maxym.dmytrychenko@intel.com>
2016-11-07qsv{dec,enc}: use a struct as a memory id with internal memory allocatorAnton Khirnov
This will allow implementing the allocator more fully, which is needed by the HEVC encoder plugin with video memory input. Signed-off-by: Maxym Dmytrychenko <maxym.dmytrychenko@intel.com>