History

add UT for incomplete frame for parse only

huili2 committed 11 years ago

Commit ea533e61 parent a39c4662 files · +61 −0Browse files

Showing the changes to test/api/encode_decode_api_test.cpp (1 of 2 files). Show all

Unified · Split

test/api/encode_decode_api_test.cpp+60−0
@@ -2465,3 +2465,63 @@ TEST_F (DecodeParseAPI, ParseOnly_General) { · 2464 unmodified lines
2465#endif2465#endif
2466}2466}
2467 2467
2468//This case is for one layer only, for incomplete frame input
2469//First slice is loss for random one picture with 2 slices per pic
2470TEST_F (DecodeParseAPI, ParseOnly_SpecSliceLoss) {
2471 int32_t iLayerNum = 1;
2472 int32_t iSliceNum = 2;
2473 EncodeDecodeFileParamBase p;
2474 p.width = iWidth_;
2475 p.height = iHeight_;
2476 p.frameRate = kiFrameRate;
2477 p.numframes = 5;
2478 prepareParam (iLayerNum, iSliceNum, p.width, p.height, p.frameRate);
2479 param_.iSpatialLayerNum = iLayerNum;
2480 encoder_->Uninitialize();
2481 int rv = encoder_->InitializeExt (&param_);
2482 ASSERT_TRUE (rv == 0);
2483 int32_t iTraceLevel = WELS_LOG_QUIET;
2484 encoder_->SetOption (ENCODER_OPTION_TRACE_LEVEL, &iTraceLevel);
2485 decoder_->SetOption (DECODER_OPTION_TRACE_LEVEL, &iTraceLevel);
2486
2487 int32_t iMissedPicNum = rand() % (p.numframes - 1) + 1; //IDR no loss
2488 //Start for enc
2489 int iLen = 0;
2490 uint32_t uiGet;
2491 prepareEncDecParam (p);
2492 int iFrame = 0;
2493
2494 while (iFrame < p.numframes) {
2495 //encode
2496 EncodeOneFrame (iFrame);
2497 //parseonly
2498 if (iFrame == iMissedPicNum) { //make current frame partly missing
2499 //Frame: P, first slice loss
2500 int32_t iTotalSliceSize = 0;
2501 encToDecSliceData (0, 0, info, iTotalSliceSize); //slice 1 lost
2502 encToDecSliceData (0, 1, info, iLen); //slice 2
2503 decoder_->GetOption (DECODER_OPTION_ERROR_CON_IDC, &uiGet);
2504 EXPECT_EQ (uiGet, (uint32_t) ERROR_CON_DISABLE);
2505 rv = decoder_->DecodeParser (info.sLayerInfo[0].pBsBuf + iTotalSliceSize, iLen, &BsInfo_);
2506 EXPECT_TRUE (rv == 0);
2507 EXPECT_TRUE (BsInfo_.iNalNum == 0);
2508 rv = decoder_->DecodeParser (NULL, 0, &BsInfo_);
2509 EXPECT_TRUE (rv != 0);
2510 } else { //normal frame, complete
2511 encToDecData (info, iLen);
2512 rv = decoder_->DecodeParser (info.sLayerInfo[0].pBsBuf, iLen, &BsInfo_);
2513 EXPECT_TRUE (rv == 0); //parse correct
2514 EXPECT_TRUE (BsInfo_.iNalNum == 0);
2515 rv = decoder_->DecodeParser (NULL, 0, &BsInfo_);
2516 if (iFrame < iMissedPicNum) { //correct frames, all OK with output
2517 EXPECT_TRUE (rv == 0);
2518 EXPECT_TRUE (BsInfo_.iNalNum != 0);
2519 } else { //(iFrame > iMissedPicNum), should output nothing as error
2520 EXPECT_TRUE (rv != 0);
2521 EXPECT_TRUE (BsInfo_.iNalNum == 0);
2522 }
2523 }
2524 iFrame++;
2525 } //while
2526}
2527

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t