Commit Graph

55 Commits

Author SHA1 Message Date
Kiriti Gowda c8ff82a943 SLES - Updates (#454)
* SLES - Updates

* Updates

* Cleanup

* Update CHANGELOG.md

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

* CXX Compiler - Use AMD Clang++

* Docs - Updates

* ROCm Version - Upgraded to 6.3.0

* Readme - cleanup

* Readme - minor updates

* Readme - Fix note

---------

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

[ROCm/rocdecode commit: 6339767b4c]
2024-11-15 15:35:53 -05:00
Aryan Salmanpour c6635a9de5 VideoDecode samples - Set the default display_delay to 1 (#441)
[ROCm/rocdecode commit: 81e341b786]
2024-10-25 14:20:33 -04:00
Aryan Salmanpour 896998cc14 Revert "Allow overriding CMAKE_CXX_COMPILER (#436)" (#440)
This reverts commit 5b9907034e.

[ROCm/rocdecode commit: b2149abcef]
2024-10-24 13:28:50 -04:00
Jeremy Newton 5b9907034e Allow overriding CMAKE_CXX_COMPILER (#436)
Using set as-is doesn't allow the user to set their own rocm path.
This is useful for community packagers or debugging.

Signed-off-by: Jeremy Newton <Jeremy.Newton@amd.com>

[ROCm/rocdecode commit: 07ecb5e7d6]
2024-10-24 11:36:14 -04:00
Kiriti Gowda 021e32bc21 Find rocDecode - Support added (#428)
* Find rocDecode - Support added

* Find rocDecode - Updates

* Find rocDecode - Version fix

* Find rocDecode - Version Var

* Minor cleanup

* Test - Find package updates

* CTest - Upgrades

* CTest - Enhancements

---------

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

[ROCm/rocdecode commit: befc6f6562]
2024-10-02 17:35:56 -04:00
Lakshmi Kumar ffe6861569 change clang++ path as suggested by packaging team (#427)
[ROCm/rocdecode commit: 4e4a18d280]
2024-10-01 08:35:45 -04:00
jeffqjiangNew 2bad24f6f2 Simplified MD5 string compare code and fixed potential incorrect conversion of MD5 string to integers. (#414)
* * rocDecode: Fixed potential incorrect conversion of MD5 string to integers.

* * rocDecode: Changed a string name.

* * rocDecode: Simplified the MD5 string compare code.

* * rocDecode: Added minor changed based on review comments.

* * rocDecode: Minor changes.

* * rocDecode/Sample script: Added units to Bit rate field in csv output.

[ROCm/rocdecode commit: 14f4c6973a]
2024-09-16 15:27:10 -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
Lakshmi Kumar b9c293a754 Test Upgrades (#395)
* adds av1 to ctest

* add av1 support for batch sample

* add test to make test also

* path update for make test

* add function for codec support check

* add changes to batch sample

* addressign review comment

* modify all apps to check codec support

[ROCm/rocdecode commit: e3b3fe9e8e]
2024-07-26 17:09:58 -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
Lakshmi Kumar 97be0bb3ca Seek - Bug Fixes + Sample Update (#327)
* adds seek to videodecode and seek bug fixes

* fixes both frames & timestamp with prev_key_frame option

* switch to exact key frame and bug fix

* fix decoded_frame_number from seek

* fix out_frame_duration

* clean up + exact fram fix

[ROCm/rocdecode commit: 2d50d685f7]
2024-05-01 17:03:27 -04:00
Aryan Salmanpour 805ecd6ee8 Organizing the install location of the rocdecode utils headers (#296)
[ROCm/rocdecode commit: 592195b652]
2024-03-26 12:47:37 -04:00
jeffqjiangNew 9e64945bdf Fixed several issues with cropping. (#275)
* * rocDecode: Fixed several issues with cropping.
  - Fixed the pixel start offset error on streams with non-zero top/left cropping in MD5 calculation.
  - Fixed the pixel start offset error on streams with non-zero top/left cropping, and/or with user specified cropping in YUV frame output.
  - Sorted out code which deals with cropping area specifiied by the bitstream, and cropping area specified by the user.

* * rocDecode: Additional changes after discussion.
 - Set display rect for decoder create/reconfig to displayable area or user specified ROI area.
 - Do not set target rect for decoder create/reconfig. Leave it for future use.
 - Unified naming of display rect in decoder create/reconfig structs.

* * rocDecode: Put back the extra rounding to target width/height specifiied by the coded stream, for peace of mind, based on code review.

* * rocDecode: Added the missing stream specified cropping offset to the starting pixel pointer for none-internal memory modes.

---------

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

[ROCm/rocdecode commit: e4614de461]
2024-03-11 22:35:11 -04:00
Kiriti Gowda cabcb78825 FFMPEG - Multi-version support (#270)
* FFMPEG 5.X - Support

* FFMPEG 5.X - Support

* FFMPEG - Multiversion support

* FFMPEG - Support FFMPEG AVCODEC > 58.134.X

[ROCm/rocdecode commit: ca067ae6ec]
2024-03-05 08:34:05 -05:00
Aryan Salmanpour 6f80f7e81c Revert "FFMPEG 5.X - Support (#268)" (#269)
This reverts commit 11abd055ed.

[ROCm/rocdecode commit: 6317b9f22b]
2024-02-28 14:31:07 -05:00
Kiriti Gowda 11abd055ed FFMPEG 5.X - Support (#268)
[ROCm/rocdecode commit: 4f2bf945a9]
2024-02-28 12:37:33 -05:00
jeffqjiangNew c2c567b6f2 * rocDecode: Take care of the case where DecodeFrame() does not return 1 (decoded frame number) so the accumulated decoded frame number does not match the user targeted frame number and the decoding will not stop. (#257)
[ROCm/rocdecode commit: 320c0954a3]
2024-02-23 22:54:29 -05:00
jeffqjiangNew 3501eccf0c * rocDecode: Added a command option to limit the number of decoded frames to a user set value to the video decoder app. (#252)
[ROCm/rocdecode commit: ad31866ee0]
2024-02-16 08:44:03 -05:00
Aryan Salmanpour bc48060ff0 Fix a segmentation fault on some samples when the memory type is 3 (OUT_SURFACE_MEM_NOT_MAPPED) and attempting to save the output (which is not supported) (#239)
* Fix a segmentation fault on some samples when the memory type is 3 (OUT_SURFACE_MEM_NOT_MAPPED) and attempting to save the output (which is not supported)

* update the videoDecodeMultiFiles sample

* update the readme for videoDecodeMultiFiles

* add comments

* use OUT_SURFACE_MEM_NOT_MAPPED instead of integer number 3

[ROCm/rocdecode commit: 31c7c7c104]
2024-02-12 16:50:17 -05:00
Kiriti Gowda 9b14aee579 Sample - fix path & build types (#237)
[ROCm/rocdecode commit: 1881a5a61e]
2024-02-12 12:13:37 -05:00
Kiriti Gowda 1b4792c45c Doc - Updates (#231)
[ROCm/rocdecode commit: 5e5c92abb5]
2024-02-09 13:31:44 -05:00
Lakshmi Kumar 96b71ddd2c Samples - Clean up and bug fixes (#203)
* clean up samples

* fixes error seen in videoDecodeMem app with big files

[ROCm/rocdecode commit: 43481ce36b]
2024-01-29 12:58:00 -05:00
Kiriti Gowda f517b2ab2d Samples - Docs Updated (#204)
[ROCm/rocdecode commit: 2298d93990]
2024-01-26 05:19:24 -08:00
jeffqjiangNew 4c9a35a6a8 * rocDecode: Updated Copyright message for 2024. (#160)
[ROCm/rocdecode commit: 04fe74f390]
2024-01-09 20:47:16 -05:00
Aryan Salmanpour 793047edb1 CMakeLists code cleanup - dont link to hip::device if there is nt any hip kernles for compilation (#156)
[ROCm/rocdecode commit: 2f2e66679b]
2024-01-09 11:51:52 -05:00
jeffqjiangNew 8c8904761d Decoder reconfigure fixes. (#157)
* * rocDecode/HEVC: Fixed a couple of issues with reconfiguration of decoder when video size is changed.
  - Picture width and height variables were interchangeably used to represent coded picture size and display size, resulting reconfiguration errors. Now we use different variables to represent coded and display sizes.
  - Fixed a file overwriting issue in video size change case, where the display size can remain the same when coded size changes with specific cropping offsets.

* * rocDecode/HEVC: Added some fixes to decoder reconfiguration.
  - Added support for MD5 calculation in reconfigure flush callback. This fixed MD5 check failure on conformance streams with size changes.
  - Fixed total decoded frame number report with reconfigure when file dump or MD5 is not enabled. We need to call flush with reconfigure unconditionally (but with different actions).
  - Added the missing reconfigure flush when coded size is not changed but display size is changed.

* * rocDecode/HEVC: Corrected an error in GetDecodedWidth() method. Should use coded_width_, instead of disp_width_.

[ROCm/rocdecode commit: ccd813a2da]
2024-01-09 10:51:30 -05:00
Rajy Rawther d55324bcf9 Add mechanism to flush last frames during reconfigure (#142)
* add mechanism to flush last frames during reconfigure

* reconfig mode updated support

* addressed review comments

* addressed review comments

* change condition according to review comment

[ROCm/rocdecode commit: a5211189f5]
2023-12-19 08:49:17 -05:00
jeffqjiangNew 7b2035c071 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.

[ROCm/rocdecode commit: 0fbd030b5d]
2023-12-15 15:54:43 -05:00
Kiriti Gowda 0b161f9a10 Sample - Update CMakeLists.txt (#144)
Find rocDecode Fix

[ROCm/rocdecode commit: 07595d7937]
2023-12-15 15:44:58 -05:00
Pavel Tcherniaev 8107033846 added help for arguments in case user doesn't give any arguments (#138)
[ROCm/rocdecode commit: 5930f15c1a]
2023-12-13 13:55:40 -05:00
Lakshmi Kumar 6c3f0095da adding support for MI300A A1 - gfx942 (#124)
[ROCm/rocdecode commit: f221d78258]
2023-12-07 09:31:44 -05:00
jeffqjiangNew 99a97db048 * rocDecode/HEVC: Added formating of the MD5 digest output. (#122)
[ROCm/rocdecode commit: 4ca51e3314]
2023-12-06 10:54:41 -05:00
Aryan Salmanpour 24dc12e75e Fix a build error in videodecode sample (#119)
[ROCm/rocdecode commit: f008b52403]
2023-12-05 12:01:17 -05:00
jeffqjiangNew 409d6efa2a Added the command option "-md5_check" to compare the MD5 of the decoded YUV to the reference MD5. This facilitates decoder conformance test automation. (#117)
* * rocDecode: Added a command option "-md5_check" to compare the MD5 of the decoded YUV to the reference MD5. This ficilitates decoder conformance test automation.

* * rocDecode/HEVC: Changed file and string operation from C code to C++ code.

* * rocDecode/HEVC: Updated README.md for videoDecode sample.

[ROCm/rocdecode commit: 583e72720a]
2023-12-05 11:40:39 -05:00
Lakshmi Kumar 62fb6aa511 Adding Test script (#113)
* test script

* code clean up + csv file

* add readme

* deleting unnecesasry files

* spelling correction

* moving tests to smaples

* Delete tests directory

* review comments

[ROCm/rocdecode commit: 69a2afd341]
2023-12-05 08:43:33 -05:00
Aryan Salmanpour 88dd09c011 remove the b_low_latency_ from the RocVideoDecoder class (#111)
[ROCm/rocdecode commit: e001d78859]
2023-11-30 22:09:13 -05:00
jeffqjiangNew 67c5b77806 MD5 digest generation support (#109)
* * rocDecode/HEVC: Added support for MD5 message digest generation.
  - Command option "-md5" triggers MD5 calculation and output.

* * rocDecode/HEVC: Changed C type casting to C++ type casting.

[ROCm/rocdecode commit: ad20961c4a]
2023-11-30 17:40:45 -05:00
Lakshmi Kumar 55193f5165 Samples - adds surface memory option to user (#104)
* adding surface mem type as user arg

* adding mem type user arg for all apps

* readme update

* readme updates on all apps

[ROCm/rocdecode commit: 449572f9bf]
2023-11-30 08:31:37 -05:00
Lakshmi Kumar 548c562d6e README - updates for samples (#98)
* update readme for samples

* readme clean up

* readme clean up

[ROCm/rocdecode commit: ad54bd5258]
2023-11-29 11:21:22 -05:00
jeffqjiangNew 7035965722 End of stream flush (#86)
* * 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.

[ROCm/rocdecode commit: 624c3c0f09]
2023-11-27 13:03:26 -05:00
jeffqjiangNew 67c9ea1983 Re-enabled SEI message processing. (#79)
* * 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.

[ROCm/rocdecode commit: ad186a90da]
2023-11-21 14:33:15 -05:00
Rajy Rawther 2639f74e4a rr: Add debug flags for valgrind (#77)
* commending out ParseSeiMessage because it is causing segfault

* CMake changes for valgrind

[ROCm/rocdecode commit: 628e1d2610]
2023-11-20 12:07:13 -05:00
Aryan Salmanpour 4bfd23aa13 Code clean up - remove unused headers from demuxer, unused ffmpeg dependencies, and redundent info from videodecode sample (#71)
[ROCm/rocdecode commit: 071b37b3bd]
2023-11-17 12:46:27 -05:00
Aryan Salmanpour efc870b974 update the videodecode sample to call GetFrame/ReleaseFrame regradless of dumping frames (#68)
[ROCm/rocdecode commit: 28c86ba813]
2023-11-16 12:08:15 -05:00
Aryan Salmanpour 0a166ff271 code cleanup - use google style for videodecode sample and RocVideoDecoder class - no functional change (#65)
* code cleanup - use google style for videodecode sample and RocVideoDecoder class - no functional change

* rename SaveSurfToFile to SaveFrameToFile

[ROCm/rocdecode commit: 851c537904]
2023-11-15 15:49:16 -05:00
Rajy Rawther 4c7210745f Rr/add low latency (#59)
* added picture_index associated with frame and fixed bug

* added option to force low_latency display

* add force_zero_latency option for videodecode sample

[ROCm/rocdecode commit: d163eb1764]
2023-11-13 13:53:19 -05:00
Rajy Rawther 59c03a8df3 fix exception handling to gracefully exit (#49)
* fix exception handling to gracefully exit

* addressed review comments

[ROCm/rocdecode commit: 55ebf353cc]
2023-11-10 15:44:40 -05:00
Kiriti Gowda 7f64bb0b61 FFMPEG - Updates (#33)
* FFMPEG - Updates

* Readme - Updates

* Sample - Install

* Install Sample Deps

* Samples - Updates

* Sample - Added missing header

[ROCm/rocdecode commit: d34d85027c]
2023-11-06 11:51:47 -05:00
Aryan Salmanpour 174b672159 Fix a bug in GetVideoCodecString function where it didn't return the correct codec string (#35)
[ROCm/rocdecode commit: 0d9b056ee5]
2023-11-06 08:20:53 -05:00
Aryan Salmanpour 0c7e31bbfa Add support for gfx1100 - update the vcn lookup table (#34)
[ROCm/rocdecode commit: f47fd89f62]
2023-11-02 22:05:17 -04:00