aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/dxva2_mpeg2.c
Commit message (Collapse)AuthorAgeFilesLines
* FFHWAccel: add buffer_ref argument to start_frameLynne2025-03-171-0/+1
| | | | | | | | This commit adds a reference to the buffer as an argument to start_frame, and adapts all existing code. This allows for asynchronous hardware accelerators to skip copying packet data by referencing it.
* avcodec/dxva2_*: Initialize dxva_data_ptrMichael Niedermayer2024-08-111-1/+4
| | | | | | | | | Related: CID1591888 Uninitialized scalar variable Related: CID1591925 Uninitialized pointer read Related: CID1591933 Uninitialized scalar variable Sponsored-by: Sovereign Tech Fund Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avcodec/mpegpicture: Split MPVPicture into WorkPicture and ordinary PicAndreas Rheinhardt2024-06-121-8/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are two types of MPVPictures: Three (cur_pic, last_pic, next_pic) that are directly part of MpegEncContext and an array of MPVPictures that are separately allocated and are mostly accessed via pointers (cur|last|next)_pic_ptr; they are also used to store AVFrames in the encoder (necessary due to B-frames). As the name implies, each of the former is directly associated with one of the _ptr pointers: They actually share the same underlying buffers, but the ones that are part of the context can have their data pointers offset and their linesize doubled for field pictures. Up until now, each of these had their own references; in particular, there was an underlying av_frame_ref() to sync cur_pic and cur_pic_ptr etc. This is wasteful. This commit changes this relationship: cur_pic, last_pic and next_pic now become MPVWorkPictures; this structure does not have an AVFrame at all any more, but only the cached values of data and linesize. It also contains a pointer to the corresponding MPVPicture, establishing a more natural relationsship between the two. This already means that creating the context-pictures from the pointers can no longer fail. What has not been changed is the fact that the MPVPicture* pointers are not ownership pointers and that the MPVPictures are part of an array of MPVPictures that is owned by a single AVCodecContext. Doing so will be done in a latter commit. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/mpegpicture: Rename Picture->MPVPictureAndreas Rheinhardt2024-06-121-1/+1
| | | | | | Picture is just too generic. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/mpegvideo: Shorten variable namesAndreas Rheinhardt2024-06-121-8/+8
| | | | | | | | current_picture->cur_pic, last_picture->last_pic, similarly for new_picture and next_picture. Also rename the corresponding *_ptr fields. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/dxva2(h264|mpeg2|vc1): use av_assert0 instead of assertTong Wu2024-01-051-1/+1
| | | | Signed-off-by: Tong Wu <tong1.wu@intel.com>
* avcodec: add D3D12VA hardware accelerated MPEG-2 decodingWu Jianhua2023-12-211-10/+10
| | | | | | | | The command below is how to enable d3d12va: ffmpeg -hwaccel d3d12va -i input.mp4 output.mp4 Signed-off-by: Wu Jianhua <toqsxw@outlook.com> Signed-off-by: Tong Wu <tong1.wu@intel.com>
* avcodec: add D3D12VA hardware accelerated H264 decodingWu Jianhua2023-12-211-3/+3
| | | | | | | | | | | | | | | | The implementation is based on: https://learn.microsoft.com/en-us/windows/win32/medfound/direct3d-12-video-overview With the Direct3D 12 video decoding support, we can render or process the decoded images by the pixel shaders or compute shaders directly without the extra copy overhead, which is beneficial especially if you are trying to render or post-process a 4K or 8K video. The command below is how to enable d3d12va: ffmpeg -hwaccel d3d12va -i input.mp4 output.mp4 Signed-off-by: Wu Jianhua <toqsxw@outlook.com> Signed-off-by: Tong Wu <tong1.wu@intel.com>
* avcodec/avcodec: Add FFHWAccel, hide internals of AVHWAccelAndreas Rheinhardt2023-08-071-15/+16
| | | | | | | | | This commit is the AVHWAccel analogue of commit 20f972701806be20a77f808db332d9489343bb78: It moves the private fields of AVHWAccel to a new struct FFHWAccel extending AVHWAccel in an internal header (namely hwaccel_internal.h). Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* configure: Use a separate config_components.h header for $ALL_COMPONENTSMartin Storsjö2022-03-161-0/+2
| | | | | | | | This avoids unnecessary rebuilds of most source files if only the list of enabled components has changed, but not the other properties of the build, set in config.h. Signed-off-by: Martin Storsjö <martin@martin.st>
* avcodec/mpegvideo: Move decoder-only stuff to a new headerAndreas Rheinhardt2022-02-131-1/+1
| | | | Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* Merge commit '8f144d9e3d5cb2ca92e5bdf7cc9f72effa1bd2ce'James Almer2018-04-131-5/+2
|\ | | | | | | | | | | | | * commit '8f144d9e3d5cb2ca92e5bdf7cc9f72effa1bd2ce': Drop Windows XP support remnants Merged-by: James Almer <jamrial@gmail.com>
| * Drop Windows XP support remnantsDiego Biurrun2018-04-091-5/+2
| |
| * lavc: Mark all AVHWAccel structures as constMark Thompson2017-12-191-3/+3
| |
* | lavc: Mark all AVHWAccel structures as constMark Thompson2017-11-261-3/+3
| |
* | Merge commit 'b46a77f19ddc4b2b5fa3187835ceb602a5244e24'James Almer2017-11-111-0/+3
|\| | | | | | | | | | | | | | | | | * commit 'b46a77f19ddc4b2b5fa3187835ceb602a5244e24': lavc: external hardware frame pool initialization Includes the fix from e724bdfffbd3c27aac53d1f32f20f105f37caef0 Merged-by: James Almer <jamrial@gmail.com>
| * lavc: external hardware frame pool initializationwm42017-10-191-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | This adds a new API, which allows the API user to query the required AVHWFramesContext parameters. This also reduces code duplication across the hwaccels by introducing ff_decode_get_hw_frames_ctx(), which uses the new API function. It takes care of initializing the hw_frames_ctx if needed, and does additional error handling and API usage checking. Support for VDA and Cuvid missing. Signed-off-by: Anton Khirnov <anton@khirnov.net>
| * dxva: add support for new dxva2 and d3d11 hwaccel APIswm42017-06-081-0/+22
| | | | | | | | | | | | | | | | | | | | This also adds support to avconv (which is trivial due to the new hwaccel API being generic enough). The new decoder setup code in dxva2.c is significantly based on work by Steve Lhomme <robux4@gmail.com>, but with heavy changes/rewrites. Signed-off-by: Diego Biurrun <diego@biurrun.de>
| * dxva: preparations for new hwaccel APIwm42017-06-081-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | The actual hwaccel code will need to access an internal context instead of avctx->hwaccel_context, so add a new DXVA_CONTEXT() macro, that will dispatch between the "old" external and the new internal context. Also, the new API requires a new D3D11 pixfmt, so all places which check for the pixfmt need to be adjusted. Introduce a ff_dxva2_is_d3d11() function, which does the check. Signed-off-by: Diego Biurrun <diego@biurrun.de>
| * dxva2: Factorize DXVA context validity test into a single macroSteve Lhomme2017-01-081-3/+1
| | | | | | | | Signed-off-by: Diego Biurrun <diego@biurrun.de>
* | dxva: add support for new dxva2 and d3d11 hwaccel APIswm42017-06-271-0/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This also adds support to avconv (which is trivial due to the new hwaccel API being generic enough). The new decoder setup code in dxva2.c is significantly based on work by Steve Lhomme <robux4@gmail.com>, but with heavy changes/rewrites. Merges Libav commit f9e7a2f95a7194a8736cc1416a03a1a0155a3e9f. Also adds untested VP9 support. The check for DXVA2 COBJs is removed. Just update your MinGW to something newer than a 5 year old release. Signed-off-by: Diego Biurrun <diego@biurrun.de>
* | dxva: preparations for new hwaccel APIwm42017-06-271-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The actual hwaccel code will need to access an internal context instead of avctx->hwaccel_context, so add a new DXVA_CONTEXT() macro, that will dispatch between the "old" external and the new internal context. Also, the new API requires a new D3D11 pixfmt, so all places which check for the pixfmt need to be adjusted. Introduce a ff_dxva2_is_d3d11() function, which does the check. Merges Libav commit 4dec101acc393fbfe9a8ce0237b9efbae3f20139. Adds changes to vp9 over the Libav patch. Signed-off-by: Diego Biurrun <diego@biurrun.de>
* | dxva2: use a single macro to test if the DXVA context is validSteve Lhomme2017-01-161-3/+1
| | | | | | | | Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* | Merge commit '08377f9c3bf6dbe216512a2e05c9fac837b13fc0'Hendrik Leppkes2015-10-141-1/+5
|\| | | | | | | | | | | | | * commit '08377f9c3bf6dbe216512a2e05c9fac837b13fc0': dxva: Include last the internal header Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * dxva: Include last the internal headerLuca Barbato2015-10-141-1/+5
| | | | | | | | | | It redefines _WIN32_WINNT, possibly causing problems with the w32pthreads.h header.
* | Merge commit 'e60a6e7545dd6f5b25e3a65de9c6fdcc6e2e9d6b'Hendrik Leppkes2015-09-161-0/+1
|\| | | | | | | | | | | | | * commit 'e60a6e7545dd6f5b25e3a65de9c6fdcc6e2e9d6b': mpegvideo: Drop mpegvideo.h where not needed Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * mpegvideo: Drop mpegvideo.h where not neededVittorio Giovara2015-09-131-0/+1
| | | | | | | | Add necessary headers in .c files.
* | Merge commit 'd8039ef8d221ea273aa4f1e62e5df21bf618c772'Michael Niedermayer2015-05-251-22/+80
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit 'd8039ef8d221ea273aa4f1e62e5df21bf618c772': D3D11va: add a Direct3D11 video decoder similar to DXVA2 Conflicts: Changelog configure libavcodec/Makefile libavcodec/allcodecs.c libavcodec/dxva2_vc1.c libavcodec/version.h libavutil/pixdesc.c libavutil/pixfmt.h libavutil/version.h Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * D3D11va: add a Direct3D11 video decoder similar to DXVA2Steve Lhomme2015-05-251-22/+80
| | | | | | | | Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
* | Merge commit '4600a85eaa6182e5a27464f6b9cae5a9ddbf3098'Michael Niedermayer2014-09-011-1/+4
|\| | | | | | | | | | | | | | | | | | | | | | | | | * commit '4600a85eaa6182e5a27464f6b9cae5a9ddbf3098': dxva2: Pass variable of correct type to IDirectXVideoDecoder_GetBuffer() Conflicts: libavcodec/dxva2_h264.c libavcodec/dxva2_mpeg2.c libavcodec/dxva2_vc1.c See: 64c53fa16aeca9cadd48ccf607803d6e4d26cc4d Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * dxva2: Pass variable of correct type to IDirectXVideoDecoder_GetBuffer()Diego Biurrun2014-09-011-1/+4
| | | | | | | | This avoids related incompatible pointer type warnings.
* | Merge commit 'e3fcb14347466095839c2a3c47ebecff02da891e'Michael Niedermayer2014-07-011-1/+1
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit 'e3fcb14347466095839c2a3c47ebecff02da891e': dsputil: Split off IDCT bits into their own context Conflicts: configure libavcodec/aic.c libavcodec/arm/Makefile libavcodec/arm/dsputil_init_arm.c libavcodec/arm/dsputil_init_armv6.c libavcodec/asvdec.c libavcodec/dnxhdenc.c libavcodec/dsputil.c libavcodec/dvdec.c libavcodec/dxva2_mpeg2.c libavcodec/intrax8.c libavcodec/mdec.c libavcodec/mjpegdec.c libavcodec/mjpegenc_common.h libavcodec/mpegvideo.c libavcodec/ppc/dsputil_altivec.h libavcodec/ppc/dsputil_ppc.c libavcodec/ppc/idctdsp.c libavcodec/x86/Makefile libavcodec/x86/dsputil_init.c libavcodec/x86/dsputil_mmx.c libavcodec/x86/dsputil_x86.h Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * dsputil: Split off IDCT bits into their own contextDiego Biurrun2014-06-301-1/+1
| |
* | Merge commit 'a871ef0cc936612bdb0e643196be72efcf0c8986'Michael Niedermayer2014-05-111-1/+1
|\| | | | | | | | | | | | | | | | | | | * commit 'a871ef0cc936612bdb0e643196be72efcf0c8986': hwaccel: Rename priv_data_size to frame_priv_data_size Conflicts: libavcodec/avcodec.h Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * hwaccel: Rename priv_data_size to frame_priv_data_sizeAnton Khirnov2014-05-111-1/+1
| | | | | | | | This describes more accurately what this field is for.
* | Merge remote-tracking branch 'qatar/master'Michael Niedermayer2014-04-091-4/+4
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * qatar/master: mpegvideo: operate with pointers to AVFrames instead of whole structs Conflicts: libavcodec/h261dec.c libavcodec/h263dec.c libavcodec/intrax8.c libavcodec/mpeg12enc.c libavcodec/mpegvideo.c libavcodec/mpegvideo.h libavcodec/mpegvideo_enc.c libavcodec/mpegvideo_motion.c libavcodec/mpegvideo_xvmc.c libavcodec/msmpeg4.c libavcodec/ratecontrol.c libavcodec/vaapi.c libavcodec/vc1dec.c libavcodec/vdpau_vc1.c See: fc567ac49e17151f00f31b59030cd10f952612ef Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * mpegvideo: operate with pointers to AVFrames instead of whole structswm42014-04-091-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | The most interesting parts are initialization in ff_MPV_common_init() and uninitialization in ff_MPV_common_end(). ff_mpeg_unref_picture and ff_thread_release_buffer have additional NULL checks for Picture.f, because these functions can be called on uninitialized or partially initialized Pictures. NULL pointer checks are added to ff_thread_release_buffer() stub function. Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
| * dxva2: Directly use AVFramesMichael Niedermayer2014-04-011-4/+4
| | | | | | | | | | | | | | The assumption of (MPEG) Picture and H264Picture layout matching might not hold true in the future. Signed-off-by: Hendrik Leppkes <h.leppkes@gmail.com>
* | avcodec/dxva2: fix pointers after H264PictureMichael Niedermayer2014-03-171-4/+4
| | | | | | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | Merge commit 'e0c16e4e3259cf50b5bac4c23bb6e517f397c74b'Michael Niedermayer2014-03-171-0/+1
|\| | | | | | | | | | | | | | | | | | | | | | | | | * commit 'e0c16e4e3259cf50b5bac4c23bb6e517f397c74b': mpegvideo: move mpegvideo formats-related defines to mpegutils.h Conflicts: libavcodec/h264_cabac.c libavcodec/h264_cavlc.c libavcodec/h264_mvpred.h libavcodec/svq1enc.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * mpegvideo: move mpegvideo formats-related defines to mpegutils.hVittorio Giovara2014-03-161-0/+1
| |
* | Merge commit 'b66382101cff33e2ce66500327a90d0a105eedeb'Michael Niedermayer2014-03-071-2/+5
|\| | | | | | | | | | | | | | | * commit 'b66382101cff33e2ce66500327a90d0a105eedeb': dxva2: Increase maximum number of slices for mpeg2 See: bceeccc648baf94a02b7b2c53e44bf77a47773ef Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * dxva2: Increase maximum number of slices for mpeg2Rainer Hochecker2014-03-061-3/+6
| | | | | | | | | | | | | | | | | | Some content requires an higher number of slices in order to render properly. Rise the number to 1024 and warn if ever it exceeds. Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
* | dxva2: bump maximum number of slieces for mpeg2Rainer Hochecker2014-01-271-1/+1
| | | | | | | | | | | | Suggested by heleppkes on https://trac.ffmpeg.org/ticket/3133 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | avcodec/dxva2_mpeg2: Use skip_1stop_8data_bits()Michael Niedermayer2013-10-301-2/+1
| | | | | | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | Merge commit 'ad0c9f2d5d81e22207c6ccecc426bf7306acc327'Michael Niedermayer2013-03-081-4/+4
|\| | | | | | | | | | | | | | | | | | | | | * commit 'ad0c9f2d5d81e22207c6ccecc426bf7306acc327': lavc: move AVFrame.hwaccel_picture_private to Picture. Conflicts: libavcodec/avcodec.h libavcodec/mpegvideo.h Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * lavc: move AVFrame.hwaccel_picture_private to Picture.Anton Khirnov2013-03-081-4/+4
| | | | | | | | | | This field is private and should not be present in a public struct. It is only used in DXVA with mpegvideo-based decoders currently.
* | Merge remote-tracking branch 'qatar/master'Michael Niedermayer2013-03-061-9/+9
|\| | | | | | | | | | | | | | | | | | | * qatar/master: hwaccel: consistent name prefixes for start_frame/end_frame/decode_slice Conflicts: libavcodec/vda_h264.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * hwaccel: consistent name prefixes for start_frame/end_frame/decode_sliceDiego Biurrun2013-03-051-9/+9
| | | | | | | | | | Some hwaccels use name prefixes, some do not, others only use them for some codecs. Add prefixes everywhere for consistency.
* | Merge remote-tracking branch 'qatar/master'Michael Niedermayer2013-02-161-4/+8
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * qatar/master: h264: deMpegEncContextize Conflicts: libavcodec/dxva2_h264.c libavcodec/h264.c libavcodec/h264.h libavcodec/h264_cabac.c libavcodec/h264_cavlc.c libavcodec/h264_loopfilter.c libavcodec/h264_mb_template.c libavcodec/h264_parser.c libavcodec/h264_ps.c libavcodec/h264_refs.c libavcodec/h264_sei.c libavcodec/svq3.c Merged-by: Michael Niedermayer <michaelni@gmx.at>