MP4Demuxer.h (1452B)
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* vim:set ts=2 sw=2 sts=2 et cindent: */ 3 /* This Source Code Form is subject to the terms of the Mozilla Public 4 * License, v. 2.0. If a copy of the MPL was not distributed with this 5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 6 7 #if !defined(MP4Demuxer_h_) 8 # define MP4Demuxer_h_ 9 10 # include "MediaDataDemuxer.h" 11 # include "MediaResource.h" 12 # include "mozilla/Monitor.h" 13 14 namespace mozilla { 15 class MP4TrackDemuxer; 16 class ResourceStream; 17 18 DDLoggedTypeDeclNameAndBase(MP4Demuxer, MediaDataDemuxer); 19 20 class MP4Demuxer : public MediaDataDemuxer, 21 public DecoderDoctorLifeLogger<MP4Demuxer> { 22 public: 23 explicit MP4Demuxer(MediaResource* aResource); 24 25 RefPtr<InitPromise> Init() override; 26 27 uint32_t GetNumberTracks(TrackInfo::TrackType aType) const override; 28 29 already_AddRefed<MediaTrackDemuxer> GetTrackDemuxer( 30 TrackInfo::TrackType aType, uint32_t aTrackNumber) override; 31 32 bool IsSeekable() const override; 33 34 UniquePtr<EncryptionInfo> GetCrypto() override; 35 36 void NotifyDataArrived() override; 37 38 void NotifyDataRemoved() override; 39 40 private: 41 RefPtr<MediaResource> mResource; 42 RefPtr<ResourceStream> mStream; 43 AutoTArray<RefPtr<MP4TrackDemuxer>, 1> mAudioDemuxers; 44 AutoTArray<RefPtr<MP4TrackDemuxer>, 1> mVideoDemuxers; 45 nsTArray<uint8_t> mCryptoInitData; 46 bool mIsSeekable; 47 }; 48 49 } // namespace mozilla 50 51 #endif