Showing the changes to test/api/encode_options_test.cpp (1 of 2 files). Show all
Unified · Split
| @@ -1957,8 +1957,8 @@ TEST_F (EncodeDecodeTestAPI, ProfileLevelSetting) { · 1956 unmodified lines | ||
| 1957 | 1957 | sParam.iEntropyCodingModeFlag = rand() % 2; |
| 1958 | 1958 | sParam.sSpatialLayers[0].iSpatialBitrate = sParam.iTargetBitrate = 3000; |
| 1959 | 1959 | |
| 1960 | − int TraceLevel = WELS_LOG_DEBUG; | |
| 1961 | − encoder_->SetOption (ENCODER_OPTION_TRACE_LEVEL, &TraceLevel); | |
| 1960 | +// int TraceLevel = WELS_LOG_DEBUG; | |
| 1961 | +// encoder_->SetOption (ENCODER_OPTION_TRACE_LEVEL, &TraceLevel); | |
| 1962 | 1962 | //decoder_->SetOption (DECODER_OPTION_TRACE_LEVEL, &TraceLevel); |
| 1963 | 1963 | iEncProfileIdc = profileList[rand() % 11]; |
| 1964 | 1964 | iEncLevelIdc = levelList[rand() % 18]; |
| @@ -1980,7 +1980,7 @@ TEST_F (EncodeDecodeTestAPI, ProfileLevelSetting) { · 15 unmodified lines | ||
| 1980 | 1980 | } |
| 1981 | 1981 | |
| 1982 | 1982 | ASSERT_TRUE (iDecProfileIdc == iEncProfileIdc) << "enc_profile = " << iEncProfileIdc << " dec_profile = " << |
| 1983 | − iDecProfileIdc; | |
| 1983 | + iDecProfileIdc; | |
| 1984 | 1984 | |
| 1985 | 1985 | //check whether the level is changed according to level limitation |
| 1986 | 1986 | ELevelIdc uiLevel = LEVEL_UNKNOWN; |
| @@ -2213,8 +2213,8 @@ TEST_F (EncodeDecodeTestAPI, TemporalLayerChangeDuringEncoding) { · 226 unmodified lines | ||
| 2213 | 2213 | prepareParamDefault (1, iSliceNum, iWidth, iHeight, fFrameRate, &sParam); |
| 2214 | 2214 | sParam.iTemporalLayerNum = 2; |
| 2215 | 2215 | |
| 2216 | − //int TraceLevel = WELS_LOG_DEBUG; | |
| 2217 | − //encoder_->SetOption (ENCODER_OPTION_TRACE_LEVEL, &TraceLevel); | |
| 2216 | +// int TraceLevel = WELS_LOG_DEBUG; | |
| 2217 | +// encoder_->SetOption (ENCODER_OPTION_TRACE_LEVEL, &TraceLevel); | |
| 2218 | 2218 | iRet = encoder_->InitializeExt (&sParam); |
| 2219 | 2219 | ASSERT_TRUE (iRet == cmResultSuccess) << "InitializeExt: iRet = " << iRet << " at " << sParam.iPicWidth << "x" << |
| 2220 | 2220 | sParam.iPicHeight; |
| @@ -2261,3 +2261,74 @@ TEST_F (EncodeDecodeTestAPI, TemporalLayerChangeDuringEncoding) { · 40 unmodified lines | ||
| 2261 | 2261 | ASSERT_TRUE (iRet == cmResultSuccess) << "rv = " << iRet; |
| 2262 | 2262 | |
| 2263 | 2263 | } |
| 2264 | + | |
| 2265 | +TEST_F (EncodeDecodeTestAPI, TemporalLayerChangeDuringEncoding_Specific) { | |
| 2266 | + int iWidth = 320; | |
| 2267 | + int iHeight = 192; | |
| 2268 | + float fFrameRate = 15; | |
| 2269 | + int iSliceNum = 1; | |
| 2270 | + int iRet = 0; | |
| 2271 | + int iTotalFrame = (rand() % 20) + 3; | |
| 2272 | + int iFrameNum = 0; | |
| 2273 | + SEncParamExt sParam; | |
| 2274 | + encoder_->GetDefaultParams (&sParam); | |
| 2275 | + prepareParamDefault (1, iSliceNum, iWidth, iHeight, fFrameRate, &sParam); | |
| 2276 | + | |
| 2277 | + int originalTemporalLayerNum = 1; | |
| 2278 | + int originalBR = 500000; | |
| 2279 | + float originalFR = 7.5; | |
| 2280 | + int iSteps[3] = {2, 1, 3}; | |
| 2281 | + int iStepIdx = 0; | |
| 2282 | + bool bSetOption = false; | |
| 2283 | + | |
| 2284 | + sParam.iTemporalLayerNum = originalTemporalLayerNum; | |
| 2285 | + sParam.iNumRefFrame = 1; | |
| 2286 | + | |
| 2287 | + int TraceLevel = WELS_LOG_INFO; | |
| 2288 | + encoder_->SetOption (ENCODER_OPTION_TRACE_LEVEL, &TraceLevel); | |
| 2289 | + iRet = encoder_->InitializeExt (&sParam); | |
| 2290 | + ASSERT_TRUE (iRet == cmResultSuccess) << "InitializeExt: iRet = " << iRet << " at " << sParam.iPicWidth << "x" << | |
| 2291 | + sParam.iPicHeight; | |
| 2292 | + | |
| 2293 | + ASSERT_TRUE (InitialEncDec (iWidth, iHeight)); | |
| 2294 | + | |
| 2295 | + int frameSize = EncPic.iPicWidth * EncPic.iPicHeight * 3 / 2; | |
| 2296 | + do { | |
| 2297 | + FileInputStream fileStream; | |
| 2298 | + ASSERT_TRUE (fileStream.Open ("res/CiscoVT2people_320x192_12fps.yuv")); | |
| 2299 | + | |
| 2300 | + while (fileStream.read (buf_.data(), frameSize) == frameSize) { | |
| 2301 | + | |
| 2302 | + if ( (iStepIdx < 3) && (iFrameNum == ((iTotalFrame / 3) * (iStepIdx + 1)))) { | |
| 2303 | + sParam.iTemporalLayerNum = originalTemporalLayerNum * iSteps[iStepIdx]; | |
| 2304 | + sParam.iTargetBitrate = sParam.sSpatialLayers[0].iSpatialBitrate = originalBR * iSteps[iStepIdx]; | |
| 2305 | + sParam.fMaxFrameRate = sParam.sSpatialLayers[0].fFrameRate = originalFR * pow (2, iSteps[iStepIdx]); | |
| 2306 | + encoder_->SetOption (ENCODER_OPTION_SVC_ENCODE_PARAM_EXT, &sParam); | |
| 2307 | + | |
| 2308 | + bSetOption = true; | |
| 2309 | + iStepIdx += 1; | |
| 2310 | + } | |
| 2311 | + | |
| 2312 | + iRet = encoder_->EncodeFrame (&EncPic, &info); | |
| 2313 | + EXPECT_TRUE (iRet == cmResultSuccess) << "rv = " << iRet; | |
| 2314 | + | |
| 2315 | + if (bSetOption) { | |
| 2316 | + if ((iStepIdx == 1) || (iStepIdx == 3)) { | |
| 2317 | + EXPECT_TRUE (info.eFrameType == videoFrameTypeIDR) << "iStepIdx=" << iStepIdx << "iFrameNum=" << iFrameNum << "iTotalFrame=" << iTotalFrame; | |
| 2318 | + } else { | |
| 2319 | + EXPECT_TRUE (info.eFrameType != videoFrameTypeIDR) << "iStepIdx=" << iStepIdx << "iFrameNum=" << iFrameNum << "iTotalFrame=" << iTotalFrame; | |
| 2320 | + } | |
| 2321 | + | |
| 2322 | + bSetOption = false; | |
| 2323 | + } | |
| 2324 | + | |
| 2325 | + | |
| 2326 | + } | |
| 2327 | + iFrameNum++; | |
| 2328 | + } while (iFrameNum < iTotalFrame); | |
| 2329 | + | |
| 2330 | + iRet = encoder_->Uninitialize(); | |
| 2331 | + ASSERT_TRUE (iRet == cmResultSuccess) << "rv = " << iRet; | |
| 2332 | + | |
| 2333 | +} | |
| 2334 | + | |