* 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]
- 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]
- 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.
[ROCm/rocdecode commit: 10e3f0aeec]
* * 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.
[ROCm/rocdecode commit: cd6401750e]
* * 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.
[ROCm/rocdecode commit: 426067898c]
* * rocDecode: Fixed display aspect ratio calculation.
- We were assigning sample aspect ration (SAR) from VUI directly to display aspect ratio (DAR). Now we follow the correct procedure.
* * rocDecode: Fixed an error in display aspect ratio calculation. Should include sample aspect ratio in the final step.
[ROCm/rocdecode commit: cf82317396]
* * rocDecode/AVC: Added new sequence notification callback.
* * rocDecode/AVC: Removed the commented out code.
* * rocDecode/AVC: Changed function name to better describe the operation.
* * rocDecode/AVC: Minor formatting change.
[ROCm/rocdecode commit: a7bb9953c6]
- Moved HEVC standard specific defines out of HevcVideoParser class to a new file.
- Changed some namings to be more specification compliant.
- No functional changes.
[ROCm/rocdecode commit: 2a4026470f]
* * rocDecode/HEVC: Fixed a couple of errors in long term reference picture set parsing and long term reference picture list construction.
* * rocDecode/HEVC: Coding format change: removed newline in front of else statements. No functional changes.
[ROCm/rocdecode commit: c5483c751e]
- 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.
[ROCm/rocdecode commit: 33d6b37ddb]
- Removed a size check which was put in in early bring up stage and causes some conformance stream failures.
- Also capped the DPB buffer size to 16 when we increase it from the spec value.
[ROCm/rocdecode commit: 6db0b79144]
* * rocDecode/HEVC: Fixed a POC calculation error in some corner cases.
* * rocDecode/HEVC: Added a newline between two functions. No functional changes.
[ROCm/rocdecode commit: 1cdbac7d70]
* * 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.
* *rocDecode/HEVC: Fixed a bug in reference picture list modification parsing.
- This fixed the test failure of two conformance streams.
[ROCm/rocdecode commit: c9cfcde12d]
* * 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.
[ROCm/rocdecode commit: 0fbd030b5d]
- This stream tests output order conformance, in particular the bumping process. Four temporal layers are used and IRAP pictures with no_output_of_prior_pics_flag equal to 1 are present in the bitstream.
[ROCm/rocdecode commit: 42f109369e]
* create VABuffers for every submission, and don't use vaMapBuffer/vaUnmapBuffer
* code clean up
* address review comments
[ROCm/rocdecode commit: b77d00e38e]
- Skip the additional buffer bumping specified in process C.5.2.2., to avoid synchronous job submission in some cases.
- Increase DPB buffer size now by 2 to avoid overwriting pictures to be output.
[ROCm/rocdecode commit: a2dfa8bc26]
* Add support for rocDecReconfigureDecoder API
* adrress reviewer's comemnts
* Add doxygen comment for ReconfigureDecoder function
[ROCm/rocdecode commit: 875994bb4f]
- Re-wrote short term RPS parsing function. The previous code generates incorrect results on some conformance streams.
- No longer skip the additional buffer bumping specified in process C.5.2.2. This avoids the situation where the current frame overwrites the previously decoded buffer that is being output/displayed.
[ROCm/rocdecode commit: 5e65788bdd]
* clean up - use google style guide for the RocDecoder class
* make other files/classes to follow the google style guides
[ROCm/rocdecode commit: 48474fdad9]
- It appears that the root cause of the corruption is the loss of some reference info of the RASL pictures at VA-API driver level.
- For reasons that are not documented in VA-API, or simply implementation limitations, the DPB buffer status when a CRA picture is decoded, needs to be sent to VA-API driver to the correct decoding of the associated RASL pictures. The info is stored in PocStFoll and PocLtFoll and is not needed for CRA picture decode, which is an intra picture. Without this info, the following RASL picture decode will run into problem even when its reference picture info is correctly specified.
- Note this appears to be a VA-API specific issue because it did not occur on other platforms.
[ROCm/rocdecode commit: 2d14eb61b2]