diff --git a/src/rocdecode/roc_decoder.cpp b/src/rocdecode/roc_decoder.cpp index 608d8ec295..48c230dbc8 100644 --- a/src/rocdecode/roc_decoder.cpp +++ b/src/rocdecode/roc_decoder.cpp @@ -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; diff --git a/src/rocdecode/vaapi/vaapi_videodecoder.cpp b/src/rocdecode/vaapi/vaapi_videodecoder.cpp index c3ec83ad31..70f0260944 100644 --- a/src/rocdecode/vaapi/vaapi_videodecoder.cpp +++ b/src/rocdecode/vaapi/vaapi_videodecoder.cpp @@ -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)); + } } }