Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Turning off the traces #7

Open
raffaeler opened this issue Dec 22, 2024 · 8 comments
Open

Turning off the traces #7

raffaeler opened this issue Dec 22, 2024 · 8 comments

Comments

@raffaeler
Copy link

Any idea on how to turn off the traces?

I tried this, but I still see the encoder parameters being dumped on the Console.

encoder.SetOption(ENCODER_OPTION.ENCODER_OPTION_TRACE_LEVEL, 0);

TIA

@ReferenceType
Copy link
Owner

hi thanks for pointing this out.

I added necessary enum for trace levels

you should set them before Initialize() call.

decoder.SetOption(DECODER_OPTION.DECODER_OPTION_TRACE_LEVEL, TRACE_LEVEL.WELS_LOG_QUIET);
encoder.SetOption(ENCODER_OPTION.ENCODER_OPTION_TRACE_LEVEL, TRACE_LEVEL.WELS_LOG_QUIET);

@raffaeler
Copy link
Author

Thank you very much.
I still see some other prints on the console.

When I use the default settings, I still see:

Encoder [openh264-2.4.1-win64.dll] loading..
openh264-2.4.1-win64.dll loaded

If instead I use the extended parameters

        TagEncParamExt param = H264Helper.GetParameters(
            encoder.GetDefaultParameters(),
            _fps, _bitrate, _width, _height);
        encoder.Initialize(param);

I see this long list:

iUsageType 0
iPicWidth 640
iPicHeight 480
iTargetBitrate 200000000
iRCMode 1
fMaxFrameRate 120
iTemporalLayerNum 1
iSpatialLayerNum 1
iSpatialLayerNum 1
- SpatialLayer 0 : iVideoWidth 0
- SpatialLayer 0 : iVideoHeight 0
- SpatialLayer 0 : fFrameRate 60
- SpatialLayer 0 : iSpatialBitrate 0
- SpatialLayer 0 : iMaxSpatialBitrate 0
- SpatialLayer 0 : uiProfileIdc 0
- SpatialLayer 0 : uiLevelIdc 0
- SpatialLayer 0 : iDLayerQp 26
- SpatialLayer/SliceArg 0 : uiSliceMbNum0 0
- SpatialLayer/SliceArg 0 : uiSliceMbNum1 0
- SpatialLayer/SliceArg 0 : uiSliceMbNum2 0
- SpatialLayer/SliceArg 0 : uiSliceMbNum3 0
- SpatialLayer/SliceArg 0 : uiSliceMbNum4 0
- SpatialLayer/SliceArg 0 : uiSliceMbNum5 0
- SpatialLayer/SliceArg 0 : uiSliceMbNum6 0
- SpatialLayer/SliceArg 0 : uiSliceMbNum7 0
- SpatialLayer/SliceArg 0 : uiSliceMbNum8 0
- SpatialLayer/SliceArg 0 : uiSliceMbNum9 0
- SpatialLayer/SliceArg 0 : uiSliceMbNum10 0
- SpatialLayer/SliceArg 0 : uiSliceMbNum11 0
- SpatialLayer/SliceArg 0 : uiSliceMbNum12 0
- SpatialLayer/SliceArg 0 : uiSliceMbNum13 0
- SpatialLayer/SliceArg 0 : uiSliceMbNum14 0
- SpatialLayer/SliceArg 0 : uiSliceMbNum15 0
- SpatialLayer/SliceArg 0 : uiSliceMbNum16 0
- SpatialLayer/SliceArg 0 : uiSliceMbNum17 0
- SpatialLayer/SliceArg 0 : uiSliceMbNum18 0
- SpatialLayer/SliceArg 0 : uiSliceMbNum19 0
- SpatialLayer/SliceArg 0 : uiSliceMbNum20 0
- SpatialLayer/SliceArg 0 : uiSliceMbNum21 0
- SpatialLayer/SliceArg 0 : uiSliceMbNum22 0
- SpatialLayer/SliceArg 0 : uiSliceMbNum23 0
- SpatialLayer/SliceArg 0 : uiSliceMbNum24 0
- SpatialLayer/SliceArg 0 : uiSliceMbNum25 0
- SpatialLayer/SliceArg 0 : uiSliceMbNum26 0
- SpatialLayer/SliceArg 0 : uiSliceMbNum27 0
- SpatialLayer/SliceArg 0 : uiSliceMbNum28 0
- SpatialLayer/SliceArg 0 : uiSliceMbNum29 0
- SpatialLayer/SliceArg 0 : uiSliceMbNum30 0
- SpatialLayer/SliceArg 0 : uiSliceMbNum31 0
- SpatialLayer/SliceArg 0 : uiSliceMbNum32 0
- SpatialLayer/SliceArg 0 : uiSliceMbNum33 0
- SpatialLayer/SliceArg 0 : uiSliceMbNum34 0
- SpatialLayer/SliceArg 0 : uiSliceMode 0
- SpatialLayer/SliceArg 0 : uiSliceNum 0
- SpatialLayer/SliceArg 0 : uiSliceSizeConstraint 1500
- SpatialLayer 0 : bVideoSignalTypePresent 0
- SpatialLayer 0 : uiVideoFormat
- SpatialLayer 0 : bFullRange 0
- SpatialLayer 0 : bColorDescriptionPresent 0
- SpatialLayer 0 : uiColorPrimaries
- SpatialLayer 0 : uiTransferCharacteristics
- SpatialLayer 0 : uiColorMatrix
- SpatialLayer 0 : bAspectRatioPresent 0
- SpatialLayer 0 : eAspectRatio 0
- SpatialLayer 0 : sAspectRatioExtWidth 0
- SpatialLayer 0 : sAspectRatioExtHeight 0
- SpatialLayer 1 : iVideoWidth 0
- SpatialLayer 1 : iVideoHeight 0
- SpatialLayer 1 : fFrameRate 60
- SpatialLayer 1 : iSpatialBitrate 0
- SpatialLayer 1 : iMaxSpatialBitrate 0
- SpatialLayer 1 : uiProfileIdc 0
- SpatialLayer 1 : uiLevelIdc 0
- SpatialLayer 1 : iDLayerQp 26
- SpatialLayer/SliceArg 1 : uiSliceMbNum0 0
- SpatialLayer/SliceArg 1 : uiSliceMbNum1 0
- SpatialLayer/SliceArg 1 : uiSliceMbNum2 0
- SpatialLayer/SliceArg 1 : uiSliceMbNum3 0
- SpatialLayer/SliceArg 1 : uiSliceMbNum4 0
- SpatialLayer/SliceArg 1 : uiSliceMbNum5 0
- SpatialLayer/SliceArg 1 : uiSliceMbNum6 0
- SpatialLayer/SliceArg 1 : uiSliceMbNum7 0
- SpatialLayer/SliceArg 1 : uiSliceMbNum8 0
- SpatialLayer/SliceArg 1 : uiSliceMbNum9 0
- SpatialLayer/SliceArg 1 : uiSliceMbNum10 0
- SpatialLayer/SliceArg 1 : uiSliceMbNum11 0
- SpatialLayer/SliceArg 1 : uiSliceMbNum12 0
- SpatialLayer/SliceArg 1 : uiSliceMbNum13 0
- SpatialLayer/SliceArg 1 : uiSliceMbNum14 0
- SpatialLayer/SliceArg 1 : uiSliceMbNum15 0
- SpatialLayer/SliceArg 1 : uiSliceMbNum16 0
- SpatialLayer/SliceArg 1 : uiSliceMbNum17 0
- SpatialLayer/SliceArg 1 : uiSliceMbNum18 0
- SpatialLayer/SliceArg 1 : uiSliceMbNum19 0
- SpatialLayer/SliceArg 1 : uiSliceMbNum20 0
- SpatialLayer/SliceArg 1 : uiSliceMbNum21 0
- SpatialLayer/SliceArg 1 : uiSliceMbNum22 0
- SpatialLayer/SliceArg 1 : uiSliceMbNum23 0
- SpatialLayer/SliceArg 1 : uiSliceMbNum24 0
- SpatialLayer/SliceArg 1 : uiSliceMbNum25 0
- SpatialLayer/SliceArg 1 : uiSliceMbNum26 0
- SpatialLayer/SliceArg 1 : uiSliceMbNum27 0
- SpatialLayer/SliceArg 1 : uiSliceMbNum28 0
- SpatialLayer/SliceArg 1 : uiSliceMbNum29 0
- SpatialLayer/SliceArg 1 : uiSliceMbNum30 0
- SpatialLayer/SliceArg 1 : uiSliceMbNum31 0
- SpatialLayer/SliceArg 1 : uiSliceMbNum32 0
- SpatialLayer/SliceArg 1 : uiSliceMbNum33 0
- SpatialLayer/SliceArg 1 : uiSliceMbNum34 0
- SpatialLayer/SliceArg 1 : uiSliceMode 0
- SpatialLayer/SliceArg 1 : uiSliceNum 0
- SpatialLayer/SliceArg 1 : uiSliceSizeConstraint 1500
- SpatialLayer 1 : bVideoSignalTypePresent 0
- SpatialLayer 1 : uiVideoFormat
- SpatialLayer 1 : bFullRange 0
- SpatialLayer 1 : bColorDescriptionPresent 0
- SpatialLayer 1 : uiColorPrimaries
- SpatialLayer 1 : uiTransferCharacteristics
- SpatialLayer 1 : uiColorMatrix
- SpatialLayer 1 : bAspectRatioPresent 0
- SpatialLayer 1 : eAspectRatio 0
- SpatialLayer 1 : sAspectRatioExtWidth 0
- SpatialLayer 1 : sAspectRatioExtHeight 0
- SpatialLayer 2 : iVideoWidth 0
- SpatialLayer 2 : iVideoHeight 0
- SpatialLayer 2 : fFrameRate 60
- SpatialLayer 2 : iSpatialBitrate 0
- SpatialLayer 2 : iMaxSpatialBitrate 0
- SpatialLayer 2 : uiProfileIdc 0
- SpatialLayer 2 : uiLevelIdc 0
- SpatialLayer 2 : iDLayerQp 26
- SpatialLayer/SliceArg 2 : uiSliceMbNum0 0
- SpatialLayer/SliceArg 2 : uiSliceMbNum1 0
- SpatialLayer/SliceArg 2 : uiSliceMbNum2 0
- SpatialLayer/SliceArg 2 : uiSliceMbNum3 0
- SpatialLayer/SliceArg 2 : uiSliceMbNum4 0
- SpatialLayer/SliceArg 2 : uiSliceMbNum5 0
- SpatialLayer/SliceArg 2 : uiSliceMbNum6 0
- SpatialLayer/SliceArg 2 : uiSliceMbNum7 0
- SpatialLayer/SliceArg 2 : uiSliceMbNum8 0
- SpatialLayer/SliceArg 2 : uiSliceMbNum9 0
- SpatialLayer/SliceArg 2 : uiSliceMbNum10 0
- SpatialLayer/SliceArg 2 : uiSliceMbNum11 0
- SpatialLayer/SliceArg 2 : uiSliceMbNum12 0
- SpatialLayer/SliceArg 2 : uiSliceMbNum13 0
- SpatialLayer/SliceArg 2 : uiSliceMbNum14 0
- SpatialLayer/SliceArg 2 : uiSliceMbNum15 0
- SpatialLayer/SliceArg 2 : uiSliceMbNum16 0
- SpatialLayer/SliceArg 2 : uiSliceMbNum17 0
- SpatialLayer/SliceArg 2 : uiSliceMbNum18 0
- SpatialLayer/SliceArg 2 : uiSliceMbNum19 0
- SpatialLayer/SliceArg 2 : uiSliceMbNum20 0
- SpatialLayer/SliceArg 2 : uiSliceMbNum21 0
- SpatialLayer/SliceArg 2 : uiSliceMbNum22 0
- SpatialLayer/SliceArg 2 : uiSliceMbNum23 0
- SpatialLayer/SliceArg 2 : uiSliceMbNum24 0
- SpatialLayer/SliceArg 2 : uiSliceMbNum25 0
- SpatialLayer/SliceArg 2 : uiSliceMbNum26 0
- SpatialLayer/SliceArg 2 : uiSliceMbNum27 0
- SpatialLayer/SliceArg 2 : uiSliceMbNum28 0
- SpatialLayer/SliceArg 2 : uiSliceMbNum29 0
- SpatialLayer/SliceArg 2 : uiSliceMbNum30 0
- SpatialLayer/SliceArg 2 : uiSliceMbNum31 0
- SpatialLayer/SliceArg 2 : uiSliceMbNum32 0
- SpatialLayer/SliceArg 2 : uiSliceMbNum33 0
- SpatialLayer/SliceArg 2 : uiSliceMbNum34 0
- SpatialLayer/SliceArg 2 : uiSliceMode 0
- SpatialLayer/SliceArg 2 : uiSliceNum 0
- SpatialLayer/SliceArg 2 : uiSliceSizeConstraint 1500
- SpatialLayer 2 : bVideoSignalTypePresent 0
- SpatialLayer 2 : uiVideoFormat
- SpatialLayer 2 : bFullRange 0
- SpatialLayer 2 : bColorDescriptionPresent 0
- SpatialLayer 2 : uiColorPrimaries
- SpatialLayer 2 : uiTransferCharacteristics
- SpatialLayer 2 : uiColorMatrix
- SpatialLayer 2 : bAspectRatioPresent 0
- SpatialLayer 2 : eAspectRatio 0
- SpatialLayer 2 : sAspectRatioExtWidth 0
- SpatialLayer 2 : sAspectRatioExtHeight 0
- SpatialLayer 3 : iVideoWidth 0
- SpatialLayer 3 : iVideoHeight 0
- SpatialLayer 3 : fFrameRate 60
- SpatialLayer 3 : iSpatialBitrate 0
- SpatialLayer 3 : iMaxSpatialBitrate 0
- SpatialLayer 3 : uiProfileIdc 0
- SpatialLayer 3 : uiLevelIdc 0
- SpatialLayer 3 : iDLayerQp 26
- SpatialLayer/SliceArg 3 : uiSliceMbNum0 0
- SpatialLayer/SliceArg 3 : uiSliceMbNum1 0
- SpatialLayer/SliceArg 3 : uiSliceMbNum2 0
- SpatialLayer/SliceArg 3 : uiSliceMbNum3 0
- SpatialLayer/SliceArg 3 : uiSliceMbNum4 0
- SpatialLayer/SliceArg 3 : uiSliceMbNum5 0
- SpatialLayer/SliceArg 3 : uiSliceMbNum6 0
- SpatialLayer/SliceArg 3 : uiSliceMbNum7 0
- SpatialLayer/SliceArg 3 : uiSliceMbNum8 0
- SpatialLayer/SliceArg 3 : uiSliceMbNum9 0
- SpatialLayer/SliceArg 3 : uiSliceMbNum10 0
- SpatialLayer/SliceArg 3 : uiSliceMbNum11 0
- SpatialLayer/SliceArg 3 : uiSliceMbNum12 0
- SpatialLayer/SliceArg 3 : uiSliceMbNum13 0
- SpatialLayer/SliceArg 3 : uiSliceMbNum14 0
- SpatialLayer/SliceArg 3 : uiSliceMbNum15 0
- SpatialLayer/SliceArg 3 : uiSliceMbNum16 0
- SpatialLayer/SliceArg 3 : uiSliceMbNum17 0
- SpatialLayer/SliceArg 3 : uiSliceMbNum18 0
- SpatialLayer/SliceArg 3 : uiSliceMbNum19 0
- SpatialLayer/SliceArg 3 : uiSliceMbNum20 0
- SpatialLayer/SliceArg 3 : uiSliceMbNum21 0
- SpatialLayer/SliceArg 3 : uiSliceMbNum22 0
- SpatialLayer/SliceArg 3 : uiSliceMbNum23 0
- SpatialLayer/SliceArg 3 : uiSliceMbNum24 0
- SpatialLayer/SliceArg 3 : uiSliceMbNum25 0
- SpatialLayer/SliceArg 3 : uiSliceMbNum26 0
- SpatialLayer/SliceArg 3 : uiSliceMbNum27 0
- SpatialLayer/SliceArg 3 : uiSliceMbNum28 0
- SpatialLayer/SliceArg 3 : uiSliceMbNum29 0
- SpatialLayer/SliceArg 3 : uiSliceMbNum30 0
- SpatialLayer/SliceArg 3 : uiSliceMbNum31 0
- SpatialLayer/SliceArg 3 : uiSliceMbNum32 0
- SpatialLayer/SliceArg 3 : uiSliceMbNum33 0
- SpatialLayer/SliceArg 3 : uiSliceMbNum34 0
- SpatialLayer/SliceArg 3 : uiSliceMode 0
- SpatialLayer/SliceArg 3 : uiSliceNum 0
- SpatialLayer/SliceArg 3 : uiSliceSizeConstraint 1500
- SpatialLayer 3 : bVideoSignalTypePresent 0
- SpatialLayer 3 : uiVideoFormat
- SpatialLayer 3 : bFullRange 0
- SpatialLayer 3 : bColorDescriptionPresent 0
- SpatialLayer 3 : uiColorPrimaries
- SpatialLayer 3 : uiTransferCharacteristics
- SpatialLayer 3 : uiColorMatrix
- SpatialLayer 3 : bAspectRatioPresent 0
- SpatialLayer 3 : eAspectRatio 0
- SpatialLayer 3 : sAspectRatioExtWidth 0
- SpatialLayer 3 : sAspectRatioExtHeight 0
iComplexityMode 0
uiIntraPeriod 0
iNumRefFrame -1
eSpsPpsIdStrategy 1
bPrefixNalAddingCtrl 0
bEnableSSEI 0
bSimulcastAVC 0
iPaddingFlag 0
iEntropyCodingModeFlag 0
bEnableFrameSkip 1
iMaxBitrate 0
iMaxQp 51
iMinQp 0
uiMaxNalSize 0
bEnableLongTermReference 0
iLTRRefNum 0
iLtrMarkPeriod 30
iMultipleThreadIdc 1
bUseLoadBalancing 1
iLoopFilterDisableIdc 0
iLoopFilterAlphaC0Offset 0
iLoopFilterBetaOffset 0
bEnableDenoise 0
bEnableBackgroundDetection 1
bEnableAdaptiveQuant 1
bEnableFrameCroppingFlag 1
bEnableSceneChangeDetect 1
bIsLosslessLink 0
bFixRCOverShoot 1
iIdrBitrateRatio 400

Thanks again

@ReferenceType
Copy link
Owner

Yes this part was my own addition to check if inter-op is successful etc..

Sorry for the delay, It is removed now on latest version.

@raffaeler
Copy link
Author

Thank you, it is much better now, but I still see this in the last 1.4.1

Encoder [openh264-2.4.1-win64.dll] loading..
openh264-2.4.1-win64.dll loaded

@ReferenceType
Copy link
Owner

Hi
All the custom prints are removed by default on latest release now.
Sorry it took some time i wanted to finalize some new features.

@raffaeler
Copy link
Author

No worries, I'll give a try before the weekend. Thanks!

P.S. Did you figure out how to control the quality (in ffmpeg is the crf parameter) in this encoder?
I read about the min and max qp, but I am not sure that's all I need.

@ReferenceType
Copy link
Owner

I will write you what i know.
I have done some research and lot of tinkering but its been a long time since. There is a quick and dirty WPF app there to play with parameters and see results.

I use the encoder with RC_BITRATE_MODE and give a target bitrate, you can control the target bitrate on runtime with encoder.SetMaxBitrate didnt notice any quality difference on quality mode.

The Min and Max QP AFIK defines the range of compression where encoder will choose a value according to constraints. if MinQp is 0 you should get min compression when bitrate limits are low. you can reduce the maxQP to limit compression but then your bitrate may overshoot.

Another parameter here is the param.bEnableAdaptiveQuant dynamically modifies the QP across different parts of a frame based on content complexity.

Cisco doesn't seem to support high profiles, probably they only intended this for a VoIP products.

@raffaeler
Copy link
Author

Thanks for the tips.
As far as I know, the profils and profile levels do not have a significative impact on the quality, just on the size and encoding time. For example baseline simplifies the code for not-powerful hardware. The tests I made using ffmpeg on the command line match this.

Also, on the Cisco repository I discovered that:

Beyond that, I still didn't find the equivalent parameters miming the crf in ffmpeg.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants