105 lines
2.7 KiB
C++
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);
|
|
|
|
} |