AMF icon indicating copy to clipboard operation
AMF copied to clipboard

[Bug]: RX Vega HEVC encoder responds that it supports PreAnalysis but fails when set.

Open Masa-tam opened this issue 2 years ago • 0 comments

Describe the bug When AMF_VIDEO_ENCODER_HEVC_CAP_PRE_ANALYSIS is queried from AMFVideoEncoder_HEVC component to the GetCaps object, TRUE is returned.

AMF_VIDEO_ENCODER_HEVC_PRE_ANALYSIS_ENABLE operation on the AMFVideoEncoder_HEVC component returns AMF_INVALID_ARG.

To Reproduce Steps to reproduce the behavior:

  1. Apply the following patches
diff --git a/amf/public/samples/CPPSamples/CapabilityManager/CapabilityManager.cpp b/amf/public/samples/CPPSamples/CapabilityManager/CapabilityManager.cpp
index 1da0a16..f2ccb96 100644
--- a/amf/public/samples/CPPSamples/CapabilityManager/CapabilityManager.cpp
+++ b/amf/public/samples/CPPSamples/CapabilityManager/CapabilityManager.cpp
@@ -341,6 +341,18 @@ bool QueryEncoderForCodecHEVC(const wchar_t *componentID, amf::AMFContext* pCont
             encoderCaps->GetProperty(AMF_VIDEO_ENCODER_HEVC_CAP_NUM_OF_STREAMS, &maxNumOfStreams);
             std::wcout << L"\t\tMax Number of streams supported:" << maxNumOfStreams << std::endl;
 
+			amf_bool supportPreAnalysis;
+			encoderCaps->GetProperty(AMF_VIDEO_ENCODER_HEVC_CAP_PRE_ANALYSIS, &supportPreAnalysis);
+			std::wcout << L"\t\tPreAnalysis supported:";
+			if (supportPreAnalysis)
+			{
+				std::wcout << L"Yes" << std::endl;
+			}
+			else
+			{
+				std::wcout << L"No" << std::endl;
+			}
+
             std::wcout << L"\t\tEncoder input:\n";
             amf::AMFIOCapsPtr inputCaps;
             if (encoderCaps->GetInputCaps(&inputCaps) == AMF_OK)
diff --git a/amf/public/samples/CPPSamples/SimpleEncoder/SimpleEncoder.cpp b/amf/public/samples/CPPSamples/SimpleEncoder/SimpleEncoder.cpp
index 3cbda9f..25bc814 100644
--- a/amf/public/samples/CPPSamples/SimpleEncoder/SimpleEncoder.cpp
+++ b/amf/public/samples/CPPSamples/SimpleEncoder/SimpleEncoder.cpp
@@ -65,7 +65,7 @@ static const amf::AMF_SURFACE_FORMAT efcSurfaceFormat[] = {
     amf::AMF_SURFACE_R10G10B10A2,
     amf::AMF_SURFACE_RGBA_F16 };
 
-static const int codecIndex = 0; // set to 0 for AVC, 1 for HEVC, 2 for AV1
+static const int codecIndex = 1; // set to 0 for AVC, 1 for HEVC, 2 for AV1
 static_assert(!bEnable10bit || codecIndex != 0, "HEVC or AV1 required for 10 bit");
 static const wchar_t* pCodecNames[] = { AMFVideoEncoderVCE_AVC, AMFVideoEncoder_HEVC, AMFVideoEncoder_AV1 };
 static const wchar_t* fileNames[] = { L"./output.h264", L"./output.h265", L"./output.av1" };
diff --git a/amf/public/samples/CPPSamples/common/MiscHelpers.cpp b/amf/public/samples/CPPSamples/common/MiscHelpers.cpp
index cfc923e..af4cce5 100644
--- a/amf/public/samples/CPPSamples/common/MiscHelpers.cpp
+++ b/amf/public/samples/CPPSamples/common/MiscHelpers.cpp
@@ -178,6 +178,8 @@ AMF_RESULT SetEncoderDefaultsHEVC(amf::AMFComponent* pEncoder, amf_int64 bitRate
         res = pEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_LOWLATENCY_MODE, true);
         AMF_RETURN_IF_FAILED(res, L"SetProperty(AMF_VIDEO_ENCODER_HEVC_LOWLATENCY_MODE, true) failed");
     }
+	res = pEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_PRE_ANALYSIS_ENABLE, true);
+	AMF_RETURN_IF_FAILED(res, L"SetProperty(AMF_VIDEO_ENCODER_HEVC_PRE_ANALYSIS_ENABLE, true) failed");
 
     return AMF_OK;
 }
  1. Build amf/public/samples/CPPSamples_vs2019.sln
  2. Run CapabilityManager.exe and check AMFVideoEncoderHW_HEVC output.
  3. Run SimpleEncoder.exe

Setup (please complete the following information):

  • OS: Windows 11 22H2
  • Driver Version 23.8.2
  • GPU RX Vega
  • Which component has the issue Encoder

Debug Log (please upload or paste):

2023-09-06 15:19:19.240     8BE0 [AMFEncoderHEVC] Warning: SetProperty HevcEnablePreAnalysis not found
2023-09-06 15:19:19.240     8BE0 [MiscHelpers]   Error: D:\src\AMF\amf\public\samples\CPPSamples\common\MiscHelpers.cpp(182):AMF_ERROR 4 : AMF_INVALID_ARG: SetProperty(AMF_VIDEO_ENCODER_HEVC_PRE_ANALYSIS_ENABLE, true) failed

Expected behavior Capability returns the correct result. Probably unsupported.

Masa-tam avatar Sep 06 '23 06:09 Masa-tam