History

test end of stream for decoder API UT

huili2 committed 12 years ago

Commit ed12e6a1 parent 11bf5751 file · +74 −15Browse files

Showing the changes to test/decoder/DecUT_DecExt.cpp (1 of 1 file). Show all

Unified · Split

test/decoder/DecUT_DecExt.cpp+74−15
@@ -8,7 +8,9 @@ · 7 unmodified lines
8#include "ls_defines.h"8#include "ls_defines.h"
9 9
10using namespace WelsDec;10using namespace WelsDec;
11 11#define BUF_SIZE 100
12//payload size exclude 6 bytes: 0001, nal type and final '\0'
13#define PAYLOAD_SIZE (BUF_SIZE - 6)
12class DecoderInterfaceTest : public ::testing::Test {14class DecoderInterfaceTest : public ::testing::Test {
13 public:15 public:
14 virtual void SetUp() {16 virtual void SetUp() {
@@ -27,7 +29,7 @@ class DecoderInterfaceTest : public ::testing::Test { · 12 unmodified lines
27 //Uninit members29 //Uninit members
28 void Uninit();30 void Uninit();
29 //Mock input data for test31 //Mock input data for test
30 void MockPacketType (const EWelsNalUnitType eNalUnitType);32 void MockPacketType (const EWelsNalUnitType eNalUnitType, const int iPacketLength);
31 //Test Initialize/Uninitialize33 //Test Initialize/Uninitialize
32 void TestInitUninit();34 void TestInitUninit();
33 //DECODER_OPTION_DATAFORMAT35 //DECODER_OPTION_DATAFORMAT
@@ -63,7 +65,7 @@ class DecoderInterfaceTest : public ::testing::Test { · 29 unmodified lines
63 SDecodingParam m_sDecParam;65 SDecodingParam m_sDecParam;
64 SBufferInfo m_sBufferInfo;66 SBufferInfo m_sBufferInfo;
65 uint8_t* m_pData[3];67 uint8_t* m_pData[3];
66 char m_szBuffer[100]; //for mocking packet68 unsigned char m_szBuffer[BUF_SIZE]; //for mocking packet
67 int m_iBufLength; //record the valid data in m_szBuffer69 int m_iBufLength; //record the valid data in m_szBuffer
68};70};
69 71
@@ -99,35 +101,40 @@ void DecoderInterfaceTest::Uninit() { · 29 unmodified lines
99}101}
100 102
101//Mock input data for test103//Mock input data for test
102void DecoderInterfaceTest::MockPacketType (const EWelsNalUnitType eNalUnitType) {104void DecoderInterfaceTest::MockPacketType (const EWelsNalUnitType eNalUnitType, const int iPacketLength) {
103 switch (eNalUnitType) {105 switch (eNalUnitType) {
104 case NAL_UNIT_SEI:106 case NAL_UNIT_SEI:
105 //TODO107 m_szBuffer[m_iBufLength++] = 6;
106 break;108 break;
107 case NAL_UNIT_SPS:109 case NAL_UNIT_SPS:
108 //TODO110 m_szBuffer[m_iBufLength++] = 67;
109 break;111 break;
110 case NAL_UNIT_PPS:112 case NAL_UNIT_PPS:
111 //TODO113 m_szBuffer[m_iBufLength++] = 68;
112 break;114 break;
113 case NAL_UNIT_SUBSET_SPS:115 case NAL_UNIT_SUBSET_SPS:
114 //TODO116 m_szBuffer[m_iBufLength++] = 15;
115 break;117 break;
116 case NAL_UNIT_PREFIX:118 case NAL_UNIT_PREFIX:
117 //TODO119 m_szBuffer[m_iBufLength++] = 14;
118 break;120 break;
119 case NAL_UNIT_CODED_SLICE:121 case NAL_UNIT_CODED_SLICE:
120 //TODO122 m_szBuffer[m_iBufLength++] = 61;
121 break;123 break;
122 case NAL_UNIT_CODED_SLICE_IDR:124 case NAL_UNIT_CODED_SLICE_IDR:
123 //TODO125 m_szBuffer[m_iBufLength++] = 65;
124 break;126 break;
125 default:127 default:
126 //TODO128 m_szBuffer[m_iBufLength++] = 0; //NAL_UNIT_UNSPEC_0
127 break;129 break;
128 130
129 m_szBuffer[m_iBufLength] = '\0';131 int iAddLength = iPacketLength - 5; //excluding 0001 and type
130 m_iBufLength++; //including '\0'132 if (iAddLength > PAYLOAD_SIZE)
133 iAddLength = PAYLOAD_SIZE;
134 for (int i = 0; i < iAddLength; ++i) {
135 m_szBuffer[m_iBufLength++] = rand() % 256;
136 }
137 m_szBuffer[m_iBufLength++] = '\0';
131 138
132 }139 }
133}140}
@@ -176,8 +183,60 @@ void DecoderInterfaceTest::TestDataFormat() { · 42 unmodified lines
176 183
177//DECODER_OPTION_END_OF_STREAM184//DECODER_OPTION_END_OF_STREAM
178void DecoderInterfaceTest::TestEndOfStream() {185void DecoderInterfaceTest::TestEndOfStream() {
179 //TODO186 int iTmp, iOut;
187 CM_RETURN eRet;
188
189 //invalid input
190 eRet = (CM_RETURN) m_pDec->SetOption (DECODER_OPTION_END_OF_STREAM, NULL);
191 EXPECT_EQ (eRet, cmInitParaError);
192
193 //valid random input
194 for (int i = 0; i < 10; ++i) {
195 iTmp = rand();
196 eRet = (CM_RETURN) m_pDec->SetOption (DECODER_OPTION_END_OF_STREAM, &iTmp);
197 EXPECT_EQ (eRet, cmResultSuccess);
198 eRet = (CM_RETURN) m_pDec->GetOption (DECODER_OPTION_END_OF_STREAM, &iOut);
199 EXPECT_EQ (eRet, cmResultSuccess);
200 EXPECT_EQ (iOut, iTmp != 0);
201 }
202
203 //set false as input
204 iTmp = false;
205 eRet = (CM_RETURN) m_pDec->SetOption (DECODER_OPTION_END_OF_STREAM, &iTmp);
206 EXPECT_EQ (eRet, cmResultSuccess);
207 eRet = (CM_RETURN) m_pDec->GetOption (DECODER_OPTION_END_OF_STREAM, &iOut);
208 EXPECT_EQ (eRet, cmResultSuccess);
209
210 EXPECT_EQ (iOut, false);
211
212 //set true as input
213 iTmp = true;
214 eRet = (CM_RETURN) m_pDec->SetOption (DECODER_OPTION_END_OF_STREAM, &iTmp);
215 EXPECT_EQ (eRet, cmResultSuccess);
216 eRet = (CM_RETURN) m_pDec->GetOption (DECODER_OPTION_END_OF_STREAM, &iOut);
217 EXPECT_EQ (eRet, cmResultSuccess);
218
219 EXPECT_EQ (iOut, true);
220
221 //Mock data packet in
222 //Test NULL data input for decoder, should be true for EOS
223 eRet = (CM_RETURN) m_pDec->DecodeFrame2 (NULL, 0, m_pData, &m_sBufferInfo);
224 EXPECT_EQ (eRet, 0); //decode should return OK
225 eRet = (CM_RETURN) m_pDec->GetOption (DECODER_OPTION_END_OF_STREAM, &iOut);
226 EXPECT_EQ (iOut, true); //decoder should have EOS == true
227
228 //Test valid data input for decoder, should be false for EOS
229 MockPacketType (NAL_UNIT_UNSPEC_0, 50);
230 eRet = (CM_RETURN) m_pDec->DecodeFrame2 (m_szBuffer, m_iBufLength, m_pData, &m_sBufferInfo);
231 eRet = (CM_RETURN) m_pDec->GetOption (DECODER_OPTION_END_OF_STREAM, &iOut);
232 EXPECT_EQ (iOut, false); //decoder should have EOS == false
233 //Test NULL data input for decoder, should be true for EOS
234 eRet = (CM_RETURN) m_pDec->DecodeFrame2 (NULL, 0, m_pData, &m_sBufferInfo);
235 eRet = (CM_RETURN) m_pDec->GetOption (DECODER_OPTION_END_OF_STREAM, &iOut);
236 EXPECT_EQ (iOut, true); //decoder should have EOS == true
180}237}
238
239
181//DECODER_OPTION_VCL_NAL240//DECODER_OPTION_VCL_NAL
182void DecoderInterfaceTest::TestVclNal() {241void DecoderInterfaceTest::TestVclNal() {
183 //TODO242 //TODO

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