* * rocDecode/AVC: Added initial AVC parser.
- Added AVC SPS, PPS and slice header parsing functions.
- Merged common parsing code from AVC and HEVC parsers to their super class.
* * rocDecode/AVC: Formating changes. No functional changes.
- Moved HEVC standard specific defines out of HevcVideoParser class to a new file.
- Changed some namings to be more specification compliant.
- No functional changes.
* * 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.
- 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.
- 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.
* * rocDecode/HEVC: Fixed a POC calculation error in some corner cases.
* * rocDecode/HEVC: Added a newline between two functions. No functional changes.
* * 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.
* * 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.
- 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.
- 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.
- 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.
- 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.
- When we hit IRAP (Intra Random Access Point) picture and need to bump all remaining decoded pictures from DPB, call display callback immediately, instead of delaying the callback to the IRAP decode process.
* * rocDecode/HEVC: Added picture output operation in DPB and display callback function.
- To avoid serialization of decode submissions and/or display callback in certain cases, increased DPB buffer size by 1 and tweaked picture bumping procedure.
* * rocDecode/HEVC: Added flushing of the remaining pictures from DPB at the end of decode session.
* * rocDecode/HEVC: Changed output_pic_num to num_output_pics to void some confusion. Set top_field_first to 1.
* * rocDecode/HEVC: Added a few return error checks.
* * rocDecode/HEVC: Added picture output operation in DPB and display callback function.
- To avoid serialization of decode submissions and/or display callback in certain cases, increased DPB buffer size by 1 and tweaked picture bumping procedure.
* * rocDecode/HEVC: Added a few error checks and minor format changes.
* * rocDecode/HEVC: Re-enabled SEI message processing.
- Added "-sei" command option to extract SEI messages from stream.
- Added support for SEI info parsing for multiple SEI NAL units with multiple payloads.
- Fixed a SEI syntax parsing issue and several procssing issues.
- Fixed a double free memory issue in SEI data buffer handling in HandlePictureDisplay().
* * rocDecode/HEVC: Coding format changes.
* * rocDecode/HEVC: Minor format changes.
* commending out ParseSeiMessage because it is causing segfault
* CMake changes for valgrind
* added function pointer validity for sei callback
* fix review comments
Root cause: num_entry_point_offsets in the slice header of frame #2164 is 674, exceeding the entry_point_offset_minus1[440] array size. Parser writes beyond the array boundary, corrupting memory. Frame #2164 is not in conformance of the HEVC spec.
We need to put the constraint from the spec on the num_entry_point_offsets parsed from the stream. Also need to change the array size to the max possible for 8K.
* * rocDecode/HEVC: Fixed a bug in IRAP picture order count calculation. Added a few picture type check utilities.
* * rocDecode/HEVC: Minor coding style changes. No functional changes.
* * 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.