diff options
author | trav90 <travawine@palemoon.org> | 2018-07-25 22:37:39 -0500 |
---|---|---|
committer | trav90 <travawine@palemoon.org> | 2018-07-25 22:37:39 -0500 |
commit | 512dcfac01d5395855cf2aff96ecd62ededb05aa (patch) | |
tree | 61fa7de4a0967506e273daf72e89077ef9d7d85c /media/libstagefright/binding/include/mp4_demuxer/MoofParser.h | |
parent | d2498873e95da2f6624841144dfb015fa5f898d0 (diff) | |
download | UXP-512dcfac01d5395855cf2aff96ecd62ededb05aa.tar UXP-512dcfac01d5395855cf2aff96ecd62ededb05aa.tar.gz UXP-512dcfac01d5395855cf2aff96ecd62ededb05aa.tar.lz UXP-512dcfac01d5395855cf2aff96ecd62ededb05aa.tar.xz UXP-512dcfac01d5395855cf2aff96ecd62ededb05aa.zip |
[EME] Add support for sbgp and sgpd boxes in the traf box
Diffstat (limited to 'media/libstagefright/binding/include/mp4_demuxer/MoofParser.h')
-rw-r--r-- | media/libstagefright/binding/include/mp4_demuxer/MoofParser.h | 51 |
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; |