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
106106 unsigned char** ppDst,
107107 SBufferInfo* pDstInfo) = 0;
108108
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+
109117 /*
110118 * this API does not work for now!! This is for future use to support non-I420 color format output.
111119 */
@@ -169,6 +177,10 @@ DECODING_STATE (*DecodeFrame2) (ISVCDecoder*, const unsigned char* pSrc, · 57 unmodified lines
169177 unsigned char** ppDst,
170178 SBufferInfo* pDstInfo);
171179
180+DECODING_STATE (*DecodeParser) (ISVCDecoder*, const unsigned char* pSrc,
181+ const int iSrcLen,
182+ SParserBsInfo* pDstInfo);
183+
172184 DECODING_STATE (*DecodeFrameEx) (ISVCDecoder*, const unsigned char* pSrc,
173185 const int iSrcLen,
174186 unsigned char* pDst,
codec/api/svc/codec_app_def.h+8−0
@@ -447,4 +447,12 @@ typedef struct TagDecoderCapability { · 446 unmodified lines
447447 bool bRedPicCap;
448448 } SDecoderCapability;
449449
450+typedef 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+
450458 #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
8585 const int kiSrcLen,
8686 unsigned char** ppDst,
8787 SBufferInfo* pDstInfo);
88+virtual DECODING_STATE EXTAPI DecodeParser (const unsigned char* kpSrc,
89+ const int kiSrcLen,
90+ SParserBsInfo* pDstInfo);
8891 virtual DECODING_STATE EXTAPI DecodeFrameEx (const unsigned char* kpSrc,
8992 const int kiSrcLen,
9093 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
453453 return dsErrorFree;
454454 }
455455
456+DECODING_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+
456463 DECODING_STATE CWelsDecoder::DecodeFrame (const unsigned char* kpSrc,
457464 const int kiSrcLen,
458465 unsigned char** ppDst,
test/api/c_interface_test.c+3−2
@@ -27,8 +27,9 @@ void CheckDecoderInterface(ISVCDecoder* p, CheckFunc check) { · 26 unmodified lines
2727 CHECK(3, p, DecodeFrame);
2828 CHECK(4, p, DecodeFrame2);
2929 CHECK(5, p, DecodeFrameEx);
30− CHECK(6, p, SetOption);
31− CHECK(7, p, GetOption);
30+ CHECK(6, p, DecodeParser);
31+ CHECK(7, p, SetOption);
32+ CHECK(8, p, GetOption);
3233 }
3334
3435 struct bool_test_struct {
test/api/cpp_interface_test.cpp+7−2
@@ -88,13 +88,18 @@ struct SVCDecoderImpl : public ISVCDecoder { · 87 unmodified lines
8888 EXPECT_TRUE (gThis == this);
8989 return static_cast<DECODING_STATE> (5);
9090 }
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+ }
9196 virtual long EXTAPI SetOption (DECODER_OPTION eOptionId, void* pOption) {
9297 EXPECT_TRUE (gThis == this);
93− return 6;
98+ return 7;
9499 }
95100 virtual long EXTAPI GetOption (DECODER_OPTION eOptionId, void* pOption) {
96101 EXPECT_TRUE (gThis == this);
97− return 7;
102+ return 8;
98103 }
99104 };
100105

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