summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/binding/include/mp4_demuxer/MoofParser.h
diff options
context:
space:
mode:
Diffstat (limited to 'media/libstagefright/binding/include/mp4_demuxer/MoofParser.h')
-rw-r--r--media/libstagefright/binding/include/mp4_demuxer/MoofParser.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/media/libstagefright/binding/include/mp4_demuxer/MoofParser.h b/media/libstagefright/binding/include/mp4_demuxer/MoofParser.h
index 814f806fc..47bd27287 100644
--- a/media/libstagefright/binding/include/mp4_demuxer/MoofParser.h
+++ b/media/libstagefright/binding/include/mp4_demuxer/MoofParser.h
@@ -17,6 +17,7 @@ typedef int64_t Microseconds;
class Box;
class BoxContext;
+class BoxReader;
class Moof;
class Mvhd : public Atom
@@ -160,6 +161,53 @@ public:
FallibleTArray<uint64_t> mOffsets;
};
+struct SampleToGroupEntry
+{
+public:
+ static const uint32_t kTrackGroupDescriptionIndexBase = 0;
+ static const uint32_t kFragmentGroupDescriptionIndexBase = 0x10000;
+
+ SampleToGroupEntry(uint32_t aSampleCount, uint32_t aGroupDescriptionIndex)
+ : mSampleCount(aSampleCount)
+ , mGroupDescriptionIndex(aGroupDescriptionIndex)
+ {
+ }
+
+ uint32_t mSampleCount;
+ uint32_t mGroupDescriptionIndex;
+};
+
+class Sbgp final : public Atom // SampleToGroup box.
+{
+public:
+ explicit Sbgp(Box& aBox);
+
+ AtomType mGroupingType;
+ uint32_t mGroupingTypeParam;
+ nsTArray<SampleToGroupEntry> mEntries;
+};
+
+struct CencSampleEncryptionInfoEntry final
+{
+public:
+ CencSampleEncryptionInfoEntry() { }
+
+ bool Init(BoxReader& aReader);
+
+ bool mIsEncrypted = false;
+ uint8_t mIVSize = 0;
+ nsTArray<uint8_t> mKeyId;
+};
+
+class Sgpd final : public Atom // SampleGroupDescription box.
+{
+public:
+ explicit Sgpd(Box& aBox);
+
+ AtomType mGroupingType;
+ nsTArray<CencSampleEncryptionInfoEntry> mEntries;
+};
+
class AuxInfo {
public:
AuxInfo(int64_t aMoofOffset, Saiz& aSaiz, Saio& aSaio);
@@ -182,6 +230,9 @@ public:
Interval<Microseconds> mTimeRange;
FallibleTArray<Sample> mIndex;
+ nsTArray<CencSampleEncryptionInfoEntry> mSampleEncryptionInfoEntries;
+ nsTArray<SampleToGroupEntry> mSampleToGroupEntries;
+
nsTArray<Saiz> mSaizs;
nsTArray<Saio> mSaios;