* rocDecode/HEVC: Fixed a bug in destroy data buffer function in VAAPI layer. (#150)
- We have to clear the buffer id after destroying it. Without this clearing, we will encounter VAAPI buffer destroy failure on certain conformance streams where scaling list is signaled dynamically. In this case, we create different number of data buffers on different frames. If we do not clear the buffer id when destroying it, a dummy scaling list buffer id will have the same value as another buffer, resulting double destroy.
Tá an tiomantas seo le fáil i:
tiomanta ag
GitHub
tuismitheoir
6db0b79144
tiomantas
33d6b37ddb
@@ -175,15 +175,19 @@ rocDecStatus VaapiVideoDecoder::CreateContext() {
|
||||
rocDecStatus VaapiVideoDecoder::DestroyDataBuffers() {
|
||||
if (pic_params_buf_id_) {
|
||||
CHECK_VAAPI(vaDestroyBuffer(va_display_, pic_params_buf_id_));
|
||||
pic_params_buf_id_ = 0;
|
||||
}
|
||||
if (iq_matrix_buf_id_) {
|
||||
CHECK_VAAPI(vaDestroyBuffer(va_display_, iq_matrix_buf_id_));
|
||||
iq_matrix_buf_id_ = 0;
|
||||
}
|
||||
if (slice_params_buf_id_) {
|
||||
CHECK_VAAPI(vaDestroyBuffer(va_display_, slice_params_buf_id_));
|
||||
slice_params_buf_id_ = 0;
|
||||
}
|
||||
if (slice_data_buf_id_) {
|
||||
CHECK_VAAPI(vaDestroyBuffer(va_display_, slice_data_buf_id_));
|
||||
slice_data_buf_id_ = 0;
|
||||
}
|
||||
return ROCDEC_SUCCESS;
|
||||
}
|
||||
|
||||
Tagairt in Eagrán Nua
Cuir bac ar úsáideoir