MCPcopy Create free account
hub / github.com/cisco/openh264 / InitWithParam

Function InitWithParam

test/api/BaseEncoderTest.cpp:8–67  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6#include "BaseEncoderTest.h"
7
8static int InitWithParam (ISVCEncoder* encoder, SEncParamExt* pEncParamExt) {
9
10 SliceModeEnum eSliceMode = pEncParamExt->sSpatialLayers[0].sSliceArgument.uiSliceMode;
11 bool bBaseParamFlag = (SM_SINGLE_SLICE == eSliceMode && !pEncParamExt->bEnableDenoise
12 && pEncParamExt->iSpatialLayerNum == 1 && !pEncParamExt->bIsLosslessLink
13 && !pEncParamExt->bEnableLongTermReference && !pEncParamExt->iEntropyCodingModeFlag) ? true : false;
14 if (bBaseParamFlag) {
15 SEncParamBase param;
16 memset (&param, 0, sizeof (SEncParamBase));
17
18 param.iUsageType = pEncParamExt->iUsageType;
19 param.fMaxFrameRate = pEncParamExt->fMaxFrameRate;
20 param.iPicWidth = pEncParamExt->iPicWidth;
21 param.iPicHeight = pEncParamExt->iPicHeight;
22 param.iTargetBitrate = 5000000;
23 return encoder->Initialize (&param);
24 } else {
25 SEncParamExt param;
26 encoder->GetDefaultParams (&param);
27
28 param.iUsageType = pEncParamExt->iUsageType;
29 param.fMaxFrameRate = pEncParamExt->fMaxFrameRate;
30 param.iPicWidth = pEncParamExt->iPicWidth;
31 param.iPicHeight = pEncParamExt->iPicHeight;
32 param.iTargetBitrate = 5000000;
33 param.bEnableDenoise = pEncParamExt->bEnableDenoise;
34 param.iSpatialLayerNum = pEncParamExt->iSpatialLayerNum;
35 param.bIsLosslessLink = pEncParamExt->bIsLosslessLink;
36 param.bEnableLongTermReference = pEncParamExt->bEnableLongTermReference;
37 param.iEntropyCodingModeFlag = pEncParamExt->iEntropyCodingModeFlag ? 1 : 0;
38 if (eSliceMode != SM_SINGLE_SLICE
39 && eSliceMode != SM_SIZELIMITED_SLICE) //SM_SIZELIMITED_SLICE don't support multi-thread now
40 param.iMultipleThreadIdc = 2;
41
42 for (int i = 0; i < param.iSpatialLayerNum; i++) {
43 param.sSpatialLayers[i].iVideoWidth = pEncParamExt->iPicWidth >> (param.iSpatialLayerNum - 1 - i);
44 param.sSpatialLayers[i].iVideoHeight = pEncParamExt->iPicHeight >> (param.iSpatialLayerNum - 1 - i);
45 param.sSpatialLayers[i].fFrameRate = pEncParamExt->fMaxFrameRate;
46 param.sSpatialLayers[i].iSpatialBitrate = param.iTargetBitrate;
47
48 param.sSpatialLayers[i].sSliceArgument.uiSliceMode = eSliceMode;
49 if (eSliceMode == SM_SIZELIMITED_SLICE) {
50 param.sSpatialLayers[i].sSliceArgument.uiSliceSizeConstraint = 600;
51 param.uiMaxNalSize = 1500;
52 param.iMultipleThreadIdc = 4;
53 param.bUseLoadBalancing = false;
54 }
55 if (eSliceMode == SM_FIXEDSLCNUM_SLICE) {
56 param.sSpatialLayers[i].sSliceArgument.uiSliceNum = 4;
57 param.iMultipleThreadIdc = 4;
58 param.bUseLoadBalancing = false;
59 }
60 if (param.iEntropyCodingModeFlag) {
61 param.sSpatialLayers[i].uiProfileIdc = PRO_MAIN;
62 }
63 }
64 param.iTargetBitrate *= param.iSpatialLayerNum;
65 return encoder->InitializeExt (&param);

Callers 1

EncodeStreamMethod · 0.85

Calls 3

InitializeMethod · 0.45
GetDefaultParamsMethod · 0.45
InitializeExtMethod · 0.45

Tested by

no test coverage detected