From dd30db9f510e736a849e93bfb733be3b837541dd Mon Sep 17 00:00:00 2001 From: Rajy Rawther Date: Mon, 13 May 2024 09:39:38 -0700 Subject: [PATCH] Added a new function to get RgbStride (#352) * re-org videodecodeRGB sample * minor fix * removed un-necessary include * minor fix * added GetRgbStride utility function for RGB stride * fix for review comments --------- Co-authored-by: Aryan Salmanpour --- samples/videoDecodeRGB/videodecrgb.cpp | 11 ++--------- utils/video_post_process.h | 11 +++++++++++ 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/samples/videoDecodeRGB/videodecrgb.cpp b/samples/videoDecodeRGB/videodecrgb.cpp index 08bdbdb269..ce1952ea3c 100644 --- a/samples/videoDecodeRGB/videodecrgb.cpp +++ b/samples/videoDecodeRGB/videodecrgb.cpp @@ -119,15 +119,8 @@ void ColorSpaceConversionThread(std::atomic& continue_processing, bool con } if (convert_to_rgb) { - int rgb_width; - if (p_surf_info->bit_depth == 8) { - rgb_width = (p_surf_info->output_width + 1) & ~1; // has to be a multiple of 2 for hip colorconvert kernels - rgb_image_size = ((e_output_format == bgr) || (e_output_format == rgb)) ? rgb_width * p_surf_info->output_height * 3 : rgb_width * p_surf_info->output_height * 4; - } else { - rgb_width = (p_surf_info->output_width + 1) & ~1; - rgb_image_size = ((e_output_format == bgr) || (e_output_format == rgb)) ? rgb_width * p_surf_info->output_height * 3 : ((e_output_format == bgr48) || (e_output_format == rgb48)) ? - rgb_width * p_surf_info->output_height * 6 : rgb_width * p_surf_info->output_height * 8; - } + uint32_t rgb_stride = post_proc.GetRgbStride(e_output_format, p_surf_info); + rgb_image_size = p_surf_info->output_height * rgb_stride; if (p_rgb_dev_mem == nullptr) { hip_status = hipMalloc(&p_rgb_dev_mem, rgb_image_size); if (hip_status != hipSuccess) { diff --git a/utils/video_post_process.h b/utils/video_post_process.h index d0821ad9ec..bd858db0a7 100644 --- a/utils/video_post_process.h +++ b/utils/video_post_process.h @@ -103,6 +103,17 @@ class VideoPostProcess { else if (e_output_format == rgba64) P016ToColor64(p_src, surf_info->output_pitch, static_cast(rgb_dev_mem_ptr), 8 * rgb_width, surf_info->output_width, surf_info->output_height, surf_info->output_vstride, 0, hip_stream); + } + }; + uint32_t GetRgbStride(OutputFormatEnum e_output_format, OutputSurfaceInfo *surf_info) { + uint32_t rgb_stride; + uint32_t rgb_width = (surf_info->output_width + 1) & ~1; // has to be a multiple of 2 for hip colorconvert kernels + if (surf_info->bit_depth == 8) { + rgb_stride = ((e_output_format == bgr) || (e_output_format == rgb)) ? rgb_width * 3 : rgb_width * 4; // bgr/bgra/rgb/rgba + } else { + rgb_stride = ((e_output_format == bgr) || (e_output_format == rgb)) ? rgb_width * 3 : + ((e_output_format == bgr48) || (e_output_format == rgb48)) ? rgb_width * 6 : rgb_width * 8; } + return rgb_stride; }; }; \ No newline at end of file