Hello,
i have a question again. I already created a forum entry ("DM385: Bad video stream quality for small GOP sizes"), which one I thought it was solved. But we figured out, that on very special video scenes we still have a bad video quality. So the last time we could only improved the quality by changing the profile but it is still not perfect.
We have used a generate test picture to have a high encoder load (This picture is still a video stream for the encoder 1080p @ 60fps). The effect is that for small GOP sizes on such a high load the quality gets worse. It seems that the effect directly corresponse to the GOP size. The stable test picture is changed on exactly the number of frames like the GOP size (see attachments), which means for example on a GOP size of 60 the effect occurs once per second, for 30 two times per second and so on. We could also see that this can happen on some special "real" video scenes like in https://www.youtube.com/watch?v=dVkK36KOcqs00:23 - 00:40 for example.
Does anyone have an idea what is causing that effect? Wrong configuration?
I have attached some videos with different GOP sizes using all the same target bitrate of 8000000, which are showing the issue.
And here are also my encoder configurations, which were used for generating that samples:
--------- Static Params -------
[m3video] Set dynamicParams VBR
[m3video] videnc2Params -> size : 312
[m3video] videnc2Params -> encodingPreset : 3
[m3video] videnc2Params -> rateControlPreset : 5
[m3video] videnc2Params -> maxHeight : 1080
[m3video] videnc2Params -> maxWidth : 1920
[m3video] videnc2Params -> dataEndianness : 1
[m3video] videnc2Params -> maxInterFrameInterval: 1
[m3video] videnc2Params -> maxBitRate : 8000000
[m3video] videnc2Params -> minBitRate : 0
[m3video] videnc2Params -> inputChromaFormat : 9
[m3video] videnc2Params -> inputContentType : 0
[m3video] videnc2Params -> operatingMode : 1
[m3video] videnc2Params -> profile : 77
[m3video] videnc2Params -> level : 42
[m3video] videnc2Params -> inputDataMode : 3
[m3video] videnc2Params -> outputDataMode : 3
[m3video] videnc2Params -> numInputDataUnits : 1
[m3video] videnc2Params -> numOutputDataUnits : 1
--------- Dynamic Params -------
[m3video]
[m3video] --------- CH 0 : H264 ENC : Dynamic Params -------
[m3video]
[m3video] videnc2DynamicParams -> inputHeight : 1080
[m3video] videnc2DynamicParams -> inputWidth : 1920
[m3video] videnc2DynamicParams -> refFrameRate : 25000
[m3video] videnc2DynamicParams -> targetFrameRate : 60000
[m3video] videnc2DynamicParams -> targetBitRate : 8000000
[m3video] videnc2DynamicParams -> intraFrameInterval : 5
[m3video] videnc2DynamicParams -> generateHeader : 0
[m3video] videnc2DynamicParams -> captureWidth : 1920
[m3video] videnc2DynamicParams -> forceFrame : -1
[m3video] videnc2DynamicParams -> interFrameInterval : 1
[m3video] videnc2DynamicParams -> mvAccuracy : 2
[m3video] videnc2DynamicParams -> sampleAspectRatioHeight : 1
[m3video] videnc2DynamicParams -> sampleAspectRatioWidth : 1
[m3video] videnc2DynamicParams -> ignoreOutbufSizeFlag : 1
[m3video] videnc2DynamicParams -> lateAcquireArg : -1
[m3video]
[m3video] rateControlParams -> rateControlParamsPreset : 1
[m3video] rateControlParams -> scalingMatrixPreset : 0
[m3video] rateControlParams -> rcAlgo : 0
[m3video] rateControlParams -> qpI : -1
[m3video] rateControlParams -> qpMaxI : 44
[m3video] rateControlParams -> qpMinI : 8
[m3video] rateControlParams -> qpP : -1
[m3video] rateControlParams -> qpMaxP : 44
[m3video] rateControlParams -> qpMinP : 8
[m3video] rateControlParams -> qpOffsetB : 4
[m3video] rateControlParams -> qpMaxB : 44
[m3video] rateControlParams -> qpMinB : 10
[m3video] rateControlParams -> allowFrameSkip : 1
[m3video] rateControlParams -> removeExpensiveCoeff : 0
[m3video] rateControlParams -> chromaQPIndexOffset : 0
[m3video] rateControlParams -> IPQualityFactor : 0
[m3video] rateControlParams -> initialBufferLevel : 16000000
[m3video] rateControlParams -> HRDBufferSize : 16000000
[m3video] rateControlParams -> minPicSizeRatioI : 0
[m3video] rateControlParams -> maxPicSizeRatioI : 96
[m3video] rateControlParams -> minPicSizeRatioP : 0
[m3video] rateControlParams -> maxPicSizeRatioP : 0
[m3video] rateControlParams -> minPicSizeRatioB : 0
[m3video] rateControlParams -> maxPicSizeRatioB : 0
[m3video] rateControlParams -> enablePRC : 1
[m3video] rateControlParams -> enablePartialFrameSkip : 1
[m3video] rateControlParams -> discardSavedBits : 1
[m3video] rateControlParams -> VBRDuration : 8
[m3video] rateControlParams -> VBRsensitivity : 0
[m3video] rateControlParams -> skipDistributionWindowLength : 5
[m3video] rateControlParams -> numSkipInDistributionWindow : 2
[m3video] rateControlParams -> enableHRDComplianceMode : 1
[m3video] rateControlParams -> frameSkipThMulQ5 : 0
[m3video] rateControlParams -> vbvUseLevelThQ5 : 0
[m3video]
[m3video] interCodingParams -> interCodingPreset : 0
[m3video] interCodingParams -> searchRangeHorP : 144
[m3video] interCodingParams -> searchRangeVerP : 32
[m3video] interCodingParams -> searchRangeHorB : 144
[m3video] interCodingParams -> searchRangeVerB : 16
[m3video] interCodingParams -> interCodingBias : 1
[m3video] interCodingParams -> skipMVCodingBias : 1
[m3video] interCodingParams -> minBlockSizeP : 0
[m3video] interCodingParams -> minBlockSizeB : 0
[m3video] interCodingParams -> meAlgoMode : 0
[m3video]
[m3video] intraCodingParams -> intraCodingPreset : 0
[m3video] intraCodingParams -> lumaIntra4x4Enable : 255
[m3video] intraCodingParams -> lumaIntra8x8Enable : 0
[m3video] intraCodingParams -> lumaIntra16x16Enable : 15
[m3video] intraCodingParams -> chromaIntra8x8Enable : 15
[m3video] intraCodingParams -> chromaComponentEnable : 1
[m3video] intraCodingParams -> intraRefreshMethod : 0
[m3video] intraCodingParams -> intraRefreshRate : 0
[m3video] intraCodingParams -> gdrOverlapRowsBtwFrames : 0
[m3video] intraCodingParams -> constrainedIntraPredEnable : 0
[m3video] intraCodingParams -> intraCodingBias : 0
[m3video]
[m3video] sliceCodingParams -> sliceCodingPreset : 1
[m3video] sliceCodingParams -> sliceMode : 416
[m3video] sliceCodingParams -> sliceUnitSize : 416
[m3video] sliceCodingParams -> sliceStartOffset : [-126 1 2]
[m3video] sliceCodingParams -> streamFormat : 0
[m3video]
[m3video] sliceGroupChangeCycle : 3072
[m3video] searchCenter : 0
[m3video] enableStaticMBCount : 0
[m3video] enableROI : 262400
[m3video]
[m3video]
Regards,
Andreas
Attachments:
Test picture with GOP 5:
Test picture with GOP 20:
Test picture with GOP 60: