History

B-frame decoding support for Main and High Profile with two test cases.

xiaotianshi2 committed 8 years ago

Commit 657d2171 parent e3e838355 files · +17936 −13825Browse files

Showing the changes to test/api/cpp_interface_test.cpp (1 of 55 files). Show all

Unified · Split

test/api/cpp_interface_test.cpp+138−134
@@ -1,134 +1,138 @@
1#include <gtest/gtest.h>1#include <gtest/gtest.h>
2#include "codec_api.h"2#include "codec_api.h"
3#include <stddef.h>3#include <stddef.h>
4 4
5static void CheckFunctionOrder (int expect, int actual, const char* name) {5static void CheckFunctionOrder (int expect, int actual, const char* name) {
6 EXPECT_EQ (expect, actual) << "Wrong function order: " << name;6 EXPECT_EQ (expect, actual) << "Wrong function order: " << name;
7}7}
8 8
9typedef void (*CheckFunc) (int, int, const char*);9typedef void (*CheckFunc) (int, int, const char*);
10extern "C" void CheckEncoderInterface (ISVCEncoder* p, CheckFunc);10extern "C" void CheckEncoderInterface (ISVCEncoder* p, CheckFunc);
11extern "C" void CheckDecoderInterface (ISVCDecoder* p, CheckFunc);11extern "C" void CheckDecoderInterface (ISVCDecoder* p, CheckFunc);
12extern "C" size_t GetBoolSize (void);12extern "C" size_t GetBoolSize (void);
13extern "C" size_t GetBoolOffset (void);13extern "C" size_t GetBoolOffset (void);
14extern "C" size_t GetBoolStructSize (void);14extern "C" size_t GetBoolStructSize (void);
15 15
16// Store the 'this' pointer to verify 'this' is received as expected from C code.16// Store the 'this' pointer to verify 'this' is received as expected from C code.
17static void* gThis;17static void* gThis;
18 18
19/**19/**
20 * Return a unique number for each virtual function so that we are able to20 * Return a unique number for each virtual function so that we are able to
21 * check if the order of functions in the virtual table is as expected.21 * check if the order of functions in the virtual table is as expected.
22 */22 */
23struct SVCEncoderImpl : public ISVCEncoder {23struct SVCEncoderImpl : public ISVCEncoder {
24 virtual ~SVCEncoderImpl() {}24 virtual ~SVCEncoderImpl() {}
25 virtual int EXTAPI Initialize (const SEncParamBase* pParam) {25 virtual int EXTAPI Initialize (const SEncParamBase* pParam) {
26 EXPECT_TRUE (gThis == this);26 EXPECT_TRUE (gThis == this);
27 return 1;27 return 1;
28 }28 }
29 virtual int EXTAPI InitializeExt (const SEncParamExt* pParam) {29 virtual int EXTAPI InitializeExt (const SEncParamExt* pParam) {
30 EXPECT_TRUE (gThis == this);30 EXPECT_TRUE (gThis == this);
31 return 2;31 return 2;
32 }32 }
33 virtual int EXTAPI GetDefaultParams (SEncParamExt* pParam) {33 virtual int EXTAPI GetDefaultParams (SEncParamExt* pParam) {
34 EXPECT_TRUE (gThis == this);34 EXPECT_TRUE (gThis == this);
35 return 3;35 return 3;
36 }36 }
37 virtual int EXTAPI Uninitialize() {37 virtual int EXTAPI Uninitialize() {
38 EXPECT_TRUE (gThis == this);38 EXPECT_TRUE (gThis == this);
39 return 4;39 return 4;
40 }40 }
41 virtual int EXTAPI EncodeFrame (const SSourcePicture* kpSrcPic,41 virtual int EXTAPI EncodeFrame (const SSourcePicture* kpSrcPic,
42 SFrameBSInfo* pBsInfo) {42 SFrameBSInfo* pBsInfo) {
43 EXPECT_TRUE (gThis == this);43 EXPECT_TRUE (gThis == this);
44 return 5;44 return 5;
45 }45 }
46 virtual int EXTAPI EncodeParameterSets (SFrameBSInfo* pBsInfo) {46 virtual int EXTAPI EncodeParameterSets (SFrameBSInfo* pBsInfo) {
47 EXPECT_TRUE (gThis == this);47 EXPECT_TRUE (gThis == this);
48 return 6;48 return 6;
49 }49 }
50 virtual int EXTAPI ForceIntraFrame (bool bIDR,int iLayerId = -1) {50 virtual int EXTAPI ForceIntraFrame (bool bIDR, int iLayerId = -1) {
51 EXPECT_TRUE (gThis == this);51 EXPECT_TRUE (gThis == this);
52 return 7;52 return 7;
53 }53 }
54 virtual int EXTAPI SetOption (ENCODER_OPTION eOptionId, void* pOption) {54 virtual int EXTAPI SetOption (ENCODER_OPTION eOptionId, void* pOption) {
55 EXPECT_TRUE (gThis == this);55 EXPECT_TRUE (gThis == this);
56 return 8;56 return 8;
57 }57 }
58 virtual int EXTAPI GetOption (ENCODER_OPTION eOptionId, void* pOption) {58 virtual int EXTAPI GetOption (ENCODER_OPTION eOptionId, void* pOption) {
59 EXPECT_TRUE (gThis == this);59 EXPECT_TRUE (gThis == this);
60 return 9;60 return 9;
61 }61 }
62};62};
63 63
64struct SVCDecoderImpl : public ISVCDecoder {64struct SVCDecoderImpl : public ISVCDecoder {
65 virtual ~SVCDecoderImpl() {}65 virtual ~SVCDecoderImpl() {}
66 virtual long EXTAPI Initialize (const SDecodingParam* pParam) {66 virtual long EXTAPI Initialize (const SDecodingParam* pParam) {
67 EXPECT_TRUE (gThis == this);67 EXPECT_TRUE (gThis == this);
68 return 1;68 return 1;
69 }69 }
70 virtual long EXTAPI Uninitialize() {70 virtual long EXTAPI Uninitialize() {
71 EXPECT_TRUE (gThis == this);71 EXPECT_TRUE (gThis == this);
72 return 2;72 return 2;
73 }73 }
74 virtual DECODING_STATE EXTAPI DecodeFrame (const unsigned char* pSrc,74 virtual DECODING_STATE EXTAPI DecodeFrame (const unsigned char* pSrc,
75 const int iSrcLen, unsigned char** ppDst, int* pStride,75 const int iSrcLen, unsigned char** ppDst, int* pStride,
76 int& iWidth, int& iHeight) {76 int& iWidth, int& iHeight) {
77 EXPECT_TRUE (gThis == this);77 EXPECT_TRUE (gThis == this);
78 return static_cast<DECODING_STATE> (3);78 return static_cast<DECODING_STATE> (3);
79 }79 }
80 virtual DECODING_STATE EXTAPI DecodeFrameNoDelay (const unsigned char* pSrc,80 virtual DECODING_STATE EXTAPI DecodeFrameNoDelay (const unsigned char* pSrc,
81 const int iSrcLen, unsigned char** ppDst, SBufferInfo* pDstInfo) {81 const int iSrcLen, unsigned char** ppDst, SBufferInfo* pDstInfo) {
82 EXPECT_TRUE (gThis == this);82 EXPECT_TRUE (gThis == this);
83 return static_cast<DECODING_STATE> (4);83 return static_cast<DECODING_STATE> (4);
84 }84 }
85 virtual DECODING_STATE EXTAPI DecodeFrame2 (const unsigned char* pSrc,85 virtual DECODING_STATE EXTAPI DecodeFrame2 (const unsigned char* pSrc,
86 const int iSrcLen, unsigned char** ppDst, SBufferInfo* pDstInfo) {86 const int iSrcLen, unsigned char** ppDst, SBufferInfo* pDstInfo) {
87 EXPECT_TRUE (gThis == this);87 EXPECT_TRUE (gThis == this);
88 return static_cast<DECODING_STATE> (5);88 return static_cast<DECODING_STATE> (5);
89 }89 }
90 virtual DECODING_STATE EXTAPI DecodeFrameEx (const unsigned char* pSrc,90 virtual DECODING_STATE EXTAPI FlushFrame (unsigned char** ppDst, SBufferInfo* pDstInfo) {
91 const int iSrcLen, unsigned char* pDst, int iDstStride,91 EXPECT_TRUE (gThis == this);
92 int& iDstLen, int& iWidth, int& iHeight, int& iColorFormat) {92 return static_cast<DECODING_STATE> (5);
93 EXPECT_TRUE (gThis == this);93 }
94 return static_cast<DECODING_STATE> (6);94 virtual DECODING_STATE EXTAPI DecodeFrameEx (const unsigned char* pSrc,
95 }95 const int iSrcLen, unsigned char* pDst, int iDstStride,
96 virtual DECODING_STATE EXTAPI DecodeParser (const unsigned char* pSrc,96 int& iDstLen, int& iWidth, int& iHeight, int& iColorFormat) {
97 const int iSrcLen, SParserBsInfo* pDstInfo) {97 EXPECT_TRUE (gThis == this);
98 EXPECT_TRUE (gThis == this);98 return static_cast<DECODING_STATE> (6);
99 return static_cast<DECODING_STATE> (7);99 }
100 }100 virtual DECODING_STATE EXTAPI DecodeParser (const unsigned char* pSrc,
101 virtual long EXTAPI SetOption (DECODER_OPTION eOptionId, void* pOption) {101 const int iSrcLen, SParserBsInfo* pDstInfo) {
102 EXPECT_TRUE (gThis == this);102 EXPECT_TRUE (gThis == this);
103 return static_cast<DECODING_STATE> (8);103 return static_cast<DECODING_STATE> (7);
104 }104 }
105 virtual long EXTAPI GetOption (DECODER_OPTION eOptionId, void* pOption) {105 virtual long EXTAPI SetOption (DECODER_OPTION eOptionId, void* pOption) {
106 EXPECT_TRUE (gThis == this);106 EXPECT_TRUE (gThis == this);
107 return static_cast<DECODING_STATE> (9);107 return static_cast<DECODING_STATE> (8);
108 }108 }
109};109 virtual long EXTAPI GetOption (DECODER_OPTION eOptionId, void* pOption) {
110 110 EXPECT_TRUE (gThis == this);
111TEST (ISVCEncoderTest, CheckFunctionOrder) {111 return static_cast<DECODING_STATE> (9);
112 SVCEncoderImpl* p = new SVCEncoderImpl;112 }
113 gThis = p;113};
114 CheckEncoderInterface (p, CheckFunctionOrder);114
115 delete p;115TEST (ISVCEncoderTest, CheckFunctionOrder) {
116}116 SVCEncoderImpl* p = new SVCEncoderImpl;
117 117 gThis = p;
118TEST (ISVCDecoderTest, CheckFunctionOrder) {118 CheckEncoderInterface (p, CheckFunctionOrder);
119 SVCDecoderImpl* p = new SVCDecoderImpl;119 delete p;
120 gThis = p;120}
121 CheckDecoderInterface (p, CheckFunctionOrder);121
122 delete p;122TEST (ISVCDecoderTest, CheckFunctionOrder) {
123}123 SVCDecoderImpl* p = new SVCDecoderImpl;
124 124 gThis = p;
125struct bool_test_struct {125 CheckDecoderInterface (p, CheckFunctionOrder);
126 char c;126 delete p;
127 bool b;127}
128};128
129 129struct bool_test_struct {
130TEST (ISVCDecoderEncoderTest, CheckCAbi) {130 char c;
131 EXPECT_EQ (sizeof (bool), GetBoolSize()) << "Wrong size of bool type";131 bool b;
132 EXPECT_EQ (offsetof (bool_test_struct, b), GetBoolOffset()) << "Wrong alignment of bool in a struct";132};
133 EXPECT_EQ (sizeof (bool_test_struct), GetBoolStructSize()) << "Wrong size of struct with a bool";133
134}134TEST (ISVCDecoderEncoderTest, CheckCAbi) {
135 EXPECT_EQ (sizeof (bool), GetBoolSize()) << "Wrong size of bool type";
136 EXPECT_EQ (offsetof (bool_test_struct, b), GetBoolOffset()) << "Wrong alignment of bool in a struct";
137 EXPECT_EQ (sizeof (bool_test_struct), GetBoolStructSize()) << "Wrong size of struct with a bool";
138}

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