Commit Graph

50 Commits

Author SHA1 Message Date
jeffqjiangNew 00127f16f1 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.
2024-02-09 15:09:49 -05:00
jeffqjiangNew 2576eb4390 * rocDecode: Set MI2xx(VCN2.6) HEVC max decode resolution to 7680x4320. (#228) 2024-02-08 10:54:07 -05:00
Aryan Salmanpour 730f3b76d4 Return ROCDEC_NOT_IMPLEMENTED for GetDecoderCaps API for future GPU (#224) 2024-02-06 16:18:02 -05:00
Aryan Salmanpour 15526253c7 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) 2024-02-06 13:35:41 -05:00
Aryan Salmanpour 38f50a1a10 rename roDecMapVideoFrame to rocDecoGetVideoFrame and some other minor code cleanups (#222) 2024-02-06 11:38:54 -05:00
Aryan Salmanpour 929123abff 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
2024-02-05 17:12:39 -05:00
Aryan Salmanpour e90a93eb4a use the error code of VA_STATUS_ERROR_TIMEDOUT to avoid build failure with older va headers (#211) 2024-01-30 13:33:53 -05:00
jeffqjiangNew a55b967f86 * rocDecode: Removed warning message about vaSyncSurface() time out error. (#209) 2024-01-29 14:21:21 -05:00
jeffqjiangNew 10e3f0aeec * rocDecode: Added back vaSyncSurface() to ExportSurface() call to guarantee decode completion. (#205)
- Needed to take care of time out case. Current implementation of vaSyncSurface() does not block indefinitely (contrary to VA-API spec), it returns VA_STATUS_ERROR_TIMEDOUT error when it blocks for a certain amount of time. Although time out can come from various reasons, we treat it as non-fatal and contiue waiting.
2024-01-26 11:48:30 -05:00
jeffqjiangNew cd6401750e Changed rocDecode API header variable naming to Google C++ style. (#196)
* * rocDecode: Changed rocDecode API header variable naming to Google C++ style.

* * rocDecode: Unified AVC/H264 naming to AVC. Minor naming changes on HEVC related names.

* * rocDecode: Minor comment fix based on code review.
2024-01-24 18:03:46 -05:00
jeffqjiangNew 426067898c AVC: Added decode picture callback from parser to decoder and VAAPI decode submission. (#190)
* * rocDecode/AVC: Added decode picture callback from parser to decoder and VAAPI decode submission.

* * rocDecode/AVC: Minor changes based on code review comments.

* * rocDecode/AVC: Removed a redundant line.

* * rocDecode/AVC: Condensed several lines based on code review feedback.
2024-01-23 17:30:29 -08:00
Lakshmi Kumar a65c52bc71 fixes crashes from vaSyncSurface call (#195) 2024-01-22 15:43:11 -08:00
Aryan Salmanpour f7997b716d Add support for rocDecGetErrorName for getting the rocDecStatus error string (#185)
* Add support for rocDecGetErrorName for getting the rocDecStatus error string

* Add description of the API
2024-01-17 14:00:54 -05:00
Aryan Salmanpour f7fce4d9b4 Print the vaapi error name string instead of the vaapi status integer for better clarity if a vaapi failure occurs (#182) 2024-01-17 11:06:34 -05:00
Aryan Salmanpour 1a77f3d1b0 Print the hip error name string instead of the hip status integer for better clarity of a hip failure occurs (#181) 2024-01-17 10:52:48 -05:00
Aryan Salmanpour b188989f3f Remove unnecessary device id check (#180) 2024-01-17 10:27:06 -05:00
Aryan Salmanpour fb953b4366 Add support to correctly detect the gfx name for gfx940/gfx941/gfx942 (#178) 2024-01-16 14:49:54 -05:00
Aryan Salmanpour 3d28911453 Remove unsupported GPUs (#175) 2024-01-15 10:50:34 -08:00
Aryan Salmanpour 28c00cb354 Add support for gfx1101 and gfx1102 (#165) 2024-01-10 14:17:04 -05:00
jeffqjiangNew 04fe74f390 * rocDecode: Updated Copyright message for 2024. (#160) 2024-01-09 20:47:16 -05:00
Aryan Salmanpour 224e98ab2d code cleanup - remove unused hipstream from the RocDecoder class (#155) 2024-01-08 14:54:28 -05:00
jeffqjiangNew 33d6b37ddb * rocDecode/HEVC: Fixed a bug in destroy data buffer function in VAAPI layer. (#150)
- We have to clear the buffer id after destroying it. Without this clearing, we will encounter VAAPI buffer destroy failure on certain conformance streams where scaling list is signaled dynamically. In this case, we create different number of data buffers on different frames. If we do not clear the buffer id when destroying it, a dummy scaling list buffer id will have the same value as another buffer, resulting double destroy.
2024-01-02 15:56:18 -05:00
Aryan Salmanpour 6c07e53614 Check va_display_ to be valid before calling any VA APIs (#148) 2023-12-21 08:16:24 -08:00
jeffqjiangNew 0fbd030b5d Fixed the random crash associated with undecodable RASL pictures. (#141)
* * rocDecode/HEVC: Fixed the random crash associated with undecodable RASL pictures.
  - When a CRA picutre occurs, all the pictures in the DPB are emptied. However, the following RASL (Random Access Skipped Leading) picture can still reference these emptied pictures, making them undecodeble.
  - We initialized the reference picture lists with (0xFF), representing invalid picture index. Normally these invalid indices are replaced by valid values during RPS decoding. However, on undecodable RASL pictures, we can not find an existing reference picture in DPB, leaving the invalid index untouched and resulting invalid indexing later on.
  - Now we initialize the reference picture lists with a valid value 0. Also we add index range check on reference buffer at VA-API layer to avoid invalid memory access.

* * rocDecode/HEVC: Fixed a typo in sampel app message.
2023-12-15 15:54:43 -05:00
Aryan Salmanpour 9a78101d22 return the correct rocdec_status if DestroyDataBuffers fails (#137) 2023-12-13 10:57:14 -05:00
Aryan Salmanpour b8a8b66b91 Don't call DestroyDataBuffers during the reconfiguration - this function will be called during SubmitDecode (#131) 2023-12-11 17:10:10 -05:00
Aryan Salmanpour b77d00e38e Fix perf drop on some MI250 nodes - create VABuffers for every submission, and don't use vaMapBuffer/vaUnmapBuffer (#129)
* create VABuffers for every submission, and don't use vaMapBuffer/vaUnmapBuffer

* code clean up

* address review comments
2023-12-11 15:40:50 -05:00
Lakshmi Kumar f221d78258 adding support for MI300A A1 - gfx942 (#124) 2023-12-07 09:31:44 -05:00
Aryan Salmanpour 9257cd6fcf Add nullptr parameters check for all decoder/parser APIs and some code clean up (#120) 2023-12-05 13:06:34 -05:00
Aryan Salmanpour 875994bb4f Add support for rocDecReconfigureDecoder API (#116)
* Add support for rocDecReconfigureDecoder API

* adrress reviewer's comemnts

* Add doxygen comment for ReconfigureDecoder function
2023-12-05 11:16:32 -05:00
Aryan Salmanpour 48474fdad9 clean up - use google style guide for the RocDecoder class (#101)
* clean up - use google style guide for the RocDecoder class

* make other files/classes to follow the google style guides
2023-11-29 13:50:38 -05:00
Aryan Salmanpour 3625829546 Improve logging errors for VAAPI and HIP by including the API names and the status in the logs (#95)
* Improve logging errors for VAAPI and HIP by including the API names and the status in the logs

* clean up
2023-11-28 16:52:27 -05:00
Aryan Salmanpour e5d5bd4abb Return an error if the ExportSurface function fails. Add extra error logging in the destructor of the VaapiVideoDecoder class (#87) 2023-11-27 13:08:34 -05:00
Rajy Rawther 81abe58fb4 Rr/vaapi decoder mem check (#74)
* add some checks for buffer requirements

* address review comments
2023-11-17 17:33:12 -05:00
jeffqjiangNew 3357aba104 * rocDecode/HEVC: Fixed a few issues in reference list setup. Also looks like we need to use VA surface IDs on all buffers including the reference (need to confirm with VA driver team). (#61) 2023-11-14 11:42:13 -05:00
Aryan Salmanpour eb5614d250 Add support for the rocDecUnMapVideoFrame API (#58) 2023-11-13 12:54:32 -05:00
Aryan Salmanpour 730b80b600 Close fds after importing the surVAAPI face to HIP memory (#55) 2023-11-10 18:24:21 -05:00
jeffqjiangNew 3c7f29dab4 Added picture decode submission to VA-API driver. (#54)
* * rocDeocde/HEVC: Added several "reserved" fields to structs to match the corresponding VA-API structs.

* * rocDecode/HEVC: Added decode submission to VA-API driver.

* * rocDecode/HEVC: Corrected data buffer id type.
2023-11-10 17:15:47 -05:00
Aryan Salmanpour 7a90c0c054 Add support for rocDecMapVideoFrame API (#53) 2023-11-10 17:02:57 -05:00
Aryan Salmanpour 6ab31ce40e Add support for rocDecGetDecodeStatus API (#46) 2023-11-09 08:47:58 -05:00
Aryan Salmanpour 3a5fc3608b Add support to GetDecoderCaps to correctly return decoder caps for gfx arch names with a suffix (#43) 2023-11-08 10:25:45 -05:00
Aryan Salmanpour 2c940dd9d0 Add support for creating a vaapi context and surfaces for decoding (#41) 2023-11-07 13:47:53 -05:00
Aryan Salmanpour ba484a91a9 Create the correct render node names on MI300A/MI300X (#38) 2023-11-07 11:08:20 -05:00
jeffqjiangNew f56a64d832 Decode callback step 1: Added skeleton decode callback to get the flow going. (#39)
* * rocDecode/HEVC: Added skeleton decode callback to get the flow going.

* *rocDecode/HEVC: Added error handling for decode call.
2023-11-06 22:04:25 -05:00
Aryan Salmanpour f47fd89f62 Add support for gfx1100 - update the vcn lookup table (#34) 2023-11-02 22:05:17 -04:00
Aryan Salmanpour 32f854c159 Add support for rocDecCreateDecoder API (#28)
* Add support for rocDecCreateDecoder API

* check the decoder config support before initializing the vaapi

* rename RocdecDecoderCreateInfo to RocDecoderCreateInfo

* fix a typo
2023-11-01 09:22:46 -04:00
Aryan Salmanpour bf830a2678 Add support for the rocDecGetDecoderCaps API (#21)
* Add support for the rocDecGetDecoderCaps API

* move the RocDecVcnCodecSpec class to a new header file
2023-10-24 08:40:58 -04:00
Rajy Rawther d0e6743872 Rr/roc video decode class (#20)
* WIP: class implementation

* add more definitions

* rocvideodecode implementation

* formatting fixes

* address review comments
2023-10-23 12:16:45 -04:00
Aryan Salmanpour e5dec6dff4 Add initialization of the roc_decoder member variable in the DecHandle class constructor. (#13) 2023-10-13 15:53:35 -04:00
Rajy Rawther 4ea67e279d rocDecode api defintions added for decoder and parser (#6)
* rocDecode api defintions added for decoder and parser

* addressed review comments and changed struct names to CamelCase

* minot reformatting
2023-09-14 10:33:28 -04:00