| 1328 | ::testing::ValuesIn (kOptionParamArray)); |
| 1329 | |
| 1330 | TEST_P (EncodeTestAPI, SetEncOptionSize) { |
| 1331 | EncodeOptionParam p = GetParam(); |
| 1332 | memset (¶m_, 0, sizeof (SEncParamExt)); |
| 1333 | encoder_->GetDefaultParams (¶m_); |
| 1334 | param_.uiMaxNalSize = p.uiMaxNalLen; |
| 1335 | param_.iTemporalLayerNum = (rand() % 4) + 1; |
| 1336 | param_.iSpatialLayerNum = 1; |
| 1337 | param_.iUsageType = CAMERA_VIDEO_REAL_TIME; |
| 1338 | param_.iPicWidth = p.iWidth; |
| 1339 | param_.iPicHeight = p.iHeight; |
| 1340 | param_.fMaxFrameRate = p.fFramerate; |
| 1341 | param_.iRCMode = RC_OFF_MODE; //rc off |
| 1342 | param_.iMultipleThreadIdc = p.iThreads; |
| 1343 | param_.iNumRefFrame = AUTO_REF_PIC_COUNT; |
| 1344 | param_.sSpatialLayers[0].iVideoWidth = p.iWidth; |
| 1345 | param_.sSpatialLayers[0].iVideoHeight = p.iHeight; |
| 1346 | param_.sSpatialLayers[0].fFrameRate = p.fFramerate; |
| 1347 | |
| 1348 | int iSliceModeTestNum = 1; |
| 1349 | if (SM_RESERVED == p.eSliceMode) { |
| 1350 | iSliceModeTestNum = SLICE_MODE_NUM; |
| 1351 | } |
| 1352 | |
| 1353 | for (int iSliceIdx = 0; iSliceIdx < iSliceModeTestNum; iSliceIdx++) { |
| 1354 | if (1 == iSliceModeTestNum) { |
| 1355 | param_.sSpatialLayers[0].sSliceArgument.uiSliceMode = p.eSliceMode; |
| 1356 | } else { |
| 1357 | param_.sSpatialLayers[0].sSliceArgument.uiSliceMode = static_cast<SliceModeEnum> (iSliceIdx); |
| 1358 | } |
| 1359 | |
| 1360 | FILE* pFile = NULL; |
| 1361 | if (p.sFileSave != NULL && strlen (p.sFileSave) > 0) { |
| 1362 | pFile = fopen (p.sFileSave, "wb"); |
| 1363 | } |
| 1364 | |
| 1365 | if (SM_FIXEDSLCNUM_SLICE == param_.sSpatialLayers[0].sSliceArgument.uiSliceMode) { |
| 1366 | param_.sSpatialLayers[0].sSliceArgument.uiSliceNum = 8; |
| 1367 | } else if (SM_RASTER_SLICE == param_.sSpatialLayers[0].sSliceArgument.uiSliceMode) { |
| 1368 | param_.sSpatialLayers[0].sSliceArgument.uiSliceMbNum[0] = |
| 1369 | param_.sSpatialLayers[0].sSliceArgument.uiSliceMbNum[1] = |
| 1370 | param_.sSpatialLayers[0].sSliceArgument.uiSliceMbNum[2] = |
| 1371 | param_.sSpatialLayers[0].sSliceArgument.uiSliceMbNum[3] = ((p.iWidth * p.iHeight) >> 10); |
| 1372 | } else if (SM_SIZELIMITED_SLICE == param_.sSpatialLayers[0].sSliceArgument.uiSliceMode && 450 > p.uiMaxNalLen) { |
| 1373 | param_.uiMaxNalSize = 450; |
| 1374 | param_.sSpatialLayers[0].sSliceArgument.uiSliceSizeConstraint = 450; |
| 1375 | } |
| 1376 | |
| 1377 | int32_t iTraceLevel = WELS_LOG_QUIET; |
| 1378 | encoder_->SetOption (ENCODER_OPTION_TRACE_LEVEL, &iTraceLevel); |
| 1379 | decoder_->SetOption (DECODER_OPTION_TRACE_LEVEL, &iTraceLevel); |
| 1380 | |
| 1381 | encoder_->Uninitialize(); |
| 1382 | int rv = encoder_->InitializeExt (¶m_); |
| 1383 | ASSERT_TRUE (rv == cmResultSuccess); |
| 1384 | ASSERT_TRUE (InitialEncDec (p.iWidth, p.iHeight)); |
| 1385 | |
| 1386 | int32_t iSpsPpsIdAddition = 1; |
| 1387 | encoder_->SetOption (ENCODER_OPTION_SPS_PPS_ID_STRATEGY, &iSpsPpsIdAddition); |
nothing calls this directly
no test coverage detected