summaryrefslogtreecommitdiffstats
path: root/media/libavextensions/stagefright/AVExtensions.h
diff options
context:
space:
mode:
authorLubin Yin <lubiny@codeaurora.org>2015-07-29 12:31:09 +0800
committerSatish Kamuju <skamuj@codeaurora.org>2015-10-06 17:33:49 +0530
commitae614d22fd87feb1857e8041978ab2c38cfaa16e (patch)
treeb6fe7142b7c1dbfcba5250f3fa36991da61a0f33 /media/libavextensions/stagefright/AVExtensions.h
parent9079a349be70e7c7a5fa8e5bf98be22eeb054db7 (diff)
downloadframeworks_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.h38
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);
};