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

203 Коммитов

Автор SHA1 Сообщение Дата
Kiriti Gowda 26a67fb210 CMake config - updates and fixes (#532)
* CMake Config - updates and fixes

* Version - Updates

* Changelog - updates

* Update CHANGELOG.md

Co-authored-by: spolifroni-amd <Sandra.Polifroni@amd.com>

---------

Co-authored-by: spolifroni-amd <Sandra.Polifroni@amd.com>

[ROCm/rocdecode commit: 6b026af151]
2025-03-17 12:38:01 -04:00
Aryan Salmanpour 68dee64275 Remove unused VA_CHECK_VERSION (#530)
[ROCm/rocdecode commit: d8e285ce1b]
2025-03-13 10:43:57 -04:00
jeffqjiangNew aacd035b6d HEVC: Added bit depth change support in decoder reconfiguration. (#527)
* * rocDecode/HEVC: Added bit depth change support in decoder reconfiguration.

* * rocDecode/HEVC: Removed a comment line.

* * rocDecode/HEVC: Updated change log.

* * rocDecode/HEVC: Used the reserved space in RocdecReconfigureDecoderInfo structure for bit_depth_minus_8 field to be backward compatible. Added bit depth to the new sequence file name when we dump output in decoder reconfiguration case.

* * rocDecode/HEVC: Added bit depth change support in decoder reconfiguration.

* * rocDecode/HEVC: Removed a comment line.

* * rocDecode/HEVC: Updated change log.

* * rocDecode/HEVC: Used the reserved space in RocdecReconfigureDecoderInfo structure for bit_depth_minus_8 field to be backward compatible. Added bit depth to the new sequence file name when we dump output in decoder reconfiguration case.

* * rocDecode/HEVC: Changes based on review comments.

* * rocDecode: Fixed a bug related to 422 surface format assignment.

* * rocDecode: Fixed build warnings with some sample apps.

[ROCm/rocdecode commit: ab7546930f]
2025-03-13 09:29:25 -04:00
jeffqjiangNew cd98621eb9 * rocDecode/HEVC error resilience: Fixed a vulnerability with active PPS id. We should not assign the current active PPS id to an invalid value. (#529)
[ROCm/rocdecode commit: ac74540c19]
2025-03-12 17:49:52 -04:00
jeffqjiangNew 23309b2e4c Added syntax error handling in VPS parsing. (#526)
* * rocDecode/HEVC: Added error handling in VPS parsing.

* * rocDecode/HEVC: Updated change log.

* * rocDecode/Error resilience: Improved syntax error check logging: add the parameter name.

[ROCm/rocdecode commit: 263b57fde9]
2025-03-10 09:15:12 -04:00
jeffqjiangNew aa1bb2e94f Error resilience: Added HEVC slice syntax error handle for some corrupted streams. (#525)
* * rocDecode/Error resilience: Added HEVC slice syntax error handle for some corrupted streams.
 - Detect out of range total reference numbers.

* * rocDecode/Error resilience: Added additional checks for HEVC reference parameters.

* * rocDecode/Error resilence: Corrected checked range.

[ROCm/rocdecode commit: 27adeb8c47]
2025-03-05 08:44:59 -05:00
jeffqjiangNew ef7c4c900c * rocDecoder/Bitstream reader: Added stream type detection optimization. (#522)
- During stream type evaluation, when we have a high confidence score, we stop and finalize, to avoid unnecessary exhaustive type search.

[ROCm/rocdecode commit: 5f779a6eb7]
2025-03-03 09:31:49 -05:00
jeffqjiangNew eb2aae5c39 VP9: Added VP9 IVF container detection and picture data parsing support to bitstream reader. (#519)
* * rocDecode/VP9: Added VP9 IVF containter detection and picture data parsing.

* * rocDecode/VP9 bitstream reader: Wording changes based on review comment.

* * rocDecode/VP9 IVF parser: Updated change log based on review comment.

* * rocDecode/VP9 IVF parser: Bumped up rocDecode version to 0.11.0.

* * rocDecode/VP9: Added VP9 IVF containter detection and picture data parsing.

* * rocDecode/VP9 bitstream reader: Wording changes based on review comment.

* * rocDecode/VP9 IVF parser: Updated change log based on review comment.

* * rocDecode/VP9 IVF parser: Bumped up rocDecode version to 0.11.0.

* * rocDecode/VP9 IVF parsing: Minor name correction.

[ROCm/rocdecode commit: a5863bceba]
2025-02-28 18:11:10 -05:00
jeffqjiangNew 4e8f655fde * rocDecode: Fix a typo in new sequence callback function name. (#520)
[ROCm/rocdecode commit: a78f6730c8]
2025-02-25 20:43:46 -05:00
jeffqjiangNew c8a7b82794 VP9: Added support for video size change (scaling down) on inter frames. (#508)
* * rocDecode/VP9: Added support for video size change (scaling down) on inter frames.
 - A new reconfigure mode is added, where we keep the existing VAAPI surfaces and context, and work on the smaller images and store the images in the surfaces.

* * rocDecode/VP9 resize: Added changes based on review comments.

[ROCm/rocdecode commit: 2af7bbf4e7]
2025-02-12 17:18:09 -05:00
Aryan Salmanpour 08a70a5ae4 remove unused code (#504)
[ROCm/rocdecode commit: 320d1422af]
2025-02-03 13:21:43 -05:00
Aryan Salmanpour 2f754d1ffb Eliminate the use of std::fs (#497)
[ROCm/rocdecode commit: bca75cf2b7]
2025-01-27 08:10:11 -05:00
jeffqjiangNew 6b61183723 Create separate VA display for each decoder instance. (#496)
* * rocDecode: Experiment per decode instance va display.

* * rocDecode/Perf: Removed comments.

* * rocDecode/VA context: Minor changes based on review comment.

[ROCm/rocdecode commit: 46a344259b]
2025-01-23 15:28:41 -08:00
jeffqjiangNew 4ac1c26cfc * rocDecode/HEVC: Added short term RPS parsing error handling. (#495)
[ROCm/rocdecode commit: dec6dacbc9]
2025-01-22 12:47:01 -05:00
Aryan Salmanpour df70c8eb87 Optimize finding the compute partition mode (#493)
[ROCm/rocdecode commit: 6ada77a9ad]
2025-01-18 10:12:02 -05:00
Aryan Salmanpour a6d3c91163 code cleanup - remove unnecessary check (#492)
[ROCm/rocdecode commit: fe0fee01d0]
2025-01-16 14:06:28 -05:00
jeffqjiangNew f963a7c3a0 Added the new GPU VA context class to handle VA connections to GPU. Removed the hard coded HW decoder capability info. (#415)
* * rocDecode: Removed the hard coded HW decoder capability info.
 - We now probe HW decoder capabilities through VA-API from the driver.

* * rocDecode: Added number of decoder prob and a few missing tear down calls.

* * rocDecode/HW cap change: Added a new singleton class, GpuVaContext, to handle HIP and VA initialization and VA attributes probe for both HW capability check and decoder initialization.

* * rocDecode/HW caps: Removed GpuVaContext class out of vaapi_videodecoder.h and into a new file. Removed debug logs. Removed roc_decoder_caps.h.

* * rocDecode/HW caps: Fixed a crash issue with multi-thread cases. Called to vaInitialize() and vaTerminte() should be paired.

* * rocDecode/HW caps: Added multi-GPU support.

* * rocDecode/HW cap: Moved GpuVaContext class implementation back to VAAPI layer.

* * rocDecode/HW cap: Added changed based on review comments.

* * rocDecode/HW cap: Added changes based on review comments.

* * rocDecode/HW cap: GPU VA context class name change based on review comment.

---------

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

[ROCm/rocdecode commit: ef06f12dfa]
2025-01-10 14:44:06 -05:00
Aryan Salmanpour 43711e5e62 code clean up (#490)
[ROCm/rocdecode commit: 6477cd1100]
2025-01-09 10:38:54 -05:00
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