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>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
6477cd1100
Коммит
ef06f12dfa
@@ -26,7 +26,6 @@ RocVideoDecoder::RocVideoDecoder(int device_id, OutputSurfaceMemoryType out_mem_
|
||||
const Rect *p_crop_rect, bool extract_user_sei_Message, uint32_t disp_delay, int max_width, int max_height, uint32_t clk_rate) :
|
||||
device_id_{device_id}, out_mem_type_(out_mem_type), codec_id_(codec), b_force_zero_latency_(force_zero_latency),
|
||||
b_extract_sei_message_(extract_user_sei_Message), disp_delay_(disp_delay), max_width_ (max_width), max_height_(max_height) {
|
||||
|
||||
if (!InitHIP(device_id_)) {
|
||||
THROW("Failed to initilize the HIP");
|
||||
}
|
||||
@@ -1059,10 +1058,11 @@ bool RocVideoDecoder::CodecSupported(int device_id, rocDecVideoCodec codec_id, u
|
||||
decode_caps.codec_type = codec_id;
|
||||
decode_caps.chroma_format = rocDecVideoChromaFormat_420;
|
||||
decode_caps.bit_depth_minus_8 = bit_depth - 8;
|
||||
if(rocDecGetDecoderCaps(&decode_caps) != ROCDEC_SUCCESS) {
|
||||
if((rocDecGetDecoderCaps(&decode_caps) != ROCDEC_SUCCESS) || !decode_caps.is_supported) {
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void RocVideoDecoder::WaitForDecodeCompletion() {
|
||||
|
||||
Ссылка в новой задаче
Block a user