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 | 8 | #include "ls_defines.h" |
| 9 | 9 | |
| 10 | 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 | 14 | class DecoderInterfaceTest : public ::testing::Test { |
| 13 | 15 | public: |
| 14 | 16 | virtual void SetUp() { |
| @@ -27,7 +29,7 @@ class DecoderInterfaceTest : public ::testing::Test { · 12 unmodified lines | ||
| 27 | 29 | //Uninit members |
| 28 | 30 | void Uninit(); |
| 29 | 31 | //Mock input data for test |
| 30 | − void MockPacketType (const EWelsNalUnitType eNalUnitType); | |
| 32 | + void MockPacketType (const EWelsNalUnitType eNalUnitType, const int iPacketLength); | |
| 31 | 33 | //Test Initialize/Uninitialize |
| 32 | 34 | void TestInitUninit(); |
| 33 | 35 | //DECODER_OPTION_DATAFORMAT |
| @@ -63,7 +65,7 @@ class DecoderInterfaceTest : public ::testing::Test { · 29 unmodified lines | ||
| 63 | 65 | SDecodingParam m_sDecParam; |
| 64 | 66 | SBufferInfo m_sBufferInfo; |
| 65 | 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 | 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 | 103 | //Mock input data for test |
| 102 | −void DecoderInterfaceTest::MockPacketType (const EWelsNalUnitType eNalUnitType) { | |
| 104 | +void DecoderInterfaceTest::MockPacketType (const EWelsNalUnitType eNalUnitType, const int iPacketLength) { | |
| 103 | 105 | switch (eNalUnitType) { |
| 104 | 106 | case NAL_UNIT_SEI: |
| 105 | − //TODO | |
| 107 | + m_szBuffer[m_iBufLength++] = 6; | |
| 106 | 108 | break; |
| 107 | 109 | case NAL_UNIT_SPS: |
| 108 | − //TODO | |
| 110 | + m_szBuffer[m_iBufLength++] = 67; | |
| 109 | 111 | break; |
| 110 | 112 | case NAL_UNIT_PPS: |
| 111 | − //TODO | |
| 113 | + m_szBuffer[m_iBufLength++] = 68; | |
| 112 | 114 | break; |
| 113 | 115 | case NAL_UNIT_SUBSET_SPS: |
| 114 | − //TODO | |
| 116 | + m_szBuffer[m_iBufLength++] = 15; | |
| 115 | 117 | break; |
| 116 | 118 | case NAL_UNIT_PREFIX: |
| 117 | − //TODO | |
| 119 | + m_szBuffer[m_iBufLength++] = 14; | |
| 118 | 120 | break; |
| 119 | 121 | case NAL_UNIT_CODED_SLICE: |
| 120 | − //TODO | |
| 122 | + m_szBuffer[m_iBufLength++] = 61; | |
| 121 | 123 | break; |
| 122 | 124 | case NAL_UNIT_CODED_SLICE_IDR: |
| 123 | − //TODO | |
| 125 | + m_szBuffer[m_iBufLength++] = 65; | |
| 124 | 126 | break; |
| 125 | 127 | default: |
| 126 | − //TODO | |
| 128 | + m_szBuffer[m_iBufLength++] = 0; //NAL_UNIT_UNSPEC_0 | |
| 127 | 129 | break; |
| 128 | 130 | |
| 129 | − m_szBuffer[m_iBufLength] = '\0'; | |
| 130 | − m_iBufLength++; //including '\0' | |
| 131 | + int iAddLength = iPacketLength - 5; //excluding 0001 and type | |
| 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 | 184 | //DECODER_OPTION_END_OF_STREAM |
| 178 | 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 | 240 | //DECODER_OPTION_VCL_NAL |
| 182 | 241 | void DecoderInterfaceTest::TestVclNal() { |
| 183 | 242 | //TODO |