diff --git a/amd_openvx_extensions/amd_media/decoder.cpp b/amd_openvx_extensions/amd_media/decoder.cpp index 45e8b2113..9e989cb37 100644 --- a/amd_openvx_extensions/amd_media/decoder.cpp +++ b/amd_openvx_extensions/amd_media/decoder.cpp @@ -536,18 +536,16 @@ vx_status CLoomIoMediaDecoder::Initialize() vxAddLogEntry((vx_reference)node, VX_FAILURE, "ERROR: Failed to create specified HW device.\n"); return VX_FAILURE; } - decoderFormat = codecContext->pix_fmt; - if (decoderFormat == AV_PIX_FMT_YUVJ420P) - decoderFormat = AV_PIX_FMT_YUV420P; // set non-depracated format, vaapi uses NV12 for YUVJ420P - else if (decoderFormat == AV_PIX_FMT_YUVJ422P) - decoderFormat = AV_PIX_FMT_YUV422P; // set non-depracated format - else if (decoderFormat == AV_PIX_FMT_YUVJ444P) - decoderFormat = AV_PIX_FMT_YUV444P; // set non-depracated format - // vaapi uses NV12 for AV_PIX_FMT_YUV420P: looks like FFMpeg is returning the wrong format which can cause swscale to fail - if (decoderFormat == AV_PIX_FMT_YUV420P) - decoderFormat = AV_PIX_FMT_NV12; - } else - decoderFormat = codecContext->pix_fmt; // correct format will be set after + } + + if (codecContext->pix_fmt == AV_PIX_FMT_YUVJ420P) + decoderFormat = AV_PIX_FMT_NV12; // set non-depracated format, vaapi uses NV12 for YUVJ420P + else if (codecContext->pix_fmt == AV_PIX_FMT_YUVJ422P) + decoderFormat = AV_PIX_FMT_YUV422P; // set non-depracated format + else if (codecContext->pix_fmt == AV_PIX_FMT_YUVJ444P) + decoderFormat = AV_PIX_FMT_YUV444P; // set non-depracated format + else + decoderFormat = codecContext->pix_fmt; // correct format will be set after vaapi initialization for hwdec ERROR_CHECK_STATUS(avcodec_open2(codecContext, decoder, nullptr)); SwsContext * swsContext = NULL; @@ -695,7 +693,7 @@ vx_status CLoomIoMediaDecoder::ProcessFrame(vx_image output, vx_array aux_data) // do sws_scale int ret = sws_scale(conversionContext[mediaIndex], frame->data, frame->linesize, 0, frame->height, dst_data, dst_linesize); if (ret < decoderImageHeight) { - fprintf(stderr, "Error in output image scaling using sws_scale <%d>\n", ret); + fprintf(stderr, "Error in output image scaling using sws_scale\n"); return VX_FAILURE; } #if DUMP_DECODED_FRAME