why videotoolbox on ios 15.0 cannot support kVTEncodeFrameOptionKey_BaseFrameQP ?

hi apple expert:

releated information:

iphone : iphone 13 ios : ios 15.5 xcode : 13.4.1

in VTCompressionProperties.h I can see : VT_EXPORT const CFStringRef kVTEncodeFrameOptionKey_BaseFrameQP API_AVAILABLE(macosx(12.0), ios(15.0), tvos(15.0)); // CFNumberRef, Optional


I want to use videotoolbox new api kVTEncodeFrameOptionKey_BaseFrameQP with ios 15.5 on iphone 13 xcode 13.4.1 , but when I call supportedPropertyDictionary,it returns 105 key/value pairs as below : but it doesn't include BaseFrameQP .why ? VTCompressionProperties.h document say that it support on ios 15+ ?????


supportedPropertyDictionary CFDictionaryRef 105 key/value pairs 0x000000015d8a5400 [0] (null) "iChatUsageString" : 3 key/value pairs [1] (null) "DataRateLimits" : 3 key/value pairs [2] (null) "AverageBitRate" : 3 key/value pairs [3] (null) "TransferFunction" : 4 key/value pairs [4] (null) "FrameRateTargetForAverageBitrate" : 3 key/value pairs [5] (null) "PoolPixelBufferAttributesSeed" : (no summary) [6] (null) "EnableVUI" : 3 key/value pairs [7] (null) "FigThreadPriority" : (no summary) [8] (null) "MaxKeyFrameIntervalDuration" : 3 key/value pairs [9] (null) "AllowCompressedPixelFormats" : (no summary) [10] (null) "UserRPSForFaceTime" : 3 key/value pairs [11] (null) "ChromaLocationTopField" : (no summary) [12] (null) "RequireDeterministicDependencyAndReordering" : 3 key/value pairs [13] (null) "ForceSliceRPS" : 3 key/value pairs [14] (null) "MinimizeMemoryUsage" : 3 key/value pairs [15] (null) "FieldDetail" : (no summary) [16] (null) "EnableMBInputCtrl" : 3 key/value pairs [17] (null) "ProfileLevel" : 4 key/value pairs [18] (null) "EnableContentColourVolumeSEI" : 3 key/value pairs [19] (null) "UsingHardwareAcceleratedVideoEncoder" : 3 key/value pairs [20] (null) "PixelBufferPoolIsShared" : (no summary) [21] (null) "EnableWeightedPrediction" : 3 key/value pairs [22] (null) "InputPixelFormat" : 3 key/value pairs [23] (null) "YCbCrMatrix" : 4 key/value pairs [24] (null) "InputQueueMaxCount" : 3 key/value pairs [25] (null) "SoftMinQuantizationParameter" : 3 key/value pairs [26] (null) "ComponentRange" : (no summary) [27] (null) "lrmeRCPassNum" : 3 key/value pairs [28] (null) "ColorPrimaries" : 4 key/value pairs [29] (null) "AllowOpenGOP" : 3 key/value pairs [30] (null) "HEVCTemporalLevelInfoCombinations" : 3 key/value pairs [31] (null) "AllowTemporalCompression" : 3 key/value pairs [32] (null) "AllocCodedBufferHalfSize" : 3 key/value pairs [33] (null) "GammaLevel" : (no summary) [34] (null) "ICCProfile" : (no summary) [35] (null) "SoftMaxQuantizationParameter" : 3 key/value pairs [36] (null) "ForceRefUncompressed" : 3 key/value pairs [37] (null) "EnableUserRefForFacetime" : 3 key/value pairs [38] (null) "InsertTrailingBytes" : 3 key/value pairs [39] (null) "PoolPixelBufferAttributes" : (no summary) [40] (null) "HDRMetadataInsertionMode" : (no summary) [41] (null) "RealTime" : 3 key/value pairs [42] (null) "UserParameterSetsIds" : 3 key/value pairs [43] (null) "RequiredHEVCPictureParameterSetID" : 3 key/value pairs [44] (null) "RequiredHEVCSequenceParameterSetID" : 3 key/value pairs [45] (null) "DebugMetadataSEI" : 3 key/value pairs [46] (null) "MaxQuantizationParameter" : 3 key/value pairs [47] (null) "LossLess" : 3 key/value pairs [48] (null) "CleanAperture" : (no summary) [49] (null) "DroppablePFramesOnly" : 3 key/value pairs [50] (null) "UseVideoResolutionAdaptation" : 3 key/value pairs [51] (null) "PrepareEncodedSampleBuffersForPaddedWrites" : (no summary) [52] (null) "EnableParallelStitching" : 3 key/value pairs [53] (null) "EnableStatsCollect" : 3 key/value pairs [54] (null) "ExpectedFrameRate" : 3 key/value pairs [55] (null) "PerceptualQualityOptimization" : 3 key/value pairs [56] (null) "NumberOfPendingFrames" : (no summary) [57] (null) "OutputBitDepth" : 3 key/value pairs [58] (null) "DebugMetadataSEIuseEPB" : 3 key/value pairs [59] (null) "log2_max_minus4" : 3 key/value pairs [60] (null) "PixelAspectRatio" : (no summary) [61] (null) "AmbientViewingEnvironment" : 3 key/value pairs [62] (null) "ThrottleForBackground" : 3 key/value pairs [63] (null) "Priority" : 3 key/value pairs [64] (null) "ConvergenceDurationForAverageDataRate" : 3 key/value pairs [65] (null) "PreserveDynamicHDRMetadata" : (no summary) [66] (null) "AuxiliaryTypeInfo" : (no summary) [67] (null) "EncodesAlpha" : 3 key/value pairs [68] (null) "ExpectedDuration" : 3 key/value pairs [69] (null) "MultiReferencePSpacing" : 3 key/value pairs [70] (null) "UserDPBFramesForFaceTime" : 3 key/value pairs [71] (null) "HEVCSyncSampleNALUnitTypes" : 3 key/value pairs [72] (null) "Quality" : 3 key/value pairs [73] (null) "MultiPassStorage" : 2 key/value pairs [74] (null) "EnableTimingInfoMetadata" : 3 key/value pairs [75] (null) "EncoderUsage" : 3 key/value pairs [76] (null) "PixelTransferProperties" : (no summary) [77] (null) "ChromaLocationBottomField" : (no summary) [78] (null) "FieldCount" : (no summary) [79] (null) "AllowFrameReordering" : 3 key/value pairs [80] (null) "RequiredHEVCVideoParameterSetAlphaLayerID" : 3 key/value pairs [81] (null) "EnableVUIBitstreamRestriction" : 3 key/value pairs [82] (null) "EncoderID" : (no summary) [83] (null) "AllowPixelTransfer" : (no summary) [84] (null) "EncodesDisparity" : 3 key/value pairs [85] (null) "VideoEncoderPixelBufferAttributes" : (no summary) [86] (null) "DeblockingFiltering" : 3 key/value pairs [87] (null) "EncodesDepth" : 3 key/value pairs [88] (null) "ChromaQPIndexOffsetMultiPPS" : 3 key/value pairs [89] (null) "EnableMultiReferenceP" : 3 key/value pairs [90] (null) "ContentLightLevelInfo" : (no summary) [91] (null) "MaxKeyFrameInterval" : 3 key/value pairs [92] (null) "BaseLayerFrameRate" : 3 key/value pairs [93] (null) "EnableUserQPForFacetime" : 3 key/value pairs [94] (null) "MaximizePowerEfficiency" : 3 key/value pairs [95] (null) "PrioritizeEncodingSpeedOverQuality" : 3 key/value pairs [96] (null) "IntraRefreshFrames" : 3 key/value pairs [97] (null) "MasteringDisplayColorVolume" : (no summary) [98] (null) "QuantizationScalingMatrixPreset" : 3 key/value pairs [99] (null) "ClientPID" : (no summary) [100] (null) "SAOMode" : 3 key/value pairs [101] (null) "SourceFrameCount" : 3 key/value pairs [102] (null) "CodedBuffersOverride" : 3 key/value pairs [103] (null) "RelaxAverageBitRateTarget" : 3 key/value pairs [104] (null) "NumberOfSlices" : 3 key/value pairs

VTSessionSetProperty failed to set: EnableLowLatencyRateControl to 1: -12900 [20221014 15:55:5.722] (helpers.cc:47): VTSessionSetProperty failed to set: MaxAllowedFrameQP to 10: -12900 [20221014 15:55:5.723] (helpers.cc:47): VTSessionSetProperty failed to set: BaseFrameQP to 32: -12900

kVTPropertyNotSupportedErr = -12900

when I set Property then it return error -12900 . so it's fact that doesn't support . but why ?

I think supportedPropertyDictionary just lists the session properties. The docs for kVTEncodeFrameOptionKey_BaseFrameQP say "this value is set in the frameProperties CFDictionary passed to VTCompressionSessionEncodeFrame." I'm not aware of any API that lists the supported per-frame properties so you may just have to try it and see what happens...

why videotoolbox on ios 15.0 cannot support kVTEncodeFrameOptionKey_BaseFrameQP ?
 
 
Q