openh264/test/encoder/EncUT_InterfaceTest.cpp

105 lines
2.7 KiB
C++

#include <gtest/gtest.h>
#include "codec_def.h"
#include "codec_api.h"
#include "utils/BufferedData.h"
#include "utils/FileInputStream.h"
#include "BaseEncoderTest.h"
class EncInterfaceCallTest : public ::testing::Test, public BaseEncoderTest {
public:
virtual void SetUp() {
BaseEncoderTest::SetUp();
};
virtual void TearDown() {
BaseEncoderTest::TearDown();
};
virtual void onEncodeFrame (const SFrameBSInfo& frameInfo) {
//nothing
}
//testing case
};
TEST_F (EncInterfaceCallTest, BaseParameterVerify) {
int uiTraceLevel = WELS_LOG_QUIET;
encoder_->SetOption (ENCODER_OPTION_TRACE_LEVEL, &uiTraceLevel);
int ret = cmResultSuccess;
SEncParamBase baseparam;
memset (&baseparam, 0, sizeof (SEncParamBase));
baseparam.iPicWidth = 0;
baseparam.iPicHeight = 7896;
ret = encoder_->Initialize (&baseparam);
EXPECT_EQ (ret, static_cast<int> (cmInitParaError));
uiTraceLevel = WELS_LOG_ERROR;
encoder_->SetOption (ENCODER_OPTION_TRACE_LEVEL, &uiTraceLevel);
}
void outputData() {
}
TEST_F (EncInterfaceCallTest, SetOptionLTR) {
int iTotalFrameNum = 100;
int iFrameNum = 0;
int frameSize = 0;
int ret = cmResultSuccess;
int width = 320;
int height = 192;
SEncParamBase baseparam;
memset (&baseparam, 0, sizeof (SEncParamBase));
baseparam.iUsageType = CAMERA_VIDEO_REAL_TIME;
baseparam.fMaxFrameRate = 12;
baseparam.iPicWidth = width;
baseparam.iPicHeight = height;
baseparam.iTargetBitrate = 5000000;
encoder_->Initialize (&baseparam);
frameSize = width * height * 3 / 2;
BufferedData buf;
buf.SetLength (frameSize);
ASSERT_TRUE (buf.Length() == (size_t)frameSize);
SFrameBSInfo info;
memset (&info, 0, sizeof (SFrameBSInfo));
SSourcePicture pic;
memset (&pic, 0, sizeof (SSourcePicture));
pic.iPicWidth = width;
pic.iPicHeight = height;
pic.iColorFormat = videoFormatI420;
pic.iStride[0] = pic.iPicWidth;
pic.iStride[1] = pic.iStride[2] = pic.iPicWidth >> 1;
pic.pData[0] = buf.data();
pic.pData[1] = pic.pData[0] + width * height;
pic.pData[2] = pic.pData[1] + (width * height >> 2);
SLTRConfig config;
config.bEnableLongTermReference = true;
config.iLTRRefNum = rand() % 4;
encoder_->SetOption (ENCODER_OPTION_LTR, &config);
do {
FileInputStream fileStream;
ASSERT_TRUE (fileStream.Open ("res/CiscoVT2people_320x192_12fps.yuv"));
while (fileStream.read (buf.data(), frameSize) == frameSize) {
ret = encoder_->EncodeFrame (&pic, &info);
ASSERT_TRUE (ret == cmResultSuccess);
if (info.eFrameType != videoFrameTypeSkip && this != NULL) {
this->onEncodeFrame (info);
iFrameNum++;
}
}
} while (iFrameNum < iTotalFrameNum);
}