Unified · Split
| @@ -9,6 +9,9 @@ class EncoderInterfaceTest : public ::testing::Test { · 8 unmodified lines | |||
| 9 | #define MAX_WIDTH (3840) | 9 | #define MAX_WIDTH (3840) |
| 10 | #define MAX_HEIGHT (2160) | 10 | #define MAX_HEIGHT (2160) |
| 11 | #define VALID_SIZE(iSize) (((iSize)>1)?(iSize):1) | 11 | #define VALID_SIZE(iSize) (((iSize)>1)?(iSize):1) |
| 12 | #define MEM_VARY_SIZE (512) | ||
| 13 | #define IMAGE_VARY_SIZE (512) | ||
| 14 | #define TEST_FRAMES (200) | ||
| 12 | 15 | ||
| 13 | #define NAL_HEADER_BYTES (4) | 16 | #define NAL_HEADER_BYTES (4) |
| 14 | #define NAL_TYPE (0x0F) | 17 | #define NAL_TYPE (0x0F) |
| @@ -52,6 +55,7 @@ class EncoderInterfaceTest : public ::testing::Test { · 37 unmodified lines | |||
| 52 | } | 55 | } |
| 53 | } | 56 | } |
| 54 | 57 | ||
| 58 | void InitializeParamExt(); | ||
| 55 | void TemporalLayerSettingTest(); | 59 | void TemporalLayerSettingTest(); |
| 56 | void MemoryCheckTest(); | 60 | void MemoryCheckTest(); |
| 57 | void EncodeOneFrame (SEncParamBase* pEncParamBase); | 61 | void EncodeOneFrame (SEncParamBase* pEncParamBase); |
| @@ -120,7 +124,18 @@ void EncoderInterfaceTest::EncodeOneIDRandP (ISVCEncoder* pPtrEnc) { · 62 unmodified lines | |||
| 120 | EXPECT_NE (sFbi.eFrameType, static_cast<int> (videoFrameTypeIDR)); | 124 | EXPECT_NE (sFbi.eFrameType, static_cast<int> (videoFrameTypeIDR)); |
| 121 | } | 125 | } |
| 122 | 126 | ||
| 123 | void EncoderInterfaceTest::TemporalLayerSettingTest() { | 127 | void EncoderInterfaceTest::InitializeParamExt() { |
| 128 | pParamExt->iPicWidth = 1280; | ||
| 129 | pParamExt->iPicHeight = 720; | ||
| 130 | pParamExt->iTargetBitrate = 50000; | ||
| 131 | pParamExt->iTemporalLayerNum = 3; | ||
| 132 | pParamExt->iSpatialLayerNum = 1; | ||
| 133 | pParamExt->sSpatialLayers[0].iVideoHeight = pParamExt->iPicHeight; | ||
| 134 | pParamExt->sSpatialLayers[0].iVideoWidth = pParamExt->iPicWidth; | ||
| 135 | pParamExt->sSpatialLayers[0].iSpatialBitrate = 50000; | ||
| 136 | } | ||
| 137 | |||
| 138 | TEST_F (EncoderInterfaceTest, TemporalLayerSettingTest) { | ||
| 124 | 139 | ||
| 125 | pParamExt->iPicWidth = m_iWidth; | 140 | pParamExt->iPicWidth = m_iWidth; |
| 126 | pParamExt->iPicHeight = m_iHeight; | 141 | pParamExt->iPicHeight = m_iHeight; |
| @@ -175,27 +190,60 @@ void EncoderInterfaceTest::TemporalLayerSettingTest() { · 48 unmodified lines | |||
| 175 | EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess)); | 190 | EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess)); |
| 176 | EXPECT_EQ (sFbi.eFrameType, static_cast<int> (videoFrameTypeP)); | 191 | EXPECT_EQ (sFbi.eFrameType, static_cast<int> (videoFrameTypeP)); |
| 177 | 192 | ||
| 178 | pPtrEnc->Uninitialize(); | 193 | iResult = pPtrEnc->Uninitialize(); |
| 194 | EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess)); | ||
| 195 | } | ||
| 196 | |||
| 197 | InitializeParamExt(); | ||
| 198 | pParamExt->iUsageType = (rand() % 2) ? SCREEN_CONTENT_REAL_TIME : CAMERA_VIDEO_REAL_TIME; | ||
| 199 | pParamExt->iRCMode = (rand() % 2) ? RC_BITRATE_MODE : RC_QUALITY_MODE; | ||
| 200 | |||
| 201 | int iResult = pPtrEnc->InitializeExt (pParamExt); | ||
| 202 | const int kiFrameNumber = TEST_FRAMES; | ||
| 203 | |||
| 204 | m_iWidth = pParamExt->iPicWidth; | ||
| 205 | m_iHeight = pParamExt->iPicHeight; | ||
| 206 | m_iPicResSize = m_iWidth * m_iHeight * 3 >> 1; | ||
| 207 | delete []pYUV; | ||
| 208 | pYUV = new unsigned char [m_iPicResSize]; | ||
| 209 | ASSERT_TRUE (pYUV != NULL); | ||
| 210 | PrepareOneSrcFrame(); | ||
| 211 | |||
| 212 | ENCODER_OPTION eOptionId = ENCODER_OPTION_SVC_ENCODE_PARAM_EXT; | ||
| 213 | memcpy (pOption, pParamExt, sizeof (SEncParamExt)); | ||
| 214 | |||
| 215 | for(int i = 0; i < kiFrameNumber; i ++){ | ||
| 216 | if ((i%7) == 0){ | ||
| 217 | if (pOption->iTemporalLayerNum<4){ | ||
| 218 | pOption->iTemporalLayerNum++; | ||
| 219 | } else { | ||
| 220 | pOption->iTemporalLayerNum--; | ||
| 221 | } | ||
| 222 | iResult = pPtrEnc->SetOption (eOptionId, pOption); | ||
| 223 | EXPECT_EQ (iResult, static_cast<int32_t> (cmResultSuccess)); | ||
| 224 | pSrcPic->uiTimeStamp += 30; | ||
| 225 | } | ||
| 226 | |||
| 227 | int iStartX = rand() % (m_iPicResSize >> 1); | ||
| 228 | int iEndX = (iStartX + (rand() % MEM_VARY_SIZE)) % m_iPicResSize; | ||
| 229 | for (int j = iStartX; j < iEndX; j++) | ||
| 230 | pYUV[j] = rand() % 256; | ||
| 231 | |||
| 232 | iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi); | ||
| 233 | EXPECT_EQ (iResult, static_cast<int32_t> (cmResultSuccess)); | ||
| 234 | pSrcPic->uiTimeStamp += 30; | ||
| 179 | } | 235 | } |
| 180 | } | ||
| 181 | 236 | ||
| 182 | TEST_F (EncoderInterfaceTest, TestTemporalLayerSetting) { | 237 | iResult = pPtrEnc->Uninitialize(); |
| 183 | TemporalLayerSettingTest(); | 238 | EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess)); |
| 239 | |||
| 184 | } | 240 | } |
| 185 | 241 | ||
| 186 | void EncoderInterfaceTest::MemoryCheckTest() { | 242 | TEST_F (EncoderInterfaceTest, MemoryCheckTest) { |
| 187 | #define MEM_VARY_SIZE 1024 | ||
| 188 | #define IMAGE_VARY_SIZE 512 | ||
| 189 | #define TEST_FRAMES 500 | ||
| 190 | 243 | ||
| 244 | InitializeParamExt(); | ||
| 191 | pParamExt->iPicWidth = 1280; | 245 | pParamExt->iPicWidth = 1280; |
| 192 | pParamExt->iPicHeight = 720; | 246 | pParamExt->iPicHeight = 720; |
| 193 | pParamExt->iTargetBitrate = 60000; | ||
| 194 | pParamExt->sSpatialLayers[0].iVideoHeight = pParamExt->iPicHeight; | ||
| 195 | pParamExt->sSpatialLayers[0].iVideoWidth = pParamExt->iPicWidth; | ||
| 196 | pParamExt->sSpatialLayers[0].iSpatialBitrate = 50000; | ||
| 197 | pParamExt->iTemporalLayerNum = 3; | ||
| 198 | pParamExt->iSpatialLayerNum = 1; | ||
| 199 | 247 | ||
| 200 | int iResult = pPtrEnc->InitializeExt (pParamExt); | 248 | int iResult = pPtrEnc->InitializeExt (pParamExt); |
| 201 | const int kiFrameNumber = TEST_FRAMES; | 249 | const int kiFrameNumber = TEST_FRAMES; |
| @@ -261,11 +309,9 @@ void EncoderInterfaceTest::MemoryCheckTest() { · 59 unmodified lines | |||
| 261 | EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess)); | 309 | EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess)); |
| 262 | pSrcPic->uiTimeStamp += 30; | 310 | pSrcPic->uiTimeStamp += 30; |
| 263 | } | 311 | } |
| 264 | pPtrEnc->Uninitialize(); | ||
| 265 | } | ||
| 266 | 312 | ||
| 267 | TEST_F (EncoderInterfaceTest, MemoryCheck) { | 313 | iResult = pPtrEnc->Uninitialize(); |
| 268 | MemoryCheckTest(); | 314 | EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess)); |
| 269 | } | 315 | } |
| 270 | 316 | ||
| 271 | void GetValidEncParamBase (SEncParamBase* pEncParamBase) { | 317 | void GetValidEncParamBase (SEncParamBase* pEncParamBase) { |
| @@ -498,11 +544,10 @@ TEST_F (EncoderInterfaceTest, EncodeParameterSets) { · 226 unmodified lines | |||
| 498 | EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess)); | 544 | EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess)); |
| 499 | EXPECT_NE (sFbi.eFrameType, static_cast<int> (videoFrameTypeIDR)); | 545 | EXPECT_NE (sFbi.eFrameType, static_cast<int> (videoFrameTypeIDR)); |
| 500 | 546 | ||
| 501 | pPtrEnc->Uninitialize(); | 547 | iResult = pPtrEnc->Uninitialize(); |
| 502 | EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess)); | 548 | EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess)); |
| 503 | } | 549 | } |
| 504 | 550 | ||
| 505 | TEST_F (EncoderInterfaceTest, BasicReturnTypeTest) { | 551 | TEST_F (EncoderInterfaceTest, BasicReturnTypeTest) { |
| 506 | //TODO | 552 | //TODO |
| 507 | } | 553 | } |
| 508 | |||