History

add API only for decode parser for HW decoding support

huili2 committed 12 years ago

Commit efdefdb1 parent e4b373a6 files · +40 −4Browse files

Unified · Split

6 files
  1. codec/api/svc/codec_api.h +12 −0
  2. codec/api/svc/codec_app_def.h +8 −0
  3. codec/decoder/plus/inc/welsDecoderExt.h +3 −0
  4. codec/decoder/plus/src/welsDecoderExt.cpp +7 −0
  5. test/api/c_interface_test.c +3 −2
  6. test/api/cpp_interface_test.cpp +7 −2
codec/api/svc/codec_api.h+12−0
@@ -106,6 +106,14 @@ class ISVCDecoder { · 105 unmodified lines
106 unsigned char** ppDst,106 unsigned char** ppDst,
107 SBufferInfo* pDstInfo) = 0;107 SBufferInfo* pDstInfo) = 0;
108 108
109 /*
110 * This function parse input bitstream only, and rewrite possible SVC syntax to AVC syntax
111 * return: 0 - success; otherwise -failed;
112 */
113 virtual DECODING_STATE EXTAPI DecodeParser (const unsigned char* pSrc,
114 const int iSrcLen,
115 SParserBsInfo* pDstInfo) = 0;
116
109 /*117 /*
110 * this API does not work for now!! This is for future use to support non-I420 color format output.118 * this API does not work for now!! This is for future use to support non-I420 color format output.
111 */119 */
@@ -169,6 +177,10 @@ DECODING_STATE (*DecodeFrame2) (ISVCDecoder*, const unsigned char* pSrc, · 57 unmodified lines
169 unsigned char** ppDst,177 unsigned char** ppDst,
170 SBufferInfo* pDstInfo);178 SBufferInfo* pDstInfo);
171 179
180DECODING_STATE (*DecodeParser) (ISVCDecoder*, const unsigned char* pSrc,
181 const int iSrcLen,
182 SParserBsInfo* pDstInfo);
183
172DECODING_STATE (*DecodeFrameEx) (ISVCDecoder*, const unsigned char* pSrc,184DECODING_STATE (*DecodeFrameEx) (ISVCDecoder*, const unsigned char* pSrc,
173 const int iSrcLen,185 const int iSrcLen,
174 unsigned char* pDst,186 unsigned char* pDst,
codec/api/svc/codec_app_def.h+8−0
@@ -447,4 +447,12 @@ typedef struct TagDecoderCapability { · 446 unmodified lines
447 bool bRedPicCap;447 bool bRedPicCap;
448} SDecoderCapability;448} SDecoderCapability;
449 449
450typedef struct TagParserBsInfo {
451 int iNalNum; //total NAL number in current AU
452 int iNalLenInByte [MAX_NAL_UNITS_IN_LAYER]; //each nal length
453 unsigned char* pDstBuff; //outputted dst buffer for parsed bitstream
454 int iSpsWidthInPixel; //required SPS width info
455 int iSpsHeightInPixel; //required SPS height info
456} SParserBsInfo, PParserBsInfo;
457
450#endif//WELS_VIDEO_CODEC_APPLICATION_DEFINITION_H__458#endif//WELS_VIDEO_CODEC_APPLICATION_DEFINITION_H__
codec/decoder/plus/inc/welsDecoderExt.h+3−0
@@ -85,6 +85,9 @@ virtual DECODING_STATE EXTAPI DecodeFrame2 (const unsigned char* kpSrc, · 84 unmodified lines
85 const int kiSrcLen,85 const int kiSrcLen,
86 unsigned char** ppDst,86 unsigned char** ppDst,
87 SBufferInfo* pDstInfo);87 SBufferInfo* pDstInfo);
88virtual DECODING_STATE EXTAPI DecodeParser (const unsigned char* kpSrc,
89 const int kiSrcLen,
90 SParserBsInfo* pDstInfo);
88virtual DECODING_STATE EXTAPI DecodeFrameEx (const unsigned char* kpSrc,91virtual DECODING_STATE EXTAPI DecodeFrameEx (const unsigned char* kpSrc,
89 const int kiSrcLen,92 const int kiSrcLen,
90 unsigned char* pDst,93 unsigned char* pDst,
codec/decoder/plus/src/welsDecoderExt.cpp+7−0
@@ -453,6 +453,13 @@ DECODING_STATE CWelsDecoder::DecodeFrame2 (const unsigned char* kpSrc, · 452 unmodified lines
453 return dsErrorFree;453 return dsErrorFree;
454}454}
455 455
456DECODING_STATE CWelsDecoder::DecodeParser (const unsigned char* kpSrc,
457 const int kiSrcLen,
458 SParserBsInfo* pDstInfo) {
459//TODO, add function here
460 return (DECODING_STATE) m_pDecContext->iErrorCode;
461}
462
456DECODING_STATE CWelsDecoder::DecodeFrame (const unsigned char* kpSrc,463DECODING_STATE CWelsDecoder::DecodeFrame (const unsigned char* kpSrc,
457 const int kiSrcLen,464 const int kiSrcLen,
458 unsigned char** ppDst,465 unsigned char** ppDst,
test/api/c_interface_test.c+3−2
@@ -27,8 +27,9 @@ void CheckDecoderInterface(ISVCDecoder* p, CheckFunc check) { · 26 unmodified lines
27 CHECK(3, p, DecodeFrame);27 CHECK(3, p, DecodeFrame);
28 CHECK(4, p, DecodeFrame2);28 CHECK(4, p, DecodeFrame2);
29 CHECK(5, p, DecodeFrameEx);29 CHECK(5, p, DecodeFrameEx);
30 CHECK(6, p, SetOption);30 CHECK(6, p, DecodeParser);
31 CHECK(7, p, GetOption);31 CHECK(7, p, SetOption);
32 CHECK(8, p, GetOption);
32}33}
33 34
34struct bool_test_struct {35struct bool_test_struct {
test/api/cpp_interface_test.cpp+7−2
@@ -88,13 +88,18 @@ struct SVCDecoderImpl : public ISVCDecoder { · 87 unmodified lines
88 EXPECT_TRUE (gThis == this);88 EXPECT_TRUE (gThis == this);
89 return static_cast<DECODING_STATE> (5);89 return static_cast<DECODING_STATE> (5);
90 }90 }
91 virtual DECODING_STATE EXTAPI DecodeParser (const unsigned char* pSrc,
92 const int iSrcLen, SParserBsInfo* pDstInfo) {
93 EXPECT_TRUE (gThis == this);
94 return static_cast<DECODING_STATE> (6);
95 }
91 virtual long EXTAPI SetOption (DECODER_OPTION eOptionId, void* pOption) {96 virtual long EXTAPI SetOption (DECODER_OPTION eOptionId, void* pOption) {
92 EXPECT_TRUE (gThis == this);97 EXPECT_TRUE (gThis == this);
93 return 6;98 return 7;
94 }99 }
95 virtual long EXTAPI GetOption (DECODER_OPTION eOptionId, void* pOption) {100 virtual long EXTAPI GetOption (DECODER_OPTION eOptionId, void* pOption) {
96 EXPECT_TRUE (gThis == this);101 EXPECT_TRUE (gThis == this);
97 return 7;102 return 8;
98 }103 }
99};104};
100 105

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