History

add encoder interface UT for IDR request

lyao2 committed 12 years ago

Commit 44faa1c1 parent 3ef97dc2 files · +119 −0Browse files

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

Unified · Split

test/encoder/EncUT_EncoderExt.cpp+118−0
@@ -0,0 +1,118 @@
1#include<gtest/gtest.h>
2#include<stdlib.h>
3#include "codec_api.h"
4#include "welsEncoderExt.h"
5
6using namespace WelsSVCEnc;
7
8class EncoderInterfaceTest : public ::testing::Test {
9 public:
10 virtual void SetUp() {
11 pPtrEnc = new CWelsH264SVCEncoder();
12 pParamExt = new SEncParamExt();
13 pSrcPic = new SSourcePicture;
14 pOption = new SEncParamExt();
15 pYUV = NULL;
16
17 m_iWidth = 1280;
18 m_iHeight = 720;
19 m_iPicResSize = m_iWidth * m_iHeight * 3 >> 1;
20 pYUV = new uint8_t [m_iPicResSize];
21 }
22 void TemporalLayerSettingTest();
23 virtual void TearDown() {
24 delete pPtrEnc;
25 delete pParamExt;
26 delete pOption;
27 delete pSrcPic;
28 delete []pYUV;
29 }
30 public:
31 CWelsH264SVCEncoder* pPtrEnc;
32 SEncParamExt* pParamExt;
33 SSourcePicture* pSrcPic;
34 SEncParamExt* pOption;
35 uint8_t* pYUV;
36
37 int32_t m_iWidth;
38 int32_t m_iHeight;
39 int32_t m_iPicResSize;
40};
41
42void EncoderInterfaceTest::TemporalLayerSettingTest() {
43
44 pParamExt->iInputCsp = 23;
45 pParamExt->iPicWidth = m_iWidth;
46 pParamExt->iPicHeight = m_iHeight;
47 pParamExt->iTargetBitrate = 60000;
48 pParamExt->sSpatialLayers[0].iVideoHeight = pParamExt->iPicHeight;
49 pParamExt->sSpatialLayers[0].iVideoWidth = pParamExt->iPicWidth;
50 pParamExt->sSpatialLayers[0].iSpatialBitrate = 50000;
51 pParamExt->iTemporalLayerNum = 1;
52 pParamExt->iSpatialLayerNum = 1;
53
54 int32_t iResult = pPtrEnc->InitializeExt (pParamExt);
55 EXPECT_EQ (iResult, static_cast<int32_t> (cmResultSuccess));
56
57 pSrcPic->iColorFormat = videoFormatI420;
58 pSrcPic->uiTimeStamp = 0;
59 pSrcPic->iPicWidth = pParamExt->iPicWidth;
60 pSrcPic->iPicHeight = pParamExt->iPicHeight;
61
62 for (int32_t i = 0; i < m_iPicResSize; i++)
63 pYUV[i] = rand() % 256;
64
65 pSrcPic->iStride[0] = m_iWidth;
66 pSrcPic->iStride[1] = pSrcPic->iStride[2] = pSrcPic->iStride[0] >> 1;
67
68 pSrcPic->pData[0] = pYUV;
69 pSrcPic->pData[1] = pSrcPic->pData[0] + (m_iWidth * m_iHeight);
70 pSrcPic->pData[2] = pSrcPic->pData[1] + (m_iWidth * m_iHeight >> 2);
71
72 SFrameBSInfo sFbi;
73 memset (&sFbi, 0, sizeof (SFrameBSInfo));
74
75 iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi);
76 EXPECT_EQ (iResult, static_cast<int32_t> (cmResultSuccess));
77 EXPECT_EQ (sFbi.eFrameType, static_cast<int32_t> (videoFrameTypeIDR));
78
79 pSrcPic->uiTimeStamp = 30;
80 iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi);
81 EXPECT_EQ (iResult, static_cast<int32_t> (cmResultSuccess));
82 EXPECT_EQ (sFbi.eFrameType, static_cast<int32_t> (videoFrameTypeP));
83
84 memcpy (pOption, pParamExt, sizeof (SEncParamExt));
85 pOption ->iTemporalLayerNum = 4;
86
87 ENCODER_OPTION eOptionId = ENCODER_OPTION_SVC_ENCODE_PARAM_EXT;
88 iResult = pPtrEnc->SetOption (eOptionId, pOption);
89 EXPECT_EQ (iResult, static_cast<int32_t> (cmResultSuccess));
90
91 pSrcPic->uiTimeStamp = 60;
92 iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi);
93 EXPECT_EQ (iResult, static_cast<int32_t> (cmResultSuccess));
94 EXPECT_EQ (sFbi.eFrameType, static_cast<int32_t> (videoFrameTypeIDR));
95
96 pOption ->iTemporalLayerNum = 2;
97 iResult = pPtrEnc->SetOption (eOptionId, pOption);
98 EXPECT_EQ (iResult, static_cast<int32_t> (cmResultSuccess));
99 pSrcPic->uiTimeStamp = 90;
100 iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi);
101 EXPECT_EQ (iResult, static_cast<int32_t> (cmResultSuccess));
102 EXPECT_EQ (sFbi.eFrameType, static_cast<int32_t> (videoFrameTypeP));
103
104 pOption ->iTemporalLayerNum = 4;
105 iResult = pPtrEnc->SetOption (eOptionId, pOption);
106 EXPECT_EQ (iResult, static_cast<int32_t> (cmResultSuccess));
107 pSrcPic->uiTimeStamp = 120;
108 iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi);
109 EXPECT_EQ (iResult, static_cast<int32_t> (cmResultSuccess));
110 EXPECT_EQ (sFbi.eFrameType, static_cast<int32_t> (videoFrameTypeP));
111
112 pPtrEnc->Uninitialize();
113
114}
115
116TEST_F (EncoderInterfaceTest, TestTemporalLayerSetting) {
117 TemporalLayerSettingTest();
118}

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