Skip to content

Commit a8f9ba8

Browse files
krajunvzlatinski
authored andcommitted
Add a command line option to disable the encode paramter optimizations flag bit.
Signed-off-by: Raju Konda <[email protected]>
1 parent d4da1d5 commit a8f9ba8

File tree

3 files changed

+9
-1
lines changed

3 files changed

+9
-1
lines changed

vk_video_encoder/libs/VkVideoEncoder/VkEncoderConfig.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@ static void printHelp(VkVideoCodecOperationFlagBitsKHR codec)
7070
--qpI <integer> : QP or QIndex (for AV1) used for I-frames when RC disabled\n\
7171
--qpP <integer> : QP or QIndex (for AV1) used for P-frames when RC disabled\n\
7272
--qpB <integer> : QP or QIndex (for AV1) used for B-frames when RC disabled\n\
73+
--disableEncodeParameterOptimizations : Disables encode parameter optimization flag bit in VkVideoSessionCreateFlagsKHR \n\
74+
when creating a video session\n\
7375
--deviceID <hexadec> : deviceID to be used, \n\
7476
--deviceUuid <string> : deviceUuid to be used \n\
7577
--enableHwLoadBalancing : enables HW load balancing using multiple encoder devices when available \n\
@@ -505,6 +507,8 @@ int EncoderConfig::ParseArguments(int argc, const char *argv[])
505507
fprintf(stderr, "invalid parameter for %s\n", args[i - 1].c_str());
506508
return -1;
507509
}
510+
} else if (args[i] == "--disableEncodeParameterOptimizations") {
511+
disableEncodeParameterOptimizations = true;
508512
} else if (args[i] == "--deviceID") {
509513
if ((++i >= argc) || (sscanf(args[i].c_str(), "%x", &deviceId) != 1)) {
510514
fprintf(stderr, "invalid parameter for %s\n", args[i - 1].c_str());

vk_video_encoder/libs/VkVideoEncoder/VkEncoderConfig.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -860,6 +860,7 @@ struct EncoderConfig : public VkVideoRefCountBase {
860860
// 2: replicate only one row and one column to the padding area;
861861
uint32_t enablePictureRowColReplication : 2;
862862
uint32_t enableOutOfOrderRecording : 1; // Testing only - don't use for production!
863+
uint32_t disableEncodeParameterOptimizations : 1;
863864

864865
EncoderConfig()
865866
: refCount(0)
@@ -957,6 +958,7 @@ struct EncoderConfig : public VkVideoRefCountBase {
957958
, repeatInputFrames(false)
958959
, enablePictureRowColReplication(1)
959960
, enableOutOfOrderRecording(false)
961+
, disableEncodeParameterOptimizations(false)
960962
{ }
961963

962964
virtual ~EncoderConfig() {}

vk_video_encoder/libs/VkVideoEncoder/VkVideoEncoder.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -917,7 +917,9 @@ VkResult VkVideoEncoder::InitEncoder(VkSharedBaseObj<EncoderConfig>& encoderConf
917917
VkVideoSessionCreateFlagsKHR sessionCreateFlags{};
918918
void* sessionCreateInfoChain = nullptr;
919919

920-
sessionCreateFlags |= VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_PARAMETER_OPTIMIZATIONS_BIT_KHR;
920+
if (!m_encoderConfig->disableEncodeParameterOptimizations) {
921+
sessionCreateFlags |= VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_PARAMETER_OPTIMIZATIONS_BIT_KHR;
922+
}
921923
#ifdef VK_KHR_video_maintenance1
922924
m_videoMaintenance1FeaturesSupported = VulkanVideoCapabilities::GetVideoMaintenance1FeatureSupported(m_vkDevCtx);
923925
if (m_videoMaintenance1FeaturesSupported) {

0 commit comments

Comments
 (0)