History

refactor and add decode_encode_test to pipeline decoder outoput to encoder test

jwwang committed 12 years ago

Commit 8247eef1 parent db6ce9c10 files · +443 −247Browse files

Showing the changes to test/BaseEncoderTest.cpp (1 of 10 files). Show all

Unified · Split

test/BaseEncoderTest.cpp+79−0
@@ -0,0 +1,79 @@
1+#include <fstream>
2+#include <gtest/gtest.h>
3+#include "codec_def.h"
4+#include "utils/BufferedData.h"
5+#include "BaseEncoderTest.h"
6+
7+static int InitWithParam(ISVCEncoder* encoder, int width,
8+ int height, float frameRate) {
9+ SVCEncodingParam param;
10+ memset (&param, 0, sizeof(SVCEncodingParam));
11+
12+ param.sSpatialLayers[0].iVideoWidth = width;
13+ param.sSpatialLayers[0].iVideoHeight = height;
14+ param.sSpatialLayers[0].fFrameRate = frameRate;
15+ param.sSpatialLayers[0].iQualityLayerNum = 1;
16+ param.sSpatialLayers[0].iSpatialBitrate = 600000;
17+
18+ SSliceConfig* sliceCfg = &param.sSpatialLayers[0].sSliceCfg;
19+ sliceCfg->sSliceArgument.uiSliceNum = 1;
20+ sliceCfg->sSliceArgument.uiSliceSizeConstraint = 1500;
21+ sliceCfg->sSliceArgument.uiSliceMbNum[0] = 960;
22+
23+ param.fFrameRate = param.sSpatialLayers[0].fFrameRate;
24+ param.iPicWidth = param.sSpatialLayers[0].iVideoWidth;
25+ param.iPicHeight = param.sSpatialLayers[0].iVideoHeight;
26+ param.iTargetBitrate = 5000000;
27+ param.iTemporalLayerNum = 3;
28+ param.iSpatialLayerNum = 1;
29+ param.bEnableBackgroundDetection = true;
30+ param.bEnableLongTermReference = true;
31+ param.iLtrMarkPeriod = 30;
32+ param.iInputCsp = videoFormatI420;
33+ param.bEnableSpsPpsIdAddition = true;
34+
35+ return encoder->Initialize(&param, INIT_TYPE_PARAMETER_BASED);
36+}
37+
38+BaseEncoderTest::BaseEncoderTest() : encoder_(NULL) {}
39+
40+void BaseEncoderTest::SetUp() {
41+ int rv = CreateSVCEncoder(&encoder_);
42+ ASSERT_EQ(0, rv);
43+ ASSERT_TRUE(encoder_ != NULL);
44+}
45+
46+void BaseEncoderTest::TearDown() {
47+ if (encoder_) {
48+ encoder_->Uninitialize();
49+ DestroySVCEncoder(encoder_);
50+ }
51+}
52+
53+void BaseEncoderTest::EncodeFile(const char* fileName, int width, int height,
54+ float frameRate, Callback* cbk) {
55+ std::ifstream file(fileName, std::ios::in | std::ios::binary);
56+ ASSERT_TRUE(file.is_open());
57+
58+ int rv = InitWithParam(encoder_, width, height, frameRate);
59+ ASSERT_TRUE(rv == cmResultSuccess);
60+
61+ // I420: 1(Y) + 1/4(U) + 1/4(V)
62+ int frameSize = width * height * 3 / 2;
63+
64+ BufferedData buf;
65+ buf.SetLength(frameSize);
66+ ASSERT_TRUE(buf.Length() == frameSize);
67+ char* data = reinterpret_cast<char*>(buf.data());
68+
69+ SFrameBSInfo info;
70+ memset(&info, 0, sizeof(SFrameBSInfo));
71+
72+ while (file.read(data, frameSize), file.gcount() == frameSize) {
73+ rv = encoder_->EncodeFrame(buf.data(), &info);
74+ ASSERT_TRUE(rv != videoFrameTypeInvalid);
75+ if (rv != videoFrameTypeSkip && cbk != NULL) {
76+ cbk->onEncodeFrame(info);
77+ }
78+ }
79+}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t