Граф коммитов

149 Коммитов

Автор SHA1 Сообщение Дата
jeffqjiangNew a13ce87a9b * rocDecode/AV1: Basic inter decode is up and running. (#376)
- Added initial support for DPB and decode/display buffer management.
 - Added initial display support.
 - Added reference frame set up.
 - Fixed an issue with cdef_y_sec_strength/cdef_uv_sec_strength parsing. We should leave the conditional increment to VA-API driver or below due to VA-API formatting.

[ROCm/rocdecode commit: 54419dcca3]
2024-06-27 10:26:21 -04:00
jeffqjiangNew 5bdf7f6b8d AV1: Intra decode started to be up and running. (#372)
* * rocDecode/AV1: Added new sequence callback and submit decode calls.

* * rocDecode/AV1: Intra decode started to work.

* * rocDecode/AV1: Do not build PrintVaapiParams() in normal (non-debug) mode.

[ROCm/rocdecode commit: 2be11821fc]
2024-06-26 12:46:11 -04:00
jeffqjiangNew 679bd8ba7e * rocDecode/AV1: Fixed a bug in the calculation of the floor of the base 2 logarithm. (#367)
[ROCm/rocdecode commit: ac272886b1]
2024-06-10 14:02:10 -04:00
jeffqjiangNew 4a888ae0fb AV1: Added OBU parsing and frame data parsing. (#364)
* * rocDecode/AV1: Added OBU parsing at picture level.

* * rocDecode/AV1: Added a few todos and fixed a few issues in frame header parsing.

* * rocDecode/AV1: Minor changes based on code review.

* * rocDecode/AV1: Removed more empty lines.

[ROCm/rocdecode commit: 63d3245176]
2024-06-10 12:07:23 -04:00
Lakshmi Kumar 8fb1019406 RHEL - va version check for av1 (#365)
* rhel va version check for av1

* remove #else case

[ROCm/rocdecode commit: 4f8506daec]
2024-06-10 11:09:29 -04:00
Lakshmi Kumar 08f6417565 AV1: VA-API submission (#362)
* av1 va-api submission

* adding check for anchor_frames and current_diplay_picture

* check limits for memory errors

* review comment - remove unnecessary check

[ROCm/rocdecode commit: c70e98abb6]
2024-06-05 16:23:47 -04:00
jeffqjiangNew 3230cca447 rocDecode: Added decode buffer pool implementation for AVC and HEVC. (#355)
* * rocDecode: Initial check in for decode buffer pool.

* * rocDecode: All 135 streams pass.

* * rocDecode: Fixed a build error in debug mode.

* * rocDecode/HEVC: Removed two workaround in HEVC DPB management, after decode buffer pool implementa
tion.
 - WR 1: Conditional bumping (when max_num_reorder_pics > 0) to avoid synchronous job submission in
C.5.2.3.
 - WR 2: Add two more buffers in DPB to avoid buffer over-writing.

* * rocDecode/HEVC: Added display delay feature.

* * rocDecode/HEVC: Fixed the -z option issue within the context of the new decode buffer pool implementation.

* * rocDecode/HEVC: Removed redundent code.

* * rocDecode/AVC: Added decode buffer pool implementation for AVC.

* * rocDecode: Added a few changes.
 - Added display delay feature to AVC.
 - Removed a workaround for AVC: AVC_MAX_DPB_FRAMES was increased to 18. Now it is back to 16.
 - Removed a workaround for AVC: increased DPB buffer size by 2. Now it is back to normal.
 - Code format changes for HEVC.

* * rocDecode/AVC: Fixed the -z option issue within the context of the new decode buffer pool implementation.

* * rocDecode: Merged OutputDecodedPictures() method to upper class RocVideoParser.

* * rocDecode: Code cleanup. No functional changes.

* * rocDecode: Made decode buffer pool size adaptive.
 - Removed the hard coded decode buffer pool size set in the decoder.
 - Exposed the display delay parameter from RocVideoDecoder class to the user.
 - Now the decoder buffer pool size is determined from the DPB buffer size and display delay parameter.

* * rocDecode: Several changes based on code review.
 - Merged decode and display use status into one parameter.
 - Removed the surface index from DecodeFrameBuffer, which is now implicitly referred by the array index.
 - Changed a function name for better clarity.

* * rocDecode: Added a comment.

[ROCm/rocdecode commit: 61c8661b9c]
2024-05-31 13:14:02 -04:00
Aryan Salmanpour 4386ac884b Add support for handling exceptions while using the std::filesystem::recursive_directory_iterator (#358)
* FAdd support for handling exceptions while using the filesystem::recursive_directory_iterator

* use a common namesapce

[ROCm/rocdecode commit: 04a19c0aa9]
2024-05-29 16:32:51 -04:00
jeffqjiangNew 263f924405 * rocDecode/HEVC: Added error handling for the cases where there is no slice data in the decode payload. (#354)
[ROCm/rocdecode commit: 1ac4cf7f52]
2024-05-14 14:07:23 -04:00
Aryan Salmanpour 0bda4c3498 Fix compilation issues on distro without std::filesystem (#348)
[ROCm/rocdecode commit: bdb08ab644]
2024-05-08 14:45:32 -04:00
Aryan Salmanpour 6a33a32db7 Fix compilation issues on RHEL8 and SLES15.5 related to using std::filesystem (#342)
[ROCm/rocdecode commit: 1943aad663]
2024-05-06 21:12:23 -04:00
jeffqjiangNew 80eaa4963c * rocDecode: Removed the workaround for the previous non-blocking implementation of vaSyncSurface() in the driver, since the correct implementation has been put into the driver already. (#340)
[ROCm/rocdecode commit: 3ade0f31ff]
2024-05-06 17:40:15 -04:00
jeffqjiangNew 0ac8dd3bae * rocDecode: Set the correct surface format for high bit depths. (#339)
- No functional changes as surface format does not affect the actual allocation of the VA surface in this call due to IHV specific implementation. The app still needs to set the format correctly.

Co-authored-by: Aryan Salmanpour <aryan.salmanpour@amd.com>

[ROCm/rocdecode commit: 21ae1d010a]
2024-05-06 08:09:23 -04:00
jeffqjiangNew 4c64022b72 rocDecode: Added error handling of missing headers in cases where they are not parsed but referred in the frame decode process. One example is when frame seek is performed and the target picture is not a random access point. (#335)
* * rocDecode: Added error handling of missing headers in cases where they are not parsed but referred in the frame decode process. One example is when frame seek is performed and the target picture is not a random access point.

* * rocDecode/HEVC: Added some missing error handlings.

---------

Co-authored-by: Aryan Salmanpour <aryan.salmanpour@amd.com>

[ROCm/rocdecode commit: ba36534f1f]
2024-05-03 15:18:08 -04:00
jeffqjiangNew 5faecc9c59 * rocDecode/AVC: Added field picture support in reference list modification and adaptive referecne picture marking. (#332)
- 4 more conformance streams now pass.

Co-authored-by: Aryan Salmanpour <aryan.salmanpour@amd.com>

[ROCm/rocdecode commit: 0f905f527c]
2024-05-02 08:46:47 -04:00
jeffqjiangNew 3e74cd919b AVC: Added support for picture adaptive frame-field (PICAFF) feature. (#325)
* * rocDecode/AVC: Added initial field picture decode support.
 - 7 conformance streams pass.

* * rocDecode/AVC: Minor change based on review comment.

* * rocDecode/AVC: Fixed an issue with getting the decoded frame buffer index for the second field.
 - 10 more field conformance streams now pass.

* * rocDecode/AVC: Added support for picture adaptive frame-field feature.
 - 10 more field conformance streams now pass.

* * rocDecode/AVC: Added a missing change during last merge.

[ROCm/rocdecode commit: d2b742ab4b]
2024-05-01 08:29:26 -04:00
jeffqjiangNew 86ad715056 AVC: Added initial field picture decode support. (#323)
* * rocDecode/AVC: Added initial field picture decode support.
 - 7 conformance streams pass.

* * rocDecode/AVC: Minor change based on review comment.

* * rocDecode/AVC: Fixed an issue with getting the decoded frame buffer index for the second field.
 - 10 more field conformance streams now pass.

* * rocDecode/AVC: Changed from C type cast to C++ type cast.

[ROCm/rocdecode commit: bd4e410a8d]
2024-04-30 21:21:05 -04:00
jeffqjiangNew 5a4735ea87 * rocDecode/AVC: Added support for gaps in frame_num. (#319)
- Fixed decode failure of conformance stream MR3_TANDBERG_B.264.

[ROCm/rocdecode commit: a8bcc1e62f]
2024-04-19 16:51:41 -04:00
jeffqjiangNew e86a11681c AVC: Fixed the decode failure of conformance stream MR2_TANDBERG_E.264. (#314)
* * rocDecode/AVC: Fixed the decode failure of conformance stream MR2_TANDBERG_E.264.
 - Fixed a bug in memory management control operation 4 process.

* * rocDecode/AVC: Added the missing assignment of top/bottom POC of ref_pic_list_1 in VAAPI slice parameter struct. This change did not make any effective functional changes.

[ROCm/rocdecode commit: 4188000079]
2024-04-15 08:32:03 -04:00
jeffqjiangNew c76a8e6885 AV1: Added frame header and tile group OBU parsing. (#312)
* * rocDecode/AV1: Added frame header OBU parsing.

* * rocDecode/AV1: Added a missing function description.

* * rocDecode/AV1: Added tile group OBU parsing.

[ROCm/rocdecode commit: 6b03950181]
2024-04-11 09:01:54 -04:00
Aryan Salmanpour 960f662e31 Use the correct offset when creating render nodes on each partition mode on MI300 (#310)
* Use the correct offset when creating render nodes on each partition mode on MI300

* Use the correct offset when creating render nodes on each partition mode on MI300

* code clean up

[ROCm/rocdecode commit: f2d1ad75eb]
2024-04-09 18:17:02 -04:00
Pavel Tcherniaev 13d85bfab8 added frame rate calculation to AVC parser (#307)
* added frame rate calculation to AVC parser

* fixed typo in avc_parser.h and removed cout debug statements from avc_parser.cpp

* made all changes discussed with Jeff

---------

Co-authored-by: jeffqjiangNew <142832361+jeffqjiangNew@users.noreply.github.com>

[ROCm/rocdecode commit: f8bf587f92]
2024-04-05 08:15:15 -04:00
Aryan Salmanpour 36840419cc Enable decoding AVC (H.264) codec by default and enable CTest for it (#309)
[ROCm/rocdecode commit: 2d877cd357]
2024-04-04 19:47:35 -04:00
jeffqjiangNew 190f2d9d33 * rocDecode/AV1: Added stream syntax defines and sequence header parsing. (#306)
[ROCm/rocdecode commit: e96b782dcf]
2024-04-03 15:04:18 -04:00
jeffqjiangNew 036a24f829 * rocDecode/AVC: Added support for memory management control operation equal to 5 and fixed an issue in reference picture list modification. (#304)
Co-authored-by: Kiriti Gowda <kiritigowda@gmail.com>

[ROCm/rocdecode commit: d38931ddae]
2024-04-01 20:58:31 -04:00
Aryan Salmanpour 1269f81629 Add support for various partition modes on MI300 (#302)
* Add support for various partition modes on MI300

* code clean up

[ROCm/rocdecode commit: 30790842f1]
2024-03-28 21:40:45 -04:00
Lakshmi Kumar a05ef46999 av1 initial commit (#298)
[ROCm/rocdecode commit: 6265f675c1]
2024-03-26 18:59:15 -04:00
jeffqjiangNew f655289b43 * rocDecode/AVC: Fixed the decode failure of the conformance stream MR2_MW_A.264. (#297)
- We should always clear the number of short term and long term references in DPB buffer structure when IDR occurs.

[ROCm/rocdecode commit: 7cf22e5920]
2024-03-26 18:53:42 -04:00
Aryan Salmanpour 7d197c4c23 modify the condition of using visble_devices by making sure that the requsted device id is valid (#295)
[ROCm/rocdecode commit: 4d5497eec8]
2024-03-26 11:40:59 -04:00
Aryan Salmanpour 440f7cf313 code clean up - remove extra parentheses (#293)
[ROCm/rocdecode commit: f94422f722]
2024-03-25 15:11:43 -04:00
Aryan Salmanpour a633867d2d Add support for detecting visible devices before initializing va-api (#292)
[ROCm/rocdecode commit: cb4abfedec]
2024-03-25 14:31:02 -04:00
jeffqjiangNew 158a1a900c * rocDecode/AVC: Fixed an issue in reference list modification. We need to search all reference buffers in DPB, instead of the list of the current slice, for the replacement. (#284)
[ROCm/rocdecode commit: 44c14236ae]
2024-03-11 20:48:10 -04:00
jeffqjiangNew 6ef0d46f4a AVC: Added two decode error handlings. (#280)
* * rocDecode/AVC: Added two decode error handlings.
 - Exit with error when the stream is coded field pictures.
 - Exit with error when the stream has multiple slice groups. VCN HW does not support it.

* * rocDecode/AVC: Added a missing error return from the last commit.

---------

Co-authored-by: Aryan Salmanpour <aryan.salmanpour@amd.com>

[ROCm/rocdecode commit: 5c18444bcc]
2024-03-07 21:35:19 -05:00
Aryan Salmanpour 0cd3ed9aae Disable AVC codec support by default for 6.1 release (#264)
[ROCm/rocdecode commit: eced98721c]
2024-02-27 17:56:15 -05:00
jeffqjiangNew 1c4e9bb5f5 * rocDecode/AVC: Fixed a bug in more RBSP data check function. (#263)
[ROCm/rocdecode commit: a48fc69caf]
2024-02-27 17:37:32 -05:00
jeffqjiangNew ca1c6b59b7 * rocDecode/AVC: Added error handling for no slice data cases. (#261)
- At the end of some streams, the demuxer sends a picture payload of NAL units that do not contain slice data. In such cases, we return gracefully without causing a decoder error.

[ROCm/rocdecode commit: 244eb517ab]
2024-02-27 09:03:29 -05:00
jeffqjiangNew 401031ef31 AVC: Added adaptive memory control decoded reference picture marking process and a few fixes. (#256)
* * rocDecode/AVC: Added adaptive memory control decoded reference picture marking process. Other changes include:
 - Replaced part of reference list modification implementation with a cleaner and more correct logic. It was found that the steps suggested
in the spec resulted errors on some streams.
 - Fixed an issue in reference picture list construction. We still need to do picture number calculation (8.2.4.1) for I pictures.
 - Fixed a bug in VAAPI slice parameter setup for ref list 1 for B pictures.

* * rocDecode/AVC: Fixed the scaling list setup for VAAPI.
 - Put the scaling list in zig-zag scan order.

* * rocDecode/AVC: Added adaptive memory control decoded reference picture marking process. Other changes include:
 - Replaced part of reference list modification implementation with a cleaner and more correct logic. It was found that the steps suggested
in the spec resulted errors on some streams.
 - Fixed an issue in reference picture list construction. We still need to do picture number calculation (8.2.4.1) for I pictures.
 - Fixed a bug in VAAPI slice parameter setup for ref list 1 for B pictures.

* * rocDecode/AVC: Fixed the scaling list setup for VAAPI.
 - Put the scaling list in zig-zag scan order.

* * rocDecode/AVC: Replaced Todo comments with error messages, based on code review.

[ROCm/rocdecode commit: f9c226ca84]
2024-02-26 10:07:40 -05:00
jeffqjiangNew 513ad63637 AVC: Added reference picture list modification. (#254)
* * rocDecode/AVC: Added reference picture list modification.

* * rocDecode/AVC: Removed a debug log.

---------

Co-authored-by: Aryan Salmanpour <aryan.salmanpour@amd.com>

[ROCm/rocdecode commit: 4709c0981f]
2024-02-22 08:53:29 -05:00
jeffqjiangNew 4c68b8c1fd * rocDecode/AVC: Added SEI message extraction support. Also merged common AVC and HEVC SEI support code to super class. (#250)
[ROCm/rocdecode commit: 9b006616ed]
2024-02-15 08:42:51 -05:00
jeffqjiangNew 11450f86ef AVC: Added DPB management, decoded picture output and display callback. (#244)
* * rocDecode/AVC: Added display callback implementation.

* *rocDecode/AVC: Fixed a few issues with decoded buffer output and bumping from DPB.

* * rocDecode: Name changes based on code review.

---------

Co-authored-by: Kiriti Gowda <kiritigowda@gmail.com>

[ROCm/rocdecode commit: ca3333f7b9]
2024-02-14 18:06:43 -05:00
jeffqjiangNew c919735380 * rocDecode/AVC: Added support for multiple slice parameter buffer submission for AVC multi-slice streams. (#234)
[ROCm/rocdecode commit: c496dfd3f2]
2024-02-12 10:22:42 -05:00
jeffqjiangNew cd37b816b6 Implemented proper slice parameter buffer submission for multiple slice streams. (#226)
* * rocDecode: Implemented proper slice parameter buffer submission for multiple slice streams.
 - We were submitting single slice parameter buffer for multiple slice streams. This works for other APIs but not for VAAPI, which requires to send slice parameter buffer once per slice.
 - At step 1, all the multi-slice structures are fixed sized (256). Will make them dynamic in the next step.
 - With this change, all 135 HEVC conformance streams now pass.

* * rocDecode: Multiple slice change step 2: make the fixed size slice info structure lists dynamic.

* * rocDecode: Minor changes in comments. No functional changes.

* *rocDecode: Changed INIT_SLICE_PARAM_LIST_NUM from 256 back to 16. 256 was set during debug process.

* * rocDecode: Add suggest changes from code review.

* * rocDecode: Moved slice_params_buf_id_ initialization to class VaapiVideoDecoder declaration, as suggested by code review.

[ROCm/rocdecode commit: 00127f16f1]
2024-02-09 15:09:49 -05:00
jeffqjiangNew 4c9d73f6af * rocDecode: Set MI2xx(VCN2.6) HEVC max decode resolution to 7680x4320. (#228)
[ROCm/rocdecode commit: 2576eb4390]
2024-02-08 10:54:07 -05:00
Aryan Salmanpour d7785b3d5e Return ROCDEC_NOT_IMPLEMENTED for GetDecoderCaps API for future GPU (#224)
[ROCm/rocdecode commit: 730f3b76d4]
2024-02-06 16:18:02 -05:00
Aryan Salmanpour 881d06a244 Enhance logging error in rocDecode library - let the upper level class prints the correct error code string instead of integer code from lower levels (#223)
[ROCm/rocdecode commit: 15526253c7]
2024-02-06 13:35:41 -05:00
Aryan Salmanpour c7f7a7c0e8 rename roDecMapVideoFrame to rocDecoGetVideoFrame and some other minor code cleanups (#222)
[ROCm/rocdecode commit: 38f50a1a10]
2024-02-06 11:38:54 -05:00
Aryan Salmanpour 18f165e424 Fix the performance issue introduced after PR#192 (#220)
* Fix the performance issue introduced after PR#192

* Destroy the current interop memories before reconfiguration

* initialize the interop to 0 after unmapping a surface

* code clean up

* check the mapped device mem/ext mem to be valid before destrying them

* code cleanup - add some comments

* make changes based on the reviewer comments

[ROCm/rocdecode commit: 929123abff]
2024-02-05 17:12:39 -05:00
jeffqjiangNew 39cc3e2a44 * rocDecode/AVC: Added initial B frame support. (#214)
- Basic B frames are decoded clean now.

[ROCm/rocdecode commit: 300be009de]
2024-02-01 09:58:00 -05:00
jeffqjiangNew 031c28105c * rocDecode/AVC: Fixed a few issues with P frame. (#212)
- Moved decoded reference picture marking after decode picture submission, according to the spec.
 - Fixed several errors in the decoding process.
 - Added two debug functions to log out DPB content and VAAPI buffer info.
 - P frames look good now.

[ROCm/rocdecode commit: 90cddfe655]
2024-01-31 09:10:41 -05:00
Aryan Salmanpour 119ee113c3 use the error code of VA_STATUS_ERROR_TIMEDOUT to avoid build failure with older va headers (#211)
[ROCm/rocdecode commit: e90a93eb4a]
2024-01-30 13:33:53 -05:00