Showing the changes to test/decoder/DecUT_DecExt.cpp (1 of 1 file). Show all
Unified · Split
| @@ -8,7 +8,9 @@ · 7 unmodified lines | |||
| 8 | #include "ls_defines.h" | 8 | #include "ls_defines.h" |
| 9 | 9 | ||
| 10 | using namespace WelsDec; | 10 | using 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) | ||
| 12 | class DecoderInterfaceTest : public ::testing::Test { | 14 | class 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 members | 29 | //Uninit members |
| 28 | void Uninit(); | 30 | void Uninit(); |
| 29 | //Mock input data for test | 31 | //Mock input data for test |
| 30 | void MockPacketType (const EWelsNalUnitType eNalUnitType); | 32 | void MockPacketType (const EWelsNalUnitType eNalUnitType, const int iPacketLength); |
| 31 | //Test Initialize/Uninitialize | 33 | //Test Initialize/Uninitialize |
| 32 | void TestInitUninit(); | 34 | void TestInitUninit(); |
| 33 | //DECODER_OPTION_DATAFORMAT | 35 | //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 packet | 68 | unsigned char m_szBuffer[BUF_SIZE]; //for mocking packet |
| 67 | int m_iBufLength; //record the valid data in m_szBuffer | 69 | 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 test | 103 | //Mock input data for test |
| 102 | void DecoderInterfaceTest::MockPacketType (const EWelsNalUnitType eNalUnitType) { | 104 | void 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 | //TODO | 107 | m_szBuffer[m_iBufLength++] = 6; |
| 106 | break; | 108 | break; |
| 107 | case NAL_UNIT_SPS: | 109 | case NAL_UNIT_SPS: |
| 108 | //TODO | 110 | m_szBuffer[m_iBufLength++] = 67; |
| 109 | break; | 111 | break; |
| 110 | case NAL_UNIT_PPS: | 112 | case NAL_UNIT_PPS: |
| 111 | //TODO | 113 | m_szBuffer[m_iBufLength++] = 68; |
| 112 | break; | 114 | break; |
| 113 | case NAL_UNIT_SUBSET_SPS: | 115 | case NAL_UNIT_SUBSET_SPS: |
| 114 | //TODO | 116 | m_szBuffer[m_iBufLength++] = 15; |
| 115 | break; | 117 | break; |
| 116 | case NAL_UNIT_PREFIX: | 118 | case NAL_UNIT_PREFIX: |
| 117 | //TODO | 119 | m_szBuffer[m_iBufLength++] = 14; |
| 118 | break; | 120 | break; |
| 119 | case NAL_UNIT_CODED_SLICE: | 121 | case NAL_UNIT_CODED_SLICE: |
| 120 | //TODO | 122 | m_szBuffer[m_iBufLength++] = 61; |
| 121 | break; | 123 | break; |
| 122 | case NAL_UNIT_CODED_SLICE_IDR: | 124 | case NAL_UNIT_CODED_SLICE_IDR: |
| 123 | //TODO | 125 | m_szBuffer[m_iBufLength++] = 65; |
| 124 | break; | 126 | break; |
| 125 | default: | 127 | default: |
| 126 | //TODO | 128 | 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_STREAM | 184 | //DECODER_OPTION_END_OF_STREAM |
| 178 | void DecoderInterfaceTest::TestEndOfStream() { | 185 | void DecoderInterfaceTest::TestEndOfStream() { |
| 179 | //TODO | 186 | 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_NAL | 240 | //DECODER_OPTION_VCL_NAL |
| 182 | void DecoderInterfaceTest::TestVclNal() { | 241 | void DecoderInterfaceTest::TestVclNal() { |
| 183 | //TODO | 242 | //TODO |