Return an error if the ExportSurface function fails. Add extra error logging in the destructor of the VaapiVideoDecoder class (#87)

Этот коммит содержится в:
Aryan Salmanpour
2023-11-27 13:08:34 -05:00
коммит произвёл GitHub
родитель 624c3c0f09
Коммит e5d5bd4abb
2 изменённых файлов: 23 добавлений и 5 удалений
+1
Просмотреть файл
@@ -98,6 +98,7 @@ rocDecStatus RocDecoder::mapVideoFrame(int pic_idx, void *dev_mem_ptr[3],
rocdec_status = va_video_decoder_.ExportSurface(pic_idx, va_drm_prime_surface_desc);
if (rocdec_status != ROCDEC_SUCCESS) {
ERR("ERROR: Failed to export surface for picture id" + TOSTR(pic_idx) + TOSTR(rocdec_status));
return rocdec_status;
}
external_mem_handle_desc_.type = hipExternalMemoryHandleTypeOpaqueFd;
+22 -5
Просмотреть файл
@@ -30,13 +30,30 @@ VaapiVideoDecoder::~VaapiVideoDecoder() {
close(drm_fd_);
}
if (va_display_) {
DestroyDataBuffers();
vaDestroySurfaces(va_display_, va_surface_ids_.data(), va_surface_ids_.size());
rocDecStatus rocdec_status = ROCDEC_SUCCESS;
rocdec_status = DestroyDataBuffers();
if (rocdec_status != ROCDEC_SUCCESS) {
ERR("ERROR: DestroyDataBuffers failed with status " + TOSTR(rocdec_status));
}
VAStatus va_status = VA_STATUS_SUCCESS;
va_status = vaDestroySurfaces(va_display_, va_surface_ids_.data(), va_surface_ids_.size());
if (va_status != VA_STATUS_SUCCESS) {
ERR("ERROR: vaDestroySurfaces failed with status " + TOSTR(va_status));
}
if (va_context_id_)
vaDestroyContext(va_display_, va_context_id_);
va_status = vaDestroyContext(va_display_, va_context_id_);
if (va_status != VA_STATUS_SUCCESS) {
ERR("ERROR: vaDestroyContext failed with status " + TOSTR(va_status));
}
if (va_config_id_)
vaDestroyConfig(va_display_, va_config_id_);
vaTerminate(va_display_);
va_status = vaDestroyConfig(va_display_, va_config_id_);
if (va_status != VA_STATUS_SUCCESS) {
ERR("ERROR: vaDestroyConfig failed with status " + TOSTR(va_status));
}
va_status = vaTerminate(va_display_);
if (va_status != VA_STATUS_SUCCESS) {
ERR("ERROR: vaTerminate failed with status " + TOSTR(va_status));
}
}
}