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
7static 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
38BaseEncoderTest::BaseEncoderTest() : encoder_(NULL) {}
39
40void BaseEncoderTest::SetUp() {
41 int rv = CreateSVCEncoder(&encoder_);
42 ASSERT_EQ(0, rv);
43 ASSERT_TRUE(encoder_ != NULL);
44}
45
46void BaseEncoderTest::TearDown() {
47 if (encoder_) {
48 encoder_->Uninitialize();
49 DestroySVCEncoder(encoder_);
50 }
51}
52
53void 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