Showing the changes to test/encoder/EncUT_EncoderExt.cpp (1 of 1 file). Show all
Unified · Split
| @@ -53,6 +53,7 @@ class EncoderInterfaceTest : public ::testing::Test { · 52 unmodified lines | |||
| 53 | } | 53 | } |
| 54 | 54 | ||
| 55 | void TemporalLayerSettingTest(); | 55 | void TemporalLayerSettingTest(); |
| 56 | void MemoryCheckTest(); | ||
| 56 | void EncodeOneFrame (SEncParamBase* pEncParamBase); | 57 | void EncodeOneFrame (SEncParamBase* pEncParamBase); |
| 57 | void PrepareOneSrcFrame(); | 58 | void PrepareOneSrcFrame(); |
| 58 | void EncodeOneIDRandP (ISVCEncoder* pPtrEnc); | 59 | void EncodeOneIDRandP (ISVCEncoder* pPtrEnc); |
| @@ -130,54 +131,141 @@ void EncoderInterfaceTest::TemporalLayerSettingTest() { · 71 unmodified lines | |||
| 130 | pParamExt->iTemporalLayerNum = 1; | 131 | pParamExt->iTemporalLayerNum = 1; |
| 131 | pParamExt->iSpatialLayerNum = 1; | 132 | pParamExt->iSpatialLayerNum = 1; |
| 132 | 133 | ||
| 134 | for(int i = 0; i < 2; i++){ | ||
| 135 | pParamExt->iUsageType = (( i == 0 ) ? SCREEN_CONTENT_REAL_TIME : CAMERA_VIDEO_REAL_TIME); | ||
| 136 | int iResult = pPtrEnc->InitializeExt (pParamExt); | ||
| 137 | EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess)); | ||
| 138 | |||
| 139 | PrepareOneSrcFrame(); | ||
| 140 | |||
| 141 | iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi); | ||
| 142 | EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess)); | ||
| 143 | EXPECT_EQ (sFbi.eFrameType, static_cast<int> (videoFrameTypeIDR)); | ||
| 144 | |||
| 145 | pSrcPic->uiTimeStamp = 30; | ||
| 146 | iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi); | ||
| 147 | EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess)); | ||
| 148 | EXPECT_EQ (sFbi.eFrameType, static_cast<int> (videoFrameTypeP)); | ||
| 149 | |||
| 150 | memcpy (pOption, pParamExt, sizeof (SEncParamExt)); | ||
| 151 | pOption ->iTemporalLayerNum = 4; | ||
| 152 | |||
| 153 | ENCODER_OPTION eOptionId = ENCODER_OPTION_SVC_ENCODE_PARAM_EXT; | ||
| 154 | iResult = pPtrEnc->SetOption (eOptionId, pOption); | ||
| 155 | EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess)); | ||
| 156 | |||
| 157 | pSrcPic->uiTimeStamp = 60; | ||
| 158 | iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi); | ||
| 159 | EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess)); | ||
| 160 | EXPECT_EQ (sFbi.eFrameType, static_cast<int> (videoFrameTypeIDR)); | ||
| 161 | |||
| 162 | pOption ->iTemporalLayerNum = 2; | ||
| 163 | iResult = pPtrEnc->SetOption (eOptionId, pOption); | ||
| 164 | EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess)); | ||
| 165 | pSrcPic->uiTimeStamp = 90; | ||
| 166 | iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi); | ||
| 167 | EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess)); | ||
| 168 | EXPECT_EQ (sFbi.eFrameType, static_cast<int> (videoFrameTypeP)); | ||
| 169 | |||
| 170 | pOption ->iTemporalLayerNum = 4; | ||
| 171 | iResult = pPtrEnc->SetOption (eOptionId, pOption); | ||
| 172 | EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess)); | ||
| 173 | pSrcPic->uiTimeStamp = 120; | ||
| 174 | iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi); | ||
| 175 | EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess)); | ||
| 176 | EXPECT_EQ (sFbi.eFrameType, static_cast<int> (videoFrameTypeP)); | ||
| 177 | |||
| 178 | pPtrEnc->Uninitialize(); | ||
| 179 | } | ||
| 180 | } | ||
| 181 | |||
| 182 | TEST_F (EncoderInterfaceTest, TestTemporalLayerSetting) { | ||
| 183 | TemporalLayerSettingTest(); | ||
| 184 | } | ||
| 185 | |||
| 186 | void EncoderInterfaceTest::MemoryCheckTest() { | ||
| 187 | #define MEM_VARY_SIZE 1024 | ||
| 188 | #define IMAGE_VARY_SIZE 512 | ||
| 189 | #define TEST_FRAMES 500 | ||
| 190 | |||
| 191 | pParamExt->iPicWidth = 1280; | ||
| 192 | 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 | |||
| 133 | int iResult = pPtrEnc->InitializeExt (pParamExt); | 200 | int iResult = pPtrEnc->InitializeExt (pParamExt); |
| 134 | EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess)); | 201 | const int kiFrameNumber = TEST_FRAMES; |
| 135 | 202 | ||
| 203 | m_iWidth = pParamExt->iPicWidth; | ||
| 204 | m_iHeight = pParamExt->iPicHeight; | ||
| 205 | m_iPicResSize = m_iWidth * m_iHeight * 3 >> 1; | ||
| 206 | delete []pYUV; | ||
| 207 | pYUV = new unsigned char [m_iPicResSize]; | ||
| 136 | PrepareOneSrcFrame(); | 208 | PrepareOneSrcFrame(); |
| 137 | 209 | ||
| 138 | iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi); | 210 | for(int i = 0; i < kiFrameNumber; i ++){ |
| 139 | EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess)); | 211 | int iStartX = rand() % (m_iPicResSize >> 1); |
| 140 | EXPECT_EQ (sFbi.eFrameType, static_cast<int> (videoFrameTypeIDR)); | 212 | int iEndX = (iStartX + (rand() % MEM_VARY_SIZE)) % m_iPicResSize; |
| 213 | for (int j = iStartX; j < iEndX; j++) | ||
| 214 | pYUV[j] = rand() % 256; | ||
| 141 | 215 | ||
| 142 | pSrcPic->uiTimeStamp = 30; | 216 | iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi); |
| 143 | iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi); | 217 | EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess)); |
| 144 | EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess)); | 218 | pSrcPic->uiTimeStamp += 30; |
| 145 | EXPECT_EQ (sFbi.eFrameType, static_cast<int> (videoFrameTypeP)); | 219 | } |
| 146 | 220 | ||
| 147 | memcpy (pOption, pParamExt, sizeof (SEncParamExt)); | 221 | pParamExt->iPicWidth += (rand() << 1) % IMAGE_VARY_SIZE; |
| 148 | pOption ->iTemporalLayerNum = 4; | 222 | pParamExt->iPicHeight += (rand() << 1) % IMAGE_VARY_SIZE; |
| 223 | m_iWidth = pParamExt->iPicWidth; | ||
| 224 | m_iHeight = pParamExt->iPicHeight; | ||
| 225 | m_iPicResSize = m_iWidth * m_iHeight * 3 >> 1; | ||
| 226 | delete []pYUV; | ||
| 227 | pYUV = new unsigned char [m_iPicResSize]; | ||
| 228 | |||
| 229 | iResult = pPtrEnc->InitializeExt (pParamExt); | ||
| 230 | PrepareOneSrcFrame(); | ||
| 149 | 231 | ||
| 150 | ENCODER_OPTION eOptionId = ENCODER_OPTION_SVC_ENCODE_PARAM_EXT; | 232 | ENCODER_OPTION eOptionId = ENCODER_OPTION_SVC_ENCODE_PARAM_EXT; |
| 233 | memcpy (pOption, pParamExt, sizeof (SEncParamExt)); | ||
| 234 | pOption ->iPicWidth = m_iWidth; | ||
| 235 | pOption ->iPicHeight = m_iHeight; | ||
| 151 | iResult = pPtrEnc->SetOption (eOptionId, pOption); | 236 | iResult = pPtrEnc->SetOption (eOptionId, pOption); |
| 152 | EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess)); | 237 | EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess)); |
| 153 | 238 | ||
| 154 | pSrcPic->uiTimeStamp = 60; | 239 | for(int i = 0; i < kiFrameNumber; i ++){ |
| 155 | iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi); | 240 | int iStartX = rand() % (m_iPicResSize >> 1); |
| 156 | EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess)); | 241 | int iEndX = (iStartX + (rand() % MEM_VARY_SIZE)) % m_iPicResSize; |
| 157 | EXPECT_EQ (sFbi.eFrameType, static_cast<int> (videoFrameTypeIDR)); | 242 | for (int j = iStartX; j < iEndX; j++) |
| 243 | pYUV[j] = rand() % 256; | ||
| 158 | 244 | ||
| 159 | pOption ->iTemporalLayerNum = 2; | 245 | iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi); |
| 160 | iResult = pPtrEnc->SetOption (eOptionId, pOption); | 246 | EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess)); |
| 161 | EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess)); | 247 | pSrcPic->uiTimeStamp += 30; |
| 162 | pSrcPic->uiTimeStamp = 90; | 248 | } |
| 163 | iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi); | ||
| 164 | EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess)); | ||
| 165 | EXPECT_EQ (sFbi.eFrameType, static_cast<int> (videoFrameTypeP)); | ||
| 166 | 249 | ||
| 167 | pOption ->iTemporalLayerNum = 4; | 250 | pOption ->iLTRRefNum += rand() % 8 + 1; |
| 168 | iResult = pPtrEnc->SetOption (eOptionId, pOption); | 251 | iResult = pPtrEnc->SetOption (eOptionId, pOption); |
| 169 | EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess)); | 252 | EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess)); |
| 170 | pSrcPic->uiTimeStamp = 120; | ||
| 171 | iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi); | ||
| 172 | EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess)); | ||
| 173 | EXPECT_EQ (sFbi.eFrameType, static_cast<int> (videoFrameTypeP)); | ||
| 174 | 253 | ||
| 175 | pPtrEnc->Uninitialize(); | 254 | for(int i = 0; i < kiFrameNumber; i ++){ |
| 255 | int iStartX = rand() % (m_iPicResSize >> 1); | ||
| 256 | int iEndX = (iStartX + (rand() % MEM_VARY_SIZE)) % m_iPicResSize; | ||
| 257 | for (int j = iStartX; j < iEndX; j++) | ||
| 258 | pYUV[j] = rand() % 256; | ||
| 176 | 259 | ||
| 260 | iResult = pPtrEnc->EncodeFrame (pSrcPic, &sFbi); | ||
| 261 | EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess)); | ||
| 262 | pSrcPic->uiTimeStamp += 30; | ||
| 263 | } | ||
| 264 | pPtrEnc->Uninitialize(); | ||
| 177 | } | 265 | } |
| 178 | 266 | ||
| 179 | TEST_F (EncoderInterfaceTest, TestTemporalLayerSetting) { | 267 | TEST_F (EncoderInterfaceTest, MemoryCheck) { |
| 180 | TemporalLayerSettingTest(); | 268 | MemoryCheckTest(); |
| 181 | } | 269 | } |
| 182 | 270 | ||
| 183 | void GetValidEncParamBase (SEncParamBase* pEncParamBase) { | 271 | void GetValidEncParamBase (SEncParamBase* pEncParamBase) { |
| @@ -210,7 +298,7 @@ TEST_F (EncoderInterfaceTest, BasicInitializeTest) { · 26 unmodified lines | |||
| 210 | EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess)); | 298 | EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess)); |
| 211 | EXPECT_EQ (sFbi.eFrameType, static_cast<int> (videoFrameTypeIDR)); | 299 | EXPECT_EQ (sFbi.eFrameType, static_cast<int> (videoFrameTypeIDR)); |
| 212 | 300 | ||
| 213 | pPtrEnc->Uninitialize(); | 301 | iResult = pPtrEnc->Uninitialize(); |
| 214 | EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess)); | 302 | EXPECT_EQ (iResult, static_cast<int> (cmResultSuccess)); |
| 215 | } | 303 | } |
| 216 | 304 | ||