Commit graph

77 Commits

Autor SHA1 Nachricht Datum
Aryan Salmanpour b0bab07940 Update Copyright year (#694) 2026-01-26 15:37:50 -08:00
Aryan Salmanpour e2789088ee TheRock compatibility - support (#681)
* Add support for TheRock compatibility

* Update the version

* code clean up

* clean up
2025-12-08 14:02:55 -08:00
Kiriti Gowda 0a4fadb24d Host decouple - samples and test (#677)
* Host decouple - samples and test

* Host - install utils with dev

* Host - Install host files in core temp
2025-12-04 16:04:47 -08:00
Kiriti Gowda a1b9583353 Tests and samples - Bugfix (#673)
* Tests and samples - bugfixes

* CMakeLists - add CMAKE_MODULE_PATH

* Fix header - Host

* Host - decouple

* Host Utils - Reset

* Test - enable advanced test with host lib
2025-11-18 22:06:46 -08:00
Jeff Jiang c388518965 * rocDecode: Added several fixes to samples. (#668)
- Fixed the build error with videodecodepicfiles sample.
 - Added error handling of sample app command option combination of memory type OUT_SURFACE_MEM_NOT_MAPPED and MD5 generation.
2025-11-04 21:12:56 -05:00
Kiriti Gowda 4d090e8aa0 Compiler - Location update (#664) 2025-10-07 15:05:46 -07:00
Kiriti Gowda 48171900a3 Find package - rocdecode-host (#650)
* Find package - rocdecode-host

* Cleanup

---------

Co-authored-by: Kiriti <kiriti@santiago.amd.com>
2025-09-15 12:10:04 -07:00
Kiriti Gowda b4ec9ca411 rocdecode host - Fix build and install (#641)
* rocdecode host - Fix build and install

* CMakeLists - fix

* Chnagelog -updates

* Update CHANGELOG.md
2025-09-02 10:11:45 -07:00
Jeff Jiang 5ffe20cdd7 * rocDecode: Fixed a regression that resulted in CI test failures. (#633)
- Need to check output surface info for every decode call to catch video size change or decode errors.
2025-08-15 12:50:13 -04:00
Rajy Rawther 3b280ac7c3 ffmpeg decode utility class cleanup (#616)
* cleaned up ffmpeg decode utility class to use rocdecode host lib

* added changelog for the PR

* address review comments for FFMPEG dependancy in cmake

* Update CHANGELOG.md

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

* addressed review comments

* update version in Cmake

---------

Co-authored-by: spolifroni-amd <Sandra.Polifroni@amd.com>
2025-07-28 09:59:47 -04:00
jeffqjiangNew aad9c248bd Fixed the MD5 calculation error on some streams when both decoded output dumping and MD5 generation are on. (#607)
* * Fixed the MD5 calculation error on some streams when both decoded output dumping and MD5 generation are on.
 - The issue is with the final flushing of the remaining frames at the end of stream, where MD5 update is skipped when output dumping is on.

* * Minor format changes.

---------

Co-authored-by: Aryan Salmanpour <aryan.salmanpour@amd.com>
2025-06-30 10:24:05 -04:00
Kiriti Gowda 23c17cc150 Find rocdecode - Updates for ROCm 7.0 (#610)
* rocDecode - Version 1.0.0

* Find package - config updates

* CMakeLists - Updates and config fix

* CMakelists - updates

* Samples - link to rocdecode_LIBRARY rocdecode::rocdecode

---------

Co-authored-by: Kiriti <kiriti@santiago.amd.com>
2025-06-24 17:39:49 -04:00
Kiriti Gowda 5eab03d198 CMakeLists - Set Std updates & Jenkins CodeCov (#546)
* CMakeLists - Set Std updates

* Jenkins - Code coverage

* Jenkins - Fix and cleanup

* Jenkins - Fix

* Jenkins - Fix

* Jenkins - Fix

* Jenkins - Fix

* Use amdclang compiler

* Remove slash in front of quote

* Jenkins - Fix

* Jenkins - Fix location

* Jenkins - Fix perf export

* Jenkins - .so fix

* Jenkins - lcov

* Install fix

* Use repo token for codecov

* Pass in sha to codecov

* Use clang19 for ubu24

* Use default clang

* CMakeLists - Set Std updates

* Jenkins - Code coverage

* Jenkins - Fix and cleanup

* Jenkins - Fix

* Jenkins - Fix

* Jenkins - Fix

* Jenkins - Fix

* Use amdclang compiler

* Remove slash in front of quote

* Jenkins - Fix

* Jenkins - Fix location

* Jenkins - Fix perf export

* Jenkins - .so fix

* Jenkins - lcov

* Install fix

* Use repo token for codecov

* Pass in sha to codecov

* Use clang19 for ubu24

* Use default clang

* Set proxy for codecov uploader

Needed for gfx90a

---------

Co-authored-by: Sam Wu <22262939+samjwu@users.noreply.github.com>
2025-03-31 21:31:23 -07:00
Kiriti Gowda 6b026af151 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>
2025-03-17 12:38:01 -04:00
Rajy Rawther c4fe8f5258 rename some macros so it doesn't clash with others (#510)
* rename macros so not to clash with others

* modified macro in all samples
2025-02-18 08:40:58 -05:00
Aryan Salmanpour 760f7f7200 Update samples (#491) 2025-01-13 14:31:46 -05:00
Aryan Salmanpour 3624040ce7 Update Copyright year to 2025 (#486)
* Update Copyright year to 2025

* update year to 2025
2025-01-05 16:25:39 -05:00
Kiriti Gowda 913b6728f0 CMakeLists - Updates and cleanup (#483)
* CMakeLists - Updates and cleanup

* CTest - CXX Compiler Updates

* Package - Remove FFMPEG exe deps

* CMakeLists - Updates and cleanup

* CTest - CXX Compiler Updates

* Package - Remove FFMPEG exe deps

* FFMPEG - Updates
2025-01-02 09:42:31 -05:00
jeffqjiangNew 597b29a7c9 CTest updates. (#473)
* * rocDecode: Core test updates.
 - Added VP9 test.
 - Added tests for video decode raw sample.
 - Changed test video streams to raw elementary or IVF formats.

* * rocDecode/CTest: Added back mp4 files.

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

* * rocDecode/CTest: Added stream file installation.

* * rocDecode/CTest: Changed the file back to mp4.

* Add support for VP9 handling in the videoDecodeBatch sample

* add linking with threads for videodecode app

---------

Co-authored-by: Aryan Salmanpour <aryan.salmanpour@amd.com>
2024-12-06 14:46:30 -05:00
jeffqjiangNew e62aa3e09b 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>
2024-12-05 09:46:24 -05:00
Rajy Rawther 52eb62fabf ffmpeg software decoder implementation (#461)
* WIP: ffmpeg based software decoder

* minor update

* WIP: FFMpeg SW decoder support

* FFMpeg decoder working version

* working version without threading

* multithreading working with FFMpeg decoder

* moved ffmpeg decoder to separate folder

* updated changelog

* minor change

* resolved review comments

* resolved review comments

---------

Co-authored-by: Lakshmi Kumar <lakshmi.kumar@amd.com>
2024-12-04 14:11:02 -05:00
Kiriti Gowda 924d19eb65 Samples & Test - Compiler Updates (#468)
* Compiler - set CXX Compiler if not set

* CXX Compiler - Set CXX compiler in CTest

* Test - Ctest cleanup

* Samples - Update CXX Compiler option
2024-12-03 16:03:26 -05:00
Kiriti Gowda 6339767b4c 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>
2024-11-15 15:35:53 -05:00
Aryan Salmanpour 81e341b786 VideoDecode samples - Set the default display_delay to 1 (#441) 2024-10-25 14:20:33 -04:00
Aryan Salmanpour b2149abcef Revert "Allow overriding CMAKE_CXX_COMPILER (#436)" (#440)
This reverts commit 07ecb5e7d6.
2024-10-24 13:28:50 -04:00
Jeremy Newton 07ecb5e7d6 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>
2024-10-24 11:36:14 -04:00
Kiriti Gowda befc6f6562 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>
2024-10-02 17:35:56 -04:00
Lakshmi Kumar 4e4a18d280 change clang++ path as suggested by packaging team (#427) 2024-10-01 08:35:45 -04:00
jeffqjiangNew 14f4c6973a 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.
2024-09-16 15:27:10 -04:00
jeffqjiangNew 6253248188 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.
2024-08-20 17:43:33 -04:00
Lakshmi Kumar e3b3fe9e8e 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
2024-07-26 17:09:58 -04:00
jeffqjiangNew 61c8661b9c 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.
2024-05-31 13:14:02 -04:00
Lakshmi Kumar 2d50d685f7 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
2024-05-01 17:03:27 -04:00
Aryan Salmanpour 592195b652 Organizing the install location of the rocdecode utils headers (#296) 2024-03-26 12:47:37 -04:00
jeffqjiangNew e4614de461 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>
2024-03-11 22:35:11 -04:00
Kiriti Gowda ca067ae6ec FFMPEG - Multi-version support (#270)
* FFMPEG 5.X - Support

* FFMPEG 5.X - Support

* FFMPEG - Multiversion support

* FFMPEG - Support FFMPEG AVCODEC > 58.134.X
2024-03-05 08:34:05 -05:00
Aryan Salmanpour 6317b9f22b Revert "FFMPEG 5.X - Support (#268)" (#269)
This reverts commit 4f2bf945a9.
2024-02-28 14:31:07 -05:00
Kiriti Gowda 4f2bf945a9 FFMPEG 5.X - Support (#268) 2024-02-28 12:37:33 -05:00
jeffqjiangNew 320c0954a3 * 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) 2024-02-23 22:54:29 -05:00
jeffqjiangNew ad31866ee0 * rocDecode: Added a command option to limit the number of decoded frames to a user set value to the video decoder app. (#252) 2024-02-16 08:44:03 -05:00
Aryan Salmanpour 31c7c7c104 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
2024-02-12 16:50:17 -05:00
Kiriti Gowda 1881a5a61e Sample - fix path & build types (#237) 2024-02-12 12:13:37 -05:00
Kiriti Gowda 5e5c92abb5 Doc - Updates (#231) 2024-02-09 13:31:44 -05:00
Lakshmi Kumar 43481ce36b Samples - Clean up and bug fixes (#203)
* clean up samples

* fixes error seen in videoDecodeMem app with big files
2024-01-29 12:58:00 -05:00
Kiriti Gowda 2298d93990 Samples - Docs Updated (#204) 2024-01-26 05:19:24 -08:00
jeffqjiangNew 04fe74f390 * rocDecode: Updated Copyright message for 2024. (#160) 2024-01-09 20:47:16 -05:00
Aryan Salmanpour 2f2e66679b CMakeLists code cleanup - dont link to hip::device if there is nt any hip kernles for compilation (#156) 2024-01-09 11:51:52 -05:00
jeffqjiangNew ccd813a2da 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_.
2024-01-09 10:51:30 -05:00
Rajy Rawther a5211189f5 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
2023-12-19 08:49:17 -05:00
jeffqjiangNew 0fbd030b5d 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.
2023-12-15 15:54:43 -05:00