diff options
author | Lubin Yin <lubiny@codeaurora.org> | 2015-07-29 12:31:09 +0800 |
---|---|---|
committer | Satish Kamuju <skamuj@codeaurora.org> | 2015-10-06 17:33:49 +0530 |
commit | ae614d22fd87feb1857e8041978ab2c38cfaa16e (patch) | |
tree | b6fe7142b7c1dbfcba5250f3fa36991da61a0f33 /media/libavextensions/stagefright/AVExtensions.h | |
parent | 9079a349be70e7c7a5fa8e5bf98be22eeb054db7 (diff) | |
download | frameworks_av-ae614d22fd87feb1857e8041978ab2c38cfaa16e.zip frameworks_av-ae614d22fd87feb1857e8041978ab2c38cfaa16e.tar.gz frameworks_av-ae614d22fd87feb1857e8041978ab2c38cfaa16e.tar.bz2 |
libstagefright: MPEG4Writer: Add support for HEVC muxing
Changes done to enable HEVC muxing
- writing HVCC atom
- configure HEVC encoder
Fix HEVC flag initialization
Check for HEVC for single track usecase
Change-Id: I1757d0c442e7cc3ef251431f220395131a1eb4ec
Diffstat (limited to 'media/libavextensions/stagefright/AVExtensions.h')
-rw-r--r-- | media/libavextensions/stagefright/AVExtensions.h | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/media/libavextensions/stagefright/AVExtensions.h b/media/libavextensions/stagefright/AVExtensions.h index ab0f180..3e51463 100644 --- a/media/libavextensions/stagefright/AVExtensions.h +++ b/media/libavextensions/stagefright/AVExtensions.h @@ -38,6 +38,8 @@ namespace android { class AudioParameter; class MetaData; class MediaExtractor; +class MPEG4Writer; +struct ABuffer; struct ACodec; struct ALooper; struct IMediaHTTPConnection; @@ -106,6 +108,42 @@ struct AVUtils { List<int64_t> &/*decodeTimeQueue*/) {} virtual bool useQCHWEncoder(const sp<AMessage> &, AString &) { return false; } + + struct HEVCMuxer { + + virtual bool reassembleHEVCCSD(const AString &mime, sp<ABuffer> csd0, sp<MetaData> &meta); + + virtual void writeHEVCFtypBox(MPEG4Writer *writer); + + virtual status_t makeHEVCCodecSpecificData(const uint8_t *data, + size_t size, void** codecSpecificData, + size_t *codecSpecificDataSize); + + virtual const char *getFourCCForMime(const char *mime); + + virtual void writeHvccBox(MPEG4Writer *writer, + void* codecSpecificData, size_t codecSpecificDataSize, + bool useNalLengthFour); + + virtual bool isVideoHEVC(const char* mime); + + virtual void getHEVCCodecSpecificDataFromInputFormatIfPossible( + sp<MetaData> meta, void **codecSpecificData, + size_t *codecSpecificDataSize, bool *gotAllCodecSpecificData); + + protected: + HEVCMuxer() {}; + virtual ~HEVCMuxer() {}; + friend struct AVUtils; + }; + + virtual inline HEVCMuxer& HEVCMuxerUtils() { + return mHEVCMuxer; + } + +private: + HEVCMuxer mHEVCMuxer; + // ----- NO TRESSPASSING BEYOND THIS LINE ------ DECLARE_LOADABLE_SINGLETON(AVUtils); }; |