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

185 Коммитов

Автор SHA1 Сообщение Дата
jeffqjiangNew 9d96ca1354 * rocDecode/VP9: Increased DPB buffer size to handle streams with the maximum number of the reference frames allowed. (#488)
- DPB buffer size was set to NUM_REF_FRAMES(8) which can not handle streams with 8 reference frames. We increase DPB size from 8 to 10 (same strategy as AV1) to be able to handle these streams.

[ROCm/rocdecode commit: 9c113d5ee9]
2025-01-07 20:43:49 -05:00
jeffqjiangNew 733f676b3b * rocDecode/VP9: Fixed issues with filter parameters. (#487)
- Fixed a condition check in loop filter frame init process.
 - Removed the redundant conversion in interpolation filter assignment in VAAPI. The conversion has been done already when we parse the interpolation filter syntax.

[ROCm/rocdecode commit: 888940f52c]
2025-01-06 12:33:12 -05:00
Aryan Salmanpour c597fb2a4c Update Copyright year to 2025 (#486)
* Update Copyright year to 2025

* update year to 2025

[ROCm/rocdecode commit: 3624040ce7]
2025-01-05 16:25:39 -05:00
jeffqjiangNew 6bcc0a4067 * rocDecode/HEVC: Added in stream DPB buffer size change detection and handling. (#482)
[ROCm/rocdecode commit: 5336913a09]
2024-12-19 17:29:52 -05:00
Aryan Salmanpour af9338cb65 Add support for mapping GPU UUIDs to render nodes (#481)
* Add initial support for mapping uuid to render ndodes

* use uuid to find the render node

* Adjust offset for MI300 partition modes

* code cleanup

[ROCm/rocdecode commit: 0b24f96bbb]
2024-12-19 14:12:57 -05:00
Aryan Salmanpour abf59d439a Add support for ROCR_VISIBLE_DEVICES environment variable (#478)
[ROCm/rocdecode commit: e3816a23e6]
2024-12-17 12:04:59 -05:00
David Rosca 2a4a772f41 Create surfaces with linear modifier (#465)
Mesa will be enabling tiling for all VA surfaces by default,
but HIP doesn't support modifiers for dmabuf import.

[ROCm/rocdecode commit: 80e08f47c2]
2024-12-09 14:46:57 -05:00
Aryan Salmanpour 1f890c442e Use a pointer for the horizontal_pitch parameter in the rocDecGetVideoFrame API (#475)
[ROCm/rocdecode commit: 91ab3b1577]
2024-12-05 19:22:07 -05:00
Aryan Salmanpour e5f513c9d6 Update rocDecode dispatch table for bit stream reader APIs (#471)
[ROCm/rocdecode commit: 37794d045f]
2024-12-05 14:40:17 -05:00
jeffqjiangNew c8a16141e4 Added the bit stream reader feature. (#433)
* * rocDecode/ES parser: Added elementary stream file parser for HEVC and AVC.

* * rocDecode/ES parser: Added elementary stream file parser for AV1. Also cleaned up the bitstream ring buffer code.

* * rocDecode/ES parser: Added the IVF container file parser for AV1. Also fixed a bug in fill ring buffer function.

* * rocDecode/ES file parder: Added supported stream type detection.
 - The stream type detection checks the unique syntax patterns of the stream type and calculate the likeliheed score. Based on the score, the most likely type is determined.
 - The current supported stream types are: AVC/HEVC/AV1 elementary streams, IVF AV1 streams.

* * rocDecode/ES file parser: Fixed an AVC decode regression due to a copy and paste error.

* * rocDecode/ES file parser: Added bit depth parsing for codec support check; Added stronger AV1 detection for IVF AV1 stream type.

* * rocDecode/ES file parser: Removed debugging logs.

* * rocDecode/ES file parser: Added exmaple code to use the built-in file parser.

* * rocDecode/Bitstream reader: Renamed the elementary parser feature to bitstream reader and re-organized the code.
 - Moved the bitstream reader code to rocDecode core lib from utility.
 - Added bitstream reader interface in parallel with rocDecode parser and decoder interfaces.

* * rocDecode/Bitstream reader: Added sample to use bitstream reader, instead of FFMPEG demuxer, to get picture data. Also reverted the original sample app back to using FFMPEG demuxer only.

* * rocDecode/Bitstream reader: Renamed the new sample app.

* * rocDecode/Bitstream reader: FFMPEG dependency reduction.
 - Moved MD5 functions out of RocVideoDecoder utility class. This removed RocVideoDecoder's dependency on FFMPEG.
 - Added the new MD5 utility, which depends on FFMPEG lib. MD5 message digest generation is now performed in the MD5 utility.
 - Modified decode sampples that uses MD5 generation function.
 - Removed FFMPEG dependency from video decoder basic sample.

* * rocDecode/Bitstream reader: Added option to use bitstream reader to video decode sample and conformance test script. Added the missing destroy bitstream reader call in video decode basic sample.

* * rocDecode/Bitstream reader: Minor format change. No functional changes.

* * rocDecode/Bitstream reader: Added handling of unsupported stream file type by the bitstream reader to decode sample apps.

* * rocDecode/Bitstream reader: Fixed build errors of several samples.

* * rocDecode/Bitstream reader: Added changes based on review comments.

* * rocDecode/Bitstream reader: File name changes based on review comments.

* * rocDecode/Bitstream reader: Moved MD5 code into single header file. Added changes based on review comments.

* * rocDecode/Bitstream reader: Removed redundant path.

* * rocDecode/Bitstream reader: Changed rocDecode version to 0.10.0. Added minor changes based on review comments.

---------

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

[ROCm/rocdecode commit: e62aa3e09b]
2024-12-05 09:46:24 -05:00
Aryan Salmanpour dfa22cbbe1 Add support for rocDecode APIs dispatch table (#462)
[ROCm/rocdecode commit: 3dfb669f57]
2024-11-27 16:14:30 -05:00
jeffqjiangNew b7df2fb2b9 VP9: Inter decode is up and running. (#460)
* * rocDecode/VP9: Inter decode is up and running.
 - Added reference list setup for VA-API.
 - Added update reference frame process (8.10).
 - Added set up past independence function.
 - Added DPB and decode pool management.
 - Added display management.
 - Added super frame detection and parsing.
 - Added VA-API parameter logging functions for debugging purposes.

* * rocDecode/VP9: Minor change: removed an extra newline.

* * rocDecode/VP9: Removed todo comments. No functional changes.

* * rocDecode/VP9: Minor changes based on review comments.

* * rocDecode/VP9: Minor changes based on review comment.

[ROCm/rocdecode commit: 3e6f18c636]
2024-11-25 13:51:25 -05:00
jeffqjiangNew f7cffa4db2 HEVC: Cut HEVC parser creation time from about 40 milliseconds to about 50 microseconds. (#458)
* * rocDecode/HEVC: Cut HEVC parser creation time from about 40 milliseconds to about 50 microseconds.

* * rocDecode/HEVC: Added necessary parameter init in parser constructor.

---------

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

[ROCm/rocdecode commit: 27e9ed23ed]
2024-11-19 15:10:35 -05:00
jeffqjiangNew dfcad4048d * rocDecode/HEVC: Fixed an issue in RPS decode function. (#455)
- In searching for a short term reference picture in DPB, we need to make sure it is used.

[ROCm/rocdecode commit: 85faa096e5]
2024-11-15 15:41:50 -05:00
jeffqjiangNew 04c28ec306 Added initial code for VP9 support. (#442)
* * rocDecode/VP9: Initial code for VP9.
 - Added structures for VA-API.
 - Added defines for uncompressed header and parsing functions.

* * rocDecode/VP9: Added decode frame call to VA-API.

* * rocDecode/VP9: Added new sequence notification function.

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

* * rocDecode/VP9: Minor changes based on review comments.

---------

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

[ROCm/rocdecode commit: 3eb6bc2192]
2024-11-14 10:17:46 -05:00
jeffqjiangNew d30754651f * rocDecode/HEVC: Added empty NAL detection. (#452)
[ROCm/rocdecode commit: b3f8fec41b]
2024-11-13 13:28:29 -05:00
Rajy Rawther 3344bee39d Added bitstream validation code for HEVC parser (#450)
* fix for while loop hang

* fix for while loop hang

* add more data validation code in parser

* minor change

* addressed review comments

* fix conformance failures with new code

* added more checks

[ROCm/rocdecode commit: 69ec7af8bd]
2024-11-11 17:33:17 -05:00
Kiriti Gowda bd3b6208fa GPU Arch Updates (#448)
[ROCm/rocdecode commit: 69eb625d2d]
2024-11-06 20:37:07 -05:00
Rajy Rawther c238421b51 fix for while loop hang (#447)
[ROCm/rocdecode commit: 5820f38592]
2024-11-06 14:41:57 -05:00
jeffqjiangNew f3f91675ff * rocDecode/AV1: Fixed an errror in get Q index function during code inspection. (#438)
[ROCm/rocdecode commit: d9b235db5a]
2024-10-24 11:51:22 -04:00
Rajy Rawther 6837a86bf5 Add new API rocDecParserMarkFrameForReuse() for Parser (#430)
* added new API to release video frame for decoder and parser

* removed ReleseFrame() from low level parser classes

* Removed rocDecReleaseFrame() from decoder and added in parser

* address review comments

* revert un-necessary files

* minor fix

* remove unused function

* minor formatting fix

[ROCm/rocdecode commit: 29bfe5e3bd]
2024-10-09 13:29:08 -04:00
Kiriti Gowda aaa794a807 Support GFX12 (#423)
[ROCm/rocdecode commit: eb5f2da4ae]
2024-09-17 10:47:17 -04:00
jeffqjiangNew 29cfd4a541 Added real decode speed report to set it apart from the current output speed report in sample apps (#409)
* * rocDecode: Added real decode speed report.
 - The current decode speed report is actually output/display speed report.
 - Due to AV1's extensive use of alternate reference frames that are not display, AV1 decoded frame count and output/displayed frame count can be quite different, making the current speed report not an accurate decode speed measurement.
 - We now added the actual decode speed report, besides the existing speed report, now called output/display FPS.

* * rocDecode: Added real decode speed report.
 - The current decode speed report is actually output/display speed report.
 - Due to AV1's extensive use of alternate reference frames that are not display, AV1 decoded frame count and output/displayed frame count can be quite different, making the current speed report not an accurate decode speed measurement.
 - We now added the actual decode speed report, besides the existing speed report, now called output/display FPS.

* * rocDecode/Sample script: Added missing changes for sample_mode 0 case.

[ROCm/rocdecode commit: 6253248188]
2024-08-20 17:43:33 -04:00
jeffqjiangNew b74bd7db16 * rocDecode/AV1: Performance improvement: prevent synchronous decode submissions. (#406)
- Set the display delay to DECODE_BUF_POOL_EXTENSION (2) to avoid immediate output/display of a decoded frame.

[ROCm/rocdecode commit: a863ee26a9]
2024-08-12 10:29:43 -04:00
jeffqjiangNew 3b31e617ea AV1: Fixed an issue with multiple tile group OBUs per picture cases. (#404)
* * rocDecode/AV1: Fixed an issue with multiple tile group OBUs per picture cases.
 - We now use the single base pointer for all tiles in all tile group OBUs and submit them once per picture.

* * rocDecode/AV1: Fixed a typo.

[ROCm/rocdecode commit: 30ee6787b2]
2024-08-07 10:16:17 -04:00
jeffqjiangNew 4fb2028910 * rocDecode/AV1: Fixed a bug in set frame refs process that triggers a conformance error check later. (#400)
[ROCm/rocdecode commit: 6a75dc4dcf]
2024-07-29 17:16:21 -04:00
jeffqjiangNew 93c3e5e9ec * rocDecode/AV1: Fixed a surface size issue in upscaling cases. (#399)
[ROCm/rocdecode commit: d0924490a8]
2024-07-26 12:24:32 -04:00
jeffqjiangNew 273d03c3d0 Added the missing presentation time stamp (pts) to decode return info for displayed pictures. (#398)
* * rocDecode: Added the missing pts to decode return info for decoded pictures.

* * rocDecode: Added the missing pts to decode return info for decoded pictures.

[ROCm/rocdecode commit: 4f8191edc0]
2024-07-25 16:53:20 -04:00
jeffqjiangNew cd308e3fa8 * rocDecode/AV1: Added support for getting frame size from reference frames case. Fixed the data type of several quantization parameters. (#397)
[ROCm/rocdecode commit: 96944030aa]
2024-07-25 14:55:14 -04:00
Lakshmi Kumar cbe6399706 va version bug fix for ub20 (#396)
[ROCm/rocdecode commit: 69dead95cd]
2024-07-23 18:19:55 -04:00
Aryan Salmanpour 19589a4f2f Fix a compilation issue in RHEL8 (#394)
[ROCm/rocdecode commit: d2ef14606c]
2024-07-23 10:48:15 -04:00
jeffqjiangNew 1c82e1c680 Enabled AV1 decode by default. (#391)
* * rocDecode/AV1: Enabled AV1 decode by default.

* * rocDecode/AV1: Added changes suggested in code review.
 - Bumped up rocDecode version to 0.7.0.
 - Added AV1 support statement in readme file.

[ROCm/rocdecode commit: 96c65d74a6]
2024-07-22 12:32:12 -04:00
jeffqjiangNew dd1ac04a55 AV1: Fixed build error on RHEL8 due to older VAAPI version. (#392)
* * rocDecode/AV1: Fixed build error on RHEL8 due to older VAAPI version.

* * rocDecode/AV1: Fixed build error on RHEL8 due to older VAAPI version.

* * rocDecode/AV1: Set VA profile for AV1 for older VAAPI versions where it is not defined.

* * rocDecode/AV1: Made rocDeocde AV1 built on VAAPI versions below 1.6.0 runnable with newer versions, to be able to test under RHEL8.

[ROCm/rocdecode commit: 1e5e9dacac]
2024-07-22 12:29:41 -04:00
jeffqjiangNew 21461a03fe * rocDecode/AV1: Added support for film grain synthesis and several other fixes. (#389)
- Added film grain parameter saving and loading procedures.
 - Added buffer management for film grain synthesis output.
 - Fixed the corruption issue with 10-bit film grain streams. We need to see surface attibutes based on pixel format when creating VAAPI surfaces.
 - Added missing global motion, loop filter and segmentation parameter loading in load reference frame procedure.
 - Fixed an issue with one tile streams.
 - Fixed an issue with un-initialized frame header structure after frame decode.
 - Fixed a bug with decode buffer status update.

[ROCm/rocdecode commit: ac82d17e9f]
2024-07-19 21:01:36 -04:00
jeffqjiangNew f97829618c AV1: Added a few changes to enable general testing (non-film-grain). (#383)
* * rocDecode/AV1: Added a few changes to enable general testing (non-film-grain).
 - Added show existing frame support.
 - Added load_previous() function.
 - Added more operations to reference frame update process.
 - Added reference frame loading process.
 - Added decode frame wrapup process.
 - Added DPB recycling.
 - Added DPB content logging funcion for debugging purposes.

* * rocDecode/AV1: Removed a line which was added accidentally in the previous commit.

[ROCm/rocdecode commit: a36dd186df]
2024-07-15 10:40:59 -04:00
jeffqjiangNew 3d63690aeb * rocDecode/AV1: Fixed the decoded image surface size issue with 10-bit streams. (#378)
- The root cause is that the bit depth idx parameter setup is missing in VA-API picture parameter setup.

[ROCm/rocdecode commit: a91dcdc72f]
2024-06-28 13:52:36 -04:00
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