diff --git a/docs/annotated.html b/docs/annotated.html index b263a6e825..657b369557 100644 --- a/docs/annotated.html +++ b/docs/annotated.html @@ -246,72 +246,73 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); ||oCMuxerOptionsThis structure contains the list of configuration options for Muxer ||oCOffsetByteQueue ||oCProducerConsumerQueue -||oCRequestSignerAbstract class used for signature generation -||oCAesRequestSignerAesRequestSigner uses AES-CBC signing -||oCRsaRequestSignerRsaRequestSigner uses RSA-PSS signing -||oCRsaPrivateKeyRsa private key, used for message signing and decryption -||oCRsaPublicKeyRsa public key, used for signature verification and encryption -||oCStatus -||oCStreamInfoAbstract class holds stream information -||oCTextStreamInfo -||oCTextTrack -||oCTextTrackConfig -||oCVideoStreamInfoHolds video stream information -||oCWidevineKeySource -||oCMpdNotifyMuxerListener -||oCMuxerListener -||oCVideoStreamInfoParameters -||oCOnMediaEndParameters -||oCProgressListenerThis class listens to progress updates events -||oCVodMediaInfoDumpMuxerListener -||oCFileDefine an abstract file interface -||oCFileCloser -||oCIoCacheDeclaration of class which implements a thread-safe circular buffer -||oCLocalFileImplement LocalFile which deals with local storage -||oCMemoryFile -||oCThreadedIoFileDeclaration of class which implements a thread-safe circular buffer -||oCUdpFileImplements UdpFile, which receives UDP unicast and multicast streams -||oCAVCDecoderConfigurationClass for parsing AVC decoder configuration -||oCDecoderConfiguration -||oCH264BitReader -||oCH264ByteToUnitStreamConverter -||oCH264SPS -||oCH264PPS -||oCH264ModificationOfPicNum -||oCH264WeightingFactors -||oCH264DecRefPicMarking -||oCH264SliceHeader -||oCH264SEIRecoveryPoint -||oCH264SEIMessage -||oCH264Parser -||oCHEVCDecoderConfigurationClass for parsing HEVC decoder configuration -||oCNalu -||oCNaluReader -||oCVP8Parser -||oCVP9ParserClass to parse a vp9 bit stream -||oCVPCodecConfigurationClass for parsing or writing VP codec configuration data -||oCVPxFrameInfo -||oCVPxParser -||oCCluster -||oCClusterBuilder -||oCMkvWriterAn implementation of IMkvWriter using our File type -||oCSeekHead -||oCSegmentTestBase -|||\CClusterParser -||oCTracksBuilder -||oCWebMAudioClientHelper class used to parse an Audio element inside a TrackEntry element -||oCWebMClusterParser -||oCContentEncoding -||oCWebMContentEncodingsClientParser for WebM ContentEncodings element -||oCWebMInfoParserParser for WebM Info element -||oCWebMMediaParser -||oCWebMParserClient -||oCWebMListParser -||oCWebMTracksParserParser for WebM Tracks element -||oCWebMVideoClientHelper class used to parse a Video element inside a TrackEntry element -||oCWebMWebVTTParser -||oCCue -||\CWebVttMediaParser +||oCProtectionSystemSpecificInfo +||oCRequestSignerAbstract class used for signature generation +||oCAesRequestSignerAesRequestSigner uses AES-CBC signing +||oCRsaRequestSignerRsaRequestSigner uses RSA-PSS signing +||oCRsaPrivateKeyRsa private key, used for message signing and decryption +||oCRsaPublicKeyRsa public key, used for signature verification and encryption +||oCStatus +||oCStreamInfoAbstract class holds stream information +||oCTextStreamInfo +||oCTextTrack +||oCTextTrackConfig +||oCVideoStreamInfoHolds video stream information +||oCWidevineKeySource +||oCMpdNotifyMuxerListener +||oCMuxerListener +||oCVideoStreamInfoParameters +||oCOnMediaEndParameters +||oCProgressListenerThis class listens to progress updates events +||oCVodMediaInfoDumpMuxerListener +||oCFileDefine an abstract file interface +||oCFileCloser +||oCIoCacheDeclaration of class which implements a thread-safe circular buffer +||oCLocalFileImplement LocalFile which deals with local storage +||oCMemoryFile +||oCThreadedIoFileDeclaration of class which implements a thread-safe circular buffer +||oCUdpFileImplements UdpFile, which receives UDP unicast and multicast streams +||oCAVCDecoderConfigurationClass for parsing AVC decoder configuration +||oCDecoderConfiguration +||oCH264BitReader +||oCH264ByteToUnitStreamConverter +||oCH264SPS +||oCH264PPS +||oCH264ModificationOfPicNum +||oCH264WeightingFactors +||oCH264DecRefPicMarking +||oCH264SliceHeader +||oCH264SEIRecoveryPoint +||oCH264SEIMessage +||oCH264Parser +||oCHEVCDecoderConfigurationClass for parsing HEVC decoder configuration +||oCNalu +||oCNaluReader +||oCVP8Parser +||oCVP9ParserClass to parse a vp9 bit stream +||oCVPCodecConfigurationClass for parsing or writing VP codec configuration data +||oCVPxFrameInfo +||oCVPxParser +||oCCluster +||oCClusterBuilder +||oCMkvWriterAn implementation of IMkvWriter using our File type +||oCSeekHead +||oCSegmentTestBase +|||\CClusterParser +||oCTracksBuilder +||oCWebMAudioClientHelper class used to parse an Audio element inside a TrackEntry element +||oCWebMClusterParser +||oCContentEncoding +||oCWebMContentEncodingsClientParser for WebM ContentEncodings element +||oCWebMInfoParserParser for WebM Info element +||oCWebMMediaParser +||oCWebMParserClient +||oCWebMListParser +||oCWebMTracksParserParser for WebM Tracks element +||oCWebMVideoClientHelper class used to parse a Video element inside a TrackEntry element +||oCWebMWebVTTParser +||oCCue +||\CWebVttMediaParser |oNxml ||oCXmlDeleter ||oCXmlNode @@ -341,7 +342,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/classes.html b/docs/classes.html index 63ba43d465..27d57f704f 100644 --- a/docs/classes.html +++ b/docs/classes.html @@ -90,89 +90,89 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); - - + + + - - + - - - + + + + - - - + + + + - - + - - + + - - - - - - + + + + + - - + + + - - - + + + + - - + + + - - - - - - - + + + + + + - - - + + + + - - + + + - + + + + - - - - + + + + +
  A  
DecoderConfiguration (edash_packager::media)   
  L  
-
ProtectionSchemeInfo (edash_packager::media::mp4)   TrackFragment (edash_packager::media::mp4)   
DecodingTime (edash_packager::media::mp4)   ProtectionSystemSpecificHeader (edash_packager::media::mp4)   TrackFragmentDecodeTime (edash_packager::media::mp4)   
AACAudioSpecificConfig (edash_packager::media::mp4)   DecodingTimeIterator (edash_packager::media::mp4)   Language (edash_packager::media::mp4)   
  R  
+
ProtectionSchemeInfo (edash_packager::media::mp4)   TrackExtends (edash_packager::media::mp4)   
DecodingTime (edash_packager::media::mp4)   ProtectionSystemSpecificHeader (edash_packager::media::mp4)   TrackFragment (edash_packager::media::mp4)   
AACAudioSpecificConfig (edash_packager::media::mp4)   DecodingTimeIterator (edash_packager::media::mp4)   Language (edash_packager::media::mp4)   ProtectionSystemSpecificInfo (edash_packager::media)   TrackFragmentDecodeTime (edash_packager::media::mp4)   
AC3Specific (edash_packager::media::mp4)   DecodingTimeToSample (edash_packager::media::mp4)   LibcryptoThreading (edash_packager::media)   
  R  
TrackFragmentHeader (edash_packager::media::mp4)   
AC3Specific (edash_packager::media::mp4)   DecodingTimeToSample (edash_packager::media::mp4)   LibcryptoThreading (edash_packager::media)   TrackFragmentRun (edash_packager::media::mp4)   
AdaptationSet (edash_packager)   DecryptConfig (edash_packager::media)   LocalFile (edash_packager::media)   Representation (edash_packager)   TrackHeader (edash_packager::media::mp4)   
AdaptationSet (edash_packager)   DecryptConfig (edash_packager::media)   LocalFile (edash_packager::media)   TrackFragmentRun (edash_packager::media::mp4)   
AdaptationSetXmlNode (edash_packager::xml)   DecryptorSource (edash_packager::media)   
  M  
-
RepresentationBaseXmlNode (edash_packager::xml)   TrackRunIterator (edash_packager::media::mp4)   
AdtsHeader (edash_packager::media::mp2t)   Demuxer (edash_packager::media)   RepresentationStateChangeListener (edash_packager)   TracksBuilder (edash_packager::media)   
AesCbcCtsDecryptor (edash_packager::media)   DemuxStreamIdMediaSample (edash_packager::media::wvm)   Media (edash_packager::media::mp4)   RepresentationXmlNode (edash_packager::xml)   TsPacket (edash_packager::media::mp2t)   
AesCbcCtsEncryptor (edash_packager::media)   DTSSpecific (edash_packager::media::mp4)   MediaData (edash_packager::media::mp4)   RequestSigner (edash_packager::media)   TsSection (edash_packager::media::mp2t)   
Representation (edash_packager)   TrackHeader (edash_packager::media::mp4)   
AdtsHeader (edash_packager::media::mp2t)   Demuxer (edash_packager::media)   RepresentationBaseXmlNode (edash_packager::xml)   TrackRunIterator (edash_packager::media::mp4)   
AesCbcCtsDecryptor (edash_packager::media)   DemuxStreamIdMediaSample (edash_packager::media::wvm)   Media (edash_packager::media::mp4)   RepresentationStateChangeListener (edash_packager)   TracksBuilder (edash_packager::media)   
AesCbcCtsEncryptor (edash_packager::media)   DTSSpecific (edash_packager::media::mp4)   MediaData (edash_packager::media::mp4)   RepresentationXmlNode (edash_packager::xml)   TsPacket (edash_packager::media::mp2t)   
AesCbcPkcs5Decryptor (edash_packager::media)   
  E  
-
MediaHeader (edash_packager::media::mp4)   RsaPrivateKey (edash_packager::media)   TsSectionPat (edash_packager::media::mp2t)   
AesCbcPkcs5Encryptor (edash_packager::media)   MediaInformation (edash_packager::media::mp4)   RsaPublicKey (edash_packager::media)   TsSectionPes (edash_packager::media::mp2t)   
AesCtrEncryptor (edash_packager::media)   EC3Specific (edash_packager::media::mp4)   MediaParser (edash_packager::media)   RsaRequestSigner (edash_packager::media)   TsSectionPmt (edash_packager::media::mp2t)   
AesRequestSigner (edash_packager::media)   Edit (edash_packager::media::mp4)   MediaSample (edash_packager::media)   
  S  
+
MediaHeader (edash_packager::media::mp4)   RequestSigner (edash_packager::media)   TsSection (edash_packager::media::mp2t)   
AesCbcPkcs5Encryptor (edash_packager::media)   MediaInformation (edash_packager::media::mp4)   RsaPrivateKey (edash_packager::media)   TsSectionPat (edash_packager::media::mp2t)   
AesCtrEncryptor (edash_packager::media)   EC3Specific (edash_packager::media::mp4)   MediaParser (edash_packager::media)   RsaPublicKey (edash_packager::media)   TsSectionPes (edash_packager::media::mp2t)   
AesRequestSigner (edash_packager::media)   Edit (edash_packager::media::mp4)   MediaSample (edash_packager::media)   RsaRequestSigner (edash_packager::media)   TsSectionPmt (edash_packager::media::mp2t)   
AudioSampleEntry (edash_packager::media::mp4)   EditList (edash_packager::media::mp4)   MediaStream (edash_packager::media)   
  S  
TsSectionPsi (edash_packager::media::mp2t)   
AudioSampleEntry (edash_packager::media::mp4)   EditList (edash_packager::media::mp4)   MediaStream (edash_packager::media)   TwoPassSingleSegmentSegmenter (edash_packager::media::webm)   
AudioStreamInfo (edash_packager::media)   EditListEntry (edash_packager::media::mp4)   MemoryFile (edash_packager::media)   SampleAuxiliaryInformationOffset (edash_packager::media::mp4)   
  U  
+
AudioStreamInfo (edash_packager::media)   EditListEntry (edash_packager::media::mp4)   MemoryFile (edash_packager::media)   TwoPassSingleSegmentSegmenter (edash_packager::media::webm)   
AudioTimestampHelper (edash_packager::media)   Element (edash_packager)   Metadata (edash_packager::media::mp4)   SampleAuxiliaryInformationOffset (edash_packager::media::mp4)   
  U  
AudioTimestampHelper (edash_packager::media)   Element (edash_packager)   Metadata (edash_packager::media::mp4)   SampleAuxiliaryInformationSize (edash_packager::media::mp4)   
AVCDecoderConfiguration (edash_packager::media)   ElementaryStreamDescriptor (edash_packager::media::mp4)   MkvWriter (edash_packager::media)   SampleDescription (edash_packager::media::mp4)   UdpFile (edash_packager::media)   
AVCDecoderConfiguration (edash_packager::media)   ElementaryStreamDescriptor (edash_packager::media::mp4)   MkvWriter (edash_packager::media)   SampleAuxiliaryInformationSize (edash_packager::media::mp4)   
  B  
-
EncryptingFragmenter (edash_packager::media::mp4)   MockAdaptationSet (edash_packager)   SampleEncryption (edash_packager::media::mp4)   
  V  
+
EncryptingFragmenter (edash_packager::media::mp4)   MockAdaptationSet (edash_packager)   SampleDescription (edash_packager::media::mp4)   UdpFile (edash_packager::media)   
EncryptionKey (edash_packager::media)   MockMpdBuilder (edash_packager)   SampleEncryption (edash_packager::media::mp4)   
  V  
EncryptionKey (edash_packager::media)   MockMpdBuilder (edash_packager)   SampleEncryptionEntry (edash_packager::media::mp4)   
BandwidthEstimator   Encryptor (edash_packager::media::webm)   MockMpdNotifier (edash_packager)   SampleGroupDescription (edash_packager::media::mp4)   VideoMediaHeader (edash_packager::media::mp4)   
BitReader (edash_packager::media)   ESDescriptor (edash_packager::media::mp4)   MockRepresentation (edash_packager)   SampleSize (edash_packager::media::mp4)   VideoSampleEntry (edash_packager::media::mp4)   
Box (edash_packager::media::mp4)   EsParser (edash_packager::media::mp2t)   Movie (edash_packager::media::mp4)   SampleTable (edash_packager::media::mp4)   VideoSliceHeaderParser (edash_packager::media::mp4)   
BoxBuffer (edash_packager::media::mp4)   EsParserAdts (edash_packager::media::mp2t)   MovieExtends (edash_packager::media::mp4)   SampleToChunk (edash_packager::media::mp4)   VideoStreamInfo (edash_packager::media)   
BoxReader (edash_packager::media::mp4)   EsParserH264 (edash_packager::media::mp2t)   MovieExtendsHeader (edash_packager::media::mp4)   SampleToGroup (edash_packager::media::mp4)   VideoStreamInfoParameters (edash_packager::media)   
BandwidthEstimator   Encryptor (edash_packager::media::webm)   MockMpdNotifier (edash_packager)   SampleEncryptionEntry (edash_packager::media::mp4)   
BitReader (edash_packager::media)   ESDescriptor (edash_packager::media::mp4)   MockRepresentation (edash_packager)   SampleGroupDescription (edash_packager::media::mp4)   VideoMediaHeader (edash_packager::media::mp4)   
Box (edash_packager::media::mp4)   EsParser (edash_packager::media::mp2t)   Movie (edash_packager::media::mp4)   SampleSize (edash_packager::media::mp4)   VideoSampleEntry (edash_packager::media::mp4)   
BoxBuffer (edash_packager::media::mp4)   EsParserAdts (edash_packager::media::mp2t)   MovieExtends (edash_packager::media::mp4)   SampleTable (edash_packager::media::mp4)   VideoSliceHeaderParser (edash_packager::media::mp4)   
BoxReader (edash_packager::media::mp4)   EsParserH264 (edash_packager::media::mp2t)   MovieExtendsHeader (edash_packager::media::mp4)   SampleToChunk (edash_packager::media::mp4)   VideoStreamInfo (edash_packager::media)   
BufferReader (edash_packager::media)   
  F  
-
MovieFragment (edash_packager::media::mp4)   SampleToGroupEntry (edash_packager::media::mp4)   VodMediaInfoDumpMuxerListener (edash_packager::media)   
BufferWriter (edash_packager::media)   MovieFragmentHeader (edash_packager::media::mp4)   SchemeInfo (edash_packager::media::mp4)   VP8Parser (edash_packager::media)   
ByteQueue (edash_packager::media)   File (edash_packager::media)   MovieHeader (edash_packager::media::mp4)   SchemeType (edash_packager::media::mp4)   VP9Parser (edash_packager::media)   
MovieFragment (edash_packager::media::mp4)   SampleToGroup (edash_packager::media::mp4)   VideoStreamInfoParameters (edash_packager::media)   
BufferWriter (edash_packager::media)   MovieFragmentHeader (edash_packager::media::mp4)   SampleToGroupEntry (edash_packager::media::mp4)   VodMediaInfoDumpMuxerListener (edash_packager::media)   
ByteQueue (edash_packager::media)   File (edash_packager::media)   MovieHeader (edash_packager::media::mp4)   SchemeInfo (edash_packager::media::mp4)   VP8Parser (edash_packager::media)   
  C  
-
FileCloser (edash_packager::media)   Mp2tMediaParser (edash_packager::media::mp2t)   SeekHead (edash_packager::media)   VPCodecConfiguration (edash_packager::media)   
FileType (edash_packager::media::mp4)   MP4MediaParser (edash_packager::media::mp4)   Segmenter (edash_packager::media::mp4)   VPxFrameInfo (edash_packager::media)   
CencSampleEncryptionInfoEntry (edash_packager::media::mp4)   Fragmenter (edash_packager::media::mp4)   MP4Muxer (edash_packager::media::mp4)   Segmenter (edash_packager::media::webm)   VPxParser (edash_packager::media)   
ChunkInfo (edash_packager::media::mp4)   FullBox (edash_packager::media::mp4)   MpdBuilder (edash_packager)   SegmentIndex (edash_packager::media::mp4)   VTTAdditionalTextBox (edash_packager::media::mp4)   
FileCloser (edash_packager::media)   Mp2tMediaParser (edash_packager::media::mp2t)   SchemeType (edash_packager::media::mp4)   VP9Parser (edash_packager::media)   
FileType (edash_packager::media::mp4)   MP4MediaParser (edash_packager::media::mp4)   SeekHead (edash_packager::media)   VPCodecConfiguration (edash_packager::media)   
CencSampleEncryptionInfoEntry (edash_packager::media::mp4)   Fragmenter (edash_packager::media::mp4)   MP4Muxer (edash_packager::media::mp4)   Segmenter (edash_packager::media::mp4)   VPxFrameInfo (edash_packager::media)   
ChunkInfo (edash_packager::media::mp4)   FullBox (edash_packager::media::mp4)   MpdBuilder (edash_packager)   Segmenter (edash_packager::media::webm)   VPxParser (edash_packager::media)   
ChunkInfoIterator (edash_packager::media::mp4)   
  H  
-
MpdNotifier (edash_packager)   SegmentInfo (edash_packager)   VTTCueBox (edash_packager::media::mp4)   
ChunkLargeOffset (edash_packager::media::mp4)   MpdNotifierFactory (edash_packager)   SegmentReference (edash_packager::media::mp4)   VTTEmptyCueBox (edash_packager::media::mp4)   
ChunkOffset (edash_packager::media::mp4)   H264BitReader (edash_packager::media)   MpdNotifyMuxerListener (edash_packager::media)   SegmentTestBase (edash_packager::media)   
  W  
+
MpdNotifier (edash_packager)   SegmentIndex (edash_packager::media::mp4)   VTTAdditionalTextBox (edash_packager::media::mp4)   
ChunkLargeOffset (edash_packager::media::mp4)   MpdNotifierFactory (edash_packager)   SegmentInfo (edash_packager)   VTTCueBox (edash_packager::media::mp4)   
ChunkOffset (edash_packager::media::mp4)   H264BitReader (edash_packager::media)   MpdNotifyMuxerListener (edash_packager::media)   SegmentReference (edash_packager::media::mp4)   VTTEmptyCueBox (edash_packager::media::mp4)   
ClosureThread (edash_packager::media)   H264ByteToUnitStreamConverter (edash_packager::media)   MpdOptions (edash_packager)   SegmentTestBase (edash_packager::media)   
  W  
ClosureThread (edash_packager::media)   H264ByteToUnitStreamConverter (edash_packager::media)   MpdOptions (edash_packager)   SegmentType (edash_packager::media::mp4)   
Cluster (edash_packager::media)   H264DecRefPicMarking (edash_packager::media)   MpdWriter (edash_packager)   SimpleMpdNotifier (edash_packager)   WebMAudioClient (edash_packager::media)   
ClusterBuilder (edash_packager::media)   H264ModificationOfPicNum (edash_packager::media)   MultiSegmentSegmenter (edash_packager::media::webm)   SingleSegmentSegmenter (edash_packager::media::mp4)   WebMClusterParser (edash_packager::media)   
SegmentTestBase::ClusterParser (edash_packager::media)   H264Parser (edash_packager::media)   MultiSegmentSegmenter (edash_packager::media::mp4)   SingleSegmentSegmenter (edash_packager::media::webm)   WebMContentEncodingsClient (edash_packager::media)   
CodecConfigurationRecord (edash_packager::media::mp4)   H264PPS (edash_packager::media)   Muxer (edash_packager::media)   SoundMediaHeader (edash_packager::media::mp4)   WebMInfoParser (edash_packager::media)   
CompactSampleSize (edash_packager::media::mp4)   H264SEIMessage (edash_packager::media)   MuxerListener (edash_packager::media)   Status (edash_packager::media)   WebMListParser (edash_packager::media)   
CompositionOffset (edash_packager::media::mp4)   H264SEIRecoveryPoint (edash_packager::media)   MuxerOptions (edash_packager::media)   StreamDescriptor (edash_packager::media)   WebMMediaParser (edash_packager::media)   
Cluster (edash_packager::media)   H264DecRefPicMarking (edash_packager::media)   MpdWriter (edash_packager)   SegmentType (edash_packager::media::mp4)   
ClusterBuilder (edash_packager::media)   H264ModificationOfPicNum (edash_packager::media)   MultiSegmentSegmenter (edash_packager::media::webm)   SimpleMpdNotifier (edash_packager)   WebMAudioClient (edash_packager::media)   
SegmentTestBase::ClusterParser (edash_packager::media)   H264Parser (edash_packager::media)   MultiSegmentSegmenter (edash_packager::media::mp4)   SingleSegmentSegmenter (edash_packager::media::mp4)   WebMClusterParser (edash_packager::media)   
CodecConfigurationRecord (edash_packager::media::mp4)   H264PPS (edash_packager::media)   Muxer (edash_packager::media)   SingleSegmentSegmenter (edash_packager::media::webm)   WebMContentEncodingsClient (edash_packager::media)   
CompactSampleSize (edash_packager::media::mp4)   H264SEIMessage (edash_packager::media)   MuxerListener (edash_packager::media)   SoundMediaHeader (edash_packager::media::mp4)   WebMInfoParser (edash_packager::media)   
CompositionOffset (edash_packager::media::mp4)   H264SEIRecoveryPoint (edash_packager::media)   MuxerOptions (edash_packager::media)   Status (edash_packager::media)   WebMListParser (edash_packager::media)   
CompositionOffsetIterator (edash_packager::media::mp4)   H264SliceHeader (edash_packager::media)   
  N  
-
StreamDescriptorCompareFn (edash_packager::media)   WebMMuxer (edash_packager::media::webm)   
CompositionTimeToSample (edash_packager::media::mp4)   H264SPS (edash_packager::media)   StreamInfo (edash_packager::media)   WebMParserClient (edash_packager::media)   
ContentEncoding (edash_packager::media)   H264VideoSliceHeaderParser (edash_packager::media::mp4)   Nalu (edash_packager::media)   SubsampleEntry (edash_packager::media)   WebMTracksParser (edash_packager::media)   
ContentProtectionElement (edash_packager)   H264WeightingFactors (edash_packager::media)   NaluReader (edash_packager::media)   SubtitleMediaHeader (edash_packager::media::mp4)   WebMVideoClient (edash_packager::media)   
StreamDescriptor (edash_packager::media)   WebMMediaParser (edash_packager::media)   
CompositionTimeToSample (edash_packager::media::mp4)   H264SPS (edash_packager::media)   StreamDescriptorCompareFn (edash_packager::media)   WebMMuxer (edash_packager::media::webm)   
ContentEncoding (edash_packager::media)   H264VideoSliceHeaderParser (edash_packager::media::mp4)   Nalu (edash_packager::media)   StreamInfo (edash_packager::media)   WebMParserClient (edash_packager::media)   
ContentProtectionElement (edash_packager)   H264WeightingFactors (edash_packager::media)   NaluReader (edash_packager::media)   SubsampleEntry (edash_packager::media)   WebMTracksParser (edash_packager::media)   
Cue (edash_packager::media)   HandlerReference (edash_packager::media::mp4)   
  O  
-
SyncSample (edash_packager::media::mp4)   WebMWebVTTParser (edash_packager::media)   
CueIDBox (edash_packager::media::mp4)   HEVCDecoderConfiguration (edash_packager::media)   SyncSampleIterator (edash_packager::media::mp4)   WebVTTConfigurationBox (edash_packager::media::mp4)   
CuePayloadBox (edash_packager::media::mp4)   HttpKeyFetcher (edash_packager::media)   OffsetByteQueue (edash_packager::media)   
  T  
-
WebVttMediaParser (edash_packager::media)   
SubtitleMediaHeader (edash_packager::media::mp4)   WebMVideoClient (edash_packager::media)   
CueIDBox (edash_packager::media::mp4)   HEVCDecoderConfiguration (edash_packager::media)   SyncSample (edash_packager::media::mp4)   WebMWebVTTParser (edash_packager::media)   
CuePayloadBox (edash_packager::media::mp4)   HttpKeyFetcher (edash_packager::media)   OffsetByteQueue (edash_packager::media)   SyncSampleIterator (edash_packager::media::mp4)   WebVTTConfigurationBox (edash_packager::media::mp4)   
CueSettingsBox (edash_packager::media::mp4)   
  I  
-
OnMediaEndParameters (edash_packager::media)   WebVTTSourceLabelBox (edash_packager::media::mp4)   
CueSourceIDBox (edash_packager::media::mp4)   OriginalFormat (edash_packager::media::mp4)   TextSampleEntry (edash_packager::media::mp4)   WidevineKeySource (edash_packager::media)   
OnMediaEndParameters (edash_packager::media)   
  T  
+
WebVttMediaParser (edash_packager::media)   
CueSourceIDBox (edash_packager::media::mp4)   OriginalFormat (edash_packager::media::mp4)   WebVTTSourceLabelBox (edash_packager::media::mp4)   
CueTimeBox (edash_packager::media::mp4)   ID3v2 (edash_packager::media::mp4)   
  P  
-
TextStreamInfo (edash_packager::media)   WvmMediaParser (edash_packager::media::wvm)   
TextSampleEntry (edash_packager::media::mp4)   WidevineKeySource (edash_packager::media)   
  D  
-
IoCache (edash_packager::media)   TextTrack (edash_packager::media)   
  X  
-
IoCache (edash_packager::media)   TextStreamInfo (edash_packager::media)   WvmMediaParser (edash_packager::media::wvm)   
  K  
-
PixelAspectRatio (edash_packager::media::mp4)   TextTrackConfig (edash_packager::media)   
DashIopMpdNotifier (edash_packager)   PrevSampleData (edash_packager::media::wvm)   ThreadedIoFile (edash_packager::media)   XmlDeleter (edash_packager::xml)   
DataEntryUrl (edash_packager::media::mp4)   KeyFetcher (edash_packager::media)   PrivFrame (edash_packager::media::mp4)   Track (edash_packager::media::mp4)   XmlNode (edash_packager::xml)   
DataInformation (edash_packager::media::mp4)   KeyRotationFragmenter (edash_packager::media::mp4)   ProducerConsumerQueue (edash_packager::media)   TrackEncryption (edash_packager::media::mp4)   
DataReference (edash_packager::media::mp4)   KeySource (edash_packager::media)   ProgressListener (edash_packager::media)   TrackExtends (edash_packager::media::mp4)   
PixelAspectRatio (edash_packager::media::mp4)   TextTrack (edash_packager::media)   
  X  
+
DashIopMpdNotifier (edash_packager)   PrevSampleData (edash_packager::media::wvm)   TextTrackConfig (edash_packager::media)   
DataEntryUrl (edash_packager::media::mp4)   KeyFetcher (edash_packager::media)   PrivFrame (edash_packager::media::mp4)   ThreadedIoFile (edash_packager::media)   XmlDeleter (edash_packager::xml)   
DataInformation (edash_packager::media::mp4)   KeyRotationFragmenter (edash_packager::media::mp4)   ProducerConsumerQueue (edash_packager::media)   Track (edash_packager::media::mp4)   XmlNode (edash_packager::xml)   
DataReference (edash_packager::media::mp4)   KeySource (edash_packager::media)   ProgressListener (edash_packager::media)   TrackEncryption (edash_packager::media::mp4)   
A | B | C | D | E | F | H | I | K | L | M | N | O | P | R | S | T | U | V | W | X
diff --git a/docs/d0/d03/classedash__packager_1_1media_1_1webm_1_1SingleSegmentSegmenter.html b/docs/d0/d03/classedash__packager_1_1media_1_1webm_1_1SingleSegmentSegmenter.html index 0d1d30aa3c..8c28c707ff 100644 --- a/docs/d0/d03/classedash__packager_1_1media_1_1webm_1_1SingleSegmentSegmenter.html +++ b/docs/d0/d03/classedash__packager_1_1media_1_1webm_1_1SingleSegmentSegmenter.html @@ -290,7 +290,7 @@ double cluster_length_sec< diff --git a/docs/d0/d06/mpd__flags_8cc_source.html b/docs/d0/d06/mpd__flags_8cc_source.html index 70a7077c65..0194c9ef88 100644 --- a/docs/d0/d06/mpd__flags_8cc_source.html +++ b/docs/d0/d06/mpd__flags_8cc_source.html @@ -148,7 +148,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d08/structedash__packager_1_1media_1_1mp4_1_1CodecConfigurationRecord-members.html b/docs/d0/d08/structedash__packager_1_1media_1_1mp4_1_1CodecConfigurationRecord-members.html index 4a267f5690..ee5b3ec05e 100644 --- a/docs/d0/d08/structedash__packager_1_1media_1_1mp4_1_1CodecConfigurationRecord-members.html +++ b/docs/d0/d08/structedash__packager_1_1media_1_1mp4_1_1CodecConfigurationRecord-members.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d0e/muxer__options_8h_source.html b/docs/d0/d0e/muxer__options_8h_source.html index 8fe8546112..35fff7bbff 100644 --- a/docs/d0/d0e/muxer__options_8h_source.html +++ b/docs/d0/d0e/muxer__options_8h_source.html @@ -149,7 +149,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d0e/structedash__packager_1_1media_1_1StreamDescriptor-members.html b/docs/d0/d0e/structedash__packager_1_1media_1_1StreamDescriptor-members.html index 21d60099c1..d4352cd245 100644 --- a/docs/d0/d0e/structedash__packager_1_1media_1_1StreamDescriptor-members.html +++ b/docs/d0/d0e/structedash__packager_1_1media_1_1StreamDescriptor-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d1a/structedash__packager_1_1media_1_1mp4_1_1ChunkOffset-members.html b/docs/d0/d1a/structedash__packager_1_1media_1_1mp4_1_1ChunkOffset-members.html index 3c142af606..37e5e162a4 100644 --- a/docs/d0/d1a/structedash__packager_1_1media_1_1mp4_1_1ChunkOffset-members.html +++ b/docs/d0/d1a/structedash__packager_1_1media_1_1mp4_1_1ChunkOffset-members.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d24/structedash__packager_1_1media_1_1H264DecRefPicMarking-members.html b/docs/d0/d24/structedash__packager_1_1media_1_1H264DecRefPicMarking-members.html index 45efd761dd..8464582f6e 100644 --- a/docs/d0/d24/structedash__packager_1_1media_1_1H264DecRefPicMarking-members.html +++ b/docs/d0/d24/structedash__packager_1_1media_1_1H264DecRefPicMarking-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d28/classedash__packager_1_1media_1_1mp4_1_1MultiSegmentSegmenter-members.html b/docs/d0/d28/classedash__packager_1_1media_1_1mp4_1_1MultiSegmentSegmenter-members.html index b592a1b3b7..8a8227db3c 100644 --- a/docs/d0/d28/classedash__packager_1_1media_1_1mp4_1_1MultiSegmentSegmenter-members.html +++ b/docs/d0/d28/classedash__packager_1_1media_1_1mp4_1_1MultiSegmentSegmenter-members.html @@ -118,7 +118,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d30/mock__mpd__notifier_8h_source.html b/docs/d0/d30/mock__mpd__notifier_8h_source.html index 1f8d419103..4a20109220 100644 --- a/docs/d0/d30/mock__mpd__notifier_8h_source.html +++ b/docs/d0/d30/mock__mpd__notifier_8h_source.html @@ -148,7 +148,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d32/mp2t__common_8h_source.html b/docs/d0/d32/mp2t__common_8h_source.html index 7429f605a9..6fcb793dbf 100644 --- a/docs/d0/d32/mp2t__common_8h_source.html +++ b/docs/d0/d32/mp2t__common_8h_source.html @@ -118,7 +118,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d35/es__descriptor_8cc_source.html b/docs/d0/d35/es__descriptor_8cc_source.html index 6156b9e5ec..5d9e9cbbbf 100644 --- a/docs/d0/d35/es__descriptor_8cc_source.html +++ b/docs/d0/d35/es__descriptor_8cc_source.html @@ -286,7 +286,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d3a/classedash__packager_1_1media_1_1SeekHead-members.html b/docs/d0/d3a/classedash__packager_1_1media_1_1SeekHead-members.html index ae7dc0d178..132fbfe2d2 100644 --- a/docs/d0/d3a/classedash__packager_1_1media_1_1SeekHead-members.html +++ b/docs/d0/d3a/classedash__packager_1_1media_1_1SeekHead-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d3a/classedash__packager_1_1xml_1_1RepresentationBaseXmlNode-members.html b/docs/d0/d3a/classedash__packager_1_1xml_1_1RepresentationBaseXmlNode-members.html index 1db2327987..92d4299b09 100644 --- a/docs/d0/d3a/classedash__packager_1_1xml_1_1RepresentationBaseXmlNode-members.html +++ b/docs/d0/d3a/classedash__packager_1_1xml_1_1RepresentationBaseXmlNode-members.html @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d3a/webm__constants_8h_source.html b/docs/d0/d3a/webm__constants_8h_source.html index 4d4f7f72b7..094c32c7ac 100644 --- a/docs/d0/d3a/webm__constants_8h_source.html +++ b/docs/d0/d3a/webm__constants_8h_source.html @@ -313,7 +313,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d42/widevine__encryption__flags_8cc_source.html b/docs/d0/d42/widevine__encryption__flags_8cc_source.html index 700ed30bb9..1591c85a0c 100644 --- a/docs/d0/d42/widevine__encryption__flags_8cc_source.html +++ b/docs/d0/d42/widevine__encryption__flags_8cc_source.html @@ -244,7 +244,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d43/structedash__packager_1_1media_1_1H264SPS-members.html b/docs/d0/d43/structedash__packager_1_1media_1_1H264SPS-members.html index 6e0877a8d3..ce48adcefa 100644 --- a/docs/d0/d43/structedash__packager_1_1media_1_1H264SPS-members.html +++ b/docs/d0/d43/structedash__packager_1_1media_1_1H264SPS-members.html @@ -142,7 +142,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d46/fourccs_8h_source.html b/docs/d0/d46/fourccs_8h_source.html index 09c5f2d7ff..f897f43015 100644 --- a/docs/d0/d46/fourccs_8h_source.html +++ b/docs/d0/d46/fourccs_8h_source.html @@ -237,7 +237,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d49/vod__media__info__dump__muxer__listener_8cc_source.html b/docs/d0/d49/vod__media__info__dump__muxer__listener_8cc_source.html index 031428108d..058c64e05d 100644 --- a/docs/d0/d49/vod__media__info__dump__muxer__listener_8cc_source.html +++ b/docs/d0/d49/vod__media__info__dump__muxer__listener_8cc_source.html @@ -234,7 +234,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d4a/structedash__packager_1_1media_1_1mp4_1_1SampleSize-members.html b/docs/d0/d4a/structedash__packager_1_1media_1_1mp4_1_1SampleSize-members.html index 5b868b2f07..d086c7d1bb 100644 --- a/docs/d0/d4a/structedash__packager_1_1media_1_1mp4_1_1SampleSize-members.html +++ b/docs/d0/d4a/structedash__packager_1_1media_1_1mp4_1_1SampleSize-members.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d4c/structedash__packager_1_1media_1_1mp4_1_1CueTimeBox-members.html b/docs/d0/d4c/structedash__packager_1_1media_1_1mp4_1_1CueTimeBox-members.html index c2ee3c3c77..ff11f37e5e 100644 --- a/docs/d0/d4c/structedash__packager_1_1media_1_1mp4_1_1CueTimeBox-members.html +++ b/docs/d0/d4c/structedash__packager_1_1media_1_1mp4_1_1CueTimeBox-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d4e/libcrypto__threading_8cc_source.html b/docs/d0/d4e/libcrypto__threading_8cc_source.html index da23d43c3e..430755759e 100644 --- a/docs/d0/d4e/libcrypto__threading_8cc_source.html +++ b/docs/d0/d4e/libcrypto__threading_8cc_source.html @@ -143,7 +143,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d5b/structedash__packager_1_1media_1_1mp4_1_1VTTAdditionalTextBox-members.html b/docs/d0/d5b/structedash__packager_1_1media_1_1mp4_1_1VTTAdditionalTextBox-members.html index c45d386d45..43782a59c3 100644 --- a/docs/d0/d5b/structedash__packager_1_1media_1_1mp4_1_1VTTAdditionalTextBox-members.html +++ b/docs/d0/d5b/structedash__packager_1_1media_1_1mp4_1_1VTTAdditionalTextBox-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d65/structedash__packager_1_1media_1_1mp4_1_1AC3Specific.html b/docs/d0/d65/structedash__packager_1_1media_1_1mp4_1_1AC3Specific.html index 6d7a71b6f8..41bc37ef8f 100644 --- a/docs/d0/d65/structedash__packager_1_1media_1_1mp4_1_1AC3Specific.html +++ b/docs/d0/d65/structedash__packager_1_1media_1_1mp4_1_1AC3Specific.html @@ -136,7 +136,7 @@ Additional Inherited Members

Detailed Description

-

Definition at line 312 of file box_definitions.h.

+

Definition at line 310 of file box_definitions.h.

Member Function Documentation

@@ -162,7 +162,7 @@ Additional Inherited Members

Implements edash_packager::media::mp4::Box.

-

Definition at line 1426 of file box_definitions.cc.

+

Definition at line 1411 of file box_definitions.cc.

@@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d0/d7d/classedash__packager_1_1media_1_1H264Parser-members.html b/docs/d0/d7d/classedash__packager_1_1media_1_1H264Parser-members.html index d80b5bef1b..5ffb213add 100644 --- a/docs/d0/d7d/classedash__packager_1_1media_1_1H264Parser-members.html +++ b/docs/d0/d7d/classedash__packager_1_1media_1_1H264Parser-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d7d/decryptor__source_8h_source.html b/docs/d0/d7d/decryptor__source_8h_source.html index e404d3c5b5..fdbf6d3ff3 100644 --- a/docs/d0/d7d/decryptor__source_8h_source.html +++ b/docs/d0/d7d/decryptor__source_8h_source.html @@ -133,7 +133,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d86/structedash__packager_1_1media_1_1EncryptionKey.html b/docs/d0/d86/structedash__packager_1_1media_1_1EncryptionKey.html index 1d0d0361a6..b649f7f5bd 100644 --- a/docs/d0/d86/structedash__packager_1_1media_1_1EncryptionKey.html +++ b/docs/d0/d86/structedash__packager_1_1media_1_1EncryptionKey.html @@ -119,7 +119,7 @@ std::vector< uint8_t >  diff --git a/docs/d0/d92/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentDecodeTime.html b/docs/d0/d92/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentDecodeTime.html index 310c19c63a..0f00d4ac5c 100644 --- a/docs/d0/d92/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentDecodeTime.html +++ b/docs/d0/d92/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentDecodeTime.html @@ -145,7 +145,7 @@ Additional Inherited Members

Detailed Description

-

Definition at line 581 of file box_definitions.h.

+

Definition at line 579 of file box_definitions.h.

Member Function Documentation

@@ -171,7 +171,7 @@ Additional Inherited Members

Implements edash_packager::media::mp4::Box.

-

Definition at line 1942 of file box_definitions.cc.

+

Definition at line 1927 of file box_definitions.cc.

@@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/d0/d93/structedash__packager_1_1media_1_1mp4_1_1SampleTable-members.html b/docs/d0/d93/structedash__packager_1_1media_1_1mp4_1_1SampleTable-members.html index 9796a5c84d..7e845a4742 100644 --- a/docs/d0/d93/structedash__packager_1_1media_1_1mp4_1_1SampleTable-members.html +++ b/docs/d0/d93/structedash__packager_1_1media_1_1mp4_1_1SampleTable-members.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d96/structedash__packager_1_1ContentProtectionElement.html b/docs/d0/d96/structedash__packager_1_1ContentProtectionElement.html index df5246409c..facc8dc117 100644 --- a/docs/d0/d96/structedash__packager_1_1ContentProtectionElement.html +++ b/docs/d0/d96/structedash__packager_1_1ContentProtectionElement.html @@ -123,7 +123,7 @@ std::vector< diff --git a/docs/d0/d96/structedash__packager_1_1media_1_1mp4_1_1WebVTTSourceLabelBox-members.html b/docs/d0/d96/structedash__packager_1_1media_1_1mp4_1_1WebVTTSourceLabelBox-members.html index 7d3d20950d..9dbac61655 100644 --- a/docs/d0/d96/structedash__packager_1_1media_1_1mp4_1_1WebVTTSourceLabelBox-members.html +++ b/docs/d0/d96/structedash__packager_1_1media_1_1mp4_1_1WebVTTSourceLabelBox-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/da4/classedash__packager_1_1media_1_1WebMVideoClient-members.html b/docs/d0/da4/classedash__packager_1_1media_1_1WebMVideoClient-members.html index 9f6dff4705..8b2f07bf84 100644 --- a/docs/d0/da4/classedash__packager_1_1media_1_1WebMVideoClient-members.html +++ b/docs/d0/da4/classedash__packager_1_1media_1_1WebMVideoClient-members.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/da6/stream__descriptor_8cc_source.html b/docs/d0/da6/stream__descriptor_8cc_source.html index 7cbbaa7b7f..e861551ef6 100644 --- a/docs/d0/da6/stream__descriptor_8cc_source.html +++ b/docs/d0/da6/stream__descriptor_8cc_source.html @@ -243,7 +243,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/da9/classedash__packager_1_1MockRepresentation.html b/docs/d0/da9/classedash__packager_1_1MockRepresentation.html index 721036282f..ab7f18bb33 100644 --- a/docs/d0/da9/classedash__packager_1_1MockRepresentation.html +++ b/docs/d0/da9/classedash__packager_1_1MockRepresentation.html @@ -160,7 +160,7 @@ Additional Inherited Members diff --git a/docs/d0/da9/classedash__packager_1_1media_1_1webm_1_1WebMMuxer-members.html b/docs/d0/da9/classedash__packager_1_1media_1_1webm_1_1WebMMuxer-members.html index 8aff67a783..b176a77422 100644 --- a/docs/d0/da9/classedash__packager_1_1media_1_1webm_1_1WebMMuxer-members.html +++ b/docs/d0/da9/classedash__packager_1_1media_1_1webm_1_1WebMMuxer-members.html @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/dae/classedash__packager_1_1media_1_1BufferWriter-members.html b/docs/d0/dae/classedash__packager_1_1media_1_1BufferWriter-members.html index 62c2813cc1..2ee1aaf9bd 100644 --- a/docs/d0/dae/classedash__packager_1_1media_1_1BufferWriter-members.html +++ b/docs/d0/dae/classedash__packager_1_1media_1_1BufferWriter-members.html @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/db7/structedash__packager_1_1media_1_1mp4_1_1DTSSpecific.html b/docs/d0/db7/structedash__packager_1_1media_1_1mp4_1_1DTSSpecific.html index 499daf2969..9c49ba3862 100644 --- a/docs/d0/db7/structedash__packager_1_1media_1_1mp4_1_1DTSSpecific.html +++ b/docs/d0/db7/structedash__packager_1_1media_1_1mp4_1_1DTSSpecific.html @@ -148,7 +148,7 @@ Additional Inherited Members

Detailed Description

-

Definition at line 302 of file box_definitions.h.

+

Definition at line 300 of file box_definitions.h.

Member Function Documentation

@@ -174,7 +174,7 @@ Additional Inherited Members

Implements edash_packager::media::mp4::Box.

-

Definition at line 1393 of file box_definitions.cc.

+

Definition at line 1378 of file box_definitions.cc.

@@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/d0/dd1/classedash__packager_1_1SimpleMpdNotifier-members.html b/docs/d0/dd1/classedash__packager_1_1SimpleMpdNotifier-members.html index 2ce3c52492..90c67dbdc8 100644 --- a/docs/d0/dd1/classedash__packager_1_1SimpleMpdNotifier-members.html +++ b/docs/d0/dd1/classedash__packager_1_1SimpleMpdNotifier-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/dd4/structedash__packager_1_1media_1_1SubsampleEntry-members.html b/docs/d0/dd4/structedash__packager_1_1media_1_1SubsampleEntry-members.html index 27e14c0870..989de453cd 100644 --- a/docs/d0/dd4/structedash__packager_1_1media_1_1SubsampleEntry-members.html +++ b/docs/d0/dd4/structedash__packager_1_1media_1_1SubsampleEntry-members.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/dd6/webm__crypto__helpers_8cc_source.html b/docs/d0/dd6/webm__crypto__helpers_8cc_source.html index 96c3e4ddf2..6c298b849e 100644 --- a/docs/d0/dd6/webm__crypto__helpers_8cc_source.html +++ b/docs/d0/dd6/webm__crypto__helpers_8cc_source.html @@ -157,7 +157,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/ddc/structedash__packager_1_1media_1_1FileCloser.html b/docs/d0/ddc/structedash__packager_1_1media_1_1FileCloser.html index 020b3f3f6f..7d39ece4d9 100644 --- a/docs/d0/ddc/structedash__packager_1_1media_1_1FileCloser.html +++ b/docs/d0/ddc/structedash__packager_1_1media_1_1FileCloser.html @@ -112,7 +112,7 @@ void operator() ( diff --git a/docs/d0/de0/structedash__packager_1_1media_1_1mp4_1_1VideoSampleEntry-members.html b/docs/d0/de0/structedash__packager_1_1media_1_1mp4_1_1VideoSampleEntry-members.html index 349ed1ccc8..79f2663420 100644 --- a/docs/d0/de0/structedash__packager_1_1media_1_1mp4_1_1VideoSampleEntry-members.html +++ b/docs/d0/de0/structedash__packager_1_1media_1_1mp4_1_1VideoSampleEntry-members.html @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/de4/structedash__packager_1_1media_1_1mp4_1_1MovieFragmentHeader-members.html b/docs/d0/de4/structedash__packager_1_1media_1_1mp4_1_1MovieFragmentHeader-members.html index e37ee9c76d..cf257b1b9f 100644 --- a/docs/d0/de4/structedash__packager_1_1media_1_1mp4_1_1MovieFragmentHeader-members.html +++ b/docs/d0/de4/structedash__packager_1_1media_1_1mp4_1_1MovieFragmentHeader-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/de6/classedash__packager_1_1media_1_1TracksBuilder.html b/docs/d0/de6/classedash__packager_1_1media_1_1TracksBuilder.html index 3ff96f6c7c..55310c54f9 100644 --- a/docs/d0/de6/classedash__packager_1_1media_1_1TracksBuilder.html +++ b/docs/d0/de6/classedash__packager_1_1media_1_1TracksBuilder.html @@ -123,7 +123,7 @@ std::vector< uint8_t >  diff --git a/docs/d0/de8/structedash__packager_1_1media_1_1mp4_1_1VTTCueBox-members.html b/docs/d0/de8/structedash__packager_1_1media_1_1mp4_1_1VTTCueBox-members.html index 258122ba14..ab10098abb 100644 --- a/docs/d0/de8/structedash__packager_1_1media_1_1mp4_1_1VTTCueBox-members.html +++ b/docs/d0/de8/structedash__packager_1_1media_1_1mp4_1_1VTTCueBox-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/dea/structedash__packager_1_1media_1_1mp4_1_1ProtectionSystemSpecificHeader-members.html b/docs/d0/dea/structedash__packager_1_1media_1_1mp4_1_1ProtectionSystemSpecificHeader-members.html index 9f97d64a32..5b67ea8844 100644 --- a/docs/d0/dea/structedash__packager_1_1media_1_1mp4_1_1ProtectionSystemSpecificHeader-members.html +++ b/docs/d0/dea/structedash__packager_1_1media_1_1mp4_1_1ProtectionSystemSpecificHeader-members.html @@ -97,15 +97,13 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); box_size()edash_packager::media::mp4::Boxinline BoxType() const overrideedash_packager::media::mp4::ProtectionSystemSpecificHeadervirtual ComputeSize()edash_packager::media::mp4::Box - data (defined in edash_packager::media::mp4::ProtectionSystemSpecificHeader)edash_packager::media::mp4::ProtectionSystemSpecificHeader - flags (defined in edash_packager::media::mp4::FullBox)edash_packager::media::mp4::FullBox - FullBox() (defined in edash_packager::media::mp4::FullBox)edash_packager::media::mp4::FullBox - HeaderSize() const finaledash_packager::media::mp4::FullBoxvirtual - Parse(BoxReader *reader)edash_packager::media::mp4::Box - ProtectionSystemSpecificHeader() (defined in edash_packager::media::mp4::ProtectionSystemSpecificHeader)edash_packager::media::mp4::ProtectionSystemSpecificHeader - raw_box (defined in edash_packager::media::mp4::ProtectionSystemSpecificHeader)edash_packager::media::mp4::ProtectionSystemSpecificHeader - ReadWriteHeaderInternal(BoxBuffer *buffer) finaledash_packager::media::mp4::FullBoxprotectedvirtual - system_id (defined in edash_packager::media::mp4::ProtectionSystemSpecificHeader)edash_packager::media::mp4::ProtectionSystemSpecificHeader + flags (defined in edash_packager::media::mp4::FullBox)edash_packager::media::mp4::FullBox + FullBox() (defined in edash_packager::media::mp4::FullBox)edash_packager::media::mp4::FullBox + HeaderSize() const finaledash_packager::media::mp4::FullBoxvirtual + Parse(BoxReader *reader)edash_packager::media::mp4::Box + ProtectionSystemSpecificHeader() (defined in edash_packager::media::mp4::ProtectionSystemSpecificHeader)edash_packager::media::mp4::ProtectionSystemSpecificHeader + raw_box (defined in edash_packager::media::mp4::ProtectionSystemSpecificHeader)edash_packager::media::mp4::ProtectionSystemSpecificHeader + ReadWriteHeaderInternal(BoxBuffer *buffer) finaledash_packager::media::mp4::FullBoxprotectedvirtual version (defined in edash_packager::media::mp4::FullBox)edash_packager::media::mp4::FullBox Write(BufferWriter *writer)edash_packager::media::mp4::Box WriteHeader(BufferWriter *writer)edash_packager::media::mp4::Box @@ -115,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/dee/segmenter__test__base_8h_source.html b/docs/d0/dee/segmenter__test__base_8h_source.html index ff01479a0d..c924208890 100644 --- a/docs/d0/dee/segmenter__test__base_8h_source.html +++ b/docs/d0/dee/segmenter__test__base_8h_source.html @@ -215,7 +215,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/df3/packager__util_8cc_source.html b/docs/d0/df3/packager__util_8cc_source.html index b0f11dfc5a..c8e8aed391 100644 --- a/docs/d0/df3/packager__util_8cc_source.html +++ b/docs/d0/df3/packager__util_8cc_source.html @@ -329,7 +329,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/df6/structedash__packager_1_1media_1_1mp4_1_1MovieExtends-members.html b/docs/d0/df6/structedash__packager_1_1media_1_1mp4_1_1MovieExtends-members.html index 58e9559985..d032436e5e 100644 --- a/docs/d0/df6/structedash__packager_1_1media_1_1mp4_1_1MovieExtends-members.html +++ b/docs/d0/df6/structedash__packager_1_1media_1_1mp4_1_1MovieExtends-members.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/dfa/structedash__packager_1_1media_1_1wvm_1_1DemuxStreamIdMediaSample.html b/docs/d0/dfa/structedash__packager_1_1media_1_1wvm_1_1DemuxStreamIdMediaSample.html index cdcc09b83e..cbef91ce27 100644 --- a/docs/d0/dfa/structedash__packager_1_1media_1_1wvm_1_1DemuxStreamIdMediaSample.html +++ b/docs/d0/dfa/structedash__packager_1_1media_1_1wvm_1_1DemuxStreamIdMediaSample.html @@ -116,7 +116,7 @@ scoped_refptr< diff --git a/docs/d1/d02/classedash__packager_1_1media_1_1mp4_1_1BoxBuffer-members.html b/docs/d1/d02/classedash__packager_1_1media_1_1mp4_1_1BoxBuffer-members.html index 8888af9c91..79cdafca1d 100644 --- a/docs/d1/d02/classedash__packager_1_1media_1_1mp4_1_1BoxBuffer-members.html +++ b/docs/d1/d02/classedash__packager_1_1media_1_1mp4_1_1BoxBuffer-members.html @@ -121,7 +121,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d13/status_8h_source.html b/docs/d1/d13/status_8h_source.html index e0772a9214..d8dddb4bf9 100644 --- a/docs/d1/d13/status_8h_source.html +++ b/docs/d1/d13/status_8h_source.html @@ -239,7 +239,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d16/structedash__packager_1_1xml_1_1XmlDeleter-members.html b/docs/d1/d16/structedash__packager_1_1xml_1_1XmlDeleter-members.html index a0c354401f..1d1e956fff 100644 --- a/docs/d1/d16/structedash__packager_1_1xml_1_1XmlDeleter-members.html +++ b/docs/d1/d16/structedash__packager_1_1xml_1_1XmlDeleter-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d1c/two__pass__single__segment__segmenter_8cc_source.html b/docs/d1/d1c/two__pass__single__segment__segmenter_8cc_source.html index 42b3f91888..1487753224 100644 --- a/docs/d1/d1c/two__pass__single__segment__segmenter_8cc_source.html +++ b/docs/d1/d1c/two__pass__single__segment__segmenter_8cc_source.html @@ -275,7 +275,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d1d/muxer__flags_8cc_source.html b/docs/d1/d1d/muxer__flags_8cc_source.html index a7c64ce0e1..b1bfe4912b 100644 --- a/docs/d1/d1d/muxer__flags_8cc_source.html +++ b/docs/d1/d1d/muxer__flags_8cc_source.html @@ -143,7 +143,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d27/key__fetcher_8h_source.html b/docs/d1/d27/key__fetcher_8h_source.html index 0a3be600cf..fd12ed3b3a 100644 --- a/docs/d1/d27/key__fetcher_8h_source.html +++ b/docs/d1/d27/key__fetcher_8h_source.html @@ -126,7 +126,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d28/classedash__packager_1_1media_1_1WebMTracksParser-members.html b/docs/d1/d28/classedash__packager_1_1media_1_1WebMTracksParser-members.html index afb535176e..7be825a82c 100644 --- a/docs/d1/d28/classedash__packager_1_1media_1_1WebMTracksParser-members.html +++ b/docs/d1/d28/classedash__packager_1_1media_1_1WebMTracksParser-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d28/classedash__packager_1_1media_1_1mp4_1_1SyncSampleIterator-members.html b/docs/d1/d28/classedash__packager_1_1media_1_1mp4_1_1SyncSampleIterator-members.html index 0791aca4f5..e15eb7f079 100644 --- a/docs/d1/d28/classedash__packager_1_1media_1_1mp4_1_1SyncSampleIterator-members.html +++ b/docs/d1/d28/classedash__packager_1_1media_1_1mp4_1_1SyncSampleIterator-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d2a/decryptor__source_8cc_source.html b/docs/d1/d2a/decryptor__source_8cc_source.html index c641edb097..6735eda0cc 100644 --- a/docs/d1/d2a/decryptor__source_8cc_source.html +++ b/docs/d1/d2a/decryptor__source_8cc_source.html @@ -176,7 +176,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d2a/structedash__packager_1_1media_1_1mp4_1_1TrackExtends-members.html b/docs/d1/d2a/structedash__packager_1_1media_1_1mp4_1_1TrackExtends-members.html index bdb9db4143..34773c533d 100644 --- a/docs/d1/d2a/structedash__packager_1_1media_1_1mp4_1_1TrackExtends-members.html +++ b/docs/d1/d2a/structedash__packager_1_1media_1_1mp4_1_1TrackExtends-members.html @@ -117,7 +117,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d2f/webvtt__media__parser_8cc_source.html b/docs/d1/d2f/webvtt__media__parser_8cc_source.html index a0613a529a..5f018c4229 100644 --- a/docs/d1/d2f/webvtt__media__parser_8cc_source.html +++ b/docs/d1/d2f/webvtt__media__parser_8cc_source.html @@ -491,7 +491,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d31/structedash__packager_1_1media_1_1mp4_1_1CodecConfigurationRecord.html b/docs/d1/d31/structedash__packager_1_1media_1_1mp4_1_1CodecConfigurationRecord.html index be1c24a5f0..4cbecf1698 100644 --- a/docs/d1/d31/structedash__packager_1_1media_1_1mp4_1_1CodecConfigurationRecord.html +++ b/docs/d1/d31/structedash__packager_1_1media_1_1mp4_1_1CodecConfigurationRecord.html @@ -139,7 +139,7 @@ Additional Inherited Members

Detailed Description

-

Definition at line 262 of file box_definitions.h.

+

Definition at line 260 of file box_definitions.h.

Member Function Documentation

@@ -165,7 +165,7 @@ Additional Inherited Members

Implements edash_packager::media::mp4::Box.

-

Definition at line 1206 of file box_definitions.cc.

+

Definition at line 1191 of file box_definitions.cc.

@@ -176,7 +176,7 @@ Additional Inherited Members diff --git a/docs/d1/d37/es__parser__h264_8h_source.html b/docs/d1/d37/es__parser__h264_8h_source.html index 70c4a3b512..bfb618c4da 100644 --- a/docs/d1/d37/es__parser__h264_8h_source.html +++ b/docs/d1/d37/es__parser__h264_8h_source.html @@ -200,7 +200,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d38/classedash__packager_1_1MockRepresentation-members.html b/docs/d1/d38/classedash__packager_1_1MockRepresentation-members.html index 515240ffe1..896e6333b9 100644 --- a/docs/d1/d38/classedash__packager_1_1MockRepresentation-members.html +++ b/docs/d1/d38/classedash__packager_1_1MockRepresentation-members.html @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d3b/mpd__generator__flags_8h_source.html b/docs/d1/d3b/mpd__generator__flags_8h_source.html index 3acf52a87d..16a5439e24 100644 --- a/docs/d1/d3b/mpd__generator__flags_8h_source.html +++ b/docs/d1/d3b/mpd__generator__flags_8h_source.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d45/decoding__time__iterator_8cc_source.html b/docs/d1/d45/decoding__time__iterator_8cc_source.html index f991bed95b..43e9090c47 100644 --- a/docs/d1/d45/decoding__time__iterator_8cc_source.html +++ b/docs/d1/d45/decoding__time__iterator_8cc_source.html @@ -163,12 +163,12 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
bool IsValid() const
bool AdvanceSample()
uint32_t NumSamples() const
-
+
uint64_t Duration(uint32_t start_sample, uint32_t end_sample) const
diff --git a/docs/d1/d48/text__track__config_8h_source.html b/docs/d1/d48/text__track__config_8h_source.html index f62fe4363a..97a78c3c7a 100644 --- a/docs/d1/d48/text__track__config_8h_source.html +++ b/docs/d1/d48/text__track__config_8h_source.html @@ -139,7 +139,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d4b/classedash__packager_1_1media_1_1mp2t_1_1TsPacket.html b/docs/d1/d4b/classedash__packager_1_1media_1_1mp2t_1_1TsPacket.html index c35e32d8b7..10eb515b5d 100644 --- a/docs/d1/d4b/classedash__packager_1_1media_1_1mp2t_1_1TsPacket.html +++ b/docs/d1/d4b/classedash__packager_1_1media_1_1mp2t_1_1TsPacket.html @@ -145,7 +145,7 @@ static const int kPacketSi diff --git a/docs/d1/d4d/h264__bit__reader_8cc_source.html b/docs/d1/d4d/h264__bit__reader_8cc_source.html index 25789152bc..adaeb1b0b3 100644 --- a/docs/d1/d4d/h264__bit__reader_8cc_source.html +++ b/docs/d1/d4d/h264__bit__reader_8cc_source.html @@ -247,7 +247,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d5d/structedash__packager_1_1MpdOptions.html b/docs/d1/d5d/structedash__packager_1_1MpdOptions.html index 6723b49de0..d1370637bf 100644 --- a/docs/d1/d5d/structedash__packager_1_1MpdOptions.html +++ b/docs/d1/d5d/structedash__packager_1_1MpdOptions.html @@ -130,7 +130,7 @@ std::string packager_versi diff --git a/docs/d1/d65/structedash__packager_1_1media_1_1mp4_1_1SampleToGroup.html b/docs/d1/d65/structedash__packager_1_1media_1_1mp4_1_1SampleToGroup.html index 7b96a3f735..70632a7cca 100644 --- a/docs/d1/d65/structedash__packager_1_1media_1_1mp4_1_1SampleToGroup.html +++ b/docs/d1/d65/structedash__packager_1_1media_1_1mp4_1_1SampleToGroup.html @@ -151,7 +151,7 @@ Additional Inherited Members

Detailed Description

-

Definition at line 653 of file box_definitions.h.

+

Definition at line 651 of file box_definitions.h.

Member Function Documentation

@@ -177,7 +177,7 @@ Additional Inherited Members

Implements edash_packager::media::mp4::Box.

-

Definition at line 2153 of file box_definitions.cc.

+

Definition at line 2138 of file box_definitions.cc.

@@ -188,7 +188,7 @@ Additional Inherited Members diff --git a/docs/d1/d70/vp8__parser_8cc_source.html b/docs/d1/d70/vp8__parser_8cc_source.html index 5db46ade0b..82e3a06f0e 100644 --- a/docs/d1/d70/vp8__parser_8cc_source.html +++ b/docs/d1/d70/vp8__parser_8cc_source.html @@ -293,7 +293,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d72/language__utils_8cc_source.html b/docs/d1/d72/language__utils_8cc_source.html index eea92d81da..8d6f814110 100644 --- a/docs/d1/d72/language__utils_8cc_source.html +++ b/docs/d1/d72/language__utils_8cc_source.html @@ -206,7 +206,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d72/structedash__packager_1_1media_1_1mp4_1_1AudioSampleEntry-members.html b/docs/d1/d72/structedash__packager_1_1media_1_1mp4_1_1AudioSampleEntry-members.html index febb2becbb..15d4a4f7fd 100644 --- a/docs/d1/d72/structedash__packager_1_1media_1_1mp4_1_1AudioSampleEntry-members.html +++ b/docs/d1/d72/structedash__packager_1_1media_1_1mp4_1_1AudioSampleEntry-members.html @@ -119,7 +119,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d72/structedash__packager_1_1media_1_1mp4_1_1PixelAspectRatio-members.html b/docs/d1/d72/structedash__packager_1_1media_1_1mp4_1_1PixelAspectRatio-members.html index 721e81dfc6..dd511ec936 100644 --- a/docs/d1/d72/structedash__packager_1_1media_1_1mp4_1_1PixelAspectRatio-members.html +++ b/docs/d1/d72/structedash__packager_1_1media_1_1mp4_1_1PixelAspectRatio-members.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d74/mp2t__media__parser_8cc_source.html b/docs/d1/d74/mp2t__media__parser_8cc_source.html index 48b9510ad9..148480f0d2 100644 --- a/docs/d1/d74/mp2t__media__parser_8cc_source.html +++ b/docs/d1/d74/mp2t__media__parser_8cc_source.html @@ -529,7 +529,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d76/structedash__packager_1_1media_1_1mp4_1_1SampleToChunk-members.html b/docs/d1/d76/structedash__packager_1_1media_1_1mp4_1_1SampleToChunk-members.html index c086c00ed9..95ef6f6f12 100644 --- a/docs/d1/d76/structedash__packager_1_1media_1_1mp4_1_1SampleToChunk-members.html +++ b/docs/d1/d76/structedash__packager_1_1media_1_1mp4_1_1SampleToChunk-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d78/classedash__packager_1_1media_1_1mp4_1_1MP4Muxer.html b/docs/d1/d78/classedash__packager_1_1media_1_1mp4_1_1MP4Muxer.html index 2a46333937..ca946d71c9 100644 --- a/docs/d1/d78/classedash__packager_1_1media_1_1mp4_1_1MP4Muxer.html +++ b/docs/d1/d78/classedash__packager_1_1media_1_1mp4_1_1MP4Muxer.html @@ -168,7 +168,7 @@ base::Clock * clock ()

Detailed Description

Implements MP4 Muxer for ISO-BMFF. Please refer to ISO/IEC 14496-12: ISO base media file format for details.

-

Definition at line 32 of file mp4_muxer.h.

+

Definition at line 31 of file mp4_muxer.h.


The documentation for this class was generated from the following files:
  • media/formats/mp4/mp4_muxer.h
  • media/formats/mp4/mp4_muxer.cc
  • @@ -176,7 +176,7 @@ base::Clock * clock () diff --git a/docs/d1/d7d/webm__video__client_8cc_source.html b/docs/d1/d7d/webm__video__client_8cc_source.html index 36ed065ce4..5e93753ab2 100644 --- a/docs/d1/d7d/webm__video__client_8cc_source.html +++ b/docs/d1/d7d/webm__video__client_8cc_source.html @@ -266,7 +266,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d7f/classedash__packager_1_1media_1_1BitReader-members.html b/docs/d1/d7f/classedash__packager_1_1media_1_1BitReader-members.html index 62be3b0b25..31425b95e2 100644 --- a/docs/d1/d7f/classedash__packager_1_1media_1_1BitReader-members.html +++ b/docs/d1/d7f/classedash__packager_1_1media_1_1BitReader-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d81/structedash__packager_1_1media_1_1mp4_1_1SegmentIndex.html b/docs/d1/d81/structedash__packager_1_1media_1_1mp4_1_1SegmentIndex.html index b54ee93f87..26e5143470 100644 --- a/docs/d1/d81/structedash__packager_1_1media_1_1mp4_1_1SegmentIndex.html +++ b/docs/d1/d81/structedash__packager_1_1media_1_1mp4_1_1SegmentIndex.html @@ -157,7 +157,7 @@ Additional Inherited Members

    Detailed Description

    -

    Definition at line 721 of file box_definitions.h.

    +

    Definition at line 719 of file box_definitions.h.

    Member Function Documentation

    @@ -183,7 +183,7 @@ Additional Inherited Members

    Implements edash_packager::media::mp4::Box.

    -

    Definition at line 2358 of file box_definitions.cc.

    +

    Definition at line 2343 of file box_definitions.cc.

    @@ -194,7 +194,7 @@ Additional Inherited Members diff --git a/docs/d1/d82/adts__constants_8h_source.html b/docs/d1/d82/adts__constants_8h_source.html index b7fb78e7a5..b8166c11d0 100644 --- a/docs/d1/d82/adts__constants_8h_source.html +++ b/docs/d1/d82/adts__constants_8h_source.html @@ -117,7 +117,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d86/classedash__packager_1_1media_1_1RsaPublicKey.html b/docs/d1/d86/classedash__packager_1_1media_1_1RsaPublicKey.html index 447ea3562f..4651c20f35 100644 --- a/docs/d1/d86/classedash__packager_1_1media_1_1RsaPublicKey.html +++ b/docs/d1/d86/classedash__packager_1_1media_1_1RsaPublicKey.html @@ -218,7 +218,7 @@ Static Public Member Functions diff --git a/docs/d1/d86/structedash__packager_1_1media_1_1mp4_1_1SubtitleMediaHeader.html b/docs/d1/d86/structedash__packager_1_1media_1_1mp4_1_1SubtitleMediaHeader.html index 6a9332a9e5..8fa2676d70 100644 --- a/docs/d1/d86/structedash__packager_1_1media_1_1mp4_1_1SubtitleMediaHeader.html +++ b/docs/d1/d86/structedash__packager_1_1media_1_1mp4_1_1SubtitleMediaHeader.html @@ -138,7 +138,7 @@ uint32_t flags

    Detailed Description

    -

    Definition at line 497 of file box_definitions.h.

    +

    Definition at line 495 of file box_definitions.h.

    Member Function Documentation

    @@ -164,7 +164,7 @@ uint32_t flagsImplements edash_packager::media::mp4::Box.

    -

    Definition at line 1665 of file box_definitions.cc.

    +

    Definition at line 1650 of file box_definitions.cc.

    @@ -175,7 +175,7 @@ uint32_t flags diff --git a/docs/d1/d8e/structedash__packager_1_1media_1_1mp4_1_1CompositionTimeToSample-members.html b/docs/d1/d8e/structedash__packager_1_1media_1_1mp4_1_1CompositionTimeToSample-members.html index 12539c0d2b..bf3598b42a 100644 --- a/docs/d1/d8e/structedash__packager_1_1media_1_1mp4_1_1CompositionTimeToSample-members.html +++ b/docs/d1/d8e/structedash__packager_1_1media_1_1mp4_1_1CompositionTimeToSample-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d8e/webm__audio__client_8cc_source.html b/docs/d1/d8e/webm__audio__client_8cc_source.html index 7c0e9c62ad..183adbbac7 100644 --- a/docs/d1/d8e/webm__audio__client_8cc_source.html +++ b/docs/d1/d8e/webm__audio__client_8cc_source.html @@ -211,7 +211,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d92/classedash__packager_1_1media_1_1OffsetByteQueue.html b/docs/d1/d92/classedash__packager_1_1media_1_1OffsetByteQueue.html index 4cef495cb8..0b84590040 100644 --- a/docs/d1/d92/classedash__packager_1_1media_1_1OffsetByteQueue.html +++ b/docs/d1/d92/classedash__packager_1_1media_1_1OffsetByteQueue.html @@ -242,7 +242,7 @@ false if max_offset > diff --git a/docs/d1/d9d/tracks__builder_8h_source.html b/docs/d1/d9d/tracks__builder_8h_source.html index ca9735d753..5a04db46c6 100644 --- a/docs/d1/d9d/tracks__builder_8h_source.html +++ b/docs/d1/d9d/tracks__builder_8h_source.html @@ -210,7 +210,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/dc3/classedash__packager_1_1media_1_1LocalFile-members.html b/docs/d1/dc3/classedash__packager_1_1media_1_1LocalFile-members.html index 89bdb52a5c..874e0cb042 100644 --- a/docs/d1/dc3/classedash__packager_1_1media_1_1LocalFile-members.html +++ b/docs/d1/dc3/classedash__packager_1_1media_1_1LocalFile-members.html @@ -117,7 +117,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/dcb/encrypting__fragmenter_8h_source.html b/docs/d1/dcb/encrypting__fragmenter_8h_source.html index 4d427eb97e..4788d3b64e 100644 --- a/docs/d1/dcb/encrypting__fragmenter_8h_source.html +++ b/docs/d1/dcb/encrypting__fragmenter_8h_source.html @@ -174,13 +174,13 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
    Status AddSample(scoped_refptr< MediaSample > sample) override
    void FinalizeFragment() override
    Finalize and optimize the fragment.
    - +
    virtual Status PrepareFragmentForEncryption(bool enable_encryption)
    virtual void FinalizeFragmentForEncryption()
    Finalize current fragment for encryption.
    diff --git a/docs/d1/dcd/structedash__packager_1_1media_1_1mp4_1_1FileType.html b/docs/d1/dcd/structedash__packager_1_1media_1_1mp4_1_1FileType.html index 595280f220..07d946d40d 100644 --- a/docs/d1/dcd/structedash__packager_1_1media_1_1mp4_1_1FileType.html +++ b/docs/d1/dcd/structedash__packager_1_1media_1_1mp4_1_1FileType.html @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/d1/dd0/classedash__packager_1_1media_1_1mp4_1_1VideoSliceHeaderParser.html b/docs/d1/dd0/classedash__packager_1_1media_1_1mp4_1_1VideoSliceHeaderParser.html index c0274075f1..ef82f03c01 100644 --- a/docs/d1/dd0/classedash__packager_1_1media_1_1mp4_1_1VideoSliceHeaderParser.html +++ b/docs/d1/dd0/classedash__packager_1_1media_1_1mp4_1_1VideoSliceHeaderParser.html @@ -149,7 +149,7 @@ virtual int64_t  diff --git a/docs/d1/dd0/structedash__packager_1_1media_1_1mp4_1_1SampleToGroup-members.html b/docs/d1/dd0/structedash__packager_1_1media_1_1mp4_1_1SampleToGroup-members.html index 260f7682be..9856e84b5b 100644 --- a/docs/d1/dd0/structedash__packager_1_1media_1_1mp4_1_1SampleToGroup-members.html +++ b/docs/d1/dd0/structedash__packager_1_1media_1_1mp4_1_1SampleToGroup-members.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/dd5/classedash__packager_1_1xml_1_1RepresentationBaseXmlNode.html b/docs/d1/dd5/classedash__packager_1_1xml_1_1RepresentationBaseXmlNode.html index a6833d417b..62e8b3cfe8 100644 --- a/docs/d1/dd5/classedash__packager_1_1xml_1_1RepresentationBaseXmlNode.html +++ b/docs/d1/dd5/classedash__packager_1_1xml_1_1RepresentationBaseXmlNode.html @@ -156,7 +156,7 @@ Protected Member Functions diff --git a/docs/d1/ddb/structedash__packager_1_1media_1_1mp4_1_1TextSampleEntry-members.html b/docs/d1/ddb/structedash__packager_1_1media_1_1mp4_1_1TextSampleEntry-members.html index faa4373a65..a31d82fd79 100644 --- a/docs/d1/ddb/structedash__packager_1_1media_1_1mp4_1_1TextSampleEntry-members.html +++ b/docs/d1/ddb/structedash__packager_1_1media_1_1mp4_1_1TextSampleEntry-members.html @@ -112,7 +112,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/ddc/classedash__packager_1_1media_1_1VP9Parser-members.html b/docs/d1/ddc/classedash__packager_1_1media_1_1VP9Parser-members.html index 85321d173b..51ce5de793 100644 --- a/docs/d1/ddc/classedash__packager_1_1media_1_1VP9Parser-members.html +++ b/docs/d1/ddc/classedash__packager_1_1media_1_1VP9Parser-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/de2/composition__offset__iterator_8cc_source.html b/docs/d1/de2/composition__offset__iterator_8cc_source.html index ac6554f920..4efede4f11 100644 --- a/docs/d1/de2/composition__offset__iterator_8cc_source.html +++ b/docs/d1/de2/composition__offset__iterator_8cc_source.html @@ -153,13 +153,13 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
    CompositionOffsetIterator(const CompositionTimeToSample &composition_time_to_sample)
    Create CompositionOffsetIterator from composition time to sample box.
    - + diff --git a/docs/d1/df0/aes__encryptor_8h_source.html b/docs/d1/df0/aes__encryptor_8h_source.html index 7f9915d45e..b04e227742 100644 --- a/docs/d1/df0/aes__encryptor_8h_source.html +++ b/docs/d1/df0/aes__encryptor_8h_source.html @@ -305,7 +305,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/df2/structedash__packager_1_1media_1_1mp4_1_1CueSettingsBox.html b/docs/d1/df2/structedash__packager_1_1media_1_1mp4_1_1CueSettingsBox.html index aab2cf91ca..0d6b181997 100644 --- a/docs/d1/df2/structedash__packager_1_1media_1_1mp4_1_1CueSettingsBox.html +++ b/docs/d1/df2/structedash__packager_1_1media_1_1mp4_1_1CueSettingsBox.html @@ -136,7 +136,7 @@ Additional Inherited Members

    Detailed Description

    -

    Definition at line 753 of file box_definitions.h.

    +

    Definition at line 751 of file box_definitions.h.

    Member Function Documentation

    @@ -162,7 +162,7 @@ Additional Inherited Members

    Implements edash_packager::media::mp4::Box.

    -

    Definition at line 2479 of file box_definitions.cc.

    +

    Definition at line 2464 of file box_definitions.cc.

    @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d1/df5/nalu__reader_8cc_source.html b/docs/d1/df5/nalu__reader_8cc_source.html index 91e477b6c4..a366f32649 100644 --- a/docs/d1/df5/nalu__reader_8cc_source.html +++ b/docs/d1/df5/nalu__reader_8cc_source.html @@ -327,7 +327,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/dfc/structedash__packager_1_1media_1_1wvm_1_1DemuxStreamIdMediaSample-members.html b/docs/d1/dfc/structedash__packager_1_1media_1_1wvm_1_1DemuxStreamIdMediaSample-members.html index bdf5cf6b26..94b49c4a4f 100644 --- a/docs/d1/dfc/structedash__packager_1_1media_1_1wvm_1_1DemuxStreamIdMediaSample-members.html +++ b/docs/d1/dfc/structedash__packager_1_1media_1_1wvm_1_1DemuxStreamIdMediaSample-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d02/timestamp_8h_source.html b/docs/d2/d02/timestamp_8h_source.html index eafe016c3a..74c0b43141 100644 --- a/docs/d2/d02/timestamp_8h_source.html +++ b/docs/d2/d02/timestamp_8h_source.html @@ -114,7 +114,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d06/structedash__packager_1_1media_1_1mp4_1_1Metadata.html b/docs/d2/d06/structedash__packager_1_1media_1_1mp4_1_1Metadata.html index ea009dc9d7..8cc34cb734 100644 --- a/docs/d2/d06/structedash__packager_1_1media_1_1mp4_1_1Metadata.html +++ b/docs/d2/d06/structedash__packager_1_1media_1_1mp4_1_1Metadata.html @@ -148,7 +148,7 @@ Additional Inherited Members

    Detailed Description

    -

    Definition at line 255 of file box_definitions.h.

    +

    Definition at line 253 of file box_definitions.h.

    Member Function Documentation

    @@ -174,7 +174,7 @@ Additional Inherited Members

    Implements edash_packager::media::mp4::Box.

    -

    Definition at line 1185 of file box_definitions.cc.

    +

    Definition at line 1170 of file box_definitions.cc.

    @@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/d2/d09/decoder__configuration_8h_source.html b/docs/d2/d09/decoder__configuration_8h_source.html index 0b18aeb5ff..3f21b8ec8e 100644 --- a/docs/d2/d09/decoder__configuration_8h_source.html +++ b/docs/d2/d09/decoder__configuration_8h_source.html @@ -166,7 +166,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d0f/structedash__packager_1_1media_1_1mp4_1_1MediaInformation-members.html b/docs/d2/d0f/structedash__packager_1_1media_1_1mp4_1_1MediaInformation-members.html index 9ad139e243..dc310e3947 100644 --- a/docs/d2/d0f/structedash__packager_1_1media_1_1mp4_1_1MediaInformation-members.html +++ b/docs/d2/d0f/structedash__packager_1_1media_1_1mp4_1_1MediaInformation-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d17/ts__section__pat_8cc_source.html b/docs/d2/d17/ts__section__pat_8cc_source.html index 2e92afe635..228fff9c3d 100644 --- a/docs/d2/d17/ts__section__pat_8cc_source.html +++ b/docs/d2/d17/ts__section__pat_8cc_source.html @@ -214,7 +214,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d23/threaded__io__file_8cc_source.html b/docs/d2/d23/threaded__io__file_8cc_source.html index 235d0989b0..fee0498002 100644 --- a/docs/d2/d23/threaded__io__file_8cc_source.html +++ b/docs/d2/d23/threaded__io__file_8cc_source.html @@ -315,7 +315,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d24/packager__util_8h_source.html b/docs/d2/d24/packager__util_8h_source.html index 66beac3a53..62740fda9b 100644 --- a/docs/d2/d24/packager__util_8h_source.html +++ b/docs/d2/d24/packager__util_8h_source.html @@ -142,7 +142,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d26/structedash__packager_1_1media_1_1mp4_1_1SampleGroupDescription.html b/docs/d2/d26/structedash__packager_1_1media_1_1mp4_1_1SampleGroupDescription.html index 9256d7ee75..bfba0e6014 100644 --- a/docs/d2/d26/structedash__packager_1_1media_1_1mp4_1_1SampleGroupDescription.html +++ b/docs/d2/d26/structedash__packager_1_1media_1_1mp4_1_1SampleGroupDescription.html @@ -149,7 +149,7 @@ Additional Inherited Members

    Detailed Description

    -

    Definition at line 670 of file box_definitions.h.

    +

    Definition at line 668 of file box_definitions.h.

    Member Function Documentation

    @@ -175,7 +175,7 @@ Additional Inherited Members

    Implements edash_packager::media::mp4::Box.

    -

    Definition at line 2195 of file box_definitions.cc.

    +

    Definition at line 2180 of file box_definitions.cc.

    @@ -186,7 +186,7 @@ Additional Inherited Members diff --git a/docs/d2/d28/classedash__packager_1_1media_1_1SegmentTestBase.html b/docs/d2/d28/classedash__packager_1_1media_1_1SegmentTestBase.html index af0efd8c5e..5acff2466e 100644 --- a/docs/d2/d28/classedash__packager_1_1media_1_1SegmentTestBase.html +++ b/docs/d2/d28/classedash__packager_1_1media_1_1SegmentTestBase.html @@ -180,7 +180,7 @@ bool single_segment_ diff --git a/docs/d2/d2d/structedash__packager_1_1media_1_1mp4_1_1MediaHeader-members.html b/docs/d2/d2d/structedash__packager_1_1media_1_1mp4_1_1MediaHeader-members.html index c63f58db0e..efeae60aab 100644 --- a/docs/d2/d2d/structedash__packager_1_1media_1_1mp4_1_1MediaHeader-members.html +++ b/docs/d2/d2d/structedash__packager_1_1media_1_1mp4_1_1MediaHeader-members.html @@ -117,7 +117,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d30/tracks__builder_8cc_source.html b/docs/d2/d30/tracks__builder_8cc_source.html index 32960a6f2e..a4d252cfaf 100644 --- a/docs/d2/d30/tracks__builder_8cc_source.html +++ b/docs/d2/d30/tracks__builder_8cc_source.html @@ -487,7 +487,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d33/video__slice__header__parser_8h_source.html b/docs/d2/d33/video__slice__header__parser_8h_source.html index cce4ac4aa3..8c4324c613 100644 --- a/docs/d2/d33/video__slice__header__parser_8h_source.html +++ b/docs/d2/d33/video__slice__header__parser_8h_source.html @@ -152,7 +152,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d48/classedash__packager_1_1media_1_1mp2t_1_1AdtsHeader-members.html b/docs/d2/d48/classedash__packager_1_1media_1_1mp2t_1_1AdtsHeader-members.html index 174d47207f..6cf524ecdb 100644 --- a/docs/d2/d48/classedash__packager_1_1media_1_1mp2t_1_1AdtsHeader-members.html +++ b/docs/d2/d48/classedash__packager_1_1media_1_1mp2t_1_1AdtsHeader-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d4b/structedash__packager_1_1media_1_1FileCloser-members.html b/docs/d2/d4b/structedash__packager_1_1media_1_1FileCloser-members.html index c937d23030..acfa10ed78 100644 --- a/docs/d2/d4b/structedash__packager_1_1media_1_1FileCloser-members.html +++ b/docs/d2/d4b/structedash__packager_1_1media_1_1FileCloser-members.html @@ -97,7 +97,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d4d/file_8h_source.html b/docs/d2/d4d/file_8h_source.html index 9af2aa3322..4f21beafd0 100644 --- a/docs/d2/d4d/file_8h_source.html +++ b/docs/d2/d4d/file_8h_source.html @@ -190,7 +190,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d50/structedash__packager_1_1media_1_1H264DecRefPicMarking.html b/docs/d2/d50/structedash__packager_1_1media_1_1H264DecRefPicMarking.html index 484bc11a27..e368dde6a8 100644 --- a/docs/d2/d50/structedash__packager_1_1media_1_1H264DecRefPicMarking.html +++ b/docs/d2/d50/structedash__packager_1_1media_1_1H264DecRefPicMarking.html @@ -121,7 +121,7 @@ int max_long_term_frame_id diff --git a/docs/d2/d51/classedash__packager_1_1media_1_1WebVttMediaParser.html b/docs/d2/d51/classedash__packager_1_1media_1_1WebVttMediaParser.html index 07380e7cbc..da1f187069 100644 --- a/docs/d2/d51/classedash__packager_1_1media_1_1WebVttMediaParser.html +++ b/docs/d2/d51/classedash__packager_1_1media_1_1WebVttMediaParser.html @@ -256,7 +256,7 @@ track_id, const scoped_refptr
    diff --git a/docs/d2/d51/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize.html b/docs/d2/d51/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize.html index a016db8f50..8ae23718ed 100644 --- a/docs/d2/d51/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize.html +++ b/docs/d2/d51/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize.html @@ -151,7 +151,7 @@ Additional Inherited Members

    Detailed Description

    -

    Definition at line 71 of file box_definitions.h.

    +

    Definition at line 69 of file box_definitions.h.

    Member Function Documentation

    @@ -177,7 +177,7 @@ Additional Inherited Members

    Implements edash_packager::media::mp4::Box.

    -

    Definition at line 222 of file box_definitions.cc.

    +

    Definition at line 207 of file box_definitions.cc.

    @@ -188,7 +188,7 @@ Additional Inherited Members diff --git a/docs/d2/d5b/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPmt.html b/docs/d2/d5b/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPmt.html index 756354b606..87634f69ae 100644 --- a/docs/d2/d5b/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPmt.html +++ b/docs/d2/d5b/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPmt.html @@ -155,7 +155,7 @@ void Reset () override diff --git a/docs/d2/d5d/structedash__packager_1_1media_1_1mp4_1_1VideoMediaHeader-members.html b/docs/d2/d5d/structedash__packager_1_1media_1_1mp4_1_1VideoMediaHeader-members.html index e6f9e2687c..2ebd4511a5 100644 --- a/docs/d2/d5d/structedash__packager_1_1media_1_1mp4_1_1VideoMediaHeader-members.html +++ b/docs/d2/d5d/structedash__packager_1_1media_1_1mp4_1_1VideoMediaHeader-members.html @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d62/simple__mpd__notifier_8h_source.html b/docs/d2/d62/simple__mpd__notifier_8h_source.html index 8ca79cb262..69e68e3b96 100644 --- a/docs/d2/d62/simple__mpd__notifier_8h_source.html +++ b/docs/d2/d62/simple__mpd__notifier_8h_source.html @@ -188,7 +188,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d6f/classBandwidthEstimator.html b/docs/d2/d6f/classBandwidthEstimator.html index 3f80a6a9a3..fd86cc565e 100644 --- a/docs/d2/d6f/classBandwidthEstimator.html +++ b/docs/d2/d6f/classBandwidthEstimator.html @@ -151,7 +151,7 @@ static const int kUseAllBl diff --git a/docs/d2/d6f/structedash__packager_1_1media_1_1mp4_1_1SchemeInfo.html b/docs/d2/d6f/structedash__packager_1_1media_1_1mp4_1_1SchemeInfo.html index 40745e901e..8b28a4140f 100644 --- a/docs/d2/d6f/structedash__packager_1_1media_1_1mp4_1_1SchemeInfo.html +++ b/docs/d2/d6f/structedash__packager_1_1media_1_1mp4_1_1SchemeInfo.html @@ -136,7 +136,7 @@ Additional Inherited Members

    Detailed Description

    -

    Definition at line 155 of file box_definitions.h.

    +

    Definition at line 153 of file box_definitions.h.

    Member Function Documentation

    @@ -162,7 +162,7 @@ Additional Inherited Members

    Implements edash_packager::media::mp4::Box.

    -

    Definition at line 447 of file box_definitions.cc.

    +

    Definition at line 432 of file box_definitions.cc.

    @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d2/d72/classedash__packager_1_1media_1_1Nalu.html b/docs/d2/d72/classedash__packager_1_1media_1_1Nalu.html index e09623af52..416815d89e 100644 --- a/docs/d2/d72/classedash__packager_1_1media_1_1Nalu.html +++ b/docs/d2/d72/classedash__packager_1_1media_1_1Nalu.html @@ -176,7 +176,7 @@ bool is_video_slice () diff --git a/docs/d2/d76/classedash__packager_1_1media_1_1webm_1_1Encryptor.html b/docs/d2/d76/classedash__packager_1_1media_1_1webm_1_1Encryptor.html index 3c397c2858..0fd2bea663 100644 --- a/docs/d2/d76/classedash__packager_1_1media_1_1webm_1_1Encryptor.html +++ b/docs/d2/d76/classedash__packager_1_1media_1_1webm_1_1Encryptor.html @@ -203,7 +203,7 @@ Public Member Functions diff --git a/docs/d2/d7b/simple__mpd__notifier_8cc_source.html b/docs/d2/d7b/simple__mpd__notifier_8cc_source.html index aeae8e27b3..f4fe2ddf79 100644 --- a/docs/d2/d7b/simple__mpd__notifier_8cc_source.html +++ b/docs/d2/d7b/simple__mpd__notifier_8cc_source.html @@ -242,7 +242,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d7e/aac__audio__specific__config_8h_source.html b/docs/d2/d7e/aac__audio__specific__config_8h_source.html index ba9e328846..ee6354e979 100644 --- a/docs/d2/d7e/aac__audio__specific__config_8h_source.html +++ b/docs/d2/d7e/aac__audio__specific__config_8h_source.html @@ -166,7 +166,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d90/classedash__packager_1_1media_1_1Status.html b/docs/d2/d90/classedash__packager_1_1media_1_1Status.html index 4fcc2ae787..0e37838df6 100644 --- a/docs/d2/d90/classedash__packager_1_1media_1_1Status.html +++ b/docs/d2/d90/classedash__packager_1_1media_1_1Status.html @@ -302,7 +302,7 @@ static const diff --git a/docs/d2/d92/box__reader_8h_source.html b/docs/d2/d92/box__reader_8h_source.html index 170ba1e40e..b686bb0acf 100644 --- a/docs/d2/d92/box__reader_8h_source.html +++ b/docs/d2/d92/box__reader_8h_source.html @@ -249,7 +249,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d98/avc__decoder__configuration_8h_source.html b/docs/d2/d98/avc__decoder__configuration_8h_source.html index 62e9b13552..7f8c477de9 100644 --- a/docs/d2/d98/avc__decoder__configuration_8h_source.html +++ b/docs/d2/d98/avc__decoder__configuration_8h_source.html @@ -153,7 +153,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/da6/threaded__io__file_8h_source.html b/docs/d2/da6/threaded__io__file_8h_source.html index 672d55019d..ba80a76d5d 100644 --- a/docs/d2/da6/threaded__io__file_8h_source.html +++ b/docs/d2/da6/threaded__io__file_8h_source.html @@ -172,7 +172,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/da8/mp4_2segmenter_8cc_source.html b/docs/d2/da8/mp4_2segmenter_8cc_source.html index 0613dcc070..10dd27de8b 100644 --- a/docs/d2/da8/mp4_2segmenter_8cc_source.html +++ b/docs/d2/da8/mp4_2segmenter_8cc_source.html @@ -514,7 +514,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
    virtual Status GetKey(TrackType track_type, EncryptionKey *key)
    Definition: key_source.cc:46
    - +
    Status Initialize(scoped_ptr< MkvWriter > writer, StreamInfo *info, ProgressListener *progress_listener, MuxerListener *muxer_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds)
    Definition: segmenter.cc:46
    @@ -539,7 +539,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/dae/webm__muxer_8cc_source.html b/docs/d2/dae/webm__muxer_8cc_source.html index bf67f2800d..a031549af1 100644 --- a/docs/d2/dae/webm__muxer_8cc_source.html +++ b/docs/d2/dae/webm__muxer_8cc_source.html @@ -215,7 +215,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/db7/classedash__packager_1_1media_1_1NaluReader-members.html b/docs/d2/db7/classedash__packager_1_1media_1_1NaluReader-members.html index e2ae5db1ef..691e059da5 100644 --- a/docs/d2/db7/classedash__packager_1_1media_1_1NaluReader-members.html +++ b/docs/d2/db7/classedash__packager_1_1media_1_1NaluReader-members.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/dc5/structedash__packager_1_1media_1_1mp4_1_1CueSettingsBox-members.html b/docs/d2/dc5/structedash__packager_1_1media_1_1mp4_1_1CueSettingsBox-members.html index 5ca1f32335..1f8c31f41f 100644 --- a/docs/d2/dc5/structedash__packager_1_1media_1_1mp4_1_1CueSettingsBox-members.html +++ b/docs/d2/dc5/structedash__packager_1_1media_1_1mp4_1_1CueSettingsBox-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/dd6/mkv__writer_8h_source.html b/docs/d2/dd6/mkv__writer_8h_source.html index 63b210cea8..d0c3c2e472 100644 --- a/docs/d2/dd6/mkv__writer_8h_source.html +++ b/docs/d2/dd6/mkv__writer_8h_source.html @@ -150,7 +150,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/dd9/structedash__packager_1_1media_1_1VideoStreamInfoParameters.html b/docs/d2/dd9/structedash__packager_1_1media_1_1VideoStreamInfoParameters.html index bf7d094ae9..427274e248 100644 --- a/docs/d2/dd9/structedash__packager_1_1media_1_1VideoStreamInfoParameters.html +++ b/docs/d2/dd9/structedash__packager_1_1media_1_1VideoStreamInfoParameters.html @@ -146,7 +146,7 @@ bool is_encrypted diff --git a/docs/d2/dda/vp__codec__configuration_8cc_source.html b/docs/d2/dda/vp__codec__configuration_8cc_source.html index 241f98237a..c22fe561dc 100644 --- a/docs/d2/dda/vp__codec__configuration_8cc_source.html +++ b/docs/d2/dda/vp__codec__configuration_8cc_source.html @@ -217,7 +217,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/de6/packager__main_8cc_source.html b/docs/d2/de6/packager__main_8cc_source.html index 861e1484e3..efe1b391dd 100644 --- a/docs/d2/de6/packager__main_8cc_source.html +++ b/docs/d2/de6/packager__main_8cc_source.html @@ -567,7 +567,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/deb/es__parser_8h_source.html b/docs/d2/deb/es__parser_8h_source.html index d41ad97522..9db64c4bea 100644 --- a/docs/d2/deb/es__parser_8h_source.html +++ b/docs/d2/deb/es__parser_8h_source.html @@ -145,7 +145,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/df3/structedash__packager_1_1media_1_1mp4_1_1Edit-members.html b/docs/d2/df3/structedash__packager_1_1media_1_1mp4_1_1Edit-members.html index 5bea574eb4..f969e41df6 100644 --- a/docs/d2/df3/structedash__packager_1_1media_1_1mp4_1_1Edit-members.html +++ b/docs/d2/df3/structedash__packager_1_1media_1_1mp4_1_1Edit-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/df8/structedash__packager_1_1media_1_1mp4_1_1CueSourceIDBox.html b/docs/d2/df8/structedash__packager_1_1media_1_1mp4_1_1CueSourceIDBox.html index 96b60686b5..be2093606b 100644 --- a/docs/d2/df8/structedash__packager_1_1media_1_1mp4_1_1CueSourceIDBox.html +++ b/docs/d2/df8/structedash__packager_1_1media_1_1mp4_1_1CueSourceIDBox.html @@ -136,7 +136,7 @@ Additional Inherited Members

    Detailed Description

    -

    Definition at line 738 of file box_definitions.h.

    +

    Definition at line 736 of file box_definitions.h.

    Member Function Documentation

    @@ -162,7 +162,7 @@ Additional Inherited Members

    Implements edash_packager::media::mp4::Box.

    -

    Definition at line 2424 of file box_definitions.cc.

    +

    Definition at line 2409 of file box_definitions.cc.

    @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d2/dfa/classedash__packager_1_1RepresentationStateChangeListener.html b/docs/d2/dfa/classedash__packager_1_1RepresentationStateChangeListener.html index 87d4910660..b30cab91cc 100644 --- a/docs/d2/dfa/classedash__packager_1_1RepresentationStateChangeListener.html +++ b/docs/d2/dfa/classedash__packager_1_1RepresentationStateChangeListener.html @@ -195,7 +195,7 @@ Public Member Functions diff --git a/docs/d2/dfd/adts__header_8h_source.html b/docs/d2/dfd/adts__header_8h_source.html index 8df7dbce1f..4fcaa69be1 100644 --- a/docs/d2/dfd/adts__header_8h_source.html +++ b/docs/d2/dfd/adts__header_8h_source.html @@ -150,7 +150,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/dfd/classedash__packager_1_1media_1_1MediaStream.html b/docs/d2/dfd/classedash__packager_1_1media_1_1MediaStream.html index 6f5af10242..477dfdb994 100644 --- a/docs/d2/dfd/classedash__packager_1_1media_1_1MediaStream.html +++ b/docs/d2/dfd/classedash__packager_1_1media_1_1MediaStream.html @@ -225,7 +225,7 @@ const scoped_refptr< diff --git a/docs/d3/d00/structedash__packager_1_1media_1_1VPxFrameInfo-members.html b/docs/d3/d00/structedash__packager_1_1media_1_1VPxFrameInfo-members.html index 6a19e3b0d3..08e0c54871 100644 --- a/docs/d3/d00/structedash__packager_1_1media_1_1VPxFrameInfo-members.html +++ b/docs/d3/d00/structedash__packager_1_1media_1_1VPxFrameInfo-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d04/classedash__packager_1_1media_1_1WebMAudioClient-members.html b/docs/d3/d04/classedash__packager_1_1media_1_1WebMAudioClient-members.html index 0fd364a2c1..dc84f7b071 100644 --- a/docs/d3/d04/classedash__packager_1_1media_1_1WebMAudioClient-members.html +++ b/docs/d3/d04/classedash__packager_1_1media_1_1WebMAudioClient-members.html @@ -107,7 +107,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d0e/classedash__packager_1_1media_1_1MpdNotifyMuxerListener.html b/docs/d3/d0e/classedash__packager_1_1media_1_1MpdNotifyMuxerListener.html index a8fbd2fff7..7b99223bca 100644 --- a/docs/d3/d0e/classedash__packager_1_1media_1_1MpdNotifyMuxerListener.html +++ b/docs/d3/d0e/classedash__packager_1_1media_1_1MpdNotifyMuxerListener.html @@ -234,7 +234,7 @@ Additional Inherited Members diff --git a/docs/d3/d15/udp__file__win_8cc_source.html b/docs/d3/d15/udp__file__win_8cc_source.html index 26c5b8ed77..b5a13ea68c 100644 --- a/docs/d3/d15/udp__file__win_8cc_source.html +++ b/docs/d3/d15/udp__file__win_8cc_source.html @@ -160,7 +160,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d19/io__cache_8h_source.html b/docs/d3/d19/io__cache_8h_source.html index 74a621664b..d056c87650 100644 --- a/docs/d3/d19/io__cache_8h_source.html +++ b/docs/d3/d19/io__cache_8h_source.html @@ -162,7 +162,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d1c/structedash__packager_1_1media_1_1mp4_1_1VTTEmptyCueBox.html b/docs/d3/d1c/structedash__packager_1_1media_1_1mp4_1_1VTTEmptyCueBox.html index 4d3ea94290..d264e6778d 100644 --- a/docs/d3/d1c/structedash__packager_1_1media_1_1mp4_1_1VTTEmptyCueBox.html +++ b/docs/d3/d1c/structedash__packager_1_1media_1_1mp4_1_1VTTEmptyCueBox.html @@ -129,7 +129,7 @@ Additional Inherited Members

    Detailed Description

    -

    Definition at line 763 of file box_definitions.h.

    +

    Definition at line 761 of file box_definitions.h.

    Member Function Documentation

    @@ -155,7 +155,7 @@ Additional Inherited Members

    Implements edash_packager::media::mp4::Box.

    -

    Definition at line 2515 of file box_definitions.cc.

    +

    Definition at line 2500 of file box_definitions.cc.

    @@ -166,7 +166,7 @@ Additional Inherited Members diff --git a/docs/d3/d2c/structedash__packager_1_1media_1_1mp4_1_1TrackExtends.html b/docs/d3/d2c/structedash__packager_1_1media_1_1mp4_1_1TrackExtends.html index 6d53d9ed8d..eee9b9bdbf 100644 --- a/docs/d3/d2c/structedash__packager_1_1media_1_1mp4_1_1TrackExtends.html +++ b/docs/d3/d2c/structedash__packager_1_1media_1_1mp4_1_1TrackExtends.html @@ -157,7 +157,7 @@ Additional Inherited Members

    Detailed Description

    -

    Definition at line 554 of file box_definitions.h.

    +

    Definition at line 552 of file box_definitions.h.

    Member Function Documentation

    @@ -183,7 +183,7 @@ Additional Inherited Members

    Implements edash_packager::media::mp4::Box.

    -

    Definition at line 1859 of file box_definitions.cc.

    +

    Definition at line 1844 of file box_definitions.cc.

    @@ -194,7 +194,7 @@ Additional Inherited Members diff --git a/docs/d3/d2f/structedash__packager_1_1media_1_1mp4_1_1TrackEncryption-members.html b/docs/d3/d2f/structedash__packager_1_1media_1_1mp4_1_1TrackEncryption-members.html index b1eae6ed23..fc8a7a8836 100644 --- a/docs/d3/d2f/structedash__packager_1_1media_1_1mp4_1_1TrackEncryption-members.html +++ b/docs/d3/d2f/structedash__packager_1_1media_1_1mp4_1_1TrackEncryption-members.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d35/video__slice__header__parser_8cc_source.html b/docs/d3/d35/video__slice__header__parser_8cc_source.html index 60d30de4ae..5e9f33a101 100644 --- a/docs/d3/d35/video__slice__header__parser_8cc_source.html +++ b/docs/d3/d35/video__slice__header__parser_8cc_source.html @@ -149,7 +149,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d3e/classedash__packager_1_1media_1_1HttpKeyFetcher.html b/docs/d3/d3e/classedash__packager_1_1media_1_1HttpKeyFetcher.html index 2cce37f00b..e9ab58c5cf 100644 --- a/docs/d3/d3e/classedash__packager_1_1media_1_1HttpKeyFetcher.html +++ b/docs/d3/d3e/classedash__packager_1_1media_1_1HttpKeyFetcher.html @@ -311,7 +311,7 @@ KeyFetcher implementation overrides. diff --git a/docs/d3/d43/structedash__packager_1_1media_1_1mp4_1_1EC3Specific.html b/docs/d3/d43/structedash__packager_1_1media_1_1mp4_1_1EC3Specific.html index 33679c99d2..91f5b1d915 100644 --- a/docs/d3/d43/structedash__packager_1_1media_1_1mp4_1_1EC3Specific.html +++ b/docs/d3/d43/structedash__packager_1_1media_1_1mp4_1_1EC3Specific.html @@ -136,7 +136,7 @@ Additional Inherited Members

    Detailed Description

    -

    Definition at line 318 of file box_definitions.h.

    +

    Definition at line 316 of file box_definitions.h.

    Member Function Documentation

    @@ -162,7 +162,7 @@ Additional Inherited Members

    Implements edash_packager::media::mp4::Box.

    -

    Definition at line 1445 of file box_definitions.cc.

    +

    Definition at line 1430 of file box_definitions.cc.

    @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d3/d48/structedash__packager_1_1media_1_1mp4_1_1EditList-members.html b/docs/d3/d48/structedash__packager_1_1media_1_1mp4_1_1EditList-members.html index 19ca1e57d1..7037ec1271 100644 --- a/docs/d3/d48/structedash__packager_1_1media_1_1mp4_1_1EditList-members.html +++ b/docs/d3/d48/structedash__packager_1_1media_1_1mp4_1_1EditList-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d52/classedash__packager_1_1media_1_1mp4_1_1ChunkInfoIterator-members.html b/docs/d3/d52/classedash__packager_1_1media_1_1mp4_1_1ChunkInfoIterator-members.html index 5101431413..4cf966ee11 100644 --- a/docs/d3/d52/classedash__packager_1_1media_1_1mp4_1_1ChunkInfoIterator-members.html +++ b/docs/d3/d52/classedash__packager_1_1media_1_1mp4_1_1ChunkInfoIterator-members.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d56/decrypt__config_8cc_source.html b/docs/d3/d56/decrypt__config_8cc_source.html index d3359b902c..844b639218 100644 --- a/docs/d3/d56/decrypt__config_8cc_source.html +++ b/docs/d3/d56/decrypt__config_8cc_source.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d59/structedash__packager_1_1media_1_1mp4_1_1PrivFrame.html b/docs/d3/d59/structedash__packager_1_1media_1_1mp4_1_1PrivFrame.html index afc0df604c..5242930f7a 100644 --- a/docs/d3/d59/structedash__packager_1_1media_1_1mp4_1_1PrivFrame.html +++ b/docs/d3/d59/structedash__packager_1_1media_1_1mp4_1_1PrivFrame.html @@ -121,7 +121,7 @@ std::string value

    Detailed Description

    Implemented per http://id3.org/id3v2.4.0-frames.

    -

    Definition at line 236 of file box_definitions.h.

    +

    Definition at line 234 of file box_definitions.h.


    The documentation for this struct was generated from the following files:
    • media/formats/mp4/box_definitions.h
    • media/formats/mp4/box_definitions.cc
    • @@ -129,7 +129,7 @@ std::string value diff --git a/docs/d3/d62/rcheck_8h_source.html b/docs/d3/d62/rcheck_8h_source.html index 852c90c78e..3d356ffbd5 100644 --- a/docs/d3/d62/rcheck_8h_source.html +++ b/docs/d3/d62/rcheck_8h_source.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d67/structedash__packager_1_1media_1_1mp4_1_1PrivFrame-members.html b/docs/d3/d67/structedash__packager_1_1media_1_1mp4_1_1PrivFrame-members.html index 684eda19de..8b86d84832 100644 --- a/docs/d3/d67/structedash__packager_1_1media_1_1mp4_1_1PrivFrame-members.html +++ b/docs/d3/d67/structedash__packager_1_1media_1_1mp4_1_1PrivFrame-members.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d69/classedash__packager_1_1media_1_1ClusterBuilder.html b/docs/d3/d69/classedash__packager_1_1media_1_1ClusterBuilder.html index 005154b056..02b32a9e12 100644 --- a/docs/d3/d69/classedash__packager_1_1media_1_1ClusterBuilder.html +++ b/docs/d3/d69/classedash__packager_1_1media_1_1ClusterBuilder.html @@ -125,7 +125,7 @@ scoped_ptr< diff --git a/docs/d3/d6a/classedash__packager_1_1media_1_1NaluReader.html b/docs/d3/d6a/classedash__packager_1_1media_1_1NaluReader.html index e50ada35e5..04120dc32f 100644 --- a/docs/d3/d6a/classedash__packager_1_1media_1_1NaluReader.html +++ b/docs/d3/d6a/classedash__packager_1_1media_1_1NaluReader.html @@ -232,7 +232,7 @@ static bool FindStartCode< diff --git a/docs/d3/d6b/classedash__packager_1_1media_1_1IoCache.html b/docs/d3/d6b/classedash__packager_1_1media_1_1IoCache.html index 4b247aec19..56463a0fdf 100644 --- a/docs/d3/d6b/classedash__packager_1_1media_1_1IoCache.html +++ b/docs/d3/d6b/classedash__packager_1_1media_1_1IoCache.html @@ -297,7 +297,7 @@ void  diff --git a/docs/d3/d74/structedash__packager_1_1media_1_1mp4_1_1SampleDescription.html b/docs/d3/d74/structedash__packager_1_1media_1_1mp4_1_1SampleDescription.html index eb6b14d89e..44203a46d2 100644 --- a/docs/d3/d74/structedash__packager_1_1media_1_1mp4_1_1SampleDescription.html +++ b/docs/d3/d74/structedash__packager_1_1media_1_1mp4_1_1SampleDescription.html @@ -154,7 +154,7 @@ Additional Inherited Members

      Detailed Description

      -

      Definition at line 370 of file box_definitions.h.

      +

      Definition at line 368 of file box_definitions.h.

      Member Function Documentation

      @@ -180,7 +180,7 @@ Additional Inherited Members

      Implements edash_packager::media::mp4::Box.

      -

      Definition at line 577 of file box_definitions.cc.

      +

      Definition at line 562 of file box_definitions.cc.

      @@ -191,7 +191,7 @@ Additional Inherited Members diff --git a/docs/d3/d76/muxer__flags_8h_source.html b/docs/d3/d76/muxer__flags_8h_source.html index 4b54a6d316..a4567f3d0b 100644 --- a/docs/d3/d76/muxer__flags_8h_source.html +++ b/docs/d3/d76/muxer__flags_8h_source.html @@ -114,7 +114,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d77/structedash__packager_1_1media_1_1mp4_1_1SampleTable.html b/docs/d3/d77/structedash__packager_1_1media_1_1mp4_1_1SampleTable.html index eba971fccd..12eaac5dfb 100644 --- a/docs/d3/d77/structedash__packager_1_1media_1_1mp4_1_1SampleTable.html +++ b/docs/d3/d77/structedash__packager_1_1media_1_1mp4_1_1SampleTable.html @@ -154,7 +154,7 @@ Additional Inherited Members

      Detailed Description

      -

      Definition at line 457 of file box_definitions.h.

      +

      Definition at line 455 of file box_definitions.h.

      Member Function Documentation

      @@ -180,7 +180,7 @@ Additional Inherited Members

      Implements edash_packager::media::mp4::Box.

      -

      Definition at line 907 of file box_definitions.cc.

      +

      Definition at line 892 of file box_definitions.cc.

      @@ -191,7 +191,7 @@ Additional Inherited Members diff --git a/docs/d3/d80/muxer__util_8h_source.html b/docs/d3/d80/muxer__util_8h_source.html index 9be23fdffa..eced71c0de 100644 --- a/docs/d3/d80/muxer__util_8h_source.html +++ b/docs/d3/d80/muxer__util_8h_source.html @@ -120,7 +120,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d81/classedash__packager_1_1media_1_1MemoryFile.html b/docs/d3/d81/classedash__packager_1_1media_1_1MemoryFile.html index 7a54ab6d9e..ac09f9271f 100644 --- a/docs/d3/d81/classedash__packager_1_1media_1_1MemoryFile.html +++ b/docs/d3/d81/classedash__packager_1_1media_1_1MemoryFile.html @@ -485,7 +485,7 @@ bool  diff --git a/docs/d3/d8a/classedash__packager_1_1RepresentationStateChangeListener-members.html b/docs/d3/d8a/classedash__packager_1_1RepresentationStateChangeListener-members.html index 32120115c7..0c8234f5ca 100644 --- a/docs/d3/d8a/classedash__packager_1_1RepresentationStateChangeListener-members.html +++ b/docs/d3/d8a/classedash__packager_1_1RepresentationStateChangeListener-members.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d8d/webm__audio__client_8h_source.html b/docs/d3/d8d/webm__audio__client_8h_source.html index 60f0e2d422..2b2828ad72 100644 --- a/docs/d3/d8d/webm__audio__client_8h_source.html +++ b/docs/d3/d8d/webm__audio__client_8h_source.html @@ -142,7 +142,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d8e/classedash__packager_1_1media_1_1webm_1_1TwoPassSingleSegmentSegmenter-members.html b/docs/d3/d8e/classedash__packager_1_1media_1_1webm_1_1TwoPassSingleSegmentSegmenter-members.html index a152d84ee6..4c69b83cce 100644 --- a/docs/d3/d8e/classedash__packager_1_1media_1_1webm_1_1TwoPassSingleSegmentSegmenter-members.html +++ b/docs/d3/d8e/classedash__packager_1_1media_1_1webm_1_1TwoPassSingleSegmentSegmenter-members.html @@ -129,7 +129,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d90/ec3__audio__util_8cc_source.html b/docs/d3/d90/ec3__audio__util_8cc_source.html index 6bf05096b0..cf79403a83 100644 --- a/docs/d3/d90/ec3__audio__util_8cc_source.html +++ b/docs/d3/d90/ec3__audio__util_8cc_source.html @@ -245,7 +245,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d9b/structedash__packager_1_1media_1_1VideoStreamInfoParameters-members.html b/docs/d3/d9b/structedash__packager_1_1media_1_1VideoStreamInfoParameters-members.html index 9f060f4dad..c7cfbc535f 100644 --- a/docs/d3/d9b/structedash__packager_1_1media_1_1VideoStreamInfoParameters-members.html +++ b/docs/d3/d9b/structedash__packager_1_1media_1_1VideoStreamInfoParameters-members.html @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d9f/classedash__packager_1_1media_1_1mp4_1_1ESDescriptor-members.html b/docs/d3/d9f/classedash__packager_1_1media_1_1mp4_1_1ESDescriptor-members.html index af3581473b..e1ef81d3c9 100644 --- a/docs/d3/d9f/classedash__packager_1_1media_1_1mp4_1_1ESDescriptor-members.html +++ b/docs/d3/d9f/classedash__packager_1_1media_1_1mp4_1_1ESDescriptor-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/da0/ec3__audio__util_8h_source.html b/docs/d3/da0/ec3__audio__util_8h_source.html index f33ca749ce..e316a48d66 100644 --- a/docs/d3/da0/ec3__audio__util_8h_source.html +++ b/docs/d3/da0/ec3__audio__util_8h_source.html @@ -114,7 +114,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/db6/webm__parser_8cc_source.html b/docs/d3/db6/webm__parser_8cc_source.html index 99d0f9d14a..2429950e80 100644 --- a/docs/d3/db6/webm__parser_8cc_source.html +++ b/docs/d3/db6/webm__parser_8cc_source.html @@ -1068,7 +1068,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/dbc/seek__head_8cc_source.html b/docs/d3/dbc/seek__head_8cc_source.html index 9223d34df0..80912f66c8 100644 --- a/docs/d3/dbc/seek__head_8cc_source.html +++ b/docs/d3/dbc/seek__head_8cc_source.html @@ -215,7 +215,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/dbc/structedash__packager_1_1media_1_1H264WeightingFactors.html b/docs/d3/dbc/structedash__packager_1_1media_1_1H264WeightingFactors.html index c687f4f5a4..f4eeee6b2c 100644 --- a/docs/d3/dbc/structedash__packager_1_1media_1_1H264WeightingFactors.html +++ b/docs/d3/dbc/structedash__packager_1_1media_1_1H264WeightingFactors.html @@ -124,7 +124,7 @@ int chroma_offset [32] diff --git a/docs/d3/dbd/structedash__packager_1_1media_1_1mp4_1_1HandlerReference.html b/docs/d3/dbd/structedash__packager_1_1media_1_1mp4_1_1HandlerReference.html index 90f99e5f4a..87bd10ec4c 100644 --- a/docs/d3/dbd/structedash__packager_1_1media_1_1mp4_1_1HandlerReference.html +++ b/docs/d3/dbd/structedash__packager_1_1media_1_1mp4_1_1HandlerReference.html @@ -145,7 +145,7 @@ Additional Inherited Members

      Detailed Description

      -

      Definition at line 222 of file box_definitions.h.

      +

      Definition at line 220 of file box_definitions.h.

      Member Function Documentation

      @@ -171,7 +171,7 @@ Additional Inherited Members

      Implements edash_packager::media::mp4::Box.

      -

      Definition at line 1012 of file box_definitions.cc.

      +

      Definition at line 997 of file box_definitions.cc.

      @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/d3/dbe/classedash__packager_1_1media_1_1WebMMediaParser-members.html b/docs/d3/dbe/classedash__packager_1_1media_1_1WebMMediaParser-members.html index c3c861af0c..d4dff4cde2 100644 --- a/docs/d3/dbe/classedash__packager_1_1media_1_1WebMMediaParser-members.html +++ b/docs/d3/dbe/classedash__packager_1_1media_1_1WebMMediaParser-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/dbe/demuxer_8cc_source.html b/docs/d3/dbe/demuxer_8cc_source.html index 15c4339072..f51178065b 100644 --- a/docs/d3/dbe/demuxer_8cc_source.html +++ b/docs/d3/dbe/demuxer_8cc_source.html @@ -345,7 +345,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/dc0/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset-members.html b/docs/d3/dc0/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset-members.html index 9a7eee2ded..ef8f799b70 100644 --- a/docs/d3/dc0/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset-members.html +++ b/docs/d3/dc0/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/dcc/classedash__packager_1_1media_1_1ProgressListener-members.html b/docs/d3/dcc/classedash__packager_1_1media_1_1ProgressListener-members.html index 55421f46a9..1a54bca725 100644 --- a/docs/d3/dcc/classedash__packager_1_1media_1_1ProgressListener-members.html +++ b/docs/d3/dcc/classedash__packager_1_1media_1_1ProgressListener-members.html @@ -99,7 +99,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/dd0/classedash__packager_1_1media_1_1mp4_1_1BoxReader-members.html b/docs/d3/dd0/classedash__packager_1_1media_1_1mp4_1_1BoxReader-members.html index 2a8ba0c0bc..dd9c514c1e 100644 --- a/docs/d3/dd0/classedash__packager_1_1media_1_1mp4_1_1BoxReader-members.html +++ b/docs/d3/dd0/classedash__packager_1_1media_1_1mp4_1_1BoxReader-members.html @@ -128,7 +128,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/de1/structedash__packager_1_1media_1_1mp4_1_1Track.html b/docs/d3/de1/structedash__packager_1_1media_1_1mp4_1_1Track.html index bdad2c0c12..fad8421e33 100644 --- a/docs/d3/de1/structedash__packager_1_1media_1_1mp4_1_1Track.html +++ b/docs/d3/de1/structedash__packager_1_1media_1_1mp4_1_1Track.html @@ -145,7 +145,7 @@ Additional Inherited Members

      Detailed Description

      -

      Definition at line 539 of file box_definitions.h.

      +

      Definition at line 537 of file box_definitions.h.

      Member Function Documentation

      @@ -171,7 +171,7 @@ Additional Inherited Members

      Implements edash_packager::media::mp4::Box.

      -

      Definition at line 1816 of file box_definitions.cc.

      +

      Definition at line 1801 of file box_definitions.cc.

      @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/d3/de4/seek__head_8h_source.html b/docs/d3/de4/seek__head_8h_source.html index f4e69e1718..a76d33153d 100644 --- a/docs/d3/de4/seek__head_8h_source.html +++ b/docs/d3/de4/seek__head_8h_source.html @@ -140,7 +140,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/de7/structedash__packager_1_1media_1_1OnMediaEndParameters.html b/docs/d3/de7/structedash__packager_1_1media_1_1OnMediaEndParameters.html index 5bd03c399b..c0d682097b 100644 --- a/docs/d3/de7/structedash__packager_1_1media_1_1OnMediaEndParameters.html +++ b/docs/d3/de7/structedash__packager_1_1media_1_1OnMediaEndParameters.html @@ -130,7 +130,7 @@ uint64_t file_size diff --git a/docs/d3/df1/box__reader_8cc_source.html b/docs/d3/df1/box__reader_8cc_source.html index 1d2e254ee6..0537a0bdd4 100644 --- a/docs/d3/df1/box__reader_8cc_source.html +++ b/docs/d3/df1/box__reader_8cc_source.html @@ -296,7 +296,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/dfa/classedash__packager_1_1MpdBuilder.html b/docs/d3/dfa/classedash__packager_1_1MpdBuilder.html index 6bea21ddc9..ddd21a5221 100644 --- a/docs/d3/dfa/classedash__packager_1_1MpdBuilder.html +++ b/docs/d3/dfa/classedash__packager_1_1MpdBuilder.html @@ -385,7 +385,7 @@ class DynamicMpdBuilderTes diff --git a/docs/d3/dfa/structedash__packager_1_1media_1_1H264SliceHeader-members.html b/docs/d3/dfa/structedash__packager_1_1media_1_1H264SliceHeader-members.html index 76e4431c6d..d85bd4a2bc 100644 --- a/docs/d3/dfa/structedash__packager_1_1media_1_1H264SliceHeader-members.html +++ b/docs/d3/dfa/structedash__packager_1_1media_1_1H264SliceHeader-members.html @@ -154,7 +154,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d00/mp4_2multi__segment__segmenter_8cc_source.html b/docs/d4/d00/mp4_2multi__segment__segmenter_8cc_source.html index 7f7af7d658..73d5c51722 100644 --- a/docs/d4/d00/mp4_2multi__segment__segmenter_8cc_source.html +++ b/docs/d4/d00/mp4_2multi__segment__segmenter_8cc_source.html @@ -303,7 +303,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d0b/structedash__packager_1_1media_1_1mp4_1_1Media-members.html b/docs/d4/d0b/structedash__packager_1_1media_1_1mp4_1_1Media-members.html index d44ec0a3da..84586e542e 100644 --- a/docs/d4/d0b/structedash__packager_1_1media_1_1mp4_1_1Media-members.html +++ b/docs/d4/d0b/structedash__packager_1_1media_1_1mp4_1_1Media-members.html @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d1d/classedash__packager_1_1media_1_1Muxer.html b/docs/d4/d1d/classedash__packager_1_1media_1_1Muxer.html index 1cff241a85..60dd3875f6 100644 --- a/docs/d4/d1d/classedash__packager_1_1media_1_1Muxer.html +++ b/docs/d4/d1d/classedash__packager_1_1media_1_1Muxer.html @@ -331,7 +331,7 @@ class MediaStream diff --git a/docs/d4/d37/io__cache_8cc_source.html b/docs/d4/d37/io__cache_8cc_source.html index f3b1090b05..63f3a55b96 100644 --- a/docs/d4/d37/io__cache_8cc_source.html +++ b/docs/d4/d37/io__cache_8cc_source.html @@ -252,7 +252,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d3d/structedash__packager_1_1media_1_1mp4_1_1PixelAspectRatio.html b/docs/d4/d3d/structedash__packager_1_1media_1_1mp4_1_1PixelAspectRatio.html index fcb7b98885..7076c25eae 100644 --- a/docs/d4/d3d/structedash__packager_1_1media_1_1mp4_1_1PixelAspectRatio.html +++ b/docs/d4/d3d/structedash__packager_1_1media_1_1mp4_1_1PixelAspectRatio.html @@ -139,7 +139,7 @@ Additional Inherited Members

      Detailed Description

      -

      Definition at line 271 of file box_definitions.h.

      +

      Definition at line 269 of file box_definitions.h.

      Member Function Documentation

      @@ -165,7 +165,7 @@ Additional Inherited Members

      Implements edash_packager::media::mp4::Box.

      -

      Definition at line 1230 of file box_definitions.cc.

      +

      Definition at line 1215 of file box_definitions.cc.

      @@ -176,7 +176,7 @@ Additional Inherited Members diff --git a/docs/d4/d43/classedash__packager_1_1media_1_1KeyFetcher.html b/docs/d4/d43/classedash__packager_1_1media_1_1KeyFetcher.html index d5d41752bb..7351793c99 100644 --- a/docs/d4/d43/classedash__packager_1_1media_1_1KeyFetcher.html +++ b/docs/d4/d43/classedash__packager_1_1media_1_1KeyFetcher.html @@ -177,7 +177,7 @@ Public Member Functions diff --git a/docs/d4/d55/classedash__packager_1_1media_1_1H264BitReader.html b/docs/d4/d55/classedash__packager_1_1media_1_1H264BitReader.html index 0ac429d279..6646912d58 100644 --- a/docs/d4/d55/classedash__packager_1_1media_1_1H264BitReader.html +++ b/docs/d4/d55/classedash__packager_1_1media_1_1H264BitReader.html @@ -128,7 +128,7 @@ size_t NumEmulationPrevent diff --git a/docs/d4/d67/structedash__packager_1_1media_1_1mp4_1_1MovieFragment-members.html b/docs/d4/d67/structedash__packager_1_1media_1_1mp4_1_1MovieFragment-members.html index 782935ff29..4c36f32a2f 100644 --- a/docs/d4/d67/structedash__packager_1_1media_1_1mp4_1_1MovieFragment-members.html +++ b/docs/d4/d67/structedash__packager_1_1media_1_1mp4_1_1MovieFragment-members.html @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d72/classedash__packager_1_1media_1_1webm_1_1SingleSegmentSegmenter-members.html b/docs/d4/d72/classedash__packager_1_1media_1_1webm_1_1SingleSegmentSegmenter-members.html index 8262ecb1f6..cdd8e87233 100644 --- a/docs/d4/d72/classedash__packager_1_1media_1_1webm_1_1SingleSegmentSegmenter-members.html +++ b/docs/d4/d72/classedash__packager_1_1media_1_1webm_1_1SingleSegmentSegmenter-members.html @@ -127,7 +127,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d87/nalu__reader_8h_source.html b/docs/d4/d87/nalu__reader_8h_source.html index e34bae05c9..9d1bb5eb25 100644 --- a/docs/d4/d87/nalu__reader_8h_source.html +++ b/docs/d4/d87/nalu__reader_8h_source.html @@ -259,7 +259,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d8c/classedash__packager_1_1media_1_1MkvWriter.html b/docs/d4/d8c/classedash__packager_1_1media_1_1MkvWriter.html index b55307606e..ed638988cb 100644 --- a/docs/d4/d8c/classedash__packager_1_1media_1_1MkvWriter.html +++ b/docs/d4/d8c/classedash__packager_1_1media_1_1MkvWriter.html @@ -372,7 +372,7 @@ Public Member Functions diff --git a/docs/d4/d8f/structedash__packager_1_1media_1_1mp4_1_1MovieHeader-members.html b/docs/d4/d8f/structedash__packager_1_1media_1_1mp4_1_1MovieHeader-members.html index 2da30b338b..c6bb059b1e 100644 --- a/docs/d4/d8f/structedash__packager_1_1media_1_1mp4_1_1MovieHeader-members.html +++ b/docs/d4/d8f/structedash__packager_1_1media_1_1mp4_1_1MovieHeader-members.html @@ -119,7 +119,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d90/classedash__packager_1_1media_1_1mp4_1_1DecodingTimeIterator.html b/docs/d4/d90/classedash__packager_1_1media_1_1mp4_1_1DecodingTimeIterator.html index 69f1fd7c30..6089bae242 100644 --- a/docs/d4/d90/classedash__packager_1_1media_1_1mp4_1_1DecodingTimeIterator.html +++ b/docs/d4/d90/classedash__packager_1_1media_1_1mp4_1_1DecodingTimeIterator.html @@ -235,7 +235,7 @@ Public Member Functions diff --git a/docs/d4/d92/structedash__packager_1_1media_1_1mp4_1_1MediaData.html b/docs/d4/d92/structedash__packager_1_1media_1_1mp4_1_1MediaData.html index ced7b7814a..bb27aa6b27 100644 --- a/docs/d4/d92/structedash__packager_1_1media_1_1mp4_1_1MediaData.html +++ b/docs/d4/d92/structedash__packager_1_1media_1_1mp4_1_1MediaData.html @@ -136,7 +136,7 @@ Additional Inherited Members

      Detailed Description

      -

      Definition at line 732 of file box_definitions.h.

      +

      Definition at line 730 of file box_definitions.h.

      Member Function Documentation

      @@ -162,7 +162,7 @@ Additional Inherited Members

      Implements edash_packager::media::mp4::Box.

      -

      Definition at line 2410 of file box_definitions.cc.

      +

      Definition at line 2395 of file box_definitions.cc.

      @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d4/d93/structedash__packager_1_1media_1_1H264SEIMessage.html b/docs/d4/d93/structedash__packager_1_1media_1_1H264SEIMessage.html index 30d261ef99..b43b3b6bb4 100644 --- a/docs/d4/d93/structedash__packager_1_1media_1_1H264SEIMessage.html +++ b/docs/d4/d93/structedash__packager_1_1media_1_1H264SEIMessage.html @@ -127,7 +127,7 @@ union { diff --git a/docs/d4/d9b/classedash__packager_1_1AdaptationSet-members.html b/docs/d4/d9b/classedash__packager_1_1AdaptationSet-members.html index 0faff7dbb7..3fbee06254 100644 --- a/docs/d4/d9b/classedash__packager_1_1AdaptationSet-members.html +++ b/docs/d4/d9b/classedash__packager_1_1AdaptationSet-members.html @@ -119,7 +119,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/da1/classedash__packager_1_1media_1_1DecryptConfig.html b/docs/d4/da1/classedash__packager_1_1media_1_1DecryptConfig.html index d96d711499..7ada8c3537 100644 --- a/docs/d4/da1/classedash__packager_1_1media_1_1DecryptConfig.html +++ b/docs/d4/da1/classedash__packager_1_1media_1_1DecryptConfig.html @@ -173,7 +173,7 @@ static const size_t  diff --git a/docs/d4/da4/classedash__packager_1_1media_1_1AesCbcCtsEncryptor-members.html b/docs/d4/da4/classedash__packager_1_1media_1_1AesCbcCtsEncryptor-members.html index d77fc0160f..bb332a2b88 100644 --- a/docs/d4/da4/classedash__packager_1_1media_1_1AesCbcCtsEncryptor-members.html +++ b/docs/d4/da4/classedash__packager_1_1media_1_1AesCbcCtsEncryptor-members.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/da7/segmenter__test__base_8cc_source.html b/docs/d4/da7/segmenter__test__base_8cc_source.html index 3d99c42523..d7a9cc3fcd 100644 --- a/docs/d4/da7/segmenter__test__base_8cc_source.html +++ b/docs/d4/da7/segmenter__test__base_8cc_source.html @@ -309,7 +309,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/db2/cluster__builder_8h_source.html b/docs/d4/db2/cluster__builder_8h_source.html index 4795cc74d3..12c054f854 100644 --- a/docs/d4/db2/cluster__builder_8h_source.html +++ b/docs/d4/db2/cluster__builder_8h_source.html @@ -176,7 +176,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/dca/structedash__packager_1_1media_1_1H264SEIRecoveryPoint.html b/docs/d4/dca/structedash__packager_1_1media_1_1H264SEIRecoveryPoint.html index 21a9a18516..ecb7c42990 100644 --- a/docs/d4/dca/structedash__packager_1_1media_1_1H264SEIRecoveryPoint.html +++ b/docs/d4/dca/structedash__packager_1_1media_1_1H264SEIRecoveryPoint.html @@ -118,7 +118,7 @@ int changing_slice_group_i diff --git a/docs/d4/dcb/classedash__packager_1_1media_1_1Status-members.html b/docs/d4/dcb/classedash__packager_1_1media_1_1Status-members.html index 0b6eaa59aa..2a298b7e49 100644 --- a/docs/d4/dcb/classedash__packager_1_1media_1_1Status-members.html +++ b/docs/d4/dcb/classedash__packager_1_1media_1_1Status-members.html @@ -112,7 +112,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/dcc/structedash__packager_1_1media_1_1mp4_1_1SchemeType.html b/docs/d4/dcc/structedash__packager_1_1media_1_1mp4_1_1SchemeType.html index 222a02ab3a..8daf56ddba 100644 --- a/docs/d4/dcc/structedash__packager_1_1media_1_1mp4_1_1SchemeType.html +++ b/docs/d4/dcc/structedash__packager_1_1media_1_1mp4_1_1SchemeType.html @@ -148,7 +148,7 @@ Additional Inherited Members

      Detailed Description

      -

      Definition at line 139 of file box_definitions.h.

      +

      Definition at line 137 of file box_definitions.h.

      Member Function Documentation

      @@ -174,7 +174,7 @@ Additional Inherited Members

      Implements edash_packager::media::mp4::Box.

      -

      Definition at line 396 of file box_definitions.cc.

      +

      Definition at line 381 of file box_definitions.cc.

      @@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/d4/dcd/classedash__packager_1_1media_1_1OffsetByteQueue-members.html b/docs/d4/dcd/classedash__packager_1_1media_1_1OffsetByteQueue-members.html index 431b16e82a..f98e940456 100644 --- a/docs/d4/dcd/classedash__packager_1_1media_1_1OffsetByteQueue-members.html +++ b/docs/d4/dcd/classedash__packager_1_1media_1_1OffsetByteQueue-members.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/dce/structedash__packager_1_1media_1_1mp4_1_1SegmentReference.html b/docs/d4/dce/structedash__packager_1_1media_1_1mp4_1_1SegmentReference.html index 8bf38abdee..1d1a8b2d02 100644 --- a/docs/d4/dce/structedash__packager_1_1media_1_1mp4_1_1SegmentReference.html +++ b/docs/d4/dce/structedash__packager_1_1media_1_1mp4_1_1SegmentReference.html @@ -136,14 +136,14 @@ uint64_t earliest_presenta

      Detailed Description

      -

      Definition at line 699 of file box_definitions.h.

      +

      Definition at line 697 of file box_definitions.h.


      The documentation for this struct was generated from the following file: diff --git a/docs/d4/dd3/bit__reader_8h_source.html b/docs/d4/dd3/bit__reader_8h_source.html index dc16dd0075..bfd6f45f43 100644 --- a/docs/d4/dd3/bit__reader_8h_source.html +++ b/docs/d4/dd3/bit__reader_8h_source.html @@ -178,7 +178,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/dd9/structedash__packager_1_1media_1_1mp4_1_1TrackFragment.html b/docs/d4/dd9/structedash__packager_1_1media_1_1mp4_1_1TrackFragment.html index f51f81e67d..562bd5e812 100644 --- a/docs/d4/dd9/structedash__packager_1_1media_1_1mp4_1_1TrackFragment.html +++ b/docs/d4/dd9/structedash__packager_1_1media_1_1mp4_1_1TrackFragment.html @@ -160,7 +160,7 @@ Additional Inherited Members

      Detailed Description

      -

      Definition at line 677 of file box_definitions.h.

      +

      Definition at line 675 of file box_definitions.h.

      Member Function Documentation

      @@ -186,7 +186,7 @@ Additional Inherited Members

      Implements edash_packager::media::mp4::Box.

      -

      Definition at line 2272 of file box_definitions.cc.

      +

      Definition at line 2257 of file box_definitions.cc.

      @@ -197,7 +197,7 @@ Additional Inherited Members diff --git a/docs/d4/dde/webvtt__util_8h_source.html b/docs/d4/dde/webvtt__util_8h_source.html index 441da44020..2858b25f44 100644 --- a/docs/d4/dde/webvtt__util_8h_source.html +++ b/docs/d4/dde/webvtt__util_8h_source.html @@ -122,7 +122,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/de4/structedash__packager_1_1media_1_1SubsampleEntry.html b/docs/d4/de4/structedash__packager_1_1media_1_1SubsampleEntry.html index 59f2155d40..0361338355 100644 --- a/docs/d4/de4/structedash__packager_1_1media_1_1SubsampleEntry.html +++ b/docs/d4/de4/structedash__packager_1_1media_1_1SubsampleEntry.html @@ -122,7 +122,7 @@ uint32_t cipher_bytes< diff --git a/docs/d4/de5/classedash__packager_1_1media_1_1mp4_1_1CompositionOffsetIterator.html b/docs/d4/de5/classedash__packager_1_1media_1_1mp4_1_1CompositionOffsetIterator.html index 109f6625ad..338c1aee70 100644 --- a/docs/d4/de5/classedash__packager_1_1media_1_1mp4_1_1CompositionOffsetIterator.html +++ b/docs/d4/de5/classedash__packager_1_1media_1_1mp4_1_1CompositionOffsetIterator.html @@ -225,7 +225,7 @@ Public Member Functions diff --git a/docs/d4/de7/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize-members.html b/docs/d4/de7/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize-members.html index e1aa304313..fe6f5bb316 100644 --- a/docs/d4/de7/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize-members.html +++ b/docs/d4/de7/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize-members.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/df5/request__signer_8cc_source.html b/docs/d4/df5/request__signer_8cc_source.html index 96f10acaea..e1d314e191 100644 --- a/docs/d4/df5/request__signer_8cc_source.html +++ b/docs/d4/df5/request__signer_8cc_source.html @@ -176,7 +176,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/df9/structedash__packager_1_1MpdOptions-members.html b/docs/d4/df9/structedash__packager_1_1MpdOptions-members.html index e16947385d..f0241a9350 100644 --- a/docs/d4/df9/structedash__packager_1_1MpdOptions-members.html +++ b/docs/d4/df9/structedash__packager_1_1MpdOptions-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/dff/webm__media__parser_8cc_source.html b/docs/d4/dff/webm__media__parser_8cc_source.html index fbe8177914..dfb3df6cc9 100644 --- a/docs/d4/dff/webm__media__parser_8cc_source.html +++ b/docs/d4/dff/webm__media__parser_8cc_source.html @@ -364,7 +364,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d02/classedash__packager_1_1media_1_1ProducerConsumerQueue.html b/docs/d5/d02/classedash__packager_1_1media_1_1ProducerConsumerQueue.html index 71926cc0f8..8ed8b7b4bb 100644 --- a/docs/d5/d02/classedash__packager_1_1media_1_1ProducerConsumerQueue.html +++ b/docs/d5/d02/classedash__packager_1_1media_1_1ProducerConsumerQueue.html @@ -501,7 +501,7 @@ template<class T > diff --git a/docs/d5/d15/producer__consumer__queue_8h_source.html b/docs/d5/d15/producer__consumer__queue_8h_source.html index 274d1063a3..1add636d9f 100644 --- a/docs/d5/d15/producer__consumer__queue_8h_source.html +++ b/docs/d5/d15/producer__consumer__queue_8h_source.html @@ -374,7 +374,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d18/structedash__packager_1_1media_1_1mp4_1_1CueIDBox-members.html b/docs/d5/d18/structedash__packager_1_1media_1_1mp4_1_1CueIDBox-members.html index b41ca405b7..451358d9c2 100644 --- a/docs/d5/d18/structedash__packager_1_1media_1_1mp4_1_1CueIDBox-members.html +++ b/docs/d5/d18/structedash__packager_1_1media_1_1mp4_1_1CueIDBox-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d1a/ts__section_8h_source.html b/docs/d5/d1a/ts__section_8h_source.html index 869b62d079..cf25856792 100644 --- a/docs/d5/d1a/ts__section_8h_source.html +++ b/docs/d5/d1a/ts__section_8h_source.html @@ -134,7 +134,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d1f/classedash__packager_1_1media_1_1BufferReader-members.html b/docs/d5/d1f/classedash__packager_1_1media_1_1BufferReader-members.html index 78b0af06ea..b80a514002 100644 --- a/docs/d5/d1f/classedash__packager_1_1media_1_1BufferReader-members.html +++ b/docs/d5/d1f/classedash__packager_1_1media_1_1BufferReader-members.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d26/classedash__packager_1_1media_1_1MediaParser-members.html b/docs/d5/d26/classedash__packager_1_1media_1_1MediaParser-members.html index 4f408996b2..9b0c0d89d9 100644 --- a/docs/d5/d26/classedash__packager_1_1media_1_1MediaParser-members.html +++ b/docs/d5/d26/classedash__packager_1_1media_1_1MediaParser-members.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d27/key__fetcher_8cc_source.html b/docs/d5/d27/key__fetcher_8cc_source.html index cd063a2702..317183038b 100644 --- a/docs/d5/d27/key__fetcher_8cc_source.html +++ b/docs/d5/d27/key__fetcher_8cc_source.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d30/classedash__packager_1_1media_1_1H264ByteToUnitStreamConverter.html b/docs/d5/d30/classedash__packager_1_1media_1_1H264ByteToUnitStreamConverter.html index 7c982e2e7d..c51436ac68 100644 --- a/docs/d5/d30/classedash__packager_1_1media_1_1H264ByteToUnitStreamConverter.html +++ b/docs/d5/d30/classedash__packager_1_1media_1_1H264ByteToUnitStreamConverter.html @@ -192,7 +192,7 @@ static const size_t kUnitS diff --git a/docs/d5/d40/webm_2single__segment__segmenter_8h_source.html b/docs/d5/d40/webm_2single__segment__segmenter_8h_source.html index a1ec5a8904..79cd55faa4 100644 --- a/docs/d5/d40/webm_2single__segment__segmenter_8h_source.html +++ b/docs/d5/d40/webm_2single__segment__segmenter_8h_source.html @@ -154,7 +154,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d41/hevc__decoder__configuration_8cc_source.html b/docs/d5/d41/hevc__decoder__configuration_8cc_source.html index c1d4c968aa..4e3c6a5645 100644 --- a/docs/d5/d41/hevc__decoder__configuration_8cc_source.html +++ b/docs/d5/d41/hevc__decoder__configuration_8cc_source.html @@ -256,7 +256,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d4a/classedash__packager_1_1media_1_1mp2t_1_1TsPacket-members.html b/docs/d5/d4a/classedash__packager_1_1media_1_1mp2t_1_1TsPacket-members.html index 26d56cd5c7..fd8f6528ef 100644 --- a/docs/d5/d4a/classedash__packager_1_1media_1_1mp2t_1_1TsPacket-members.html +++ b/docs/d5/d4a/classedash__packager_1_1media_1_1mp2t_1_1TsPacket-members.html @@ -107,7 +107,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d4d/box_8cc_source.html b/docs/d5/d4d/box_8cc_source.html index b26473ba25..25a69bd4a6 100644 --- a/docs/d5/d4d/box_8cc_source.html +++ b/docs/d5/d4d/box_8cc_source.html @@ -199,7 +199,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d52/ts__section__pes_8h_source.html b/docs/d5/d52/ts__section__pes_8h_source.html index 07172f75d9..35f247e58b 100644 --- a/docs/d5/d52/ts__section__pes_8h_source.html +++ b/docs/d5/d52/ts__section__pes_8h_source.html @@ -161,7 +161,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d54/classedash__packager_1_1media_1_1mp4_1_1AACAudioSpecificConfig-members.html b/docs/d5/d54/classedash__packager_1_1media_1_1mp4_1_1AACAudioSpecificConfig-members.html index 96edf513f1..737c8f8804 100644 --- a/docs/d5/d54/classedash__packager_1_1media_1_1mp4_1_1AACAudioSpecificConfig-members.html +++ b/docs/d5/d54/classedash__packager_1_1media_1_1mp4_1_1AACAudioSpecificConfig-members.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d62/classedash__packager_1_1media_1_1RsaPrivateKey.html b/docs/d5/d62/classedash__packager_1_1media_1_1RsaPrivateKey.html index bf17697a5b..503c8c906f 100644 --- a/docs/d5/d62/classedash__packager_1_1media_1_1RsaPrivateKey.html +++ b/docs/d5/d62/classedash__packager_1_1media_1_1RsaPrivateKey.html @@ -224,7 +224,7 @@ Static Public Member Functions diff --git a/docs/d5/d63/network__util_8cc_source.html b/docs/d5/d63/network__util_8cc_source.html index 40c744719d..9506183c66 100644 --- a/docs/d5/d63/network__util_8cc_source.html +++ b/docs/d5/d63/network__util_8cc_source.html @@ -122,7 +122,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d6e/structedash__packager_1_1media_1_1mp4_1_1MovieExtendsHeader-members.html b/docs/d5/d6e/structedash__packager_1_1media_1_1mp4_1_1MovieExtendsHeader-members.html index a32a26d5f3..22d51eedd3 100644 --- a/docs/d5/d6e/structedash__packager_1_1media_1_1mp4_1_1MovieExtendsHeader-members.html +++ b/docs/d5/d6e/structedash__packager_1_1media_1_1mp4_1_1MovieExtendsHeader-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d6f/vlog__flags_8cc_source.html b/docs/d5/d6f/vlog__flags_8cc_source.html index 46250266cf..2ac3c8592c 100644 --- a/docs/d5/d6f/vlog__flags_8cc_source.html +++ b/docs/d5/d6f/vlog__flags_8cc_source.html @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d73/vp__codec__configuration_8h_source.html b/docs/d5/d73/vp__codec__configuration_8h_source.html index 052fa94206..0beabd7d52 100644 --- a/docs/d5/d73/vp__codec__configuration_8h_source.html +++ b/docs/d5/d73/vp__codec__configuration_8h_source.html @@ -192,7 +192,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d78/structedash__packager_1_1media_1_1mp4_1_1SampleEncryption.html b/docs/d5/d78/structedash__packager_1_1media_1_1mp4_1_1SampleEncryption.html index 49eab10015..0b4355b83f 100644 --- a/docs/d5/d78/structedash__packager_1_1media_1_1mp4_1_1SampleEncryption.html +++ b/docs/d5/d78/structedash__packager_1_1media_1_1mp4_1_1SampleEncryption.html @@ -160,7 +160,7 @@ Additional Inherited Members

      Detailed Description

      -

      Definition at line 110 of file box_definitions.h.

      +

      Definition at line 108 of file box_definitions.h.

      Member Function Documentation

      @@ -186,7 +186,7 @@ Additional Inherited Members

      Implements edash_packager::media::mp4::Box.

      -

      Definition at line 315 of file box_definitions.cc.

      +

      Definition at line 300 of file box_definitions.cc.

      @@ -223,7 +223,7 @@ Additional Inherited Members
      Returns
      true on success, false otherwise.
      -

      Definition at line 364 of file box_definitions.cc.

      +

      Definition at line 349 of file box_definitions.cc.

      @@ -239,7 +239,7 @@ Additional Inherited Members

      We may not know iv_size before reading this box. In this case, we will store sample encryption data for parsing later when iv_size is known.

      -

      Definition at line 127 of file box_definitions.h.

      +

      Definition at line 125 of file box_definitions.h.

      @@ -250,7 +250,7 @@ Additional Inherited Members diff --git a/docs/d5/d7a/structedash__packager_1_1Element.html b/docs/d5/d7a/structedash__packager_1_1Element.html index 863679f424..3b42dfacb0 100644 --- a/docs/d5/d7a/structedash__packager_1_1Element.html +++ b/docs/d5/d7a/structedash__packager_1_1Element.html @@ -120,7 +120,7 @@ std::vector< diff --git a/docs/d5/d7b/box__definitions_8h_source.html b/docs/d5/d7b/box__definitions_8h_source.html index 54b4fb73a1..121004fdb3 100644 --- a/docs/d5/d7b/box__definitions_8h_source.html +++ b/docs/d5/d7b/box__definitions_8h_source.html @@ -146,808 +146,806 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
      58  DECLARE_BOX_METHODS(ProtectionSystemSpecificHeader);
      59 
      -
      60  std::vector<uint8_t> system_id;
      -
      61  std::vector<uint8_t> data;
      -
      62  std::vector<uint8_t> raw_box;
      -
      63 };
      -
      64 
      - -
      66  DECLARE_BOX_METHODS(SampleAuxiliaryInformationOffset);
      -
      67 
      -
      68  std::vector<uint64_t> offsets;
      -
      69 };
      -
      70 
      - -
      72  DECLARE_BOX_METHODS(SampleAuxiliaryInformationSize);
      -
      73 
      -
      74  uint8_t default_sample_info_size;
      -
      75  uint32_t sample_count;
      -
      76  std::vector<uint8_t> sample_info_sizes;
      -
      77 };
      -
      78 
      - - - -
      88  bool ReadWrite(uint8_t iv_size,
      -
      89  bool has_subsamples,
      -
      90  BoxBuffer* buffer);
      -
      97  bool ParseFromBuffer(uint8_t iv_size,
      -
      98  bool has_subsamples,
      -
      99  BufferReader* reader);
      -
      101  uint32_t ComputeSize() const;
      -
      104  uint32_t GetTotalSizeOfSubsamples() const;
      -
      105 
      -
      106  std::vector<uint8_t> initialization_vector;
      -
      107  std::vector<SubsampleEntry> subsamples;
      -
      108 };
      -
      109 
      - -
      111  enum SampleEncryptionFlags {
      -
      112  kUseSubsampleEncryption = 2,
      -
      113  };
      -
      114 
      -
      115  DECLARE_BOX_METHODS(SampleEncryption);
      - -
      122  size_t iv_size,
      -
      123  std::vector<SampleEncryptionEntry>* sample_encryption_entries) const;
      -
      124 
      -
      127  std::vector<uint8_t> sample_encryption_data;
      -
      128 
      -
      129  size_t iv_size;
      -
      130  std::vector<SampleEncryptionEntry> sample_encryption_entries;
      -
      131 };
      -
      132 
      -
      133 struct OriginalFormat : Box {
      -
      134  DECLARE_BOX_METHODS(OriginalFormat);
      -
      135 
      -
      136  FourCC format;
      -
      137 };
      -
      138 
      -
      139 struct SchemeType : FullBox {
      -
      140  DECLARE_BOX_METHODS(SchemeType);
      -
      141 
      -
      142  FourCC type;
      -
      143  uint32_t version;
      -
      144 };
      -
      145 
      - -
      147  DECLARE_BOX_METHODS(TrackEncryption);
      -
      148 
      -
      149  // Note: this definition is specific to the CENC protection type.
      -
      150  bool is_encrypted;
      -
      151  uint8_t default_iv_size;
      -
      152  std::vector<uint8_t> default_kid;
      -
      153 };
      -
      154 
      -
      155 struct SchemeInfo : Box {
      -
      156  DECLARE_BOX_METHODS(SchemeInfo);
      -
      157 
      -
      158  TrackEncryption track_encryption;
      -
      159 };
      -
      160 
      - -
      162  DECLARE_BOX_METHODS(ProtectionSchemeInfo);
      -
      163 
      -
      164  OriginalFormat format;
      -
      165  SchemeType type;
      -
      166  SchemeInfo info;
      -
      167 };
      -
      168 
      - -
      170  DECLARE_BOX_METHODS(MovieHeader);
      -
      171 
      -
      172  uint64_t creation_time;
      -
      173  uint64_t modification_time;
      -
      174  uint32_t timescale;
      -
      175  uint64_t duration;
      -
      176  int32_t rate;
      -
      177  int16_t volume;
      -
      178  uint32_t next_track_id;
      -
      179 };
      -
      180 
      - -
      182  enum TrackHeaderFlags {
      -
      183  kTrackEnabled = 0x000001,
      -
      184  kTrackInMovie = 0x000002,
      -
      185  kTrackInPreview = 0x000004,
      -
      186  };
      +
      60  std::vector<uint8_t> raw_box;
      +
      61 };
      +
      62 
      + +
      64  DECLARE_BOX_METHODS(SampleAuxiliaryInformationOffset);
      +
      65 
      +
      66  std::vector<uint64_t> offsets;
      +
      67 };
      +
      68 
      + +
      70  DECLARE_BOX_METHODS(SampleAuxiliaryInformationSize);
      +
      71 
      +
      72  uint8_t default_sample_info_size;
      +
      73  uint32_t sample_count;
      +
      74  std::vector<uint8_t> sample_info_sizes;
      +
      75 };
      +
      76 
      + + + +
      86  bool ReadWrite(uint8_t iv_size,
      +
      87  bool has_subsamples,
      +
      88  BoxBuffer* buffer);
      +
      95  bool ParseFromBuffer(uint8_t iv_size,
      +
      96  bool has_subsamples,
      +
      97  BufferReader* reader);
      +
      99  uint32_t ComputeSize() const;
      +
      102  uint32_t GetTotalSizeOfSubsamples() const;
      +
      103 
      +
      104  std::vector<uint8_t> initialization_vector;
      +
      105  std::vector<SubsampleEntry> subsamples;
      +
      106 };
      +
      107 
      + +
      109  enum SampleEncryptionFlags {
      +
      110  kUseSubsampleEncryption = 2,
      +
      111  };
      +
      112 
      +
      113  DECLARE_BOX_METHODS(SampleEncryption);
      + +
      120  size_t iv_size,
      +
      121  std::vector<SampleEncryptionEntry>* sample_encryption_entries) const;
      +
      122 
      +
      125  std::vector<uint8_t> sample_encryption_data;
      +
      126 
      +
      127  size_t iv_size;
      +
      128  std::vector<SampleEncryptionEntry> sample_encryption_entries;
      +
      129 };
      +
      130 
      +
      131 struct OriginalFormat : Box {
      +
      132  DECLARE_BOX_METHODS(OriginalFormat);
      +
      133 
      +
      134  FourCC format;
      +
      135 };
      +
      136 
      +
      137 struct SchemeType : FullBox {
      +
      138  DECLARE_BOX_METHODS(SchemeType);
      +
      139 
      +
      140  FourCC type;
      +
      141  uint32_t version;
      +
      142 };
      +
      143 
      + +
      145  DECLARE_BOX_METHODS(TrackEncryption);
      +
      146 
      +
      147  // Note: this definition is specific to the CENC protection type.
      +
      148  bool is_encrypted;
      +
      149  uint8_t default_iv_size;
      +
      150  std::vector<uint8_t> default_kid;
      +
      151 };
      +
      152 
      +
      153 struct SchemeInfo : Box {
      +
      154  DECLARE_BOX_METHODS(SchemeInfo);
      +
      155 
      +
      156  TrackEncryption track_encryption;
      +
      157 };
      +
      158 
      + +
      160  DECLARE_BOX_METHODS(ProtectionSchemeInfo);
      +
      161 
      +
      162  OriginalFormat format;
      +
      163  SchemeType type;
      +
      164  SchemeInfo info;
      +
      165 };
      +
      166 
      + +
      168  DECLARE_BOX_METHODS(MovieHeader);
      +
      169 
      +
      170  uint64_t creation_time;
      +
      171  uint64_t modification_time;
      +
      172  uint32_t timescale;
      +
      173  uint64_t duration;
      +
      174  int32_t rate;
      +
      175  int16_t volume;
      +
      176  uint32_t next_track_id;
      +
      177 };
      +
      178 
      + +
      180  enum TrackHeaderFlags {
      +
      181  kTrackEnabled = 0x000001,
      +
      182  kTrackInMovie = 0x000002,
      +
      183  kTrackInPreview = 0x000004,
      +
      184  };
      +
      185 
      +
      186  DECLARE_BOX_METHODS(TrackHeader);
      187 
      -
      188  DECLARE_BOX_METHODS(TrackHeader);
      -
      189 
      -
      190  uint64_t creation_time;
      -
      191  uint64_t modification_time;
      -
      192  uint32_t track_id;
      -
      193  uint64_t duration;
      -
      194  int16_t layer;
      -
      195  int16_t alternate_group;
      -
      196  int16_t volume;
      -
      197  // width and height specify the track's visual presentation size as
      -
      198  // fixed-point 16.16 values.
      -
      199  uint32_t width;
      -
      200  uint32_t height;
      -
      201 };
      -
      202 
      - -
      204  uint64_t segment_duration;
      -
      205  int64_t media_time;
      -
      206  int16_t media_rate_integer;
      -
      207  int16_t media_rate_fraction;
      -
      208 };
      -
      209 
      -
      210 struct EditList : FullBox {
      -
      211  DECLARE_BOX_METHODS(EditList);
      -
      212 
      -
      213  std::vector<EditListEntry> edits;
      -
      214 };
      -
      215 
      -
      216 struct Edit : Box {
      -
      217  DECLARE_BOX_METHODS(Edit);
      -
      218 
      -
      219  EditList list;
      -
      220 };
      -
      221 
      - -
      223  DECLARE_BOX_METHODS(HandlerReference);
      -
      224 
      -
      225  FourCC handler_type;
      -
      226 };
      -
      227 
      -
      228 struct Language {
      -
      229  bool ReadWrite(BoxBuffer* buffer);
      -
      230  uint32_t ComputeSize() const;
      -
      231 
      -
      232  std::string code;
      -
      233 };
      -
      234 
      -
      236 struct PrivFrame {
      -
      237  bool ReadWrite(BoxBuffer* buffer);
      -
      238  uint32_t ComputeSize() const;
      -
      239 
      -
      240  std::string owner;
      -
      241  std::string value;
      -
      242 };
      -
      243 
      -
      246 struct ID3v2 : FullBox {
      -
      247  DECLARE_BOX_METHODS(ID3v2);
      +
      188  uint64_t creation_time;
      +
      189  uint64_t modification_time;
      +
      190  uint32_t track_id;
      +
      191  uint64_t duration;
      +
      192  int16_t layer;
      +
      193  int16_t alternate_group;
      +
      194  int16_t volume;
      +
      195  // width and height specify the track's visual presentation size as
      +
      196  // fixed-point 16.16 values.
      +
      197  uint32_t width;
      +
      198  uint32_t height;
      +
      199 };
      +
      200 
      + +
      202  uint64_t segment_duration;
      +
      203  int64_t media_time;
      +
      204  int16_t media_rate_integer;
      +
      205  int16_t media_rate_fraction;
      +
      206 };
      +
      207 
      +
      208 struct EditList : FullBox {
      +
      209  DECLARE_BOX_METHODS(EditList);
      +
      210 
      +
      211  std::vector<EditListEntry> edits;
      +
      212 };
      +
      213 
      +
      214 struct Edit : Box {
      +
      215  DECLARE_BOX_METHODS(Edit);
      +
      216 
      +
      217  EditList list;
      +
      218 };
      +
      219 
      + +
      221  DECLARE_BOX_METHODS(HandlerReference);
      +
      222 
      +
      223  FourCC handler_type;
      +
      224 };
      +
      225 
      +
      226 struct Language {
      +
      227  bool ReadWrite(BoxBuffer* buffer);
      +
      228  uint32_t ComputeSize() const;
      +
      229 
      +
      230  std::string code;
      +
      231 };
      +
      232 
      +
      234 struct PrivFrame {
      +
      235  bool ReadWrite(BoxBuffer* buffer);
      +
      236  uint32_t ComputeSize() const;
      +
      237 
      +
      238  std::string owner;
      +
      239  std::string value;
      +
      240 };
      +
      241 
      +
      244 struct ID3v2 : FullBox {
      +
      245  DECLARE_BOX_METHODS(ID3v2);
      +
      246 
      +
      247  Language language;
      248 
      -
      249  Language language;
      -
      250 
      - -
      253 };
      -
      254 
      -
      255 struct Metadata : FullBox {
      -
      256  DECLARE_BOX_METHODS(Metadata);
      -
      257 
      -
      258  HandlerReference handler;
      -
      259  ID3v2 id3v2;
      -
      260 };
      -
      261 
      - -
      263  DECLARE_BOX_METHODS(CodecConfigurationRecord);
      -
      264 
      -
      265  FourCC box_type;
      -
      266  // Contains full codec configuration record, including possible extension
      -
      267  // boxes.
      -
      268  std::vector<uint8_t> data;
      -
      269 };
      -
      270 
      - -
      272  DECLARE_BOX_METHODS(PixelAspectRatio);
      -
      273 
      -
      274  uint32_t h_spacing;
      -
      275  uint32_t v_spacing;
      -
      276 };
      -
      277 
      - -
      279  DECLARE_BOX_METHODS(VideoSampleEntry);
      -
      280  // Returns actual format of this sample entry.
      -
      281  FourCC GetActualFormat() const {
      -
      282  return format == FOURCC_ENCV ? sinf.format.format : format;
      -
      283  }
      -
      284 
      -
      285  FourCC format;
      -
      286  uint16_t data_reference_index;
      -
      287  uint16_t width;
      -
      288  uint16_t height;
      -
      289 
      -
      290  PixelAspectRatio pixel_aspect;
      - -
      292  CodecConfigurationRecord codec_config_record;
      -
      293 };
      -
      294 
      - -
      296  DECLARE_BOX_METHODS(ElementaryStreamDescriptor);
      -
      297 
      -
      298  AACAudioSpecificConfig aac_audio_specific_config;
      -
      299  ESDescriptor es_descriptor;
      -
      300 };
      -
      301 
      -
      302 struct DTSSpecific : Box {
      -
      303  DECLARE_BOX_METHODS(DTSSpecific);
      -
      304 
      -
      305  uint32_t sampling_frequency;
      -
      306  uint32_t max_bitrate;
      -
      307  uint32_t avg_bitrate;
      -
      308  uint8_t pcm_sample_depth;
      -
      309  std::vector<uint8_t> extra_data;
      -
      310 };
      -
      311 
      -
      312 struct AC3Specific : Box {
      -
      313  DECLARE_BOX_METHODS(AC3Specific);
      -
      314 
      -
      315  std::vector<uint8_t> data;
      -
      316 };
      -
      317 
      -
      318 struct EC3Specific : Box {
      -
      319  DECLARE_BOX_METHODS(EC3Specific);
      -
      320 
      -
      321  std::vector<uint8_t> data;
      -
      322 };
      -
      323 
      - -
      325  DECLARE_BOX_METHODS(AudioSampleEntry);
      -
      326  // Returns actual format of this sample entry.
      -
      327  FourCC GetActualFormat() const {
      -
      328  return format == FOURCC_ENCA ? sinf.format.format : format;
      -
      329  }
      -
      330 
      -
      331  FourCC format;
      -
      332  uint16_t data_reference_index;
      -
      333  uint16_t channelcount;
      -
      334  uint16_t samplesize;
      -
      335  uint32_t samplerate;
      + +
      251 };
      +
      252 
      +
      253 struct Metadata : FullBox {
      +
      254  DECLARE_BOX_METHODS(Metadata);
      +
      255 
      +
      256  HandlerReference handler;
      +
      257  ID3v2 id3v2;
      +
      258 };
      +
      259 
      + +
      261  DECLARE_BOX_METHODS(CodecConfigurationRecord);
      +
      262 
      +
      263  FourCC box_type;
      +
      264  // Contains full codec configuration record, including possible extension
      +
      265  // boxes.
      +
      266  std::vector<uint8_t> data;
      +
      267 };
      +
      268 
      + +
      270  DECLARE_BOX_METHODS(PixelAspectRatio);
      +
      271 
      +
      272  uint32_t h_spacing;
      +
      273  uint32_t v_spacing;
      +
      274 };
      +
      275 
      + +
      277  DECLARE_BOX_METHODS(VideoSampleEntry);
      +
      278  // Returns actual format of this sample entry.
      +
      279  FourCC GetActualFormat() const {
      +
      280  return format == FOURCC_ENCV ? sinf.format.format : format;
      +
      281  }
      +
      282 
      +
      283  FourCC format;
      +
      284  uint16_t data_reference_index;
      +
      285  uint16_t width;
      +
      286  uint16_t height;
      +
      287 
      +
      288  PixelAspectRatio pixel_aspect;
      + +
      290  CodecConfigurationRecord codec_config_record;
      +
      291 };
      +
      292 
      + +
      294  DECLARE_BOX_METHODS(ElementaryStreamDescriptor);
      +
      295 
      +
      296  AACAudioSpecificConfig aac_audio_specific_config;
      +
      297  ESDescriptor es_descriptor;
      +
      298 };
      +
      299 
      +
      300 struct DTSSpecific : Box {
      +
      301  DECLARE_BOX_METHODS(DTSSpecific);
      +
      302 
      +
      303  uint32_t sampling_frequency;
      +
      304  uint32_t max_bitrate;
      +
      305  uint32_t avg_bitrate;
      +
      306  uint8_t pcm_sample_depth;
      +
      307  std::vector<uint8_t> extra_data;
      +
      308 };
      +
      309 
      +
      310 struct AC3Specific : Box {
      +
      311  DECLARE_BOX_METHODS(AC3Specific);
      +
      312 
      +
      313  std::vector<uint8_t> data;
      +
      314 };
      +
      315 
      +
      316 struct EC3Specific : Box {
      +
      317  DECLARE_BOX_METHODS(EC3Specific);
      +
      318 
      +
      319  std::vector<uint8_t> data;
      +
      320 };
      +
      321 
      + +
      323  DECLARE_BOX_METHODS(AudioSampleEntry);
      +
      324  // Returns actual format of this sample entry.
      +
      325  FourCC GetActualFormat() const {
      +
      326  return format == FOURCC_ENCA ? sinf.format.format : format;
      +
      327  }
      +
      328 
      +
      329  FourCC format;
      +
      330  uint16_t data_reference_index;
      +
      331  uint16_t channelcount;
      +
      332  uint16_t samplesize;
      +
      333  uint32_t samplerate;
      +
      334 
      +
      336 
      - -
      338 
      - -
      340  DTSSpecific ddts;
      -
      341  AC3Specific dac3;
      -
      342  EC3Specific dec3;
      -
      343 };
      -
      344 
      - -
      346  DECLARE_BOX_METHODS(WebVTTConfigurationBox);
      -
      347  std::string config;
      -
      348 };
      -
      349 
      - -
      351  DECLARE_BOX_METHODS(WebVTTSourceLabelBox);
      -
      352  std::string source_label;
      -
      353 };
      -
      354 
      - -
      356  DECLARE_BOX_METHODS(TextSampleEntry);
      -
      357 
      -
      358  // Specifies fourcc of this sample entry. It needs to be set on write, e.g.
      -
      359  // set to 'wvtt' to write WVTTSampleEntry; On read, it is recovered from box
      -
      360  // header.
      -
      361  FourCC format;
      -
      362  uint16_t data_reference_index;
      -
      363 
      -
      364  // Sub boxes for wvtt text sample entry.
      -
      365  WebVTTConfigurationBox config;
      -
      366  WebVTTSourceLabelBox label;
      -
      367  // Optional MPEG4BitRateBox.
      -
      368 };
      -
      369 
      - -
      371  DECLARE_BOX_METHODS(SampleDescription);
      -
      372 
      -
      373  TrackType type;
      -
      374  // TODO(kqyang): Clean up the code to have one single member, e.g. by creating
      -
      375  // SampleEntry struct, std::vector<SampleEntry> sample_entries.
      -
      376  std::vector<VideoSampleEntry> video_entries;
      -
      377  std::vector<AudioSampleEntry> audio_entries;
      -
      378  std::vector<TextSampleEntry> text_entries;
      -
      379 };
      -
      380 
      -
      381 struct DecodingTime {
      -
      382  uint32_t sample_count;
      -
      383  uint32_t sample_delta;
      -
      384 };
      -
      385 
      -
      386 // stts.
      - -
      388  DECLARE_BOX_METHODS(DecodingTimeToSample);
      -
      389 
      -
      390  std::vector<DecodingTime> decoding_time;
      -
      391 };
      -
      392 
      - -
      394  uint32_t sample_count;
      -
      395  // If version == 0, sample_offset is uint32_t;
      -
      396  // If version == 1, sample_offset is int32_t.
      -
      397  // Use int64_t so both can be supported properly.
      -
      398  int64_t sample_offset;
      -
      399 };
      -
      400 
      -
      401 // ctts. Optional.
      - -
      403  DECLARE_BOX_METHODS(CompositionTimeToSample);
      -
      404 
      -
      405  std::vector<CompositionOffset> composition_offset;
      -
      406 };
      -
      407 
      -
      408 struct ChunkInfo {
      -
      409  uint32_t first_chunk;
      -
      410  uint32_t samples_per_chunk;
      -
      411  uint32_t sample_description_index;
      -
      412 };
      -
      413 
      -
      414 // stsc.
      - -
      416  DECLARE_BOX_METHODS(SampleToChunk);
      -
      417 
      -
      418  std::vector<ChunkInfo> chunk_info;
      -
      419 };
      -
      420 
      -
      421 // stsz.
      -
      422 struct SampleSize : FullBox {
      -
      423  DECLARE_BOX_METHODS(SampleSize);
      -
      424 
      -
      425  uint32_t sample_size;
      -
      426  uint32_t sample_count;
      -
      427  std::vector<uint32_t> sizes;
      -
      428 };
      -
      429 
      -
      430 // stz2.
      - -
      432  DECLARE_BOX_METHODS(CompactSampleSize);
      -
      433 
      -
      434  uint8_t field_size;
      -
      435  std::vector<uint32_t> sizes;
      -
      436 };
      -
      437 
      -
      438 // co64.
      - -
      440  DECLARE_BOX_METHODS(ChunkLargeOffset);
      -
      441 
      -
      442  std::vector<uint64_t> offsets;
      -
      443 };
      -
      444 
      -
      445 // stco.
      - -
      447  DECLARE_BOX_METHODS(ChunkOffset);
      -
      448 };
      -
      449 
      -
      450 // stss. Optional.
      -
      451 struct SyncSample : FullBox {
      -
      452  DECLARE_BOX_METHODS(SyncSample);
      -
      453 
      -
      454  std::vector<uint32_t> sample_number;
      -
      455 };
      -
      456 
      -
      457 struct SampleTable : Box {
      -
      458  DECLARE_BOX_METHODS(SampleTable);
      -
      459 
      -
      460  SampleDescription description;
      -
      461  DecodingTimeToSample decoding_time_to_sample;
      -
      462  CompositionTimeToSample composition_time_to_sample;
      -
      463  SampleToChunk sample_to_chunk;
      -
      464  // Either SampleSize or CompactSampleSize must present. Store in SampleSize.
      -
      465  SampleSize sample_size;
      -
      466  // Either ChunkOffset or ChunkLargeOffset must present. Store in
      -
      467  // ChunkLargeOffset.
      -
      468  ChunkLargeOffset chunk_large_offset;
      -
      469  SyncSample sync_sample;
      -
      470 };
      -
      471 
      - -
      473  DECLARE_BOX_METHODS(MediaHeader);
      -
      474 
      -
      475  uint64_t creation_time;
      -
      476  uint64_t modification_time;
      -
      477  uint32_t timescale;
      -
      478  uint64_t duration;
      -
      479  Language language;
      -
      480 };
      -
      481 
      - -
      483  DECLARE_BOX_METHODS(VideoMediaHeader);
      -
      484 
      -
      485  uint16_t graphicsmode;
      -
      486  uint16_t opcolor_red;
      -
      487  uint16_t opcolor_green;
      -
      488  uint16_t opcolor_blue;
      -
      489 };
      -
      490 
      - -
      492  DECLARE_BOX_METHODS(SoundMediaHeader);
      -
      493 
      -
      494  uint16_t balance;
      -
      495 };
      -
      496 
      - -
      498  DECLARE_BOX_METHODS(SubtitleMediaHeader);
      -
      499 };
      -
      500 
      - -
      502  DECLARE_BOX_METHODS(DataEntryUrl);
      -
      503 
      -
      504  std::vector<uint8_t> location;
      -
      505 };
      -
      506 
      - -
      508  DECLARE_BOX_METHODS(DataReference);
      -
      509 
      -
      510  // data entry can be either url or urn box. Fix to url box for now.
      -
      511  std::vector<DataEntryUrl> data_entry;
      -
      512 };
      -
      513 
      - -
      515  DECLARE_BOX_METHODS(DataInformation);
      -
      516 
      -
      517  DataReference dref;
      -
      518 };
      -
      519 
      - -
      521  DECLARE_BOX_METHODS(MediaInformation);
      -
      522 
      -
      523  DataInformation dinf;
      -
      524  SampleTable sample_table;
      -
      525  // Exactly one specific meida header shall be present, vmhd, smhd, hmhd, nmhd.
      -
      526  VideoMediaHeader vmhd;
      -
      527  SoundMediaHeader smhd;
      -
      528  SubtitleMediaHeader sthd;
      -
      529 };
      -
      530 
      -
      531 struct Media : Box {
      -
      532  DECLARE_BOX_METHODS(Media);
      -
      533 
      -
      534  MediaHeader header;
      -
      535  HandlerReference handler;
      -
      536  MediaInformation information;
      -
      537 };
      -
      538 
      -
      539 struct Track : Box {
      -
      540  DECLARE_BOX_METHODS(Track);
      -
      541 
      -
      542  TrackHeader header;
      -
      543  Media media;
      -
      544  Edit edit;
      -
      545  SampleEncryption sample_encryption;
      -
      546 };
      -
      547 
      - -
      549  DECLARE_BOX_METHODS(MovieExtendsHeader);
      -
      550 
      -
      551  uint64_t fragment_duration;
      -
      552 };
      -
      553 
      - -
      555  DECLARE_BOX_METHODS(TrackExtends);
      -
      556 
      -
      557  uint32_t track_id;
      -
      558  uint32_t default_sample_description_index;
      -
      559  uint32_t default_sample_duration;
      -
      560  uint32_t default_sample_size;
      -
      561  uint32_t default_sample_flags;
      -
      562 };
      -
      563 
      -
      564 struct MovieExtends : Box {
      -
      565  DECLARE_BOX_METHODS(MovieExtends);
      -
      566 
      -
      567  MovieExtendsHeader header;
      -
      568  std::vector<TrackExtends> tracks;
      -
      569 };
      -
      570 
      -
      571 struct Movie : Box {
      -
      572  DECLARE_BOX_METHODS(Movie);
      -
      573 
      -
      574  MovieHeader header;
      -
      575  Metadata metadata; // Used to hold version information.
      -
      576  MovieExtends extends;
      -
      577  std::vector<Track> tracks;
      -
      578  std::vector<ProtectionSystemSpecificHeader> pssh;
      -
      579 };
      -
      580 
      - -
      582  DECLARE_BOX_METHODS(TrackFragmentDecodeTime);
      -
      583 
      -
      584  uint64_t decode_time;
      -
      585 };
      -
      586 
      - -
      588  DECLARE_BOX_METHODS(MovieFragmentHeader);
      -
      589 
      -
      590  uint32_t sequence_number;
      -
      591 };
      -
      592 
      - -
      594  enum TrackFragmentFlagsMasks {
      -
      595  kBaseDataOffsetPresentMask = 0x000001,
      -
      596  kSampleDescriptionIndexPresentMask = 0x000002,
      -
      597  kDefaultSampleDurationPresentMask = 0x000008,
      -
      598  kDefaultSampleSizePresentMask = 0x000010,
      -
      599  kDefaultSampleFlagsPresentMask = 0x000020,
      -
      600  kDurationIsEmptyMask = 0x010000,
      -
      601  kDefaultBaseIsMoofMask = 0x020000,
      -
      602  };
      -
      603 
      -
      604  enum SampleFlagsMasks {
      -
      605  kReservedMask = 0xFC000000,
      -
      606  kSampleDependsOnMask = 0x03000000,
      -
      607  kSampleIsDependedOnMask = 0x00C00000,
      -
      608  kSampleHasRedundancyMask = 0x00300000,
      -
      609  kSamplePaddingValueMask = 0x000E0000,
      -
      610  kNonKeySampleMask = 0x00010000,
      -
      611  kSampleDegradationPriorityMask = 0x0000FFFF,
      -
      612  };
      + +
      338  DTSSpecific ddts;
      +
      339  AC3Specific dac3;
      +
      340  EC3Specific dec3;
      +
      341 };
      +
      342 
      + +
      344  DECLARE_BOX_METHODS(WebVTTConfigurationBox);
      +
      345  std::string config;
      +
      346 };
      +
      347 
      + +
      349  DECLARE_BOX_METHODS(WebVTTSourceLabelBox);
      +
      350  std::string source_label;
      +
      351 };
      +
      352 
      + +
      354  DECLARE_BOX_METHODS(TextSampleEntry);
      +
      355 
      +
      356  // Specifies fourcc of this sample entry. It needs to be set on write, e.g.
      +
      357  // set to 'wvtt' to write WVTTSampleEntry; On read, it is recovered from box
      +
      358  // header.
      +
      359  FourCC format;
      +
      360  uint16_t data_reference_index;
      +
      361 
      +
      362  // Sub boxes for wvtt text sample entry.
      +
      363  WebVTTConfigurationBox config;
      +
      364  WebVTTSourceLabelBox label;
      +
      365  // Optional MPEG4BitRateBox.
      +
      366 };
      +
      367 
      + +
      369  DECLARE_BOX_METHODS(SampleDescription);
      +
      370 
      +
      371  TrackType type;
      +
      372  // TODO(kqyang): Clean up the code to have one single member, e.g. by creating
      +
      373  // SampleEntry struct, std::vector<SampleEntry> sample_entries.
      +
      374  std::vector<VideoSampleEntry> video_entries;
      +
      375  std::vector<AudioSampleEntry> audio_entries;
      +
      376  std::vector<TextSampleEntry> text_entries;
      +
      377 };
      +
      378 
      +
      379 struct DecodingTime {
      +
      380  uint32_t sample_count;
      +
      381  uint32_t sample_delta;
      +
      382 };
      +
      383 
      +
      384 // stts.
      + +
      386  DECLARE_BOX_METHODS(DecodingTimeToSample);
      +
      387 
      +
      388  std::vector<DecodingTime> decoding_time;
      +
      389 };
      +
      390 
      + +
      392  uint32_t sample_count;
      +
      393  // If version == 0, sample_offset is uint32_t;
      +
      394  // If version == 1, sample_offset is int32_t.
      +
      395  // Use int64_t so both can be supported properly.
      +
      396  int64_t sample_offset;
      +
      397 };
      +
      398 
      +
      399 // ctts. Optional.
      + +
      401  DECLARE_BOX_METHODS(CompositionTimeToSample);
      +
      402 
      +
      403  std::vector<CompositionOffset> composition_offset;
      +
      404 };
      +
      405 
      +
      406 struct ChunkInfo {
      +
      407  uint32_t first_chunk;
      +
      408  uint32_t samples_per_chunk;
      +
      409  uint32_t sample_description_index;
      +
      410 };
      +
      411 
      +
      412 // stsc.
      + +
      414  DECLARE_BOX_METHODS(SampleToChunk);
      +
      415 
      +
      416  std::vector<ChunkInfo> chunk_info;
      +
      417 };
      +
      418 
      +
      419 // stsz.
      +
      420 struct SampleSize : FullBox {
      +
      421  DECLARE_BOX_METHODS(SampleSize);
      +
      422 
      +
      423  uint32_t sample_size;
      +
      424  uint32_t sample_count;
      +
      425  std::vector<uint32_t> sizes;
      +
      426 };
      +
      427 
      +
      428 // stz2.
      + +
      430  DECLARE_BOX_METHODS(CompactSampleSize);
      +
      431 
      +
      432  uint8_t field_size;
      +
      433  std::vector<uint32_t> sizes;
      +
      434 };
      +
      435 
      +
      436 // co64.
      + +
      438  DECLARE_BOX_METHODS(ChunkLargeOffset);
      +
      439 
      +
      440  std::vector<uint64_t> offsets;
      +
      441 };
      +
      442 
      +
      443 // stco.
      + +
      445  DECLARE_BOX_METHODS(ChunkOffset);
      +
      446 };
      +
      447 
      +
      448 // stss. Optional.
      +
      449 struct SyncSample : FullBox {
      +
      450  DECLARE_BOX_METHODS(SyncSample);
      +
      451 
      +
      452  std::vector<uint32_t> sample_number;
      +
      453 };
      +
      454 
      +
      455 struct SampleTable : Box {
      +
      456  DECLARE_BOX_METHODS(SampleTable);
      +
      457 
      +
      458  SampleDescription description;
      +
      459  DecodingTimeToSample decoding_time_to_sample;
      +
      460  CompositionTimeToSample composition_time_to_sample;
      +
      461  SampleToChunk sample_to_chunk;
      +
      462  // Either SampleSize or CompactSampleSize must present. Store in SampleSize.
      +
      463  SampleSize sample_size;
      +
      464  // Either ChunkOffset or ChunkLargeOffset must present. Store in
      +
      465  // ChunkLargeOffset.
      +
      466  ChunkLargeOffset chunk_large_offset;
      +
      467  SyncSample sync_sample;
      +
      468 };
      +
      469 
      + +
      471  DECLARE_BOX_METHODS(MediaHeader);
      +
      472 
      +
      473  uint64_t creation_time;
      +
      474  uint64_t modification_time;
      +
      475  uint32_t timescale;
      +
      476  uint64_t duration;
      +
      477  Language language;
      +
      478 };
      +
      479 
      + +
      481  DECLARE_BOX_METHODS(VideoMediaHeader);
      +
      482 
      +
      483  uint16_t graphicsmode;
      +
      484  uint16_t opcolor_red;
      +
      485  uint16_t opcolor_green;
      +
      486  uint16_t opcolor_blue;
      +
      487 };
      +
      488 
      + +
      490  DECLARE_BOX_METHODS(SoundMediaHeader);
      +
      491 
      +
      492  uint16_t balance;
      +
      493 };
      +
      494 
      + +
      496  DECLARE_BOX_METHODS(SubtitleMediaHeader);
      +
      497 };
      +
      498 
      + +
      500  DECLARE_BOX_METHODS(DataEntryUrl);
      +
      501 
      +
      502  std::vector<uint8_t> location;
      +
      503 };
      +
      504 
      + +
      506  DECLARE_BOX_METHODS(DataReference);
      +
      507 
      +
      508  // data entry can be either url or urn box. Fix to url box for now.
      +
      509  std::vector<DataEntryUrl> data_entry;
      +
      510 };
      +
      511 
      + +
      513  DECLARE_BOX_METHODS(DataInformation);
      +
      514 
      +
      515  DataReference dref;
      +
      516 };
      +
      517 
      + +
      519  DECLARE_BOX_METHODS(MediaInformation);
      +
      520 
      +
      521  DataInformation dinf;
      +
      522  SampleTable sample_table;
      +
      523  // Exactly one specific meida header shall be present, vmhd, smhd, hmhd, nmhd.
      +
      524  VideoMediaHeader vmhd;
      +
      525  SoundMediaHeader smhd;
      +
      526  SubtitleMediaHeader sthd;
      +
      527 };
      +
      528 
      +
      529 struct Media : Box {
      +
      530  DECLARE_BOX_METHODS(Media);
      +
      531 
      +
      532  MediaHeader header;
      +
      533  HandlerReference handler;
      +
      534  MediaInformation information;
      +
      535 };
      +
      536 
      +
      537 struct Track : Box {
      +
      538  DECLARE_BOX_METHODS(Track);
      +
      539 
      +
      540  TrackHeader header;
      +
      541  Media media;
      +
      542  Edit edit;
      +
      543  SampleEncryption sample_encryption;
      +
      544 };
      +
      545 
      + +
      547  DECLARE_BOX_METHODS(MovieExtendsHeader);
      +
      548 
      +
      549  uint64_t fragment_duration;
      +
      550 };
      +
      551 
      + +
      553  DECLARE_BOX_METHODS(TrackExtends);
      +
      554 
      +
      555  uint32_t track_id;
      +
      556  uint32_t default_sample_description_index;
      +
      557  uint32_t default_sample_duration;
      +
      558  uint32_t default_sample_size;
      +
      559  uint32_t default_sample_flags;
      +
      560 };
      +
      561 
      +
      562 struct MovieExtends : Box {
      +
      563  DECLARE_BOX_METHODS(MovieExtends);
      +
      564 
      +
      565  MovieExtendsHeader header;
      +
      566  std::vector<TrackExtends> tracks;
      +
      567 };
      +
      568 
      +
      569 struct Movie : Box {
      +
      570  DECLARE_BOX_METHODS(Movie);
      +
      571 
      +
      572  MovieHeader header;
      +
      573  Metadata metadata; // Used to hold version information.
      +
      574  MovieExtends extends;
      +
      575  std::vector<Track> tracks;
      +
      576  std::vector<ProtectionSystemSpecificHeader> pssh;
      +
      577 };
      +
      578 
      + +
      580  DECLARE_BOX_METHODS(TrackFragmentDecodeTime);
      +
      581 
      +
      582  uint64_t decode_time;
      +
      583 };
      +
      584 
      + +
      586  DECLARE_BOX_METHODS(MovieFragmentHeader);
      +
      587 
      +
      588  uint32_t sequence_number;
      +
      589 };
      +
      590 
      + +
      592  enum TrackFragmentFlagsMasks {
      +
      593  kBaseDataOffsetPresentMask = 0x000001,
      +
      594  kSampleDescriptionIndexPresentMask = 0x000002,
      +
      595  kDefaultSampleDurationPresentMask = 0x000008,
      +
      596  kDefaultSampleSizePresentMask = 0x000010,
      +
      597  kDefaultSampleFlagsPresentMask = 0x000020,
      +
      598  kDurationIsEmptyMask = 0x010000,
      +
      599  kDefaultBaseIsMoofMask = 0x020000,
      +
      600  };
      +
      601 
      +
      602  enum SampleFlagsMasks {
      +
      603  kReservedMask = 0xFC000000,
      +
      604  kSampleDependsOnMask = 0x03000000,
      +
      605  kSampleIsDependedOnMask = 0x00C00000,
      +
      606  kSampleHasRedundancyMask = 0x00300000,
      +
      607  kSamplePaddingValueMask = 0x000E0000,
      +
      608  kNonKeySampleMask = 0x00010000,
      +
      609  kSampleDegradationPriorityMask = 0x0000FFFF,
      +
      610  };
      +
      611 
      +
      612  DECLARE_BOX_METHODS(TrackFragmentHeader);
      613 
      -
      614  DECLARE_BOX_METHODS(TrackFragmentHeader);
      -
      615 
      -
      616  uint32_t track_id;
      -
      617  uint32_t sample_description_index;
      -
      618  uint32_t default_sample_duration;
      -
      619  uint32_t default_sample_size;
      -
      620  uint32_t default_sample_flags;
      -
      621 };
      -
      622 
      - -
      624  enum TrackFragmentFlagsMasks {
      -
      625  kDataOffsetPresentMask = 0x000001,
      -
      626  kFirstSampleFlagsPresentMask = 0x000004,
      -
      627  kSampleDurationPresentMask = 0x000100,
      -
      628  kSampleSizePresentMask = 0x000200,
      -
      629  kSampleFlagsPresentMask = 0x000400,
      -
      630  kSampleCompTimeOffsetsPresentMask = 0x000800,
      -
      631  };
      +
      614  uint32_t track_id;
      +
      615  uint32_t sample_description_index;
      +
      616  uint32_t default_sample_duration;
      +
      617  uint32_t default_sample_size;
      +
      618  uint32_t default_sample_flags;
      +
      619 };
      +
      620 
      + +
      622  enum TrackFragmentFlagsMasks {
      +
      623  kDataOffsetPresentMask = 0x000001,
      +
      624  kFirstSampleFlagsPresentMask = 0x000004,
      +
      625  kSampleDurationPresentMask = 0x000100,
      +
      626  kSampleSizePresentMask = 0x000200,
      +
      627  kSampleFlagsPresentMask = 0x000400,
      +
      628  kSampleCompTimeOffsetsPresentMask = 0x000800,
      +
      629  };
      +
      630 
      +
      631  DECLARE_BOX_METHODS(TrackFragmentRun);
      632 
      -
      633  DECLARE_BOX_METHODS(TrackFragmentRun);
      -
      634 
      -
      635  uint32_t sample_count;
      -
      636  uint32_t data_offset;
      -
      637  std::vector<uint32_t> sample_flags;
      -
      638  std::vector<uint32_t> sample_sizes;
      -
      639  std::vector<uint32_t> sample_durations;
      -
      640  std::vector<int64_t> sample_composition_time_offsets;
      -
      641 };
      -
      642 
      - -
      644  enum GroupDescriptionIndexBase {
      -
      645  kTrackGroupDescriptionIndexBase = 0,
      -
      646  kTrackFragmentGroupDescriptionIndexBase = 0x10000,
      -
      647  };
      -
      648 
      -
      649  uint32_t sample_count;
      -
      650  uint32_t group_description_index;
      -
      651 };
      -
      652 
      - -
      654  DECLARE_BOX_METHODS(SampleToGroup);
      -
      655 
      -
      656  uint32_t grouping_type;
      -
      657  uint32_t grouping_type_parameter; // Version 1 only.
      -
      658  std::vector<SampleToGroupEntry> entries;
      -
      659 };
      -
      660 
      - - - -
      664 
      -
      665  bool is_encrypted;
      -
      666  uint8_t iv_size;
      -
      667  std::vector<uint8_t> key_id;
      -
      668 };
      -
      669 
      - -
      671  DECLARE_BOX_METHODS(SampleGroupDescription);
      -
      672 
      -
      673  uint32_t grouping_type;
      -
      674  std::vector<CencSampleEncryptionInfoEntry> entries;
      -
      675 };
      -
      676 
      -
      677 struct TrackFragment : Box {
      -
      678  DECLARE_BOX_METHODS(TrackFragment);
      -
      679 
      -
      680  TrackFragmentHeader header;
      -
      681  std::vector<TrackFragmentRun> runs;
      -
      682  bool decode_time_absent;
      -
      683  TrackFragmentDecodeTime decode_time;
      -
      684  SampleToGroup sample_to_group;
      -
      685  SampleGroupDescription sample_group_description;
      -
      686  SampleAuxiliaryInformationSize auxiliary_size;
      -
      687  SampleAuxiliaryInformationOffset auxiliary_offset;
      -
      688  SampleEncryption sample_encryption;
      -
      689 };
      -
      690 
      -
      691 struct MovieFragment : Box {
      -
      692  DECLARE_BOX_METHODS(MovieFragment);
      -
      693 
      -
      694  MovieFragmentHeader header;
      -
      695  std::vector<TrackFragment> tracks;
      -
      696  std::vector<ProtectionSystemSpecificHeader> pssh;
      -
      697 };
      -
      698 
      - -
      700  enum SAPType {
      -
      701  TypeUnknown = 0,
      -
      702  Type1 = 1, // T(ept) = T(dec) = T(sap) = T(ptf)
      -
      703  Type2 = 2, // T(ept) = T(dec) = T(sap) < T(ptf)
      -
      704  Type3 = 3, // T(ept) < T(dec) = T(sap) <= T(ptf)
      -
      705  Type4 = 4, // T(ept) <= T(ptf) < T(dec) = T(sap)
      -
      706  Type5 = 5, // T(ept) = T(dec) < T(sap)
      -
      707  Type6 = 6, // T(ept) < T(dec) < T(sap)
      -
      708  };
      -
      709 
      -
      710  bool reference_type;
      -
      711  uint32_t referenced_size;
      -
      712  uint32_t subsegment_duration;
      -
      713  bool starts_with_sap;
      -
      714  SAPType sap_type;
      -
      715  uint32_t sap_delta_time;
      -
      716  // We add this field to keep track of earliest_presentation_time in this
      -
      717  // subsegment. It is not part of SegmentReference.
      -
      718  uint64_t earliest_presentation_time;
      -
      719 };
      -
      720 
      - -
      722  DECLARE_BOX_METHODS(SegmentIndex);
      -
      723 
      -
      724  uint32_t reference_id;
      -
      725  uint32_t timescale;
      -
      726  uint64_t earliest_presentation_time;
      -
      727  uint64_t first_offset;
      -
      728  std::vector<SegmentReference> references;
      -
      729 };
      -
      730 
      -
      731 // The actual data is parsed and written separately.
      -
      732 struct MediaData : Box {
      -
      733  DECLARE_BOX_METHODS(MediaData);
      -
      734 
      -
      735  uint32_t data_size;
      -
      736 };
      -
      737 
      -
      738 struct CueSourceIDBox : Box {
      -
      739  DECLARE_BOX_METHODS(CueSourceIDBox);
      -
      740  int32_t source_id;
      -
      741 };
      -
      742 
      -
      743 struct CueTimeBox : Box {
      -
      744  DECLARE_BOX_METHODS(CueTimeBox);
      -
      745  std::string cue_current_time;
      -
      746 };
      -
      747 
      -
      748 struct CueIDBox : Box {
      -
      749  DECLARE_BOX_METHODS(CueIDBox);
      -
      750  std::string cue_id;
      -
      751 };
      -
      752 
      -
      753 struct CueSettingsBox : Box {
      -
      754  DECLARE_BOX_METHODS(CueSettingsBox);
      -
      755  std::string settings;
      -
      756 };
      -
      757 
      -
      758 struct CuePayloadBox : Box {
      -
      759  DECLARE_BOX_METHODS(CuePayloadBox);
      -
      760  std::string cue_text;
      -
      761 };
      -
      762 
      -
      763 struct VTTEmptyCueBox : Box {
      -
      764  DECLARE_BOX_METHODS(VTTEmptyCueBox);
      -
      765 };
      -
      766 
      - -
      768  DECLARE_BOX_METHODS(VTTAdditionalTextBox);
      -
      769  std::string cue_additional_text;
      -
      770 };
      -
      771 
      -
      772 struct VTTCueBox : Box {
      -
      773  DECLARE_BOX_METHODS(VTTCueBox);
      -
      774 
      -
      775  CueSourceIDBox cue_source_id;
      -
      776  CueIDBox cue_id;
      -
      777  CueTimeBox cue_time;
      -
      778  CueSettingsBox cue_settings;
      -
      779  CuePayloadBox cue_payload;
      -
      780 };
      -
      781 
      -
      782 #undef DECLARE_BOX
      -
      783 
      -
      784 } // namespace mp4
      -
      785 } // namespace media
      -
      786 } // namespace edash_packager
      -
      787 
      -
      788 #endif // MEDIA_FORMATS_MP4_BOX_DEFINITIONS_H_
      +
      633  uint32_t sample_count;
      +
      634  uint32_t data_offset;
      +
      635  std::vector<uint32_t> sample_flags;
      +
      636  std::vector<uint32_t> sample_sizes;
      +
      637  std::vector<uint32_t> sample_durations;
      +
      638  std::vector<int64_t> sample_composition_time_offsets;
      +
      639 };
      +
      640 
      + +
      642  enum GroupDescriptionIndexBase {
      +
      643  kTrackGroupDescriptionIndexBase = 0,
      +
      644  kTrackFragmentGroupDescriptionIndexBase = 0x10000,
      +
      645  };
      +
      646 
      +
      647  uint32_t sample_count;
      +
      648  uint32_t group_description_index;
      +
      649 };
      +
      650 
      + +
      652  DECLARE_BOX_METHODS(SampleToGroup);
      +
      653 
      +
      654  uint32_t grouping_type;
      +
      655  uint32_t grouping_type_parameter; // Version 1 only.
      +
      656  std::vector<SampleToGroupEntry> entries;
      +
      657 };
      +
      658 
      + + + +
      662 
      +
      663  bool is_encrypted;
      +
      664  uint8_t iv_size;
      +
      665  std::vector<uint8_t> key_id;
      +
      666 };
      +
      667 
      + +
      669  DECLARE_BOX_METHODS(SampleGroupDescription);
      +
      670 
      +
      671  uint32_t grouping_type;
      +
      672  std::vector<CencSampleEncryptionInfoEntry> entries;
      +
      673 };
      +
      674 
      +
      675 struct TrackFragment : Box {
      +
      676  DECLARE_BOX_METHODS(TrackFragment);
      +
      677 
      +
      678  TrackFragmentHeader header;
      +
      679  std::vector<TrackFragmentRun> runs;
      +
      680  bool decode_time_absent;
      +
      681  TrackFragmentDecodeTime decode_time;
      +
      682  SampleToGroup sample_to_group;
      +
      683  SampleGroupDescription sample_group_description;
      +
      684  SampleAuxiliaryInformationSize auxiliary_size;
      +
      685  SampleAuxiliaryInformationOffset auxiliary_offset;
      +
      686  SampleEncryption sample_encryption;
      +
      687 };
      +
      688 
      +
      689 struct MovieFragment : Box {
      +
      690  DECLARE_BOX_METHODS(MovieFragment);
      +
      691 
      +
      692  MovieFragmentHeader header;
      +
      693  std::vector<TrackFragment> tracks;
      +
      694  std::vector<ProtectionSystemSpecificHeader> pssh;
      +
      695 };
      +
      696 
      + +
      698  enum SAPType {
      +
      699  TypeUnknown = 0,
      +
      700  Type1 = 1, // T(ept) = T(dec) = T(sap) = T(ptf)
      +
      701  Type2 = 2, // T(ept) = T(dec) = T(sap) < T(ptf)
      +
      702  Type3 = 3, // T(ept) < T(dec) = T(sap) <= T(ptf)
      +
      703  Type4 = 4, // T(ept) <= T(ptf) < T(dec) = T(sap)
      +
      704  Type5 = 5, // T(ept) = T(dec) < T(sap)
      +
      705  Type6 = 6, // T(ept) < T(dec) < T(sap)
      +
      706  };
      +
      707 
      +
      708  bool reference_type;
      +
      709  uint32_t referenced_size;
      +
      710  uint32_t subsegment_duration;
      +
      711  bool starts_with_sap;
      +
      712  SAPType sap_type;
      +
      713  uint32_t sap_delta_time;
      +
      714  // We add this field to keep track of earliest_presentation_time in this
      +
      715  // subsegment. It is not part of SegmentReference.
      +
      716  uint64_t earliest_presentation_time;
      +
      717 };
      +
      718 
      + +
      720  DECLARE_BOX_METHODS(SegmentIndex);
      +
      721 
      +
      722  uint32_t reference_id;
      +
      723  uint32_t timescale;
      +
      724  uint64_t earliest_presentation_time;
      +
      725  uint64_t first_offset;
      +
      726  std::vector<SegmentReference> references;
      +
      727 };
      +
      728 
      +
      729 // The actual data is parsed and written separately.
      +
      730 struct MediaData : Box {
      +
      731  DECLARE_BOX_METHODS(MediaData);
      +
      732 
      +
      733  uint32_t data_size;
      +
      734 };
      +
      735 
      +
      736 struct CueSourceIDBox : Box {
      +
      737  DECLARE_BOX_METHODS(CueSourceIDBox);
      +
      738  int32_t source_id;
      +
      739 };
      +
      740 
      +
      741 struct CueTimeBox : Box {
      +
      742  DECLARE_BOX_METHODS(CueTimeBox);
      +
      743  std::string cue_current_time;
      +
      744 };
      +
      745 
      +
      746 struct CueIDBox : Box {
      +
      747  DECLARE_BOX_METHODS(CueIDBox);
      +
      748  std::string cue_id;
      +
      749 };
      +
      750 
      +
      751 struct CueSettingsBox : Box {
      +
      752  DECLARE_BOX_METHODS(CueSettingsBox);
      +
      753  std::string settings;
      +
      754 };
      +
      755 
      +
      756 struct CuePayloadBox : Box {
      +
      757  DECLARE_BOX_METHODS(CuePayloadBox);
      +
      758  std::string cue_text;
      +
      759 };
      +
      760 
      +
      761 struct VTTEmptyCueBox : Box {
      +
      762  DECLARE_BOX_METHODS(VTTEmptyCueBox);
      +
      763 };
      +
      764 
      + +
      766  DECLARE_BOX_METHODS(VTTAdditionalTextBox);
      +
      767  std::string cue_additional_text;
      +
      768 };
      +
      769 
      +
      770 struct VTTCueBox : Box {
      +
      771  DECLARE_BOX_METHODS(VTTCueBox);
      +
      772 
      +
      773  CueSourceIDBox cue_source_id;
      +
      774  CueIDBox cue_id;
      +
      775  CueTimeBox cue_time;
      +
      776  CueSettingsBox cue_settings;
      +
      777  CuePayloadBox cue_payload;
      +
      778 };
      +
      779 
      +
      780 #undef DECLARE_BOX
      +
      781 
      +
      782 } // namespace mp4
      +
      783 } // namespace media
      +
      784 } // namespace edash_packager
      +
      785 
      +
      786 #endif // MEDIA_FORMATS_MP4_BOX_DEFINITIONS_H_
      - - -
      Implemented per http://id3.org/id3v2.4.0-frames.
      - - - - - - - - - - - - - - - - - -
      bool ParseFromSampleEncryptionData(size_t iv_size, std::vector< SampleEncryptionEntry > *sample_encryption_entries) const
      - - - - - - + + +
      Implemented per http://id3.org/id3v2.4.0-frames.
      + + + + + + + + + + + + + + + + + +
      bool ParseFromSampleEncryptionData(size_t iv_size, std::vector< SampleEncryptionEntry > *sample_encryption_entries) const
      + + + + + + - + - - - + + + - - - - - - - - - + + + + + + + + + - - - - - - - - + + + + + + + + - - -
      PrivFrame private_frame
      We only support PrivateFrame in ID3. Other frames are ignored.
      - - - - - - - - - - + + +
      PrivFrame private_frame
      We only support PrivateFrame in ID3. Other frames are ignored.
      + + + + + + + + + + - - + + - - - - - - - - - -
      bool ParseFromBuffer(uint8_t iv_size, bool has_subsamples, BufferReader *reader)
      - - - - + + + + + + + + + +
      bool ParseFromBuffer(uint8_t iv_size, bool has_subsamples, BufferReader *reader)
      + + + + - - -
      bool ReadWrite(uint8_t iv_size, bool has_subsamples, BoxBuffer *buffer)
      - - - - + + +
      bool ReadWrite(uint8_t iv_size, bool has_subsamples, BoxBuffer *buffer)
      + + + + - + diff --git a/docs/d5/d89/widevine__key__source_8cc_source.html b/docs/d5/d89/widevine__key__source_8cc_source.html index e8948c6149..4e31decc2a 100644 --- a/docs/d5/d89/widevine__key__source_8cc_source.html +++ b/docs/d5/d89/widevine__key__source_8cc_source.html @@ -657,7 +657,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d8f/webm__cluster__parser_8cc_source.html b/docs/d5/d8f/webm__cluster__parser_8cc_source.html index 5aed96ef24..80a0cf9164 100644 --- a/docs/d5/d8f/webm__cluster__parser_8cc_source.html +++ b/docs/d5/d8f/webm__cluster__parser_8cc_source.html @@ -740,7 +740,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d91/es__parser__adts_8cc_source.html b/docs/d5/d91/es__parser__adts_8cc_source.html index dabb6fde04..cde94c8ebf 100644 --- a/docs/d5/d91/es__parser__adts_8cc_source.html +++ b/docs/d5/d91/es__parser__adts_8cc_source.html @@ -376,7 +376,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d98/encryptor_8cc_source.html b/docs/d5/d98/encryptor_8cc_source.html index bb00fda1aa..ea77a612e5 100644 --- a/docs/d5/d98/encryptor_8cc_source.html +++ b/docs/d5/d98/encryptor_8cc_source.html @@ -235,7 +235,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d9c/classedash__packager_1_1MpdNotifierFactory-members.html b/docs/d5/d9c/classedash__packager_1_1MpdNotifierFactory-members.html index ddac79fcc5..dd86239731 100644 --- a/docs/d5/d9c/classedash__packager_1_1MpdNotifierFactory-members.html +++ b/docs/d5/d9c/classedash__packager_1_1MpdNotifierFactory-members.html @@ -99,7 +99,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/da4/aes__encryptor_8cc_source.html b/docs/d5/da4/aes__encryptor_8cc_source.html index bfb0886f2e..a32eabc90c 100644 --- a/docs/d5/da4/aes__encryptor_8cc_source.html +++ b/docs/d5/da4/aes__encryptor_8cc_source.html @@ -568,7 +568,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/db7/classedash__packager_1_1xml_1_1AdaptationSetXmlNode-members.html b/docs/d5/db7/classedash__packager_1_1xml_1_1AdaptationSetXmlNode-members.html index 3df63b4611..93db492360 100644 --- a/docs/d5/db7/classedash__packager_1_1xml_1_1AdaptationSetXmlNode-members.html +++ b/docs/d5/db7/classedash__packager_1_1xml_1_1AdaptationSetXmlNode-members.html @@ -114,7 +114,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/dba/ts__packet_8cc_source.html b/docs/d5/dba/ts__packet_8cc_source.html index a7d5c8d0cb..13526136f9 100644 --- a/docs/d5/dba/ts__packet_8cc_source.html +++ b/docs/d5/dba/ts__packet_8cc_source.html @@ -304,7 +304,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/dc1/webm__webvtt__parser_8cc_source.html b/docs/d5/dc1/webm__webvtt__parser_8cc_source.html index 1639d0abda..a4f5a4013f 100644 --- a/docs/d5/dc1/webm__webvtt__parser_8cc_source.html +++ b/docs/d5/dc1/webm__webvtt__parser_8cc_source.html @@ -171,7 +171,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/dce/classedash__packager_1_1media_1_1Demuxer.html b/docs/d5/dce/classedash__packager_1_1media_1_1Demuxer.html index 15fe2347dc..f2c832ed41 100644 --- a/docs/d5/dce/classedash__packager_1_1media_1_1Demuxer.html +++ b/docs/d5/dce/classedash__packager_1_1media_1_1Demuxer.html @@ -295,7 +295,7 @@ Public Member Functions diff --git a/docs/d5/dce/classedash__packager_1_1media_1_1VP8Parser.html b/docs/d5/dce/classedash__packager_1_1media_1_1VP8Parser.html index f086c66672..14da3a6674 100644 --- a/docs/d5/dce/classedash__packager_1_1media_1_1VP8Parser.html +++ b/docs/d5/dce/classedash__packager_1_1media_1_1VP8Parser.html @@ -235,7 +235,7 @@ Additional Inherited Members diff --git a/docs/d5/dcf/rsa__key_8h_source.html b/docs/d5/dcf/rsa__key_8h_source.html index 11c5565215..da68923a1f 100644 --- a/docs/d5/dcf/rsa__key_8h_source.html +++ b/docs/d5/dcf/rsa__key_8h_source.html @@ -165,7 +165,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/dd2/classedash__packager_1_1media_1_1VPxParser.html b/docs/d5/dd2/classedash__packager_1_1media_1_1VPxParser.html index be88888eab..8049c326a6 100644 --- a/docs/d5/dd2/classedash__packager_1_1media_1_1VPxParser.html +++ b/docs/d5/dd2/classedash__packager_1_1media_1_1VPxParser.html @@ -205,7 +205,7 @@ Protected Member Functions diff --git a/docs/d5/dda/ts__section__psi_8h_source.html b/docs/d5/dda/ts__section__psi_8h_source.html index ee332d6345..3a8e2908b0 100644 --- a/docs/d5/dda/ts__section__psi_8h_source.html +++ b/docs/d5/dda/ts__section__psi_8h_source.html @@ -151,7 +151,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/de0/bit__reader_8cc_source.html b/docs/d5/de0/bit__reader_8cc_source.html index 073e8290bd..b6a0fd93cd 100644 --- a/docs/d5/de0/bit__reader_8cc_source.html +++ b/docs/d5/de0/bit__reader_8cc_source.html @@ -199,7 +199,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/dec/classedash__packager_1_1media_1_1wvm_1_1WvmMediaParser-members.html b/docs/d5/dec/classedash__packager_1_1media_1_1wvm_1_1WvmMediaParser-members.html index e1e5d800f0..bc2a923647 100644 --- a/docs/d5/dec/classedash__packager_1_1media_1_1wvm_1_1WvmMediaParser-members.html +++ b/docs/d5/dec/classedash__packager_1_1media_1_1wvm_1_1WvmMediaParser-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/def/ts__section__pmt_8h_source.html b/docs/d5/def/ts__section__pmt_8h_source.html index 916ac5b8c8..7c0e88ee59 100644 --- a/docs/d5/def/ts__section__pmt_8h_source.html +++ b/docs/d5/def/ts__section__pmt_8h_source.html @@ -133,7 +133,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/df8/classedash__packager_1_1media_1_1H264BitReader-members.html b/docs/d5/df8/classedash__packager_1_1media_1_1H264BitReader-members.html index 47e8ddcd60..4246555f7c 100644 --- a/docs/d5/df8/classedash__packager_1_1media_1_1H264BitReader-members.html +++ b/docs/d5/df8/classedash__packager_1_1media_1_1H264BitReader-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/dfc/file_8cc_source.html b/docs/d5/dfc/file_8cc_source.html index 8ab414c617..f154a2dfff 100644 --- a/docs/d5/dfc/file_8cc_source.html +++ b/docs/d5/dfc/file_8cc_source.html @@ -376,7 +376,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d00/structedash__packager_1_1media_1_1mp4_1_1Box-members.html b/docs/d6/d00/structedash__packager_1_1media_1_1mp4_1_1Box-members.html index fbdb2474bc..f6d9d74bdd 100644 --- a/docs/d6/d00/structedash__packager_1_1media_1_1mp4_1_1Box-members.html +++ b/docs/d6/d00/structedash__packager_1_1media_1_1mp4_1_1Box-members.html @@ -107,7 +107,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d06/classedash__packager_1_1media_1_1StreamInfo.html b/docs/d6/d06/classedash__packager_1_1media_1_1StreamInfo.html index b2d11a4d8d..303ee0ffec 100644 --- a/docs/d6/d06/classedash__packager_1_1media_1_1StreamInfo.html +++ b/docs/d6/d06/classedash__packager_1_1media_1_1StreamInfo.html @@ -229,7 +229,7 @@ class base::RefCountedThre diff --git a/docs/d6/d10/classedash__packager_1_1media_1_1VideoStreamInfo-members.html b/docs/d6/d10/classedash__packager_1_1media_1_1VideoStreamInfo-members.html index 62c8fc1e80..38df2464c2 100644 --- a/docs/d6/d10/classedash__packager_1_1media_1_1VideoStreamInfo-members.html +++ b/docs/d6/d10/classedash__packager_1_1media_1_1VideoStreamInfo-members.html @@ -125,7 +125,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d12/structedash__packager_1_1media_1_1mp4_1_1OriginalFormat-members.html b/docs/d6/d12/structedash__packager_1_1media_1_1mp4_1_1OriginalFormat-members.html index 0f89addffd..ce8f221026 100644 --- a/docs/d6/d12/structedash__packager_1_1media_1_1mp4_1_1OriginalFormat-members.html +++ b/docs/d6/d12/structedash__packager_1_1media_1_1mp4_1_1OriginalFormat-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d13/classedash__packager_1_1media_1_1mp4_1_1CompositionOffsetIterator-members.html b/docs/d6/d13/classedash__packager_1_1media_1_1mp4_1_1CompositionOffsetIterator-members.html index 0bbf1a0bd7..d44eef905b 100644 --- a/docs/d6/d13/classedash__packager_1_1media_1_1mp4_1_1CompositionOffsetIterator-members.html +++ b/docs/d6/d13/classedash__packager_1_1media_1_1mp4_1_1CompositionOffsetIterator-members.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d16/text__stream__info_8cc_source.html b/docs/d6/d16/text__stream__info_8cc_source.html index dcde708dd9..3cd1c511ef 100644 --- a/docs/d6/d16/text__stream__info_8cc_source.html +++ b/docs/d6/d16/text__stream__info_8cc_source.html @@ -132,7 +132,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d17/es__parser__h264_8cc_source.html b/docs/d6/d17/es__parser__h264_8cc_source.html index d4daa3c643..6a576b9dc5 100644 --- a/docs/d6/d17/es__parser__h264_8cc_source.html +++ b/docs/d6/d17/es__parser__h264_8cc_source.html @@ -484,7 +484,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d19/structedash__packager_1_1media_1_1mp4_1_1SampleGroupDescription-members.html b/docs/d6/d19/structedash__packager_1_1media_1_1mp4_1_1SampleGroupDescription-members.html index 6592e92da3..a4f2f5902d 100644 --- a/docs/d6/d19/structedash__packager_1_1media_1_1mp4_1_1SampleGroupDescription-members.html +++ b/docs/d6/d19/structedash__packager_1_1media_1_1mp4_1_1SampleGroupDescription-members.html @@ -114,7 +114,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d1b/classedash__packager_1_1media_1_1ClosureThread-members.html b/docs/d6/d1b/classedash__packager_1_1media_1_1ClosureThread-members.html index e0ba27c5a5..19bdc2a8a8 100644 --- a/docs/d6/d1b/classedash__packager_1_1media_1_1ClosureThread-members.html +++ b/docs/d6/d1b/classedash__packager_1_1media_1_1ClosureThread-members.html @@ -99,7 +99,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d2e/mpd__notifier__util_8cc_source.html b/docs/d6/d2e/mpd__notifier__util_8cc_source.html index 4654d1d6f2..45e2f6137f 100644 --- a/docs/d6/d2e/mpd__notifier__util_8cc_source.html +++ b/docs/d6/d2e/mpd__notifier__util_8cc_source.html @@ -170,7 +170,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d35/webm__content__encodings_8cc_source.html b/docs/d6/d35/webm__content__encodings_8cc_source.html index 44234810d3..2f5eba7057 100644 --- a/docs/d6/d35/webm__content__encodings_8cc_source.html +++ b/docs/d6/d35/webm__content__encodings_8cc_source.html @@ -120,7 +120,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d37/classedash__packager_1_1xml_1_1AdaptationSetXmlNode.html b/docs/d6/d37/classedash__packager_1_1xml_1_1AdaptationSetXmlNode.html index 590e4b11db..980f06fdf7 100644 --- a/docs/d6/d37/classedash__packager_1_1xml_1_1AdaptationSetXmlNode.html +++ b/docs/d6/d37/classedash__packager_1_1xml_1_1AdaptationSetXmlNode.html @@ -197,7 +197,7 @@ Additional Inherited Members diff --git a/docs/d6/d3a/classedash__packager_1_1media_1_1AesRequestSigner-members.html b/docs/d6/d3a/classedash__packager_1_1media_1_1AesRequestSigner-members.html index c6edb32ae3..200ae4bdee 100644 --- a/docs/d6/d3a/classedash__packager_1_1media_1_1AesRequestSigner-members.html +++ b/docs/d6/d3a/classedash__packager_1_1media_1_1AesRequestSigner-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d3b/chunk__info__iterator_8cc_source.html b/docs/d6/d3b/chunk__info__iterator_8cc_source.html index a754e71197..038fafe70b 100644 --- a/docs/d6/d3b/chunk__info__iterator_8cc_source.html +++ b/docs/d6/d3b/chunk__info__iterator_8cc_source.html @@ -162,7 +162,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
      73 } // namespace mp4
      74 } // namespace media
      75 } // namespace edash_packager
      - +
      uint32_t NumSamples(uint32_t start_chunk, uint32_t end_chunk) const
      ChunkInfoIterator(const SampleToChunk &sample_to_chunk)
      Create ChunkInfoIterator from sample to chunk box.
      @@ -171,7 +171,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d41/encrypting__fragmenter_8cc_source.html b/docs/d6/d41/encrypting__fragmenter_8cc_source.html index 5578a70405..602bbd1c18 100644 --- a/docs/d6/d41/encrypting__fragmenter_8cc_source.html +++ b/docs/d6/d41/encrypting__fragmenter_8cc_source.html @@ -375,7 +375,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
      286 } // namespace mp4
      287 } // namespace media
      288 } // namespace edash_packager
      - + @@ -388,7 +388,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
      Status AddSample(scoped_refptr< MediaSample > sample) override
      void FinalizeFragment() override
      Finalize and optimize the fragment.
      - +
      virtual Status PrepareFragmentForEncryption(bool enable_encryption)
      @@ -397,7 +397,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d48/structedash__packager_1_1media_1_1mp4_1_1DataEntryUrl-members.html b/docs/d6/d48/structedash__packager_1_1media_1_1mp4_1_1DataEntryUrl-members.html index 6fbd30988a..99a98420cc 100644 --- a/docs/d6/d48/structedash__packager_1_1media_1_1mp4_1_1DataEntryUrl-members.html +++ b/docs/d6/d48/structedash__packager_1_1media_1_1mp4_1_1DataEntryUrl-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d49/classedash__packager_1_1media_1_1AVCDecoderConfiguration.html b/docs/d6/d49/classedash__packager_1_1media_1_1AVCDecoderConfiguration.html index e6f898677f..f866602753 100644 --- a/docs/d6/d49/classedash__packager_1_1media_1_1AVCDecoderConfiguration.html +++ b/docs/d6/d49/classedash__packager_1_1media_1_1AVCDecoderConfiguration.html @@ -244,7 +244,7 @@ void  diff --git a/docs/d6/d4e/webm_2multi__segment__segmenter_8cc_source.html b/docs/d6/d4e/webm_2multi__segment__segmenter_8cc_source.html index 87f86474fd..ebecf31ed4 100644 --- a/docs/d6/d4e/webm_2multi__segment__segmenter_8cc_source.html +++ b/docs/d6/d4e/webm_2multi__segment__segmenter_8cc_source.html @@ -183,7 +183,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d59/protection__system__specific__info_8h_source.html b/docs/d6/d59/protection__system__specific__info_8h_source.html new file mode 100644 index 0000000000..598be3767a --- /dev/null +++ b/docs/d6/d59/protection__system__specific__info_8h_source.html @@ -0,0 +1,171 @@ + + + + + + +DASH Media Packaging SDK: media/base/protection_system_specific_info.h Source File + + + + + + + + + +
      +
      + + + + + + +
      +
      DASH Media Packaging SDK +
      +
      +
      + + + + + + + + + +
      + +
      + + +
      +
      +
      +
      protection_system_specific_info.h
      +
      +
      +
      1 // Copyright 2016 Google Inc. All rights reserved.
      +
      2 //
      +
      3 // Use of this source code is governed by a BSD-style
      +
      4 // license that can be found in the LICENSE file or at
      +
      5 // https://developers.google.com/open-source/licenses/bsd
      +
      6 
      +
      7 #ifndef MEDIA_BASE_PSSH_H_
      +
      8 #define MEDIA_BASE_PSSH_H_
      +
      9 
      +
      10 #include <stdint.h>
      +
      11 #include <vector>
      +
      12 
      +
      13 #include "packager/base/logging.h"
      +
      14 #include "packager/media/base/buffer_reader.h"
      +
      15 
      +
      16 namespace edash_packager {
      +
      17 namespace media {
      +
      18 
      + +
      20  public:
      + + +
      23 
      +
      27  static bool ParseBoxes(
      +
      28  const uint8_t* data,
      +
      29  size_t data_size,
      +
      30  std::vector<ProtectionSystemSpecificInfo>* pssh_boxes);
      +
      31 
      +
      34  bool Parse(const uint8_t* data, size_t data_size);
      +
      35 
      +
      37  std::vector<uint8_t> CreateBox() const;
      +
      38 
      +
      39  uint8_t version() const { return version_; }
      +
      40  const std::vector<uint8_t>& system_id() const { return system_id_; }
      +
      41  const std::vector<std::vector<uint8_t>>& key_ids() const { return key_ids_; }
      +
      42  const std::vector<uint8_t>& pssh_data() const { return pssh_data_; }
      +
      43 
      +
      44  void set_version(uint8_t version) {
      +
      45  DCHECK_LT(version, 2);
      +
      46  version_ = version;
      +
      47  }
      +
      48  void set_system_id(const std::vector<uint8_t>& system_id) {
      +
      49  DCHECK_EQ(16u, system_id.size());
      +
      50  system_id_ = system_id;
      +
      51  }
      +
      52  void add_key_id(const std::vector<uint8_t>& key_id) {
      +
      53  DCHECK_EQ(16u, key_id.size());
      +
      54  key_ids_.push_back(key_id);
      +
      55  }
      +
      56  void clear_key_ids() { key_ids_.clear(); }
      +
      57  void set_pssh_data(const std::vector<uint8_t>& pssh_data) {
      +
      58  pssh_data_ = pssh_data;
      +
      59  }
      +
      60 
      +
      61  private:
      +
      62  uint8_t version_;
      +
      63  std::vector<uint8_t> system_id_;
      +
      64  std::vector<std::vector<uint8_t>> key_ids_;
      +
      65  std::vector<uint8_t> pssh_data_;
      +
      66 
      +
      67  // Don't use DISALLOW_COPY_AND_ASSIGN since the data stored here should be
      +
      68  // small, so the performance impact should be minimal.
      +
      69 };
      +
      70 
      +
      71 } // namespace media
      +
      72 } // namespace edash_packager
      +
      73 
      +
      74 #endif // MEDIA_BASE_PSSH_H_
      +
      75 
      + +
      static bool ParseBoxes(const uint8_t *data, size_t data_size, std::vector< ProtectionSystemSpecificInfo > *pssh_boxes)
      + +
      std::vector< uint8_t > CreateBox() const
      Creates a PSSH box for the current data.
      +
      + + + + diff --git a/docs/d6/d59/structedash__packager_1_1media_1_1mp4_1_1DataInformation.html b/docs/d6/d59/structedash__packager_1_1media_1_1mp4_1_1DataInformation.html index dbafff50a6..828a7f0ff4 100644 --- a/docs/d6/d59/structedash__packager_1_1media_1_1mp4_1_1DataInformation.html +++ b/docs/d6/d59/structedash__packager_1_1media_1_1mp4_1_1DataInformation.html @@ -136,7 +136,7 @@ Additional Inherited Members

      Detailed Description

      -

      Definition at line 514 of file box_definitions.h.

      +

      Definition at line 512 of file box_definitions.h.

      Member Function Documentation

      @@ -162,7 +162,7 @@ Additional Inherited Members

      Implements edash_packager::media::mp4::Box.

      -

      Definition at line 1722 of file box_definitions.cc.

      +

      Definition at line 1707 of file box_definitions.cc.

      @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d6/d5d/classedash__packager_1_1media_1_1HEVCDecoderConfiguration.html b/docs/d6/d5d/classedash__packager_1_1media_1_1HEVCDecoderConfiguration.html index 1e5da4ef61..7a57532e1a 100644 --- a/docs/d6/d5d/classedash__packager_1_1media_1_1HEVCDecoderConfiguration.html +++ b/docs/d6/d5d/classedash__packager_1_1media_1_1HEVCDecoderConfiguration.html @@ -171,7 +171,7 @@ void  diff --git a/docs/d6/d5e/structedash__packager_1_1media_1_1H264SEIRecoveryPoint-members.html b/docs/d6/d5e/structedash__packager_1_1media_1_1H264SEIRecoveryPoint-members.html index e7a07a15dc..d575b15474 100644 --- a/docs/d6/d5e/structedash__packager_1_1media_1_1H264SEIRecoveryPoint-members.html +++ b/docs/d6/d5e/structedash__packager_1_1media_1_1H264SEIRecoveryPoint-members.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d5e/structedash__packager_1_1media_1_1mp4_1_1DTSSpecific-members.html b/docs/d6/d5e/structedash__packager_1_1media_1_1mp4_1_1DTSSpecific-members.html index acf8ddf2a0..905b029f44 100644 --- a/docs/d6/d5e/structedash__packager_1_1media_1_1mp4_1_1DTSSpecific-members.html +++ b/docs/d6/d5e/structedash__packager_1_1media_1_1mp4_1_1DTSSpecific-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d6c/structedash__packager_1_1media_1_1mp4_1_1DataEntryUrl.html b/docs/d6/d6c/structedash__packager_1_1media_1_1mp4_1_1DataEntryUrl.html index d54466c827..db285419de 100644 --- a/docs/d6/d6c/structedash__packager_1_1media_1_1mp4_1_1DataEntryUrl.html +++ b/docs/d6/d6c/structedash__packager_1_1media_1_1mp4_1_1DataEntryUrl.html @@ -145,7 +145,7 @@ Additional Inherited Members

      Detailed Description

      -

      Definition at line 501 of file box_definitions.h.

      +

      Definition at line 499 of file box_definitions.h.

      Member Function Documentation

      @@ -171,7 +171,7 @@ Additional Inherited Members

      Implements edash_packager::media::mp4::Box.

      -

      Definition at line 1680 of file box_definitions.cc.

      +

      Definition at line 1665 of file box_definitions.cc.

      @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/d6/d6e/ts__section__pes_8cc_source.html b/docs/d6/d6e/ts__section__pes_8cc_source.html index 7e07713476..309193d3e0 100644 --- a/docs/d6/d6e/ts__section__pes_8cc_source.html +++ b/docs/d6/d6e/ts__section__pes_8cc_source.html @@ -405,7 +405,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d71/scoped__xml__ptr_8h_source.html b/docs/d6/d71/scoped__xml__ptr_8h_source.html index 41bd7e0608..958cbcd57a 100644 --- a/docs/d6/d71/scoped__xml__ptr_8h_source.html +++ b/docs/d6/d71/scoped__xml__ptr_8h_source.html @@ -131,7 +131,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d74/structedash__packager_1_1media_1_1mp4_1_1VTTCueBox.html b/docs/d6/d74/structedash__packager_1_1media_1_1mp4_1_1VTTCueBox.html index c261cb1734..78a35aa5a3 100644 --- a/docs/d6/d74/structedash__packager_1_1media_1_1mp4_1_1VTTCueBox.html +++ b/docs/d6/d74/structedash__packager_1_1media_1_1mp4_1_1VTTCueBox.html @@ -148,7 +148,7 @@ Additional Inherited Members

      Detailed Description

      -

      Definition at line 772 of file box_definitions.h.

      +

      Definition at line 770 of file box_definitions.h.

      Member Function Documentation

      @@ -174,7 +174,7 @@ Additional Inherited Members

      Implements edash_packager::media::mp4::Box.

      -

      Definition at line 2548 of file box_definitions.cc.

      +

      Definition at line 2533 of file box_definitions.cc.

      @@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/d6/d77/dash__iop__mpd__notifier_8h_source.html b/docs/d6/d77/dash__iop__mpd__notifier_8h_source.html index 586a94fabd..5f1271a4b3 100644 --- a/docs/d6/d77/dash__iop__mpd__notifier_8h_source.html +++ b/docs/d6/d77/dash__iop__mpd__notifier_8h_source.html @@ -218,7 +218,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d79/structedash__packager_1_1media_1_1mp4_1_1ChunkOffset.html b/docs/d6/d79/structedash__packager_1_1media_1_1mp4_1_1ChunkOffset.html index c70152ddcb..6f2efcd3d6 100644 --- a/docs/d6/d79/structedash__packager_1_1media_1_1mp4_1_1ChunkOffset.html +++ b/docs/d6/d79/structedash__packager_1_1media_1_1mp4_1_1ChunkOffset.html @@ -143,7 +143,7 @@ uint32_t flags

      Detailed Description

      -

      Definition at line 446 of file box_definitions.h.

      +

      Definition at line 444 of file box_definitions.h.

      Member Function Documentation

      @@ -169,7 +169,7 @@ uint32_t flagsReimplemented from edash_packager::media::mp4::ChunkLargeOffset.

      -

      Definition at line 829 of file box_definitions.cc.

      +

      Definition at line 814 of file box_definitions.cc.

      @@ -180,7 +180,7 @@ uint32_t flags diff --git a/docs/d6/d7b/webm__tracks__parser_8h_source.html b/docs/d6/d7b/webm__tracks__parser_8h_source.html index c808406b80..2759a5a98c 100644 --- a/docs/d6/d7b/webm__tracks__parser_8h_source.html +++ b/docs/d6/d7b/webm__tracks__parser_8h_source.html @@ -202,7 +202,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d80/classedash__packager_1_1media_1_1Demuxer-members.html b/docs/d6/d80/classedash__packager_1_1media_1_1Demuxer-members.html index 3095c6a817..204fb1baa8 100644 --- a/docs/d6/d80/classedash__packager_1_1media_1_1Demuxer-members.html +++ b/docs/d6/d80/classedash__packager_1_1media_1_1Demuxer-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d81/classedash__packager_1_1media_1_1LibcryptoThreading-members.html b/docs/d6/d81/classedash__packager_1_1media_1_1LibcryptoThreading-members.html index 99f2ec101e..338f687565 100644 --- a/docs/d6/d81/classedash__packager_1_1media_1_1LibcryptoThreading-members.html +++ b/docs/d6/d81/classedash__packager_1_1media_1_1LibcryptoThreading-members.html @@ -98,7 +98,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d86/bandwidth__estimator_8cc_source.html b/docs/d6/d86/bandwidth__estimator_8cc_source.html index 8498c8f4e4..286312b77c 100644 --- a/docs/d6/d86/bandwidth__estimator_8cc_source.html +++ b/docs/d6/d86/bandwidth__estimator_8cc_source.html @@ -154,7 +154,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d8a/vp9__parser_8cc_source.html b/docs/d6/d8a/vp9__parser_8cc_source.html index 985a2fb1a9..89668e6204 100644 --- a/docs/d6/d8a/vp9__parser_8cc_source.html +++ b/docs/d6/d8a/vp9__parser_8cc_source.html @@ -659,7 +659,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d8b/structedash__packager_1_1media_1_1mp4_1_1MovieExtends.html b/docs/d6/d8b/structedash__packager_1_1media_1_1mp4_1_1MovieExtends.html index 7658b99e02..7ea525639b 100644 --- a/docs/d6/d8b/structedash__packager_1_1media_1_1mp4_1_1MovieExtends.html +++ b/docs/d6/d8b/structedash__packager_1_1media_1_1mp4_1_1MovieExtends.html @@ -139,7 +139,7 @@ Additional Inherited Members

      Detailed Description

      -

      Definition at line 564 of file box_definitions.h.

      +

      Definition at line 562 of file box_definitions.h.

      Member Function Documentation

      @@ -165,7 +165,7 @@ Additional Inherited Members

      Implements edash_packager::media::mp4::Box.

      -

      Definition at line 1880 of file box_definitions.cc.

      +

      Definition at line 1865 of file box_definitions.cc.

      @@ -176,7 +176,7 @@ Additional Inherited Members diff --git a/docs/d6/d8f/structedash__packager_1_1media_1_1mp4_1_1FullBox.html b/docs/d6/d8f/structedash__packager_1_1media_1_1mp4_1_1FullBox.html index dcbf1addca..5553ab9ace 100644 --- a/docs/d6/d8f/structedash__packager_1_1media_1_1mp4_1_1FullBox.html +++ b/docs/d6/d8f/structedash__packager_1_1media_1_1mp4_1_1FullBox.html @@ -245,7 +245,7 @@ Protected Member Functions diff --git a/docs/d6/d92/classedash__packager_1_1media_1_1webm_1_1Segmenter-members.html b/docs/d6/d92/classedash__packager_1_1media_1_1webm_1_1Segmenter-members.html index 34b438e733..a790ab2820 100644 --- a/docs/d6/d92/classedash__packager_1_1media_1_1webm_1_1Segmenter-members.html +++ b/docs/d6/d92/classedash__packager_1_1media_1_1webm_1_1Segmenter-members.html @@ -121,7 +121,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d96/structedash__packager_1_1media_1_1mp4_1_1SampleDescription-members.html b/docs/d6/d96/structedash__packager_1_1media_1_1mp4_1_1SampleDescription-members.html index 220b20219c..0b25bd5600 100644 --- a/docs/d6/d96/structedash__packager_1_1media_1_1mp4_1_1SampleDescription-members.html +++ b/docs/d6/d96/structedash__packager_1_1media_1_1mp4_1_1SampleDescription-members.html @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d97/classedash__packager_1_1media_1_1UdpFile-members.html b/docs/d6/d97/classedash__packager_1_1media_1_1UdpFile-members.html index df52df240c..de1b6ffc9a 100644 --- a/docs/d6/d97/classedash__packager_1_1media_1_1UdpFile-members.html +++ b/docs/d6/d97/classedash__packager_1_1media_1_1UdpFile-members.html @@ -117,7 +117,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d9b/h264__parser_8h_source.html b/docs/d6/d9b/h264__parser_8h_source.html index 3464d3e0f8..cc53ef843b 100644 --- a/docs/d6/d9b/h264__parser_8h_source.html +++ b/docs/d6/d9b/h264__parser_8h_source.html @@ -439,7 +439,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d9c/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPes-members.html b/docs/d6/d9c/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPes-members.html index e075d6d00c..61fa3464c7 100644 --- a/docs/d6/d9c/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPes-members.html +++ b/docs/d6/d9c/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPes-members.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/da0/ts__section__pat_8h_source.html b/docs/d6/da0/ts__section__pat_8h_source.html index 30d7dc25cc..168a6225a6 100644 --- a/docs/d6/da0/ts__section__pat_8h_source.html +++ b/docs/d6/da0/ts__section__pat_8h_source.html @@ -135,7 +135,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/da2/classedash__packager_1_1media_1_1AesCbcCtsEncryptor.html b/docs/d6/da2/classedash__packager_1_1media_1_1AesCbcCtsEncryptor.html index f7b178cd65..8e009523d9 100644 --- a/docs/d6/da2/classedash__packager_1_1media_1_1AesCbcCtsEncryptor.html +++ b/docs/d6/da2/classedash__packager_1_1media_1_1AesCbcCtsEncryptor.html @@ -258,7 +258,7 @@ const std::vector< uint8_t > &  diff --git a/docs/d6/da3/classedash__packager_1_1media_1_1H264Parser.html b/docs/d6/da3/classedash__packager_1_1media_1_1H264Parser.html index 801fc709f5..e90f84b0e7 100644 --- a/docs/d6/da3/classedash__packager_1_1media_1_1H264Parser.html +++ b/docs/d6/da3/classedash__packager_1_1media_1_1H264Parser.html @@ -135,7 +135,7 @@ Result ParseSEI (const diff --git a/docs/d6/da3/mpd__builder_8h_source.html b/docs/d6/da3/mpd__builder_8h_source.html index 8d195bd820..987e0ff4cc 100644 --- a/docs/d6/da3/mpd__builder_8h_source.html +++ b/docs/d6/da3/mpd__builder_8h_source.html @@ -534,7 +534,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/da8/classedash__packager_1_1media_1_1WebMWebVTTParser-members.html b/docs/d6/da8/classedash__packager_1_1media_1_1WebMWebVTTParser-members.html index 9d27576e12..fb53add078 100644 --- a/docs/d6/da8/classedash__packager_1_1media_1_1WebMWebVTTParser-members.html +++ b/docs/d6/da8/classedash__packager_1_1media_1_1WebMWebVTTParser-members.html @@ -97,7 +97,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/dba/classedash__packager_1_1media_1_1ThreadedIoFile-members.html b/docs/d6/dba/classedash__packager_1_1media_1_1ThreadedIoFile-members.html index aaa25a33a0..0971c58f76 100644 --- a/docs/d6/dba/classedash__packager_1_1media_1_1ThreadedIoFile-members.html +++ b/docs/d6/dba/classedash__packager_1_1media_1_1ThreadedIoFile-members.html @@ -120,7 +120,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/dbb/structedash__packager_1_1media_1_1mp4_1_1CompositionOffset-members.html b/docs/d6/dbb/structedash__packager_1_1media_1_1mp4_1_1CompositionOffset-members.html index 69190561d6..0759c107cd 100644 --- a/docs/d6/dbb/structedash__packager_1_1media_1_1mp4_1_1CompositionOffset-members.html +++ b/docs/d6/dbb/structedash__packager_1_1media_1_1mp4_1_1CompositionOffset-members.html @@ -98,7 +98,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/dbd/structedash__packager_1_1media_1_1Cue-members.html b/docs/d6/dbd/structedash__packager_1_1media_1_1Cue-members.html index 6c2f9be468..1d699665d2 100644 --- a/docs/d6/dbd/structedash__packager_1_1media_1_1Cue-members.html +++ b/docs/d6/dbd/structedash__packager_1_1media_1_1Cue-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/dc2/classedash__packager_1_1media_1_1TextTrackConfig-members.html b/docs/d6/dc2/classedash__packager_1_1media_1_1TextTrackConfig-members.html index 6163c509b6..34fcbeb355 100644 --- a/docs/d6/dc2/classedash__packager_1_1media_1_1TextTrackConfig-members.html +++ b/docs/d6/dc2/classedash__packager_1_1media_1_1TextTrackConfig-members.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/dc2/classedash__packager_1_1media_1_1mp4_1_1H264VideoSliceHeaderParser.html b/docs/d6/dc2/classedash__packager_1_1media_1_1mp4_1_1H264VideoSliceHeaderParser.html index ae7bd1c182..0266c5744b 100644 --- a/docs/d6/dc2/classedash__packager_1_1media_1_1mp4_1_1H264VideoSliceHeaderParser.html +++ b/docs/d6/dc2/classedash__packager_1_1media_1_1mp4_1_1H264VideoSliceHeaderParser.html @@ -152,7 +152,7 @@ int64_t  diff --git a/docs/d6/dc4/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor.html b/docs/d6/dc4/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor.html index 48db586199..387723665d 100644 --- a/docs/d6/dc4/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor.html +++ b/docs/d6/dc4/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor.html @@ -208,7 +208,7 @@ const std::vector< uint8_t > &  diff --git a/docs/d6/dc8/mkv__writer_8cc_source.html b/docs/d6/dc8/mkv__writer_8cc_source.html index b83bd0cb46..9ea3fa6e7b 100644 --- a/docs/d6/dc8/mkv__writer_8cc_source.html +++ b/docs/d6/dc8/mkv__writer_8cc_source.html @@ -186,7 +186,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/dd6/classedash__packager_1_1media_1_1WebMListParser.html b/docs/d6/dd6/classedash__packager_1_1media_1_1WebMListParser.html index 0aecdc11a1..c88fa7e6e1 100644 --- a/docs/d6/dd6/classedash__packager_1_1media_1_1WebMListParser.html +++ b/docs/d6/dd6/classedash__packager_1_1media_1_1WebMListParser.html @@ -210,7 +210,7 @@ void  diff --git a/docs/d6/dd7/classedash__packager_1_1media_1_1TextStreamInfo.html b/docs/d6/dd7/classedash__packager_1_1media_1_1TextStreamInfo.html index 027f1626f4..0279996b82 100644 --- a/docs/d6/dd7/classedash__packager_1_1media_1_1TextStreamInfo.html +++ b/docs/d6/dd7/classedash__packager_1_1media_1_1TextStreamInfo.html @@ -276,7 +276,7 @@ void set_language (con diff --git a/docs/d6/de6/classedash__packager_1_1media_1_1KeyFetcher-members.html b/docs/d6/de6/classedash__packager_1_1media_1_1KeyFetcher-members.html index 825e5ad827..31fd497a51 100644 --- a/docs/d6/de6/classedash__packager_1_1media_1_1KeyFetcher-members.html +++ b/docs/d6/de6/classedash__packager_1_1media_1_1KeyFetcher-members.html @@ -99,7 +99,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/de7/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor-members.html b/docs/d6/de7/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor-members.html index f85501bb32..5d79e0f3b5 100644 --- a/docs/d6/de7/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor-members.html +++ b/docs/d6/de7/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/de8/local__file_8cc_source.html b/docs/d6/de8/local__file_8cc_source.html index 207431a3b9..4f72819690 100644 --- a/docs/d6/de8/local__file_8cc_source.html +++ b/docs/d6/de8/local__file_8cc_source.html @@ -191,7 +191,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/de8/network__util_8h_source.html b/docs/d6/de8/network__util_8h_source.html index 43cc8bd298..1b0d6c22d2 100644 --- a/docs/d6/de8/network__util_8h_source.html +++ b/docs/d6/de8/network__util_8h_source.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/dec/structedash__packager_1_1media_1_1mp4_1_1Movie.html b/docs/d6/dec/structedash__packager_1_1media_1_1mp4_1_1Movie.html index a0e9c2ba52..2ae7cc1331 100644 --- a/docs/d6/dec/structedash__packager_1_1media_1_1mp4_1_1Movie.html +++ b/docs/d6/dec/structedash__packager_1_1media_1_1mp4_1_1Movie.html @@ -149,7 +149,7 @@ Additional Inherited Members

      Detailed Description

      -

      Definition at line 571 of file box_definitions.h.

      +

      Definition at line 569 of file box_definitions.h.

      Member Function Documentation

      @@ -175,7 +175,7 @@ Additional Inherited Members

      Implements edash_packager::media::mp4::Box.

      -

      Definition at line 1908 of file box_definitions.cc.

      +

      Definition at line 1893 of file box_definitions.cc.

      @@ -186,7 +186,7 @@ Additional Inherited Members diff --git a/docs/d6/ded/ts__packet_8h_source.html b/docs/d6/ded/ts__packet_8h_source.html index 9375fb891a..8c42e48995 100644 --- a/docs/d6/ded/ts__packet_8h_source.html +++ b/docs/d6/ded/ts__packet_8h_source.html @@ -169,7 +169,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/def/sync__sample__iterator_8cc_source.html b/docs/d6/def/sync__sample__iterator_8cc_source.html index f66c384bcc..e4f8589d60 100644 --- a/docs/d6/def/sync__sample__iterator_8cc_source.html +++ b/docs/d6/def/sync__sample__iterator_8cc_source.html @@ -134,13 +134,13 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
      45 } // namespace media
      46 } // namespace edash_packager
      SyncSampleIterator(const SyncSample &sync_sample)
      Create a new SyncSampleIterator from sync sample box.
      - + diff --git a/docs/d6/df4/classedash__packager_1_1media_1_1webm_1_1MultiSegmentSegmenter-members.html b/docs/d6/df4/classedash__packager_1_1media_1_1webm_1_1MultiSegmentSegmenter-members.html index d8fcc6258f..3b144b15a4 100644 --- a/docs/d6/df4/classedash__packager_1_1media_1_1webm_1_1MultiSegmentSegmenter-members.html +++ b/docs/d6/df4/classedash__packager_1_1media_1_1webm_1_1MultiSegmentSegmenter-members.html @@ -123,7 +123,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/df9/classedash__packager_1_1media_1_1mp4_1_1MP4MediaParser-members.html b/docs/d6/df9/classedash__packager_1_1media_1_1mp4_1_1MP4MediaParser-members.html index a3686efc02..5f8c6eaac7 100644 --- a/docs/d6/df9/classedash__packager_1_1media_1_1mp4_1_1MP4MediaParser-members.html +++ b/docs/d6/df9/classedash__packager_1_1media_1_1mp4_1_1MP4MediaParser-members.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d0b/muxer__listener__test__helper_8h_source.html b/docs/d7/d0b/muxer__listener__test__helper_8h_source.html index 35d4206863..68a5451002 100644 --- a/docs/d7/d0b/muxer__listener__test__helper_8h_source.html +++ b/docs/d7/d0b/muxer__listener__test__helper_8h_source.html @@ -196,7 +196,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d0d/structedash__packager_1_1media_1_1mp4_1_1DataReference.html b/docs/d7/d0d/structedash__packager_1_1media_1_1mp4_1_1DataReference.html index ecd92c95a3..9c01c401d1 100644 --- a/docs/d7/d0d/structedash__packager_1_1media_1_1mp4_1_1DataReference.html +++ b/docs/d7/d0d/structedash__packager_1_1media_1_1mp4_1_1DataReference.html @@ -145,7 +145,7 @@ Additional Inherited Members

      Detailed Description

      -

      Definition at line 507 of file box_definitions.h.

      +

      Definition at line 505 of file box_definitions.h.

      Member Function Documentation

      @@ -171,7 +171,7 @@ Additional Inherited Members

      Implements edash_packager::media::mp4::Box.

      -

      Definition at line 1700 of file box_definitions.cc.

      +

      Definition at line 1685 of file box_definitions.cc.

      @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/d7/d12/media__parser_8h_source.html b/docs/d7/d12/media__parser_8h_source.html index db9cf02148..80d50704df 100644 --- a/docs/d7/d12/media__parser_8h_source.html +++ b/docs/d7/d12/media__parser_8h_source.html @@ -150,7 +150,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d15/classedash__packager_1_1Representation.html b/docs/d7/d15/classedash__packager_1_1Representation.html index fde2bdaa6b..1952d3a743 100644 --- a/docs/d7/d15/classedash__packager_1_1Representation.html +++ b/docs/d7/d15/classedash__packager_1_1Representation.html @@ -456,7 +456,7 @@ template<MpdBuilder::MpdType type> diff --git a/docs/d7/d15/mpd__notifier_8h_source.html b/docs/d7/d15/mpd__notifier_8h_source.html index f4b04bf61c..d59427c91f 100644 --- a/docs/d7/d15/mpd__notifier_8h_source.html +++ b/docs/d7/d15/mpd__notifier_8h_source.html @@ -169,7 +169,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d1c/structedash__packager_1_1media_1_1mp4_1_1DecodingTime.html b/docs/d7/d1c/structedash__packager_1_1media_1_1mp4_1_1DecodingTime.html index 04d3db2eed..4a0557a02f 100644 --- a/docs/d7/d1c/structedash__packager_1_1media_1_1mp4_1_1DecodingTime.html +++ b/docs/d7/d1c/structedash__packager_1_1media_1_1mp4_1_1DecodingTime.html @@ -105,14 +105,14 @@ uint32_t sample_delta<

      Detailed Description

      -

      Definition at line 381 of file box_definitions.h.

      +

      Definition at line 379 of file box_definitions.h.


      The documentation for this struct was generated from the following file: diff --git a/docs/d7/d22/libcrypto__threading_8h_source.html b/docs/d7/d22/libcrypto__threading_8h_source.html index e8935c59b2..057041c166 100644 --- a/docs/d7/d22/libcrypto__threading_8h_source.html +++ b/docs/d7/d22/libcrypto__threading_8h_source.html @@ -118,7 +118,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d2a/classedash__packager_1_1media_1_1DecryptorSource-members.html b/docs/d7/d2a/classedash__packager_1_1media_1_1DecryptorSource-members.html index 3ec92d86d9..d444181097 100644 --- a/docs/d7/d2a/classedash__packager_1_1media_1_1DecryptorSource-members.html +++ b/docs/d7/d2a/classedash__packager_1_1media_1_1DecryptorSource-members.html @@ -99,7 +99,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d39/structedash__packager_1_1media_1_1mp4_1_1Movie-members.html b/docs/d7/d39/structedash__packager_1_1media_1_1mp4_1_1Movie-members.html index 3bf9fe62c3..8b22df6166 100644 --- a/docs/d7/d39/structedash__packager_1_1media_1_1mp4_1_1Movie-members.html +++ b/docs/d7/d39/structedash__packager_1_1media_1_1mp4_1_1Movie-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d3a/classedash__packager_1_1media_1_1VideoStreamInfo.html b/docs/d7/d3a/classedash__packager_1_1media_1_1VideoStreamInfo.html index 39b367f0e3..11ecadfaac 100644 --- a/docs/d7/d3a/classedash__packager_1_1media_1_1VideoStreamInfo.html +++ b/docs/d7/d3a/classedash__packager_1_1media_1_1VideoStreamInfo.html @@ -429,7 +429,7 @@ void set_language (con diff --git a/docs/d7/d40/classedash__packager_1_1media_1_1WebMClusterParser-members.html b/docs/d7/d40/classedash__packager_1_1media_1_1WebMClusterParser-members.html index 25c0cab6a8..266291c9b3 100644 --- a/docs/d7/d40/classedash__packager_1_1media_1_1WebMClusterParser-members.html +++ b/docs/d7/d40/classedash__packager_1_1media_1_1WebMClusterParser-members.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d42/protection__system__specific__info_8cc_source.html b/docs/d7/d42/protection__system__specific__info_8cc_source.html new file mode 100644 index 0000000000..95e3c6419f --- /dev/null +++ b/docs/d7/d42/protection__system__specific__info_8cc_source.html @@ -0,0 +1,226 @@ + + + + + + +DASH Media Packaging SDK: media/base/protection_system_specific_info.cc Source File + + + + + + + + + +
      +
      + + + + + + +
      +
      DASH Media Packaging SDK +
      +
      +
      + + + + + + + + + +
      + +
      + + +
      +
      +
      +
      protection_system_specific_info.cc
      +
      +
      +
      1 // Copyright 2016 Google Inc. All rights reserved.
      +
      2 //
      +
      3 // Use of this source code is governed by a BSD-style
      +
      4 // license that can be found in the LICENSE file or at
      +
      5 // https://developers.google.com/open-source/licenses/bsd
      +
      6 
      +
      7 #include "packager/media/base/protection_system_specific_info.h"
      +
      8 
      +
      9 #include "packager/media/base/buffer_writer.h"
      +
      10 // Header-only files:
      +
      11 #include "packager/media/formats/mp4/fourccs.h"
      +
      12 #include "packager/media/formats/mp4/rcheck.h"
      +
      13 
      +
      14 namespace edash_packager {
      +
      15 namespace media {
      +
      16 
      +
      17 namespace {
      +
      18 const size_t kSystemIdSize = 16u;
      +
      19 const size_t kKeyIdSize = 16u;
      +
      20 } // namespace
      +
      21 
      +
      22 ProtectionSystemSpecificInfo::ProtectionSystemSpecificInfo()
      +
      23  : version_(0) {}
      +
      24 ProtectionSystemSpecificInfo::~ProtectionSystemSpecificInfo() {}
      +
      25 
      + +
      27  const uint8_t* data,
      +
      28  size_t data_size,
      +
      29  std::vector<ProtectionSystemSpecificInfo>* pssh_boxes) {
      +
      30  BufferReader reader(data, data_size);
      +
      31  while (reader.HasBytes(1)) {
      +
      32  size_t start_position = reader.pos();
      +
      33  uint32_t size;
      +
      34  RCHECK(reader.Read4(&size));
      +
      35  RCHECK(reader.SkipBytes(size - 4));
      +
      36 
      +
      37  pssh_boxes->emplace_back();
      +
      38  RCHECK(pssh_boxes->back().Parse(data + start_position, size));
      +
      39  }
      +
      40 
      +
      41  return true;
      +
      42 }
      +
      43 
      +
      44 bool ProtectionSystemSpecificInfo::Parse(const uint8_t* data,
      +
      45  size_t data_size) {
      +
      46  uint32_t size;
      +
      47  uint32_t box_type;
      +
      48  uint32_t version_and_flags;
      +
      49  BufferReader reader(data, data_size);
      +
      50 
      +
      51  RCHECK(reader.Read4(&size));
      +
      52  RCHECK(reader.Read4(&box_type));
      +
      53  RCHECK(size == data_size);
      +
      54  RCHECK(box_type == mp4::FOURCC_PSSH);
      +
      55  RCHECK(reader.Read4(&version_and_flags));
      +
      56 
      +
      57  version_ = (version_and_flags >> 24);
      +
      58  RCHECK(version_ < 2);
      +
      59  RCHECK(reader.ReadToVector(&system_id_, kSystemIdSize));
      +
      60 
      +
      61  if (version_ == 1) {
      +
      62  uint32_t key_id_count;
      +
      63  RCHECK(reader.Read4(&key_id_count));
      +
      64 
      +
      65  key_ids_.resize(key_id_count);
      +
      66  for (uint32_t i = 0; i < key_id_count; i++) {
      +
      67  RCHECK(reader.ReadToVector(&key_ids_[i], kKeyIdSize));
      +
      68  }
      +
      69  }
      +
      70 
      +
      71  // TODO: Consider parsing key IDs from Widevine PSSH data.
      +
      72  uint32_t pssh_data_size;
      +
      73  RCHECK(reader.Read4(&pssh_data_size));
      +
      74  RCHECK(reader.ReadToVector(&pssh_data_, pssh_data_size));
      +
      75 
      +
      76  // We should be at the end of the data. The reader should be initialized to
      +
      77  // the data and size according to the size field of the box; therefore it
      +
      78  // is an error if there are bytes remaining.
      +
      79  RCHECK(!reader.HasBytes(1));
      +
      80  return true;
      +
      81 }
      +
      82 
      +
      83 std::vector<uint8_t> ProtectionSystemSpecificInfo::CreateBox() const {
      +
      84  DCHECK_EQ(kSystemIdSize, system_id_.size());
      +
      85 
      +
      86  const uint32_t box_type = mp4::FOURCC_PSSH;
      +
      87  const uint32_t version_and_flags = (static_cast<uint32_t>(version_) << 24);
      +
      88  const uint32_t pssh_data_size = pssh_data_.size();
      +
      89 
      +
      90  const uint32_t key_id_count = key_ids_.size();
      +
      91  const uint32_t key_ids_size =
      +
      92  sizeof(key_id_count) + kKeyIdSize * key_id_count;
      +
      93  const uint32_t extra_size = version_ == 1 ? key_ids_size : 0;
      +
      94 
      +
      95  const uint32_t total_size =
      +
      96  sizeof(total_size) + sizeof(box_type) + sizeof(version_and_flags) +
      +
      97  kSystemIdSize + extra_size + sizeof(pssh_data_size) + pssh_data_size;
      +
      98 
      +
      99  BufferWriter writer;
      +
      100  writer.AppendInt(total_size);
      +
      101  writer.AppendInt(box_type);
      +
      102  writer.AppendInt(version_and_flags);
      +
      103  writer.AppendVector(system_id_);
      +
      104  if (version_ == 1) {
      +
      105  writer.AppendInt(key_id_count);
      +
      106  for (size_t i = 0; i < key_id_count; i++) {
      +
      107  DCHECK_EQ(kKeyIdSize, key_ids_[i].size());
      +
      108  writer.AppendVector(key_ids_[i]);
      +
      109  }
      +
      110  }
      +
      111  writer.AppendInt(pssh_data_size);
      +
      112  writer.AppendVector(pssh_data_);
      +
      113 
      +
      114  DCHECK_EQ(total_size, writer.Size());
      +
      115  return std::vector<uint8_t>(writer.Buffer(), writer.Buffer() + writer.Size());
      +
      116 }
      +
      117 
      +
      118 } // namespace media
      +
      119 } // namespace edash_packager
      + +
      static bool ParseBoxes(const uint8_t *data, size_t data_size, std::vector< ProtectionSystemSpecificInfo > *pssh_boxes)
      +
      std::vector< uint8_t > CreateBox() const
      Creates a PSSH box for the current data.
      + +
      bool SkipBytes(size_t num_bytes) WARN_UNUSED_RESULT
      +
      const uint8_t * Buffer() const
      Definition: buffer_writer.h:59
      + + + +
      + + + + diff --git a/docs/d7/d44/classedash__packager_1_1MockMpdNotifier.html b/docs/d7/d44/classedash__packager_1_1MockMpdNotifier.html index 84c3579067..fd16173f38 100644 --- a/docs/d7/d44/classedash__packager_1_1MockMpdNotifier.html +++ b/docs/d7/d44/classedash__packager_1_1MockMpdNotifier.html @@ -160,7 +160,7 @@ Public Member Functions diff --git a/docs/d7/d49/structedash__packager_1_1media_1_1mp4_1_1CuePayloadBox.html b/docs/d7/d49/structedash__packager_1_1media_1_1mp4_1_1CuePayloadBox.html index 9184a94aec..167cc56d54 100644 --- a/docs/d7/d49/structedash__packager_1_1media_1_1mp4_1_1CuePayloadBox.html +++ b/docs/d7/d49/structedash__packager_1_1media_1_1mp4_1_1CuePayloadBox.html @@ -136,7 +136,7 @@ Additional Inherited Members

      Detailed Description

      -

      Definition at line 758 of file box_definitions.h.

      +

      Definition at line 756 of file box_definitions.h.

      Member Function Documentation

      @@ -162,7 +162,7 @@ Additional Inherited Members

      Implements edash_packager::media::mp4::Box.

      -

      Definition at line 2498 of file box_definitions.cc.

      +

      Definition at line 2483 of file box_definitions.cc.

      @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d7/d4f/structedash__packager_1_1media_1_1mp4_1_1Edit.html b/docs/d7/d4f/structedash__packager_1_1media_1_1mp4_1_1Edit.html index a49af4cc4f..9c8b5eef7c 100644 --- a/docs/d7/d4f/structedash__packager_1_1media_1_1mp4_1_1Edit.html +++ b/docs/d7/d4f/structedash__packager_1_1media_1_1mp4_1_1Edit.html @@ -136,7 +136,7 @@ Additional Inherited Members

      Detailed Description

      -

      Definition at line 216 of file box_definitions.h.

      +

      Definition at line 214 of file box_definitions.h.

      Member Function Documentation

      @@ -162,7 +162,7 @@ Additional Inherited Members

      Implements edash_packager::media::mp4::Box.

      -

      Definition at line 995 of file box_definitions.cc.

      +

      Definition at line 980 of file box_definitions.cc.

      @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d7/d50/classedash__packager_1_1media_1_1mp4_1_1EncryptingFragmenter-members.html b/docs/d7/d50/classedash__packager_1_1media_1_1mp4_1_1EncryptingFragmenter-members.html index 3a178f1413..4afe648bd8 100644 --- a/docs/d7/d50/classedash__packager_1_1media_1_1mp4_1_1EncryptingFragmenter-members.html +++ b/docs/d7/d50/classedash__packager_1_1media_1_1mp4_1_1EncryptingFragmenter-members.html @@ -118,7 +118,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d52/classedash__packager_1_1media_1_1WebMListParser-members.html b/docs/d7/d52/classedash__packager_1_1media_1_1WebMListParser-members.html index ecb3396a7b..0cdd4c3fcc 100644 --- a/docs/d7/d52/classedash__packager_1_1media_1_1WebMListParser-members.html +++ b/docs/d7/d52/classedash__packager_1_1media_1_1WebMListParser-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d55/structedash__packager_1_1media_1_1mp4_1_1CencSampleEncryptionInfoEntry.html b/docs/d7/d55/structedash__packager_1_1media_1_1mp4_1_1CencSampleEncryptionInfoEntry.html index 4e883e4de1..a8a3bb7942 100644 --- a/docs/d7/d55/structedash__packager_1_1media_1_1mp4_1_1CencSampleEncryptionInfoEntry.html +++ b/docs/d7/d55/structedash__packager_1_1media_1_1mp4_1_1CencSampleEncryptionInfoEntry.html @@ -108,7 +108,7 @@ std::vector< uint8_t > 

      Detailed Description

      -

      Definition at line 661 of file box_definitions.h.

      +

      Definition at line 659 of file box_definitions.h.


      The documentation for this struct was generated from the following files:
      • media/formats/mp4/box_definitions.h
      • media/formats/mp4/box_definitions.cc
      • @@ -116,7 +116,7 @@ std::vector< uint8_t >  diff --git a/docs/d7/d56/structedash__packager_1_1media_1_1mp4_1_1EC3Specific-members.html b/docs/d7/d56/structedash__packager_1_1media_1_1mp4_1_1EC3Specific-members.html index 32bf0a50e1..a2b01356ff 100644 --- a/docs/d7/d56/structedash__packager_1_1media_1_1mp4_1_1EC3Specific-members.html +++ b/docs/d7/d56/structedash__packager_1_1media_1_1mp4_1_1EC3Specific-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d79/structedash__packager_1_1media_1_1mp4_1_1MediaData-members.html b/docs/d7/d79/structedash__packager_1_1media_1_1mp4_1_1MediaData-members.html index 84849d6628..f40ffe8b09 100644 --- a/docs/d7/d79/structedash__packager_1_1media_1_1mp4_1_1MediaData-members.html +++ b/docs/d7/d79/structedash__packager_1_1media_1_1mp4_1_1MediaData-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d7b/structedash__packager_1_1media_1_1mp4_1_1DecodingTime-members.html b/docs/d7/d7b/structedash__packager_1_1media_1_1mp4_1_1DecodingTime-members.html index 407f35ac29..e520b4bd61 100644 --- a/docs/d7/d7b/structedash__packager_1_1media_1_1mp4_1_1DecodingTime-members.html +++ b/docs/d7/d7b/structedash__packager_1_1media_1_1mp4_1_1DecodingTime-members.html @@ -98,7 +98,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d7c/vlog__flags_8h_source.html b/docs/d7/d7c/vlog__flags_8h_source.html index 822a1cfd69..e8950c87ee 100644 --- a/docs/d7/d7c/vlog__flags_8h_source.html +++ b/docs/d7/d7c/vlog__flags_8h_source.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d82/classedash__packager_1_1MpdBuilder-members.html b/docs/d7/d82/classedash__packager_1_1MpdBuilder-members.html index aecdd489c0..7b08fc198b 100644 --- a/docs/d7/d82/classedash__packager_1_1MpdBuilder-members.html +++ b/docs/d7/d82/classedash__packager_1_1MpdBuilder-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d85/classedash__packager_1_1media_1_1VPCodecConfiguration.html b/docs/d7/d85/classedash__packager_1_1media_1_1VPCodecConfiguration.html index 4915ad2a1a..7c6c6ccb6f 100644 --- a/docs/d7/d85/classedash__packager_1_1media_1_1VPCodecConfiguration.html +++ b/docs/d7/d85/classedash__packager_1_1media_1_1VPCodecConfiguration.html @@ -255,7 +255,7 @@ bool video_full_range_flag diff --git a/docs/d7/d87/video__stream__info_8h_source.html b/docs/d7/d87/video__stream__info_8h_source.html index 6080be99cf..393440fc50 100644 --- a/docs/d7/d87/video__stream__info_8h_source.html +++ b/docs/d7/d87/video__stream__info_8h_source.html @@ -188,7 +188,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d8a/structedash__packager_1_1media_1_1mp4_1_1Box.html b/docs/d7/d8a/structedash__packager_1_1media_1_1mp4_1_1Box.html index a3f9327f67..df37150d45 100644 --- a/docs/d7/d8a/structedash__packager_1_1media_1_1mp4_1_1Box.html +++ b/docs/d7/d8a/structedash__packager_1_1media_1_1mp4_1_1Box.html @@ -384,7 +384,7 @@ class BoxBuffer diff --git a/docs/d7/d8f/structedash__packager_1_1media_1_1mp4_1_1CueSourceIDBox-members.html b/docs/d7/d8f/structedash__packager_1_1media_1_1mp4_1_1CueSourceIDBox-members.html index f79e8db13a..b29ec2515b 100644 --- a/docs/d7/d8f/structedash__packager_1_1media_1_1mp4_1_1CueSourceIDBox-members.html +++ b/docs/d7/d8f/structedash__packager_1_1media_1_1mp4_1_1CueSourceIDBox-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d9d/progress__listener_8h_source.html b/docs/d7/d9d/progress__listener_8h_source.html index f57890d860..a7ab7e3b4e 100644 --- a/docs/d7/d9d/progress__listener_8h_source.html +++ b/docs/d7/d9d/progress__listener_8h_source.html @@ -127,7 +127,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/da4/track__run__iterator_8h_source.html b/docs/d7/da4/track__run__iterator_8h_source.html index 19670537d8..0cd542a003 100644 --- a/docs/d7/da4/track__run__iterator_8h_source.html +++ b/docs/d7/da4/track__run__iterator_8h_source.html @@ -176,26 +176,26 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
        127 #endif // MEDIA_FORMATS_MP4_TRACK_RUN_ITERATOR_H_
        const VideoSampleEntry & video_description() const
        Only valid if is_video() is true.
        - +
        scoped_ptr< DecryptConfig > GetDecryptConfig()
        bool CacheAuxInfo(const uint8_t *buf, int size)
        const AudioSampleEntry & audio_description() const
        Only valid if is_audio() is true.
        - + - - + + - + diff --git a/docs/d7/da5/structedash__packager_1_1media_1_1mp4_1_1SampleSize.html b/docs/d7/da5/structedash__packager_1_1media_1_1mp4_1_1SampleSize.html index dc3bc7ed16..ac7e0d778f 100644 --- a/docs/d7/da5/structedash__packager_1_1media_1_1mp4_1_1SampleSize.html +++ b/docs/d7/da5/structedash__packager_1_1media_1_1mp4_1_1SampleSize.html @@ -151,7 +151,7 @@ Additional Inherited Members

        Detailed Description

        -

        Definition at line 422 of file box_definitions.h.

        +

        Definition at line 420 of file box_definitions.h.

        Member Function Documentation

        @@ -177,7 +177,7 @@ Additional Inherited Members

        Implements edash_packager::media::mp4::Box.

        -

        Definition at line 749 of file box_definitions.cc.

        +

        Definition at line 734 of file box_definitions.cc.

        @@ -188,7 +188,7 @@ Additional Inherited Members diff --git a/docs/d7/db0/mpd__writer_8h_source.html b/docs/d7/db0/mpd__writer_8h_source.html index 82c402bee0..ac5f13582f 100644 --- a/docs/d7/db0/mpd__writer_8h_source.html +++ b/docs/d7/db0/mpd__writer_8h_source.html @@ -184,7 +184,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/db3/structedash__packager_1_1Element-members.html b/docs/d7/db3/structedash__packager_1_1Element-members.html index aa51eb99e5..17c99050fb 100644 --- a/docs/d7/db3/structedash__packager_1_1Element-members.html +++ b/docs/d7/db3/structedash__packager_1_1Element-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/dc6/byte__queue_8h_source.html b/docs/d7/dc6/byte__queue_8h_source.html index 069af504d0..f69bc04984 100644 --- a/docs/d7/dc6/byte__queue_8h_source.html +++ b/docs/d7/dc6/byte__queue_8h_source.html @@ -144,7 +144,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/dcc/structedash__packager_1_1media_1_1mp4_1_1WebVTTConfigurationBox.html b/docs/d7/dcc/structedash__packager_1_1media_1_1mp4_1_1WebVTTConfigurationBox.html index 5ca4a9bfbe..c65e03db55 100644 --- a/docs/d7/dcc/structedash__packager_1_1media_1_1mp4_1_1WebVTTConfigurationBox.html +++ b/docs/d7/dcc/structedash__packager_1_1media_1_1mp4_1_1WebVTTConfigurationBox.html @@ -136,7 +136,7 @@ Additional Inherited Members

        Detailed Description

        -

        Definition at line 345 of file box_definitions.h.

        +

        Definition at line 343 of file box_definitions.h.

        Member Function Documentation

        @@ -162,7 +162,7 @@ Additional Inherited Members

        Implements edash_packager::media::mp4::Box.

        -

        Definition at line 1531 of file box_definitions.cc.

        +

        Definition at line 1516 of file box_definitions.cc.

        @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d7/dd0/mpd__notifier__util_8h_source.html b/docs/d7/dd0/mpd__notifier__util_8h_source.html index 27fa9f71ee..c03ff17fb1 100644 --- a/docs/d7/dd0/mpd__notifier__util_8h_source.html +++ b/docs/d7/dd0/mpd__notifier__util_8h_source.html @@ -128,7 +128,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/dd2/classedash__packager_1_1media_1_1VPxParser-members.html b/docs/d7/dd2/classedash__packager_1_1media_1_1VPxParser-members.html index 47c6769451..381df35ad6 100644 --- a/docs/d7/dd2/classedash__packager_1_1media_1_1VPxParser-members.html +++ b/docs/d7/dd2/classedash__packager_1_1media_1_1VPxParser-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/dd4/request__signer_8h_source.html b/docs/d7/dd4/request__signer_8h_source.html index 41a112ba90..7310a07ea6 100644 --- a/docs/d7/dd4/request__signer_8h_source.html +++ b/docs/d7/dd4/request__signer_8h_source.html @@ -178,7 +178,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/dd6/key__source_8cc_source.html b/docs/d7/dd6/key__source_8cc_source.html index acf0c53678..d5c27fbe53 100644 --- a/docs/d7/dd6/key__source_8cc_source.html +++ b/docs/d7/dd6/key__source_8cc_source.html @@ -296,7 +296,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/de3/structedash__packager_1_1xml_1_1XmlDeleter.html b/docs/d7/de3/structedash__packager_1_1xml_1_1XmlDeleter.html index 1a345141db..21ba6d9543 100644 --- a/docs/d7/de3/structedash__packager_1_1xml_1_1XmlDeleter.html +++ b/docs/d7/de3/structedash__packager_1_1xml_1_1XmlDeleter.html @@ -127,7 +127,7 @@ void operator() (xmlCh diff --git a/docs/d7/dec/h264__byte__to__unit__stream__converter_8h_source.html b/docs/d7/dec/h264__byte__to__unit__stream__converter_8h_source.html index c52ba82f9f..28b4ed920d 100644 --- a/docs/d7/dec/h264__byte__to__unit__stream__converter_8h_source.html +++ b/docs/d7/dec/h264__byte__to__unit__stream__converter_8h_source.html @@ -140,7 +140,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/dec/structedash__packager_1_1media_1_1mp4_1_1MediaHeader.html b/docs/d7/dec/structedash__packager_1_1media_1_1mp4_1_1MediaHeader.html index 0031dede72..4841ed2495 100644 --- a/docs/d7/dec/structedash__packager_1_1media_1_1mp4_1_1MediaHeader.html +++ b/docs/d7/dec/structedash__packager_1_1media_1_1mp4_1_1MediaHeader.html @@ -157,7 +157,7 @@ Additional Inherited Members

        Detailed Description

        -

        Definition at line 472 of file box_definitions.h.

        +

        Definition at line 470 of file box_definitions.h.

        Member Function Documentation

        @@ -183,7 +183,7 @@ Additional Inherited Members

        Implements edash_packager::media::mp4::Box.

        -

        Definition at line 1605 of file box_definitions.cc.

        +

        Definition at line 1590 of file box_definitions.cc.

        @@ -194,7 +194,7 @@ Additional Inherited Members diff --git a/docs/d7/dee/mpd__generator_8cc_source.html b/docs/d7/dee/mpd__generator_8cc_source.html index 441401d112..44e2afe48c 100644 --- a/docs/d7/dee/mpd__generator_8cc_source.html +++ b/docs/d7/dee/mpd__generator_8cc_source.html @@ -199,7 +199,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/def/mp4__media__parser_8cc_source.html b/docs/d7/def/mp4__media__parser_8cc_source.html index bd0bab514d..de49d8656a 100644 --- a/docs/d7/def/mp4__media__parser_8cc_source.html +++ b/docs/d7/def/mp4__media__parser_8cc_source.html @@ -106,728 +106,731 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
        17 #include "packager/media/base/key_source.h"
        18 #include "packager/media/base/macros.h"
        19 #include "packager/media/base/media_sample.h"
        -
        20 #include "packager/media/base/video_stream_info.h"
        -
        21 #include "packager/media/file/file.h"
        -
        22 #include "packager/media/file/file_closer.h"
        -
        23 #include "packager/media/filters/avc_decoder_configuration.h"
        -
        24 #include "packager/media/filters/hevc_decoder_configuration.h"
        -
        25 #include "packager/media/filters/vp_codec_configuration.h"
        -
        26 #include "packager/media/formats/mp4/box_definitions.h"
        -
        27 #include "packager/media/formats/mp4/box_reader.h"
        -
        28 #include "packager/media/formats/mp4/es_descriptor.h"
        -
        29 #include "packager/media/formats/mp4/rcheck.h"
        -
        30 #include "packager/media/formats/mp4/track_run_iterator.h"
        -
        31 
        -
        32 namespace edash_packager {
        -
        33 namespace media {
        -
        34 namespace mp4 {
        -
        35 namespace {
        -
        36 
        -
        37 uint64_t Rescale(uint64_t time_in_old_scale,
        -
        38  uint32_t old_scale,
        -
        39  uint32_t new_scale) {
        -
        40  return (static_cast<double>(time_in_old_scale) / old_scale) * new_scale;
        -
        41 }
        -
        42 
        -
        43 VideoCodec FourCCToVideoCodec(FourCC fourcc) {
        -
        44  switch (fourcc) {
        -
        45  case FOURCC_AVC1:
        -
        46  return kCodecH264;
        -
        47  case FOURCC_HEV1:
        -
        48  return kCodecHEV1;
        -
        49  case FOURCC_HVC1:
        -
        50  return kCodecHVC1;
        -
        51  case FOURCC_VP08:
        -
        52  return kCodecVP8;
        -
        53  case FOURCC_VP09:
        -
        54  return kCodecVP9;
        -
        55  case FOURCC_VP10:
        -
        56  return kCodecVP10;
        -
        57  default:
        -
        58  return kUnknownVideoCodec;
        -
        59  }
        -
        60 }
        -
        61 
        -
        62 AudioCodec FourCCToAudioCodec(FourCC fourcc) {
        -
        63  switch(fourcc) {
        -
        64  case FOURCC_DTSC:
        -
        65  return kCodecDTSC;
        -
        66  case FOURCC_DTSH:
        -
        67  return kCodecDTSH;
        -
        68  case FOURCC_DTSL:
        -
        69  return kCodecDTSL;
        -
        70  case FOURCC_DTSE:
        -
        71  return kCodecDTSE;
        -
        72  case FOURCC_DTSP:
        -
        73  return kCodecDTSP;
        -
        74  case FOURCC_DTSM:
        -
        75  return kCodecDTSM;
        -
        76  case FOURCC_AC3:
        -
        77  return kCodecAC3;
        -
        78  case FOURCC_EAC3:
        -
        79  return kCodecEAC3;
        -
        80  default:
        -
        81  return kUnknownAudioCodec;
        -
        82  }
        -
        83 }
        -
        84 
        -
        85 const char kWidevineKeySystemId[] = "edef8ba979d64acea3c827dcd51d21ed";
        -
        86 // Default DTS audio number of channels for 5.1 channel layout.
        -
        87 const uint8_t kDtsAudioNumChannels = 6;
        -
        88 
        -
        89 } // namespace
        -
        90 
        -
        91 MP4MediaParser::MP4MediaParser()
        -
        92  : state_(kWaitingForInit),
        -
        93  decryption_key_source_(NULL),
        -
        94  moof_head_(0),
        -
        95  mdat_tail_(0) {}
        -
        96 
        -
        97 MP4MediaParser::~MP4MediaParser() {}
        -
        98 
        -
        99 void MP4MediaParser::Init(const InitCB& init_cb,
        -
        100  const NewSampleCB& new_sample_cb,
        -
        101  KeySource* decryption_key_source) {
        -
        102  DCHECK_EQ(state_, kWaitingForInit);
        -
        103  DCHECK(init_cb_.is_null());
        -
        104  DCHECK(!init_cb.is_null());
        -
        105  DCHECK(!new_sample_cb.is_null());
        -
        106 
        -
        107  ChangeState(kParsingBoxes);
        -
        108  init_cb_ = init_cb;
        -
        109  new_sample_cb_ = new_sample_cb;
        -
        110  decryption_key_source_ = decryption_key_source;
        -
        111  if (decryption_key_source)
        -
        112  decryptor_source_.reset(new DecryptorSource(decryption_key_source));
        -
        113 }
        -
        114 
        -
        115 void MP4MediaParser::Reset() {
        -
        116  queue_.Reset();
        -
        117  runs_.reset();
        -
        118  moof_head_ = 0;
        -
        119  mdat_tail_ = 0;
        -
        120 }
        -
        121 
        - -
        123  DCHECK_NE(state_, kWaitingForInit);
        -
        124  Reset();
        -
        125  ChangeState(kParsingBoxes);
        -
        126  return true;
        -
        127 }
        -
        128 
        -
        129 bool MP4MediaParser::Parse(const uint8_t* buf, int size) {
        -
        130  DCHECK_NE(state_, kWaitingForInit);
        -
        131 
        -
        132  if (state_ == kError)
        -
        133  return false;
        -
        134 
        -
        135  queue_.Push(buf, size);
        -
        136 
        -
        137  bool result, err = false;
        -
        138 
        -
        139  do {
        -
        140  if (state_ == kParsingBoxes) {
        -
        141  result = ParseBox(&err);
        -
        142  } else {
        -
        143  DCHECK_EQ(kEmittingSamples, state_);
        -
        144  result = EnqueueSample(&err);
        -
        145  if (result) {
        -
        146  int64_t max_clear = runs_->GetMaxClearOffset() + moof_head_;
        -
        147  err = !ReadAndDiscardMDATsUntil(max_clear);
        -
        148  }
        -
        149  }
        -
        150  } while (result && !err);
        -
        151 
        -
        152  if (err) {
        -
        153  DLOG(ERROR) << "Error while parsing MP4";
        -
        154  moov_.reset();
        -
        155  Reset();
        -
        156  ChangeState(kError);
        -
        157  return false;
        -
        158  }
        -
        159 
        -
        160  return true;
        -
        161 }
        -
        162 
        -
        163 bool MP4MediaParser::LoadMoov(const std::string& file_path) {
        -
        164  scoped_ptr<File, FileCloser> file(
        -
        165  File::OpenWithNoBuffering(file_path.c_str(), "r"));
        -
        166  if (!file) {
        -
        167  LOG(ERROR) << "Unable to open media file '" << file_path << "'";
        -
        168  return false;
        -
        169  }
        -
        170  if (!file->Seek(0)) {
        -
        171  LOG(WARNING) << "Filesystem does not support seeking on file '" << file_path
        -
        172  << "'";
        -
        173  return false;
        -
        174  }
        -
        175 
        -
        176  uint64_t file_position(0);
        -
        177  bool mdat_seen(false);
        -
        178  while (true) {
        -
        179  const uint32_t kBoxHeaderReadSize(16);
        -
        180  std::vector<uint8_t> buffer(kBoxHeaderReadSize);
        -
        181  int64_t bytes_read = file->Read(&buffer[0], kBoxHeaderReadSize);
        -
        182  if (bytes_read == 0) {
        -
        183  LOG(ERROR) << "Could not find 'moov' box in file '" << file_path << "'";
        -
        184  return false;
        -
        185  }
        -
        186  if (bytes_read < kBoxHeaderReadSize) {
        -
        187  LOG(ERROR) << "Error reading media file '" << file_path << "'";
        -
        188  return false;
        -
        189  }
        -
        190  uint64_t box_size;
        -
        191  FourCC box_type;
        -
        192  bool err;
        -
        193  if (!BoxReader::StartTopLevelBox(&buffer[0], kBoxHeaderReadSize, &box_type,
        -
        194  &box_size, &err)) {
        -
        195  LOG(ERROR) << "Could not start top level box from file '" << file_path
        -
        196  << "'";
        -
        197  return false;
        -
        198  }
        -
        199  if (box_type == FOURCC_MDAT) {
        -
        200  mdat_seen = true;
        -
        201  } else if (box_type == FOURCC_MOOV) {
        -
        202  if (!mdat_seen) {
        -
        203  // 'moov' is before 'mdat'. Nothing to do.
        -
        204  break;
        -
        205  }
        -
        206  // 'mdat' before 'moov'. Read and parse 'moov'.
        -
        207  if (!Parse(&buffer[0], bytes_read)) {
        -
        208  LOG(ERROR) << "Error parsing mp4 file '" << file_path << "'";
        -
        209  return false;
        -
        210  }
        -
        211  uint64_t bytes_to_read = box_size - bytes_read;
        -
        212  buffer.resize(bytes_to_read);
        -
        213  while (bytes_to_read > 0) {
        -
        214  bytes_read = file->Read(&buffer[0], bytes_to_read);
        -
        215  if (bytes_read <= 0) {
        -
        216  LOG(ERROR) << "Error reading 'moov' contents from file '" << file_path
        -
        217  << "'";
        -
        218  return false;
        -
        219  }
        -
        220  if (!Parse(&buffer[0], bytes_read)) {
        -
        221  LOG(ERROR) << "Error parsing mp4 file '" << file_path << "'";
        -
        222  return false;
        -
        223  }
        -
        224  bytes_to_read -= bytes_read;
        -
        225  }
        -
        226  queue_.Reset(); // So that we don't need to adjust data offsets.
        -
        227  mdat_tail_ = 0; // So it will skip boxes until mdat.
        -
        228  break; // Done.
        -
        229  }
        -
        230  file_position += box_size;
        -
        231  if (!file->Seek(file_position)) {
        -
        232  LOG(ERROR) << "Error skipping box in mp4 file '" << file_path << "'";
        -
        233  return false;
        -
        234  }
        -
        235  }
        -
        236  return true;
        -
        237 }
        -
        238 
        -
        239 bool MP4MediaParser::ParseBox(bool* err) {
        -
        240  const uint8_t* buf;
        -
        241  int size;
        -
        242  queue_.Peek(&buf, &size);
        -
        243  if (!size)
        -
        244  return false;
        -
        245 
        -
        246  scoped_ptr<BoxReader> reader(BoxReader::ReadTopLevelBox(buf, size, err));
        -
        247  if (reader.get() == NULL)
        -
        248  return false;
        -
        249 
        -
        250  if (reader->type() == FOURCC_MDAT) {
        -
        251  // The code ends up here only if a MOOV box is not yet seen.
        -
        252  DCHECK(!moov_);
        -
        253 
        -
        254  NOTIMPLEMENTED() << " Files with MDAT before MOOV is not supported yet.";
        -
        255  *err = true;
        -
        256  return false;
        -
        257  }
        -
        258 
        -
        259  // Set up mdat offset for ReadMDATsUntil().
        -
        260  mdat_tail_ = queue_.head() + reader->size();
        -
        261 
        -
        262  if (reader->type() == FOURCC_MOOV) {
        -
        263  *err = !ParseMoov(reader.get());
        -
        264  } else if (reader->type() == FOURCC_MOOF) {
        -
        265  moof_head_ = queue_.head();
        -
        266  *err = !ParseMoof(reader.get());
        -
        267 
        -
        268  // Return early to avoid evicting 'moof' data from queue. Auxiliary info may
        -
        269  // be located anywhere in the file, including inside the 'moof' itself.
        -
        270  // (Since 'default-base-is-moof' is mandated, no data references can come
        -
        271  // before the head of the 'moof', so keeping this box around is sufficient.)
        -
        272  return !(*err);
        -
        273  } else {
        -
        274  VLOG(2) << "Skipping top-level box: " << FourCCToString(reader->type());
        -
        275  }
        -
        276 
        -
        277  queue_.Pop(reader->size());
        -
        278  return !(*err);
        -
        279 }
        -
        280 
        -
        281 bool MP4MediaParser::ParseMoov(BoxReader* reader) {
        -
        282  if (moov_)
        -
        283  return true; // Already parsed the 'moov' box.
        -
        284 
        -
        285  moov_.reset(new Movie);
        -
        286  RCHECK(moov_->Parse(reader));
        -
        287  runs_.reset();
        -
        288 
        -
        289  std::vector<scoped_refptr<StreamInfo> > streams;
        -
        290 
        -
        291  for (std::vector<Track>::const_iterator track = moov_->tracks.begin();
        -
        292  track != moov_->tracks.end(); ++track) {
        -
        293  const uint32_t timescale = track->media.header.timescale;
        -
        294 
        -
        295  // Calculate duration (based on timescale).
        -
        296  uint64_t duration = 0;
        -
        297  if (track->media.header.duration > 0) {
        -
        298  duration = track->media.header.duration;
        -
        299  } else if (moov_->extends.header.fragment_duration > 0) {
        -
        300  DCHECK(moov_->header.timescale != 0);
        -
        301  duration = Rescale(moov_->extends.header.fragment_duration,
        -
        302  moov_->header.timescale,
        -
        303  timescale);
        -
        304  } else if (moov_->header.duration > 0 &&
        -
        305  moov_->header.duration != std::numeric_limits<uint64_t>::max()) {
        -
        306  DCHECK(moov_->header.timescale != 0);
        -
        307  duration =
        -
        308  Rescale(moov_->header.duration, moov_->header.timescale, timescale);
        -
        309  }
        -
        310 
        -
        311  const SampleDescription& samp_descr =
        -
        312  track->media.information.sample_table.description;
        -
        313 
        -
        314  size_t desc_idx = 0;
        -
        315 
        -
        316  // Read sample description index from mvex if it exists otherwise read
        -
        317  // from the first entry in Sample To Chunk box.
        -
        318  if (moov_->extends.tracks.size() > 0) {
        -
        319  for (size_t t = 0; t < moov_->extends.tracks.size(); t++) {
        -
        320  const TrackExtends& trex = moov_->extends.tracks[t];
        -
        321  if (trex.track_id == track->header.track_id) {
        -
        322  desc_idx = trex.default_sample_description_index;
        -
        323  break;
        -
        324  }
        -
        325  }
        -
        326  } else {
        -
        327  const std::vector<ChunkInfo>& chunk_info =
        -
        328  track->media.information.sample_table.sample_to_chunk.chunk_info;
        -
        329  RCHECK(chunk_info.size() > 0);
        -
        330  desc_idx = chunk_info[0].sample_description_index;
        -
        331  }
        -
        332  RCHECK(desc_idx > 0);
        -
        333  desc_idx -= 1; // BMFF descriptor index is one-based
        -
        334 
        -
        335  if (samp_descr.type == kAudio) {
        -
        336  RCHECK(!samp_descr.audio_entries.empty());
        -
        337 
        -
        338  // It is not uncommon to find otherwise-valid files with incorrect sample
        -
        339  // description indices, so we fail gracefully in that case.
        -
        340  if (desc_idx >= samp_descr.audio_entries.size())
        -
        341  desc_idx = 0;
        -
        342 
        -
        343  const AudioSampleEntry& entry = samp_descr.audio_entries[desc_idx];
        -
        344  const FourCC actual_format = entry.GetActualFormat();
        -
        345  AudioCodec codec = FourCCToAudioCodec(actual_format);
        -
        346  uint8_t num_channels = 0;
        -
        347  uint32_t sampling_frequency = 0;
        -
        348  uint8_t audio_object_type = 0;
        -
        349  uint32_t max_bitrate = 0;
        -
        350  uint32_t avg_bitrate = 0;
        -
        351  std::vector<uint8_t> extra_data;
        -
        352 
        -
        353  switch (actual_format) {
        -
        354  case FOURCC_MP4A:
        -
        355  // Check if it is MPEG4 AAC defined in ISO 14496 Part 3 or
        -
        356  // supported MPEG2 AAC variants.
        -
        357  if (entry.esds.es_descriptor.IsAAC()) {
        -
        358  codec = kCodecAAC;
        -
        359  const AACAudioSpecificConfig& aac_audio_specific_config =
        -
        360  entry.esds.aac_audio_specific_config;
        -
        361  num_channels = aac_audio_specific_config.num_channels();
        -
        362  sampling_frequency = aac_audio_specific_config.frequency();
        -
        363  audio_object_type = aac_audio_specific_config.audio_object_type();
        -
        364  extra_data = entry.esds.es_descriptor.decoder_specific_info();
        -
        365  break;
        -
        366  } else if (entry.esds.es_descriptor.IsDTS()) {
        -
        367  ObjectType audio_type = entry.esds.es_descriptor.object_type();
        -
        368  switch (audio_type) {
        -
        369  case kDTSC:
        -
        370  codec = kCodecDTSC;
        -
        371  break;
        -
        372  case kDTSE:
        -
        373  codec = kCodecDTSE;
        -
        374  break;
        -
        375  case kDTSH:
        -
        376  codec = kCodecDTSH;
        -
        377  break;
        -
        378  case kDTSL:
        -
        379  codec = kCodecDTSL;
        -
        380  break;
        -
        381  default:
        -
        382  LOG(ERROR) << "Unsupported audio type " << audio_type
        -
        383  << " in stsd box.";
        -
        384  return false;
        -
        385  }
        -
        386  num_channels = entry.esds.aac_audio_specific_config.num_channels();
        -
        387  // For dts audio in esds, current supported number of channels is 6
        -
        388  // as the only supported channel layout is 5.1.
        -
        389  if (num_channels != kDtsAudioNumChannels) {
        -
        390  LOG(ERROR) << "Unsupported channel count " << num_channels
        -
        391  << " for audio type " << audio_type << ".";
        -
        392  return false;
        -
        393  }
        -
        394  sampling_frequency = entry.samplerate;
        -
        395  max_bitrate = entry.esds.es_descriptor.max_bitrate();
        -
        396  avg_bitrate = entry.esds.es_descriptor.avg_bitrate();
        -
        397  } else {
        -
        398  LOG(ERROR) << "Unsupported audio format 0x" << std::hex
        -
        399  << actual_format << " in stsd box.";
        -
        400  return false;
        -
        401  }
        -
        402  break;
        -
        403  case FOURCC_DTSC:
        -
        404  FALLTHROUGH_INTENDED;
        -
        405  case FOURCC_DTSH:
        -
        406  FALLTHROUGH_INTENDED;
        -
        407  case FOURCC_DTSL:
        -
        408  FALLTHROUGH_INTENDED;
        -
        409  case FOURCC_DTSE:
        -
        410  FALLTHROUGH_INTENDED;
        -
        411  case FOURCC_DTSM:
        -
        412  extra_data = entry.ddts.extra_data;
        -
        413  max_bitrate = entry.ddts.max_bitrate;
        -
        414  avg_bitrate = entry.ddts.avg_bitrate;
        -
        415  num_channels = entry.channelcount;
        -
        416  sampling_frequency = entry.samplerate;
        -
        417  break;
        -
        418  case FOURCC_AC3:
        -
        419  extra_data = entry.dac3.data;
        -
        420  num_channels = entry.channelcount;
        -
        421  sampling_frequency = entry.samplerate;
        -
        422  break;
        -
        423  case FOURCC_EAC3:
        -
        424  extra_data = entry.dec3.data;
        -
        425  num_channels = entry.channelcount;
        -
        426  sampling_frequency = entry.samplerate;
        -
        427  break;
        -
        428  default:
        -
        429  LOG(ERROR) << "Unsupported audio format 0x" << std::hex
        -
        430  << actual_format << " in stsd box.";
        -
        431  return false;
        -
        432  }
        -
        433 
        -
        434  bool is_encrypted = entry.sinf.info.track_encryption.is_encrypted;
        -
        435  DVLOG(1) << "is_audio_track_encrypted_: " << is_encrypted;
        -
        436  streams.push_back(new AudioStreamInfo(
        -
        437  track->header.track_id,
        -
        438  timescale,
        -
        439  duration,
        -
        440  codec,
        -
        441  AudioStreamInfo::GetCodecString(codec, audio_object_type),
        -
        442  track->media.header.language.code,
        -
        443  entry.samplesize,
        -
        444  num_channels,
        -
        445  sampling_frequency,
        -
        446  max_bitrate,
        -
        447  avg_bitrate,
        -
        448  extra_data.data(),
        -
        449  extra_data.size(),
        -
        450  is_encrypted));
        -
        451  }
        -
        452 
        -
        453  if (samp_descr.type == kVideo) {
        -
        454  RCHECK(!samp_descr.video_entries.empty());
        -
        455  if (desc_idx >= samp_descr.video_entries.size())
        -
        456  desc_idx = 0;
        -
        457  const VideoSampleEntry& entry = samp_descr.video_entries[desc_idx];
        -
        458 
        -
        459  uint32_t coded_width = entry.width;
        -
        460  uint32_t coded_height = entry.height;
        -
        461  uint32_t pixel_width = entry.pixel_aspect.h_spacing;
        -
        462  uint32_t pixel_height = entry.pixel_aspect.v_spacing;
        -
        463  if (pixel_width == 0 && pixel_height == 0) {
        -
        464  pixel_width = 1;
        -
        465  pixel_height = 1;
        -
        466  }
        -
        467  std::string codec_string;
        -
        468  uint8_t nalu_length_size = 0;
        -
        469 
        -
        470  const FourCC actual_format = entry.GetActualFormat();
        -
        471  const VideoCodec video_codec = FourCCToVideoCodec(actual_format);
        -
        472  switch (actual_format) {
        -
        473  case FOURCC_AVC1: {
        -
        474  AVCDecoderConfiguration avc_config;
        -
        475  if (!avc_config.Parse(entry.codec_config_record.data)) {
        -
        476  LOG(ERROR) << "Failed to parse avcc.";
        -
        477  return false;
        -
        478  }
        -
        479  codec_string = avc_config.GetCodecString();
        -
        480  nalu_length_size = avc_config.nalu_length_size();
        -
        481 
        -
        482  if (coded_width != avc_config.coded_width() ||
        -
        483  coded_height != avc_config.coded_height()) {
        -
        484  LOG(WARNING) << "Resolution in VisualSampleEntry (" << coded_width
        -
        485  << "," << coded_height
        -
        486  << ") does not match with resolution in "
        -
        487  "AVCDecoderConfigurationRecord ("
        -
        488  << avc_config.coded_width() << ","
        -
        489  << avc_config.coded_height()
        -
        490  << "). Use AVCDecoderConfigurationRecord.";
        -
        491  coded_width = avc_config.coded_width();
        -
        492  coded_height = avc_config.coded_height();
        -
        493  }
        -
        494 
        -
        495  if (pixel_width != avc_config.pixel_width() ||
        -
        496  pixel_height != avc_config.pixel_height()) {
        -
        497  LOG_IF(WARNING, pixel_width != 1 || pixel_height != 1)
        -
        498  << "Pixel aspect ratio in PASP box (" << pixel_width << ","
        -
        499  << pixel_height
        -
        500  << ") does not match with SAR in AVCDecoderConfigurationRecord "
        -
        501  "("
        -
        502  << avc_config.pixel_width() << "," << avc_config.pixel_height()
        -
        503  << "). Use AVCDecoderConfigurationRecord.";
        -
        504  pixel_width = avc_config.pixel_width();
        -
        505  pixel_height = avc_config.pixel_height();
        -
        506  }
        -
        507  break;
        -
        508  }
        -
        509  case FOURCC_HEV1:
        -
        510  case FOURCC_HVC1: {
        -
        511  HEVCDecoderConfiguration hevc_config;
        -
        512  if (!hevc_config.Parse(entry.codec_config_record.data)) {
        -
        513  LOG(ERROR) << "Failed to parse hevc.";
        -
        514  return false;
        -
        515  }
        -
        516  codec_string = hevc_config.GetCodecString(video_codec);
        -
        517  nalu_length_size = hevc_config.nalu_length_size();
        -
        518  break;
        -
        519  }
        -
        520  case FOURCC_VP08:
        -
        521  case FOURCC_VP09:
        -
        522  case FOURCC_VP10: {
        -
        523  VPCodecConfiguration vp_config;
        -
        524  if (!vp_config.Parse(entry.codec_config_record.data)) {
        -
        525  LOG(ERROR) << "Failed to parse vpcc.";
        -
        526  return false;
        -
        527  }
        -
        528  codec_string = vp_config.GetCodecString(video_codec);
        -
        529  break;
        -
        530  }
        -
        531  default:
        -
        532  LOG(ERROR) << "Unsupported video format "
        -
        533  << FourCCToString(actual_format) << " in stsd box.";
        -
        534  return false;
        -
        535  }
        -
        536 
        -
        537  bool is_encrypted = entry.sinf.info.track_encryption.is_encrypted;
        -
        538  DVLOG(1) << "is_video_track_encrypted_: " << is_encrypted;
        -
        539  streams.push_back(new VideoStreamInfo(
        -
        540  track->header.track_id, timescale, duration, video_codec,
        -
        541  codec_string, track->media.header.language.code, coded_width,
        -
        542  coded_height, pixel_width, pixel_height,
        -
        543  0, // trick_play_rate
        -
        544  nalu_length_size, entry.codec_config_record.data.data(),
        -
        545  entry.codec_config_record.data.size(), is_encrypted));
        -
        546  }
        -
        547  }
        -
        548 
        -
        549  init_cb_.Run(streams);
        -
        550  if (!FetchKeysIfNecessary(moov_->pssh))
        -
        551  return false;
        -
        552  runs_.reset(new TrackRunIterator(moov_.get()));
        -
        553  RCHECK(runs_->Init());
        -
        554  ChangeState(kEmittingSamples);
        -
        555  return true;
        -
        556 }
        -
        557 
        -
        558 bool MP4MediaParser::ParseMoof(BoxReader* reader) {
        -
        559  // Must already have initialization segment.
        -
        560  RCHECK(moov_.get());
        -
        561  MovieFragment moof;
        -
        562  RCHECK(moof.Parse(reader));
        -
        563  if (!runs_)
        -
        564  runs_.reset(new TrackRunIterator(moov_.get()));
        -
        565  RCHECK(runs_->Init(moof));
        -
        566  if (!FetchKeysIfNecessary(moof.pssh))
        -
        567  return false;
        -
        568  ChangeState(kEmittingSamples);
        -
        569  return true;
        -
        570 }
        -
        571 
        -
        572 bool MP4MediaParser::FetchKeysIfNecessary(
        -
        573  const std::vector<ProtectionSystemSpecificHeader>& headers) {
        -
        574  if (headers.empty())
        -
        575  return true;
        -
        576 
        -
        577  // An error will be returned later if the samples need to be decrypted.
        -
        578  if (!decryption_key_source_)
        -
        579  return true;
        -
        580 
        -
        581  // TODO(tinskip): Pass in raw 'pssh' boxes to FetchKeys. This will allow
        -
        582  // supporting multiple keysystems. Move this to KeySource.
        -
        583  std::vector<uint8_t> widevine_system_id;
        -
        584  base::HexStringToBytes(kWidevineKeySystemId, &widevine_system_id);
        -
        585  for (std::vector<ProtectionSystemSpecificHeader>::const_iterator iter =
        -
        586  headers.begin(); iter != headers.end(); ++iter) {
        -
        587  if (iter->system_id == widevine_system_id) {
        -
        588  Status status = decryption_key_source_->FetchKeys(iter->data);
        -
        589  if (!status.ok()) {
        -
        590  LOG(ERROR) << "Error fetching decryption keys: " << status;
        -
        591  return false;
        -
        592  }
        -
        593  return true;
        -
        594  }
        -
        595  }
        -
        596 
        -
        597  LOG(ERROR) << "No viable 'pssh' box found for content decryption.";
        -
        598  return false;
        -
        599 }
        -
        600 
        -
        601 bool MP4MediaParser::EnqueueSample(bool* err) {
        -
        602  if (!runs_->IsRunValid()) {
        -
        603  // Remain in kEnqueueingSamples state, discarding data, until the end of
        -
        604  // the current 'mdat' box has been appended to the queue.
        -
        605  if (!queue_.Trim(mdat_tail_))
        -
        606  return false;
        -
        607 
        -
        608  ChangeState(kParsingBoxes);
        -
        609  return true;
        -
        610  }
        -
        611 
        -
        612  if (!runs_->IsSampleValid()) {
        -
        613  runs_->AdvanceRun();
        -
        614  return true;
        -
        615  }
        -
        616 
        -
        617  DCHECK(!(*err));
        -
        618 
        -
        619  const uint8_t* buf;
        -
        620  int buf_size;
        -
        621  queue_.Peek(&buf, &buf_size);
        -
        622  if (!buf_size)
        -
        623  return false;
        -
        624 
        -
        625  // Skip this entire track if it is not audio nor video.
        -
        626  if (!runs_->is_audio() && !runs_->is_video())
        -
        627  runs_->AdvanceRun();
        -
        628 
        -
        629  // Attempt to cache the auxiliary information first. Aux info is usually
        -
        630  // placed in a contiguous block before the sample data, rather than being
        -
        631  // interleaved. If we didn't cache it, this would require that we retain the
        -
        632  // start of the segment buffer while reading samples. Aux info is typically
        -
        633  // quite small compared to sample data, so this pattern is useful on
        -
        634  // memory-constrained devices where the source buffer consumes a substantial
        -
        635  // portion of the total system memory.
        -
        636  if (runs_->AuxInfoNeedsToBeCached()) {
        -
        637  queue_.PeekAt(runs_->aux_info_offset() + moof_head_, &buf, &buf_size);
        -
        638  if (buf_size < runs_->aux_info_size())
        -
        639  return false;
        -
        640  *err = !runs_->CacheAuxInfo(buf, buf_size);
        -
        641  return !*err;
        -
        642  }
        -
        643 
        -
        644  int64_t sample_offset = runs_->sample_offset() + moof_head_;
        -
        645  queue_.PeekAt(sample_offset, &buf, &buf_size);
        -
        646  if (buf_size < runs_->sample_size()) {
        -
        647  if (sample_offset < queue_.head()) {
        -
        648  LOG(ERROR) << "Incorrect sample offset " << sample_offset
        -
        649  << " < " << queue_.head();
        -
        650  *err = true;
        -
        651  }
        -
        652  return false;
        -
        653  }
        -
        654 
        -
        655  scoped_refptr<MediaSample> stream_sample(MediaSample::CopyFrom(
        -
        656  buf, runs_->sample_size(), runs_->is_keyframe()));
        -
        657  if (runs_->is_encrypted()) {
        -
        658  if (!decryptor_source_) {
        -
        659  *err = true;
        -
        660  LOG(ERROR) << "Encrypted media sample encountered, but decryption is not "
        -
        661  "enabled";
        -
        662  return false;
        -
        663  }
        -
        664 
        -
        665  scoped_ptr<DecryptConfig> decrypt_config = runs_->GetDecryptConfig();
        -
        666  if (!decrypt_config ||
        -
        667  !decryptor_source_->DecryptSampleBuffer(decrypt_config.get(),
        -
        668  stream_sample->writable_data(),
        -
        669  stream_sample->data_size())) {
        -
        670  *err = true;
        -
        671  LOG(ERROR) << "Cannot decrypt samples.";
        -
        672  return false;
        -
        673  }
        -
        674  }
        -
        675 
        -
        676  stream_sample->set_dts(runs_->dts());
        -
        677  stream_sample->set_pts(runs_->cts());
        -
        678  stream_sample->set_duration(runs_->duration());
        -
        679 
        -
        680  DVLOG(3) << "Pushing frame: "
        -
        681  << ", key=" << runs_->is_keyframe()
        -
        682  << ", dur=" << runs_->duration()
        -
        683  << ", dts=" << runs_->dts()
        -
        684  << ", cts=" << runs_->cts()
        -
        685  << ", size=" << runs_->sample_size();
        -
        686 
        -
        687  if (!new_sample_cb_.Run(runs_->track_id(), stream_sample)) {
        -
        688  *err = true;
        -
        689  LOG(ERROR) << "Failed to process the sample.";
        -
        690  return false;
        -
        691  }
        -
        692 
        -
        693  runs_->AdvanceSample();
        -
        694  return true;
        -
        695 }
        -
        696 
        -
        697 bool MP4MediaParser::ReadAndDiscardMDATsUntil(const int64_t offset) {
        -
        698  bool err = false;
        -
        699  while (mdat_tail_ < offset) {
        -
        700  const uint8_t* buf;
        -
        701  int size;
        -
        702  queue_.PeekAt(mdat_tail_, &buf, &size);
        -
        703 
        -
        704  FourCC type;
        -
        705  uint64_t box_sz;
        -
        706  if (!BoxReader::StartTopLevelBox(buf, size, &type, &box_sz, &err))
        -
        707  break;
        -
        708 
        -
        709  mdat_tail_ += box_sz;
        -
        710  }
        -
        711  queue_.Trim(std::min(mdat_tail_, offset));
        -
        712  return !err;
        -
        713 }
        -
        714 
        -
        715 void MP4MediaParser::ChangeState(State new_state) {
        -
        716  DVLOG(2) << "Changing state: " << new_state;
        -
        717  state_ = new_state;
        -
        718 }
        -
        719 
        -
        720 } // namespace mp4
        -
        721 } // namespace media
        -
        722 } // namespace edash_packager
        +
        20 #include "packager/media/base/protection_system_specific_info.h"
        +
        21 #include "packager/media/base/video_stream_info.h"
        +
        22 #include "packager/media/file/file.h"
        +
        23 #include "packager/media/file/file_closer.h"
        +
        24 #include "packager/media/filters/avc_decoder_configuration.h"
        +
        25 #include "packager/media/filters/hevc_decoder_configuration.h"
        +
        26 #include "packager/media/filters/vp_codec_configuration.h"
        +
        27 #include "packager/media/formats/mp4/box_definitions.h"
        +
        28 #include "packager/media/formats/mp4/box_reader.h"
        +
        29 #include "packager/media/formats/mp4/es_descriptor.h"
        +
        30 #include "packager/media/formats/mp4/rcheck.h"
        +
        31 #include "packager/media/formats/mp4/track_run_iterator.h"
        +
        32 
        +
        33 namespace edash_packager {
        +
        34 namespace media {
        +
        35 namespace mp4 {
        +
        36 namespace {
        +
        37 
        +
        38 uint64_t Rescale(uint64_t time_in_old_scale,
        +
        39  uint32_t old_scale,
        +
        40  uint32_t new_scale) {
        +
        41  return (static_cast<double>(time_in_old_scale) / old_scale) * new_scale;
        +
        42 }
        +
        43 
        +
        44 VideoCodec FourCCToVideoCodec(FourCC fourcc) {
        +
        45  switch (fourcc) {
        +
        46  case FOURCC_AVC1:
        +
        47  return kCodecH264;
        +
        48  case FOURCC_HEV1:
        +
        49  return kCodecHEV1;
        +
        50  case FOURCC_HVC1:
        +
        51  return kCodecHVC1;
        +
        52  case FOURCC_VP08:
        +
        53  return kCodecVP8;
        +
        54  case FOURCC_VP09:
        +
        55  return kCodecVP9;
        +
        56  case FOURCC_VP10:
        +
        57  return kCodecVP10;
        +
        58  default:
        +
        59  return kUnknownVideoCodec;
        +
        60  }
        +
        61 }
        +
        62 
        +
        63 AudioCodec FourCCToAudioCodec(FourCC fourcc) {
        +
        64  switch(fourcc) {
        +
        65  case FOURCC_DTSC:
        +
        66  return kCodecDTSC;
        +
        67  case FOURCC_DTSH:
        +
        68  return kCodecDTSH;
        +
        69  case FOURCC_DTSL:
        +
        70  return kCodecDTSL;
        +
        71  case FOURCC_DTSE:
        +
        72  return kCodecDTSE;
        +
        73  case FOURCC_DTSP:
        +
        74  return kCodecDTSP;
        +
        75  case FOURCC_DTSM:
        +
        76  return kCodecDTSM;
        +
        77  case FOURCC_AC3:
        +
        78  return kCodecAC3;
        +
        79  case FOURCC_EAC3:
        +
        80  return kCodecEAC3;
        +
        81  default:
        +
        82  return kUnknownAudioCodec;
        +
        83  }
        +
        84 }
        +
        85 
        +
        86 const char kWidevineKeySystemId[] = "edef8ba979d64acea3c827dcd51d21ed";
        +
        87 // Default DTS audio number of channels for 5.1 channel layout.
        +
        88 const uint8_t kDtsAudioNumChannels = 6;
        +
        89 
        +
        90 } // namespace
        +
        91 
        +
        92 MP4MediaParser::MP4MediaParser()
        +
        93  : state_(kWaitingForInit),
        +
        94  decryption_key_source_(NULL),
        +
        95  moof_head_(0),
        +
        96  mdat_tail_(0) {}
        +
        97 
        +
        98 MP4MediaParser::~MP4MediaParser() {}
        +
        99 
        +
        100 void MP4MediaParser::Init(const InitCB& init_cb,
        +
        101  const NewSampleCB& new_sample_cb,
        +
        102  KeySource* decryption_key_source) {
        +
        103  DCHECK_EQ(state_, kWaitingForInit);
        +
        104  DCHECK(init_cb_.is_null());
        +
        105  DCHECK(!init_cb.is_null());
        +
        106  DCHECK(!new_sample_cb.is_null());
        +
        107 
        +
        108  ChangeState(kParsingBoxes);
        +
        109  init_cb_ = init_cb;
        +
        110  new_sample_cb_ = new_sample_cb;
        +
        111  decryption_key_source_ = decryption_key_source;
        +
        112  if (decryption_key_source)
        +
        113  decryptor_source_.reset(new DecryptorSource(decryption_key_source));
        +
        114 }
        +
        115 
        +
        116 void MP4MediaParser::Reset() {
        +
        117  queue_.Reset();
        +
        118  runs_.reset();
        +
        119  moof_head_ = 0;
        +
        120  mdat_tail_ = 0;
        +
        121 }
        +
        122 
        + +
        124  DCHECK_NE(state_, kWaitingForInit);
        +
        125  Reset();
        +
        126  ChangeState(kParsingBoxes);
        +
        127  return true;
        +
        128 }
        +
        129 
        +
        130 bool MP4MediaParser::Parse(const uint8_t* buf, int size) {
        +
        131  DCHECK_NE(state_, kWaitingForInit);
        +
        132 
        +
        133  if (state_ == kError)
        +
        134  return false;
        +
        135 
        +
        136  queue_.Push(buf, size);
        +
        137 
        +
        138  bool result, err = false;
        +
        139 
        +
        140  do {
        +
        141  if (state_ == kParsingBoxes) {
        +
        142  result = ParseBox(&err);
        +
        143  } else {
        +
        144  DCHECK_EQ(kEmittingSamples, state_);
        +
        145  result = EnqueueSample(&err);
        +
        146  if (result) {
        +
        147  int64_t max_clear = runs_->GetMaxClearOffset() + moof_head_;
        +
        148  err = !ReadAndDiscardMDATsUntil(max_clear);
        +
        149  }
        +
        150  }
        +
        151  } while (result && !err);
        +
        152 
        +
        153  if (err) {
        +
        154  DLOG(ERROR) << "Error while parsing MP4";
        +
        155  moov_.reset();
        +
        156  Reset();
        +
        157  ChangeState(kError);
        +
        158  return false;
        +
        159  }
        +
        160 
        +
        161  return true;
        +
        162 }
        +
        163 
        +
        164 bool MP4MediaParser::LoadMoov(const std::string& file_path) {
        +
        165  scoped_ptr<File, FileCloser> file(
        +
        166  File::OpenWithNoBuffering(file_path.c_str(), "r"));
        +
        167  if (!file) {
        +
        168  LOG(ERROR) << "Unable to open media file '" << file_path << "'";
        +
        169  return false;
        +
        170  }
        +
        171  if (!file->Seek(0)) {
        +
        172  LOG(WARNING) << "Filesystem does not support seeking on file '" << file_path
        +
        173  << "'";
        +
        174  return false;
        +
        175  }
        +
        176 
        +
        177  uint64_t file_position(0);
        +
        178  bool mdat_seen(false);
        +
        179  while (true) {
        +
        180  const uint32_t kBoxHeaderReadSize(16);
        +
        181  std::vector<uint8_t> buffer(kBoxHeaderReadSize);
        +
        182  int64_t bytes_read = file->Read(&buffer[0], kBoxHeaderReadSize);
        +
        183  if (bytes_read == 0) {
        +
        184  LOG(ERROR) << "Could not find 'moov' box in file '" << file_path << "'";
        +
        185  return false;
        +
        186  }
        +
        187  if (bytes_read < kBoxHeaderReadSize) {
        +
        188  LOG(ERROR) << "Error reading media file '" << file_path << "'";
        +
        189  return false;
        +
        190  }
        +
        191  uint64_t box_size;
        +
        192  FourCC box_type;
        +
        193  bool err;
        +
        194  if (!BoxReader::StartTopLevelBox(&buffer[0], kBoxHeaderReadSize, &box_type,
        +
        195  &box_size, &err)) {
        +
        196  LOG(ERROR) << "Could not start top level box from file '" << file_path
        +
        197  << "'";
        +
        198  return false;
        +
        199  }
        +
        200  if (box_type == FOURCC_MDAT) {
        +
        201  mdat_seen = true;
        +
        202  } else if (box_type == FOURCC_MOOV) {
        +
        203  if (!mdat_seen) {
        +
        204  // 'moov' is before 'mdat'. Nothing to do.
        +
        205  break;
        +
        206  }
        +
        207  // 'mdat' before 'moov'. Read and parse 'moov'.
        +
        208  if (!Parse(&buffer[0], bytes_read)) {
        +
        209  LOG(ERROR) << "Error parsing mp4 file '" << file_path << "'";
        +
        210  return false;
        +
        211  }
        +
        212  uint64_t bytes_to_read = box_size - bytes_read;
        +
        213  buffer.resize(bytes_to_read);
        +
        214  while (bytes_to_read > 0) {
        +
        215  bytes_read = file->Read(&buffer[0], bytes_to_read);
        +
        216  if (bytes_read <= 0) {
        +
        217  LOG(ERROR) << "Error reading 'moov' contents from file '" << file_path
        +
        218  << "'";
        +
        219  return false;
        +
        220  }
        +
        221  if (!Parse(&buffer[0], bytes_read)) {
        +
        222  LOG(ERROR) << "Error parsing mp4 file '" << file_path << "'";
        +
        223  return false;
        +
        224  }
        +
        225  bytes_to_read -= bytes_read;
        +
        226  }
        +
        227  queue_.Reset(); // So that we don't need to adjust data offsets.
        +
        228  mdat_tail_ = 0; // So it will skip boxes until mdat.
        +
        229  break; // Done.
        +
        230  }
        +
        231  file_position += box_size;
        +
        232  if (!file->Seek(file_position)) {
        +
        233  LOG(ERROR) << "Error skipping box in mp4 file '" << file_path << "'";
        +
        234  return false;
        +
        235  }
        +
        236  }
        +
        237  return true;
        +
        238 }
        +
        239 
        +
        240 bool MP4MediaParser::ParseBox(bool* err) {
        +
        241  const uint8_t* buf;
        +
        242  int size;
        +
        243  queue_.Peek(&buf, &size);
        +
        244  if (!size)
        +
        245  return false;
        +
        246 
        +
        247  scoped_ptr<BoxReader> reader(BoxReader::ReadTopLevelBox(buf, size, err));
        +
        248  if (reader.get() == NULL)
        +
        249  return false;
        +
        250 
        +
        251  if (reader->type() == FOURCC_MDAT) {
        +
        252  // The code ends up here only if a MOOV box is not yet seen.
        +
        253  DCHECK(!moov_);
        +
        254 
        +
        255  NOTIMPLEMENTED() << " Files with MDAT before MOOV is not supported yet.";
        +
        256  *err = true;
        +
        257  return false;
        +
        258  }
        +
        259 
        +
        260  // Set up mdat offset for ReadMDATsUntil().
        +
        261  mdat_tail_ = queue_.head() + reader->size();
        +
        262 
        +
        263  if (reader->type() == FOURCC_MOOV) {
        +
        264  *err = !ParseMoov(reader.get());
        +
        265  } else if (reader->type() == FOURCC_MOOF) {
        +
        266  moof_head_ = queue_.head();
        +
        267  *err = !ParseMoof(reader.get());
        +
        268 
        +
        269  // Return early to avoid evicting 'moof' data from queue. Auxiliary info may
        +
        270  // be located anywhere in the file, including inside the 'moof' itself.
        +
        271  // (Since 'default-base-is-moof' is mandated, no data references can come
        +
        272  // before the head of the 'moof', so keeping this box around is sufficient.)
        +
        273  return !(*err);
        +
        274  } else {
        +
        275  VLOG(2) << "Skipping top-level box: " << FourCCToString(reader->type());
        +
        276  }
        +
        277 
        +
        278  queue_.Pop(reader->size());
        +
        279  return !(*err);
        +
        280 }
        +
        281 
        +
        282 bool MP4MediaParser::ParseMoov(BoxReader* reader) {
        +
        283  if (moov_)
        +
        284  return true; // Already parsed the 'moov' box.
        +
        285 
        +
        286  moov_.reset(new Movie);
        +
        287  RCHECK(moov_->Parse(reader));
        +
        288  runs_.reset();
        +
        289 
        +
        290  std::vector<scoped_refptr<StreamInfo> > streams;
        +
        291 
        +
        292  for (std::vector<Track>::const_iterator track = moov_->tracks.begin();
        +
        293  track != moov_->tracks.end(); ++track) {
        +
        294  const uint32_t timescale = track->media.header.timescale;
        +
        295 
        +
        296  // Calculate duration (based on timescale).
        +
        297  uint64_t duration = 0;
        +
        298  if (track->media.header.duration > 0) {
        +
        299  duration = track->media.header.duration;
        +
        300  } else if (moov_->extends.header.fragment_duration > 0) {
        +
        301  DCHECK(moov_->header.timescale != 0);
        +
        302  duration = Rescale(moov_->extends.header.fragment_duration,
        +
        303  moov_->header.timescale,
        +
        304  timescale);
        +
        305  } else if (moov_->header.duration > 0 &&
        +
        306  moov_->header.duration != std::numeric_limits<uint64_t>::max()) {
        +
        307  DCHECK(moov_->header.timescale != 0);
        +
        308  duration =
        +
        309  Rescale(moov_->header.duration, moov_->header.timescale, timescale);
        +
        310  }
        +
        311 
        +
        312  const SampleDescription& samp_descr =
        +
        313  track->media.information.sample_table.description;
        +
        314 
        +
        315  size_t desc_idx = 0;
        +
        316 
        +
        317  // Read sample description index from mvex if it exists otherwise read
        +
        318  // from the first entry in Sample To Chunk box.
        +
        319  if (moov_->extends.tracks.size() > 0) {
        +
        320  for (size_t t = 0; t < moov_->extends.tracks.size(); t++) {
        +
        321  const TrackExtends& trex = moov_->extends.tracks[t];
        +
        322  if (trex.track_id == track->header.track_id) {
        +
        323  desc_idx = trex.default_sample_description_index;
        +
        324  break;
        +
        325  }
        +
        326  }
        +
        327  } else {
        +
        328  const std::vector<ChunkInfo>& chunk_info =
        +
        329  track->media.information.sample_table.sample_to_chunk.chunk_info;
        +
        330  RCHECK(chunk_info.size() > 0);
        +
        331  desc_idx = chunk_info[0].sample_description_index;
        +
        332  }
        +
        333  RCHECK(desc_idx > 0);
        +
        334  desc_idx -= 1; // BMFF descriptor index is one-based
        +
        335 
        +
        336  if (samp_descr.type == kAudio) {
        +
        337  RCHECK(!samp_descr.audio_entries.empty());
        +
        338 
        +
        339  // It is not uncommon to find otherwise-valid files with incorrect sample
        +
        340  // description indices, so we fail gracefully in that case.
        +
        341  if (desc_idx >= samp_descr.audio_entries.size())
        +
        342  desc_idx = 0;
        +
        343 
        +
        344  const AudioSampleEntry& entry = samp_descr.audio_entries[desc_idx];
        +
        345  const FourCC actual_format = entry.GetActualFormat();
        +
        346  AudioCodec codec = FourCCToAudioCodec(actual_format);
        +
        347  uint8_t num_channels = 0;
        +
        348  uint32_t sampling_frequency = 0;
        +
        349  uint8_t audio_object_type = 0;
        +
        350  uint32_t max_bitrate = 0;
        +
        351  uint32_t avg_bitrate = 0;
        +
        352  std::vector<uint8_t> extra_data;
        +
        353 
        +
        354  switch (actual_format) {
        +
        355  case FOURCC_MP4A:
        +
        356  // Check if it is MPEG4 AAC defined in ISO 14496 Part 3 or
        +
        357  // supported MPEG2 AAC variants.
        +
        358  if (entry.esds.es_descriptor.IsAAC()) {
        +
        359  codec = kCodecAAC;
        +
        360  const AACAudioSpecificConfig& aac_audio_specific_config =
        +
        361  entry.esds.aac_audio_specific_config;
        +
        362  num_channels = aac_audio_specific_config.num_channels();
        +
        363  sampling_frequency = aac_audio_specific_config.frequency();
        +
        364  audio_object_type = aac_audio_specific_config.audio_object_type();
        +
        365  extra_data = entry.esds.es_descriptor.decoder_specific_info();
        +
        366  break;
        +
        367  } else if (entry.esds.es_descriptor.IsDTS()) {
        +
        368  ObjectType audio_type = entry.esds.es_descriptor.object_type();
        +
        369  switch (audio_type) {
        +
        370  case kDTSC:
        +
        371  codec = kCodecDTSC;
        +
        372  break;
        +
        373  case kDTSE:
        +
        374  codec = kCodecDTSE;
        +
        375  break;
        +
        376  case kDTSH:
        +
        377  codec = kCodecDTSH;
        +
        378  break;
        +
        379  case kDTSL:
        +
        380  codec = kCodecDTSL;
        +
        381  break;
        +
        382  default:
        +
        383  LOG(ERROR) << "Unsupported audio type " << audio_type
        +
        384  << " in stsd box.";
        +
        385  return false;
        +
        386  }
        +
        387  num_channels = entry.esds.aac_audio_specific_config.num_channels();
        +
        388  // For dts audio in esds, current supported number of channels is 6
        +
        389  // as the only supported channel layout is 5.1.
        +
        390  if (num_channels != kDtsAudioNumChannels) {
        +
        391  LOG(ERROR) << "Unsupported channel count " << num_channels
        +
        392  << " for audio type " << audio_type << ".";
        +
        393  return false;
        +
        394  }
        +
        395  sampling_frequency = entry.samplerate;
        +
        396  max_bitrate = entry.esds.es_descriptor.max_bitrate();
        +
        397  avg_bitrate = entry.esds.es_descriptor.avg_bitrate();
        +
        398  } else {
        +
        399  LOG(ERROR) << "Unsupported audio format 0x" << std::hex
        +
        400  << actual_format << " in stsd box.";
        +
        401  return false;
        +
        402  }
        +
        403  break;
        +
        404  case FOURCC_DTSC:
        +
        405  FALLTHROUGH_INTENDED;
        +
        406  case FOURCC_DTSH:
        +
        407  FALLTHROUGH_INTENDED;
        +
        408  case FOURCC_DTSL:
        +
        409  FALLTHROUGH_INTENDED;
        +
        410  case FOURCC_DTSE:
        +
        411  FALLTHROUGH_INTENDED;
        +
        412  case FOURCC_DTSM:
        +
        413  extra_data = entry.ddts.extra_data;
        +
        414  max_bitrate = entry.ddts.max_bitrate;
        +
        415  avg_bitrate = entry.ddts.avg_bitrate;
        +
        416  num_channels = entry.channelcount;
        +
        417  sampling_frequency = entry.samplerate;
        +
        418  break;
        +
        419  case FOURCC_AC3:
        +
        420  extra_data = entry.dac3.data;
        +
        421  num_channels = entry.channelcount;
        +
        422  sampling_frequency = entry.samplerate;
        +
        423  break;
        +
        424  case FOURCC_EAC3:
        +
        425  extra_data = entry.dec3.data;
        +
        426  num_channels = entry.channelcount;
        +
        427  sampling_frequency = entry.samplerate;
        +
        428  break;
        +
        429  default:
        +
        430  LOG(ERROR) << "Unsupported audio format 0x" << std::hex
        +
        431  << actual_format << " in stsd box.";
        +
        432  return false;
        +
        433  }
        +
        434 
        +
        435  bool is_encrypted = entry.sinf.info.track_encryption.is_encrypted;
        +
        436  DVLOG(1) << "is_audio_track_encrypted_: " << is_encrypted;
        +
        437  streams.push_back(new AudioStreamInfo(
        +
        438  track->header.track_id,
        +
        439  timescale,
        +
        440  duration,
        +
        441  codec,
        +
        442  AudioStreamInfo::GetCodecString(codec, audio_object_type),
        +
        443  track->media.header.language.code,
        +
        444  entry.samplesize,
        +
        445  num_channels,
        +
        446  sampling_frequency,
        +
        447  max_bitrate,
        +
        448  avg_bitrate,
        +
        449  extra_data.data(),
        +
        450  extra_data.size(),
        +
        451  is_encrypted));
        +
        452  }
        +
        453 
        +
        454  if (samp_descr.type == kVideo) {
        +
        455  RCHECK(!samp_descr.video_entries.empty());
        +
        456  if (desc_idx >= samp_descr.video_entries.size())
        +
        457  desc_idx = 0;
        +
        458  const VideoSampleEntry& entry = samp_descr.video_entries[desc_idx];
        +
        459 
        +
        460  uint32_t coded_width = entry.width;
        +
        461  uint32_t coded_height = entry.height;
        +
        462  uint32_t pixel_width = entry.pixel_aspect.h_spacing;
        +
        463  uint32_t pixel_height = entry.pixel_aspect.v_spacing;
        +
        464  if (pixel_width == 0 && pixel_height == 0) {
        +
        465  pixel_width = 1;
        +
        466  pixel_height = 1;
        +
        467  }
        +
        468  std::string codec_string;
        +
        469  uint8_t nalu_length_size = 0;
        +
        470 
        +
        471  const FourCC actual_format = entry.GetActualFormat();
        +
        472  const VideoCodec video_codec = FourCCToVideoCodec(actual_format);
        +
        473  switch (actual_format) {
        +
        474  case FOURCC_AVC1: {
        +
        475  AVCDecoderConfiguration avc_config;
        +
        476  if (!avc_config.Parse(entry.codec_config_record.data)) {
        +
        477  LOG(ERROR) << "Failed to parse avcc.";
        +
        478  return false;
        +
        479  }
        +
        480  codec_string = avc_config.GetCodecString();
        +
        481  nalu_length_size = avc_config.nalu_length_size();
        +
        482 
        +
        483  if (coded_width != avc_config.coded_width() ||
        +
        484  coded_height != avc_config.coded_height()) {
        +
        485  LOG(WARNING) << "Resolution in VisualSampleEntry (" << coded_width
        +
        486  << "," << coded_height
        +
        487  << ") does not match with resolution in "
        +
        488  "AVCDecoderConfigurationRecord ("
        +
        489  << avc_config.coded_width() << ","
        +
        490  << avc_config.coded_height()
        +
        491  << "). Use AVCDecoderConfigurationRecord.";
        +
        492  coded_width = avc_config.coded_width();
        +
        493  coded_height = avc_config.coded_height();
        +
        494  }
        +
        495 
        +
        496  if (pixel_width != avc_config.pixel_width() ||
        +
        497  pixel_height != avc_config.pixel_height()) {
        +
        498  LOG_IF(WARNING, pixel_width != 1 || pixel_height != 1)
        +
        499  << "Pixel aspect ratio in PASP box (" << pixel_width << ","
        +
        500  << pixel_height
        +
        501  << ") does not match with SAR in AVCDecoderConfigurationRecord "
        +
        502  "("
        +
        503  << avc_config.pixel_width() << "," << avc_config.pixel_height()
        +
        504  << "). Use AVCDecoderConfigurationRecord.";
        +
        505  pixel_width = avc_config.pixel_width();
        +
        506  pixel_height = avc_config.pixel_height();
        +
        507  }
        +
        508  break;
        +
        509  }
        +
        510  case FOURCC_HEV1:
        +
        511  case FOURCC_HVC1: {
        +
        512  HEVCDecoderConfiguration hevc_config;
        +
        513  if (!hevc_config.Parse(entry.codec_config_record.data)) {
        +
        514  LOG(ERROR) << "Failed to parse hevc.";
        +
        515  return false;
        +
        516  }
        +
        517  codec_string = hevc_config.GetCodecString(video_codec);
        +
        518  nalu_length_size = hevc_config.nalu_length_size();
        +
        519  break;
        +
        520  }
        +
        521  case FOURCC_VP08:
        +
        522  case FOURCC_VP09:
        +
        523  case FOURCC_VP10: {
        +
        524  VPCodecConfiguration vp_config;
        +
        525  if (!vp_config.Parse(entry.codec_config_record.data)) {
        +
        526  LOG(ERROR) << "Failed to parse vpcc.";
        +
        527  return false;
        +
        528  }
        +
        529  codec_string = vp_config.GetCodecString(video_codec);
        +
        530  break;
        +
        531  }
        +
        532  default:
        +
        533  LOG(ERROR) << "Unsupported video format "
        +
        534  << FourCCToString(actual_format) << " in stsd box.";
        +
        535  return false;
        +
        536  }
        +
        537 
        +
        538  bool is_encrypted = entry.sinf.info.track_encryption.is_encrypted;
        +
        539  DVLOG(1) << "is_video_track_encrypted_: " << is_encrypted;
        +
        540  streams.push_back(new VideoStreamInfo(
        +
        541  track->header.track_id, timescale, duration, video_codec,
        +
        542  codec_string, track->media.header.language.code, coded_width,
        +
        543  coded_height, pixel_width, pixel_height,
        +
        544  0, // trick_play_rate
        +
        545  nalu_length_size, entry.codec_config_record.data.data(),
        +
        546  entry.codec_config_record.data.size(), is_encrypted));
        +
        547  }
        +
        548  }
        +
        549 
        +
        550  init_cb_.Run(streams);
        +
        551  if (!FetchKeysIfNecessary(moov_->pssh))
        +
        552  return false;
        +
        553  runs_.reset(new TrackRunIterator(moov_.get()));
        +
        554  RCHECK(runs_->Init());
        +
        555  ChangeState(kEmittingSamples);
        +
        556  return true;
        +
        557 }
        +
        558 
        +
        559 bool MP4MediaParser::ParseMoof(BoxReader* reader) {
        +
        560  // Must already have initialization segment.
        +
        561  RCHECK(moov_.get());
        +
        562  MovieFragment moof;
        +
        563  RCHECK(moof.Parse(reader));
        +
        564  if (!runs_)
        +
        565  runs_.reset(new TrackRunIterator(moov_.get()));
        +
        566  RCHECK(runs_->Init(moof));
        +
        567  if (!FetchKeysIfNecessary(moof.pssh))
        +
        568  return false;
        +
        569  ChangeState(kEmittingSamples);
        +
        570  return true;
        +
        571 }
        +
        572 
        +
        573 bool MP4MediaParser::FetchKeysIfNecessary(
        +
        574  const std::vector<ProtectionSystemSpecificHeader>& headers) {
        +
        575  if (headers.empty())
        +
        576  return true;
        +
        577 
        +
        578  // An error will be returned later if the samples need to be decrypted.
        +
        579  if (!decryption_key_source_)
        +
        580  return true;
        +
        581 
        +
        582  // TODO(tinskip): Pass in raw 'pssh' boxes to FetchKeys. This will allow
        +
        583  // supporting multiple keysystems. Move this to KeySource.
        +
        584  std::vector<uint8_t> widevine_system_id;
        +
        585  base::HexStringToBytes(kWidevineKeySystemId, &widevine_system_id);
        +
        586  for (std::vector<ProtectionSystemSpecificHeader>::const_iterator iter =
        +
        587  headers.begin(); iter != headers.end(); ++iter) {
        +
        588  ProtectionSystemSpecificInfo info;
        +
        589  RCHECK(info.Parse(iter->raw_box.data(), iter->raw_box.size()));
        +
        590  if (info.system_id() == widevine_system_id) {
        +
        591  Status status = decryption_key_source_->FetchKeys(info.pssh_data());
        +
        592  if (!status.ok()) {
        +
        593  LOG(ERROR) << "Error fetching decryption keys: " << status;
        +
        594  return false;
        +
        595  }
        +
        596  return true;
        +
        597  }
        +
        598  }
        +
        599 
        +
        600  LOG(ERROR) << "No viable 'pssh' box found for content decryption.";
        +
        601  return false;
        +
        602 }
        +
        603 
        +
        604 bool MP4MediaParser::EnqueueSample(bool* err) {
        +
        605  if (!runs_->IsRunValid()) {
        +
        606  // Remain in kEnqueueingSamples state, discarding data, until the end of
        +
        607  // the current 'mdat' box has been appended to the queue.
        +
        608  if (!queue_.Trim(mdat_tail_))
        +
        609  return false;
        +
        610 
        +
        611  ChangeState(kParsingBoxes);
        +
        612  return true;
        +
        613  }
        +
        614 
        +
        615  if (!runs_->IsSampleValid()) {
        +
        616  runs_->AdvanceRun();
        +
        617  return true;
        +
        618  }
        +
        619 
        +
        620  DCHECK(!(*err));
        +
        621 
        +
        622  const uint8_t* buf;
        +
        623  int buf_size;
        +
        624  queue_.Peek(&buf, &buf_size);
        +
        625  if (!buf_size)
        +
        626  return false;
        +
        627 
        +
        628  // Skip this entire track if it is not audio nor video.
        +
        629  if (!runs_->is_audio() && !runs_->is_video())
        +
        630  runs_->AdvanceRun();
        +
        631 
        +
        632  // Attempt to cache the auxiliary information first. Aux info is usually
        +
        633  // placed in a contiguous block before the sample data, rather than being
        +
        634  // interleaved. If we didn't cache it, this would require that we retain the
        +
        635  // start of the segment buffer while reading samples. Aux info is typically
        +
        636  // quite small compared to sample data, so this pattern is useful on
        +
        637  // memory-constrained devices where the source buffer consumes a substantial
        +
        638  // portion of the total system memory.
        +
        639  if (runs_->AuxInfoNeedsToBeCached()) {
        +
        640  queue_.PeekAt(runs_->aux_info_offset() + moof_head_, &buf, &buf_size);
        +
        641  if (buf_size < runs_->aux_info_size())
        +
        642  return false;
        +
        643  *err = !runs_->CacheAuxInfo(buf, buf_size);
        +
        644  return !*err;
        +
        645  }
        +
        646 
        +
        647  int64_t sample_offset = runs_->sample_offset() + moof_head_;
        +
        648  queue_.PeekAt(sample_offset, &buf, &buf_size);
        +
        649  if (buf_size < runs_->sample_size()) {
        +
        650  if (sample_offset < queue_.head()) {
        +
        651  LOG(ERROR) << "Incorrect sample offset " << sample_offset
        +
        652  << " < " << queue_.head();
        +
        653  *err = true;
        +
        654  }
        +
        655  return false;
        +
        656  }
        +
        657 
        +
        658  scoped_refptr<MediaSample> stream_sample(MediaSample::CopyFrom(
        +
        659  buf, runs_->sample_size(), runs_->is_keyframe()));
        +
        660  if (runs_->is_encrypted()) {
        +
        661  if (!decryptor_source_) {
        +
        662  *err = true;
        +
        663  LOG(ERROR) << "Encrypted media sample encountered, but decryption is not "
        +
        664  "enabled";
        +
        665  return false;
        +
        666  }
        +
        667 
        +
        668  scoped_ptr<DecryptConfig> decrypt_config = runs_->GetDecryptConfig();
        +
        669  if (!decrypt_config ||
        +
        670  !decryptor_source_->DecryptSampleBuffer(decrypt_config.get(),
        +
        671  stream_sample->writable_data(),
        +
        672  stream_sample->data_size())) {
        +
        673  *err = true;
        +
        674  LOG(ERROR) << "Cannot decrypt samples.";
        +
        675  return false;
        +
        676  }
        +
        677  }
        +
        678 
        +
        679  stream_sample->set_dts(runs_->dts());
        +
        680  stream_sample->set_pts(runs_->cts());
        +
        681  stream_sample->set_duration(runs_->duration());
        +
        682 
        +
        683  DVLOG(3) << "Pushing frame: "
        +
        684  << ", key=" << runs_->is_keyframe()
        +
        685  << ", dur=" << runs_->duration()
        +
        686  << ", dts=" << runs_->dts()
        +
        687  << ", cts=" << runs_->cts()
        +
        688  << ", size=" << runs_->sample_size();
        +
        689 
        +
        690  if (!new_sample_cb_.Run(runs_->track_id(), stream_sample)) {
        +
        691  *err = true;
        +
        692  LOG(ERROR) << "Failed to process the sample.";
        +
        693  return false;
        +
        694  }
        +
        695 
        +
        696  runs_->AdvanceSample();
        +
        697  return true;
        +
        698 }
        +
        699 
        +
        700 bool MP4MediaParser::ReadAndDiscardMDATsUntil(const int64_t offset) {
        +
        701  bool err = false;
        +
        702  while (mdat_tail_ < offset) {
        +
        703  const uint8_t* buf;
        +
        704  int size;
        +
        705  queue_.PeekAt(mdat_tail_, &buf, &size);
        +
        706 
        +
        707  FourCC type;
        +
        708  uint64_t box_sz;
        +
        709  if (!BoxReader::StartTopLevelBox(buf, size, &type, &box_sz, &err))
        +
        710  break;
        +
        711 
        +
        712  mdat_tail_ += box_sz;
        +
        713  }
        +
        714  queue_.Trim(std::min(mdat_tail_, offset));
        +
        715  return !err;
        +
        716 }
        +
        717 
        +
        718 void MP4MediaParser::ChangeState(State new_state) {
        +
        719  DVLOG(2) << "Changing state: " << new_state;
        +
        720  state_ = new_state;
        +
        721 }
        +
        722 
        +
        723 } // namespace mp4
        +
        724 } // namespace media
        +
        725 } // namespace edash_packager
        static BoxReader * ReadTopLevelBox(const uint8_t *buf, const size_t buf_size, bool *err)
        Definition: box_reader.cc:37
        DecryptorSource wraps KeySource and is responsible for decryptor management.
        static scoped_refptr< MediaSample > CopyFrom(const uint8_t *data, size_t size, bool is_key_frame)
        Definition: media_sample.cc:45
        void PeekAt(int64_t offset, const uint8_t **buf, int *size)
        -
        bool LoadMoov(const std::string &file_path)
        +
        bool LoadMoov(const std::string &file_path)
        virtual Status FetchKeys(const std::vector< uint8_t > &content_id, const std::string &policy)
        Definition: key_source.cc:30
        KeySource is responsible for encryption key acquisition.
        Definition: key_source.h:29
        static bool StartTopLevelBox(const uint8_t *buf, const size_t buf_size, FourCC *type, uint64_t *box_size, bool *err) WARN_UNUSED_RESULT
        Definition: box_reader.cc:60
        -
        bool Flush() override WARN_UNUSED_RESULT
        -
        void Init(const InitCB &init_cb, const NewSampleCB &new_sample_cb, KeySource *decryption_key_source) override
        +
        bool Flush() override WARN_UNUSED_RESULT
        +
        void Init(const InitCB &init_cb, const NewSampleCB &new_sample_cb, KeySource *decryption_key_source) override
        -
        bool Parse(const uint8_t *buf, int size) override WARN_UNUSED_RESULT
        +
        bool Parse(const uint8_t *buf, int size) override WARN_UNUSED_RESULT
        static File * OpenWithNoBuffering(const char *file_name, const char *mode)
        Definition: file.cc:151
        static std::string GetCodecString(AudioCodec codec, uint8_t audio_object_type)
        diff --git a/docs/d7/df1/structedash__packager_1_1media_1_1mp4_1_1SegmentIndex-members.html b/docs/d7/df1/structedash__packager_1_1media_1_1mp4_1_1SegmentIndex-members.html index 129893e89b..14941d129a 100644 --- a/docs/d7/df1/structedash__packager_1_1media_1_1mp4_1_1SegmentIndex-members.html +++ b/docs/d7/df1/structedash__packager_1_1media_1_1mp4_1_1SegmentIndex-members.html @@ -117,7 +117,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/df3/classedash__packager_1_1media_1_1File-members.html b/docs/d7/df3/classedash__packager_1_1media_1_1File-members.html index 300167dcd7..248c5969a4 100644 --- a/docs/d7/df3/classedash__packager_1_1media_1_1File-members.html +++ b/docs/d7/df3/classedash__packager_1_1media_1_1File-members.html @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/df9/byte__queue_8cc_source.html b/docs/d7/df9/byte__queue_8cc_source.html index 51bac30c31..fa7478512e 100644 --- a/docs/d7/df9/byte__queue_8cc_source.html +++ b/docs/d7/df9/byte__queue_8cc_source.html @@ -182,7 +182,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/dfa/classedash__packager_1_1media_1_1webm_1_1TwoPassSingleSegmentSegmenter.html b/docs/d7/dfa/classedash__packager_1_1media_1_1webm_1_1TwoPassSingleSegmentSegmenter.html index d24f32c9c6..ad41f11fd3 100644 --- a/docs/d7/dfa/classedash__packager_1_1media_1_1webm_1_1TwoPassSingleSegmentSegmenter.html +++ b/docs/d7/dfa/classedash__packager_1_1media_1_1webm_1_1TwoPassSingleSegmentSegmenter.html @@ -214,7 +214,7 @@ double cluster_length_sec< diff --git a/docs/d8/d0d/classedash__packager_1_1media_1_1mp4_1_1MP4MediaParser.html b/docs/d8/d0d/classedash__packager_1_1media_1_1mp4_1_1MP4MediaParser.html index fce758722a..d486eaf371 100644 --- a/docs/d8/d0d/classedash__packager_1_1media_1_1mp4_1_1MP4MediaParser.html +++ b/docs/d8/d0d/classedash__packager_1_1media_1_1mp4_1_1MP4MediaParser.html @@ -156,7 +156,7 @@ track_id, const scoped_refptr

        Implements edash_packager::media::MediaParser.

        -

        Definition at line 122 of file mp4_media_parser.cc.

        +

        Definition at line 123 of file mp4_media_parser.cc.

        @@ -208,7 +208,7 @@ track_id, const scoped_refptr

        Implements edash_packager::media::MediaParser.

        -

        Definition at line 99 of file mp4_media_parser.cc.

        +

        Definition at line 100 of file mp4_media_parser.cc.

        @@ -234,7 +234,7 @@ track_id, const scoped_refptr
        Returns
        true if successful, false otherwise.
        -

        Definition at line 163 of file mp4_media_parser.cc.

        +

        Definition at line 164 of file mp4_media_parser.cc.

        @@ -274,7 +274,7 @@ track_id, const scoped_refptr

        Implements edash_packager::media::MediaParser.

        -

        Definition at line 129 of file mp4_media_parser.cc.

        +

        Definition at line 130 of file mp4_media_parser.cc.

        @@ -285,7 +285,7 @@ track_id, const scoped_refptr
        diff --git a/docs/d8/d0d/media__sample_8cc_source.html b/docs/d8/d0d/media__sample_8cc_source.html index a6810daa45..1669648d6d 100644 --- a/docs/d8/d0d/media__sample_8cc_source.html +++ b/docs/d8/d0d/media__sample_8cc_source.html @@ -195,7 +195,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d19/bandwidth__estimator_8h_source.html b/docs/d8/d19/bandwidth__estimator_8h_source.html index fbda9d9bdc..6c40b98fdb 100644 --- a/docs/d8/d19/bandwidth__estimator_8h_source.html +++ b/docs/d8/d19/bandwidth__estimator_8h_source.html @@ -133,7 +133,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d1e/classedash__packager_1_1media_1_1mp4_1_1EncryptingFragmenter.html b/docs/d8/d1e/classedash__packager_1_1media_1_1mp4_1_1EncryptingFragmenter.html index 42fcb25b7b..0e105dba32 100644 --- a/docs/d8/d1e/classedash__packager_1_1media_1_1mp4_1_1EncryptingFragmenter.html +++ b/docs/d8/d1e/classedash__packager_1_1media_1_1mp4_1_1EncryptingFragmenter.html @@ -366,7 +366,7 @@ void set_encryption_key diff --git a/docs/d8/d21/structedash__packager_1_1media_1_1mp4_1_1ChunkInfo.html b/docs/d8/d21/structedash__packager_1_1media_1_1mp4_1_1ChunkInfo.html index c9e397f914..27e8deebf1 100644 --- a/docs/d8/d21/structedash__packager_1_1media_1_1mp4_1_1ChunkInfo.html +++ b/docs/d8/d21/structedash__packager_1_1media_1_1mp4_1_1ChunkInfo.html @@ -108,14 +108,14 @@ uint32_t sample_descriptio

        Detailed Description

        -

        Definition at line 408 of file box_definitions.h.

        +

        Definition at line 406 of file box_definitions.h.


        The documentation for this struct was generated from the following file: diff --git a/docs/d8/d22/classedash__packager_1_1media_1_1HttpKeyFetcher-members.html b/docs/d8/d22/classedash__packager_1_1media_1_1HttpKeyFetcher-members.html index bb48f5640c..8d70af7d0c 100644 --- a/docs/d8/d22/classedash__packager_1_1media_1_1HttpKeyFetcher-members.html +++ b/docs/d8/d22/classedash__packager_1_1media_1_1HttpKeyFetcher-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d25/classedash__packager_1_1media_1_1ProducerConsumerQueue-members.html b/docs/d8/d25/classedash__packager_1_1media_1_1ProducerConsumerQueue-members.html index 6830e436af..e8eb418f51 100644 --- a/docs/d8/d25/classedash__packager_1_1media_1_1ProducerConsumerQueue-members.html +++ b/docs/d8/d25/classedash__packager_1_1media_1_1ProducerConsumerQueue-members.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d26/structedash__packager_1_1media_1_1mp4_1_1SegmentType-members.html b/docs/d8/d26/structedash__packager_1_1media_1_1mp4_1_1SegmentType-members.html index a5742fc3b7..7b7c004d4f 100644 --- a/docs/d8/d26/structedash__packager_1_1media_1_1mp4_1_1SegmentType-members.html +++ b/docs/d8/d26/structedash__packager_1_1media_1_1mp4_1_1SegmentType-members.html @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d2e/classedash__packager_1_1media_1_1ByteQueue.html b/docs/d8/d2e/classedash__packager_1_1media_1_1ByteQueue.html index be35e2af68..2eabd1f966 100644 --- a/docs/d8/d2e/classedash__packager_1_1media_1_1ByteQueue.html +++ b/docs/d8/d2e/classedash__packager_1_1media_1_1ByteQueue.html @@ -177,7 +177,7 @@ void  diff --git a/docs/d8/d32/structedash__packager_1_1media_1_1mp4_1_1CompactSampleSize-members.html b/docs/d8/d32/structedash__packager_1_1media_1_1mp4_1_1CompactSampleSize-members.html index 0de9ef4295..bdd99f91dc 100644 --- a/docs/d8/d32/structedash__packager_1_1media_1_1mp4_1_1CompactSampleSize-members.html +++ b/docs/d8/d32/structedash__packager_1_1media_1_1mp4_1_1CompactSampleSize-members.html @@ -114,7 +114,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d33/webm__content__encodings__client_8h_source.html b/docs/d8/d33/webm__content__encodings__client_8h_source.html index 93e77f83d9..0c01017f4f 100644 --- a/docs/d8/d33/webm__content__encodings__client_8h_source.html +++ b/docs/d8/d33/webm__content__encodings__client_8h_source.html @@ -140,7 +140,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d34/structedash__packager_1_1media_1_1mp4_1_1ElementaryStreamDescriptor-members.html b/docs/d8/d34/structedash__packager_1_1media_1_1mp4_1_1ElementaryStreamDescriptor-members.html index 3d4c9ee532..f3833b459f 100644 --- a/docs/d8/d34/structedash__packager_1_1media_1_1mp4_1_1ElementaryStreamDescriptor-members.html +++ b/docs/d8/d34/structedash__packager_1_1media_1_1mp4_1_1ElementaryStreamDescriptor-members.html @@ -114,7 +114,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d4a/structedash__packager_1_1media_1_1mp4_1_1EditList.html b/docs/d8/d4a/structedash__packager_1_1media_1_1mp4_1_1EditList.html index 70baaf790a..da5290acb1 100644 --- a/docs/d8/d4a/structedash__packager_1_1media_1_1mp4_1_1EditList.html +++ b/docs/d8/d4a/structedash__packager_1_1media_1_1mp4_1_1EditList.html @@ -145,7 +145,7 @@ Additional Inherited Members

        Detailed Description

        -

        Definition at line 210 of file box_definitions.h.

        +

        Definition at line 208 of file box_definitions.h.

        Member Function Documentation

        @@ -171,7 +171,7 @@ Additional Inherited Members

        Implements edash_packager::media::mp4::Box.

        -

        Definition at line 958 of file box_definitions.cc.

        +

        Definition at line 943 of file box_definitions.cc.

        @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/d8/d6a/classedash__packager_1_1media_1_1AudioStreamInfo-members.html b/docs/d8/d6a/classedash__packager_1_1media_1_1AudioStreamInfo-members.html index 6445264674..db0f2f3e9f 100644 --- a/docs/d8/d6a/classedash__packager_1_1media_1_1AudioStreamInfo-members.html +++ b/docs/d8/d6a/classedash__packager_1_1media_1_1AudioStreamInfo-members.html @@ -124,7 +124,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d6c/classedash__packager_1_1media_1_1MediaSample.html b/docs/d8/d6c/classedash__packager_1_1media_1_1MediaSample.html index 8a55846f8e..76f8a5ff5d 100644 --- a/docs/d8/d6c/classedash__packager_1_1media_1_1MediaSample.html +++ b/docs/d8/d6c/classedash__packager_1_1media_1_1MediaSample.html @@ -411,7 +411,7 @@ class base::RefCountedThre diff --git a/docs/d8/d6f/classedash__packager_1_1MockAdaptationSet-members.html b/docs/d8/d6f/classedash__packager_1_1MockAdaptationSet-members.html index 75850a2057..f8041c2453 100644 --- a/docs/d8/d6f/classedash__packager_1_1MockAdaptationSet-members.html +++ b/docs/d8/d6f/classedash__packager_1_1MockAdaptationSet-members.html @@ -126,7 +126,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d6f/structedash__packager_1_1media_1_1mp4_1_1TrackFragment-members.html b/docs/d8/d6f/structedash__packager_1_1media_1_1mp4_1_1TrackFragment-members.html index 84327c5f5c..7f298ae515 100644 --- a/docs/d8/d6f/structedash__packager_1_1media_1_1mp4_1_1TrackFragment-members.html +++ b/docs/d8/d6f/structedash__packager_1_1media_1_1mp4_1_1TrackFragment-members.html @@ -117,7 +117,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d71/classedash__packager_1_1media_1_1mp4_1_1ChunkInfoIterator.html b/docs/d8/d71/classedash__packager_1_1media_1_1mp4_1_1ChunkInfoIterator.html index 711d3fa71b..518026bd6f 100644 --- a/docs/d8/d71/classedash__packager_1_1media_1_1mp4_1_1ChunkInfoIterator.html +++ b/docs/d8/d71/classedash__packager_1_1media_1_1mp4_1_1ChunkInfoIterator.html @@ -320,7 +320,7 @@ Public Member Functions diff --git a/docs/d8/d74/classedash__packager_1_1Representation-members.html b/docs/d8/d74/classedash__packager_1_1Representation-members.html index 4841bdf2e4..587b2d3bbe 100644 --- a/docs/d8/d74/classedash__packager_1_1Representation-members.html +++ b/docs/d8/d74/classedash__packager_1_1Representation-members.html @@ -112,7 +112,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d75/structedash__packager_1_1media_1_1mp4_1_1ProtectionSchemeInfo-members.html b/docs/d8/d75/structedash__packager_1_1media_1_1mp4_1_1ProtectionSchemeInfo-members.html index a2eb60c8d2..16d162327c 100644 --- a/docs/d8/d75/structedash__packager_1_1media_1_1mp4_1_1ProtectionSchemeInfo-members.html +++ b/docs/d8/d75/structedash__packager_1_1media_1_1mp4_1_1ProtectionSchemeInfo-members.html @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d78/classedash__packager_1_1MockAdaptationSet.html b/docs/d8/d78/classedash__packager_1_1MockAdaptationSet.html index 1830d57453..3a1e15a842 100644 --- a/docs/d8/d78/classedash__packager_1_1MockAdaptationSet.html +++ b/docs/d8/d78/classedash__packager_1_1MockAdaptationSet.html @@ -183,7 +183,7 @@ Additional Inherited Members diff --git a/docs/d8/d78/classedash__packager_1_1media_1_1WebMContentEncodingsClient.html b/docs/d8/d78/classedash__packager_1_1media_1_1WebMContentEncodingsClient.html index 8010cd7fc3..7242b70867 100644 --- a/docs/d8/d78/classedash__packager_1_1media_1_1WebMContentEncodingsClient.html +++ b/docs/d8/d78/classedash__packager_1_1media_1_1WebMContentEncodingsClient.html @@ -152,7 +152,7 @@ Additional Inherited Members diff --git a/docs/d8/d82/classedash__packager_1_1media_1_1MpdNotifyMuxerListener-members.html b/docs/d8/d82/classedash__packager_1_1media_1_1MpdNotifyMuxerListener-members.html index c9a8c47b1b..90c29237da 100644 --- a/docs/d8/d82/classedash__packager_1_1media_1_1MpdNotifyMuxerListener-members.html +++ b/docs/d8/d82/classedash__packager_1_1media_1_1MpdNotifyMuxerListener-members.html @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d8e/classedash__packager_1_1media_1_1mp2t_1_1TsSection.html b/docs/d8/d8e/classedash__packager_1_1media_1_1mp2t_1_1TsSection.html index 493822d37b..5c4a975015 100644 --- a/docs/d8/d8e/classedash__packager_1_1media_1_1mp2t_1_1TsSection.html +++ b/docs/d8/d8e/classedash__packager_1_1media_1_1mp2t_1_1TsSection.html @@ -141,7 +141,7 @@ virtual void Reset ()= diff --git a/docs/d8/d94/adts__constants_8cc_source.html b/docs/d8/d94/adts__constants_8cc_source.html index b7e5c92b32..4272c1797d 100644 --- a/docs/d8/d94/adts__constants_8cc_source.html +++ b/docs/d8/d94/adts__constants_8cc_source.html @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d97/structedash__packager_1_1ContentProtectionElement-members.html b/docs/d8/d97/structedash__packager_1_1ContentProtectionElement-members.html index dfad4e7daa..aa5f5cccb3 100644 --- a/docs/d8/d97/structedash__packager_1_1ContentProtectionElement-members.html +++ b/docs/d8/d97/structedash__packager_1_1ContentProtectionElement-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d9a/fragmenter_8cc_source.html b/docs/d8/d9a/fragmenter_8cc_source.html index f953e390bf..21ec4c5118 100644 --- a/docs/d8/d9a/fragmenter_8cc_source.html +++ b/docs/d8/d9a/fragmenter_8cc_source.html @@ -243,15 +243,15 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
        virtual Status InitializeFragment(int64_t first_sample_dts)
        Definition: fragmenter.cc:76
        virtual Status AddSample(scoped_refptr< MediaSample > sample)
        Definition: fragmenter.cc:36
        - +
        bool OptimizeSampleEntries(std::vector< T > *entries, T *default_value)
        Definition: fragmenter.h:89
        - +
        virtual void FinalizeFragment()
        Finalize and optimize the fragment.
        Definition: fragmenter.cc:93
        diff --git a/docs/d8/d9c/webm__tracks__parser_8cc_source.html b/docs/d8/d9c/webm__tracks__parser_8cc_source.html index 8cfae03102..5110baea81 100644 --- a/docs/d8/d9c/webm__tracks__parser_8cc_source.html +++ b/docs/d8/d9c/webm__tracks__parser_8cc_source.html @@ -440,7 +440,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d9f/udp__file_8h_source.html b/docs/d8/d9f/udp__file_8h_source.html index 735013e747..79cfb11b40 100644 --- a/docs/d8/d9f/udp__file_8h_source.html +++ b/docs/d8/d9f/udp__file_8h_source.html @@ -147,7 +147,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/da0/classedash__packager_1_1media_1_1wvm_1_1WvmMediaParser.html b/docs/d8/da0/classedash__packager_1_1media_1_1wvm_1_1WvmMediaParser.html index faf683ce4f..8945207189 100644 --- a/docs/d8/da0/classedash__packager_1_1media_1_1wvm_1_1WvmMediaParser.html +++ b/docs/d8/da0/classedash__packager_1_1media_1_1wvm_1_1WvmMediaParser.html @@ -256,7 +256,7 @@ track_id, const scoped_refptr
        diff --git a/docs/d8/da1/classedash__packager_1_1media_1_1WidevineKeySource-members.html b/docs/d8/da1/classedash__packager_1_1media_1_1WidevineKeySource-members.html index d9601b3631..f196ad5471 100644 --- a/docs/d8/da1/classedash__packager_1_1media_1_1WidevineKeySource-members.html +++ b/docs/d8/da1/classedash__packager_1_1media_1_1WidevineKeySource-members.html @@ -122,7 +122,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/da6/structedash__packager_1_1media_1_1mp4_1_1SoundMediaHeader-members.html b/docs/d8/da6/structedash__packager_1_1media_1_1mp4_1_1SoundMediaHeader-members.html index 26c09cc1b2..6429f4ee55 100644 --- a/docs/d8/da6/structedash__packager_1_1media_1_1mp4_1_1SoundMediaHeader-members.html +++ b/docs/d8/da6/structedash__packager_1_1media_1_1mp4_1_1SoundMediaHeader-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/daa/stream__info_8h_source.html b/docs/d8/daa/stream__info_8h_source.html index f67238dc64..2438ed9067 100644 --- a/docs/d8/daa/stream__info_8h_source.html +++ b/docs/d8/daa/stream__info_8h_source.html @@ -185,7 +185,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/db0/structedash__packager_1_1media_1_1H264SPS.html b/docs/d8/db0/structedash__packager_1_1media_1_1H264SPS.html index 876ab4c5ae..8646242914 100644 --- a/docs/d8/db0/structedash__packager_1_1media_1_1H264SPS.html +++ b/docs/d8/db0/structedash__packager_1_1media_1_1H264SPS.html @@ -242,7 +242,7 @@ int chroma_array_type< diff --git a/docs/d8/dbb/structedash__packager_1_1media_1_1wvm_1_1PrevSampleData-members.html b/docs/d8/dbb/structedash__packager_1_1media_1_1wvm_1_1PrevSampleData-members.html index 9b8b6d2037..9d187eb91a 100644 --- a/docs/d8/dbb/structedash__packager_1_1media_1_1wvm_1_1PrevSampleData-members.html +++ b/docs/d8/dbb/structedash__packager_1_1media_1_1wvm_1_1PrevSampleData-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/dc7/classedash__packager_1_1media_1_1UdpFile.html b/docs/d8/dc7/classedash__packager_1_1media_1_1UdpFile.html index 0848e010b4..45be969a4d 100644 --- a/docs/d8/dc7/classedash__packager_1_1media_1_1UdpFile.html +++ b/docs/d8/dc7/classedash__packager_1_1media_1_1UdpFile.html @@ -463,7 +463,7 @@ Additional Inherited Members diff --git a/docs/d8/dca/classedash__packager_1_1media_1_1AesCbcPkcs5Decryptor-members.html b/docs/d8/dca/classedash__packager_1_1media_1_1AesCbcPkcs5Decryptor-members.html index 32d54b0782..9628295156 100644 --- a/docs/d8/dca/classedash__packager_1_1media_1_1AesCbcPkcs5Decryptor-members.html +++ b/docs/d8/dca/classedash__packager_1_1media_1_1AesCbcPkcs5Decryptor-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/dcc/classedash__packager_1_1media_1_1AesRequestSigner.html b/docs/d8/dcc/classedash__packager_1_1media_1_1AesRequestSigner.html index 88dcd2e3cd..28fd75e82d 100644 --- a/docs/d8/dcc/classedash__packager_1_1media_1_1AesRequestSigner.html +++ b/docs/d8/dcc/classedash__packager_1_1media_1_1AesRequestSigner.html @@ -188,7 +188,7 @@ Additional Inherited Members diff --git a/docs/d8/dcf/classedash__packager_1_1media_1_1RsaRequestSigner-members.html b/docs/d8/dcf/classedash__packager_1_1media_1_1RsaRequestSigner-members.html index 05ef728040..30457a1d6d 100644 --- a/docs/d8/dcf/classedash__packager_1_1media_1_1RsaRequestSigner-members.html +++ b/docs/d8/dcf/classedash__packager_1_1media_1_1RsaRequestSigner-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/de5/structedash__packager_1_1media_1_1mp4_1_1SampleEncryptionEntry.html b/docs/d8/de5/structedash__packager_1_1media_1_1mp4_1_1SampleEncryptionEntry.html index e5d731e864..9cfe44defe 100644 --- a/docs/d8/de5/structedash__packager_1_1media_1_1mp4_1_1SampleEncryptionEntry.html +++ b/docs/d8/de5/structedash__packager_1_1media_1_1mp4_1_1SampleEncryptionEntry.html @@ -117,7 +117,7 @@ std::vector<

        Detailed Description

        -

        Definition at line 79 of file box_definitions.h.

        +

        Definition at line 77 of file box_definitions.h.

        Member Function Documentation

        @@ -151,7 +151,7 @@ std::vector<
        Returns
        The accumulated size of subsamples. Returns 0 if there is no subsamples.
        -

        Definition at line 306 of file box_definitions.cc.

        +

        Definition at line 291 of file box_definitions.cc.

        @@ -195,7 +195,7 @@ std::vector<
        Returns
        true on success, false otherwise.
        -

        Definition at line 272 of file box_definitions.cc.

        +

        Definition at line 257 of file box_definitions.cc.

        @@ -239,7 +239,7 @@ std::vector<
        Returns
        true on success, false otherwise.
        -

        Definition at line 248 of file box_definitions.cc.

        +

        Definition at line 233 of file box_definitions.cc.

        @@ -250,7 +250,7 @@ std::vector< diff --git a/docs/d8/de6/webm__crypto__helpers_8h_source.html b/docs/d8/de6/webm__crypto__helpers_8h_source.html index 98b40fb30b..8bad063e3d 100644 --- a/docs/d8/de6/webm__crypto__helpers_8h_source.html +++ b/docs/d8/de6/webm__crypto__helpers_8h_source.html @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/df0/webm_2single__segment__segmenter_8cc_source.html b/docs/d8/df0/webm_2single__segment__segmenter_8cc_source.html index 192f356a35..29cc46740c 100644 --- a/docs/d8/df0/webm_2single__segment__segmenter_8cc_source.html +++ b/docs/d8/df0/webm_2single__segment__segmenter_8cc_source.html @@ -180,7 +180,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/df1/classedash__packager_1_1MpdWriter-members.html b/docs/d8/df1/classedash__packager_1_1MpdWriter-members.html index 21c05bc4e3..4819c7043f 100644 --- a/docs/d8/df1/classedash__packager_1_1MpdWriter-members.html +++ b/docs/d8/df1/classedash__packager_1_1MpdWriter-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/dfb/classedash__packager_1_1media_1_1DecoderConfiguration.html b/docs/d8/dfb/classedash__packager_1_1media_1_1DecoderConfiguration.html index 6e8aa8b8ea..a38592c827 100644 --- a/docs/d8/dfb/classedash__packager_1_1media_1_1DecoderConfiguration.html +++ b/docs/d8/dfb/classedash__packager_1_1media_1_1DecoderConfiguration.html @@ -333,7 +333,7 @@ void  diff --git a/docs/d8/dfd/structedash__packager_1_1media_1_1VPxFrameInfo.html b/docs/d8/dfd/structedash__packager_1_1media_1_1VPxFrameInfo.html index f38f84ab62..b352d0cc41 100644 --- a/docs/d8/dfd/structedash__packager_1_1media_1_1VPxFrameInfo.html +++ b/docs/d8/dfd/structedash__packager_1_1media_1_1VPxFrameInfo.html @@ -121,7 +121,7 @@ uint32_t height diff --git a/docs/d9/d01/mp4_2single__segment__segmenter_8h_source.html b/docs/d9/d01/mp4_2single__segment__segmenter_8h_source.html index 35ea84745a..979f517018 100644 --- a/docs/d9/d01/mp4_2single__segment__segmenter_8h_source.html +++ b/docs/d9/d01/mp4_2single__segment__segmenter_8h_source.html @@ -140,7 +140,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d08/mock__mpd__builder_8h_source.html b/docs/d9/d08/mock__mpd__builder_8h_source.html index fc4dc4e6b6..bfdf708647 100644 --- a/docs/d9/d08/mock__mpd__builder_8h_source.html +++ b/docs/d9/d08/mock__mpd__builder_8h_source.html @@ -180,7 +180,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d15/key__rotation__fragmenter_8cc_source.html b/docs/d9/d15/key__rotation__fragmenter_8cc_source.html index 6a0a81dcb7..b691847d4d 100644 --- a/docs/d9/d15/key__rotation__fragmenter_8cc_source.html +++ b/docs/d9/d15/key__rotation__fragmenter_8cc_source.html @@ -221,14 +221,14 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
        virtual std::string UUID()
        Definition: key_source.cc:92
        KeySource is responsible for encryption key acquisition.
        Definition: key_source.h:29
        - - + +
        virtual std::string SystemName()
        Definition: key_source.cc:96
        virtual void FinalizeFragmentForEncryption()
        Finalize current fragment for encryption.
        diff --git a/docs/d9/d17/classedash__packager_1_1DashIopMpdNotifier-members.html b/docs/d9/d17/classedash__packager_1_1DashIopMpdNotifier-members.html index 57034d31bd..7661c6c404 100644 --- a/docs/d9/d17/classedash__packager_1_1DashIopMpdNotifier-members.html +++ b/docs/d9/d17/classedash__packager_1_1DashIopMpdNotifier-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d18/structedash__packager_1_1media_1_1mp4_1_1SyncSample.html b/docs/d9/d18/structedash__packager_1_1media_1_1mp4_1_1SyncSample.html index 2506beb2ad..964632cf0c 100644 --- a/docs/d9/d18/structedash__packager_1_1media_1_1mp4_1_1SyncSample.html +++ b/docs/d9/d18/structedash__packager_1_1media_1_1mp4_1_1SyncSample.html @@ -145,7 +145,7 @@ Additional Inherited Members

        Detailed Description

        -

        Definition at line 451 of file box_definitions.h.

        +

        Definition at line 449 of file box_definitions.h.

        Member Function Documentation

        @@ -171,7 +171,7 @@ Additional Inherited Members

        Implements edash_packager::media::mp4::Box.

        -

        Definition at line 884 of file box_definitions.cc.

        +

        Definition at line 869 of file box_definitions.cc.

        @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/d9/d21/structedash__packager_1_1media_1_1mp4_1_1ID3v2.html b/docs/d9/d21/structedash__packager_1_1media_1_1mp4_1_1ID3v2.html index 5b8fe83274..18474ad909 100644 --- a/docs/d9/d21/structedash__packager_1_1media_1_1mp4_1_1ID3v2.html +++ b/docs/d9/d21/structedash__packager_1_1media_1_1mp4_1_1ID3v2.html @@ -152,7 +152,7 @@ Additional Inherited Members

        Detailed Description

        Implemented per http://mp4ra.org/specs.html#id3v2 and http://id3.org/id3v2.4.0-structure.

        -

        Definition at line 246 of file box_definitions.h.

        +

        Definition at line 244 of file box_definitions.h.

        Member Function Documentation

        @@ -178,7 +178,7 @@ Additional Inherited Members

        Implements edash_packager::media::mp4::Box.

        -

        Definition at line 1149 of file box_definitions.cc.

        +

        Definition at line 1134 of file box_definitions.cc.

        @@ -189,7 +189,7 @@ Additional Inherited Members diff --git a/docs/d9/d2c/classedash__packager_1_1media_1_1ProgressListener.html b/docs/d9/d2c/classedash__packager_1_1media_1_1ProgressListener.html index f527256cde..28ca26b382 100644 --- a/docs/d9/d2c/classedash__packager_1_1media_1_1ProgressListener.html +++ b/docs/d9/d2c/classedash__packager_1_1media_1_1ProgressListener.html @@ -146,7 +146,7 @@ Public Member Functions diff --git a/docs/d9/d3b/classedash__packager_1_1media_1_1MemoryFile-members.html b/docs/d9/d3b/classedash__packager_1_1media_1_1MemoryFile-members.html index 95a3ce41ba..646bb8ecae 100644 --- a/docs/d9/d3b/classedash__packager_1_1media_1_1MemoryFile-members.html +++ b/docs/d9/d3b/classedash__packager_1_1media_1_1MemoryFile-members.html @@ -119,7 +119,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d3b/webm__content__encodings_8h_source.html b/docs/d9/d3b/webm__content__encodings_8h_source.html index 83da2cd568..94a5759500 100644 --- a/docs/d9/d3b/webm__content__encodings_8h_source.html +++ b/docs/d9/d3b/webm__content__encodings_8h_source.html @@ -179,7 +179,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d46/classedash__packager_1_1media_1_1BufferReader.html b/docs/d9/d46/classedash__packager_1_1media_1_1BufferReader.html index e91af1df5e..33e94a91bb 100644 --- a/docs/d9/d46/classedash__packager_1_1media_1_1BufferReader.html +++ b/docs/d9/d46/classedash__packager_1_1media_1_1BufferReader.html @@ -276,7 +276,7 @@ bool ReadNBytesInto8s diff --git a/docs/d9/d47/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentHeader.html b/docs/d9/d47/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentHeader.html index 6e2da6ec80..8d3bf70507 100644 --- a/docs/d9/d47/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentHeader.html +++ b/docs/d9/d47/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentHeader.html @@ -185,7 +185,7 @@ Additional Inherited Members

        Detailed Description

        -

        Definition at line 593 of file box_definitions.h.

        +

        Definition at line 591 of file box_definitions.h.

        Member Function Documentation

        @@ -211,7 +211,7 @@ Additional Inherited Members

        Implements edash_packager::media::mp4::Box.

        -

        Definition at line 1977 of file box_definitions.cc.

        +

        Definition at line 1962 of file box_definitions.cc.

        @@ -222,7 +222,7 @@ Additional Inherited Members diff --git a/docs/d9/d5b/structedash__packager_1_1SegmentInfo-members.html b/docs/d9/d5b/structedash__packager_1_1SegmentInfo-members.html index 68e24b289e..1683ae95e9 100644 --- a/docs/d9/d5b/structedash__packager_1_1SegmentInfo-members.html +++ b/docs/d9/d5b/structedash__packager_1_1SegmentInfo-members.html @@ -99,7 +99,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d65/classedash__packager_1_1media_1_1TextTrack-members.html b/docs/d9/d65/classedash__packager_1_1media_1_1TextTrack-members.html index 5ed359efbd..9b5c1a0cbf 100644 --- a/docs/d9/d65/classedash__packager_1_1media_1_1TextTrack-members.html +++ b/docs/d9/d65/classedash__packager_1_1media_1_1TextTrack-members.html @@ -98,7 +98,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d76/structedash__packager_1_1media_1_1H264ModificationOfPicNum.html b/docs/d9/d76/structedash__packager_1_1media_1_1H264ModificationOfPicNum.html index 5eaf414405..52fd28ff46 100644 --- a/docs/d9/d76/structedash__packager_1_1media_1_1H264ModificationOfPicNum.html +++ b/docs/d9/d76/structedash__packager_1_1media_1_1H264ModificationOfPicNum.html @@ -119,7 +119,7 @@ union { diff --git a/docs/d9/d7b/structedash__packager_1_1media_1_1wvm_1_1PrevSampleData.html b/docs/d9/d7b/structedash__packager_1_1media_1_1wvm_1_1PrevSampleData.html index 5cdee19c9a..0d1defdfca 100644 --- a/docs/d9/d7b/structedash__packager_1_1media_1_1wvm_1_1PrevSampleData.html +++ b/docs/d9/d7b/structedash__packager_1_1media_1_1wvm_1_1PrevSampleData.html @@ -132,7 +132,7 @@ int64_t video_sample_durat diff --git a/docs/d9/d86/limits_8h_source.html b/docs/d9/d86/limits_8h_source.html index 19725f3333..fe8d8de78e 100644 --- a/docs/d9/d86/limits_8h_source.html +++ b/docs/d9/d86/limits_8h_source.html @@ -141,7 +141,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d8b/classedash__packager_1_1media_1_1KeySource.html b/docs/d9/d8b/classedash__packager_1_1media_1_1KeySource.html index 444bcce13f..bd3bff1353 100644 --- a/docs/d9/d8b/classedash__packager_1_1media_1_1KeySource.html +++ b/docs/d9/d8b/classedash__packager_1_1media_1_1KeySource.html @@ -582,7 +582,7 @@ Static Protected Member Functions diff --git a/docs/d9/d90/text__track_8h_source.html b/docs/d9/d90/text__track_8h_source.html index 33bf95ea9f..eddfadbc7d 100644 --- a/docs/d9/d90/text__track_8h_source.html +++ b/docs/d9/d90/text__track_8h_source.html @@ -134,7 +134,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d91/h264__bit__reader_8h_source.html b/docs/d9/d91/h264__bit__reader_8h_source.html index 59bb794c15..2228258d10 100644 --- a/docs/d9/d91/h264__bit__reader_8h_source.html +++ b/docs/d9/d91/h264__bit__reader_8h_source.html @@ -177,7 +177,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d93/media__stream_8h_source.html b/docs/d9/d93/media__stream_8h_source.html index 7bf4eb26ec..11755e38a8 100644 --- a/docs/d9/d93/media__stream_8h_source.html +++ b/docs/d9/d93/media__stream_8h_source.html @@ -170,7 +170,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d95/classedash__packager_1_1media_1_1MediaStream-members.html b/docs/d9/d95/classedash__packager_1_1media_1_1MediaStream-members.html index 0d7c618b6a..d52839a455 100644 --- a/docs/d9/d95/classedash__packager_1_1media_1_1MediaStream-members.html +++ b/docs/d9/d95/classedash__packager_1_1media_1_1MediaStream-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d99/classedash__packager_1_1media_1_1DecryptConfig-members.html b/docs/d9/d99/classedash__packager_1_1media_1_1DecryptConfig-members.html index acacb14fc3..1901172913 100644 --- a/docs/d9/d99/classedash__packager_1_1media_1_1DecryptConfig-members.html +++ b/docs/d9/d99/classedash__packager_1_1media_1_1DecryptConfig-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d9b/structedash__packager_1_1SegmentInfo.html b/docs/d9/d9b/structedash__packager_1_1SegmentInfo.html index 4497d6a99c..242f2073c1 100644 --- a/docs/d9/d9b/structedash__packager_1_1SegmentInfo.html +++ b/docs/d9/d9b/structedash__packager_1_1SegmentInfo.html @@ -118,7 +118,7 @@ uint64_t repeat diff --git a/docs/d9/da4/stream__descriptor_8h_source.html b/docs/d9/da4/stream__descriptor_8h_source.html index 9c24bfcbaf..8b8cb3b546 100644 --- a/docs/d9/da4/stream__descriptor_8h_source.html +++ b/docs/d9/da4/stream__descriptor_8h_source.html @@ -141,7 +141,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/db4/classedash__packager_1_1media_1_1VodMediaInfoDumpMuxerListener.html b/docs/d9/db4/classedash__packager_1_1media_1_1VodMediaInfoDumpMuxerListener.html index 424cd9c19e..603f495325 100644 --- a/docs/d9/db4/classedash__packager_1_1media_1_1VodMediaInfoDumpMuxerListener.html +++ b/docs/d9/db4/classedash__packager_1_1media_1_1VodMediaInfoDumpMuxerListener.html @@ -252,7 +252,7 @@ Additional Inherited Members diff --git a/docs/d9/db9/content__protection__element_8cc_source.html b/docs/d9/db9/content__protection__element_8cc_source.html index 5148fd82e1..f0b3ff9d1e 100644 --- a/docs/d9/db9/content__protection__element_8cc_source.html +++ b/docs/d9/db9/content__protection__element_8cc_source.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/db9/muxer_8cc_source.html b/docs/d9/db9/muxer_8cc_source.html index 9e23452483..998357ea22 100644 --- a/docs/d9/db9/muxer_8cc_source.html +++ b/docs/d9/db9/muxer_8cc_source.html @@ -214,7 +214,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/dbf/classedash__packager_1_1media_1_1TextStreamInfo-members.html b/docs/d9/dbf/classedash__packager_1_1media_1_1TextStreamInfo-members.html index 9025a6334b..fd3e3de9cb 100644 --- a/docs/d9/dbf/classedash__packager_1_1media_1_1TextStreamInfo-members.html +++ b/docs/d9/dbf/classedash__packager_1_1media_1_1TextStreamInfo-members.html @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/dc8/webm__constants_8cc_source.html b/docs/d9/dc8/webm__constants_8cc_source.html index 1d49aa373c..44236bd030 100644 --- a/docs/d9/dc8/webm__constants_8cc_source.html +++ b/docs/d9/dc8/webm__constants_8cc_source.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/dcc/structedash__packager_1_1media_1_1mp4_1_1ElementaryStreamDescriptor.html b/docs/d9/dcc/structedash__packager_1_1media_1_1mp4_1_1ElementaryStreamDescriptor.html index 54233b161e..2c5b75a29b 100644 --- a/docs/d9/dcc/structedash__packager_1_1media_1_1mp4_1_1ElementaryStreamDescriptor.html +++ b/docs/d9/dcc/structedash__packager_1_1media_1_1mp4_1_1ElementaryStreamDescriptor.html @@ -148,7 +148,7 @@ Additional Inherited Members

        Detailed Description

        -

        Definition at line 295 of file box_definitions.h.

        +

        Definition at line 293 of file box_definitions.h.

        Member Function Documentation

        @@ -174,7 +174,7 @@ Additional Inherited Members

        Implements edash_packager::media::mp4::Box.

        -

        Definition at line 1361 of file box_definitions.cc.

        +

        Definition at line 1346 of file box_definitions.cc.

        @@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/d9/dcc/webm__video__client_8h_source.html b/docs/d9/dcc/webm__video__client_8h_source.html index 6c5eaa4d78..9801a0d43f 100644 --- a/docs/d9/dcc/webm__video__client_8h_source.html +++ b/docs/d9/dcc/webm__video__client_8h_source.html @@ -149,7 +149,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/de3/muxer__listener__internal_8cc_source.html b/docs/d9/de3/muxer__listener__internal_8cc_source.html index 02d9ac547c..7bbde2e3a6 100644 --- a/docs/d9/de3/muxer__listener__internal_8cc_source.html +++ b/docs/d9/de3/muxer__listener__internal_8cc_source.html @@ -337,7 +337,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/dec/classedash__packager_1_1media_1_1RequestSigner-members.html b/docs/d9/dec/classedash__packager_1_1media_1_1RequestSigner-members.html index e31631b298..859c078c2a 100644 --- a/docs/d9/dec/classedash__packager_1_1media_1_1RequestSigner-members.html +++ b/docs/d9/dec/classedash__packager_1_1media_1_1RequestSigner-members.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/ded/aac__audio__specific__config_8cc_source.html b/docs/d9/ded/aac__audio__specific__config_8cc_source.html index 4786e07a86..728995686e 100644 --- a/docs/d9/ded/aac__audio__specific__config_8cc_source.html +++ b/docs/d9/ded/aac__audio__specific__config_8cc_source.html @@ -357,7 +357,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d00/structedash__packager_1_1media_1_1mp4_1_1SubtitleMediaHeader-members.html b/docs/da/d00/structedash__packager_1_1media_1_1mp4_1_1SubtitleMediaHeader-members.html index 04e3bd3810..1a4029081e 100644 --- a/docs/da/d00/structedash__packager_1_1media_1_1mp4_1_1SubtitleMediaHeader-members.html +++ b/docs/da/d00/structedash__packager_1_1media_1_1mp4_1_1SubtitleMediaHeader-members.html @@ -112,7 +112,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d02/structedash__packager_1_1media_1_1H264WeightingFactors-members.html b/docs/da/d02/structedash__packager_1_1media_1_1H264WeightingFactors-members.html index a2f84b80b9..42c9639f9e 100644 --- a/docs/da/d02/structedash__packager_1_1media_1_1H264WeightingFactors-members.html +++ b/docs/da/d02/structedash__packager_1_1media_1_1H264WeightingFactors-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d02/structedash__packager_1_1media_1_1mp4_1_1SyncSample-members.html b/docs/da/d02/structedash__packager_1_1media_1_1mp4_1_1SyncSample-members.html index 569150a693..5d172e2d45 100644 --- a/docs/da/d02/structedash__packager_1_1media_1_1mp4_1_1SyncSample-members.html +++ b/docs/da/d02/structedash__packager_1_1media_1_1mp4_1_1SyncSample-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d04/audio__stream__info_8cc_source.html b/docs/da/d04/audio__stream__info_8cc_source.html index 145fe9cdcb..0d23bb177b 100644 --- a/docs/da/d04/audio__stream__info_8cc_source.html +++ b/docs/da/d04/audio__stream__info_8cc_source.html @@ -225,7 +225,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d09/classedash__packager_1_1media_1_1SegmentTestBase-members.html b/docs/da/d09/classedash__packager_1_1media_1_1SegmentTestBase-members.html index b9e4b35535..734f57dd7a 100644 --- a/docs/da/d09/classedash__packager_1_1media_1_1SegmentTestBase-members.html +++ b/docs/da/d09/classedash__packager_1_1media_1_1SegmentTestBase-members.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d14/classedash__packager_1_1media_1_1webm_1_1Segmenter.html b/docs/da/d14/classedash__packager_1_1media_1_1webm_1_1Segmenter.html index 7c28d46c02..d048147fc8 100644 --- a/docs/da/d14/classedash__packager_1_1media_1_1webm_1_1Segmenter.html +++ b/docs/da/d14/classedash__packager_1_1media_1_1webm_1_1Segmenter.html @@ -427,7 +427,7 @@ virtual diff --git a/docs/da/d15/structedash__packager_1_1media_1_1mp4_1_1HandlerReference-members.html b/docs/da/d15/structedash__packager_1_1media_1_1mp4_1_1HandlerReference-members.html index f0aa2fbaa1..1840e44863 100644 --- a/docs/da/d15/structedash__packager_1_1media_1_1mp4_1_1HandlerReference-members.html +++ b/docs/da/d15/structedash__packager_1_1media_1_1mp4_1_1HandlerReference-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d17/structedash__packager_1_1media_1_1mp4_1_1MovieExtendsHeader.html b/docs/da/d17/structedash__packager_1_1media_1_1mp4_1_1MovieExtendsHeader.html index e5c002f88e..9a4d3bdd66 100644 --- a/docs/da/d17/structedash__packager_1_1media_1_1mp4_1_1MovieExtendsHeader.html +++ b/docs/da/d17/structedash__packager_1_1media_1_1mp4_1_1MovieExtendsHeader.html @@ -145,7 +145,7 @@ Additional Inherited Members

        Detailed Description

        -

        Definition at line 548 of file box_definitions.h.

        +

        Definition at line 546 of file box_definitions.h.

        Member Function Documentation

        @@ -171,7 +171,7 @@ Additional Inherited Members

        Implements edash_packager::media::mp4::Box.

        -

        Definition at line 1835 of file box_definitions.cc.

        +

        Definition at line 1820 of file box_definitions.cc.

        @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/da/d1e/classedash__packager_1_1media_1_1StreamInfo-members.html b/docs/da/d1e/classedash__packager_1_1media_1_1StreamInfo-members.html index 9286cdd3b6..fdcaa3394a 100644 --- a/docs/da/d1e/classedash__packager_1_1media_1_1StreamInfo-members.html +++ b/docs/da/d1e/classedash__packager_1_1media_1_1StreamInfo-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d22/key__rotation__fragmenter_8h_source.html b/docs/da/d22/key__rotation__fragmenter_8h_source.html index 492d6123da..e248814460 100644 --- a/docs/da/d22/key__rotation__fragmenter_8h_source.html +++ b/docs/da/d22/key__rotation__fragmenter_8h_source.html @@ -149,12 +149,12 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
        KeyRotationFragmenter(MovieFragment *moof, scoped_refptr< StreamInfo > info, TrackFragment *traf, KeySource *encryption_key_source, KeySource::TrackType track_type, int64_t crypto_period_duration, int64_t clear_time, MuxerListener *muxer_listener)
        KeySource is responsible for encryption key acquisition.
        Definition: key_source.h:29
        - - + + diff --git a/docs/da/d27/classedash__packager_1_1media_1_1AudioStreamInfo.html b/docs/da/d27/classedash__packager_1_1media_1_1AudioStreamInfo.html index 70f6808b50..26d0fcd0e9 100644 --- a/docs/da/d27/classedash__packager_1_1media_1_1AudioStreamInfo.html +++ b/docs/da/d27/classedash__packager_1_1media_1_1AudioStreamInfo.html @@ -307,7 +307,7 @@ Static Public Member Functions diff --git a/docs/da/d2a/structedash__packager_1_1media_1_1mp4_1_1ProtectionSystemSpecificHeader.html b/docs/da/d2a/structedash__packager_1_1media_1_1mp4_1_1ProtectionSystemSpecificHeader.html index bb80abb344..b38dd26a0d 100644 --- a/docs/da/d2a/structedash__packager_1_1media_1_1mp4_1_1ProtectionSystemSpecificHeader.html +++ b/docs/da/d2a/structedash__packager_1_1media_1_1mp4_1_1ProtectionSystemSpecificHeader.html @@ -126,12 +126,6 @@ Public Member Functions - - - - @@ -188,7 +182,7 @@ Additional Inherited Members diff --git a/docs/da/d2a/text__stream__info_8h_source.html b/docs/da/d2a/text__stream__info_8h_source.html index 32eb7f0f75..5fed39fcec 100644 --- a/docs/da/d2a/text__stream__info_8h_source.html +++ b/docs/da/d2a/text__stream__info_8h_source.html @@ -140,7 +140,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d2c/decoder__configuration_8cc_source.html b/docs/da/d2c/decoder__configuration_8cc_source.html index 5bdf765a99..09a4c9fced 100644 --- a/docs/da/d2c/decoder__configuration_8cc_source.html +++ b/docs/da/d2c/decoder__configuration_8cc_source.html @@ -119,7 +119,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d2e/classedash__packager_1_1media_1_1mp4_1_1H264VideoSliceHeaderParser-members.html b/docs/da/d2e/classedash__packager_1_1media_1_1mp4_1_1H264VideoSliceHeaderParser-members.html index 9fc0bf8345..7c4713bdd0 100644 --- a/docs/da/d2e/classedash__packager_1_1media_1_1mp4_1_1H264VideoSliceHeaderParser-members.html +++ b/docs/da/d2e/classedash__packager_1_1media_1_1mp4_1_1H264VideoSliceHeaderParser-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');

        Public Attributes

        -std::vector< uint8_t > system_id
         
        -std::vector< uint8_t > data
         
        std::vector< uint8_t > raw_box
         
        diff --git a/docs/da/d37/classedash__packager_1_1media_1_1IoCache-members.html b/docs/da/d37/classedash__packager_1_1media_1_1IoCache-members.html index eb387c1086..fd15f08ad2 100644 --- a/docs/da/d37/classedash__packager_1_1media_1_1IoCache-members.html +++ b/docs/da/d37/classedash__packager_1_1media_1_1IoCache-members.html @@ -107,7 +107,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d38/classedash__packager_1_1MpdNotifier.html b/docs/da/d38/classedash__packager_1_1MpdNotifier.html index bbda7cc489..e66104ba48 100644 --- a/docs/da/d38/classedash__packager_1_1MpdNotifier.html +++ b/docs/da/d38/classedash__packager_1_1MpdNotifier.html @@ -472,7 +472,7 @@ Public Member Functions diff --git a/docs/da/d40/classedash__packager_1_1media_1_1RsaPrivateKey-members.html b/docs/da/d40/classedash__packager_1_1media_1_1RsaPrivateKey-members.html index 81423ba47e..95b620d27d 100644 --- a/docs/da/d40/classedash__packager_1_1media_1_1RsaPrivateKey-members.html +++ b/docs/da/d40/classedash__packager_1_1media_1_1RsaPrivateKey-members.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d41/mp4_2multi__segment__segmenter_8h_source.html b/docs/da/d41/mp4_2multi__segment__segmenter_8h_source.html index 19747d1ec3..bbf2266883 100644 --- a/docs/da/d41/mp4_2multi__segment__segmenter_8h_source.html +++ b/docs/da/d41/mp4_2multi__segment__segmenter_8h_source.html @@ -143,7 +143,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d47/structedash__packager_1_1media_1_1H264PPS-members.html b/docs/da/d47/structedash__packager_1_1media_1_1H264PPS-members.html index 0e3847102c..930d1e193a 100644 --- a/docs/da/d47/structedash__packager_1_1media_1_1H264PPS-members.html +++ b/docs/da/d47/structedash__packager_1_1media_1_1H264PPS-members.html @@ -117,7 +117,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d49/classedash__packager_1_1DashIopMpdNotifier.html b/docs/da/d49/classedash__packager_1_1DashIopMpdNotifier.html index 612974607e..ed0f4c324e 100644 --- a/docs/da/d49/classedash__packager_1_1DashIopMpdNotifier.html +++ b/docs/da/d49/classedash__packager_1_1DashIopMpdNotifier.html @@ -473,7 +473,7 @@ class DashIopMpdNotifierTe diff --git a/docs/da/d4b/structedash__packager_1_1media_1_1mp4_1_1OriginalFormat.html b/docs/da/d4b/structedash__packager_1_1media_1_1mp4_1_1OriginalFormat.html index a5f9235d15..9df9638bd1 100644 --- a/docs/da/d4b/structedash__packager_1_1media_1_1mp4_1_1OriginalFormat.html +++ b/docs/da/d4b/structedash__packager_1_1media_1_1mp4_1_1OriginalFormat.html @@ -136,7 +136,7 @@ Additional Inherited Members

        Detailed Description

        -

        Definition at line 133 of file box_definitions.h.

        +

        Definition at line 131 of file box_definitions.h.

        Member Function Documentation

        @@ -162,7 +162,7 @@ Additional Inherited Members

        Implements edash_packager::media::mp4::Box.

        -

        Definition at line 384 of file box_definitions.cc.

        +

        Definition at line 369 of file box_definitions.cc.

        @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/da/d54/structedash__packager_1_1media_1_1mp4_1_1CompositionTimeToSample.html b/docs/da/d54/structedash__packager_1_1media_1_1mp4_1_1CompositionTimeToSample.html index 108bb058ba..772e9e2f0c 100644 --- a/docs/da/d54/structedash__packager_1_1media_1_1mp4_1_1CompositionTimeToSample.html +++ b/docs/da/d54/structedash__packager_1_1media_1_1mp4_1_1CompositionTimeToSample.html @@ -145,7 +145,7 @@ Additional Inherited Members

        Detailed Description

        -

        Definition at line 402 of file box_definitions.h.

        +

        Definition at line 400 of file box_definitions.h.

        Member Function Documentation

        @@ -171,7 +171,7 @@ Additional Inherited Members

        Implements edash_packager::media::mp4::Box.

        -

        Definition at line 672 of file box_definitions.cc.

        +

        Definition at line 657 of file box_definitions.cc.

        @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/da/d5c/widevine__key__source_8h_source.html b/docs/da/d5c/widevine__key__source_8h_source.html index a11760a49f..123e793107 100644 --- a/docs/da/d5c/widevine__key__source_8h_source.html +++ b/docs/da/d5c/widevine__key__source_8h_source.html @@ -217,7 +217,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d5f/classedash__packager_1_1media_1_1VP9Parser.html b/docs/da/d5f/classedash__packager_1_1media_1_1VP9Parser.html index 48257853c0..0277cbc3b9 100644 --- a/docs/da/d5f/classedash__packager_1_1media_1_1VP9Parser.html +++ b/docs/da/d5f/classedash__packager_1_1media_1_1VP9Parser.html @@ -238,7 +238,7 @@ Additional Inherited Members diff --git a/docs/da/d60/structedash__packager_1_1media_1_1EncryptionKey-members.html b/docs/da/d60/structedash__packager_1_1media_1_1EncryptionKey-members.html index 041108e878..ac4e59c288 100644 --- a/docs/da/d60/structedash__packager_1_1media_1_1EncryptionKey-members.html +++ b/docs/da/d60/structedash__packager_1_1media_1_1EncryptionKey-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d72/classedash__packager_1_1media_1_1mp2t_1_1EsParser-members.html b/docs/da/d72/classedash__packager_1_1media_1_1mp2t_1_1EsParser-members.html index 42b9775c49..fb8cc04890 100644 --- a/docs/da/d72/classedash__packager_1_1media_1_1mp2t_1_1EsParser-members.html +++ b/docs/da/d72/classedash__packager_1_1media_1_1mp2t_1_1EsParser-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d75/classedash__packager_1_1media_1_1mp4_1_1SingleSegmentSegmenter.html b/docs/da/d75/classedash__packager_1_1media_1_1mp4_1_1SingleSegmentSegmenter.html index f342b58b94..d3184e8557 100644 --- a/docs/da/d75/classedash__packager_1_1media_1_1mp4_1_1SingleSegmentSegmenter.html +++ b/docs/da/d75/classedash__packager_1_1media_1_1mp4_1_1SingleSegmentSegmenter.html @@ -259,7 +259,7 @@ void set_progress_target diff --git a/docs/da/d78/structedash__packager_1_1media_1_1mp4_1_1Metadata-members.html b/docs/da/d78/structedash__packager_1_1media_1_1mp4_1_1Metadata-members.html index 8fb8053cd4..d2df7b726a 100644 --- a/docs/da/d78/structedash__packager_1_1media_1_1mp4_1_1Metadata-members.html +++ b/docs/da/d78/structedash__packager_1_1media_1_1mp4_1_1Metadata-members.html @@ -114,7 +114,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d7a/classedash__packager_1_1media_1_1AVCDecoderConfiguration-members.html b/docs/da/d7a/classedash__packager_1_1media_1_1AVCDecoderConfiguration-members.html index d4645b0375..0c9c31d1e7 100644 --- a/docs/da/d7a/classedash__packager_1_1media_1_1AVCDecoderConfiguration-members.html +++ b/docs/da/d7a/classedash__packager_1_1media_1_1AVCDecoderConfiguration-members.html @@ -119,7 +119,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d7a/fixed__key__encryption__flags_8h_source.html b/docs/da/d7a/fixed__key__encryption__flags_8h_source.html index b1aeecdb1d..928bffdc30 100644 --- a/docs/da/d7a/fixed__key__encryption__flags_8h_source.html +++ b/docs/da/d7a/fixed__key__encryption__flags_8h_source.html @@ -118,7 +118,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d7d/classedash__packager_1_1media_1_1StreamDescriptorCompareFn.html b/docs/da/d7d/classedash__packager_1_1media_1_1StreamDescriptorCompareFn.html index 5c190435e3..4c986d7ebc 100644 --- a/docs/da/d7d/classedash__packager_1_1media_1_1StreamDescriptorCompareFn.html +++ b/docs/da/d7d/classedash__packager_1_1media_1_1StreamDescriptorCompareFn.html @@ -109,7 +109,7 @@ bool operator() (const diff --git a/docs/da/d7f/hevc__decoder__configuration_8h_source.html b/docs/da/d7f/hevc__decoder__configuration_8h_source.html index 8ba7aadbf9..0fb3b205de 100644 --- a/docs/da/d7f/hevc__decoder__configuration_8h_source.html +++ b/docs/da/d7f/hevc__decoder__configuration_8h_source.html @@ -138,7 +138,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d81/structedash__packager_1_1media_1_1mp4_1_1ChunkLargeOffset.html b/docs/da/d81/structedash__packager_1_1media_1_1mp4_1_1ChunkLargeOffset.html index f2f7ed2320..d2819cb4c9 100644 --- a/docs/da/d81/structedash__packager_1_1media_1_1mp4_1_1ChunkLargeOffset.html +++ b/docs/da/d81/structedash__packager_1_1media_1_1mp4_1_1ChunkLargeOffset.html @@ -146,7 +146,7 @@ Additional Inherited Members

        Detailed Description

        -

        Definition at line 439 of file box_definitions.h.

        +

        Definition at line 437 of file box_definitions.h.

        Member Function Documentation

        @@ -174,7 +174,7 @@ Additional Inherited Members

        Reimplemented in edash_packager::media::mp4::ChunkOffset.

        -

        Definition at line 848 of file box_definitions.cc.

        +

        Definition at line 833 of file box_definitions.cc.

        @@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/da/d88/mp4__muxer_8cc_source.html b/docs/da/d88/mp4__muxer_8cc_source.html index 63a8105df3..a158903791 100644 --- a/docs/da/d88/mp4__muxer_8cc_source.html +++ b/docs/da/d88/mp4__muxer_8cc_source.html @@ -469,7 +469,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d8e/container__names_8cc_source.html b/docs/da/d8e/container__names_8cc_source.html index df2a401c46..2f6c7ab1b7 100644 --- a/docs/da/d8e/container__names_8cc_source.html +++ b/docs/da/d8e/container__names_8cc_source.html @@ -1840,7 +1840,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d95/classedash__packager_1_1media_1_1MkvWriter-members.html b/docs/da/d95/classedash__packager_1_1media_1_1MkvWriter-members.html index fe633f3fa3..4d494186a3 100644 --- a/docs/da/d95/classedash__packager_1_1media_1_1MkvWriter-members.html +++ b/docs/da/d95/classedash__packager_1_1media_1_1MkvWriter-members.html @@ -107,7 +107,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d99/classedash__packager_1_1media_1_1webm_1_1Encryptor-members.html b/docs/da/d99/classedash__packager_1_1media_1_1webm_1_1Encryptor-members.html index 20f290947f..198cebc202 100644 --- a/docs/da/d99/classedash__packager_1_1media_1_1webm_1_1Encryptor-members.html +++ b/docs/da/d99/classedash__packager_1_1media_1_1webm_1_1Encryptor-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/db0/structedash__packager_1_1media_1_1mp4_1_1SoundMediaHeader.html b/docs/da/db0/structedash__packager_1_1media_1_1mp4_1_1SoundMediaHeader.html index f93794e240..63e91d52f1 100644 --- a/docs/da/db0/structedash__packager_1_1media_1_1mp4_1_1SoundMediaHeader.html +++ b/docs/da/db0/structedash__packager_1_1media_1_1mp4_1_1SoundMediaHeader.html @@ -145,7 +145,7 @@ Additional Inherited Members

        Detailed Description

        -

        Definition at line 491 of file box_definitions.h.

        +

        Definition at line 489 of file box_definitions.h.

        Member Function Documentation

        @@ -171,7 +171,7 @@ Additional Inherited Members

        Implements edash_packager::media::mp4::Box.

        -

        Definition at line 1650 of file box_definitions.cc.

        +

        Definition at line 1635 of file box_definitions.cc.

        @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/da/dc3/status_8cc_source.html b/docs/da/dc3/status_8cc_source.html index 41dd3d29b3..56fee9e8fe 100644 --- a/docs/da/dc3/status_8cc_source.html +++ b/docs/da/dc3/status_8cc_source.html @@ -168,7 +168,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/dcb/es__descriptor_8h_source.html b/docs/da/dcb/es__descriptor_8h_source.html index af3cf240c9..3a7f0bc2b7 100644 --- a/docs/da/dcb/es__descriptor_8h_source.html +++ b/docs/da/dcb/es__descriptor_8h_source.html @@ -187,7 +187,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/dd0/webm__info__parser_8h_source.html b/docs/da/dd0/webm__info__parser_8h_source.html index c26c1d17e2..f687e2d7dd 100644 --- a/docs/da/dd0/webm__info__parser_8h_source.html +++ b/docs/da/dd0/webm__info__parser_8h_source.html @@ -138,7 +138,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/dd1/fragmenter_8h_source.html b/docs/da/dd1/fragmenter_8h_source.html index 998e53f60b..302c26aae9 100644 --- a/docs/da/dd1/fragmenter_8h_source.html +++ b/docs/da/dd1/fragmenter_8h_source.html @@ -189,15 +189,15 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
        virtual Status InitializeFragment(int64_t first_sample_dts)
        Definition: fragmenter.cc:76
        virtual Status AddSample(scoped_refptr< MediaSample > sample)
        Definition: fragmenter.cc:36
        - +
        bool OptimizeSampleEntries(std::vector< T > *entries, T *default_value)
        Definition: fragmenter.h:89
        - +
        virtual void FinalizeFragment()
        Finalize and optimize the fragment.
        Definition: fragmenter.cc:93
        diff --git a/docs/da/de2/mock__mpd__builder_8cc_source.html b/docs/da/de2/mock__mpd__builder_8cc_source.html index ef547c8f24..a4ed89fde5 100644 --- a/docs/da/de2/mock__mpd__builder_8cc_source.html +++ b/docs/da/de2/mock__mpd__builder_8cc_source.html @@ -123,7 +123,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/de4/classedash__packager_1_1media_1_1AudioTimestampHelper.html b/docs/da/de4/classedash__packager_1_1media_1_1AudioTimestampHelper.html index 06aeac70b5..efa69276c1 100644 --- a/docs/da/de4/classedash__packager_1_1media_1_1AudioTimestampHelper.html +++ b/docs/da/de4/classedash__packager_1_1media_1_1AudioTimestampHelper.html @@ -131,7 +131,7 @@ int64_t GetFramesToTarget< diff --git a/docs/da/dfe/structedash__packager_1_1media_1_1mp4_1_1CompositionOffset.html b/docs/da/dfe/structedash__packager_1_1media_1_1mp4_1_1CompositionOffset.html index 09a90c9d3c..d6211c45fe 100644 --- a/docs/da/dfe/structedash__packager_1_1media_1_1mp4_1_1CompositionOffset.html +++ b/docs/da/dfe/structedash__packager_1_1media_1_1mp4_1_1CompositionOffset.html @@ -105,14 +105,14 @@ int64_t sample_offset<

        Detailed Description

        -

        Definition at line 393 of file box_definitions.h.

        +

        Definition at line 391 of file box_definitions.h.


        The documentation for this struct was generated from the following file: diff --git a/docs/db/d01/avc__decoder__configuration_8cc_source.html b/docs/db/d01/avc__decoder__configuration_8cc_source.html index d8e165b85f..f027c9dcc1 100644 --- a/docs/db/d01/avc__decoder__configuration_8cc_source.html +++ b/docs/db/d01/avc__decoder__configuration_8cc_source.html @@ -203,7 +203,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d01/classedash__packager_1_1media_1_1mp4_1_1SyncSampleIterator.html b/docs/db/d01/classedash__packager_1_1media_1_1mp4_1_1SyncSampleIterator.html index b890937176..d6cfa8836a 100644 --- a/docs/db/d01/classedash__packager_1_1media_1_1mp4_1_1SyncSampleIterator.html +++ b/docs/db/d01/classedash__packager_1_1media_1_1mp4_1_1SyncSampleIterator.html @@ -177,7 +177,7 @@ Public Member Functions diff --git a/docs/db/d09/namespaceedash__packager.html b/docs/db/d09/namespaceedash__packager.html index ef7eca3621..2665afebdd 100644 --- a/docs/db/d09/namespaceedash__packager.html +++ b/docs/db/d09/namespaceedash__packager.html @@ -550,7 +550,7 @@ const char kEncryptedMp4Va diff --git a/docs/db/d11/classedash__packager_1_1media_1_1ContentEncoding-members.html b/docs/db/d11/classedash__packager_1_1media_1_1ContentEncoding-members.html index 74732c2a13..769eec2262 100644 --- a/docs/db/d11/classedash__packager_1_1media_1_1ContentEncoding-members.html +++ b/docs/db/d11/classedash__packager_1_1media_1_1ContentEncoding-members.html @@ -132,7 +132,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d15/structedash__packager_1_1media_1_1mp4_1_1DecodingTimeToSample-members.html b/docs/db/d15/structedash__packager_1_1media_1_1mp4_1_1DecodingTimeToSample-members.html index 29c515930e..770db737b4 100644 --- a/docs/db/d15/structedash__packager_1_1media_1_1mp4_1_1DecodingTimeToSample-members.html +++ b/docs/db/d15/structedash__packager_1_1media_1_1mp4_1_1DecodingTimeToSample-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d23/classedash__packager_1_1media_1_1WebMTracksParser.html b/docs/db/d23/classedash__packager_1_1media_1_1WebMTracksParser.html index d5c4801547..762f145890 100644 --- a/docs/db/d23/classedash__packager_1_1media_1_1WebMTracksParser.html +++ b/docs/db/d23/classedash__packager_1_1media_1_1WebMTracksParser.html @@ -225,7 +225,7 @@ The number of bytes parsed on success. diff --git a/docs/db/d26/classedash__packager_1_1media_1_1mp4_1_1TrackRunIterator.html b/docs/db/d26/classedash__packager_1_1media_1_1mp4_1_1TrackRunIterator.html index 57c9bef07a..7532137ca5 100644 --- a/docs/db/d26/classedash__packager_1_1media_1_1mp4_1_1TrackRunIterator.html +++ b/docs/db/d26/classedash__packager_1_1media_1_1mp4_1_1TrackRunIterator.html @@ -412,7 +412,7 @@ bool is_keyframe () co diff --git a/docs/db/d2e/classedash__packager_1_1MockMpdBuilder.html b/docs/db/d2e/classedash__packager_1_1MockMpdBuilder.html index bc67112fee..157e83c553 100644 --- a/docs/db/d2e/classedash__packager_1_1MockMpdBuilder.html +++ b/docs/db/d2e/classedash__packager_1_1MockMpdBuilder.html @@ -153,7 +153,7 @@ Additional Inherited Members diff --git a/docs/db/d31/track__run__iterator_8cc_source.html b/docs/db/d31/track__run__iterator_8cc_source.html index 8ad98dd0de..fc99b4fdee 100644 --- a/docs/db/d31/track__run__iterator_8cc_source.html +++ b/docs/db/d31/track__run__iterator_8cc_source.html @@ -700,53 +700,53 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); - +
        scoped_ptr< DecryptConfig > GetDecryptConfig()
        -
        bool ParseFromSampleEncryptionData(size_t iv_size, std::vector< SampleEncryptionEntry > *sample_encryption_entries) const
        +
        bool ParseFromSampleEncryptionData(size_t iv_size, std::vector< SampleEncryptionEntry > *sample_encryption_entries) const
        bool CacheAuxInfo(const uint8_t *buf, int size)
        - +
        const AudioSampleEntry & audio_description() const
        Only valid if is_audio() is true.
        - +
        uint32_t NumSamples(uint32_t start_chunk, uint32_t end_chunk) const
        - + - + - - - + + + - + - + - - + + diff --git a/docs/db/d44/structedash__packager_1_1media_1_1mp4_1_1DataReference-members.html b/docs/db/d44/structedash__packager_1_1media_1_1mp4_1_1DataReference-members.html index dae5b81096..ee3cb329a9 100644 --- a/docs/db/d44/structedash__packager_1_1media_1_1mp4_1_1DataReference-members.html +++ b/docs/db/d44/structedash__packager_1_1media_1_1mp4_1_1DataReference-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d45/mpd__notify__muxer__listener_8h_source.html b/docs/db/d45/mpd__notify__muxer__listener_8h_source.html index 66df6796f3..f1eacf4516 100644 --- a/docs/db/d45/mpd__notify__muxer__listener_8h_source.html +++ b/docs/db/d45/mpd__notify__muxer__listener_8h_source.html @@ -186,7 +186,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d4e/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPsi.html b/docs/db/d4e/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPsi.html index 19777b12f5..10ba1f5944 100644 --- a/docs/db/d4e/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPsi.html +++ b/docs/db/d4e/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPsi.html @@ -147,7 +147,7 @@ Additional Inherited Members diff --git a/docs/db/d51/mp2t__media__parser_8h_source.html b/docs/db/d51/mp2t__media__parser_8h_source.html index 669c288157..219e0a971e 100644 --- a/docs/db/d51/mp2t__media__parser_8h_source.html +++ b/docs/db/d51/mp2t__media__parser_8h_source.html @@ -193,7 +193,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d51/two__pass__single__segment__segmenter_8h_source.html b/docs/db/d51/two__pass__single__segment__segmenter_8h_source.html index 351769825e..a7acfbffe6 100644 --- a/docs/db/d51/two__pass__single__segment__segmenter_8h_source.html +++ b/docs/db/d51/two__pass__single__segment__segmenter_8h_source.html @@ -145,7 +145,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d52/classedash__packager_1_1media_1_1ProtectionSystemSpecificInfo-members.html b/docs/db/d52/classedash__packager_1_1media_1_1ProtectionSystemSpecificInfo-members.html new file mode 100644 index 0000000000..39fa76d12e --- /dev/null +++ b/docs/db/d52/classedash__packager_1_1media_1_1ProtectionSystemSpecificInfo-members.html @@ -0,0 +1,118 @@ + + + + + + +DASH Media Packaging SDK: Member List + + + + + + + + + +
        +
        + + + + + + +
        +
        DASH Media Packaging SDK +
        +
        +
        + + + + + + + + + +
        + +
        + + +
        +
        +
        +
        edash_packager::media::ProtectionSystemSpecificInfo Member List
        +
        +
        + +

        This is the complete list of members for edash_packager::media::ProtectionSystemSpecificInfo, including all inherited members.

        + + + + + + + + + + + + + + + +
        add_key_id(const std::vector< uint8_t > &key_id) (defined in edash_packager::media::ProtectionSystemSpecificInfo)edash_packager::media::ProtectionSystemSpecificInfoinline
        clear_key_ids() (defined in edash_packager::media::ProtectionSystemSpecificInfo)edash_packager::media::ProtectionSystemSpecificInfoinline
        CreateBox() const edash_packager::media::ProtectionSystemSpecificInfo
        key_ids() const (defined in edash_packager::media::ProtectionSystemSpecificInfo)edash_packager::media::ProtectionSystemSpecificInfoinline
        Parse(const uint8_t *data, size_t data_size)edash_packager::media::ProtectionSystemSpecificInfo
        ParseBoxes(const uint8_t *data, size_t data_size, std::vector< ProtectionSystemSpecificInfo > *pssh_boxes)edash_packager::media::ProtectionSystemSpecificInfostatic
        ProtectionSystemSpecificInfo() (defined in edash_packager::media::ProtectionSystemSpecificInfo)edash_packager::media::ProtectionSystemSpecificInfo
        pssh_data() const (defined in edash_packager::media::ProtectionSystemSpecificInfo)edash_packager::media::ProtectionSystemSpecificInfoinline
        set_pssh_data(const std::vector< uint8_t > &pssh_data) (defined in edash_packager::media::ProtectionSystemSpecificInfo)edash_packager::media::ProtectionSystemSpecificInfoinline
        set_system_id(const std::vector< uint8_t > &system_id) (defined in edash_packager::media::ProtectionSystemSpecificInfo)edash_packager::media::ProtectionSystemSpecificInfoinline
        set_version(uint8_t version) (defined in edash_packager::media::ProtectionSystemSpecificInfo)edash_packager::media::ProtectionSystemSpecificInfoinline
        system_id() const (defined in edash_packager::media::ProtectionSystemSpecificInfo)edash_packager::media::ProtectionSystemSpecificInfoinline
        version() const (defined in edash_packager::media::ProtectionSystemSpecificInfo)edash_packager::media::ProtectionSystemSpecificInfoinline
        ~ProtectionSystemSpecificInfo() (defined in edash_packager::media::ProtectionSystemSpecificInfo)edash_packager::media::ProtectionSystemSpecificInfo
        + + + + diff --git a/docs/db/d56/classedash__packager_1_1SimpleMpdNotifier.html b/docs/db/d56/classedash__packager_1_1SimpleMpdNotifier.html index daa2653a87..325c2b7171 100644 --- a/docs/db/d56/classedash__packager_1_1SimpleMpdNotifier.html +++ b/docs/db/d56/classedash__packager_1_1SimpleMpdNotifier.html @@ -471,7 +471,7 @@ class SimpleMpdNotifierTes diff --git a/docs/db/d5a/structedash__packager_1_1media_1_1mp4_1_1SampleEncryptionEntry-members.html b/docs/db/d5a/structedash__packager_1_1media_1_1mp4_1_1SampleEncryptionEntry-members.html index 4764c4a5e2..bd0930e109 100644 --- a/docs/db/d5a/structedash__packager_1_1media_1_1mp4_1_1SampleEncryptionEntry-members.html +++ b/docs/db/d5a/structedash__packager_1_1media_1_1mp4_1_1SampleEncryptionEntry-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d5b/classedash__packager_1_1media_1_1HEVCDecoderConfiguration-members.html b/docs/db/d5b/classedash__packager_1_1media_1_1HEVCDecoderConfiguration-members.html index d03e1b7657..4e3fa2579a 100644 --- a/docs/db/d5b/classedash__packager_1_1media_1_1HEVCDecoderConfiguration-members.html +++ b/docs/db/d5b/classedash__packager_1_1media_1_1HEVCDecoderConfiguration-members.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d60/mpd__options_8h_source.html b/docs/db/d60/mpd__options_8h_source.html index 0d623c91ec..1f1e177c3b 100644 --- a/docs/db/d60/mpd__options_8h_source.html +++ b/docs/db/d60/mpd__options_8h_source.html @@ -130,7 +130,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d61/classedash__packager_1_1media_1_1mp4_1_1SingleSegmentSegmenter-members.html b/docs/db/d61/classedash__packager_1_1media_1_1mp4_1_1SingleSegmentSegmenter-members.html index 358f8b97c9..2c1f307ce9 100644 --- a/docs/db/d61/classedash__packager_1_1media_1_1mp4_1_1SingleSegmentSegmenter-members.html +++ b/docs/db/d61/classedash__packager_1_1media_1_1mp4_1_1SingleSegmentSegmenter-members.html @@ -118,7 +118,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d64/webvtt__media__parser_8h_source.html b/docs/db/d64/webvtt__media__parser_8h_source.html index 6a73c0d8bc..20c99110db 100644 --- a/docs/db/d64/webvtt__media__parser_8h_source.html +++ b/docs/db/d64/webvtt__media__parser_8h_source.html @@ -181,7 +181,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d69/classedash__packager_1_1media_1_1mp2t_1_1AdtsHeader.html b/docs/db/d69/classedash__packager_1_1media_1_1mp2t_1_1AdtsHeader.html index aa505f76a2..8237270be8 100644 --- a/docs/db/d69/classedash__packager_1_1media_1_1mp2t_1_1AdtsHeader.html +++ b/docs/db/d69/classedash__packager_1_1media_1_1mp2t_1_1AdtsHeader.html @@ -336,7 +336,7 @@ Static Public Member Functions diff --git a/docs/db/d6b/structedash__packager_1_1media_1_1mp4_1_1VTTAdditionalTextBox.html b/docs/db/d6b/structedash__packager_1_1media_1_1mp4_1_1VTTAdditionalTextBox.html index 1381411ad2..c59d05760f 100644 --- a/docs/db/d6b/structedash__packager_1_1media_1_1mp4_1_1VTTAdditionalTextBox.html +++ b/docs/db/d6b/structedash__packager_1_1media_1_1mp4_1_1VTTAdditionalTextBox.html @@ -136,7 +136,7 @@ Additional Inherited Members

        Detailed Description

        -

        Definition at line 767 of file box_definitions.h.

        +

        Definition at line 765 of file box_definitions.h.

        Member Function Documentation

        @@ -162,7 +162,7 @@ Additional Inherited Members

        Implements edash_packager::media::mp4::Box.

        -

        Definition at line 2530 of file box_definitions.cc.

        +

        Definition at line 2515 of file box_definitions.cc.

        @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/db/d6c/classedash__packager_1_1media_1_1mp4_1_1BoxReader.html b/docs/db/d6c/classedash__packager_1_1media_1_1mp4_1_1BoxReader.html index 58377dc2ee..9dcbe4c23d 100644 --- a/docs/db/d6c/classedash__packager_1_1media_1_1mp4_1_1BoxReader.html +++ b/docs/db/d6c/classedash__packager_1_1media_1_1mp4_1_1BoxReader.html @@ -497,7 +497,7 @@ template<typename T > diff --git a/docs/db/d71/http__key__fetcher_8h_source.html b/docs/db/d71/http__key__fetcher_8h_source.html index 8fc9b54404..73b49de97b 100644 --- a/docs/db/d71/http__key__fetcher_8h_source.html +++ b/docs/db/d71/http__key__fetcher_8h_source.html @@ -150,7 +150,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d79/structedash__packager_1_1media_1_1mp4_1_1EditListEntry-members.html b/docs/db/d79/structedash__packager_1_1media_1_1mp4_1_1EditListEntry-members.html index a73f4e0d82..44318672d9 100644 --- a/docs/db/d79/structedash__packager_1_1media_1_1mp4_1_1EditListEntry-members.html +++ b/docs/db/d79/structedash__packager_1_1media_1_1mp4_1_1EditListEntry-members.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d7e/muxer__options_8cc_source.html b/docs/db/d7e/muxer__options_8cc_source.html index 8a2bc4cc56..67fd730084 100644 --- a/docs/db/d7e/muxer__options_8cc_source.html +++ b/docs/db/d7e/muxer__options_8cc_source.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d89/structedash__packager_1_1media_1_1mp4_1_1CompactSampleSize.html b/docs/db/d89/structedash__packager_1_1media_1_1mp4_1_1CompactSampleSize.html index c3d765871c..4f8cc0234a 100644 --- a/docs/db/d89/structedash__packager_1_1media_1_1mp4_1_1CompactSampleSize.html +++ b/docs/db/d89/structedash__packager_1_1media_1_1mp4_1_1CompactSampleSize.html @@ -148,7 +148,7 @@ Additional Inherited Members

        Detailed Description

        -

        Definition at line 431 of file box_definitions.h.

        +

        Definition at line 429 of file box_definitions.h.

        Member Function Documentation

        @@ -174,7 +174,7 @@ Additional Inherited Members

        Implements edash_packager::media::mp4::Box.

        -

        Definition at line 774 of file box_definitions.cc.

        +

        Definition at line 759 of file box_definitions.cc.

        @@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/db/d8f/mp4__muxer_8h_source.html b/docs/db/d8f/mp4__muxer_8h_source.html index d0aebd93fd..b7e86a8c90 100644 --- a/docs/db/d8f/mp4__muxer_8h_source.html +++ b/docs/db/d8f/mp4__muxer_8h_source.html @@ -113,69 +113,68 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
        24 class Segmenter;
        25 
        26 struct ProtectionSchemeInfo;
        -
        27 struct ProtectionSystemSpecificHeader;
        -
        28 struct Track;
        -
        29 
        -
        32 class MP4Muxer : public Muxer {
        -
        33  public:
        -
        35  explicit MP4Muxer(const MuxerOptions& options);
        -
        36  ~MP4Muxer() override;
        -
        37 
        -
        38  private:
        -
        39  // Muxer implementation overrides.
        -
        40  Status Initialize() override;
        -
        41  Status Finalize() override;
        -
        42  Status DoAddSample(const MediaStream* stream,
        -
        43  scoped_refptr<MediaSample> sample) override;
        -
        44 
        -
        45  // Generate Audio/Video Track box.
        -
        46  void InitializeTrak(const StreamInfo* info, Track* trak);
        -
        47  void GenerateAudioTrak(const AudioStreamInfo* audio_info,
        -
        48  Track* trak,
        -
        49  uint32_t track_id);
        -
        50  void GenerateVideoTrak(const VideoStreamInfo* video_info,
        -
        51  Track* trak,
        -
        52  uint32_t track_id);
        -
        53 
        -
        54  // Gets |start| and |end| initialization range. Returns true if there is an
        -
        55  // init range and sets start-end byte-range-spec specified in RFC2616.
        -
        56  bool GetInitRangeStartAndEnd(uint32_t* start, uint32_t* end);
        -
        57 
        -
        58  // Gets |start| and |end| index range. Returns true if there is an index range
        -
        59  // and sets start-end byte-range-spec specified in RFC2616.
        -
        60  bool GetIndexRangeStartAndEnd(uint32_t* start, uint32_t* end);
        -
        61 
        -
        62  // Fire events if there are no errors and Muxer::muxer_listener() is not NULL.
        -
        63  void FireOnMediaStartEvent();
        -
        64  void FireOnMediaEndEvent();
        -
        65 
        -
        66  // Get time in seconds since midnight, Jan. 1, 1904, in UTC Time.
        -
        67  uint64_t IsoTimeNow();
        -
        68 
        -
        69  scoped_ptr<Segmenter> segmenter_;
        -
        70 
        -
        71  DISALLOW_COPY_AND_ASSIGN(MP4Muxer);
        -
        72 };
        -
        73 
        -
        74 } // namespace mp4
        -
        75 } // namespace media
        -
        76 } // namespace edash_packager
        -
        77 
        -
        78 #endif // MEDIA_FORMATS_MP4_MP4_MUXER_H_
        +
        27 struct Track;
        +
        28 
        +
        31 class MP4Muxer : public Muxer {
        +
        32  public:
        +
        34  explicit MP4Muxer(const MuxerOptions& options);
        +
        35  ~MP4Muxer() override;
        +
        36 
        +
        37  private:
        +
        38  // Muxer implementation overrides.
        +
        39  Status Initialize() override;
        +
        40  Status Finalize() override;
        +
        41  Status DoAddSample(const MediaStream* stream,
        +
        42  scoped_refptr<MediaSample> sample) override;
        +
        43 
        +
        44  // Generate Audio/Video Track box.
        +
        45  void InitializeTrak(const StreamInfo* info, Track* trak);
        +
        46  void GenerateAudioTrak(const AudioStreamInfo* audio_info,
        +
        47  Track* trak,
        +
        48  uint32_t track_id);
        +
        49  void GenerateVideoTrak(const VideoStreamInfo* video_info,
        +
        50  Track* trak,
        +
        51  uint32_t track_id);
        +
        52 
        +
        53  // Gets |start| and |end| initialization range. Returns true if there is an
        +
        54  // init range and sets start-end byte-range-spec specified in RFC2616.
        +
        55  bool GetInitRangeStartAndEnd(uint32_t* start, uint32_t* end);
        +
        56 
        +
        57  // Gets |start| and |end| index range. Returns true if there is an index range
        +
        58  // and sets start-end byte-range-spec specified in RFC2616.
        +
        59  bool GetIndexRangeStartAndEnd(uint32_t* start, uint32_t* end);
        +
        60 
        +
        61  // Fire events if there are no errors and Muxer::muxer_listener() is not NULL.
        +
        62  void FireOnMediaStartEvent();
        +
        63  void FireOnMediaEndEvent();
        +
        64 
        +
        65  // Get time in seconds since midnight, Jan. 1, 1904, in UTC Time.
        +
        66  uint64_t IsoTimeNow();
        +
        67 
        +
        68  scoped_ptr<Segmenter> segmenter_;
        +
        69 
        +
        70  DISALLOW_COPY_AND_ASSIGN(MP4Muxer);
        +
        71 };
        +
        72 
        +
        73 } // namespace mp4
        +
        74 } // namespace media
        +
        75 } // namespace edash_packager
        +
        76 
        +
        77 #endif // MEDIA_FORMATS_MP4_MP4_MUXER_H_
        MP4Muxer(const MuxerOptions &options)
        Create a MP4Muxer object from MuxerOptions.
        Definition: mp4_muxer.cc:87
        Holds audio stream information.
        - +
        Abstract class holds stream information.
        Definition: stream_info.h:26
        Holds video stream information.
        - +
        This structure contains the list of configuration options for Muxer.
        Definition: muxer_options.h:18
        diff --git a/docs/db/d96/wvm__media__parser_8h_source.html b/docs/db/d96/wvm__media__parser_8h_source.html index 4c0682dcc0..ed98f41ca7 100644 --- a/docs/db/d96/wvm__media__parser_8h_source.html +++ b/docs/db/d96/wvm__media__parser_8h_source.html @@ -363,7 +363,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d97/classedash__packager_1_1media_1_1WebMContentEncodingsClient-members.html b/docs/db/d97/classedash__packager_1_1media_1_1WebMContentEncodingsClient-members.html index 82dae6e185..ef87a5cb43 100644 --- a/docs/db/d97/classedash__packager_1_1media_1_1WebMContentEncodingsClient-members.html +++ b/docs/db/d97/classedash__packager_1_1media_1_1WebMContentEncodingsClient-members.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/da0/classedash__packager_1_1media_1_1ProtectionSystemSpecificInfo.html b/docs/db/da0/classedash__packager_1_1media_1_1ProtectionSystemSpecificInfo.html new file mode 100644 index 0000000000..6c139df4c8 --- /dev/null +++ b/docs/db/da0/classedash__packager_1_1media_1_1ProtectionSystemSpecificInfo.html @@ -0,0 +1,230 @@ + + + + + + +DASH Media Packaging SDK: edash_packager::media::ProtectionSystemSpecificInfo Class Reference + + + + + + + + + +
        +
        + + + + + + +
        +
        DASH Media Packaging SDK +
        +
        +
        + + + + + + + + + +
        + +
        + + +
        +
        + +
        +
        edash_packager::media::ProtectionSystemSpecificInfo Class Reference
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + +

        +Public Member Functions

        bool Parse (const uint8_t *data, size_t data_size)
         
        +std::vector< uint8_t > CreateBox () const
         Creates a PSSH box for the current data.
         
        +uint8_t version () const
         
        +const std::vector< uint8_t > & system_id () const
         
        +const std::vector< std::vector
        +< uint8_t > > & 
        key_ids () const
         
        +const std::vector< uint8_t > & pssh_data () const
         
        +void set_version (uint8_t version)
         
        +void set_system_id (const std::vector< uint8_t > &system_id)
         
        +void add_key_id (const std::vector< uint8_t > &key_id)
         
        +void clear_key_ids ()
         
        +void set_pssh_data (const std::vector< uint8_t > &pssh_data)
         
        + + + +

        +Static Public Member Functions

        static bool ParseBoxes (const uint8_t *data, size_t data_size, std::vector< ProtectionSystemSpecificInfo > *pssh_boxes)
         
        +

        Detailed Description

        +
        +

        Definition at line 19 of file protection_system_specific_info.h.

        +

        Member Function Documentation

        + +
        +
        + + + + + + + + + + + + + + + + + + +
        bool edash_packager::media::ProtectionSystemSpecificInfo::Parse (const uint8_t * data,
        size_t data_size 
        )
        +
        +

        Parses the given PSSH box into this object.

        +
        Returns
        true on success; false on failure.
        + +

        Definition at line 44 of file protection_system_specific_info.cc.

        + +
        +
        + +
        +
        + + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + +
        bool edash_packager::media::ProtectionSystemSpecificInfo::ParseBoxes (const uint8_t * data,
        size_t data_size,
        std::vector< ProtectionSystemSpecificInfo > * pssh_boxes 
        )
        +
        +static
        +
        +

        Parses multiple PSSH boxes from data. These boxes should be concatenated together. Any non-PSSH box is an error.

        +
        Returns
        true on success; false on failure.
        + +

        Definition at line 26 of file protection_system_specific_info.cc.

        + +
        +
        +
        The documentation for this class was generated from the following files: +
        + + + + diff --git a/docs/db/da0/classedash__packager_1_1media_1_1WebMClusterParser.html b/docs/db/da0/classedash__packager_1_1media_1_1WebMClusterParser.html index 936eb80e02..3cfc93bb78 100644 --- a/docs/db/da0/classedash__packager_1_1media_1_1WebMClusterParser.html +++ b/docs/db/da0/classedash__packager_1_1media_1_1WebMClusterParser.html @@ -365,7 +365,7 @@ The number of bytes parsed on success. diff --git a/docs/db/da4/classBandwidthEstimator-members.html b/docs/db/da4/classBandwidthEstimator-members.html index 26d61526e5..d0439fbfe9 100644 --- a/docs/db/da4/classBandwidthEstimator-members.html +++ b/docs/db/da4/classBandwidthEstimator-members.html @@ -97,7 +97,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/da4/classedash__packager_1_1media_1_1WidevineKeySource.html b/docs/db/da4/classedash__packager_1_1media_1_1WidevineKeySource.html index b10f4e31c4..91878d6bf4 100644 --- a/docs/db/da4/classedash__packager_1_1media_1_1WidevineKeySource.html +++ b/docs/db/da4/classedash__packager_1_1media_1_1WidevineKeySource.html @@ -559,7 +559,7 @@ static std::string  diff --git a/docs/db/da5/structedash__packager_1_1media_1_1mp4_1_1CencSampleEncryptionInfoEntry-members.html b/docs/db/da5/structedash__packager_1_1media_1_1mp4_1_1CencSampleEncryptionInfoEntry-members.html index a9b66f28c4..a79693d937 100644 --- a/docs/db/da5/structedash__packager_1_1media_1_1mp4_1_1CencSampleEncryptionInfoEntry-members.html +++ b/docs/db/da5/structedash__packager_1_1media_1_1mp4_1_1CencSampleEncryptionInfoEntry-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/da6/memory__file_8h_source.html b/docs/db/da6/memory__file_8h_source.html index b379542604..7fa87bc3a6 100644 --- a/docs/db/da6/memory__file_8h_source.html +++ b/docs/db/da6/memory__file_8h_source.html @@ -154,7 +154,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/dae/classedash__packager_1_1media_1_1mp4_1_1Fragmenter.html b/docs/db/dae/classedash__packager_1_1media_1_1mp4_1_1Fragmenter.html index 5907baedae..15f8fa0ab9 100644 --- a/docs/db/dae/classedash__packager_1_1media_1_1mp4_1_1Fragmenter.html +++ b/docs/db/dae/classedash__packager_1_1media_1_1mp4_1_1Fragmenter.html @@ -299,7 +299,7 @@ template<typename T > diff --git a/docs/db/db8/structedash__packager_1_1media_1_1mp4_1_1ID3v2-members.html b/docs/db/db8/structedash__packager_1_1media_1_1mp4_1_1ID3v2-members.html index 409911079d..8d59e57d7d 100644 --- a/docs/db/db8/structedash__packager_1_1media_1_1mp4_1_1ID3v2-members.html +++ b/docs/db/db8/structedash__packager_1_1media_1_1mp4_1_1ID3v2-members.html @@ -114,7 +114,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/dc8/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPmt-members.html b/docs/db/dc8/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPmt-members.html index a93c699a56..b0800b08a2 100644 --- a/docs/db/dc8/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPmt-members.html +++ b/docs/db/dc8/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPmt-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/dd1/structedash__packager_1_1media_1_1mp4_1_1SampleEncryption-members.html b/docs/db/dd1/structedash__packager_1_1media_1_1mp4_1_1SampleEncryption-members.html index 4b7575194d..c36299902a 100644 --- a/docs/db/dd1/structedash__packager_1_1media_1_1mp4_1_1SampleEncryption-members.html +++ b/docs/db/dd1/structedash__packager_1_1media_1_1mp4_1_1SampleEncryption-members.html @@ -118,7 +118,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/dd2/chunk__info__iterator_8h_source.html b/docs/db/dd2/chunk__info__iterator_8h_source.html index 7723f9133e..bb6ef440f4 100644 --- a/docs/db/dd2/chunk__info__iterator_8h_source.html +++ b/docs/db/dd2/chunk__info__iterator_8h_source.html @@ -148,7 +148,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
        74 
        75 #endif // MEDIA_FORMATS_MP4_CHUNK_INFO_ITERATOR_H_
        - +
        uint32_t NumSamples(uint32_t start_chunk, uint32_t end_chunk) const
        @@ -161,7 +161,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/dd9/sync__sample__iterator_8h_source.html b/docs/db/dd9/sync__sample__iterator_8h_source.html index d90ab37b38..20782a88e1 100644 --- a/docs/db/dd9/sync__sample__iterator_8h_source.html +++ b/docs/db/dd9/sync__sample__iterator_8h_source.html @@ -133,14 +133,14 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
        51 
        52 #endif // MEDIA_FORMATS_MP4_SYNC_SAMPLE_ITERATOR_H_
        SyncSampleIterator(const SyncSample &sync_sample)
        Create a new SyncSampleIterator from sync sample box.
        - + diff --git a/docs/db/de4/classedash__packager_1_1AdaptationSet.html b/docs/db/de4/classedash__packager_1_1AdaptationSet.html index 8c16e0a10f..5db5ea1da6 100644 --- a/docs/db/de4/classedash__packager_1_1AdaptationSet.html +++ b/docs/db/de4/classedash__packager_1_1AdaptationSet.html @@ -582,7 +582,7 @@ template<MpdBuilder::MpdType type> diff --git a/docs/db/de9/classedash__packager_1_1media_1_1StreamDescriptorCompareFn-members.html b/docs/db/de9/classedash__packager_1_1media_1_1StreamDescriptorCompareFn-members.html index e30beb069a..6593314723 100644 --- a/docs/db/de9/classedash__packager_1_1media_1_1StreamDescriptorCompareFn-members.html +++ b/docs/db/de9/classedash__packager_1_1media_1_1StreamDescriptorCompareFn-members.html @@ -97,7 +97,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/dec/audio__timestamp__helper_8cc_source.html b/docs/db/dec/audio__timestamp__helper_8cc_source.html index b38be1e2f7..cf81ed2aa3 100644 --- a/docs/db/dec/audio__timestamp__helper_8cc_source.html +++ b/docs/db/dec/audio__timestamp__helper_8cc_source.html @@ -165,7 +165,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/df2/classedash__packager_1_1media_1_1mp2t_1_1EsParser.html b/docs/db/df2/classedash__packager_1_1media_1_1mp2t_1_1EsParser.html index e85be09fb9..a6f8bc9aa6 100644 --- a/docs/db/df2/classedash__packager_1_1media_1_1mp2t_1_1EsParser.html +++ b/docs/db/df2/classedash__packager_1_1media_1_1mp2t_1_1EsParser.html @@ -144,7 +144,7 @@ uint32_t pid () diff --git a/docs/db/df6/muxer_8h_source.html b/docs/db/df6/muxer_8h_source.html index 911023b9ff..1277e7e4fa 100644 --- a/docs/db/df6/muxer_8h_source.html +++ b/docs/db/df6/muxer_8h_source.html @@ -208,7 +208,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/df7/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPsi-members.html b/docs/db/df7/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPsi-members.html index 9cff146855..dda41b6c7c 100644 --- a/docs/db/df7/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPsi-members.html +++ b/docs/db/df7/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPsi-members.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/df7/structedash__packager_1_1media_1_1mp4_1_1VideoMediaHeader.html b/docs/db/df7/structedash__packager_1_1media_1_1mp4_1_1VideoMediaHeader.html index 5abda67de8..7612d7d5cc 100644 --- a/docs/db/df7/structedash__packager_1_1media_1_1mp4_1_1VideoMediaHeader.html +++ b/docs/db/df7/structedash__packager_1_1media_1_1mp4_1_1VideoMediaHeader.html @@ -154,7 +154,7 @@ Additional Inherited Members

        Detailed Description

        -

        Definition at line 482 of file box_definitions.h.

        +

        Definition at line 480 of file box_definitions.h.

        Member Function Documentation

        @@ -180,7 +180,7 @@ Additional Inherited Members

        Implements edash_packager::media::mp4::Box.

        -

        Definition at line 1633 of file box_definitions.cc.

        +

        Definition at line 1618 of file box_definitions.cc.

        @@ -191,7 +191,7 @@ Additional Inherited Members diff --git a/docs/db/dfb/mpd__utils_8cc_source.html b/docs/db/dfb/mpd__utils_8cc_source.html index 29ef50e1d0..511c91317a 100644 --- a/docs/db/dfb/mpd__utils_8cc_source.html +++ b/docs/db/dfb/mpd__utils_8cc_source.html @@ -392,7 +392,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/dfc/mpd__notify__muxer__listener_8cc_source.html b/docs/db/dfc/mpd__notify__muxer__listener_8cc_source.html index 2c3f133d02..3b86ab138c 100644 --- a/docs/db/dfc/mpd__notify__muxer__listener_8cc_source.html +++ b/docs/db/dfc/mpd__notify__muxer__listener_8cc_source.html @@ -265,7 +265,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/dfe/classedash__packager_1_1media_1_1AesCbcPkcs5Decryptor.html b/docs/db/dfe/classedash__packager_1_1media_1_1AesCbcPkcs5Decryptor.html index 9e69f26c85..3e3d8847aa 100644 --- a/docs/db/dfe/classedash__packager_1_1media_1_1AesCbcPkcs5Decryptor.html +++ b/docs/db/dfe/classedash__packager_1_1media_1_1AesCbcPkcs5Decryptor.html @@ -209,7 +209,7 @@ const std::vector< uint8_t > &  diff --git a/docs/dc/d05/classedash__packager_1_1xml_1_1RepresentationXmlNode.html b/docs/dc/d05/classedash__packager_1_1xml_1_1RepresentationXmlNode.html index 107b020dd9..81709cc6d9 100644 --- a/docs/dc/d05/classedash__packager_1_1xml_1_1RepresentationXmlNode.html +++ b/docs/dc/d05/classedash__packager_1_1xml_1_1RepresentationXmlNode.html @@ -311,7 +311,7 @@ Additional Inherited Members diff --git a/docs/dc/d0c/classedash__packager_1_1media_1_1WebMVideoClient.html b/docs/dc/d0c/classedash__packager_1_1media_1_1WebMVideoClient.html index 20bd89896b..ac43f31303 100644 --- a/docs/dc/d0c/classedash__packager_1_1media_1_1WebMVideoClient.html +++ b/docs/dc/d0c/classedash__packager_1_1media_1_1WebMVideoClient.html @@ -190,7 +190,7 @@ An empty scoped_refptr if there was unexpected values in the provided parameters diff --git a/docs/dc/d0d/structedash__packager_1_1media_1_1mp4_1_1EditListEntry.html b/docs/dc/d0d/structedash__packager_1_1media_1_1mp4_1_1EditListEntry.html index daec8f8b96..6508de9a42 100644 --- a/docs/dc/d0d/structedash__packager_1_1media_1_1mp4_1_1EditListEntry.html +++ b/docs/dc/d0d/structedash__packager_1_1media_1_1mp4_1_1EditListEntry.html @@ -111,14 +111,14 @@ int16_t media_rate_fractio

        Detailed Description

        -

        Definition at line 203 of file box_definitions.h.

        +

        Definition at line 201 of file box_definitions.h.


        The documentation for this struct was generated from the following file: diff --git a/docs/dc/d19/box_8h_source.html b/docs/dc/d19/box_8h_source.html index ed5acb3bdd..b1f51ddb9a 100644 --- a/docs/dc/d19/box_8h_source.html +++ b/docs/dc/d19/box_8h_source.html @@ -184,7 +184,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d22/dash__iop__mpd__notifier_8cc_source.html b/docs/dc/d22/dash__iop__mpd__notifier_8cc_source.html index 51498702ae..ba0bb5bb45 100644 --- a/docs/dc/d22/dash__iop__mpd__notifier_8cc_source.html +++ b/docs/dc/d22/dash__iop__mpd__notifier_8cc_source.html @@ -407,7 +407,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d23/classedash__packager_1_1MockMpdNotifier-members.html b/docs/dc/d23/classedash__packager_1_1MockMpdNotifier-members.html index 71008bd15c..d6529e1b02 100644 --- a/docs/dc/d23/classedash__packager_1_1MockMpdNotifier-members.html +++ b/docs/dc/d23/classedash__packager_1_1MockMpdNotifier-members.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d2f/classedash__packager_1_1media_1_1KeySource-members.html b/docs/dc/d2f/classedash__packager_1_1media_1_1KeySource-members.html index ae51d975dd..f7fdda6f21 100644 --- a/docs/dc/d2f/classedash__packager_1_1media_1_1KeySource-members.html +++ b/docs/dc/d2f/classedash__packager_1_1media_1_1KeySource-members.html @@ -117,7 +117,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d31/classedash__packager_1_1media_1_1ClusterBuilder-members.html b/docs/dc/d31/classedash__packager_1_1media_1_1ClusterBuilder-members.html index 83bd67cc1d..bda8a5c759 100644 --- a/docs/dc/d31/classedash__packager_1_1media_1_1ClusterBuilder-members.html +++ b/docs/dc/d31/classedash__packager_1_1media_1_1ClusterBuilder-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d35/classedash__packager_1_1media_1_1mp2t_1_1Mp2tMediaParser-members.html b/docs/dc/d35/classedash__packager_1_1media_1_1mp2t_1_1Mp2tMediaParser-members.html index 257675d189..f000348255 100644 --- a/docs/dc/d35/classedash__packager_1_1media_1_1mp2t_1_1Mp2tMediaParser-members.html +++ b/docs/dc/d35/classedash__packager_1_1media_1_1mp2t_1_1Mp2tMediaParser-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d3b/fixed__key__encryption__flags_8cc_source.html b/docs/dc/d3b/fixed__key__encryption__flags_8cc_source.html index b6d7808995..4d73e3f769 100644 --- a/docs/dc/d3b/fixed__key__encryption__flags_8cc_source.html +++ b/docs/dc/d3b/fixed__key__encryption__flags_8cc_source.html @@ -153,7 +153,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d3c/webm__cluster__parser_8h_source.html b/docs/dc/d3c/webm__cluster__parser_8h_source.html index 5e280efae1..56f8ee8dde 100644 --- a/docs/dc/d3c/webm__cluster__parser_8h_source.html +++ b/docs/dc/d3c/webm__cluster__parser_8h_source.html @@ -298,7 +298,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d3f/key__source_8h_source.html b/docs/dc/d3f/key__source_8h_source.html index 8c6a04efcc..0a3dfd5bcc 100644 --- a/docs/dc/d3f/key__source_8h_source.html +++ b/docs/dc/d3f/key__source_8h_source.html @@ -189,7 +189,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d41/classedash__packager_1_1xml_1_1RepresentationXmlNode-members.html b/docs/dc/d41/classedash__packager_1_1xml_1_1RepresentationXmlNode-members.html index 6a71f624ee..6381171f21 100644 --- a/docs/dc/d41/classedash__packager_1_1xml_1_1RepresentationXmlNode-members.html +++ b/docs/dc/d41/classedash__packager_1_1xml_1_1RepresentationXmlNode-members.html @@ -117,7 +117,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d44/classedash__packager_1_1xml_1_1XmlNode-members.html b/docs/dc/d44/classedash__packager_1_1xml_1_1XmlNode-members.html index 82079895a3..15c3b3d3c8 100644 --- a/docs/dc/d44/classedash__packager_1_1xml_1_1XmlNode-members.html +++ b/docs/dc/d44/classedash__packager_1_1xml_1_1XmlNode-members.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d46/classedash__packager_1_1media_1_1Cluster-members.html b/docs/dc/d46/classedash__packager_1_1media_1_1Cluster-members.html index f5bfeafc62..03702cf7b8 100644 --- a/docs/dc/d46/classedash__packager_1_1media_1_1Cluster-members.html +++ b/docs/dc/d46/classedash__packager_1_1media_1_1Cluster-members.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d48/classedash__packager_1_1media_1_1MediaParser.html b/docs/dc/d48/classedash__packager_1_1media_1_1MediaParser.html index c2ce59ba1f..749a3bc077 100644 --- a/docs/dc/d48/classedash__packager_1_1media_1_1MediaParser.html +++ b/docs/dc/d48/classedash__packager_1_1media_1_1MediaParser.html @@ -298,7 +298,7 @@ Public Member Functions diff --git a/docs/dc/d4a/structedash__packager_1_1media_1_1mp4_1_1WebVTTConfigurationBox-members.html b/docs/dc/d4a/structedash__packager_1_1media_1_1mp4_1_1WebVTTConfigurationBox-members.html index dbf42d9ef2..0c9789760c 100644 --- a/docs/dc/d4a/structedash__packager_1_1media_1_1mp4_1_1WebVTTConfigurationBox-members.html +++ b/docs/dc/d4a/structedash__packager_1_1media_1_1mp4_1_1WebVTTConfigurationBox-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d52/decoding__time__iterator_8h_source.html b/docs/dc/d52/decoding__time__iterator_8h_source.html index 88019082ac..096f442fd1 100644 --- a/docs/dc/d52/decoding__time__iterator_8h_source.html +++ b/docs/dc/d52/decoding__time__iterator_8h_source.html @@ -142,12 +142,12 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); - +
        uint64_t Duration(uint32_t start_sample, uint32_t end_sample) const
        diff --git a/docs/dc/d53/webm_2segmenter_8cc_source.html b/docs/dc/d53/webm_2segmenter_8cc_source.html index 168ce7f593..2c5f999158 100644 --- a/docs/dc/d53/webm_2segmenter_8cc_source.html +++ b/docs/dc/d53/webm_2segmenter_8cc_source.html @@ -534,7 +534,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d55/structedash__packager_1_1media_1_1H264SEIMessage-members.html b/docs/dc/d55/structedash__packager_1_1media_1_1H264SEIMessage-members.html index 23d91eb74e..968b21385f 100644 --- a/docs/dc/d55/structedash__packager_1_1media_1_1H264SEIMessage-members.html +++ b/docs/dc/d55/structedash__packager_1_1media_1_1H264SEIMessage-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d58/webm__media__parser_8h_source.html b/docs/dc/d58/webm__media__parser_8h_source.html index 75c4ec17d9..ad230fcfe7 100644 --- a/docs/dc/d58/webm__media__parser_8h_source.html +++ b/docs/dc/d58/webm__media__parser_8h_source.html @@ -179,7 +179,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d73/classedash__packager_1_1media_1_1RequestSigner.html b/docs/dc/d73/classedash__packager_1_1media_1_1RequestSigner.html index a8a688e496..b27edcad5f 100644 --- a/docs/dc/d73/classedash__packager_1_1media_1_1RequestSigner.html +++ b/docs/dc/d73/classedash__packager_1_1media_1_1RequestSigner.html @@ -180,7 +180,7 @@ Protected Member Functions diff --git a/docs/dc/d7a/classedash__packager_1_1media_1_1mp4_1_1MultiSegmentSegmenter.html b/docs/dc/d7a/classedash__packager_1_1media_1_1mp4_1_1MultiSegmentSegmenter.html index 5d36a0000a..ba399ab00e 100644 --- a/docs/dc/d7a/classedash__packager_1_1media_1_1mp4_1_1MultiSegmentSegmenter.html +++ b/docs/dc/d7a/classedash__packager_1_1media_1_1mp4_1_1MultiSegmentSegmenter.html @@ -259,7 +259,7 @@ void set_progress_target diff --git a/docs/dc/d7b/closure__thread_8cc_source.html b/docs/dc/d7b/closure__thread_8cc_source.html index 683ae4d7a9..520736fa10 100644 --- a/docs/dc/d7b/closure__thread_8cc_source.html +++ b/docs/dc/d7b/closure__thread_8cc_source.html @@ -118,7 +118,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d7b/h264__parser_8cc_source.html b/docs/dc/d7b/h264__parser_8cc_source.html index 748148a61e..eadd2a846d 100644 --- a/docs/dc/d7b/h264__parser_8cc_source.html +++ b/docs/dc/d7b/h264__parser_8cc_source.html @@ -1267,7 +1267,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d81/classedash__packager_1_1MpdWriter.html b/docs/dc/d81/classedash__packager_1_1MpdWriter.html index 7d965c22a3..c6b33a9052 100644 --- a/docs/dc/d81/classedash__packager_1_1MpdWriter.html +++ b/docs/dc/d81/classedash__packager_1_1MpdWriter.html @@ -123,7 +123,7 @@ class MpdWriterTest diff --git a/docs/dc/d8a/classedash__packager_1_1media_1_1mp4_1_1KeyRotationFragmenter.html b/docs/dc/d8a/classedash__packager_1_1media_1_1mp4_1_1KeyRotationFragmenter.html index e2e64600e3..4008e2bc0b 100644 --- a/docs/dc/d8a/classedash__packager_1_1media_1_1mp4_1_1KeyRotationFragmenter.html +++ b/docs/dc/d8a/classedash__packager_1_1media_1_1mp4_1_1KeyRotationFragmenter.html @@ -295,7 +295,7 @@ void set_encryption_key diff --git a/docs/dc/dab/classedash__packager_1_1media_1_1mp2t_1_1Mp2tMediaParser.html b/docs/dc/dab/classedash__packager_1_1media_1_1mp2t_1_1Mp2tMediaParser.html index 63fe3ddb30..9d050dd130 100644 --- a/docs/dc/dab/classedash__packager_1_1media_1_1mp2t_1_1Mp2tMediaParser.html +++ b/docs/dc/dab/classedash__packager_1_1media_1_1mp2t_1_1Mp2tMediaParser.html @@ -256,7 +256,7 @@ track_id, const scoped_refptr
        diff --git a/docs/dc/db7/structedash__packager_1_1media_1_1mp4_1_1DecodingTimeToSample.html b/docs/dc/db7/structedash__packager_1_1media_1_1mp4_1_1DecodingTimeToSample.html index 3d9237a22c..db4a771ced 100644 --- a/docs/dc/db7/structedash__packager_1_1media_1_1mp4_1_1DecodingTimeToSample.html +++ b/docs/dc/db7/structedash__packager_1_1media_1_1mp4_1_1DecodingTimeToSample.html @@ -145,7 +145,7 @@ Additional Inherited Members

        Detailed Description

        -

        Definition at line 387 of file box_definitions.h.

        +

        Definition at line 385 of file box_definitions.h.

        Member Function Documentation

        @@ -171,7 +171,7 @@ Additional Inherited Members

        Implements edash_packager::media::mp4::Box.

        -

        Definition at line 650 of file box_definitions.cc.

        +

        Definition at line 635 of file box_definitions.cc.

        @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/dc/dbf/box__buffer_8h_source.html b/docs/dc/dbf/box__buffer_8h_source.html index 75b5c1bafd..b5c8aab717 100644 --- a/docs/dc/dbf/box__buffer_8h_source.html +++ b/docs/dc/dbf/box__buffer_8h_source.html @@ -294,7 +294,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/dc6/classedash__packager_1_1media_1_1mp4_1_1AACAudioSpecificConfig.html b/docs/dc/dc6/classedash__packager_1_1media_1_1mp4_1_1AACAudioSpecificConfig.html index 9c2fe56038..c8e33fa36f 100644 --- a/docs/dc/dc6/classedash__packager_1_1media_1_1mp4_1_1AACAudioSpecificConfig.html +++ b/docs/dc/dc6/classedash__packager_1_1media_1_1mp4_1_1AACAudioSpecificConfig.html @@ -313,7 +313,7 @@ static const size_t  diff --git a/docs/dc/dc8/classedash__packager_1_1media_1_1WebMWebVTTParser.html b/docs/dc/dc8/classedash__packager_1_1media_1_1WebMWebVTTParser.html index 995d7cda27..8719e384d1 100644 --- a/docs/dc/dc8/classedash__packager_1_1media_1_1WebMWebVTTParser.html +++ b/docs/dc/dc8/classedash__packager_1_1media_1_1WebMWebVTTParser.html @@ -111,7 +111,7 @@ static void  diff --git a/docs/dc/dd4/structedash__packager_1_1media_1_1mp4_1_1SampleToGroupEntry-members.html b/docs/dc/dd4/structedash__packager_1_1media_1_1mp4_1_1SampleToGroupEntry-members.html index 9bd30711c4..6d77c41162 100644 --- a/docs/dc/dd4/structedash__packager_1_1media_1_1mp4_1_1SampleToGroupEntry-members.html +++ b/docs/dc/dd4/structedash__packager_1_1media_1_1mp4_1_1SampleToGroupEntry-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/dd9/rsa__key_8cc_source.html b/docs/dc/dd9/rsa__key_8cc_source.html index 1d626a03dc..900fee3564 100644 --- a/docs/dc/dd9/rsa__key_8cc_source.html +++ b/docs/dc/dd9/rsa__key_8cc_source.html @@ -350,7 +350,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/ddf/classedash__packager_1_1media_1_1WebMInfoParser-members.html b/docs/dc/ddf/classedash__packager_1_1media_1_1WebMInfoParser-members.html index 8e67ce74fb..089cee9d26 100644 --- a/docs/dc/ddf/classedash__packager_1_1media_1_1WebMInfoParser-members.html +++ b/docs/dc/ddf/classedash__packager_1_1media_1_1WebMInfoParser-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/ddf/udp__file__posix_8cc_source.html b/docs/dc/ddf/udp__file__posix_8cc_source.html index 03b9cab727..a42ad211d4 100644 --- a/docs/dc/ddf/udp__file__posix_8cc_source.html +++ b/docs/dc/ddf/udp__file__posix_8cc_source.html @@ -322,7 +322,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/de1/classedash__packager_1_1media_1_1mp4_1_1Segmenter.html b/docs/dc/de1/classedash__packager_1_1media_1_1mp4_1_1Segmenter.html index 3be0c8dd2a..5401834c1e 100644 --- a/docs/dc/de1/classedash__packager_1_1media_1_1mp4_1_1Segmenter.html +++ b/docs/dc/de1/classedash__packager_1_1media_1_1mp4_1_1Segmenter.html @@ -423,7 +423,7 @@ void set_progress_target diff --git a/docs/dc/dec/ts__section__pmt_8cc_source.html b/docs/dc/dec/ts__section__pmt_8cc_source.html index c8544c3330..84ca9cab17 100644 --- a/docs/dc/dec/ts__section__pmt_8cc_source.html +++ b/docs/dc/dec/ts__section__pmt_8cc_source.html @@ -207,7 +207,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/def/structedash__packager_1_1media_1_1mp4_1_1DataInformation-members.html b/docs/dc/def/structedash__packager_1_1media_1_1mp4_1_1DataInformation-members.html index 70a120044b..83b76bd71b 100644 --- a/docs/dc/def/structedash__packager_1_1media_1_1mp4_1_1DataInformation-members.html +++ b/docs/dc/def/structedash__packager_1_1media_1_1mp4_1_1DataInformation-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/df1/classedash__packager_1_1media_1_1DecryptorSource.html b/docs/dc/df1/classedash__packager_1_1media_1_1DecryptorSource.html index 8fb5eeab39..aac0e37d1b 100644 --- a/docs/dc/df1/classedash__packager_1_1media_1_1DecryptorSource.html +++ b/docs/dc/df1/classedash__packager_1_1media_1_1DecryptorSource.html @@ -119,7 +119,7 @@ bool DecryptSampleBuffer diff --git a/docs/dc/df8/closure__thread_8h_source.html b/docs/dc/df8/closure__thread_8h_source.html index 252551c4b3..53d1e3490c 100644 --- a/docs/dc/df8/closure__thread_8h_source.html +++ b/docs/dc/df8/closure__thread_8h_source.html @@ -127,7 +127,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/dfa/classedash__packager_1_1media_1_1ThreadedIoFile.html b/docs/dc/dfa/classedash__packager_1_1media_1_1ThreadedIoFile.html index 7daccfd213..542af8233c 100644 --- a/docs/dc/dfa/classedash__packager_1_1media_1_1ThreadedIoFile.html +++ b/docs/dc/dfa/classedash__packager_1_1media_1_1ThreadedIoFile.html @@ -438,7 +438,7 @@ Additional Inherited Members diff --git a/docs/dc/dfc/classedash__packager_1_1media_1_1Muxer-members.html b/docs/dc/dfc/classedash__packager_1_1media_1_1Muxer-members.html index 173791023d..66c7dff97a 100644 --- a/docs/dc/dfc/classedash__packager_1_1media_1_1Muxer-members.html +++ b/docs/dc/dfc/classedash__packager_1_1media_1_1Muxer-members.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d0c/classedash__packager_1_1media_1_1SegmentTestBase_1_1ClusterParser-members.html b/docs/dd/d0c/classedash__packager_1_1media_1_1SegmentTestBase_1_1ClusterParser-members.html index 687ff66a7a..9be809a916 100644 --- a/docs/dd/d0c/classedash__packager_1_1media_1_1SegmentTestBase_1_1ClusterParser-members.html +++ b/docs/dd/d0c/classedash__packager_1_1media_1_1SegmentTestBase_1_1ClusterParser-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d0e/classedash__packager_1_1media_1_1mp2t_1_1EsParserH264.html b/docs/dd/d0e/classedash__packager_1_1media_1_1mp2t_1_1EsParserH264.html index c1f178164e..a6fd1cc6ad 100644 --- a/docs/dd/d0e/classedash__packager_1_1media_1_1mp2t_1_1EsParserH264.html +++ b/docs/dd/d0e/classedash__packager_1_1media_1_1mp2t_1_1EsParserH264.html @@ -149,7 +149,7 @@ const scoped_refptr
        diff --git a/docs/dd/d0e/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPat.html b/docs/dd/d0e/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPat.html index bc9096bacb..9e4c901141 100644 --- a/docs/dd/d0e/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPat.html +++ b/docs/dd/d0e/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPat.html @@ -155,7 +155,7 @@ void Reset () override diff --git a/docs/dd/d11/mpd__builder_8cc_source.html b/docs/dd/d11/mpd__builder_8cc_source.html index b040cbdbfe..b675de5c8b 100644 --- a/docs/dd/d11/mpd__builder_8cc_source.html +++ b/docs/dd/d11/mpd__builder_8cc_source.html @@ -1503,7 +1503,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d12/mpd__writer_8cc_source.html b/docs/dd/d12/mpd__writer_8cc_source.html index ddadaaa9a2..5850b983ca 100644 --- a/docs/dd/d12/mpd__writer_8cc_source.html +++ b/docs/dd/d12/mpd__writer_8cc_source.html @@ -224,7 +224,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d12/structedash__packager_1_1media_1_1mp4_1_1CueTimeBox.html b/docs/dd/d12/structedash__packager_1_1media_1_1mp4_1_1CueTimeBox.html index 15145462e5..205f73d9a2 100644 --- a/docs/dd/d12/structedash__packager_1_1media_1_1mp4_1_1CueTimeBox.html +++ b/docs/dd/d12/structedash__packager_1_1media_1_1mp4_1_1CueTimeBox.html @@ -136,7 +136,7 @@ Additional Inherited Members

        Detailed Description

        -

        Definition at line 743 of file box_definitions.h.

        +

        Definition at line 741 of file box_definitions.h.

        Member Function Documentation

        @@ -162,7 +162,7 @@ Additional Inherited Members

        Implements edash_packager::media::mp4::Box.

        -

        Definition at line 2440 of file box_definitions.cc.

        +

        Definition at line 2425 of file box_definitions.cc.

        @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/dd/d14/structedash__packager_1_1media_1_1mp4_1_1MovieHeader.html b/docs/dd/d14/structedash__packager_1_1media_1_1mp4_1_1MovieHeader.html index bf53024f27..7b8c92588b 100644 --- a/docs/dd/d14/structedash__packager_1_1media_1_1mp4_1_1MovieHeader.html +++ b/docs/dd/d14/structedash__packager_1_1media_1_1mp4_1_1MovieHeader.html @@ -163,7 +163,7 @@ Additional Inherited Members

        Detailed Description

        -

        Definition at line 169 of file box_definitions.h.

        +

        Definition at line 167 of file box_definitions.h.

        Member Function Documentation

        @@ -189,7 +189,7 @@ Additional Inherited Members

        Implements edash_packager::media::mp4::Box.

        -

        Definition at line 494 of file box_definitions.cc.

        +

        Definition at line 479 of file box_definitions.cc.

        @@ -200,7 +200,7 @@ Additional Inherited Members diff --git a/docs/dd/d15/structedash__packager_1_1media_1_1mp4_1_1TrackHeader.html b/docs/dd/d15/structedash__packager_1_1media_1_1mp4_1_1TrackHeader.html index 489e0f4cfe..35f776a3bc 100644 --- a/docs/dd/d15/structedash__packager_1_1media_1_1mp4_1_1TrackHeader.html +++ b/docs/dd/d15/structedash__packager_1_1media_1_1mp4_1_1TrackHeader.html @@ -178,7 +178,7 @@ Additional Inherited Members

        Detailed Description

        -

        Definition at line 181 of file box_definitions.h.

        +

        Definition at line 179 of file box_definitions.h.

        Member Function Documentation

        @@ -204,7 +204,7 @@ Additional Inherited Members

        Implements edash_packager::media::mp4::Box.

        -

        Definition at line 537 of file box_definitions.cc.

        +

        Definition at line 522 of file box_definitions.cc.

        @@ -215,7 +215,7 @@ Additional Inherited Members diff --git a/docs/dd/d18/es__parser__adts_8h_source.html b/docs/dd/d18/es__parser__adts_8h_source.html index 2a2f426a15..8937539ac6 100644 --- a/docs/dd/d18/es__parser__adts_8h_source.html +++ b/docs/dd/d18/es__parser__adts_8h_source.html @@ -172,7 +172,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d19/video__stream__info_8cc_source.html b/docs/dd/d19/video__stream__info_8cc_source.html index 0fe0aac759..9bc6dcfafc 100644 --- a/docs/dd/d19/video__stream__info_8cc_source.html +++ b/docs/dd/d19/video__stream__info_8cc_source.html @@ -197,7 +197,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d1a/classedash__packager_1_1media_1_1H264ByteToUnitStreamConverter-members.html b/docs/dd/d1a/classedash__packager_1_1media_1_1H264ByteToUnitStreamConverter-members.html index 8331af295b..974ac06910 100644 --- a/docs/dd/d1a/classedash__packager_1_1media_1_1H264ByteToUnitStreamConverter-members.html +++ b/docs/dd/d1a/classedash__packager_1_1media_1_1H264ByteToUnitStreamConverter-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d2b/classedash__packager_1_1media_1_1ClosureThread.html b/docs/dd/d2b/classedash__packager_1_1media_1_1ClosureThread.html index 3fce4c7980..75263382a5 100644 --- a/docs/dd/d2b/classedash__packager_1_1media_1_1ClosureThread.html +++ b/docs/dd/d2b/classedash__packager_1_1media_1_1ClosureThread.html @@ -179,7 +179,7 @@ void  diff --git a/docs/dd/d30/wvm__media__parser_8cc_source.html b/docs/dd/d30/wvm__media__parser_8cc_source.html index 9f901e38e3..67d04cbf31 100644 --- a/docs/dd/d30/wvm__media__parser_8cc_source.html +++ b/docs/dd/d30/wvm__media__parser_8cc_source.html @@ -1260,7 +1260,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d36/classedash__packager_1_1media_1_1MediaSample-members.html b/docs/dd/d36/classedash__packager_1_1media_1_1MediaSample-members.html index c1b9f9f2b8..39fc854015 100644 --- a/docs/dd/d36/classedash__packager_1_1media_1_1MediaSample-members.html +++ b/docs/dd/d36/classedash__packager_1_1media_1_1MediaSample-members.html @@ -123,7 +123,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d3b/mp4_2segmenter_8h_source.html b/docs/dd/d3b/mp4_2segmenter_8h_source.html index 75588cdea6..efe331a366 100644 --- a/docs/dd/d3b/mp4_2segmenter_8h_source.html +++ b/docs/dd/d3b/mp4_2segmenter_8h_source.html @@ -219,7 +219,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d42/encryptor_8h_source.html b/docs/dd/d42/encryptor_8h_source.html index 08661679fc..9fd43c29aa 100644 --- a/docs/dd/d42/encryptor_8h_source.html +++ b/docs/dd/d42/encryptor_8h_source.html @@ -151,7 +151,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d44/structedash__packager_1_1media_1_1mp4_1_1SegmentReference-members.html b/docs/dd/d44/structedash__packager_1_1media_1_1mp4_1_1SegmentReference-members.html index 51c6bb29df..4f9bbd5e00 100644 --- a/docs/dd/d44/structedash__packager_1_1media_1_1mp4_1_1SegmentReference-members.html +++ b/docs/dd/d44/structedash__packager_1_1media_1_1mp4_1_1SegmentReference-members.html @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d46/webm__parser_8h_source.html b/docs/dd/d46/webm__parser_8h_source.html index c7fb612bd6..352541cc7c 100644 --- a/docs/dd/d46/webm__parser_8h_source.html +++ b/docs/dd/d46/webm__parser_8h_source.html @@ -227,7 +227,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d47/classedash__packager_1_1media_1_1WebMInfoParser.html b/docs/dd/d47/classedash__packager_1_1media_1_1WebMInfoParser.html index 2ee570daa3..eaa45ae2a0 100644 --- a/docs/dd/d47/classedash__packager_1_1media_1_1WebMInfoParser.html +++ b/docs/dd/d47/classedash__packager_1_1media_1_1WebMInfoParser.html @@ -175,7 +175,7 @@ The number of bytes parsed on success. diff --git a/docs/dd/d4c/structedash__packager_1_1media_1_1mp4_1_1FullBox-members.html b/docs/dd/d4c/structedash__packager_1_1media_1_1mp4_1_1FullBox-members.html index 1af3824886..6d65cd280e 100644 --- a/docs/dd/d4c/structedash__packager_1_1media_1_1mp4_1_1FullBox-members.html +++ b/docs/dd/d4c/structedash__packager_1_1media_1_1mp4_1_1FullBox-members.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d4f/classedash__packager_1_1media_1_1mp4_1_1BoxBuffer.html b/docs/dd/d4f/classedash__packager_1_1media_1_1mp4_1_1BoxBuffer.html index 3d583c4e0a..ac2ffeb0e3 100644 --- a/docs/dd/d4f/classedash__packager_1_1media_1_1mp4_1_1BoxBuffer.html +++ b/docs/dd/d4f/classedash__packager_1_1media_1_1mp4_1_1BoxBuffer.html @@ -589,7 +589,7 @@ bool ReadWriteInt64 (i diff --git a/docs/dd/d54/widevine__encryption__flags_8h_source.html b/docs/dd/d54/widevine__encryption__flags_8h_source.html index 49c1e36be5..25d857abae 100644 --- a/docs/dd/d54/widevine__encryption__flags_8h_source.html +++ b/docs/dd/d54/widevine__encryption__flags_8h_source.html @@ -123,7 +123,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d5e/structedash__packager_1_1media_1_1mp4_1_1CuePayloadBox-members.html b/docs/dd/d5e/structedash__packager_1_1media_1_1mp4_1_1CuePayloadBox-members.html index d1430a751b..5a381348ac 100644 --- a/docs/dd/d5e/structedash__packager_1_1media_1_1mp4_1_1CuePayloadBox-members.html +++ b/docs/dd/d5e/structedash__packager_1_1media_1_1mp4_1_1CuePayloadBox-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d60/structedash__packager_1_1media_1_1mp4_1_1VTTEmptyCueBox-members.html b/docs/dd/d60/structedash__packager_1_1media_1_1mp4_1_1VTTEmptyCueBox-members.html index b616937130..3331a1fe19 100644 --- a/docs/dd/d60/structedash__packager_1_1media_1_1mp4_1_1VTTEmptyCueBox-members.html +++ b/docs/dd/d60/structedash__packager_1_1media_1_1mp4_1_1VTTEmptyCueBox-members.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d65/vp8__parser_8h_source.html b/docs/dd/d65/vp8__parser_8h_source.html index dbf0481cc0..eeb722a4ae 100644 --- a/docs/dd/d65/vp8__parser_8h_source.html +++ b/docs/dd/d65/vp8__parser_8h_source.html @@ -136,7 +136,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d67/h264__byte__to__unit__stream__converter_8cc_source.html b/docs/dd/d67/h264__byte__to__unit__stream__converter_8cc_source.html index 88dbfbcd1d..5c9293e684 100644 --- a/docs/dd/d67/h264__byte__to__unit__stream__converter_8cc_source.html +++ b/docs/dd/d67/h264__byte__to__unit__stream__converter_8cc_source.html @@ -215,7 +215,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d79/classedash__packager_1_1media_1_1AesCtrEncryptor.html b/docs/dd/d79/classedash__packager_1_1media_1_1AesCtrEncryptor.html index 35244bc189..b8f0e184e6 100644 --- a/docs/dd/d79/classedash__packager_1_1media_1_1AesCtrEncryptor.html +++ b/docs/dd/d79/classedash__packager_1_1media_1_1AesCtrEncryptor.html @@ -255,7 +255,7 @@ bool Encrypt (const st diff --git a/docs/dd/d7d/structedash__packager_1_1media_1_1mp4_1_1TextSampleEntry.html b/docs/dd/d7d/structedash__packager_1_1media_1_1mp4_1_1TextSampleEntry.html index 2204153a2b..99e5659ded 100644 --- a/docs/dd/d7d/structedash__packager_1_1media_1_1mp4_1_1TextSampleEntry.html +++ b/docs/dd/d7d/structedash__packager_1_1media_1_1mp4_1_1TextSampleEntry.html @@ -145,7 +145,7 @@ Additional Inherited Members

        Detailed Description

        -

        Definition at line 355 of file box_definitions.h.

        +

        Definition at line 353 of file box_definitions.h.

        Member Function Documentation

        @@ -171,7 +171,7 @@ Additional Inherited Members

        Implements edash_packager::media::mp4::Box.

        -

        Definition at line 1569 of file box_definitions.cc.

        +

        Definition at line 1554 of file box_definitions.cc.

        @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/dd/d7f/classedash__packager_1_1media_1_1DecoderConfiguration-members.html b/docs/dd/d7f/classedash__packager_1_1media_1_1DecoderConfiguration-members.html index a6525921d3..0fad13fcfb 100644 --- a/docs/dd/d7f/classedash__packager_1_1media_1_1DecoderConfiguration-members.html +++ b/docs/dd/d7f/classedash__packager_1_1media_1_1DecoderConfiguration-members.html @@ -107,7 +107,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d80/media__sample_8h_source.html b/docs/dd/d80/media__sample_8h_source.html index b7d286c70d..ea1b21e5ea 100644 --- a/docs/dd/d80/media__sample_8h_source.html +++ b/docs/dd/d80/media__sample_8h_source.html @@ -260,7 +260,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d85/classedash__packager_1_1xml_1_1XmlNode.html b/docs/dd/d85/classedash__packager_1_1xml_1_1XmlNode.html index 521cfad7c2..5b72f6fe08 100644 --- a/docs/dd/d85/classedash__packager_1_1xml_1_1XmlNode.html +++ b/docs/dd/d85/classedash__packager_1_1xml_1_1XmlNode.html @@ -419,7 +419,7 @@ bool  diff --git a/docs/dd/d85/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentHeader-members.html b/docs/dd/d85/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentHeader-members.html index 5b9419cfe2..75b1eda519 100644 --- a/docs/dd/d85/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentHeader-members.html +++ b/docs/dd/d85/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentHeader-members.html @@ -133,7 +133,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d87/memory__file_8cc_source.html b/docs/dd/d87/memory__file_8cc_source.html index 7e71496783..cd725f8db1 100644 --- a/docs/dd/d87/memory__file_8cc_source.html +++ b/docs/dd/d87/memory__file_8cc_source.html @@ -241,7 +241,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d8c/file__test__util_8h_source.html b/docs/dd/d8c/file__test__util_8h_source.html index cc43446cec..dead0d6e1d 100644 --- a/docs/dd/d8c/file__test__util_8h_source.html +++ b/docs/dd/d8c/file__test__util_8h_source.html @@ -119,7 +119,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d8e/classedash__packager_1_1media_1_1mp4_1_1KeyRotationFragmenter-members.html b/docs/dd/d8e/classedash__packager_1_1media_1_1mp4_1_1KeyRotationFragmenter-members.html index df85f7e127..9414915aa3 100644 --- a/docs/dd/d8e/classedash__packager_1_1media_1_1mp4_1_1KeyRotationFragmenter-members.html +++ b/docs/dd/d8e/classedash__packager_1_1media_1_1mp4_1_1KeyRotationFragmenter-members.html @@ -120,7 +120,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d96/classedash__packager_1_1media_1_1AesCbcCtsDecryptor.html b/docs/dd/d96/classedash__packager_1_1media_1_1AesCbcCtsDecryptor.html index 002c0ab805..0295e53421 100644 --- a/docs/dd/d96/classedash__packager_1_1media_1_1AesCbcCtsDecryptor.html +++ b/docs/dd/d96/classedash__packager_1_1media_1_1AesCbcCtsDecryptor.html @@ -252,7 +252,7 @@ const std::vector< uint8_t > &  diff --git a/docs/dd/d98/classedash__packager_1_1media_1_1LocalFile.html b/docs/dd/d98/classedash__packager_1_1media_1_1LocalFile.html index c59249c2ea..87134b235b 100644 --- a/docs/dd/d98/classedash__packager_1_1media_1_1LocalFile.html +++ b/docs/dd/d98/classedash__packager_1_1media_1_1LocalFile.html @@ -502,7 +502,7 @@ bool  diff --git a/docs/dd/d99/classedash__packager_1_1media_1_1WebMMediaParser.html b/docs/dd/d99/classedash__packager_1_1media_1_1WebMMediaParser.html index 1168ffb275..da55ecd39a 100644 --- a/docs/dd/d99/classedash__packager_1_1media_1_1WebMMediaParser.html +++ b/docs/dd/d99/classedash__packager_1_1media_1_1WebMMediaParser.html @@ -256,7 +256,7 @@ track_id, const scoped_refptr
        diff --git a/docs/dd/d9a/audio__timestamp__helper_8h_source.html b/docs/dd/d9a/audio__timestamp__helper_8h_source.html index ecee1a6610..7c60c72574 100644 --- a/docs/dd/d9a/audio__timestamp__helper_8h_source.html +++ b/docs/dd/d9a/audio__timestamp__helper_8h_source.html @@ -167,7 +167,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/da2/structedash__packager_1_1media_1_1mp4_1_1MovieFragment.html b/docs/dd/da2/structedash__packager_1_1media_1_1mp4_1_1MovieFragment.html index f89d7fff9f..0b8f31222c 100644 --- a/docs/dd/da2/structedash__packager_1_1media_1_1mp4_1_1MovieFragment.html +++ b/docs/dd/da2/structedash__packager_1_1media_1_1mp4_1_1MovieFragment.html @@ -143,7 +143,7 @@ Additional Inherited Members

        Detailed Description

        -

        Definition at line 691 of file box_definitions.h.

        +

        Definition at line 689 of file box_definitions.h.

        Member Function Documentation

        @@ -169,7 +169,7 @@ Additional Inherited Members

        Implements edash_packager::media::mp4::Box.

        -

        Definition at line 2323 of file box_definitions.cc.

        +

        Definition at line 2308 of file box_definitions.cc.

        @@ -180,7 +180,7 @@ Additional Inherited Members diff --git a/docs/dd/da6/structedash__packager_1_1media_1_1mp4_1_1SegmentType.html b/docs/dd/da6/structedash__packager_1_1media_1_1mp4_1_1SegmentType.html index 53cba0f39d..1f14ddb49c 100644 --- a/docs/dd/da6/structedash__packager_1_1media_1_1mp4_1_1SegmentType.html +++ b/docs/dd/da6/structedash__packager_1_1media_1_1mp4_1_1SegmentType.html @@ -177,7 +177,7 @@ std::vector< FourCC > < diff --git a/docs/dd/da8/classedash__packager_1_1media_1_1RsaRequestSigner.html b/docs/dd/da8/classedash__packager_1_1media_1_1RsaRequestSigner.html index 78be2587d5..ddc7d4be36 100644 --- a/docs/dd/da8/classedash__packager_1_1media_1_1RsaRequestSigner.html +++ b/docs/dd/da8/classedash__packager_1_1media_1_1RsaRequestSigner.html @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/dd/daa/vod__media__info__dump__muxer__listener_8h_source.html b/docs/dd/daa/vod__media__info__dump__muxer__listener_8h_source.html index 50e2084aca..8875bd1e22 100644 --- a/docs/dd/daa/vod__media__info__dump__muxer__listener_8h_source.html +++ b/docs/dd/daa/vod__media__info__dump__muxer__listener_8h_source.html @@ -178,7 +178,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/dab/structedash__packager_1_1media_1_1mp4_1_1SampleToGroupEntry.html b/docs/dd/dab/structedash__packager_1_1media_1_1mp4_1_1SampleToGroupEntry.html index 8694c71a21..06457e3694 100644 --- a/docs/dd/dab/structedash__packager_1_1media_1_1mp4_1_1SampleToGroupEntry.html +++ b/docs/dd/dab/structedash__packager_1_1media_1_1mp4_1_1SampleToGroupEntry.html @@ -113,14 +113,14 @@ uint32_t group_description

        Detailed Description

        -

        Definition at line 643 of file box_definitions.h.

        +

        Definition at line 641 of file box_definitions.h.


        The documentation for this struct was generated from the following file: diff --git a/docs/dd/dab/webm__muxer_8h_source.html b/docs/dd/dab/webm__muxer_8h_source.html index 0d087fb9f5..8893a22e87 100644 --- a/docs/dd/dab/webm__muxer_8h_source.html +++ b/docs/dd/dab/webm__muxer_8h_source.html @@ -138,7 +138,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/dad/classedash__packager_1_1media_1_1WebMParserClient-members.html b/docs/dd/dad/classedash__packager_1_1media_1_1WebMParserClient-members.html index afd88b4c7c..9ed99d7513 100644 --- a/docs/dd/dad/classedash__packager_1_1media_1_1WebMParserClient-members.html +++ b/docs/dd/dad/classedash__packager_1_1media_1_1WebMParserClient-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/dbc/buffer__reader_8cc_source.html b/docs/dd/dbc/buffer__reader_8cc_source.html index 66064ba9b1..5530c467d3 100644 --- a/docs/dd/dbc/buffer__reader_8cc_source.html +++ b/docs/dd/dbc/buffer__reader_8cc_source.html @@ -196,7 +196,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/dbd/classedash__packager_1_1media_1_1AesCtrEncryptor-members.html b/docs/dd/dbd/classedash__packager_1_1media_1_1AesCtrEncryptor-members.html index 2e2fe3d812..7b1e786706 100644 --- a/docs/dd/dbd/classedash__packager_1_1media_1_1AesCtrEncryptor-members.html +++ b/docs/dd/dbd/classedash__packager_1_1media_1_1AesCtrEncryptor-members.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/dbd/structedash__packager_1_1media_1_1mp4_1_1MediaInformation.html b/docs/dd/dbd/structedash__packager_1_1media_1_1mp4_1_1MediaInformation.html index c97decfd36..9139a3caa7 100644 --- a/docs/dd/dbd/structedash__packager_1_1media_1_1mp4_1_1MediaInformation.html +++ b/docs/dd/dbd/structedash__packager_1_1media_1_1mp4_1_1MediaInformation.html @@ -148,7 +148,7 @@ Additional Inherited Members

        Detailed Description

        -

        Definition at line 520 of file box_definitions.h.

        +

        Definition at line 518 of file box_definitions.h.

        Member Function Documentation

        @@ -174,7 +174,7 @@ Additional Inherited Members

        Implements edash_packager::media::mp4::Box.

        -

        Definition at line 1736 of file box_definitions.cc.

        +

        Definition at line 1721 of file box_definitions.cc.

        @@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/dd/dbf/classedash__packager_1_1MpdNotifier-members.html b/docs/dd/dbf/classedash__packager_1_1MpdNotifier-members.html index eff9f5abc8..95dd9380ac 100644 --- a/docs/dd/dbf/classedash__packager_1_1MpdNotifier-members.html +++ b/docs/dd/dbf/classedash__packager_1_1MpdNotifier-members.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/dbf/webm__webvtt__parser_8h_source.html b/docs/dd/dbf/webm__webvtt__parser_8h_source.html index 5075db99a2..14b697ad0b 100644 --- a/docs/dd/dbf/webm__webvtt__parser_8h_source.html +++ b/docs/dd/dbf/webm__webvtt__parser_8h_source.html @@ -144,7 +144,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/dc9/structedash__packager_1_1media_1_1mp4_1_1ProtectionSchemeInfo.html b/docs/dd/dc9/structedash__packager_1_1media_1_1mp4_1_1ProtectionSchemeInfo.html index 74990c2e55..e2dde14e2e 100644 --- a/docs/dd/dc9/structedash__packager_1_1media_1_1mp4_1_1ProtectionSchemeInfo.html +++ b/docs/dd/dc9/structedash__packager_1_1media_1_1mp4_1_1ProtectionSchemeInfo.html @@ -142,7 +142,7 @@ Additional Inherited Members

        Detailed Description

        -

        Definition at line 161 of file box_definitions.h.

        +

        Definition at line 159 of file box_definitions.h.

        Member Function Documentation

        @@ -168,7 +168,7 @@ Additional Inherited Members

        Implements edash_packager::media::mp4::Box.

        -

        Definition at line 461 of file box_definitions.cc.

        +

        Definition at line 446 of file box_definitions.cc.

        @@ -179,7 +179,7 @@ Additional Inherited Members diff --git a/docs/dd/dcb/classedash__packager_1_1MpdNotifierFactory.html b/docs/dd/dcb/classedash__packager_1_1MpdNotifierFactory.html index fca8c82897..f2b3192dba 100644 --- a/docs/dd/dcb/classedash__packager_1_1MpdNotifierFactory.html +++ b/docs/dd/dcb/classedash__packager_1_1MpdNotifierFactory.html @@ -112,7 +112,7 @@ virtual scoped_ptr< diff --git a/docs/dd/dcf/structedash__packager_1_1media_1_1H264PPS.html b/docs/dd/dcf/structedash__packager_1_1media_1_1H264PPS.html index 8a9f2b3b1e..4654532ae0 100644 --- a/docs/dd/dcf/structedash__packager_1_1media_1_1H264PPS.html +++ b/docs/dd/dcf/structedash__packager_1_1media_1_1H264PPS.html @@ -167,7 +167,7 @@ int second_chroma_qp_index diff --git a/docs/dd/dd2/buffer__writer_8h_source.html b/docs/dd/dd2/buffer__writer_8h_source.html index 17ca59a91d..899a9be00b 100644 --- a/docs/dd/dd2/buffer__writer_8h_source.html +++ b/docs/dd/dd2/buffer__writer_8h_source.html @@ -159,7 +159,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/dd3/buffer__writer_8cc_source.html b/docs/dd/dd3/buffer__writer_8cc_source.html index eb75c286e2..41b743d9c6 100644 --- a/docs/dd/dd3/buffer__writer_8cc_source.html +++ b/docs/dd/dd3/buffer__writer_8cc_source.html @@ -187,7 +187,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/ddb/classedash__packager_1_1media_1_1mp4_1_1VideoSliceHeaderParser-members.html b/docs/dd/ddb/classedash__packager_1_1media_1_1mp4_1_1VideoSliceHeaderParser-members.html index aa6832e41c..fd7ab109ab 100644 --- a/docs/dd/ddb/classedash__packager_1_1media_1_1mp4_1_1VideoSliceHeaderParser-members.html +++ b/docs/dd/ddb/classedash__packager_1_1media_1_1mp4_1_1VideoSliceHeaderParser-members.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/de7/xml__node_8h_source.html b/docs/dd/de7/xml__node_8h_source.html index 317c77332b..f141c2a590 100644 --- a/docs/dd/de7/xml__node_8h_source.html +++ b/docs/dd/de7/xml__node_8h_source.html @@ -230,7 +230,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/dec/structedash__packager_1_1media_1_1OnMediaEndParameters-members.html b/docs/dd/dec/structedash__packager_1_1media_1_1OnMediaEndParameters-members.html index d1d0cc4d62..7f391ba4c0 100644 --- a/docs/dd/dec/structedash__packager_1_1media_1_1OnMediaEndParameters-members.html +++ b/docs/dd/dec/structedash__packager_1_1media_1_1OnMediaEndParameters-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/dee/box__definitions_8cc_source.html b/docs/dd/dee/box__definitions_8cc_source.html index f16e9eb375..872d385e08 100644 --- a/docs/dd/dee/box__definitions_8cc_source.html +++ b/docs/dd/dee/box__definitions_8cc_source.html @@ -247,2526 +247,2511 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
        158 FourCC ProtectionSystemSpecificHeader::BoxType() const { return FOURCC_PSSH; }
        159 
        160 bool ProtectionSystemSpecificHeader::ReadWriteInternal(BoxBuffer* buffer) {
        -
        161  if (!buffer->Reading() && !raw_box.empty()) {
        -
        162  // Write the raw box directly.
        -
        163  buffer->writer()->AppendVector(raw_box);
        -
        164  return true;
        -
        165  }
        -
        166 
        -
        167  uint32_t size = data.size();
        -
        168  RCHECK(ReadWriteHeaderInternal(buffer) &&
        -
        169  buffer->ReadWriteVector(&system_id, 16) &&
        -
        170  buffer->ReadWriteUInt32(&size) &&
        -
        171  buffer->ReadWriteVector(&data, size));
        +
        161  if (buffer->Reading()) {
        +
        162  BoxReader* reader = buffer->reader();
        +
        163  DCHECK(reader);
        +
        164  raw_box.assign(reader->data(), reader->data() + reader->size());
        +
        165  } else {
        +
        166  DCHECK(!raw_box.empty());
        +
        167  buffer->writer()->AppendVector(raw_box);
        +
        168  }
        +
        169 
        +
        170  return true;
        +
        171 }
        172 
        -
        173  if (buffer->Reading()) {
        -
        174  // Copy the entire box, including the header, for passing to EME as
        -
        175  // initData.
        -
        176  DCHECK(raw_box.empty());
        -
        177  BoxReader* reader = buffer->reader();
        -
        178  DCHECK(reader);
        -
        179  raw_box.assign(reader->data(), reader->data() + reader->size());
        -
        180  }
        -
        181  return true;
        -
        182 }
        -
        183 
        -
        184 uint32_t ProtectionSystemSpecificHeader::ComputeSizeInternal() {
        -
        185  if (!raw_box.empty()) {
        -
        186  return raw_box.size();
        -
        187  } else {
        -
        188  return HeaderSize() + system_id.size() + sizeof(uint32_t) + data.size();
        -
        189  }
        -
        190 }
        -
        191 
        -
        192 SampleAuxiliaryInformationOffset::SampleAuxiliaryInformationOffset() {}
        -
        193 SampleAuxiliaryInformationOffset::~SampleAuxiliaryInformationOffset() {}
        -
        194 FourCC SampleAuxiliaryInformationOffset::BoxType() const { return FOURCC_SAIO; }
        +
        173 uint32_t ProtectionSystemSpecificHeader::ComputeSizeInternal() {
        +
        174  return raw_box.size();
        +
        175 }
        +
        176 
        +
        177 SampleAuxiliaryInformationOffset::SampleAuxiliaryInformationOffset() {}
        +
        178 SampleAuxiliaryInformationOffset::~SampleAuxiliaryInformationOffset() {}
        +
        179 FourCC SampleAuxiliaryInformationOffset::BoxType() const { return FOURCC_SAIO; }
        +
        180 
        +
        181 bool SampleAuxiliaryInformationOffset::ReadWriteInternal(BoxBuffer* buffer) {
        +
        182  RCHECK(ReadWriteHeaderInternal(buffer));
        +
        183  if (flags & 1)
        +
        184  RCHECK(buffer->IgnoreBytes(8)); // aux_info_type and parameter.
        +
        185 
        +
        186  uint32_t count = offsets.size();
        +
        187  RCHECK(buffer->ReadWriteUInt32(&count));
        +
        188  offsets.resize(count);
        +
        189 
        +
        190  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
        +
        191  for (uint32_t i = 0; i < count; ++i)
        +
        192  RCHECK(buffer->ReadWriteUInt64NBytes(&offsets[i], num_bytes));
        +
        193  return true;
        +
        194 }
        195 
        -
        196 bool SampleAuxiliaryInformationOffset::ReadWriteInternal(BoxBuffer* buffer) {
        -
        197  RCHECK(ReadWriteHeaderInternal(buffer));
        -
        198  if (flags & 1)
        -
        199  RCHECK(buffer->IgnoreBytes(8)); // aux_info_type and parameter.
        -
        200 
        -
        201  uint32_t count = offsets.size();
        -
        202  RCHECK(buffer->ReadWriteUInt32(&count));
        -
        203  offsets.resize(count);
        -
        204 
        -
        205  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
        -
        206  for (uint32_t i = 0; i < count; ++i)
        -
        207  RCHECK(buffer->ReadWriteUInt64NBytes(&offsets[i], num_bytes));
        -
        208  return true;
        -
        209 }
        -
        210 
        -
        211 uint32_t SampleAuxiliaryInformationOffset::ComputeSizeInternal() {
        -
        212  // This box is optional. Skip it if it is empty.
        -
        213  if (offsets.size() == 0)
        -
        214  return 0;
        -
        215  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
        -
        216  return HeaderSize() + sizeof(uint32_t) + num_bytes * offsets.size();
        -
        217 }
        -
        218 
        -
        219 SampleAuxiliaryInformationSize::SampleAuxiliaryInformationSize()
        -
        220  : default_sample_info_size(0), sample_count(0) {}
        -
        221 SampleAuxiliaryInformationSize::~SampleAuxiliaryInformationSize() {}
        -
        222 FourCC SampleAuxiliaryInformationSize::BoxType() const { return FOURCC_SAIZ; }
        -
        223 
        -
        224 bool SampleAuxiliaryInformationSize::ReadWriteInternal(BoxBuffer* buffer) {
        -
        225  RCHECK(ReadWriteHeaderInternal(buffer));
        -
        226  if (flags & 1)
        -
        227  RCHECK(buffer->IgnoreBytes(8));
        -
        228 
        -
        229  RCHECK(buffer->ReadWriteUInt8(&default_sample_info_size) &&
        -
        230  buffer->ReadWriteUInt32(&sample_count));
        -
        231  if (default_sample_info_size == 0)
        -
        232  RCHECK(buffer->ReadWriteVector(&sample_info_sizes, sample_count));
        -
        233  return true;
        -
        234 }
        -
        235 
        -
        236 uint32_t SampleAuxiliaryInformationSize::ComputeSizeInternal() {
        -
        237  // This box is optional. Skip it if it is empty.
        -
        238  if (sample_count == 0)
        -
        239  return 0;
        -
        240  return HeaderSize() + sizeof(default_sample_info_size) +
        -
        241  sizeof(sample_count) +
        -
        242  (default_sample_info_size == 0 ? sample_info_sizes.size() : 0);
        -
        243 }
        -
        244 
        -
        245 SampleEncryptionEntry::SampleEncryptionEntry() {}
        -
        246 SampleEncryptionEntry::~SampleEncryptionEntry() {}
        -
        247 
        -
        248 bool SampleEncryptionEntry::ReadWrite(uint8_t iv_size,
        -
        249  bool has_subsamples,
        -
        250  BoxBuffer* buffer) {
        -
        251  DCHECK(IsIvSizeValid(iv_size));
        -
        252  DCHECK(buffer);
        -
        253 
        -
        254  RCHECK(buffer->ReadWriteVector(&initialization_vector, iv_size));
        -
        255 
        -
        256  if (!has_subsamples) {
        -
        257  subsamples.clear();
        -
        258  return true;
        -
        259  }
        -
        260 
        -
        261  uint16_t subsample_count = subsamples.size();
        -
        262  RCHECK(buffer->ReadWriteUInt16(&subsample_count));
        -
        263  RCHECK(subsample_count > 0);
        -
        264  subsamples.resize(subsample_count);
        -
        265  for (auto& subsample : subsamples) {
        -
        266  RCHECK(buffer->ReadWriteUInt16(&subsample.clear_bytes) &&
        -
        267  buffer->ReadWriteUInt32(&subsample.cipher_bytes));
        -
        268  }
        -
        269  return true;
        -
        270 }
        -
        271 
        - -
        273  bool has_subsamples,
        -
        274  BufferReader* reader) {
        -
        275  DCHECK(IsIvSizeValid(iv_size));
        -
        276  DCHECK(reader);
        -
        277 
        -
        278  initialization_vector.resize(iv_size);
        -
        279  RCHECK(reader->ReadToVector(&initialization_vector, iv_size));
        -
        280 
        -
        281  if (!has_subsamples) {
        -
        282  subsamples.clear();
        -
        283  return true;
        -
        284  }
        -
        285 
        -
        286  uint16_t subsample_count;
        -
        287  RCHECK(reader->Read2(&subsample_count));
        -
        288  RCHECK(subsample_count > 0);
        -
        289  subsamples.resize(subsample_count);
        -
        290  for (auto& subsample : subsamples) {
        -
        291  RCHECK(reader->Read2(&subsample.clear_bytes) &&
        -
        292  reader->Read4(&subsample.cipher_bytes));
        -
        293  }
        -
        294  return true;
        -
        295 }
        -
        296 
        - -
        298  const uint32_t subsample_entry_size = sizeof(uint16_t) + sizeof(uint32_t);
        -
        299  const uint16_t subsample_count = subsamples.size();
        -
        300  return initialization_vector.size() +
        -
        301  (subsample_count > 0 ? (sizeof(subsample_count) +
        -
        302  subsample_entry_size * subsample_count)
        -
        303  : 0);
        -
        304 }
        -
        305 
        - -
        307  uint32_t size = 0;
        -
        308  for (uint32_t i = 0; i < subsamples.size(); ++i)
        -
        309  size += subsamples[i].clear_bytes + subsamples[i].cipher_bytes;
        -
        310  return size;
        -
        311 }
        +
        196 uint32_t SampleAuxiliaryInformationOffset::ComputeSizeInternal() {
        +
        197  // This box is optional. Skip it if it is empty.
        +
        198  if (offsets.size() == 0)
        +
        199  return 0;
        +
        200  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
        +
        201  return HeaderSize() + sizeof(uint32_t) + num_bytes * offsets.size();
        +
        202 }
        +
        203 
        +
        204 SampleAuxiliaryInformationSize::SampleAuxiliaryInformationSize()
        +
        205  : default_sample_info_size(0), sample_count(0) {}
        +
        206 SampleAuxiliaryInformationSize::~SampleAuxiliaryInformationSize() {}
        +
        207 FourCC SampleAuxiliaryInformationSize::BoxType() const { return FOURCC_SAIZ; }
        +
        208 
        +
        209 bool SampleAuxiliaryInformationSize::ReadWriteInternal(BoxBuffer* buffer) {
        +
        210  RCHECK(ReadWriteHeaderInternal(buffer));
        +
        211  if (flags & 1)
        +
        212  RCHECK(buffer->IgnoreBytes(8));
        +
        213 
        +
        214  RCHECK(buffer->ReadWriteUInt8(&default_sample_info_size) &&
        +
        215  buffer->ReadWriteUInt32(&sample_count));
        +
        216  if (default_sample_info_size == 0)
        +
        217  RCHECK(buffer->ReadWriteVector(&sample_info_sizes, sample_count));
        +
        218  return true;
        +
        219 }
        +
        220 
        +
        221 uint32_t SampleAuxiliaryInformationSize::ComputeSizeInternal() {
        +
        222  // This box is optional. Skip it if it is empty.
        +
        223  if (sample_count == 0)
        +
        224  return 0;
        +
        225  return HeaderSize() + sizeof(default_sample_info_size) +
        +
        226  sizeof(sample_count) +
        +
        227  (default_sample_info_size == 0 ? sample_info_sizes.size() : 0);
        +
        228 }
        +
        229 
        +
        230 SampleEncryptionEntry::SampleEncryptionEntry() {}
        +
        231 SampleEncryptionEntry::~SampleEncryptionEntry() {}
        +
        232 
        +
        233 bool SampleEncryptionEntry::ReadWrite(uint8_t iv_size,
        +
        234  bool has_subsamples,
        +
        235  BoxBuffer* buffer) {
        +
        236  DCHECK(IsIvSizeValid(iv_size));
        +
        237  DCHECK(buffer);
        +
        238 
        +
        239  RCHECK(buffer->ReadWriteVector(&initialization_vector, iv_size));
        +
        240 
        +
        241  if (!has_subsamples) {
        +
        242  subsamples.clear();
        +
        243  return true;
        +
        244  }
        +
        245 
        +
        246  uint16_t subsample_count = subsamples.size();
        +
        247  RCHECK(buffer->ReadWriteUInt16(&subsample_count));
        +
        248  RCHECK(subsample_count > 0);
        +
        249  subsamples.resize(subsample_count);
        +
        250  for (auto& subsample : subsamples) {
        +
        251  RCHECK(buffer->ReadWriteUInt16(&subsample.clear_bytes) &&
        +
        252  buffer->ReadWriteUInt32(&subsample.cipher_bytes));
        +
        253  }
        +
        254  return true;
        +
        255 }
        +
        256 
        + +
        258  bool has_subsamples,
        +
        259  BufferReader* reader) {
        +
        260  DCHECK(IsIvSizeValid(iv_size));
        +
        261  DCHECK(reader);
        +
        262 
        +
        263  initialization_vector.resize(iv_size);
        +
        264  RCHECK(reader->ReadToVector(&initialization_vector, iv_size));
        +
        265 
        +
        266  if (!has_subsamples) {
        +
        267  subsamples.clear();
        +
        268  return true;
        +
        269  }
        +
        270 
        +
        271  uint16_t subsample_count;
        +
        272  RCHECK(reader->Read2(&subsample_count));
        +
        273  RCHECK(subsample_count > 0);
        +
        274  subsamples.resize(subsample_count);
        +
        275  for (auto& subsample : subsamples) {
        +
        276  RCHECK(reader->Read2(&subsample.clear_bytes) &&
        +
        277  reader->Read4(&subsample.cipher_bytes));
        +
        278  }
        +
        279  return true;
        +
        280 }
        +
        281 
        + +
        283  const uint32_t subsample_entry_size = sizeof(uint16_t) + sizeof(uint32_t);
        +
        284  const uint16_t subsample_count = subsamples.size();
        +
        285  return initialization_vector.size() +
        +
        286  (subsample_count > 0 ? (sizeof(subsample_count) +
        +
        287  subsample_entry_size * subsample_count)
        +
        288  : 0);
        +
        289 }
        +
        290 
        + +
        292  uint32_t size = 0;
        +
        293  for (uint32_t i = 0; i < subsamples.size(); ++i)
        +
        294  size += subsamples[i].clear_bytes + subsamples[i].cipher_bytes;
        +
        295  return size;
        +
        296 }
        +
        297 
        +
        298 SampleEncryption::SampleEncryption() : iv_size(0) {}
        +
        299 SampleEncryption::~SampleEncryption() {}
        +
        300 FourCC SampleEncryption::BoxType() const { return FOURCC_SENC; }
        +
        301 
        +
        302 bool SampleEncryption::ReadWriteInternal(BoxBuffer* buffer) {
        +
        303  RCHECK(ReadWriteHeaderInternal(buffer));
        +
        304 
        +
        305  // If we don't know |iv_size|, store sample encryption data to parse later
        +
        306  // after we know iv_size.
        +
        307  if (buffer->Reading() && iv_size == 0) {
        +
        308  RCHECK(
        +
        309  buffer->ReadWriteVector(&sample_encryption_data, buffer->BytesLeft()));
        +
        310  return true;
        +
        311  }
        312 
        -
        313 SampleEncryption::SampleEncryption() : iv_size(0) {}
        -
        314 SampleEncryption::~SampleEncryption() {}
        -
        315 FourCC SampleEncryption::BoxType() const { return FOURCC_SENC; }
        -
        316 
        -
        317 bool SampleEncryption::ReadWriteInternal(BoxBuffer* buffer) {
        -
        318  RCHECK(ReadWriteHeaderInternal(buffer));
        -
        319 
        -
        320  // If we don't know |iv_size|, store sample encryption data to parse later
        -
        321  // after we know iv_size.
        -
        322  if (buffer->Reading() && iv_size == 0) {
        -
        323  RCHECK(
        -
        324  buffer->ReadWriteVector(&sample_encryption_data, buffer->BytesLeft()));
        -
        325  return true;
        -
        326  }
        -
        327 
        -
        328  if (!IsIvSizeValid(iv_size)) {
        -
        329  LOG(ERROR) << "IV_size can only be 8 or 16, but seeing " << iv_size;
        -
        330  return false;
        -
        331  }
        -
        332 
        -
        333  uint32_t sample_count = sample_encryption_entries.size();
        -
        334  RCHECK(buffer->ReadWriteUInt32(&sample_count));
        +
        313  if (!IsIvSizeValid(iv_size)) {
        +
        314  LOG(ERROR) << "IV_size can only be 8 or 16, but seeing " << iv_size;
        +
        315  return false;
        +
        316  }
        +
        317 
        +
        318  uint32_t sample_count = sample_encryption_entries.size();
        +
        319  RCHECK(buffer->ReadWriteUInt32(&sample_count));
        +
        320 
        +
        321  sample_encryption_entries.resize(sample_count);
        +
        322  for (auto& sample_encryption_entry : sample_encryption_entries) {
        +
        323  RCHECK(sample_encryption_entry.ReadWrite(
        +
        324  iv_size, flags & kUseSubsampleEncryption, buffer));
        +
        325  }
        +
        326  return true;
        +
        327 }
        +
        328 
        +
        329 uint32_t SampleEncryption::ComputeSizeInternal() {
        +
        330  const uint32_t sample_count = sample_encryption_entries.size();
        +
        331  if (sample_count == 0) {
        +
        332  // Sample encryption box is optional. Skip it if it is empty.
        +
        333  return 0;
        +
        334  }
        335 
        -
        336  sample_encryption_entries.resize(sample_count);
        -
        337  for (auto& sample_encryption_entry : sample_encryption_entries) {
        -
        338  RCHECK(sample_encryption_entry.ReadWrite(
        -
        339  iv_size, flags & kUseSubsampleEncryption, buffer));
        -
        340  }
        -
        341  return true;
        -
        342 }
        -
        343 
        -
        344 uint32_t SampleEncryption::ComputeSizeInternal() {
        -
        345  const uint32_t sample_count = sample_encryption_entries.size();
        -
        346  if (sample_count == 0) {
        -
        347  // Sample encryption box is optional. Skip it if it is empty.
        -
        348  return 0;
        -
        349  }
        -
        350 
        -
        351  DCHECK(IsIvSizeValid(iv_size));
        -
        352  uint32_t box_size = HeaderSize() + sizeof(sample_count);
        -
        353  if (flags & kUseSubsampleEncryption) {
        -
        354  for (const SampleEncryptionEntry& sample_encryption_entry :
        -
        355  sample_encryption_entries) {
        -
        356  box_size += sample_encryption_entry.ComputeSize();
        -
        357  }
        -
        358  } else {
        -
        359  box_size += sample_count * iv_size;
        -
        360  }
        -
        361  return box_size;
        -
        362 }
        -
        363 
        - -
        365  size_t iv_size,
        -
        366  std::vector<SampleEncryptionEntry>* sample_encryption_entries) const {
        -
        367  DCHECK(IsIvSizeValid(iv_size));
        -
        368 
        -
        369  BufferReader reader(sample_encryption_data.data(),
        -
        370  sample_encryption_data.size());
        -
        371  uint32_t sample_count = 0;
        -
        372  RCHECK(reader.Read4(&sample_count));
        -
        373 
        -
        374  sample_encryption_entries->resize(sample_count);
        -
        375  for (auto& sample_encryption_entry : *sample_encryption_entries) {
        -
        376  RCHECK(sample_encryption_entry.ParseFromBuffer(
        -
        377  iv_size, flags & kUseSubsampleEncryption, &reader));
        -
        378  }
        -
        379  return true;
        -
        380 }
        -
        381 
        -
        382 OriginalFormat::OriginalFormat() : format(FOURCC_NULL) {}
        -
        383 OriginalFormat::~OriginalFormat() {}
        -
        384 FourCC OriginalFormat::BoxType() const { return FOURCC_FRMA; }
        -
        385 
        -
        386 bool OriginalFormat::ReadWriteInternal(BoxBuffer* buffer) {
        -
        387  return ReadWriteHeaderInternal(buffer) && buffer->ReadWriteFourCC(&format);
        +
        336  DCHECK(IsIvSizeValid(iv_size));
        +
        337  uint32_t box_size = HeaderSize() + sizeof(sample_count);
        +
        338  if (flags & kUseSubsampleEncryption) {
        +
        339  for (const SampleEncryptionEntry& sample_encryption_entry :
        +
        340  sample_encryption_entries) {
        +
        341  box_size += sample_encryption_entry.ComputeSize();
        +
        342  }
        +
        343  } else {
        +
        344  box_size += sample_count * iv_size;
        +
        345  }
        +
        346  return box_size;
        +
        347 }
        +
        348 
        + +
        350  size_t iv_size,
        +
        351  std::vector<SampleEncryptionEntry>* sample_encryption_entries) const {
        +
        352  DCHECK(IsIvSizeValid(iv_size));
        +
        353 
        +
        354  BufferReader reader(sample_encryption_data.data(),
        +
        355  sample_encryption_data.size());
        +
        356  uint32_t sample_count = 0;
        +
        357  RCHECK(reader.Read4(&sample_count));
        +
        358 
        +
        359  sample_encryption_entries->resize(sample_count);
        +
        360  for (auto& sample_encryption_entry : *sample_encryption_entries) {
        +
        361  RCHECK(sample_encryption_entry.ParseFromBuffer(
        +
        362  iv_size, flags & kUseSubsampleEncryption, &reader));
        +
        363  }
        +
        364  return true;
        +
        365 }
        +
        366 
        +
        367 OriginalFormat::OriginalFormat() : format(FOURCC_NULL) {}
        +
        368 OriginalFormat::~OriginalFormat() {}
        +
        369 FourCC OriginalFormat::BoxType() const { return FOURCC_FRMA; }
        +
        370 
        +
        371 bool OriginalFormat::ReadWriteInternal(BoxBuffer* buffer) {
        +
        372  return ReadWriteHeaderInternal(buffer) && buffer->ReadWriteFourCC(&format);
        +
        373 }
        +
        374 
        +
        375 uint32_t OriginalFormat::ComputeSizeInternal() {
        +
        376  return HeaderSize() + kFourCCSize;
        +
        377 }
        +
        378 
        +
        379 SchemeType::SchemeType() : type(FOURCC_NULL), version(0) {}
        +
        380 SchemeType::~SchemeType() {}
        +
        381 FourCC SchemeType::BoxType() const { return FOURCC_SCHM; }
        +
        382 
        +
        383 bool SchemeType::ReadWriteInternal(BoxBuffer* buffer) {
        +
        384  RCHECK(ReadWriteHeaderInternal(buffer) &&
        +
        385  buffer->ReadWriteFourCC(&type) &&
        +
        386  buffer->ReadWriteUInt32(&version));
        +
        387  return true;
        388 }
        389 
        -
        390 uint32_t OriginalFormat::ComputeSizeInternal() {
        -
        391  return HeaderSize() + kFourCCSize;
        +
        390 uint32_t SchemeType::ComputeSizeInternal() {
        +
        391  return HeaderSize() + kFourCCSize + sizeof(version);
        392 }
        393 
        -
        394 SchemeType::SchemeType() : type(FOURCC_NULL), version(0) {}
        -
        395 SchemeType::~SchemeType() {}
        -
        396 FourCC SchemeType::BoxType() const { return FOURCC_SCHM; }
        -
        397 
        -
        398 bool SchemeType::ReadWriteInternal(BoxBuffer* buffer) {
        -
        399  RCHECK(ReadWriteHeaderInternal(buffer) &&
        -
        400  buffer->ReadWriteFourCC(&type) &&
        -
        401  buffer->ReadWriteUInt32(&version));
        -
        402  return true;
        -
        403 }
        -
        404 
        -
        405 uint32_t SchemeType::ComputeSizeInternal() {
        -
        406  return HeaderSize() + kFourCCSize + sizeof(version);
        -
        407 }
        +
        394 TrackEncryption::TrackEncryption()
        +
        395  : is_encrypted(false), default_iv_size(0), default_kid(16, 0) {}
        +
        396 TrackEncryption::~TrackEncryption() {}
        +
        397 FourCC TrackEncryption::BoxType() const { return FOURCC_TENC; }
        +
        398 
        +
        399 bool TrackEncryption::ReadWriteInternal(BoxBuffer* buffer) {
        +
        400  if (!buffer->Reading()) {
        +
        401  if (default_kid.size() != kCencKeyIdSize) {
        +
        402  LOG(WARNING) << "CENC defines key id length of " << kCencKeyIdSize
        +
        403  << " bytes; got " << default_kid.size()
        +
        404  << ". Resized accordingly.";
        +
        405  default_kid.resize(kCencKeyIdSize);
        +
        406  }
        +
        407  }
        408 
        -
        409 TrackEncryption::TrackEncryption()
        -
        410  : is_encrypted(false), default_iv_size(0), default_kid(16, 0) {}
        -
        411 TrackEncryption::~TrackEncryption() {}
        -
        412 FourCC TrackEncryption::BoxType() const { return FOURCC_TENC; }
        -
        413 
        -
        414 bool TrackEncryption::ReadWriteInternal(BoxBuffer* buffer) {
        -
        415  if (!buffer->Reading()) {
        -
        416  if (default_kid.size() != kCencKeyIdSize) {
        -
        417  LOG(WARNING) << "CENC defines key id length of " << kCencKeyIdSize
        -
        418  << " bytes; got " << default_kid.size()
        -
        419  << ". Resized accordingly.";
        -
        420  default_kid.resize(kCencKeyIdSize);
        +
        409  uint8_t flag = is_encrypted ? 1 : 0;
        +
        410  RCHECK(ReadWriteHeaderInternal(buffer) &&
        +
        411  buffer->IgnoreBytes(2) && // reserved.
        +
        412  buffer->ReadWriteUInt8(&flag) &&
        +
        413  buffer->ReadWriteUInt8(&default_iv_size) &&
        +
        414  buffer->ReadWriteVector(&default_kid, kCencKeyIdSize));
        +
        415  if (buffer->Reading()) {
        +
        416  is_encrypted = (flag != 0);
        +
        417  if (is_encrypted) {
        +
        418  RCHECK(default_iv_size == 8 || default_iv_size == 16);
        +
        419  } else {
        +
        420  RCHECK(default_iv_size == 0);
        421  }
        422  }
        -
        423 
        -
        424  uint8_t flag = is_encrypted ? 1 : 0;
        -
        425  RCHECK(ReadWriteHeaderInternal(buffer) &&
        -
        426  buffer->IgnoreBytes(2) && // reserved.
        -
        427  buffer->ReadWriteUInt8(&flag) &&
        -
        428  buffer->ReadWriteUInt8(&default_iv_size) &&
        -
        429  buffer->ReadWriteVector(&default_kid, kCencKeyIdSize));
        -
        430  if (buffer->Reading()) {
        -
        431  is_encrypted = (flag != 0);
        -
        432  if (is_encrypted) {
        -
        433  RCHECK(default_iv_size == 8 || default_iv_size == 16);
        -
        434  } else {
        -
        435  RCHECK(default_iv_size == 0);
        -
        436  }
        -
        437  }
        -
        438  return true;
        -
        439 }
        -
        440 
        -
        441 uint32_t TrackEncryption::ComputeSizeInternal() {
        -
        442  return HeaderSize() + sizeof(uint32_t) + kCencKeyIdSize;
        -
        443 }
        -
        444 
        -
        445 SchemeInfo::SchemeInfo() {}
        -
        446 SchemeInfo::~SchemeInfo() {}
        -
        447 FourCC SchemeInfo::BoxType() const { return FOURCC_SCHI; }
        -
        448 
        -
        449 bool SchemeInfo::ReadWriteInternal(BoxBuffer* buffer) {
        -
        450  RCHECK(ReadWriteHeaderInternal(buffer) && buffer->PrepareChildren() &&
        -
        451  buffer->ReadWriteChild(&track_encryption));
        -
        452  return true;
        -
        453 }
        -
        454 
        -
        455 uint32_t SchemeInfo::ComputeSizeInternal() {
        -
        456  return HeaderSize() + track_encryption.ComputeSize();
        -
        457 }
        -
        458 
        -
        459 ProtectionSchemeInfo::ProtectionSchemeInfo() {}
        -
        460 ProtectionSchemeInfo::~ProtectionSchemeInfo() {}
        -
        461 FourCC ProtectionSchemeInfo::BoxType() const { return FOURCC_SINF; }
        -
        462 
        -
        463 bool ProtectionSchemeInfo::ReadWriteInternal(BoxBuffer* buffer) {
        -
        464  RCHECK(ReadWriteHeaderInternal(buffer) &&
        -
        465  buffer->PrepareChildren() &&
        -
        466  buffer->ReadWriteChild(&format) &&
        -
        467  buffer->ReadWriteChild(&type));
        -
        468  if (type.type == FOURCC_CENC)
        -
        469  RCHECK(buffer->ReadWriteChild(&info));
        -
        470  // Other protection schemes are silently ignored. Since the protection scheme
        -
        471  // type can't be determined until this box is opened, we return 'true' for
        -
        472  // non-CENC protection scheme types. It is the parent box's responsibility to
        -
        473  // ensure that this scheme type is a supported one.
        -
        474  return true;
        -
        475 }
        -
        476 
        -
        477 uint32_t ProtectionSchemeInfo::ComputeSizeInternal() {
        -
        478  // Skip sinf box if it is not initialized.
        -
        479  if (format.format == FOURCC_NULL)
        -
        480  return 0;
        -
        481  return HeaderSize() + format.ComputeSize() + type.ComputeSize() +
        -
        482  info.ComputeSize();
        -
        483 }
        -
        484 
        -
        485 MovieHeader::MovieHeader()
        -
        486  : creation_time(0),
        -
        487  modification_time(0),
        -
        488  timescale(0),
        -
        489  duration(0),
        -
        490  rate(1 << 16),
        -
        491  volume(1 << 8),
        -
        492  next_track_id(0) {}
        -
        493 MovieHeader::~MovieHeader() {}
        -
        494 FourCC MovieHeader::BoxType() const { return FOURCC_MVHD; }
        -
        495 
        -
        496 bool MovieHeader::ReadWriteInternal(BoxBuffer* buffer) {
        -
        497  RCHECK(ReadWriteHeaderInternal(buffer));
        -
        498 
        -
        499  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
        -
        500  RCHECK(buffer->ReadWriteUInt64NBytes(&creation_time, num_bytes) &&
        -
        501  buffer->ReadWriteUInt64NBytes(&modification_time, num_bytes) &&
        -
        502  buffer->ReadWriteUInt32(&timescale) &&
        -
        503  buffer->ReadWriteUInt64NBytes(&duration, num_bytes));
        -
        504 
        -
        505  std::vector<uint8_t> matrix(kUnityMatrix,
        -
        506  kUnityMatrix + arraysize(kUnityMatrix));
        -
        507  RCHECK(buffer->ReadWriteInt32(&rate) &&
        -
        508  buffer->ReadWriteInt16(&volume) &&
        -
        509  buffer->IgnoreBytes(10) && // reserved
        -
        510  buffer->ReadWriteVector(&matrix, matrix.size()) &&
        -
        511  buffer->IgnoreBytes(24) && // predefined zero
        -
        512  buffer->ReadWriteUInt32(&next_track_id));
        -
        513  return true;
        -
        514 }
        -
        515 
        -
        516 uint32_t MovieHeader::ComputeSizeInternal() {
        -
        517  version = IsFitIn32Bits(creation_time, modification_time, duration) ? 0 : 1;
        -
        518  return HeaderSize() + sizeof(uint32_t) * (1 + version) * 3 +
        -
        519  sizeof(timescale) + sizeof(rate) + sizeof(volume) +
        -
        520  sizeof(next_track_id) + sizeof(kUnityMatrix) + 10 +
        -
        521  24; // 10 bytes reserved, 24 bytes predefined.
        -
        522 }
        +
        423  return true;
        +
        424 }
        +
        425 
        +
        426 uint32_t TrackEncryption::ComputeSizeInternal() {
        +
        427  return HeaderSize() + sizeof(uint32_t) + kCencKeyIdSize;
        +
        428 }
        +
        429 
        +
        430 SchemeInfo::SchemeInfo() {}
        +
        431 SchemeInfo::~SchemeInfo() {}
        +
        432 FourCC SchemeInfo::BoxType() const { return FOURCC_SCHI; }
        +
        433 
        +
        434 bool SchemeInfo::ReadWriteInternal(BoxBuffer* buffer) {
        +
        435  RCHECK(ReadWriteHeaderInternal(buffer) && buffer->PrepareChildren() &&
        +
        436  buffer->ReadWriteChild(&track_encryption));
        +
        437  return true;
        +
        438 }
        +
        439 
        +
        440 uint32_t SchemeInfo::ComputeSizeInternal() {
        +
        441  return HeaderSize() + track_encryption.ComputeSize();
        +
        442 }
        +
        443 
        +
        444 ProtectionSchemeInfo::ProtectionSchemeInfo() {}
        +
        445 ProtectionSchemeInfo::~ProtectionSchemeInfo() {}
        +
        446 FourCC ProtectionSchemeInfo::BoxType() const { return FOURCC_SINF; }
        +
        447 
        +
        448 bool ProtectionSchemeInfo::ReadWriteInternal(BoxBuffer* buffer) {
        +
        449  RCHECK(ReadWriteHeaderInternal(buffer) &&
        +
        450  buffer->PrepareChildren() &&
        +
        451  buffer->ReadWriteChild(&format) &&
        +
        452  buffer->ReadWriteChild(&type));
        +
        453  if (type.type == FOURCC_CENC)
        +
        454  RCHECK(buffer->ReadWriteChild(&info));
        +
        455  // Other protection schemes are silently ignored. Since the protection scheme
        +
        456  // type can't be determined until this box is opened, we return 'true' for
        +
        457  // non-CENC protection scheme types. It is the parent box's responsibility to
        +
        458  // ensure that this scheme type is a supported one.
        +
        459  return true;
        +
        460 }
        +
        461 
        +
        462 uint32_t ProtectionSchemeInfo::ComputeSizeInternal() {
        +
        463  // Skip sinf box if it is not initialized.
        +
        464  if (format.format == FOURCC_NULL)
        +
        465  return 0;
        +
        466  return HeaderSize() + format.ComputeSize() + type.ComputeSize() +
        +
        467  info.ComputeSize();
        +
        468 }
        +
        469 
        +
        470 MovieHeader::MovieHeader()
        +
        471  : creation_time(0),
        +
        472  modification_time(0),
        +
        473  timescale(0),
        +
        474  duration(0),
        +
        475  rate(1 << 16),
        +
        476  volume(1 << 8),
        +
        477  next_track_id(0) {}
        +
        478 MovieHeader::~MovieHeader() {}
        +
        479 FourCC MovieHeader::BoxType() const { return FOURCC_MVHD; }
        +
        480 
        +
        481 bool MovieHeader::ReadWriteInternal(BoxBuffer* buffer) {
        +
        482  RCHECK(ReadWriteHeaderInternal(buffer));
        +
        483 
        +
        484  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
        +
        485  RCHECK(buffer->ReadWriteUInt64NBytes(&creation_time, num_bytes) &&
        +
        486  buffer->ReadWriteUInt64NBytes(&modification_time, num_bytes) &&
        +
        487  buffer->ReadWriteUInt32(&timescale) &&
        +
        488  buffer->ReadWriteUInt64NBytes(&duration, num_bytes));
        +
        489 
        +
        490  std::vector<uint8_t> matrix(kUnityMatrix,
        +
        491  kUnityMatrix + arraysize(kUnityMatrix));
        +
        492  RCHECK(buffer->ReadWriteInt32(&rate) &&
        +
        493  buffer->ReadWriteInt16(&volume) &&
        +
        494  buffer->IgnoreBytes(10) && // reserved
        +
        495  buffer->ReadWriteVector(&matrix, matrix.size()) &&
        +
        496  buffer->IgnoreBytes(24) && // predefined zero
        +
        497  buffer->ReadWriteUInt32(&next_track_id));
        +
        498  return true;
        +
        499 }
        +
        500 
        +
        501 uint32_t MovieHeader::ComputeSizeInternal() {
        +
        502  version = IsFitIn32Bits(creation_time, modification_time, duration) ? 0 : 1;
        +
        503  return HeaderSize() + sizeof(uint32_t) * (1 + version) * 3 +
        +
        504  sizeof(timescale) + sizeof(rate) + sizeof(volume) +
        +
        505  sizeof(next_track_id) + sizeof(kUnityMatrix) + 10 +
        +
        506  24; // 10 bytes reserved, 24 bytes predefined.
        +
        507 }
        +
        508 
        +
        509 TrackHeader::TrackHeader()
        +
        510  : creation_time(0),
        +
        511  modification_time(0),
        +
        512  track_id(0),
        +
        513  duration(0),
        +
        514  layer(0),
        +
        515  alternate_group(0),
        +
        516  volume(-1),
        +
        517  width(0),
        +
        518  height(0) {
        +
        519  flags = kTrackEnabled | kTrackInMovie;
        +
        520 }
        +
        521 TrackHeader::~TrackHeader() {}
        +
        522 FourCC TrackHeader::BoxType() const { return FOURCC_TKHD; }
        523 
        -
        524 TrackHeader::TrackHeader()
        -
        525  : creation_time(0),
        -
        526  modification_time(0),
        -
        527  track_id(0),
        -
        528  duration(0),
        -
        529  layer(0),
        -
        530  alternate_group(0),
        -
        531  volume(-1),
        -
        532  width(0),
        -
        533  height(0) {
        -
        534  flags = kTrackEnabled | kTrackInMovie;
        -
        535 }
        -
        536 TrackHeader::~TrackHeader() {}
        -
        537 FourCC TrackHeader::BoxType() const { return FOURCC_TKHD; }
        -
        538 
        -
        539 bool TrackHeader::ReadWriteInternal(BoxBuffer* buffer) {
        -
        540  RCHECK(ReadWriteHeaderInternal(buffer));
        -
        541 
        -
        542  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
        -
        543  RCHECK(buffer->ReadWriteUInt64NBytes(&creation_time, num_bytes) &&
        -
        544  buffer->ReadWriteUInt64NBytes(&modification_time, num_bytes) &&
        -
        545  buffer->ReadWriteUInt32(&track_id) &&
        -
        546  buffer->IgnoreBytes(4) && // reserved
        -
        547  buffer->ReadWriteUInt64NBytes(&duration, num_bytes));
        -
        548 
        -
        549  if (!buffer->Reading()) {
        -
        550  // Set default value for volume, if track is audio, 0x100 else 0.
        -
        551  if (volume == -1)
        -
        552  volume = (width != 0 && height != 0) ? 0 : 0x100;
        -
        553  }
        -
        554  std::vector<uint8_t> matrix(kUnityMatrix,
        -
        555  kUnityMatrix + arraysize(kUnityMatrix));
        -
        556  RCHECK(buffer->IgnoreBytes(8) && // reserved
        -
        557  buffer->ReadWriteInt16(&layer) &&
        -
        558  buffer->ReadWriteInt16(&alternate_group) &&
        -
        559  buffer->ReadWriteInt16(&volume) &&
        -
        560  buffer->IgnoreBytes(2) && // reserved
        -
        561  buffer->ReadWriteVector(&matrix, matrix.size()) &&
        -
        562  buffer->ReadWriteUInt32(&width) &&
        -
        563  buffer->ReadWriteUInt32(&height));
        -
        564  return true;
        -
        565 }
        -
        566 
        -
        567 uint32_t TrackHeader::ComputeSizeInternal() {
        -
        568  version = IsFitIn32Bits(creation_time, modification_time, duration) ? 0 : 1;
        -
        569  return HeaderSize() + sizeof(track_id) +
        -
        570  sizeof(uint32_t) * (1 + version) * 3 + sizeof(layer) +
        -
        571  sizeof(alternate_group) + sizeof(volume) + sizeof(width) +
        -
        572  sizeof(height) + sizeof(kUnityMatrix) + 14; // 14 bytes reserved.
        -
        573 }
        -
        574 
        -
        575 SampleDescription::SampleDescription() : type(kInvalid) {}
        -
        576 SampleDescription::~SampleDescription() {}
        -
        577 FourCC SampleDescription::BoxType() const { return FOURCC_STSD; }
        -
        578 
        -
        579 bool SampleDescription::ReadWriteInternal(BoxBuffer* buffer) {
        -
        580  uint32_t count = 0;
        -
        581  switch (type) {
        -
        582  case kVideo:
        -
        583  count = video_entries.size();
        -
        584  break;
        -
        585  case kAudio:
        -
        586  count = audio_entries.size();
        -
        587  break;
        -
        588  case kText:
        -
        589  count = text_entries.size();
        -
        590  break;
        -
        591  default:
        -
        592  NOTIMPLEMENTED() << "SampleDecryption type " << type
        -
        593  << " is not handled. Skipping.";
        -
        594  }
        -
        595  RCHECK(ReadWriteHeaderInternal(buffer) &&
        -
        596  buffer->ReadWriteUInt32(&count));
        -
        597 
        -
        598  if (buffer->Reading()) {
        -
        599  BoxReader* reader = buffer->reader();
        -
        600  DCHECK(reader);
        -
        601  video_entries.clear();
        -
        602  audio_entries.clear();
        -
        603  // Note: this value is preset before scanning begins. See comments in the
        -
        604  // Parse(Media*) function.
        -
        605  if (type == kVideo) {
        -
        606  RCHECK(reader->ReadAllChildren(&video_entries));
        -
        607  RCHECK(video_entries.size() == count);
        -
        608  } else if (type == kAudio) {
        -
        609  RCHECK(reader->ReadAllChildren(&audio_entries));
        -
        610  RCHECK(audio_entries.size() == count);
        -
        611  } else if (type == kText) {
        -
        612  RCHECK(reader->ReadAllChildren(&text_entries));
        -
        613  RCHECK(text_entries.size() == count);
        -
        614  }
        -
        615  } else {
        -
        616  DCHECK_LT(0u, count);
        -
        617  if (type == kVideo) {
        -
        618  for (uint32_t i = 0; i < count; ++i)
        -
        619  RCHECK(buffer->ReadWriteChild(&video_entries[i]));
        -
        620  } else if (type == kAudio) {
        -
        621  for (uint32_t i = 0; i < count; ++i)
        -
        622  RCHECK(buffer->ReadWriteChild(&audio_entries[i]));
        -
        623  } else if (type == kText) {
        -
        624  for (uint32_t i = 0; i < count; ++i)
        -
        625  RCHECK(buffer->ReadWriteChild(&text_entries[i]));
        -
        626  } else {
        -
        627  NOTIMPLEMENTED();
        -
        628  }
        +
        524 bool TrackHeader::ReadWriteInternal(BoxBuffer* buffer) {
        +
        525  RCHECK(ReadWriteHeaderInternal(buffer));
        +
        526 
        +
        527  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
        +
        528  RCHECK(buffer->ReadWriteUInt64NBytes(&creation_time, num_bytes) &&
        +
        529  buffer->ReadWriteUInt64NBytes(&modification_time, num_bytes) &&
        +
        530  buffer->ReadWriteUInt32(&track_id) &&
        +
        531  buffer->IgnoreBytes(4) && // reserved
        +
        532  buffer->ReadWriteUInt64NBytes(&duration, num_bytes));
        +
        533 
        +
        534  if (!buffer->Reading()) {
        +
        535  // Set default value for volume, if track is audio, 0x100 else 0.
        +
        536  if (volume == -1)
        +
        537  volume = (width != 0 && height != 0) ? 0 : 0x100;
        +
        538  }
        +
        539  std::vector<uint8_t> matrix(kUnityMatrix,
        +
        540  kUnityMatrix + arraysize(kUnityMatrix));
        +
        541  RCHECK(buffer->IgnoreBytes(8) && // reserved
        +
        542  buffer->ReadWriteInt16(&layer) &&
        +
        543  buffer->ReadWriteInt16(&alternate_group) &&
        +
        544  buffer->ReadWriteInt16(&volume) &&
        +
        545  buffer->IgnoreBytes(2) && // reserved
        +
        546  buffer->ReadWriteVector(&matrix, matrix.size()) &&
        +
        547  buffer->ReadWriteUInt32(&width) &&
        +
        548  buffer->ReadWriteUInt32(&height));
        +
        549  return true;
        +
        550 }
        +
        551 
        +
        552 uint32_t TrackHeader::ComputeSizeInternal() {
        +
        553  version = IsFitIn32Bits(creation_time, modification_time, duration) ? 0 : 1;
        +
        554  return HeaderSize() + sizeof(track_id) +
        +
        555  sizeof(uint32_t) * (1 + version) * 3 + sizeof(layer) +
        +
        556  sizeof(alternate_group) + sizeof(volume) + sizeof(width) +
        +
        557  sizeof(height) + sizeof(kUnityMatrix) + 14; // 14 bytes reserved.
        +
        558 }
        +
        559 
        +
        560 SampleDescription::SampleDescription() : type(kInvalid) {}
        +
        561 SampleDescription::~SampleDescription() {}
        +
        562 FourCC SampleDescription::BoxType() const { return FOURCC_STSD; }
        +
        563 
        +
        564 bool SampleDescription::ReadWriteInternal(BoxBuffer* buffer) {
        +
        565  uint32_t count = 0;
        +
        566  switch (type) {
        +
        567  case kVideo:
        +
        568  count = video_entries.size();
        +
        569  break;
        +
        570  case kAudio:
        +
        571  count = audio_entries.size();
        +
        572  break;
        +
        573  case kText:
        +
        574  count = text_entries.size();
        +
        575  break;
        +
        576  default:
        +
        577  NOTIMPLEMENTED() << "SampleDecryption type " << type
        +
        578  << " is not handled. Skipping.";
        +
        579  }
        +
        580  RCHECK(ReadWriteHeaderInternal(buffer) &&
        +
        581  buffer->ReadWriteUInt32(&count));
        +
        582 
        +
        583  if (buffer->Reading()) {
        +
        584  BoxReader* reader = buffer->reader();
        +
        585  DCHECK(reader);
        +
        586  video_entries.clear();
        +
        587  audio_entries.clear();
        +
        588  // Note: this value is preset before scanning begins. See comments in the
        +
        589  // Parse(Media*) function.
        +
        590  if (type == kVideo) {
        +
        591  RCHECK(reader->ReadAllChildren(&video_entries));
        +
        592  RCHECK(video_entries.size() == count);
        +
        593  } else if (type == kAudio) {
        +
        594  RCHECK(reader->ReadAllChildren(&audio_entries));
        +
        595  RCHECK(audio_entries.size() == count);
        +
        596  } else if (type == kText) {
        +
        597  RCHECK(reader->ReadAllChildren(&text_entries));
        +
        598  RCHECK(text_entries.size() == count);
        +
        599  }
        +
        600  } else {
        +
        601  DCHECK_LT(0u, count);
        +
        602  if (type == kVideo) {
        +
        603  for (uint32_t i = 0; i < count; ++i)
        +
        604  RCHECK(buffer->ReadWriteChild(&video_entries[i]));
        +
        605  } else if (type == kAudio) {
        +
        606  for (uint32_t i = 0; i < count; ++i)
        +
        607  RCHECK(buffer->ReadWriteChild(&audio_entries[i]));
        +
        608  } else if (type == kText) {
        +
        609  for (uint32_t i = 0; i < count; ++i)
        +
        610  RCHECK(buffer->ReadWriteChild(&text_entries[i]));
        +
        611  } else {
        +
        612  NOTIMPLEMENTED();
        +
        613  }
        +
        614  }
        +
        615  return true;
        +
        616 }
        +
        617 
        +
        618 uint32_t SampleDescription::ComputeSizeInternal() {
        +
        619  uint32_t box_size = HeaderSize() + sizeof(uint32_t);
        +
        620  if (type == kVideo) {
        +
        621  for (uint32_t i = 0; i < video_entries.size(); ++i)
        +
        622  box_size += video_entries[i].ComputeSize();
        +
        623  } else if (type == kAudio) {
        +
        624  for (uint32_t i = 0; i < audio_entries.size(); ++i)
        +
        625  box_size += audio_entries[i].ComputeSize();
        +
        626  } else if (type == kText) {
        +
        627  for (uint32_t i = 0; i < text_entries.size(); ++i)
        +
        628  box_size += text_entries[i].ComputeSize();
        629  }
        -
        630  return true;
        +
        630  return box_size;
        631 }
        632 
        -
        633 uint32_t SampleDescription::ComputeSizeInternal() {
        -
        634  uint32_t box_size = HeaderSize() + sizeof(uint32_t);
        -
        635  if (type == kVideo) {
        -
        636  for (uint32_t i = 0; i < video_entries.size(); ++i)
        -
        637  box_size += video_entries[i].ComputeSize();
        -
        638  } else if (type == kAudio) {
        -
        639  for (uint32_t i = 0; i < audio_entries.size(); ++i)
        -
        640  box_size += audio_entries[i].ComputeSize();
        -
        641  } else if (type == kText) {
        -
        642  for (uint32_t i = 0; i < text_entries.size(); ++i)
        -
        643  box_size += text_entries[i].ComputeSize();
        -
        644  }
        -
        645  return box_size;
        -
        646 }
        -
        647 
        -
        648 DecodingTimeToSample::DecodingTimeToSample() {}
        -
        649 DecodingTimeToSample::~DecodingTimeToSample() {}
        -
        650 FourCC DecodingTimeToSample::BoxType() const { return FOURCC_STTS; }
        -
        651 
        -
        652 bool DecodingTimeToSample::ReadWriteInternal(BoxBuffer* buffer) {
        -
        653  uint32_t count = decoding_time.size();
        -
        654  RCHECK(ReadWriteHeaderInternal(buffer) &&
        -
        655  buffer->ReadWriteUInt32(&count));
        -
        656 
        -
        657  decoding_time.resize(count);
        -
        658  for (uint32_t i = 0; i < count; ++i) {
        -
        659  RCHECK(buffer->ReadWriteUInt32(&decoding_time[i].sample_count) &&
        -
        660  buffer->ReadWriteUInt32(&decoding_time[i].sample_delta));
        -
        661  }
        -
        662  return true;
        -
        663 }
        -
        664 
        -
        665 uint32_t DecodingTimeToSample::ComputeSizeInternal() {
        -
        666  return HeaderSize() + sizeof(uint32_t) +
        -
        667  sizeof(DecodingTime) * decoding_time.size();
        -
        668 }
        -
        669 
        -
        670 CompositionTimeToSample::CompositionTimeToSample() {}
        -
        671 CompositionTimeToSample::~CompositionTimeToSample() {}
        -
        672 FourCC CompositionTimeToSample::BoxType() const { return FOURCC_CTTS; }
        +
        633 DecodingTimeToSample::DecodingTimeToSample() {}
        +
        634 DecodingTimeToSample::~DecodingTimeToSample() {}
        +
        635 FourCC DecodingTimeToSample::BoxType() const { return FOURCC_STTS; }
        +
        636 
        +
        637 bool DecodingTimeToSample::ReadWriteInternal(BoxBuffer* buffer) {
        +
        638  uint32_t count = decoding_time.size();
        +
        639  RCHECK(ReadWriteHeaderInternal(buffer) &&
        +
        640  buffer->ReadWriteUInt32(&count));
        +
        641 
        +
        642  decoding_time.resize(count);
        +
        643  for (uint32_t i = 0; i < count; ++i) {
        +
        644  RCHECK(buffer->ReadWriteUInt32(&decoding_time[i].sample_count) &&
        +
        645  buffer->ReadWriteUInt32(&decoding_time[i].sample_delta));
        +
        646  }
        +
        647  return true;
        +
        648 }
        +
        649 
        +
        650 uint32_t DecodingTimeToSample::ComputeSizeInternal() {
        +
        651  return HeaderSize() + sizeof(uint32_t) +
        +
        652  sizeof(DecodingTime) * decoding_time.size();
        +
        653 }
        +
        654 
        +
        655 CompositionTimeToSample::CompositionTimeToSample() {}
        +
        656 CompositionTimeToSample::~CompositionTimeToSample() {}
        +
        657 FourCC CompositionTimeToSample::BoxType() const { return FOURCC_CTTS; }
        +
        658 
        +
        659 bool CompositionTimeToSample::ReadWriteInternal(BoxBuffer* buffer) {
        +
        660  uint32_t count = composition_offset.size();
        +
        661  if (!buffer->Reading()) {
        +
        662  // Determine whether version 0 or version 1 should be used.
        +
        663  // Use version 0 if possible, use version 1 if there is a negative
        +
        664  // sample_offset value.
        +
        665  version = 0;
        +
        666  for (uint32_t i = 0; i < count; ++i) {
        +
        667  if (composition_offset[i].sample_offset < 0) {
        +
        668  version = 1;
        +
        669  break;
        +
        670  }
        +
        671  }
        +
        672  }
        673 
        -
        674 bool CompositionTimeToSample::ReadWriteInternal(BoxBuffer* buffer) {
        -
        675  uint32_t count = composition_offset.size();
        -
        676  if (!buffer->Reading()) {
        -
        677  // Determine whether version 0 or version 1 should be used.
        -
        678  // Use version 0 if possible, use version 1 if there is a negative
        -
        679  // sample_offset value.
        -
        680  version = 0;
        -
        681  for (uint32_t i = 0; i < count; ++i) {
        -
        682  if (composition_offset[i].sample_offset < 0) {
        -
        683  version = 1;
        -
        684  break;
        -
        685  }
        -
        686  }
        -
        687  }
        -
        688 
        -
        689  RCHECK(ReadWriteHeaderInternal(buffer) &&
        -
        690  buffer->ReadWriteUInt32(&count));
        -
        691 
        -
        692  composition_offset.resize(count);
        -
        693  for (uint32_t i = 0; i < count; ++i) {
        -
        694  RCHECK(buffer->ReadWriteUInt32(&composition_offset[i].sample_count));
        -
        695 
        -
        696  if (version == 0) {
        -
        697  uint32_t sample_offset = composition_offset[i].sample_offset;
        -
        698  RCHECK(buffer->ReadWriteUInt32(&sample_offset));
        -
        699  composition_offset[i].sample_offset = sample_offset;
        -
        700  } else {
        -
        701  int32_t sample_offset = composition_offset[i].sample_offset;
        -
        702  RCHECK(buffer->ReadWriteInt32(&sample_offset));
        -
        703  composition_offset[i].sample_offset = sample_offset;
        -
        704  }
        -
        705  }
        -
        706  return true;
        -
        707 }
        -
        708 
        -
        709 uint32_t CompositionTimeToSample::ComputeSizeInternal() {
        -
        710  // This box is optional. Skip it if it is empty.
        -
        711  if (composition_offset.empty())
        -
        712  return 0;
        -
        713  // Structure CompositionOffset contains |sample_offset| (uint32_t) and
        -
        714  // |sample_offset| (int64_t). The actual size of |sample_offset| is
        -
        715  // 4 bytes (uint32_t for version 0 and int32_t for version 1).
        -
        716  const uint32_t kCompositionOffsetSize = sizeof(uint32_t) * 2;
        -
        717  return HeaderSize() + sizeof(uint32_t) +
        -
        718  kCompositionOffsetSize * composition_offset.size();
        -
        719 }
        -
        720 
        -
        721 SampleToChunk::SampleToChunk() {}
        -
        722 SampleToChunk::~SampleToChunk() {}
        -
        723 FourCC SampleToChunk::BoxType() const { return FOURCC_STSC; }
        -
        724 
        -
        725 bool SampleToChunk::ReadWriteInternal(BoxBuffer* buffer) {
        -
        726  uint32_t count = chunk_info.size();
        -
        727  RCHECK(ReadWriteHeaderInternal(buffer) &&
        -
        728  buffer->ReadWriteUInt32(&count));
        -
        729 
        -
        730  chunk_info.resize(count);
        -
        731  for (uint32_t i = 0; i < count; ++i) {
        -
        732  RCHECK(buffer->ReadWriteUInt32(&chunk_info[i].first_chunk) &&
        -
        733  buffer->ReadWriteUInt32(&chunk_info[i].samples_per_chunk) &&
        -
        734  buffer->ReadWriteUInt32(&chunk_info[i].sample_description_index));
        -
        735  // first_chunk values are always increasing.
        -
        736  RCHECK(i == 0 ? chunk_info[i].first_chunk == 1
        -
        737  : chunk_info[i].first_chunk > chunk_info[i - 1].first_chunk);
        -
        738  }
        -
        739  return true;
        -
        740 }
        -
        741 
        -
        742 uint32_t SampleToChunk::ComputeSizeInternal() {
        -
        743  return HeaderSize() + sizeof(uint32_t) +
        -
        744  sizeof(ChunkInfo) * chunk_info.size();
        -
        745 }
        -
        746 
        -
        747 SampleSize::SampleSize() : sample_size(0), sample_count(0) {}
        -
        748 SampleSize::~SampleSize() {}
        -
        749 FourCC SampleSize::BoxType() const { return FOURCC_STSZ; }
        -
        750 
        -
        751 bool SampleSize::ReadWriteInternal(BoxBuffer* buffer) {
        -
        752  RCHECK(ReadWriteHeaderInternal(buffer) &&
        -
        753  buffer->ReadWriteUInt32(&sample_size) &&
        -
        754  buffer->ReadWriteUInt32(&sample_count));
        -
        755 
        -
        756  if (sample_size == 0) {
        -
        757  if (buffer->Reading())
        -
        758  sizes.resize(sample_count);
        -
        759  else
        -
        760  DCHECK(sample_count == sizes.size());
        -
        761  for (uint32_t i = 0; i < sample_count; ++i)
        -
        762  RCHECK(buffer->ReadWriteUInt32(&sizes[i]));
        -
        763  }
        -
        764  return true;
        -
        765 }
        -
        766 
        -
        767 uint32_t SampleSize::ComputeSizeInternal() {
        -
        768  return HeaderSize() + sizeof(sample_size) + sizeof(sample_count) +
        -
        769  (sample_size == 0 ? sizeof(uint32_t) * sizes.size() : 0);
        -
        770 }
        -
        771 
        -
        772 CompactSampleSize::CompactSampleSize() : field_size(0) {}
        -
        773 CompactSampleSize::~CompactSampleSize() {}
        -
        774 FourCC CompactSampleSize::BoxType() const { return FOURCC_STZ2; }
        -
        775 
        -
        776 bool CompactSampleSize::ReadWriteInternal(BoxBuffer* buffer) {
        -
        777  uint32_t sample_count = sizes.size();
        -
        778  RCHECK(ReadWriteHeaderInternal(buffer) &&
        -
        779  buffer->IgnoreBytes(3) &&
        -
        780  buffer->ReadWriteUInt8(&field_size) &&
        -
        781  buffer->ReadWriteUInt32(&sample_count));
        -
        782 
        -
        783  // Reserve one more entry if field size is 4 bits.
        -
        784  sizes.resize(sample_count + (field_size == 4 ? 1 : 0), 0);
        -
        785  switch (field_size) {
        -
        786  case 4:
        -
        787  for (uint32_t i = 0; i < sample_count; i += 2) {
        -
        788  if (buffer->Reading()) {
        -
        789  uint8_t size = 0;
        -
        790  RCHECK(buffer->ReadWriteUInt8(&size));
        -
        791  sizes[i] = size >> 4;
        -
        792  sizes[i + 1] = size & 0x0F;
        -
        793  } else {
        -
        794  DCHECK_LT(sizes[i], 16u);
        -
        795  DCHECK_LT(sizes[i + 1], 16u);
        -
        796  uint8_t size = (sizes[i] << 4) | sizes[i + 1];
        -
        797  RCHECK(buffer->ReadWriteUInt8(&size));
        -
        798  }
        -
        799  }
        -
        800  break;
        -
        801  case 8:
        -
        802  for (uint32_t i = 0; i < sample_count; ++i) {
        -
        803  uint8_t size = sizes[i];
        -
        804  RCHECK(buffer->ReadWriteUInt8(&size));
        -
        805  sizes[i] = size;
        -
        806  }
        -
        807  break;
        -
        808  case 16:
        -
        809  for (uint32_t i = 0; i < sample_count; ++i) {
        -
        810  uint16_t size = sizes[i];
        -
        811  RCHECK(buffer->ReadWriteUInt16(&size));
        -
        812  sizes[i] = size;
        -
        813  }
        -
        814  break;
        -
        815  default:
        -
        816  RCHECK(false);
        -
        817  }
        -
        818  sizes.resize(sample_count);
        -
        819  return true;
        -
        820 }
        -
        821 
        -
        822 uint32_t CompactSampleSize::ComputeSizeInternal() {
        -
        823  return HeaderSize() + sizeof(uint32_t) + sizeof(uint32_t) +
        -
        824  (field_size * sizes.size() + 7) / 8;
        +
        674  RCHECK(ReadWriteHeaderInternal(buffer) &&
        +
        675  buffer->ReadWriteUInt32(&count));
        +
        676 
        +
        677  composition_offset.resize(count);
        +
        678  for (uint32_t i = 0; i < count; ++i) {
        +
        679  RCHECK(buffer->ReadWriteUInt32(&composition_offset[i].sample_count));
        +
        680 
        +
        681  if (version == 0) {
        +
        682  uint32_t sample_offset = composition_offset[i].sample_offset;
        +
        683  RCHECK(buffer->ReadWriteUInt32(&sample_offset));
        +
        684  composition_offset[i].sample_offset = sample_offset;
        +
        685  } else {
        +
        686  int32_t sample_offset = composition_offset[i].sample_offset;
        +
        687  RCHECK(buffer->ReadWriteInt32(&sample_offset));
        +
        688  composition_offset[i].sample_offset = sample_offset;
        +
        689  }
        +
        690  }
        +
        691  return true;
        +
        692 }
        +
        693 
        +
        694 uint32_t CompositionTimeToSample::ComputeSizeInternal() {
        +
        695  // This box is optional. Skip it if it is empty.
        +
        696  if (composition_offset.empty())
        +
        697  return 0;
        +
        698  // Structure CompositionOffset contains |sample_offset| (uint32_t) and
        +
        699  // |sample_offset| (int64_t). The actual size of |sample_offset| is
        +
        700  // 4 bytes (uint32_t for version 0 and int32_t for version 1).
        +
        701  const uint32_t kCompositionOffsetSize = sizeof(uint32_t) * 2;
        +
        702  return HeaderSize() + sizeof(uint32_t) +
        +
        703  kCompositionOffsetSize * composition_offset.size();
        +
        704 }
        +
        705 
        +
        706 SampleToChunk::SampleToChunk() {}
        +
        707 SampleToChunk::~SampleToChunk() {}
        +
        708 FourCC SampleToChunk::BoxType() const { return FOURCC_STSC; }
        +
        709 
        +
        710 bool SampleToChunk::ReadWriteInternal(BoxBuffer* buffer) {
        +
        711  uint32_t count = chunk_info.size();
        +
        712  RCHECK(ReadWriteHeaderInternal(buffer) &&
        +
        713  buffer->ReadWriteUInt32(&count));
        +
        714 
        +
        715  chunk_info.resize(count);
        +
        716  for (uint32_t i = 0; i < count; ++i) {
        +
        717  RCHECK(buffer->ReadWriteUInt32(&chunk_info[i].first_chunk) &&
        +
        718  buffer->ReadWriteUInt32(&chunk_info[i].samples_per_chunk) &&
        +
        719  buffer->ReadWriteUInt32(&chunk_info[i].sample_description_index));
        +
        720  // first_chunk values are always increasing.
        +
        721  RCHECK(i == 0 ? chunk_info[i].first_chunk == 1
        +
        722  : chunk_info[i].first_chunk > chunk_info[i - 1].first_chunk);
        +
        723  }
        +
        724  return true;
        +
        725 }
        +
        726 
        +
        727 uint32_t SampleToChunk::ComputeSizeInternal() {
        +
        728  return HeaderSize() + sizeof(uint32_t) +
        +
        729  sizeof(ChunkInfo) * chunk_info.size();
        +
        730 }
        +
        731 
        +
        732 SampleSize::SampleSize() : sample_size(0), sample_count(0) {}
        +
        733 SampleSize::~SampleSize() {}
        +
        734 FourCC SampleSize::BoxType() const { return FOURCC_STSZ; }
        +
        735 
        +
        736 bool SampleSize::ReadWriteInternal(BoxBuffer* buffer) {
        +
        737  RCHECK(ReadWriteHeaderInternal(buffer) &&
        +
        738  buffer->ReadWriteUInt32(&sample_size) &&
        +
        739  buffer->ReadWriteUInt32(&sample_count));
        +
        740 
        +
        741  if (sample_size == 0) {
        +
        742  if (buffer->Reading())
        +
        743  sizes.resize(sample_count);
        +
        744  else
        +
        745  DCHECK(sample_count == sizes.size());
        +
        746  for (uint32_t i = 0; i < sample_count; ++i)
        +
        747  RCHECK(buffer->ReadWriteUInt32(&sizes[i]));
        +
        748  }
        +
        749  return true;
        +
        750 }
        +
        751 
        +
        752 uint32_t SampleSize::ComputeSizeInternal() {
        +
        753  return HeaderSize() + sizeof(sample_size) + sizeof(sample_count) +
        +
        754  (sample_size == 0 ? sizeof(uint32_t) * sizes.size() : 0);
        +
        755 }
        +
        756 
        +
        757 CompactSampleSize::CompactSampleSize() : field_size(0) {}
        +
        758 CompactSampleSize::~CompactSampleSize() {}
        +
        759 FourCC CompactSampleSize::BoxType() const { return FOURCC_STZ2; }
        +
        760 
        +
        761 bool CompactSampleSize::ReadWriteInternal(BoxBuffer* buffer) {
        +
        762  uint32_t sample_count = sizes.size();
        +
        763  RCHECK(ReadWriteHeaderInternal(buffer) &&
        +
        764  buffer->IgnoreBytes(3) &&
        +
        765  buffer->ReadWriteUInt8(&field_size) &&
        +
        766  buffer->ReadWriteUInt32(&sample_count));
        +
        767 
        +
        768  // Reserve one more entry if field size is 4 bits.
        +
        769  sizes.resize(sample_count + (field_size == 4 ? 1 : 0), 0);
        +
        770  switch (field_size) {
        +
        771  case 4:
        +
        772  for (uint32_t i = 0; i < sample_count; i += 2) {
        +
        773  if (buffer->Reading()) {
        +
        774  uint8_t size = 0;
        +
        775  RCHECK(buffer->ReadWriteUInt8(&size));
        +
        776  sizes[i] = size >> 4;
        +
        777  sizes[i + 1] = size & 0x0F;
        +
        778  } else {
        +
        779  DCHECK_LT(sizes[i], 16u);
        +
        780  DCHECK_LT(sizes[i + 1], 16u);
        +
        781  uint8_t size = (sizes[i] << 4) | sizes[i + 1];
        +
        782  RCHECK(buffer->ReadWriteUInt8(&size));
        +
        783  }
        +
        784  }
        +
        785  break;
        +
        786  case 8:
        +
        787  for (uint32_t i = 0; i < sample_count; ++i) {
        +
        788  uint8_t size = sizes[i];
        +
        789  RCHECK(buffer->ReadWriteUInt8(&size));
        +
        790  sizes[i] = size;
        +
        791  }
        +
        792  break;
        +
        793  case 16:
        +
        794  for (uint32_t i = 0; i < sample_count; ++i) {
        +
        795  uint16_t size = sizes[i];
        +
        796  RCHECK(buffer->ReadWriteUInt16(&size));
        +
        797  sizes[i] = size;
        +
        798  }
        +
        799  break;
        +
        800  default:
        +
        801  RCHECK(false);
        +
        802  }
        +
        803  sizes.resize(sample_count);
        +
        804  return true;
        +
        805 }
        +
        806 
        +
        807 uint32_t CompactSampleSize::ComputeSizeInternal() {
        +
        808  return HeaderSize() + sizeof(uint32_t) + sizeof(uint32_t) +
        +
        809  (field_size * sizes.size() + 7) / 8;
        +
        810 }
        +
        811 
        +
        812 ChunkOffset::ChunkOffset() {}
        +
        813 ChunkOffset::~ChunkOffset() {}
        +
        814 FourCC ChunkOffset::BoxType() const { return FOURCC_STCO; }
        +
        815 
        +
        816 bool ChunkOffset::ReadWriteInternal(BoxBuffer* buffer) {
        +
        817  uint32_t count = offsets.size();
        +
        818  RCHECK(ReadWriteHeaderInternal(buffer) &&
        +
        819  buffer->ReadWriteUInt32(&count));
        +
        820 
        +
        821  offsets.resize(count);
        +
        822  for (uint32_t i = 0; i < count; ++i)
        +
        823  RCHECK(buffer->ReadWriteUInt64NBytes(&offsets[i], sizeof(uint32_t)));
        +
        824  return true;
        825 }
        826 
        -
        827 ChunkOffset::ChunkOffset() {}
        -
        828 ChunkOffset::~ChunkOffset() {}
        -
        829 FourCC ChunkOffset::BoxType() const { return FOURCC_STCO; }
        +
        827 uint32_t ChunkOffset::ComputeSizeInternal() {
        +
        828  return HeaderSize() + sizeof(uint32_t) + sizeof(uint32_t) * offsets.size();
        +
        829 }
        830 
        -
        831 bool ChunkOffset::ReadWriteInternal(BoxBuffer* buffer) {
        -
        832  uint32_t count = offsets.size();
        -
        833  RCHECK(ReadWriteHeaderInternal(buffer) &&
        -
        834  buffer->ReadWriteUInt32(&count));
        -
        835 
        -
        836  offsets.resize(count);
        -
        837  for (uint32_t i = 0; i < count; ++i)
        -
        838  RCHECK(buffer->ReadWriteUInt64NBytes(&offsets[i], sizeof(uint32_t)));
        -
        839  return true;
        -
        840 }
        -
        841 
        -
        842 uint32_t ChunkOffset::ComputeSizeInternal() {
        -
        843  return HeaderSize() + sizeof(uint32_t) + sizeof(uint32_t) * offsets.size();
        -
        844 }
        -
        845 
        -
        846 ChunkLargeOffset::ChunkLargeOffset() {}
        -
        847 ChunkLargeOffset::~ChunkLargeOffset() {}
        -
        848 FourCC ChunkLargeOffset::BoxType() const { return FOURCC_CO64; }
        +
        831 ChunkLargeOffset::ChunkLargeOffset() {}
        +
        832 ChunkLargeOffset::~ChunkLargeOffset() {}
        +
        833 FourCC ChunkLargeOffset::BoxType() const { return FOURCC_CO64; }
        +
        834 
        +
        835 bool ChunkLargeOffset::ReadWriteInternal(BoxBuffer* buffer) {
        +
        836  uint32_t count = offsets.size();
        +
        837 
        +
        838  if (!buffer->Reading()) {
        +
        839  // Switch to ChunkOffset box if it is able to fit in 32 bits offset.
        +
        840  if (count == 0 || IsFitIn32Bits(offsets[count - 1])) {
        +
        841  ChunkOffset stco;
        +
        842  stco.offsets.swap(offsets);
        +
        843  DCHECK(buffer->writer());
        +
        844  stco.Write(buffer->writer());
        +
        845  stco.offsets.swap(offsets);
        +
        846  return true;
        +
        847  }
        +
        848  }
        849 
        -
        850 bool ChunkLargeOffset::ReadWriteInternal(BoxBuffer* buffer) {
        -
        851  uint32_t count = offsets.size();
        +
        850  RCHECK(ReadWriteHeaderInternal(buffer) &&
        +
        851  buffer->ReadWriteUInt32(&count));
        852 
        -
        853  if (!buffer->Reading()) {
        -
        854  // Switch to ChunkOffset box if it is able to fit in 32 bits offset.
        -
        855  if (count == 0 || IsFitIn32Bits(offsets[count - 1])) {
        -
        856  ChunkOffset stco;
        -
        857  stco.offsets.swap(offsets);
        -
        858  DCHECK(buffer->writer());
        -
        859  stco.Write(buffer->writer());
        -
        860  stco.offsets.swap(offsets);
        -
        861  return true;
        -
        862  }
        -
        863  }
        -
        864 
        -
        865  RCHECK(ReadWriteHeaderInternal(buffer) &&
        -
        866  buffer->ReadWriteUInt32(&count));
        -
        867 
        -
        868  offsets.resize(count);
        -
        869  for (uint32_t i = 0; i < count; ++i)
        -
        870  RCHECK(buffer->ReadWriteUInt64(&offsets[i]));
        -
        871  return true;
        -
        872 }
        -
        873 
        -
        874 uint32_t ChunkLargeOffset::ComputeSizeInternal() {
        -
        875  uint32_t count = offsets.size();
        -
        876  int use_large_offset =
        -
        877  (count > 0 && !IsFitIn32Bits(offsets[count - 1])) ? 1 : 0;
        -
        878  return HeaderSize() + sizeof(count) +
        -
        879  sizeof(uint32_t) * (1 + use_large_offset) * offsets.size();
        +
        853  offsets.resize(count);
        +
        854  for (uint32_t i = 0; i < count; ++i)
        +
        855  RCHECK(buffer->ReadWriteUInt64(&offsets[i]));
        +
        856  return true;
        +
        857 }
        +
        858 
        +
        859 uint32_t ChunkLargeOffset::ComputeSizeInternal() {
        +
        860  uint32_t count = offsets.size();
        +
        861  int use_large_offset =
        +
        862  (count > 0 && !IsFitIn32Bits(offsets[count - 1])) ? 1 : 0;
        +
        863  return HeaderSize() + sizeof(count) +
        +
        864  sizeof(uint32_t) * (1 + use_large_offset) * offsets.size();
        +
        865 }
        +
        866 
        +
        867 SyncSample::SyncSample() {}
        +
        868 SyncSample::~SyncSample() {}
        +
        869 FourCC SyncSample::BoxType() const { return FOURCC_STSS; }
        +
        870 
        +
        871 bool SyncSample::ReadWriteInternal(BoxBuffer* buffer) {
        +
        872  uint32_t count = sample_number.size();
        +
        873  RCHECK(ReadWriteHeaderInternal(buffer) &&
        +
        874  buffer->ReadWriteUInt32(&count));
        +
        875 
        +
        876  sample_number.resize(count);
        +
        877  for (uint32_t i = 0; i < count; ++i)
        +
        878  RCHECK(buffer->ReadWriteUInt32(&sample_number[i]));
        +
        879  return true;
        880 }
        881 
        -
        882 SyncSample::SyncSample() {}
        -
        883 SyncSample::~SyncSample() {}
        -
        884 FourCC SyncSample::BoxType() const { return FOURCC_STSS; }
        -
        885 
        -
        886 bool SyncSample::ReadWriteInternal(BoxBuffer* buffer) {
        -
        887  uint32_t count = sample_number.size();
        -
        888  RCHECK(ReadWriteHeaderInternal(buffer) &&
        -
        889  buffer->ReadWriteUInt32(&count));
        -
        890 
        -
        891  sample_number.resize(count);
        -
        892  for (uint32_t i = 0; i < count; ++i)
        -
        893  RCHECK(buffer->ReadWriteUInt32(&sample_number[i]));
        -
        894  return true;
        -
        895 }
        -
        896 
        -
        897 uint32_t SyncSample::ComputeSizeInternal() {
        -
        898  // Sync sample box is optional. Skip it if it is empty.
        -
        899  if (sample_number.empty())
        -
        900  return 0;
        -
        901  return HeaderSize() + sizeof(uint32_t) +
        -
        902  sizeof(uint32_t) * sample_number.size();
        -
        903 }
        -
        904 
        -
        905 SampleTable::SampleTable() {}
        -
        906 SampleTable::~SampleTable() {}
        -
        907 FourCC SampleTable::BoxType() const { return FOURCC_STBL; }
        -
        908 
        -
        909 bool SampleTable::ReadWriteInternal(BoxBuffer* buffer) {
        -
        910  RCHECK(ReadWriteHeaderInternal(buffer) &&
        -
        911  buffer->PrepareChildren() &&
        -
        912  buffer->ReadWriteChild(&description) &&
        -
        913  buffer->ReadWriteChild(&decoding_time_to_sample) &&
        -
        914  buffer->TryReadWriteChild(&composition_time_to_sample) &&
        -
        915  buffer->ReadWriteChild(&sample_to_chunk));
        +
        882 uint32_t SyncSample::ComputeSizeInternal() {
        +
        883  // Sync sample box is optional. Skip it if it is empty.
        +
        884  if (sample_number.empty())
        +
        885  return 0;
        +
        886  return HeaderSize() + sizeof(uint32_t) +
        +
        887  sizeof(uint32_t) * sample_number.size();
        +
        888 }
        +
        889 
        +
        890 SampleTable::SampleTable() {}
        +
        891 SampleTable::~SampleTable() {}
        +
        892 FourCC SampleTable::BoxType() const { return FOURCC_STBL; }
        +
        893 
        +
        894 bool SampleTable::ReadWriteInternal(BoxBuffer* buffer) {
        +
        895  RCHECK(ReadWriteHeaderInternal(buffer) &&
        +
        896  buffer->PrepareChildren() &&
        +
        897  buffer->ReadWriteChild(&description) &&
        +
        898  buffer->ReadWriteChild(&decoding_time_to_sample) &&
        +
        899  buffer->TryReadWriteChild(&composition_time_to_sample) &&
        +
        900  buffer->ReadWriteChild(&sample_to_chunk));
        +
        901 
        +
        902  if (buffer->Reading()) {
        +
        903  BoxReader* reader = buffer->reader();
        +
        904  DCHECK(reader);
        +
        905 
        +
        906  // Either SampleSize or CompactSampleSize must present.
        +
        907  if (reader->ChildExist(&sample_size)) {
        +
        908  RCHECK(reader->ReadChild(&sample_size));
        +
        909  } else {
        +
        910  CompactSampleSize compact_sample_size;
        +
        911  RCHECK(reader->ReadChild(&compact_sample_size));
        +
        912  sample_size.sample_size = 0;
        +
        913  sample_size.sample_count = compact_sample_size.sizes.size();
        +
        914  sample_size.sizes.swap(compact_sample_size.sizes);
        +
        915  }
        916 
        -
        917  if (buffer->Reading()) {
        -
        918  BoxReader* reader = buffer->reader();
        -
        919  DCHECK(reader);
        -
        920 
        -
        921  // Either SampleSize or CompactSampleSize must present.
        -
        922  if (reader->ChildExist(&sample_size)) {
        -
        923  RCHECK(reader->ReadChild(&sample_size));
        -
        924  } else {
        -
        925  CompactSampleSize compact_sample_size;
        -
        926  RCHECK(reader->ReadChild(&compact_sample_size));
        -
        927  sample_size.sample_size = 0;
        -
        928  sample_size.sample_count = compact_sample_size.sizes.size();
        -
        929  sample_size.sizes.swap(compact_sample_size.sizes);
        -
        930  }
        -
        931 
        -
        932  // Either ChunkOffset or ChunkLargeOffset must present.
        -
        933  if (reader->ChildExist(&chunk_large_offset)) {
        -
        934  RCHECK(reader->ReadChild(&chunk_large_offset));
        -
        935  } else {
        -
        936  ChunkOffset chunk_offset;
        -
        937  RCHECK(reader->ReadChild(&chunk_offset));
        -
        938  chunk_large_offset.offsets.swap(chunk_offset.offsets);
        -
        939  }
        -
        940  } else {
        -
        941  RCHECK(buffer->ReadWriteChild(&sample_size) &&
        -
        942  buffer->ReadWriteChild(&chunk_large_offset));
        -
        943  }
        -
        944  RCHECK(buffer->TryReadWriteChild(&sync_sample));
        -
        945  return true;
        -
        946 }
        -
        947 
        -
        948 uint32_t SampleTable::ComputeSizeInternal() {
        -
        949  return HeaderSize() + description.ComputeSize() +
        -
        950  decoding_time_to_sample.ComputeSize() +
        -
        951  composition_time_to_sample.ComputeSize() +
        -
        952  sample_to_chunk.ComputeSize() + sample_size.ComputeSize() +
        -
        953  chunk_large_offset.ComputeSize() + sync_sample.ComputeSize();
        -
        954 }
        -
        955 
        -
        956 EditList::EditList() {}
        -
        957 EditList::~EditList() {}
        -
        958 FourCC EditList::BoxType() const { return FOURCC_ELST; }
        -
        959 
        -
        960 bool EditList::ReadWriteInternal(BoxBuffer* buffer) {
        -
        961  uint32_t count = edits.size();
        -
        962  RCHECK(ReadWriteHeaderInternal(buffer) && buffer->ReadWriteUInt32(&count));
        -
        963  edits.resize(count);
        -
        964 
        -
        965  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
        -
        966  for (uint32_t i = 0; i < count; ++i) {
        -
        967  RCHECK(
        -
        968  buffer->ReadWriteUInt64NBytes(&edits[i].segment_duration, num_bytes) &&
        -
        969  buffer->ReadWriteInt64NBytes(&edits[i].media_time, num_bytes) &&
        -
        970  buffer->ReadWriteInt16(&edits[i].media_rate_integer) &&
        -
        971  buffer->ReadWriteInt16(&edits[i].media_rate_fraction));
        +
        917  // Either ChunkOffset or ChunkLargeOffset must present.
        +
        918  if (reader->ChildExist(&chunk_large_offset)) {
        +
        919  RCHECK(reader->ReadChild(&chunk_large_offset));
        +
        920  } else {
        +
        921  ChunkOffset chunk_offset;
        +
        922  RCHECK(reader->ReadChild(&chunk_offset));
        +
        923  chunk_large_offset.offsets.swap(chunk_offset.offsets);
        +
        924  }
        +
        925  } else {
        +
        926  RCHECK(buffer->ReadWriteChild(&sample_size) &&
        +
        927  buffer->ReadWriteChild(&chunk_large_offset));
        +
        928  }
        +
        929  RCHECK(buffer->TryReadWriteChild(&sync_sample));
        +
        930  return true;
        +
        931 }
        +
        932 
        +
        933 uint32_t SampleTable::ComputeSizeInternal() {
        +
        934  return HeaderSize() + description.ComputeSize() +
        +
        935  decoding_time_to_sample.ComputeSize() +
        +
        936  composition_time_to_sample.ComputeSize() +
        +
        937  sample_to_chunk.ComputeSize() + sample_size.ComputeSize() +
        +
        938  chunk_large_offset.ComputeSize() + sync_sample.ComputeSize();
        +
        939 }
        +
        940 
        +
        941 EditList::EditList() {}
        +
        942 EditList::~EditList() {}
        +
        943 FourCC EditList::BoxType() const { return FOURCC_ELST; }
        +
        944 
        +
        945 bool EditList::ReadWriteInternal(BoxBuffer* buffer) {
        +
        946  uint32_t count = edits.size();
        +
        947  RCHECK(ReadWriteHeaderInternal(buffer) && buffer->ReadWriteUInt32(&count));
        +
        948  edits.resize(count);
        +
        949 
        +
        950  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
        +
        951  for (uint32_t i = 0; i < count; ++i) {
        +
        952  RCHECK(
        +
        953  buffer->ReadWriteUInt64NBytes(&edits[i].segment_duration, num_bytes) &&
        +
        954  buffer->ReadWriteInt64NBytes(&edits[i].media_time, num_bytes) &&
        +
        955  buffer->ReadWriteInt16(&edits[i].media_rate_integer) &&
        +
        956  buffer->ReadWriteInt16(&edits[i].media_rate_fraction));
        +
        957  }
        +
        958  return true;
        +
        959 }
        +
        960 
        +
        961 uint32_t EditList::ComputeSizeInternal() {
        +
        962  // EditList box is optional. Skip it if it is empty.
        +
        963  if (edits.empty())
        +
        964  return 0;
        +
        965 
        +
        966  version = 0;
        +
        967  for (uint32_t i = 0; i < edits.size(); ++i) {
        +
        968  if (!IsFitIn32Bits(edits[i].segment_duration, edits[i].media_time)) {
        +
        969  version = 1;
        +
        970  break;
        +
        971  }
        972  }
        -
        973  return true;
        -
        974 }
        -
        975 
        -
        976 uint32_t EditList::ComputeSizeInternal() {
        -
        977  // EditList box is optional. Skip it if it is empty.
        -
        978  if (edits.empty())
        -
        979  return 0;
        -
        980 
        -
        981  version = 0;
        -
        982  for (uint32_t i = 0; i < edits.size(); ++i) {
        -
        983  if (!IsFitIn32Bits(edits[i].segment_duration, edits[i].media_time)) {
        -
        984  version = 1;
        -
        985  break;
        -
        986  }
        -
        987  }
        -
        988  return HeaderSize() + sizeof(uint32_t) +
        -
        989  (sizeof(uint32_t) * (1 + version) * 2 + sizeof(int16_t) * 2) *
        -
        990  edits.size();
        -
        991 }
        -
        992 
        -
        993 Edit::Edit() {}
        -
        994 Edit::~Edit() {}
        -
        995 FourCC Edit::BoxType() const { return FOURCC_EDTS; }
        -
        996 
        -
        997 bool Edit::ReadWriteInternal(BoxBuffer* buffer) {
        -
        998  return ReadWriteHeaderInternal(buffer) &&
        -
        999  buffer->PrepareChildren() &&
        -
        1000  buffer->ReadWriteChild(&list);
        -
        1001 }
        -
        1002 
        -
        1003 uint32_t Edit::ComputeSizeInternal() {
        -
        1004  // Edit box is optional. Skip it if it is empty.
        -
        1005  if (list.edits.empty())
        -
        1006  return 0;
        -
        1007  return HeaderSize() + list.ComputeSize();
        -
        1008 }
        -
        1009 
        -
        1010 HandlerReference::HandlerReference() : handler_type(FOURCC_NULL) {}
        -
        1011 HandlerReference::~HandlerReference() {}
        -
        1012 FourCC HandlerReference::BoxType() const { return FOURCC_HDLR; }
        -
        1013 
        -
        1014 bool HandlerReference::ReadWriteInternal(BoxBuffer* buffer) {
        -
        1015  std::vector<uint8_t> handler_name;
        -
        1016  if (!buffer->Reading()) {
        -
        1017  switch (handler_type) {
        -
        1018  case FOURCC_VIDE:
        -
        1019  handler_name.assign(kVideoHandlerName,
        -
        1020  kVideoHandlerName + arraysize(kVideoHandlerName));
        -
        1021  break;
        -
        1022  case FOURCC_SOUN:
        -
        1023  handler_name.assign(kAudioHandlerName,
        -
        1024  kAudioHandlerName + arraysize(kAudioHandlerName));
        -
        1025  break;
        -
        1026  case FOURCC_TEXT:
        -
        1027  handler_name.assign(kTextHandlerName,
        -
        1028  kTextHandlerName + arraysize(kTextHandlerName));
        -
        1029  break;
        -
        1030  case FOURCC_ID32:
        -
        1031  break;
        -
        1032  default:
        -
        1033  NOTIMPLEMENTED();
        -
        1034  return false;
        -
        1035  }
        -
        1036  }
        -
        1037  RCHECK(ReadWriteHeaderInternal(buffer) &&
        -
        1038  buffer->IgnoreBytes(4) && // predefined.
        -
        1039  buffer->ReadWriteFourCC(&handler_type));
        -
        1040  if (!buffer->Reading()) {
        -
        1041  RCHECK(buffer->IgnoreBytes(12) && // reserved.
        -
        1042  buffer->ReadWriteVector(&handler_name, handler_name.size()));
        -
        1043  }
        -
        1044  return true;
        -
        1045 }
        -
        1046 
        -
        1047 uint32_t HandlerReference::ComputeSizeInternal() {
        -
        1048  uint32_t box_size = HeaderSize() + kFourCCSize + 16; // 16 bytes Reserved
        -
        1049  switch (handler_type) {
        -
        1050  case FOURCC_VIDE:
        -
        1051  box_size += sizeof(kVideoHandlerName);
        -
        1052  break;
        -
        1053  case FOURCC_SOUN:
        -
        1054  box_size += sizeof(kAudioHandlerName);
        -
        1055  break;
        -
        1056  case FOURCC_TEXT:
        -
        1057  box_size += sizeof(kTextHandlerName);
        -
        1058  break;
        -
        1059  case FOURCC_ID32:
        -
        1060  break;
        -
        1061  default:
        -
        1062  NOTIMPLEMENTED();
        -
        1063  }
        -
        1064  return box_size;
        -
        1065 }
        -
        1066 
        -
        1067 bool Language::ReadWrite(BoxBuffer* buffer) {
        -
        1068  if (buffer->Reading()) {
        -
        1069  // Read language codes into temp first then use BitReader to read the
        -
        1070  // values. ISO-639-2/T language code: unsigned int(5)[3] language (2 bytes).
        -
        1071  std::vector<uint8_t> temp;
        -
        1072  RCHECK(buffer->ReadWriteVector(&temp, 2));
        +
        973  return HeaderSize() + sizeof(uint32_t) +
        +
        974  (sizeof(uint32_t) * (1 + version) * 2 + sizeof(int16_t) * 2) *
        +
        975  edits.size();
        +
        976 }
        +
        977 
        +
        978 Edit::Edit() {}
        +
        979 Edit::~Edit() {}
        +
        980 FourCC Edit::BoxType() const { return FOURCC_EDTS; }
        +
        981 
        +
        982 bool Edit::ReadWriteInternal(BoxBuffer* buffer) {
        +
        983  return ReadWriteHeaderInternal(buffer) &&
        +
        984  buffer->PrepareChildren() &&
        +
        985  buffer->ReadWriteChild(&list);
        +
        986 }
        +
        987 
        +
        988 uint32_t Edit::ComputeSizeInternal() {
        +
        989  // Edit box is optional. Skip it if it is empty.
        +
        990  if (list.edits.empty())
        +
        991  return 0;
        +
        992  return HeaderSize() + list.ComputeSize();
        +
        993 }
        +
        994 
        +
        995 HandlerReference::HandlerReference() : handler_type(FOURCC_NULL) {}
        +
        996 HandlerReference::~HandlerReference() {}
        +
        997 FourCC HandlerReference::BoxType() const { return FOURCC_HDLR; }
        +
        998 
        +
        999 bool HandlerReference::ReadWriteInternal(BoxBuffer* buffer) {
        +
        1000  std::vector<uint8_t> handler_name;
        +
        1001  if (!buffer->Reading()) {
        +
        1002  switch (handler_type) {
        +
        1003  case FOURCC_VIDE:
        +
        1004  handler_name.assign(kVideoHandlerName,
        +
        1005  kVideoHandlerName + arraysize(kVideoHandlerName));
        +
        1006  break;
        +
        1007  case FOURCC_SOUN:
        +
        1008  handler_name.assign(kAudioHandlerName,
        +
        1009  kAudioHandlerName + arraysize(kAudioHandlerName));
        +
        1010  break;
        +
        1011  case FOURCC_TEXT:
        +
        1012  handler_name.assign(kTextHandlerName,
        +
        1013  kTextHandlerName + arraysize(kTextHandlerName));
        +
        1014  break;
        +
        1015  case FOURCC_ID32:
        +
        1016  break;
        +
        1017  default:
        +
        1018  NOTIMPLEMENTED();
        +
        1019  return false;
        +
        1020  }
        +
        1021  }
        +
        1022  RCHECK(ReadWriteHeaderInternal(buffer) &&
        +
        1023  buffer->IgnoreBytes(4) && // predefined.
        +
        1024  buffer->ReadWriteFourCC(&handler_type));
        +
        1025  if (!buffer->Reading()) {
        +
        1026  RCHECK(buffer->IgnoreBytes(12) && // reserved.
        +
        1027  buffer->ReadWriteVector(&handler_name, handler_name.size()));
        +
        1028  }
        +
        1029  return true;
        +
        1030 }
        +
        1031 
        +
        1032 uint32_t HandlerReference::ComputeSizeInternal() {
        +
        1033  uint32_t box_size = HeaderSize() + kFourCCSize + 16; // 16 bytes Reserved
        +
        1034  switch (handler_type) {
        +
        1035  case FOURCC_VIDE:
        +
        1036  box_size += sizeof(kVideoHandlerName);
        +
        1037  break;
        +
        1038  case FOURCC_SOUN:
        +
        1039  box_size += sizeof(kAudioHandlerName);
        +
        1040  break;
        +
        1041  case FOURCC_TEXT:
        +
        1042  box_size += sizeof(kTextHandlerName);
        +
        1043  break;
        +
        1044  case FOURCC_ID32:
        +
        1045  break;
        +
        1046  default:
        +
        1047  NOTIMPLEMENTED();
        +
        1048  }
        +
        1049  return box_size;
        +
        1050 }
        +
        1051 
        +
        1052 bool Language::ReadWrite(BoxBuffer* buffer) {
        +
        1053  if (buffer->Reading()) {
        +
        1054  // Read language codes into temp first then use BitReader to read the
        +
        1055  // values. ISO-639-2/T language code: unsigned int(5)[3] language (2 bytes).
        +
        1056  std::vector<uint8_t> temp;
        +
        1057  RCHECK(buffer->ReadWriteVector(&temp, 2));
        +
        1058 
        +
        1059  BitReader bit_reader(&temp[0], 2);
        +
        1060  bit_reader.SkipBits(1);
        +
        1061  char language[3];
        +
        1062  for (int i = 0; i < 3; ++i) {
        +
        1063  CHECK(bit_reader.ReadBits(5, &language[i]));
        +
        1064  language[i] += 0x60;
        +
        1065  }
        +
        1066  code.assign(language, 3);
        +
        1067  } else {
        +
        1068  // Set up default language if it is not set.
        +
        1069  const char kUndefinedLanguage[] = "und";
        +
        1070  if (code.empty())
        +
        1071  code = kUndefinedLanguage;
        +
        1072  DCHECK_EQ(code.size(), 3u);
        1073 
        -
        1074  BitReader bit_reader(&temp[0], 2);
        -
        1075  bit_reader.SkipBits(1);
        -
        1076  char language[3];
        -
        1077  for (int i = 0; i < 3; ++i) {
        -
        1078  CHECK(bit_reader.ReadBits(5, &language[i]));
        -
        1079  language[i] += 0x60;
        -
        1080  }
        -
        1081  code.assign(language, 3);
        -
        1082  } else {
        -
        1083  // Set up default language if it is not set.
        -
        1084  const char kUndefinedLanguage[] = "und";
        -
        1085  if (code.empty())
        -
        1086  code = kUndefinedLanguage;
        -
        1087  DCHECK_EQ(code.size(), 3u);
        -
        1088 
        -
        1089  // Lang format: bit(1) pad, unsigned int(5)[3] language.
        -
        1090  uint16_t lang = 0;
        -
        1091  for (int i = 0; i < 3; ++i)
        -
        1092  lang |= (code[i] - 0x60) << ((2 - i) * 5);
        -
        1093  RCHECK(buffer->ReadWriteUInt16(&lang));
        -
        1094  }
        -
        1095  return true;
        -
        1096 }
        -
        1097 
        -
        1098 uint32_t Language::ComputeSize() const {
        -
        1099  // ISO-639-2/T language code: unsigned int(5)[3] language (2 bytes).
        -
        1100  return 2;
        -
        1101 }
        -
        1102 
        -
        1103 bool PrivFrame::ReadWrite(BoxBuffer* buffer) {
        -
        1104  FourCC fourcc = FOURCC_PRIV;
        -
        1105  RCHECK(buffer->ReadWriteFourCC(&fourcc));
        -
        1106  if (fourcc != FOURCC_PRIV) {
        -
        1107  VLOG(1) << "Skip unrecognized id3 frame during read: "
        -
        1108  << FourCCToString(fourcc);
        -
        1109  return true;
        -
        1110  }
        -
        1111 
        -
        1112  uint32_t frame_size = owner.size() + 1 + value.size();
        -
        1113  // size should be encoded as synchsafe integer, which is not support here.
        -
        1114  // We don't expect frame_size to be larger than 0x7F. Synchsafe integers less
        -
        1115  // than 0x7F is encoded in the same way as normal integer.
        -
        1116  DCHECK_LT(frame_size, 0x7Fu);
        -
        1117  uint16_t flags = 0;
        -
        1118  RCHECK(buffer->ReadWriteUInt32(&frame_size) &&
        -
        1119  buffer->ReadWriteUInt16(&flags));
        -
        1120 
        -
        1121  if (buffer->Reading()) {
        -
        1122  std::string str;
        -
        1123  RCHECK(buffer->ReadWriteString(&str, frame_size));
        -
        1124  // |owner| is null terminated.
        -
        1125  size_t pos = str.find('\0');
        -
        1126  RCHECK(pos < str.size());
        -
        1127  owner = str.substr(0, pos);
        -
        1128  value = str.substr(pos + 1);
        -
        1129  } else {
        -
        1130  uint8_t byte = 0; // Null terminating byte between owner and value.
        -
        1131  RCHECK(buffer->ReadWriteString(&owner, owner.size()) &&
        -
        1132  buffer->ReadWriteUInt8(&byte) &&
        -
        1133  buffer->ReadWriteString(&value, value.size()));
        -
        1134  }
        -
        1135  return true;
        -
        1136 }
        -
        1137 
        -
        1138 uint32_t PrivFrame::ComputeSize() const {
        -
        1139  if (owner.empty() && value.empty())
        -
        1140  return 0;
        -
        1141  const uint32_t kFourCCSize = 4;
        -
        1142  return kFourCCSize + sizeof(uint32_t) + sizeof(uint16_t) + owner.size() + 1 +
        -
        1143  value.size();
        -
        1144 }
        -
        1145 
        -
        1146 ID3v2::ID3v2() {}
        -
        1147 ID3v2::~ID3v2() {}
        -
        1148 
        -
        1149 FourCC ID3v2::BoxType() const { return FOURCC_ID32; }
        -
        1150 
        -
        1151 bool ID3v2::ReadWriteInternal(BoxBuffer* buffer) {
        -
        1152  RCHECK(ReadWriteHeaderInternal(buffer) &&
        -
        1153  language.ReadWrite(buffer));
        +
        1074  // Lang format: bit(1) pad, unsigned int(5)[3] language.
        +
        1075  uint16_t lang = 0;
        +
        1076  for (int i = 0; i < 3; ++i)
        +
        1077  lang |= (code[i] - 0x60) << ((2 - i) * 5);
        +
        1078  RCHECK(buffer->ReadWriteUInt16(&lang));
        +
        1079  }
        +
        1080  return true;
        +
        1081 }
        +
        1082 
        +
        1083 uint32_t Language::ComputeSize() const {
        +
        1084  // ISO-639-2/T language code: unsigned int(5)[3] language (2 bytes).
        +
        1085  return 2;
        +
        1086 }
        +
        1087 
        +
        1088 bool PrivFrame::ReadWrite(BoxBuffer* buffer) {
        +
        1089  FourCC fourcc = FOURCC_PRIV;
        +
        1090  RCHECK(buffer->ReadWriteFourCC(&fourcc));
        +
        1091  if (fourcc != FOURCC_PRIV) {
        +
        1092  VLOG(1) << "Skip unrecognized id3 frame during read: "
        +
        1093  << FourCCToString(fourcc);
        +
        1094  return true;
        +
        1095  }
        +
        1096 
        +
        1097  uint32_t frame_size = owner.size() + 1 + value.size();
        +
        1098  // size should be encoded as synchsafe integer, which is not support here.
        +
        1099  // We don't expect frame_size to be larger than 0x7F. Synchsafe integers less
        +
        1100  // than 0x7F is encoded in the same way as normal integer.
        +
        1101  DCHECK_LT(frame_size, 0x7Fu);
        +
        1102  uint16_t flags = 0;
        +
        1103  RCHECK(buffer->ReadWriteUInt32(&frame_size) &&
        +
        1104  buffer->ReadWriteUInt16(&flags));
        +
        1105 
        +
        1106  if (buffer->Reading()) {
        +
        1107  std::string str;
        +
        1108  RCHECK(buffer->ReadWriteString(&str, frame_size));
        +
        1109  // |owner| is null terminated.
        +
        1110  size_t pos = str.find('\0');
        +
        1111  RCHECK(pos < str.size());
        +
        1112  owner = str.substr(0, pos);
        +
        1113  value = str.substr(pos + 1);
        +
        1114  } else {
        +
        1115  uint8_t byte = 0; // Null terminating byte between owner and value.
        +
        1116  RCHECK(buffer->ReadWriteString(&owner, owner.size()) &&
        +
        1117  buffer->ReadWriteUInt8(&byte) &&
        +
        1118  buffer->ReadWriteString(&value, value.size()));
        +
        1119  }
        +
        1120  return true;
        +
        1121 }
        +
        1122 
        +
        1123 uint32_t PrivFrame::ComputeSize() const {
        +
        1124  if (owner.empty() && value.empty())
        +
        1125  return 0;
        +
        1126  const uint32_t kFourCCSize = 4;
        +
        1127  return kFourCCSize + sizeof(uint32_t) + sizeof(uint16_t) + owner.size() + 1 +
        +
        1128  value.size();
        +
        1129 }
        +
        1130 
        +
        1131 ID3v2::ID3v2() {}
        +
        1132 ID3v2::~ID3v2() {}
        +
        1133 
        +
        1134 FourCC ID3v2::BoxType() const { return FOURCC_ID32; }
        +
        1135 
        +
        1136 bool ID3v2::ReadWriteInternal(BoxBuffer* buffer) {
        +
        1137  RCHECK(ReadWriteHeaderInternal(buffer) &&
        +
        1138  language.ReadWrite(buffer));
        +
        1139 
        +
        1140  // Read/Write ID3v2 header
        +
        1141  std::string id3v2_identifier = kID3v2Identifier;
        +
        1142  uint16_t version = kID3v2Version;
        +
        1143  // We only support PrivateFrame in ID3.
        +
        1144  uint32_t data_size = private_frame.ComputeSize();
        +
        1145  // size should be encoded as synchsafe integer, which is not support here.
        +
        1146  // We don't expect data_size to be larger than 0x7F. Synchsafe integers less
        +
        1147  // than 0x7F is encoded in the same way as normal integer.
        +
        1148  DCHECK_LT(data_size, 0x7Fu);
        +
        1149  uint8_t flags = 0;
        +
        1150  RCHECK(buffer->ReadWriteString(&id3v2_identifier, id3v2_identifier.size()) &&
        +
        1151  buffer->ReadWriteUInt16(&version) &&
        +
        1152  buffer->ReadWriteUInt8(&flags) &&
        +
        1153  buffer->ReadWriteUInt32(&data_size));
        1154 
        -
        1155  // Read/Write ID3v2 header
        -
        1156  std::string id3v2_identifier = kID3v2Identifier;
        -
        1157  uint16_t version = kID3v2Version;
        -
        1158  // We only support PrivateFrame in ID3.
        -
        1159  uint32_t data_size = private_frame.ComputeSize();
        -
        1160  // size should be encoded as synchsafe integer, which is not support here.
        -
        1161  // We don't expect data_size to be larger than 0x7F. Synchsafe integers less
        -
        1162  // than 0x7F is encoded in the same way as normal integer.
        -
        1163  DCHECK_LT(data_size, 0x7Fu);
        -
        1164  uint8_t flags = 0;
        -
        1165  RCHECK(buffer->ReadWriteString(&id3v2_identifier, id3v2_identifier.size()) &&
        -
        1166  buffer->ReadWriteUInt16(&version) &&
        -
        1167  buffer->ReadWriteUInt8(&flags) &&
        -
        1168  buffer->ReadWriteUInt32(&data_size));
        +
        1155  RCHECK(private_frame.ReadWrite(buffer));
        +
        1156  return true;
        +
        1157 }
        +
        1158 
        +
        1159 uint32_t ID3v2::ComputeSizeInternal() {
        +
        1160  uint32_t private_frame_size = private_frame.ComputeSize();
        +
        1161  // Skip ID3v2 box generation if there is no private frame.
        +
        1162  return private_frame_size == 0 ? 0 : HeaderSize() + language.ComputeSize() +
        +
        1163  kID3v2HeaderSize +
        +
        1164  private_frame_size;
        +
        1165 }
        +
        1166 
        +
        1167 Metadata::Metadata() {}
        +
        1168 Metadata::~Metadata() {}
        1169 
        -
        1170  RCHECK(private_frame.ReadWrite(buffer));
        -
        1171  return true;
        +
        1170 FourCC Metadata::BoxType() const {
        +
        1171  return FOURCC_META;
        1172 }
        1173 
        -
        1174 uint32_t ID3v2::ComputeSizeInternal() {
        -
        1175  uint32_t private_frame_size = private_frame.ComputeSize();
        -
        1176  // Skip ID3v2 box generation if there is no private frame.
        -
        1177  return private_frame_size == 0 ? 0 : HeaderSize() + language.ComputeSize() +
        -
        1178  kID3v2HeaderSize +
        -
        1179  private_frame_size;
        +
        1174 bool Metadata::ReadWriteInternal(BoxBuffer* buffer) {
        +
        1175  RCHECK(ReadWriteHeaderInternal(buffer) &&
        +
        1176  buffer->PrepareChildren() &&
        +
        1177  buffer->ReadWriteChild(&handler) &&
        +
        1178  buffer->TryReadWriteChild(&id3v2));
        +
        1179  return true;
        1180 }
        1181 
        -
        1182 Metadata::Metadata() {}
        -
        1183 Metadata::~Metadata() {}
        -
        1184 
        -
        1185 FourCC Metadata::BoxType() const {
        -
        1186  return FOURCC_META;
        +
        1182 uint32_t Metadata::ComputeSizeInternal() {
        +
        1183  uint32_t id3v2_size = id3v2.ComputeSize();
        +
        1184  // Skip metadata box generation if there is no metadata box.
        +
        1185  return id3v2_size == 0 ? 0
        +
        1186  : HeaderSize() + handler.ComputeSize() + id3v2_size;
        1187 }
        1188 
        -
        1189 bool Metadata::ReadWriteInternal(BoxBuffer* buffer) {
        -
        1190  RCHECK(ReadWriteHeaderInternal(buffer) &&
        -
        1191  buffer->PrepareChildren() &&
        -
        1192  buffer->ReadWriteChild(&handler) &&
        -
        1193  buffer->TryReadWriteChild(&id3v2));
        -
        1194  return true;
        +
        1189 CodecConfigurationRecord::CodecConfigurationRecord() : box_type(FOURCC_NULL) {}
        +
        1190 CodecConfigurationRecord::~CodecConfigurationRecord() {}
        + +
        1192  // CodecConfigurationRecord should be parsed according to format recovered in
        +
        1193  // VideoSampleEntry. |box_type| is determined dynamically there.
        +
        1194  return box_type;
        1195 }
        1196 
        -
        1197 uint32_t Metadata::ComputeSizeInternal() {
        -
        1198  uint32_t id3v2_size = id3v2.ComputeSize();
        -
        1199  // Skip metadata box generation if there is no metadata box.
        -
        1200  return id3v2_size == 0 ? 0
        -
        1201  : HeaderSize() + handler.ComputeSize() + id3v2_size;
        -
        1202 }
        -
        1203 
        -
        1204 CodecConfigurationRecord::CodecConfigurationRecord() : box_type(FOURCC_NULL) {}
        -
        1205 CodecConfigurationRecord::~CodecConfigurationRecord() {}
        - -
        1207  // CodecConfigurationRecord should be parsed according to format recovered in
        -
        1208  // VideoSampleEntry. |box_type| is determined dynamically there.
        -
        1209  return box_type;
        -
        1210 }
        -
        1211 
        -
        1212 bool CodecConfigurationRecord::ReadWriteInternal(BoxBuffer* buffer) {
        -
        1213  RCHECK(ReadWriteHeaderInternal(buffer));
        -
        1214  if (buffer->Reading()) {
        -
        1215  RCHECK(buffer->ReadWriteVector(&data, buffer->BytesLeft()));
        -
        1216  } else {
        -
        1217  RCHECK(buffer->ReadWriteVector(&data, data.size()));
        -
        1218  }
        -
        1219  return true;
        -
        1220 }
        -
        1221 
        -
        1222 uint32_t CodecConfigurationRecord::ComputeSizeInternal() {
        -
        1223  if (data.empty())
        -
        1224  return 0;
        -
        1225  return HeaderSize() + data.size();
        -
        1226 }
        -
        1227 
        -
        1228 PixelAspectRatio::PixelAspectRatio() : h_spacing(0), v_spacing(0) {}
        -
        1229 PixelAspectRatio::~PixelAspectRatio() {}
        -
        1230 FourCC PixelAspectRatio::BoxType() const { return FOURCC_PASP; }
        -
        1231 
        -
        1232 bool PixelAspectRatio::ReadWriteInternal(BoxBuffer* buffer) {
        -
        1233  RCHECK(ReadWriteHeaderInternal(buffer) &&
        -
        1234  buffer->ReadWriteUInt32(&h_spacing) &&
        -
        1235  buffer->ReadWriteUInt32(&v_spacing));
        -
        1236  return true;
        -
        1237 }
        -
        1238 
        -
        1239 uint32_t PixelAspectRatio::ComputeSizeInternal() {
        -
        1240  // This box is optional. Skip it if it is not initialized.
        -
        1241  if (h_spacing == 0 && v_spacing == 0)
        -
        1242  return 0;
        -
        1243  // Both values must be positive.
        -
        1244  DCHECK(h_spacing != 0 && v_spacing != 0);
        -
        1245  return HeaderSize() + sizeof(h_spacing) + sizeof(v_spacing);
        -
        1246 }
        -
        1247 
        -
        1248 VideoSampleEntry::VideoSampleEntry()
        -
        1249  : format(FOURCC_NULL), data_reference_index(1), width(0), height(0) {}
        -
        1250 
        -
        1251 VideoSampleEntry::~VideoSampleEntry() {}
        - -
        1253  if (format == FOURCC_NULL) {
        -
        1254  LOG(ERROR) << "VideoSampleEntry should be parsed according to the "
        -
        1255  << "handler type recovered in its Media ancestor.";
        -
        1256  }
        -
        1257  return format;
        -
        1258 }
        -
        1259 
        -
        1260 bool VideoSampleEntry::ReadWriteInternal(BoxBuffer* buffer) {
        -
        1261  std::vector<uint8_t> compressor_name;
        -
        1262  if (buffer->Reading()) {
        -
        1263  DCHECK(buffer->reader());
        -
        1264  format = buffer->reader()->type();
        -
        1265  } else {
        -
        1266  RCHECK(ReadWriteHeaderInternal(buffer));
        -
        1267 
        -
        1268  const FourCC actual_format = GetActualFormat();
        -
        1269  switch (actual_format) {
        -
        1270  case FOURCC_AVC1:
        -
        1271  compressor_name.assign(
        -
        1272  kAvcCompressorName,
        -
        1273  kAvcCompressorName + arraysize(kAvcCompressorName));
        -
        1274  break;
        -
        1275  case FOURCC_HEV1:
        -
        1276  case FOURCC_HVC1:
        -
        1277  compressor_name.assign(
        -
        1278  kHevcCompressorName,
        -
        1279  kHevcCompressorName + arraysize(kHevcCompressorName));
        -
        1280  break;
        -
        1281  case FOURCC_VP08:
        -
        1282  case FOURCC_VP09:
        -
        1283  case FOURCC_VP10:
        -
        1284  compressor_name.assign(
        -
        1285  kVpcCompressorName,
        -
        1286  kVpcCompressorName + arraysize(kVpcCompressorName));
        -
        1287  break;
        -
        1288  default:
        -
        1289  LOG(ERROR) << FourCCToString(actual_format) << " is not supported.";
        -
        1290  return false;
        -
        1291  }
        -
        1292  compressor_name.resize(kCompressorNameSize);
        -
        1293  }
        -
        1294 
        -
        1295  uint32_t video_resolution = kVideoResolution;
        -
        1296  uint16_t video_frame_count = kVideoFrameCount;
        -
        1297  uint16_t video_depth = kVideoDepth;
        -
        1298  int16_t predefined = -1;
        -
        1299  RCHECK(buffer->IgnoreBytes(6) && // reserved.
        -
        1300  buffer->ReadWriteUInt16(&data_reference_index) &&
        -
        1301  buffer->IgnoreBytes(16) && // predefined 0.
        -
        1302  buffer->ReadWriteUInt16(&width) &&
        -
        1303  buffer->ReadWriteUInt16(&height) &&
        -
        1304  buffer->ReadWriteUInt32(&video_resolution) &&
        -
        1305  buffer->ReadWriteUInt32(&video_resolution) &&
        -
        1306  buffer->IgnoreBytes(4) && // reserved.
        -
        1307  buffer->ReadWriteUInt16(&video_frame_count) &&
        -
        1308  buffer->ReadWriteVector(&compressor_name, kCompressorNameSize) &&
        -
        1309  buffer->ReadWriteUInt16(&video_depth) &&
        -
        1310  buffer->ReadWriteInt16(&predefined));
        +
        1197 bool CodecConfigurationRecord::ReadWriteInternal(BoxBuffer* buffer) {
        +
        1198  RCHECK(ReadWriteHeaderInternal(buffer));
        +
        1199  if (buffer->Reading()) {
        +
        1200  RCHECK(buffer->ReadWriteVector(&data, buffer->BytesLeft()));
        +
        1201  } else {
        +
        1202  RCHECK(buffer->ReadWriteVector(&data, data.size()));
        +
        1203  }
        +
        1204  return true;
        +
        1205 }
        +
        1206 
        +
        1207 uint32_t CodecConfigurationRecord::ComputeSizeInternal() {
        +
        1208  if (data.empty())
        +
        1209  return 0;
        +
        1210  return HeaderSize() + data.size();
        +
        1211 }
        +
        1212 
        +
        1213 PixelAspectRatio::PixelAspectRatio() : h_spacing(0), v_spacing(0) {}
        +
        1214 PixelAspectRatio::~PixelAspectRatio() {}
        +
        1215 FourCC PixelAspectRatio::BoxType() const { return FOURCC_PASP; }
        +
        1216 
        +
        1217 bool PixelAspectRatio::ReadWriteInternal(BoxBuffer* buffer) {
        +
        1218  RCHECK(ReadWriteHeaderInternal(buffer) &&
        +
        1219  buffer->ReadWriteUInt32(&h_spacing) &&
        +
        1220  buffer->ReadWriteUInt32(&v_spacing));
        +
        1221  return true;
        +
        1222 }
        +
        1223 
        +
        1224 uint32_t PixelAspectRatio::ComputeSizeInternal() {
        +
        1225  // This box is optional. Skip it if it is not initialized.
        +
        1226  if (h_spacing == 0 && v_spacing == 0)
        +
        1227  return 0;
        +
        1228  // Both values must be positive.
        +
        1229  DCHECK(h_spacing != 0 && v_spacing != 0);
        +
        1230  return HeaderSize() + sizeof(h_spacing) + sizeof(v_spacing);
        +
        1231 }
        +
        1232 
        +
        1233 VideoSampleEntry::VideoSampleEntry()
        +
        1234  : format(FOURCC_NULL), data_reference_index(1), width(0), height(0) {}
        +
        1235 
        +
        1236 VideoSampleEntry::~VideoSampleEntry() {}
        + +
        1238  if (format == FOURCC_NULL) {
        +
        1239  LOG(ERROR) << "VideoSampleEntry should be parsed according to the "
        +
        1240  << "handler type recovered in its Media ancestor.";
        +
        1241  }
        +
        1242  return format;
        +
        1243 }
        +
        1244 
        +
        1245 bool VideoSampleEntry::ReadWriteInternal(BoxBuffer* buffer) {
        +
        1246  std::vector<uint8_t> compressor_name;
        +
        1247  if (buffer->Reading()) {
        +
        1248  DCHECK(buffer->reader());
        +
        1249  format = buffer->reader()->type();
        +
        1250  } else {
        +
        1251  RCHECK(ReadWriteHeaderInternal(buffer));
        +
        1252 
        +
        1253  const FourCC actual_format = GetActualFormat();
        +
        1254  switch (actual_format) {
        +
        1255  case FOURCC_AVC1:
        +
        1256  compressor_name.assign(
        +
        1257  kAvcCompressorName,
        +
        1258  kAvcCompressorName + arraysize(kAvcCompressorName));
        +
        1259  break;
        +
        1260  case FOURCC_HEV1:
        +
        1261  case FOURCC_HVC1:
        +
        1262  compressor_name.assign(
        +
        1263  kHevcCompressorName,
        +
        1264  kHevcCompressorName + arraysize(kHevcCompressorName));
        +
        1265  break;
        +
        1266  case FOURCC_VP08:
        +
        1267  case FOURCC_VP09:
        +
        1268  case FOURCC_VP10:
        +
        1269  compressor_name.assign(
        +
        1270  kVpcCompressorName,
        +
        1271  kVpcCompressorName + arraysize(kVpcCompressorName));
        +
        1272  break;
        +
        1273  default:
        +
        1274  LOG(ERROR) << FourCCToString(actual_format) << " is not supported.";
        +
        1275  return false;
        +
        1276  }
        +
        1277  compressor_name.resize(kCompressorNameSize);
        +
        1278  }
        +
        1279 
        +
        1280  uint32_t video_resolution = kVideoResolution;
        +
        1281  uint16_t video_frame_count = kVideoFrameCount;
        +
        1282  uint16_t video_depth = kVideoDepth;
        +
        1283  int16_t predefined = -1;
        +
        1284  RCHECK(buffer->IgnoreBytes(6) && // reserved.
        +
        1285  buffer->ReadWriteUInt16(&data_reference_index) &&
        +
        1286  buffer->IgnoreBytes(16) && // predefined 0.
        +
        1287  buffer->ReadWriteUInt16(&width) &&
        +
        1288  buffer->ReadWriteUInt16(&height) &&
        +
        1289  buffer->ReadWriteUInt32(&video_resolution) &&
        +
        1290  buffer->ReadWriteUInt32(&video_resolution) &&
        +
        1291  buffer->IgnoreBytes(4) && // reserved.
        +
        1292  buffer->ReadWriteUInt16(&video_frame_count) &&
        +
        1293  buffer->ReadWriteVector(&compressor_name, kCompressorNameSize) &&
        +
        1294  buffer->ReadWriteUInt16(&video_depth) &&
        +
        1295  buffer->ReadWriteInt16(&predefined));
        +
        1296 
        +
        1297  RCHECK(buffer->PrepareChildren());
        +
        1298 
        +
        1299  if (format == FOURCC_ENCV) {
        +
        1300  if (buffer->Reading()) {
        +
        1301  // Continue scanning until a recognized protection scheme is found,
        +
        1302  // or until we run out of protection schemes.
        +
        1303  while (sinf.type.type != FOURCC_CENC) {
        +
        1304  if (!buffer->ReadWriteChild(&sinf))
        +
        1305  return false;
        +
        1306  }
        +
        1307  } else {
        +
        1308  RCHECK(buffer->ReadWriteChild(&sinf));
        +
        1309  }
        +
        1310  }
        1311 
        -
        1312  RCHECK(buffer->PrepareChildren());
        -
        1313 
        -
        1314  if (format == FOURCC_ENCV) {
        -
        1315  if (buffer->Reading()) {
        -
        1316  // Continue scanning until a recognized protection scheme is found,
        -
        1317  // or until we run out of protection schemes.
        -
        1318  while (sinf.type.type != FOURCC_CENC) {
        -
        1319  if (!buffer->ReadWriteChild(&sinf))
        -
        1320  return false;
        -
        1321  }
        -
        1322  } else {
        -
        1323  RCHECK(buffer->ReadWriteChild(&sinf));
        -
        1324  }
        -
        1325  }
        -
        1326 
        -
        1327  const FourCC actual_format = GetActualFormat();
        -
        1328  switch (actual_format) {
        -
        1329  case FOURCC_AVC1:
        -
        1330  codec_config_record.box_type = FOURCC_AVCC;
        -
        1331  break;
        -
        1332  case FOURCC_HEV1:
        -
        1333  case FOURCC_HVC1:
        -
        1334  codec_config_record.box_type = FOURCC_HVCC;
        -
        1335  break;
        -
        1336  case FOURCC_VP08:
        -
        1337  case FOURCC_VP09:
        -
        1338  case FOURCC_VP10:
        -
        1339  codec_config_record.box_type = FOURCC_VPCC;
        -
        1340  break;
        -
        1341  default:
        -
        1342  LOG(ERROR) << FourCCToString(actual_format) << " is not supported.";
        -
        1343  return false;
        -
        1344  }
        -
        1345  RCHECK(buffer->ReadWriteChild(&codec_config_record));
        -
        1346  RCHECK(buffer->TryReadWriteChild(&pixel_aspect));
        -
        1347  return true;
        -
        1348 }
        -
        1349 
        -
        1350 uint32_t VideoSampleEntry::ComputeSizeInternal() {
        -
        1351  return HeaderSize() + sizeof(data_reference_index) + sizeof(width) +
        -
        1352  sizeof(height) + sizeof(kVideoResolution) * 2 +
        -
        1353  sizeof(kVideoFrameCount) + sizeof(kVideoDepth) +
        -
        1354  pixel_aspect.ComputeSize() + sinf.ComputeSize() +
        -
        1355  codec_config_record.ComputeSize() + kCompressorNameSize + 6 + 4 + 16 +
        -
        1356  2; // 6 + 4 bytes reserved, 16 + 2 bytes predefined.
        -
        1357 }
        -
        1358 
        -
        1359 ElementaryStreamDescriptor::ElementaryStreamDescriptor() {}
        -
        1360 ElementaryStreamDescriptor::~ElementaryStreamDescriptor() {}
        -
        1361 FourCC ElementaryStreamDescriptor::BoxType() const { return FOURCC_ESDS; }
        -
        1362 
        -
        1363 bool ElementaryStreamDescriptor::ReadWriteInternal(BoxBuffer* buffer) {
        -
        1364  RCHECK(ReadWriteHeaderInternal(buffer));
        -
        1365  if (buffer->Reading()) {
        -
        1366  std::vector<uint8_t> data;
        -
        1367  RCHECK(buffer->ReadWriteVector(&data, buffer->BytesLeft()));
        -
        1368  RCHECK(es_descriptor.Parse(data));
        -
        1369  if (es_descriptor.IsAAC()) {
        -
        1370  RCHECK(aac_audio_specific_config.Parse(
        -
        1371  es_descriptor.decoder_specific_info()));
        -
        1372  }
        -
        1373  } else {
        -
        1374  DCHECK(buffer->writer());
        -
        1375  es_descriptor.Write(buffer->writer());
        -
        1376  }
        -
        1377  return true;
        -
        1378 }
        +
        1312  const FourCC actual_format = GetActualFormat();
        +
        1313  switch (actual_format) {
        +
        1314  case FOURCC_AVC1:
        +
        1315  codec_config_record.box_type = FOURCC_AVCC;
        +
        1316  break;
        +
        1317  case FOURCC_HEV1:
        +
        1318  case FOURCC_HVC1:
        +
        1319  codec_config_record.box_type = FOURCC_HVCC;
        +
        1320  break;
        +
        1321  case FOURCC_VP08:
        +
        1322  case FOURCC_VP09:
        +
        1323  case FOURCC_VP10:
        +
        1324  codec_config_record.box_type = FOURCC_VPCC;
        +
        1325  break;
        +
        1326  default:
        +
        1327  LOG(ERROR) << FourCCToString(actual_format) << " is not supported.";
        +
        1328  return false;
        +
        1329  }
        +
        1330  RCHECK(buffer->ReadWriteChild(&codec_config_record));
        +
        1331  RCHECK(buffer->TryReadWriteChild(&pixel_aspect));
        +
        1332  return true;
        +
        1333 }
        +
        1334 
        +
        1335 uint32_t VideoSampleEntry::ComputeSizeInternal() {
        +
        1336  return HeaderSize() + sizeof(data_reference_index) + sizeof(width) +
        +
        1337  sizeof(height) + sizeof(kVideoResolution) * 2 +
        +
        1338  sizeof(kVideoFrameCount) + sizeof(kVideoDepth) +
        +
        1339  pixel_aspect.ComputeSize() + sinf.ComputeSize() +
        +
        1340  codec_config_record.ComputeSize() + kCompressorNameSize + 6 + 4 + 16 +
        +
        1341  2; // 6 + 4 bytes reserved, 16 + 2 bytes predefined.
        +
        1342 }
        +
        1343 
        +
        1344 ElementaryStreamDescriptor::ElementaryStreamDescriptor() {}
        +
        1345 ElementaryStreamDescriptor::~ElementaryStreamDescriptor() {}
        +
        1346 FourCC ElementaryStreamDescriptor::BoxType() const { return FOURCC_ESDS; }
        +
        1347 
        +
        1348 bool ElementaryStreamDescriptor::ReadWriteInternal(BoxBuffer* buffer) {
        +
        1349  RCHECK(ReadWriteHeaderInternal(buffer));
        +
        1350  if (buffer->Reading()) {
        +
        1351  std::vector<uint8_t> data;
        +
        1352  RCHECK(buffer->ReadWriteVector(&data, buffer->BytesLeft()));
        +
        1353  RCHECK(es_descriptor.Parse(data));
        +
        1354  if (es_descriptor.IsAAC()) {
        +
        1355  RCHECK(aac_audio_specific_config.Parse(
        +
        1356  es_descriptor.decoder_specific_info()));
        +
        1357  }
        +
        1358  } else {
        +
        1359  DCHECK(buffer->writer());
        +
        1360  es_descriptor.Write(buffer->writer());
        +
        1361  }
        +
        1362  return true;
        +
        1363 }
        +
        1364 
        +
        1365 uint32_t ElementaryStreamDescriptor::ComputeSizeInternal() {
        +
        1366  // This box is optional. Skip it if not initialized.
        +
        1367  if (es_descriptor.object_type() == kForbidden)
        +
        1368  return 0;
        +
        1369  return HeaderSize() + es_descriptor.ComputeSize();
        +
        1370 }
        +
        1371 
        +
        1372 DTSSpecific::DTSSpecific()
        +
        1373  : sampling_frequency(0),
        +
        1374  max_bitrate(0),
        +
        1375  avg_bitrate(0),
        +
        1376  pcm_sample_depth(0) {}
        +
        1377 DTSSpecific::~DTSSpecific() {}
        +
        1378 FourCC DTSSpecific::BoxType() const { return FOURCC_DDTS; }
        1379 
        -
        1380 uint32_t ElementaryStreamDescriptor::ComputeSizeInternal() {
        -
        1381  // This box is optional. Skip it if not initialized.
        -
        1382  if (es_descriptor.object_type() == kForbidden)
        -
        1383  return 0;
        -
        1384  return HeaderSize() + es_descriptor.ComputeSize();
        -
        1385 }
        +
        1380 bool DTSSpecific::ReadWriteInternal(BoxBuffer* buffer) {
        +
        1381  RCHECK(ReadWriteHeaderInternal(buffer) &&
        +
        1382  buffer->ReadWriteUInt32(&sampling_frequency) &&
        +
        1383  buffer->ReadWriteUInt32(&max_bitrate) &&
        +
        1384  buffer->ReadWriteUInt32(&avg_bitrate) &&
        +
        1385  buffer->ReadWriteUInt8(&pcm_sample_depth));
        1386 
        -
        1387 DTSSpecific::DTSSpecific()
        -
        1388  : sampling_frequency(0),
        -
        1389  max_bitrate(0),
        -
        1390  avg_bitrate(0),
        -
        1391  pcm_sample_depth(0) {}
        -
        1392 DTSSpecific::~DTSSpecific() {}
        -
        1393 FourCC DTSSpecific::BoxType() const { return FOURCC_DDTS; }
        -
        1394 
        -
        1395 bool DTSSpecific::ReadWriteInternal(BoxBuffer* buffer) {
        -
        1396  RCHECK(ReadWriteHeaderInternal(buffer) &&
        -
        1397  buffer->ReadWriteUInt32(&sampling_frequency) &&
        -
        1398  buffer->ReadWriteUInt32(&max_bitrate) &&
        -
        1399  buffer->ReadWriteUInt32(&avg_bitrate) &&
        -
        1400  buffer->ReadWriteUInt8(&pcm_sample_depth));
        -
        1401 
        -
        1402  if (buffer->Reading()) {
        -
        1403  RCHECK(buffer->ReadWriteVector(&extra_data, buffer->BytesLeft()));
        -
        1404  } else {
        -
        1405  if (extra_data.empty()) {
        -
        1406  extra_data.assign(kDdtsExtraData,
        -
        1407  kDdtsExtraData + sizeof(kDdtsExtraData));
        -
        1408  }
        -
        1409  RCHECK(buffer->ReadWriteVector(&extra_data, extra_data.size()));
        -
        1410  }
        -
        1411  return true;
        -
        1412 }
        -
        1413 
        -
        1414 uint32_t DTSSpecific::ComputeSizeInternal() {
        -
        1415  // This box is optional. Skip it if not initialized.
        -
        1416  if (sampling_frequency == 0)
        -
        1417  return 0;
        -
        1418  return HeaderSize() + sizeof(sampling_frequency) + sizeof(max_bitrate) +
        -
        1419  sizeof(avg_bitrate) + sizeof(pcm_sample_depth) +
        -
        1420  sizeof(kDdtsExtraData);
        -
        1421 }
        -
        1422 
        -
        1423 AC3Specific::AC3Specific() {}
        -
        1424 AC3Specific::~AC3Specific() {}
        -
        1425 
        -
        1426 FourCC AC3Specific::BoxType() const { return FOURCC_DAC3; }
        -
        1427 
        -
        1428 bool AC3Specific::ReadWriteInternal(BoxBuffer* buffer) {
        -
        1429  RCHECK(ReadWriteHeaderInternal(buffer) &&
        -
        1430  buffer->ReadWriteVector(
        -
        1431  &data, buffer->Reading() ? buffer->BytesLeft() : data.size()));
        -
        1432  return true;
        -
        1433 }
        -
        1434 
        -
        1435 uint32_t AC3Specific::ComputeSizeInternal() {
        -
        1436  // This box is optional. Skip it if not initialized.
        -
        1437  if (data.empty())
        -
        1438  return 0;
        -
        1439  return HeaderSize() + data.size();
        -
        1440 }
        -
        1441 
        -
        1442 EC3Specific::EC3Specific() {}
        -
        1443 EC3Specific::~EC3Specific() {}
        -
        1444 
        -
        1445 FourCC EC3Specific::BoxType() const { return FOURCC_DEC3; }
        -
        1446 
        -
        1447 bool EC3Specific::ReadWriteInternal(BoxBuffer* buffer) {
        -
        1448  RCHECK(ReadWriteHeaderInternal(buffer));
        -
        1449  uint32_t size = buffer->Reading() ? buffer->BytesLeft() : data.size();
        -
        1450  RCHECK(buffer->ReadWriteVector(&data, size));
        -
        1451  return true;
        -
        1452 }
        -
        1453 
        -
        1454 uint32_t EC3Specific::ComputeSizeInternal() {
        -
        1455  // This box is optional. Skip it if not initialized.
        -
        1456  if (data.empty())
        -
        1457  return 0;
        -
        1458  return HeaderSize() + data.size();
        -
        1459 }
        -
        1460 
        -
        1461 AudioSampleEntry::AudioSampleEntry()
        -
        1462  : format(FOURCC_NULL),
        -
        1463  data_reference_index(1),
        -
        1464  channelcount(2),
        -
        1465  samplesize(16),
        -
        1466  samplerate(0) {}
        -
        1467 
        -
        1468 AudioSampleEntry::~AudioSampleEntry() {}
        -
        1469 
        - -
        1471  if (format == FOURCC_NULL) {
        -
        1472  LOG(ERROR) << "AudioSampleEntry should be parsed according to the "
        -
        1473  << "handler type recovered in its Media ancestor.";
        -
        1474  }
        -
        1475  return format;
        -
        1476 }
        -
        1477 
        -
        1478 bool AudioSampleEntry::ReadWriteInternal(BoxBuffer* buffer) {
        -
        1479  if (buffer->Reading()) {
        -
        1480  DCHECK(buffer->reader());
        -
        1481  format = buffer->reader()->type();
        -
        1482  } else {
        -
        1483  RCHECK(ReadWriteHeaderInternal(buffer));
        -
        1484  }
        -
        1485 
        -
        1486  // Convert from integer to 16.16 fixed point for writing.
        -
        1487  samplerate <<= 16;
        -
        1488  RCHECK(buffer->IgnoreBytes(6) && // reserved.
        -
        1489  buffer->ReadWriteUInt16(&data_reference_index) &&
        -
        1490  buffer->IgnoreBytes(8) && // reserved.
        -
        1491  buffer->ReadWriteUInt16(&channelcount) &&
        -
        1492  buffer->ReadWriteUInt16(&samplesize) &&
        -
        1493  buffer->IgnoreBytes(4) && // predefined.
        -
        1494  buffer->ReadWriteUInt32(&samplerate));
        -
        1495  // Convert from 16.16 fixed point to integer.
        -
        1496  samplerate >>= 16;
        -
        1497 
        -
        1498  RCHECK(buffer->PrepareChildren());
        -
        1499  if (format == FOURCC_ENCA) {
        -
        1500  if (buffer->Reading()) {
        -
        1501  // Continue scanning until a recognized protection scheme is found,
        -
        1502  // or until we run out of protection schemes.
        -
        1503  while (sinf.type.type != FOURCC_CENC) {
        -
        1504  if (!buffer->ReadWriteChild(&sinf))
        -
        1505  return false;
        -
        1506  }
        -
        1507  } else {
        -
        1508  RCHECK(buffer->ReadWriteChild(&sinf));
        -
        1509  }
        -
        1510  }
        -
        1511 
        -
        1512  RCHECK(buffer->TryReadWriteChild(&esds));
        -
        1513  RCHECK(buffer->TryReadWriteChild(&ddts));
        -
        1514  RCHECK(buffer->TryReadWriteChild(&dac3));
        -
        1515  RCHECK(buffer->TryReadWriteChild(&dec3));
        -
        1516  return true;
        -
        1517 }
        -
        1518 
        -
        1519 uint32_t AudioSampleEntry::ComputeSizeInternal() {
        -
        1520  return HeaderSize() + sizeof(data_reference_index) + sizeof(channelcount) +
        -
        1521  sizeof(samplesize) + sizeof(samplerate) + sinf.ComputeSize() +
        -
        1522  esds.ComputeSize() + ddts.ComputeSize() + dac3.ComputeSize() +
        -
        1523  dec3.ComputeSize() +
        -
        1524  6 + 8 + // 6 + 8 bytes reserved.
        -
        1525  4; // 4 bytes predefined.
        -
        1526 }
        -
        1527 
        -
        1528 WebVTTConfigurationBox::WebVTTConfigurationBox() {}
        -
        1529 WebVTTConfigurationBox::~WebVTTConfigurationBox() {}
        +
        1387  if (buffer->Reading()) {
        +
        1388  RCHECK(buffer->ReadWriteVector(&extra_data, buffer->BytesLeft()));
        +
        1389  } else {
        +
        1390  if (extra_data.empty()) {
        +
        1391  extra_data.assign(kDdtsExtraData,
        +
        1392  kDdtsExtraData + sizeof(kDdtsExtraData));
        +
        1393  }
        +
        1394  RCHECK(buffer->ReadWriteVector(&extra_data, extra_data.size()));
        +
        1395  }
        +
        1396  return true;
        +
        1397 }
        +
        1398 
        +
        1399 uint32_t DTSSpecific::ComputeSizeInternal() {
        +
        1400  // This box is optional. Skip it if not initialized.
        +
        1401  if (sampling_frequency == 0)
        +
        1402  return 0;
        +
        1403  return HeaderSize() + sizeof(sampling_frequency) + sizeof(max_bitrate) +
        +
        1404  sizeof(avg_bitrate) + sizeof(pcm_sample_depth) +
        +
        1405  sizeof(kDdtsExtraData);
        +
        1406 }
        +
        1407 
        +
        1408 AC3Specific::AC3Specific() {}
        +
        1409 AC3Specific::~AC3Specific() {}
        +
        1410 
        +
        1411 FourCC AC3Specific::BoxType() const { return FOURCC_DAC3; }
        +
        1412 
        +
        1413 bool AC3Specific::ReadWriteInternal(BoxBuffer* buffer) {
        +
        1414  RCHECK(ReadWriteHeaderInternal(buffer) &&
        +
        1415  buffer->ReadWriteVector(
        +
        1416  &data, buffer->Reading() ? buffer->BytesLeft() : data.size()));
        +
        1417  return true;
        +
        1418 }
        +
        1419 
        +
        1420 uint32_t AC3Specific::ComputeSizeInternal() {
        +
        1421  // This box is optional. Skip it if not initialized.
        +
        1422  if (data.empty())
        +
        1423  return 0;
        +
        1424  return HeaderSize() + data.size();
        +
        1425 }
        +
        1426 
        +
        1427 EC3Specific::EC3Specific() {}
        +
        1428 EC3Specific::~EC3Specific() {}
        +
        1429 
        +
        1430 FourCC EC3Specific::BoxType() const { return FOURCC_DEC3; }
        +
        1431 
        +
        1432 bool EC3Specific::ReadWriteInternal(BoxBuffer* buffer) {
        +
        1433  RCHECK(ReadWriteHeaderInternal(buffer));
        +
        1434  uint32_t size = buffer->Reading() ? buffer->BytesLeft() : data.size();
        +
        1435  RCHECK(buffer->ReadWriteVector(&data, size));
        +
        1436  return true;
        +
        1437 }
        +
        1438 
        +
        1439 uint32_t EC3Specific::ComputeSizeInternal() {
        +
        1440  // This box is optional. Skip it if not initialized.
        +
        1441  if (data.empty())
        +
        1442  return 0;
        +
        1443  return HeaderSize() + data.size();
        +
        1444 }
        +
        1445 
        +
        1446 AudioSampleEntry::AudioSampleEntry()
        +
        1447  : format(FOURCC_NULL),
        +
        1448  data_reference_index(1),
        +
        1449  channelcount(2),
        +
        1450  samplesize(16),
        +
        1451  samplerate(0) {}
        +
        1452 
        +
        1453 AudioSampleEntry::~AudioSampleEntry() {}
        +
        1454 
        + +
        1456  if (format == FOURCC_NULL) {
        +
        1457  LOG(ERROR) << "AudioSampleEntry should be parsed according to the "
        +
        1458  << "handler type recovered in its Media ancestor.";
        +
        1459  }
        +
        1460  return format;
        +
        1461 }
        +
        1462 
        +
        1463 bool AudioSampleEntry::ReadWriteInternal(BoxBuffer* buffer) {
        +
        1464  if (buffer->Reading()) {
        +
        1465  DCHECK(buffer->reader());
        +
        1466  format = buffer->reader()->type();
        +
        1467  } else {
        +
        1468  RCHECK(ReadWriteHeaderInternal(buffer));
        +
        1469  }
        +
        1470 
        +
        1471  // Convert from integer to 16.16 fixed point for writing.
        +
        1472  samplerate <<= 16;
        +
        1473  RCHECK(buffer->IgnoreBytes(6) && // reserved.
        +
        1474  buffer->ReadWriteUInt16(&data_reference_index) &&
        +
        1475  buffer->IgnoreBytes(8) && // reserved.
        +
        1476  buffer->ReadWriteUInt16(&channelcount) &&
        +
        1477  buffer->ReadWriteUInt16(&samplesize) &&
        +
        1478  buffer->IgnoreBytes(4) && // predefined.
        +
        1479  buffer->ReadWriteUInt32(&samplerate));
        +
        1480  // Convert from 16.16 fixed point to integer.
        +
        1481  samplerate >>= 16;
        +
        1482 
        +
        1483  RCHECK(buffer->PrepareChildren());
        +
        1484  if (format == FOURCC_ENCA) {
        +
        1485  if (buffer->Reading()) {
        +
        1486  // Continue scanning until a recognized protection scheme is found,
        +
        1487  // or until we run out of protection schemes.
        +
        1488  while (sinf.type.type != FOURCC_CENC) {
        +
        1489  if (!buffer->ReadWriteChild(&sinf))
        +
        1490  return false;
        +
        1491  }
        +
        1492  } else {
        +
        1493  RCHECK(buffer->ReadWriteChild(&sinf));
        +
        1494  }
        +
        1495  }
        +
        1496 
        +
        1497  RCHECK(buffer->TryReadWriteChild(&esds));
        +
        1498  RCHECK(buffer->TryReadWriteChild(&ddts));
        +
        1499  RCHECK(buffer->TryReadWriteChild(&dac3));
        +
        1500  RCHECK(buffer->TryReadWriteChild(&dec3));
        +
        1501  return true;
        +
        1502 }
        +
        1503 
        +
        1504 uint32_t AudioSampleEntry::ComputeSizeInternal() {
        +
        1505  return HeaderSize() + sizeof(data_reference_index) + sizeof(channelcount) +
        +
        1506  sizeof(samplesize) + sizeof(samplerate) + sinf.ComputeSize() +
        +
        1507  esds.ComputeSize() + ddts.ComputeSize() + dac3.ComputeSize() +
        +
        1508  dec3.ComputeSize() +
        +
        1509  6 + 8 + // 6 + 8 bytes reserved.
        +
        1510  4; // 4 bytes predefined.
        +
        1511 }
        +
        1512 
        +
        1513 WebVTTConfigurationBox::WebVTTConfigurationBox() {}
        +
        1514 WebVTTConfigurationBox::~WebVTTConfigurationBox() {}
        +
        1515 
        + +
        1517  return FOURCC_vttC;
        +
        1518 }
        +
        1519 
        +
        1520 bool WebVTTConfigurationBox::ReadWriteInternal(BoxBuffer* buffer) {
        +
        1521  RCHECK(ReadWriteHeaderInternal(buffer));
        +
        1522  return buffer->ReadWriteString(
        +
        1523  &config,
        +
        1524  buffer->Reading() ? buffer->BytesLeft() : config.size());
        +
        1525 }
        +
        1526 
        +
        1527 uint32_t WebVTTConfigurationBox::ComputeSizeInternal() {
        +
        1528  return HeaderSize() + config.size();
        +
        1529 }
        1530 
        - -
        1532  return FOURCC_vttC;
        -
        1533 }
        -
        1534 
        -
        1535 bool WebVTTConfigurationBox::ReadWriteInternal(BoxBuffer* buffer) {
        -
        1536  RCHECK(ReadWriteHeaderInternal(buffer));
        -
        1537  return buffer->ReadWriteString(
        -
        1538  &config,
        -
        1539  buffer->Reading() ? buffer->BytesLeft() : config.size());
        -
        1540 }
        -
        1541 
        -
        1542 uint32_t WebVTTConfigurationBox::ComputeSizeInternal() {
        -
        1543  return HeaderSize() + config.size();
        -
        1544 }
        -
        1545 
        -
        1546 WebVTTSourceLabelBox::WebVTTSourceLabelBox() {}
        -
        1547 WebVTTSourceLabelBox::~WebVTTSourceLabelBox() {}
        -
        1548 
        - -
        1550  return FOURCC_vlab;
        -
        1551 }
        -
        1552 
        -
        1553 bool WebVTTSourceLabelBox::ReadWriteInternal(BoxBuffer* buffer) {
        -
        1554  RCHECK(ReadWriteHeaderInternal(buffer));
        -
        1555  return buffer->ReadWriteString(&source_label, buffer->Reading()
        -
        1556  ? buffer->BytesLeft()
        -
        1557  : source_label.size());
        -
        1558 }
        -
        1559 
        -
        1560 uint32_t WebVTTSourceLabelBox::ComputeSizeInternal() {
        -
        1561  if (source_label.empty())
        -
        1562  return 0;
        -
        1563  return HeaderSize() + source_label.size();
        -
        1564 }
        -
        1565 
        -
        1566 TextSampleEntry::TextSampleEntry() : format(FOURCC_NULL) {}
        -
        1567 TextSampleEntry::~TextSampleEntry() {}
        -
        1568 
        - -
        1570  if (format == FOURCC_NULL) {
        -
        1571  LOG(ERROR) << "TextSampleEntry should be parsed according to the "
        -
        1572  << "handler type recovered in its Media ancestor.";
        -
        1573  }
        -
        1574  return format;
        -
        1575 }
        -
        1576 
        -
        1577 bool TextSampleEntry::ReadWriteInternal(BoxBuffer* buffer) {
        -
        1578  if (buffer->Reading()) {
        -
        1579  DCHECK(buffer->reader());
        -
        1580  format = buffer->reader()->type();
        -
        1581  } else {
        -
        1582  RCHECK(ReadWriteHeaderInternal(buffer));
        -
        1583  }
        -
        1584  RCHECK(buffer->IgnoreBytes(6) && // reserved for SampleEntry.
        -
        1585  buffer->ReadWriteUInt16(&data_reference_index));
        +
        1531 WebVTTSourceLabelBox::WebVTTSourceLabelBox() {}
        +
        1532 WebVTTSourceLabelBox::~WebVTTSourceLabelBox() {}
        +
        1533 
        + +
        1535  return FOURCC_vlab;
        +
        1536 }
        +
        1537 
        +
        1538 bool WebVTTSourceLabelBox::ReadWriteInternal(BoxBuffer* buffer) {
        +
        1539  RCHECK(ReadWriteHeaderInternal(buffer));
        +
        1540  return buffer->ReadWriteString(&source_label, buffer->Reading()
        +
        1541  ? buffer->BytesLeft()
        +
        1542  : source_label.size());
        +
        1543 }
        +
        1544 
        +
        1545 uint32_t WebVTTSourceLabelBox::ComputeSizeInternal() {
        +
        1546  if (source_label.empty())
        +
        1547  return 0;
        +
        1548  return HeaderSize() + source_label.size();
        +
        1549 }
        +
        1550 
        +
        1551 TextSampleEntry::TextSampleEntry() : format(FOURCC_NULL) {}
        +
        1552 TextSampleEntry::~TextSampleEntry() {}
        +
        1553 
        + +
        1555  if (format == FOURCC_NULL) {
        +
        1556  LOG(ERROR) << "TextSampleEntry should be parsed according to the "
        +
        1557  << "handler type recovered in its Media ancestor.";
        +
        1558  }
        +
        1559  return format;
        +
        1560 }
        +
        1561 
        +
        1562 bool TextSampleEntry::ReadWriteInternal(BoxBuffer* buffer) {
        +
        1563  if (buffer->Reading()) {
        +
        1564  DCHECK(buffer->reader());
        +
        1565  format = buffer->reader()->type();
        +
        1566  } else {
        +
        1567  RCHECK(ReadWriteHeaderInternal(buffer));
        +
        1568  }
        +
        1569  RCHECK(buffer->IgnoreBytes(6) && // reserved for SampleEntry.
        +
        1570  buffer->ReadWriteUInt16(&data_reference_index));
        +
        1571 
        +
        1572  if (format == FOURCC_wvtt) {
        +
        1573  // TODO(rkuroiwa): Handle the optional MPEG4BitRateBox.
        +
        1574  RCHECK(buffer->PrepareChildren() &&
        +
        1575  buffer->ReadWriteChild(&config) &&
        +
        1576  buffer->ReadWriteChild(&label));
        +
        1577  }
        +
        1578  return true;
        +
        1579 }
        +
        1580 
        +
        1581 uint32_t TextSampleEntry::ComputeSizeInternal() {
        +
        1582  // 6 for the (anonymous) reserved bytes for SampleEntry class.
        +
        1583  return HeaderSize() + 6 + sizeof(data_reference_index) +
        +
        1584  config.ComputeSize() + label.ComputeSize();
        +
        1585 }
        1586 
        -
        1587  if (format == FOURCC_wvtt) {
        -
        1588  // TODO(rkuroiwa): Handle the optional MPEG4BitRateBox.
        -
        1589  RCHECK(buffer->PrepareChildren() &&
        -
        1590  buffer->ReadWriteChild(&config) &&
        -
        1591  buffer->ReadWriteChild(&label));
        -
        1592  }
        -
        1593  return true;
        -
        1594 }
        -
        1595 
        -
        1596 uint32_t TextSampleEntry::ComputeSizeInternal() {
        -
        1597  // 6 for the (anonymous) reserved bytes for SampleEntry class.
        -
        1598  return HeaderSize() + 6 + sizeof(data_reference_index) +
        -
        1599  config.ComputeSize() + label.ComputeSize();
        -
        1600 }
        -
        1601 
        -
        1602 MediaHeader::MediaHeader()
        -
        1603  : creation_time(0), modification_time(0), timescale(0), duration(0) {}
        -
        1604 MediaHeader::~MediaHeader() {}
        -
        1605 FourCC MediaHeader::BoxType() const { return FOURCC_MDHD; }
        -
        1606 
        -
        1607 bool MediaHeader::ReadWriteInternal(BoxBuffer* buffer) {
        -
        1608  RCHECK(ReadWriteHeaderInternal(buffer));
        -
        1609 
        -
        1610  uint8_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
        -
        1611  RCHECK(buffer->ReadWriteUInt64NBytes(&creation_time, num_bytes) &&
        -
        1612  buffer->ReadWriteUInt64NBytes(&modification_time, num_bytes) &&
        -
        1613  buffer->ReadWriteUInt32(&timescale) &&
        -
        1614  buffer->ReadWriteUInt64NBytes(&duration, num_bytes) &&
        -
        1615  language.ReadWrite(buffer) &&
        -
        1616  buffer->IgnoreBytes(2)); // predefined.
        -
        1617  return true;
        -
        1618 }
        -
        1619 
        -
        1620 uint32_t MediaHeader::ComputeSizeInternal() {
        -
        1621  version = IsFitIn32Bits(creation_time, modification_time, duration) ? 0 : 1;
        -
        1622  return HeaderSize() + sizeof(timescale) +
        -
        1623  sizeof(uint32_t) * (1 + version) * 3 + language.ComputeSize() +
        -
        1624  2; // 2 bytes predefined.
        -
        1625 }
        -
        1626 
        -
        1627 VideoMediaHeader::VideoMediaHeader()
        -
        1628  : graphicsmode(0), opcolor_red(0), opcolor_green(0), opcolor_blue(0) {
        -
        1629  const uint32_t kVideoMediaHeaderFlags = 1;
        -
        1630  flags = kVideoMediaHeaderFlags;
        +
        1587 MediaHeader::MediaHeader()
        +
        1588  : creation_time(0), modification_time(0), timescale(0), duration(0) {}
        +
        1589 MediaHeader::~MediaHeader() {}
        +
        1590 FourCC MediaHeader::BoxType() const { return FOURCC_MDHD; }
        +
        1591 
        +
        1592 bool MediaHeader::ReadWriteInternal(BoxBuffer* buffer) {
        +
        1593  RCHECK(ReadWriteHeaderInternal(buffer));
        +
        1594 
        +
        1595  uint8_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
        +
        1596  RCHECK(buffer->ReadWriteUInt64NBytes(&creation_time, num_bytes) &&
        +
        1597  buffer->ReadWriteUInt64NBytes(&modification_time, num_bytes) &&
        +
        1598  buffer->ReadWriteUInt32(&timescale) &&
        +
        1599  buffer->ReadWriteUInt64NBytes(&duration, num_bytes) &&
        +
        1600  language.ReadWrite(buffer) &&
        +
        1601  buffer->IgnoreBytes(2)); // predefined.
        +
        1602  return true;
        +
        1603 }
        +
        1604 
        +
        1605 uint32_t MediaHeader::ComputeSizeInternal() {
        +
        1606  version = IsFitIn32Bits(creation_time, modification_time, duration) ? 0 : 1;
        +
        1607  return HeaderSize() + sizeof(timescale) +
        +
        1608  sizeof(uint32_t) * (1 + version) * 3 + language.ComputeSize() +
        +
        1609  2; // 2 bytes predefined.
        +
        1610 }
        +
        1611 
        +
        1612 VideoMediaHeader::VideoMediaHeader()
        +
        1613  : graphicsmode(0), opcolor_red(0), opcolor_green(0), opcolor_blue(0) {
        +
        1614  const uint32_t kVideoMediaHeaderFlags = 1;
        +
        1615  flags = kVideoMediaHeaderFlags;
        +
        1616 }
        +
        1617 VideoMediaHeader::~VideoMediaHeader() {}
        +
        1618 FourCC VideoMediaHeader::BoxType() const { return FOURCC_VMHD; }
        +
        1619 bool VideoMediaHeader::ReadWriteInternal(BoxBuffer* buffer) {
        +
        1620  RCHECK(ReadWriteHeaderInternal(buffer) &&
        +
        1621  buffer->ReadWriteUInt16(&graphicsmode) &&
        +
        1622  buffer->ReadWriteUInt16(&opcolor_red) &&
        +
        1623  buffer->ReadWriteUInt16(&opcolor_green) &&
        +
        1624  buffer->ReadWriteUInt16(&opcolor_blue));
        +
        1625  return true;
        +
        1626 }
        +
        1627 
        +
        1628 uint32_t VideoMediaHeader::ComputeSizeInternal() {
        +
        1629  return HeaderSize() + sizeof(graphicsmode) + sizeof(opcolor_red) +
        +
        1630  sizeof(opcolor_green) + sizeof(opcolor_blue);
        1631 }
        -
        1632 VideoMediaHeader::~VideoMediaHeader() {}
        -
        1633 FourCC VideoMediaHeader::BoxType() const { return FOURCC_VMHD; }
        -
        1634 bool VideoMediaHeader::ReadWriteInternal(BoxBuffer* buffer) {
        -
        1635  RCHECK(ReadWriteHeaderInternal(buffer) &&
        -
        1636  buffer->ReadWriteUInt16(&graphicsmode) &&
        -
        1637  buffer->ReadWriteUInt16(&opcolor_red) &&
        -
        1638  buffer->ReadWriteUInt16(&opcolor_green) &&
        -
        1639  buffer->ReadWriteUInt16(&opcolor_blue));
        +
        1632 
        +
        1633 SoundMediaHeader::SoundMediaHeader() : balance(0) {}
        +
        1634 SoundMediaHeader::~SoundMediaHeader() {}
        +
        1635 FourCC SoundMediaHeader::BoxType() const { return FOURCC_SMHD; }
        +
        1636 bool SoundMediaHeader::ReadWriteInternal(BoxBuffer* buffer) {
        +
        1637  RCHECK(ReadWriteHeaderInternal(buffer) &&
        +
        1638  buffer->ReadWriteUInt16(&balance) &&
        +
        1639  buffer->IgnoreBytes(2)); // reserved.
        1640  return true;
        1641 }
        1642 
        -
        1643 uint32_t VideoMediaHeader::ComputeSizeInternal() {
        -
        1644  return HeaderSize() + sizeof(graphicsmode) + sizeof(opcolor_red) +
        -
        1645  sizeof(opcolor_green) + sizeof(opcolor_blue);
        -
        1646 }
        -
        1647 
        -
        1648 SoundMediaHeader::SoundMediaHeader() : balance(0) {}
        -
        1649 SoundMediaHeader::~SoundMediaHeader() {}
        -
        1650 FourCC SoundMediaHeader::BoxType() const { return FOURCC_SMHD; }
        -
        1651 bool SoundMediaHeader::ReadWriteInternal(BoxBuffer* buffer) {
        -
        1652  RCHECK(ReadWriteHeaderInternal(buffer) &&
        -
        1653  buffer->ReadWriteUInt16(&balance) &&
        -
        1654  buffer->IgnoreBytes(2)); // reserved.
        -
        1655  return true;
        -
        1656 }
        -
        1657 
        -
        1658 uint32_t SoundMediaHeader::ComputeSizeInternal() {
        -
        1659  return HeaderSize() + sizeof(balance) + sizeof(uint16_t);
        -
        1660 }
        -
        1661 
        -
        1662 SubtitleMediaHeader::SubtitleMediaHeader() {}
        -
        1663 SubtitleMediaHeader::~SubtitleMediaHeader() {}
        -
        1664 
        -
        1665 FourCC SubtitleMediaHeader::BoxType() const { return FOURCC_sthd; }
        -
        1666 
        -
        1667 bool SubtitleMediaHeader::ReadWriteInternal(BoxBuffer* buffer) {
        -
        1668  return ReadWriteHeaderInternal(buffer);
        -
        1669 }
        -
        1670 
        -
        1671 uint32_t SubtitleMediaHeader::ComputeSizeInternal() {
        -
        1672  return HeaderSize();
        -
        1673 }
        -
        1674 
        -
        1675 DataEntryUrl::DataEntryUrl() {
        -
        1676  const uint32_t kDataEntryUrlFlags = 1;
        -
        1677  flags = kDataEntryUrlFlags;
        +
        1643 uint32_t SoundMediaHeader::ComputeSizeInternal() {
        +
        1644  return HeaderSize() + sizeof(balance) + sizeof(uint16_t);
        +
        1645 }
        +
        1646 
        +
        1647 SubtitleMediaHeader::SubtitleMediaHeader() {}
        +
        1648 SubtitleMediaHeader::~SubtitleMediaHeader() {}
        +
        1649 
        +
        1650 FourCC SubtitleMediaHeader::BoxType() const { return FOURCC_sthd; }
        +
        1651 
        +
        1652 bool SubtitleMediaHeader::ReadWriteInternal(BoxBuffer* buffer) {
        +
        1653  return ReadWriteHeaderInternal(buffer);
        +
        1654 }
        +
        1655 
        +
        1656 uint32_t SubtitleMediaHeader::ComputeSizeInternal() {
        +
        1657  return HeaderSize();
        +
        1658 }
        +
        1659 
        +
        1660 DataEntryUrl::DataEntryUrl() {
        +
        1661  const uint32_t kDataEntryUrlFlags = 1;
        +
        1662  flags = kDataEntryUrlFlags;
        +
        1663 }
        +
        1664 DataEntryUrl::~DataEntryUrl() {}
        +
        1665 FourCC DataEntryUrl::BoxType() const { return FOURCC_URL; }
        +
        1666 bool DataEntryUrl::ReadWriteInternal(BoxBuffer* buffer) {
        +
        1667  RCHECK(ReadWriteHeaderInternal(buffer));
        +
        1668  if (buffer->Reading()) {
        +
        1669  RCHECK(buffer->ReadWriteVector(&location, buffer->BytesLeft()));
        +
        1670  } else {
        +
        1671  RCHECK(buffer->ReadWriteVector(&location, location.size()));
        +
        1672  }
        +
        1673  return true;
        +
        1674 }
        +
        1675 
        +
        1676 uint32_t DataEntryUrl::ComputeSizeInternal() {
        +
        1677  return HeaderSize() + location.size();
        1678 }
        -
        1679 DataEntryUrl::~DataEntryUrl() {}
        -
        1680 FourCC DataEntryUrl::BoxType() const { return FOURCC_URL; }
        -
        1681 bool DataEntryUrl::ReadWriteInternal(BoxBuffer* buffer) {
        -
        1682  RCHECK(ReadWriteHeaderInternal(buffer));
        -
        1683  if (buffer->Reading()) {
        -
        1684  RCHECK(buffer->ReadWriteVector(&location, buffer->BytesLeft()));
        -
        1685  } else {
        -
        1686  RCHECK(buffer->ReadWriteVector(&location, location.size()));
        -
        1687  }
        -
        1688  return true;
        -
        1689 }
        -
        1690 
        -
        1691 uint32_t DataEntryUrl::ComputeSizeInternal() {
        -
        1692  return HeaderSize() + location.size();
        -
        1693 }
        -
        1694 
        -
        1695 DataReference::DataReference() {
        -
        1696  // Default 1 entry.
        -
        1697  data_entry.resize(1);
        -
        1698 }
        -
        1699 DataReference::~DataReference() {}
        -
        1700 FourCC DataReference::BoxType() const { return FOURCC_DREF; }
        -
        1701 bool DataReference::ReadWriteInternal(BoxBuffer* buffer) {
        -
        1702  uint32_t entry_count = data_entry.size();
        -
        1703  RCHECK(ReadWriteHeaderInternal(buffer) &&
        -
        1704  buffer->ReadWriteUInt32(&entry_count));
        -
        1705  data_entry.resize(entry_count);
        -
        1706  RCHECK(buffer->PrepareChildren());
        -
        1707  for (uint32_t i = 0; i < entry_count; ++i)
        -
        1708  RCHECK(buffer->ReadWriteChild(&data_entry[i]));
        -
        1709  return true;
        -
        1710 }
        -
        1711 
        -
        1712 uint32_t DataReference::ComputeSizeInternal() {
        -
        1713  uint32_t count = data_entry.size();
        -
        1714  uint32_t box_size = HeaderSize() + sizeof(count);
        -
        1715  for (uint32_t i = 0; i < count; ++i)
        -
        1716  box_size += data_entry[i].ComputeSize();
        -
        1717  return box_size;
        -
        1718 }
        -
        1719 
        -
        1720 DataInformation::DataInformation() {}
        -
        1721 DataInformation::~DataInformation() {}
        -
        1722 FourCC DataInformation::BoxType() const { return FOURCC_DINF; }
        -
        1723 
        -
        1724 bool DataInformation::ReadWriteInternal(BoxBuffer* buffer) {
        -
        1725  return ReadWriteHeaderInternal(buffer) &&
        -
        1726  buffer->PrepareChildren() &&
        -
        1727  buffer->ReadWriteChild(&dref);
        -
        1728 }
        -
        1729 
        -
        1730 uint32_t DataInformation::ComputeSizeInternal() {
        -
        1731  return HeaderSize() + dref.ComputeSize();
        -
        1732 }
        -
        1733 
        -
        1734 MediaInformation::MediaInformation() {}
        -
        1735 MediaInformation::~MediaInformation() {}
        -
        1736 FourCC MediaInformation::BoxType() const { return FOURCC_MINF; }
        -
        1737 
        -
        1738 bool MediaInformation::ReadWriteInternal(BoxBuffer* buffer) {
        -
        1739  RCHECK(ReadWriteHeaderInternal(buffer) &&
        -
        1740  buffer->PrepareChildren() &&
        -
        1741  buffer->ReadWriteChild(&dinf) &&
        -
        1742  buffer->ReadWriteChild(&sample_table));
        -
        1743  switch (sample_table.description.type) {
        -
        1744  case kVideo:
        -
        1745  RCHECK(buffer->ReadWriteChild(&vmhd));
        -
        1746  break;
        -
        1747  case kAudio:
        -
        1748  RCHECK(buffer->ReadWriteChild(&smhd));
        -
        1749  break;
        -
        1750  case kText:
        -
        1751  RCHECK(buffer->TryReadWriteChild(&sthd));
        -
        1752  break;
        -
        1753  default:
        -
        1754  NOTIMPLEMENTED();
        -
        1755  }
        -
        1756  // Hint is not supported for now.
        -
        1757  return true;
        -
        1758 }
        -
        1759 
        -
        1760 uint32_t MediaInformation::ComputeSizeInternal() {
        -
        1761  uint32_t box_size =
        -
        1762  HeaderSize() + dinf.ComputeSize() + sample_table.ComputeSize();
        -
        1763  switch (sample_table.description.type) {
        -
        1764  case kVideo:
        -
        1765  box_size += vmhd.ComputeSize();
        -
        1766  break;
        -
        1767  case kAudio:
        -
        1768  box_size += smhd.ComputeSize();
        -
        1769  break;
        -
        1770  case kText:
        -
        1771  box_size += sthd.ComputeSize();
        -
        1772  break;
        -
        1773  default:
        -
        1774  NOTIMPLEMENTED();
        -
        1775  }
        -
        1776  return box_size;
        -
        1777 }
        -
        1778 
        -
        1779 Media::Media() {}
        -
        1780 Media::~Media() {}
        -
        1781 FourCC Media::BoxType() const { return FOURCC_MDIA; }
        -
        1782 
        -
        1783 bool Media::ReadWriteInternal(BoxBuffer* buffer) {
        -
        1784  RCHECK(ReadWriteHeaderInternal(buffer) &&
        -
        1785  buffer->PrepareChildren() &&
        -
        1786  buffer->ReadWriteChild(&header));
        -
        1787  if (buffer->Reading()) {
        -
        1788  RCHECK(buffer->ReadWriteChild(&handler));
        -
        1789  // Maddeningly, the HandlerReference box specifies how to parse the
        -
        1790  // SampleDescription box, making the latter the only box (of those that we
        -
        1791  // support) which cannot be parsed correctly on its own (or even with
        -
        1792  // information from its strict ancestor tree). We thus copy the handler type
        -
        1793  // to the sample description box *before* parsing it to provide this
        -
        1794  // information while parsing.
        -
        1795  information.sample_table.description.type =
        -
        1796  FourCCToTrackType(handler.handler_type);
        -
        1797  } else {
        -
        1798  handler.handler_type =
        -
        1799  TrackTypeToFourCC(information.sample_table.description.type);
        -
        1800  RCHECK(handler.handler_type != FOURCC_NULL);
        -
        1801  RCHECK(buffer->ReadWriteChild(&handler));
        -
        1802  }
        -
        1803  RCHECK(buffer->ReadWriteChild(&information));
        -
        1804  return true;
        -
        1805 }
        -
        1806 
        -
        1807 uint32_t Media::ComputeSizeInternal() {
        -
        1808  handler.handler_type =
        -
        1809  TrackTypeToFourCC(information.sample_table.description.type);
        -
        1810  return HeaderSize() + header.ComputeSize() + handler.ComputeSize() +
        -
        1811  information.ComputeSize();
        -
        1812 }
        -
        1813 
        -
        1814 Track::Track() {}
        -
        1815 Track::~Track() {}
        -
        1816 FourCC Track::BoxType() const { return FOURCC_TRAK; }
        +
        1679 
        +
        1680 DataReference::DataReference() {
        +
        1681  // Default 1 entry.
        +
        1682  data_entry.resize(1);
        +
        1683 }
        +
        1684 DataReference::~DataReference() {}
        +
        1685 FourCC DataReference::BoxType() const { return FOURCC_DREF; }
        +
        1686 bool DataReference::ReadWriteInternal(BoxBuffer* buffer) {
        +
        1687  uint32_t entry_count = data_entry.size();
        +
        1688  RCHECK(ReadWriteHeaderInternal(buffer) &&
        +
        1689  buffer->ReadWriteUInt32(&entry_count));
        +
        1690  data_entry.resize(entry_count);
        +
        1691  RCHECK(buffer->PrepareChildren());
        +
        1692  for (uint32_t i = 0; i < entry_count; ++i)
        +
        1693  RCHECK(buffer->ReadWriteChild(&data_entry[i]));
        +
        1694  return true;
        +
        1695 }
        +
        1696 
        +
        1697 uint32_t DataReference::ComputeSizeInternal() {
        +
        1698  uint32_t count = data_entry.size();
        +
        1699  uint32_t box_size = HeaderSize() + sizeof(count);
        +
        1700  for (uint32_t i = 0; i < count; ++i)
        +
        1701  box_size += data_entry[i].ComputeSize();
        +
        1702  return box_size;
        +
        1703 }
        +
        1704 
        +
        1705 DataInformation::DataInformation() {}
        +
        1706 DataInformation::~DataInformation() {}
        +
        1707 FourCC DataInformation::BoxType() const { return FOURCC_DINF; }
        +
        1708 
        +
        1709 bool DataInformation::ReadWriteInternal(BoxBuffer* buffer) {
        +
        1710  return ReadWriteHeaderInternal(buffer) &&
        +
        1711  buffer->PrepareChildren() &&
        +
        1712  buffer->ReadWriteChild(&dref);
        +
        1713 }
        +
        1714 
        +
        1715 uint32_t DataInformation::ComputeSizeInternal() {
        +
        1716  return HeaderSize() + dref.ComputeSize();
        +
        1717 }
        +
        1718 
        +
        1719 MediaInformation::MediaInformation() {}
        +
        1720 MediaInformation::~MediaInformation() {}
        +
        1721 FourCC MediaInformation::BoxType() const { return FOURCC_MINF; }
        +
        1722 
        +
        1723 bool MediaInformation::ReadWriteInternal(BoxBuffer* buffer) {
        +
        1724  RCHECK(ReadWriteHeaderInternal(buffer) &&
        +
        1725  buffer->PrepareChildren() &&
        +
        1726  buffer->ReadWriteChild(&dinf) &&
        +
        1727  buffer->ReadWriteChild(&sample_table));
        +
        1728  switch (sample_table.description.type) {
        +
        1729  case kVideo:
        +
        1730  RCHECK(buffer->ReadWriteChild(&vmhd));
        +
        1731  break;
        +
        1732  case kAudio:
        +
        1733  RCHECK(buffer->ReadWriteChild(&smhd));
        +
        1734  break;
        +
        1735  case kText:
        +
        1736  RCHECK(buffer->TryReadWriteChild(&sthd));
        +
        1737  break;
        +
        1738  default:
        +
        1739  NOTIMPLEMENTED();
        +
        1740  }
        +
        1741  // Hint is not supported for now.
        +
        1742  return true;
        +
        1743 }
        +
        1744 
        +
        1745 uint32_t MediaInformation::ComputeSizeInternal() {
        +
        1746  uint32_t box_size =
        +
        1747  HeaderSize() + dinf.ComputeSize() + sample_table.ComputeSize();
        +
        1748  switch (sample_table.description.type) {
        +
        1749  case kVideo:
        +
        1750  box_size += vmhd.ComputeSize();
        +
        1751  break;
        +
        1752  case kAudio:
        +
        1753  box_size += smhd.ComputeSize();
        +
        1754  break;
        +
        1755  case kText:
        +
        1756  box_size += sthd.ComputeSize();
        +
        1757  break;
        +
        1758  default:
        +
        1759  NOTIMPLEMENTED();
        +
        1760  }
        +
        1761  return box_size;
        +
        1762 }
        +
        1763 
        +
        1764 Media::Media() {}
        +
        1765 Media::~Media() {}
        +
        1766 FourCC Media::BoxType() const { return FOURCC_MDIA; }
        +
        1767 
        +
        1768 bool Media::ReadWriteInternal(BoxBuffer* buffer) {
        +
        1769  RCHECK(ReadWriteHeaderInternal(buffer) &&
        +
        1770  buffer->PrepareChildren() &&
        +
        1771  buffer->ReadWriteChild(&header));
        +
        1772  if (buffer->Reading()) {
        +
        1773  RCHECK(buffer->ReadWriteChild(&handler));
        +
        1774  // Maddeningly, the HandlerReference box specifies how to parse the
        +
        1775  // SampleDescription box, making the latter the only box (of those that we
        +
        1776  // support) which cannot be parsed correctly on its own (or even with
        +
        1777  // information from its strict ancestor tree). We thus copy the handler type
        +
        1778  // to the sample description box *before* parsing it to provide this
        +
        1779  // information while parsing.
        +
        1780  information.sample_table.description.type =
        +
        1781  FourCCToTrackType(handler.handler_type);
        +
        1782  } else {
        +
        1783  handler.handler_type =
        +
        1784  TrackTypeToFourCC(information.sample_table.description.type);
        +
        1785  RCHECK(handler.handler_type != FOURCC_NULL);
        +
        1786  RCHECK(buffer->ReadWriteChild(&handler));
        +
        1787  }
        +
        1788  RCHECK(buffer->ReadWriteChild(&information));
        +
        1789  return true;
        +
        1790 }
        +
        1791 
        +
        1792 uint32_t Media::ComputeSizeInternal() {
        +
        1793  handler.handler_type =
        +
        1794  TrackTypeToFourCC(information.sample_table.description.type);
        +
        1795  return HeaderSize() + header.ComputeSize() + handler.ComputeSize() +
        +
        1796  information.ComputeSize();
        +
        1797 }
        +
        1798 
        +
        1799 Track::Track() {}
        +
        1800 Track::~Track() {}
        +
        1801 FourCC Track::BoxType() const { return FOURCC_TRAK; }
        +
        1802 
        +
        1803 bool Track::ReadWriteInternal(BoxBuffer* buffer) {
        +
        1804  RCHECK(ReadWriteHeaderInternal(buffer) &&
        +
        1805  buffer->PrepareChildren() &&
        +
        1806  buffer->ReadWriteChild(&header) &&
        +
        1807  buffer->ReadWriteChild(&media) &&
        +
        1808  buffer->TryReadWriteChild(&edit) &&
        +
        1809  buffer->TryReadWriteChild(&sample_encryption));
        +
        1810  return true;
        +
        1811 }
        +
        1812 
        +
        1813 uint32_t Track::ComputeSizeInternal() {
        +
        1814  return HeaderSize() + header.ComputeSize() + media.ComputeSize() +
        +
        1815  edit.ComputeSize();
        +
        1816 }
        1817 
        -
        1818 bool Track::ReadWriteInternal(BoxBuffer* buffer) {
        -
        1819  RCHECK(ReadWriteHeaderInternal(buffer) &&
        -
        1820  buffer->PrepareChildren() &&
        -
        1821  buffer->ReadWriteChild(&header) &&
        -
        1822  buffer->ReadWriteChild(&media) &&
        -
        1823  buffer->TryReadWriteChild(&edit) &&
        -
        1824  buffer->TryReadWriteChild(&sample_encryption));
        -
        1825  return true;
        -
        1826 }
        -
        1827 
        -
        1828 uint32_t Track::ComputeSizeInternal() {
        -
        1829  return HeaderSize() + header.ComputeSize() + media.ComputeSize() +
        -
        1830  edit.ComputeSize();
        -
        1831 }
        -
        1832 
        -
        1833 MovieExtendsHeader::MovieExtendsHeader() : fragment_duration(0) {}
        -
        1834 MovieExtendsHeader::~MovieExtendsHeader() {}
        -
        1835 FourCC MovieExtendsHeader::BoxType() const { return FOURCC_MEHD; }
        +
        1818 MovieExtendsHeader::MovieExtendsHeader() : fragment_duration(0) {}
        +
        1819 MovieExtendsHeader::~MovieExtendsHeader() {}
        +
        1820 FourCC MovieExtendsHeader::BoxType() const { return FOURCC_MEHD; }
        +
        1821 
        +
        1822 bool MovieExtendsHeader::ReadWriteInternal(BoxBuffer* buffer) {
        +
        1823  RCHECK(ReadWriteHeaderInternal(buffer));
        +
        1824  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
        +
        1825  RCHECK(buffer->ReadWriteUInt64NBytes(&fragment_duration, num_bytes));
        +
        1826  return true;
        +
        1827 }
        +
        1828 
        +
        1829 uint32_t MovieExtendsHeader::ComputeSizeInternal() {
        +
        1830  // This box is optional. Skip it if it is not used.
        +
        1831  if (fragment_duration == 0)
        +
        1832  return 0;
        +
        1833  version = IsFitIn32Bits(fragment_duration) ? 0 : 1;
        +
        1834  return HeaderSize() + sizeof(uint32_t) * (1 + version);
        +
        1835 }
        1836 
        -
        1837 bool MovieExtendsHeader::ReadWriteInternal(BoxBuffer* buffer) {
        -
        1838  RCHECK(ReadWriteHeaderInternal(buffer));
        -
        1839  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
        -
        1840  RCHECK(buffer->ReadWriteUInt64NBytes(&fragment_duration, num_bytes));
        -
        1841  return true;
        -
        1842 }
        -
        1843 
        -
        1844 uint32_t MovieExtendsHeader::ComputeSizeInternal() {
        -
        1845  // This box is optional. Skip it if it is not used.
        -
        1846  if (fragment_duration == 0)
        -
        1847  return 0;
        -
        1848  version = IsFitIn32Bits(fragment_duration) ? 0 : 1;
        -
        1849  return HeaderSize() + sizeof(uint32_t) * (1 + version);
        -
        1850 }
        -
        1851 
        -
        1852 TrackExtends::TrackExtends()
        -
        1853  : track_id(0),
        -
        1854  default_sample_description_index(0),
        -
        1855  default_sample_duration(0),
        -
        1856  default_sample_size(0),
        -
        1857  default_sample_flags(0) {}
        -
        1858 TrackExtends::~TrackExtends() {}
        -
        1859 FourCC TrackExtends::BoxType() const { return FOURCC_TREX; }
        -
        1860 
        -
        1861 bool TrackExtends::ReadWriteInternal(BoxBuffer* buffer) {
        -
        1862  RCHECK(ReadWriteHeaderInternal(buffer) &&
        -
        1863  buffer->ReadWriteUInt32(&track_id) &&
        -
        1864  buffer->ReadWriteUInt32(&default_sample_description_index) &&
        -
        1865  buffer->ReadWriteUInt32(&default_sample_duration) &&
        -
        1866  buffer->ReadWriteUInt32(&default_sample_size) &&
        -
        1867  buffer->ReadWriteUInt32(&default_sample_flags));
        -
        1868  return true;
        -
        1869 }
        -
        1870 
        -
        1871 uint32_t TrackExtends::ComputeSizeInternal() {
        -
        1872  return HeaderSize() + sizeof(track_id) +
        -
        1873  sizeof(default_sample_description_index) +
        -
        1874  sizeof(default_sample_duration) + sizeof(default_sample_size) +
        -
        1875  sizeof(default_sample_flags);
        -
        1876 }
        -
        1877 
        -
        1878 MovieExtends::MovieExtends() {}
        -
        1879 MovieExtends::~MovieExtends() {}
        -
        1880 FourCC MovieExtends::BoxType() const { return FOURCC_MVEX; }
        -
        1881 
        -
        1882 bool MovieExtends::ReadWriteInternal(BoxBuffer* buffer) {
        -
        1883  RCHECK(ReadWriteHeaderInternal(buffer) &&
        -
        1884  buffer->PrepareChildren() &&
        -
        1885  buffer->TryReadWriteChild(&header));
        -
        1886  if (buffer->Reading()) {
        -
        1887  DCHECK(buffer->reader());
        -
        1888  RCHECK(buffer->reader()->ReadChildren(&tracks));
        -
        1889  } else {
        -
        1890  for (uint32_t i = 0; i < tracks.size(); ++i)
        -
        1891  RCHECK(buffer->ReadWriteChild(&tracks[i]));
        -
        1892  }
        -
        1893  return true;
        -
        1894 }
        -
        1895 
        -
        1896 uint32_t MovieExtends::ComputeSizeInternal() {
        -
        1897  // This box is optional. Skip it if it does not contain any track.
        -
        1898  if (tracks.size() == 0)
        -
        1899  return 0;
        -
        1900  uint32_t box_size = HeaderSize() + header.ComputeSize();
        -
        1901  for (uint32_t i = 0; i < tracks.size(); ++i)
        -
        1902  box_size += tracks[i].ComputeSize();
        -
        1903  return box_size;
        -
        1904 }
        -
        1905 
        -
        1906 Movie::Movie() {}
        -
        1907 Movie::~Movie() {}
        -
        1908 FourCC Movie::BoxType() const { return FOURCC_MOOV; }
        -
        1909 
        -
        1910 bool Movie::ReadWriteInternal(BoxBuffer* buffer) {
        -
        1911  RCHECK(ReadWriteHeaderInternal(buffer) &&
        -
        1912  buffer->PrepareChildren() &&
        -
        1913  buffer->ReadWriteChild(&header) &&
        -
        1914  buffer->TryReadWriteChild(&metadata) &&
        -
        1915  buffer->TryReadWriteChild(&extends));
        -
        1916  if (buffer->Reading()) {
        -
        1917  BoxReader* reader = buffer->reader();
        -
        1918  DCHECK(reader);
        -
        1919  RCHECK(reader->ReadChildren(&tracks) &&
        -
        1920  reader->TryReadChildren(&pssh));
        -
        1921  } else {
        -
        1922  for (uint32_t i = 0; i < tracks.size(); ++i)
        -
        1923  RCHECK(buffer->ReadWriteChild(&tracks[i]));
        -
        1924  for (uint32_t i = 0; i < pssh.size(); ++i)
        -
        1925  RCHECK(buffer->ReadWriteChild(&pssh[i]));
        -
        1926  }
        -
        1927  return true;
        -
        1928 }
        -
        1929 
        -
        1930 uint32_t Movie::ComputeSizeInternal() {
        -
        1931  uint32_t box_size = HeaderSize() + header.ComputeSize() +
        -
        1932  metadata.ComputeSize() + extends.ComputeSize();
        -
        1933  for (uint32_t i = 0; i < tracks.size(); ++i)
        -
        1934  box_size += tracks[i].ComputeSize();
        -
        1935  for (uint32_t i = 0; i < pssh.size(); ++i)
        -
        1936  box_size += pssh[i].ComputeSize();
        -
        1937  return box_size;
        -
        1938 }
        -
        1939 
        -
        1940 TrackFragmentDecodeTime::TrackFragmentDecodeTime() : decode_time(0) {}
        -
        1941 TrackFragmentDecodeTime::~TrackFragmentDecodeTime() {}
        -
        1942 FourCC TrackFragmentDecodeTime::BoxType() const { return FOURCC_TFDT; }
        -
        1943 
        -
        1944 bool TrackFragmentDecodeTime::ReadWriteInternal(BoxBuffer* buffer) {
        -
        1945  RCHECK(ReadWriteHeaderInternal(buffer));
        -
        1946  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
        -
        1947  RCHECK(buffer->ReadWriteUInt64NBytes(&decode_time, num_bytes));
        -
        1948  return true;
        -
        1949 }
        -
        1950 
        -
        1951 uint32_t TrackFragmentDecodeTime::ComputeSizeInternal() {
        -
        1952  version = IsFitIn32Bits(decode_time) ? 0 : 1;
        -
        1953  return HeaderSize() + sizeof(uint32_t) * (1 + version);
        -
        1954 }
        -
        1955 
        -
        1956 MovieFragmentHeader::MovieFragmentHeader() : sequence_number(0) {}
        -
        1957 MovieFragmentHeader::~MovieFragmentHeader() {}
        -
        1958 FourCC MovieFragmentHeader::BoxType() const { return FOURCC_MFHD; }
        -
        1959 
        -
        1960 bool MovieFragmentHeader::ReadWriteInternal(BoxBuffer* buffer) {
        -
        1961  return ReadWriteHeaderInternal(buffer) &&
        -
        1962  buffer->ReadWriteUInt32(&sequence_number);
        -
        1963 }
        -
        1964 
        -
        1965 uint32_t MovieFragmentHeader::ComputeSizeInternal() {
        -
        1966  return HeaderSize() + sizeof(sequence_number);
        -
        1967 }
        -
        1968 
        -
        1969 TrackFragmentHeader::TrackFragmentHeader()
        -
        1970  : track_id(0),
        -
        1971  sample_description_index(0),
        -
        1972  default_sample_duration(0),
        -
        1973  default_sample_size(0),
        -
        1974  default_sample_flags(0) {}
        -
        1975 
        -
        1976 TrackFragmentHeader::~TrackFragmentHeader() {}
        -
        1977 FourCC TrackFragmentHeader::BoxType() const { return FOURCC_TFHD; }
        +
        1837 TrackExtends::TrackExtends()
        +
        1838  : track_id(0),
        +
        1839  default_sample_description_index(0),
        +
        1840  default_sample_duration(0),
        +
        1841  default_sample_size(0),
        +
        1842  default_sample_flags(0) {}
        +
        1843 TrackExtends::~TrackExtends() {}
        +
        1844 FourCC TrackExtends::BoxType() const { return FOURCC_TREX; }
        +
        1845 
        +
        1846 bool TrackExtends::ReadWriteInternal(BoxBuffer* buffer) {
        +
        1847  RCHECK(ReadWriteHeaderInternal(buffer) &&
        +
        1848  buffer->ReadWriteUInt32(&track_id) &&
        +
        1849  buffer->ReadWriteUInt32(&default_sample_description_index) &&
        +
        1850  buffer->ReadWriteUInt32(&default_sample_duration) &&
        +
        1851  buffer->ReadWriteUInt32(&default_sample_size) &&
        +
        1852  buffer->ReadWriteUInt32(&default_sample_flags));
        +
        1853  return true;
        +
        1854 }
        +
        1855 
        +
        1856 uint32_t TrackExtends::ComputeSizeInternal() {
        +
        1857  return HeaderSize() + sizeof(track_id) +
        +
        1858  sizeof(default_sample_description_index) +
        +
        1859  sizeof(default_sample_duration) + sizeof(default_sample_size) +
        +
        1860  sizeof(default_sample_flags);
        +
        1861 }
        +
        1862 
        +
        1863 MovieExtends::MovieExtends() {}
        +
        1864 MovieExtends::~MovieExtends() {}
        +
        1865 FourCC MovieExtends::BoxType() const { return FOURCC_MVEX; }
        +
        1866 
        +
        1867 bool MovieExtends::ReadWriteInternal(BoxBuffer* buffer) {
        +
        1868  RCHECK(ReadWriteHeaderInternal(buffer) &&
        +
        1869  buffer->PrepareChildren() &&
        +
        1870  buffer->TryReadWriteChild(&header));
        +
        1871  if (buffer->Reading()) {
        +
        1872  DCHECK(buffer->reader());
        +
        1873  RCHECK(buffer->reader()->ReadChildren(&tracks));
        +
        1874  } else {
        +
        1875  for (uint32_t i = 0; i < tracks.size(); ++i)
        +
        1876  RCHECK(buffer->ReadWriteChild(&tracks[i]));
        +
        1877  }
        +
        1878  return true;
        +
        1879 }
        +
        1880 
        +
        1881 uint32_t MovieExtends::ComputeSizeInternal() {
        +
        1882  // This box is optional. Skip it if it does not contain any track.
        +
        1883  if (tracks.size() == 0)
        +
        1884  return 0;
        +
        1885  uint32_t box_size = HeaderSize() + header.ComputeSize();
        +
        1886  for (uint32_t i = 0; i < tracks.size(); ++i)
        +
        1887  box_size += tracks[i].ComputeSize();
        +
        1888  return box_size;
        +
        1889 }
        +
        1890 
        +
        1891 Movie::Movie() {}
        +
        1892 Movie::~Movie() {}
        +
        1893 FourCC Movie::BoxType() const { return FOURCC_MOOV; }
        +
        1894 
        +
        1895 bool Movie::ReadWriteInternal(BoxBuffer* buffer) {
        +
        1896  RCHECK(ReadWriteHeaderInternal(buffer) &&
        +
        1897  buffer->PrepareChildren() &&
        +
        1898  buffer->ReadWriteChild(&header) &&
        +
        1899  buffer->TryReadWriteChild(&metadata) &&
        +
        1900  buffer->TryReadWriteChild(&extends));
        +
        1901  if (buffer->Reading()) {
        +
        1902  BoxReader* reader = buffer->reader();
        +
        1903  DCHECK(reader);
        +
        1904  RCHECK(reader->ReadChildren(&tracks) &&
        +
        1905  reader->TryReadChildren(&pssh));
        +
        1906  } else {
        +
        1907  for (uint32_t i = 0; i < tracks.size(); ++i)
        +
        1908  RCHECK(buffer->ReadWriteChild(&tracks[i]));
        +
        1909  for (uint32_t i = 0; i < pssh.size(); ++i)
        +
        1910  RCHECK(buffer->ReadWriteChild(&pssh[i]));
        +
        1911  }
        +
        1912  return true;
        +
        1913 }
        +
        1914 
        +
        1915 uint32_t Movie::ComputeSizeInternal() {
        +
        1916  uint32_t box_size = HeaderSize() + header.ComputeSize() +
        +
        1917  metadata.ComputeSize() + extends.ComputeSize();
        +
        1918  for (uint32_t i = 0; i < tracks.size(); ++i)
        +
        1919  box_size += tracks[i].ComputeSize();
        +
        1920  for (uint32_t i = 0; i < pssh.size(); ++i)
        +
        1921  box_size += pssh[i].ComputeSize();
        +
        1922  return box_size;
        +
        1923 }
        +
        1924 
        +
        1925 TrackFragmentDecodeTime::TrackFragmentDecodeTime() : decode_time(0) {}
        +
        1926 TrackFragmentDecodeTime::~TrackFragmentDecodeTime() {}
        +
        1927 FourCC TrackFragmentDecodeTime::BoxType() const { return FOURCC_TFDT; }
        +
        1928 
        +
        1929 bool TrackFragmentDecodeTime::ReadWriteInternal(BoxBuffer* buffer) {
        +
        1930  RCHECK(ReadWriteHeaderInternal(buffer));
        +
        1931  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
        +
        1932  RCHECK(buffer->ReadWriteUInt64NBytes(&decode_time, num_bytes));
        +
        1933  return true;
        +
        1934 }
        +
        1935 
        +
        1936 uint32_t TrackFragmentDecodeTime::ComputeSizeInternal() {
        +
        1937  version = IsFitIn32Bits(decode_time) ? 0 : 1;
        +
        1938  return HeaderSize() + sizeof(uint32_t) * (1 + version);
        +
        1939 }
        +
        1940 
        +
        1941 MovieFragmentHeader::MovieFragmentHeader() : sequence_number(0) {}
        +
        1942 MovieFragmentHeader::~MovieFragmentHeader() {}
        +
        1943 FourCC MovieFragmentHeader::BoxType() const { return FOURCC_MFHD; }
        +
        1944 
        +
        1945 bool MovieFragmentHeader::ReadWriteInternal(BoxBuffer* buffer) {
        +
        1946  return ReadWriteHeaderInternal(buffer) &&
        +
        1947  buffer->ReadWriteUInt32(&sequence_number);
        +
        1948 }
        +
        1949 
        +
        1950 uint32_t MovieFragmentHeader::ComputeSizeInternal() {
        +
        1951  return HeaderSize() + sizeof(sequence_number);
        +
        1952 }
        +
        1953 
        +
        1954 TrackFragmentHeader::TrackFragmentHeader()
        +
        1955  : track_id(0),
        +
        1956  sample_description_index(0),
        +
        1957  default_sample_duration(0),
        +
        1958  default_sample_size(0),
        +
        1959  default_sample_flags(0) {}
        +
        1960 
        +
        1961 TrackFragmentHeader::~TrackFragmentHeader() {}
        +
        1962 FourCC TrackFragmentHeader::BoxType() const { return FOURCC_TFHD; }
        +
        1963 
        +
        1964 bool TrackFragmentHeader::ReadWriteInternal(BoxBuffer* buffer) {
        +
        1965  RCHECK(ReadWriteHeaderInternal(buffer) &&
        +
        1966  buffer->ReadWriteUInt32(&track_id));
        +
        1967 
        +
        1968  if (flags & kBaseDataOffsetPresentMask) {
        +
        1969  // MSE requires 'default-base-is-moof' to be set and
        +
        1970  // 'base-data-offset-present' not to be set. We omit these checks as some
        +
        1971  // valid files in the wild don't follow these rules, though they use moof as
        +
        1972  // base.
        +
        1973  uint64_t base_data_offset;
        +
        1974  RCHECK(buffer->ReadWriteUInt64(&base_data_offset));
        +
        1975  DLOG(WARNING) << "base-data-offset-present is not expected. Assumes "
        +
        1976  "default-base-is-moof.";
        +
        1977  }
        1978 
        -
        1979 bool TrackFragmentHeader::ReadWriteInternal(BoxBuffer* buffer) {
        -
        1980  RCHECK(ReadWriteHeaderInternal(buffer) &&
        -
        1981  buffer->ReadWriteUInt32(&track_id));
        -
        1982 
        -
        1983  if (flags & kBaseDataOffsetPresentMask) {
        -
        1984  // MSE requires 'default-base-is-moof' to be set and
        -
        1985  // 'base-data-offset-present' not to be set. We omit these checks as some
        -
        1986  // valid files in the wild don't follow these rules, though they use moof as
        -
        1987  // base.
        -
        1988  uint64_t base_data_offset;
        -
        1989  RCHECK(buffer->ReadWriteUInt64(&base_data_offset));
        -
        1990  DLOG(WARNING) << "base-data-offset-present is not expected. Assumes "
        -
        1991  "default-base-is-moof.";
        -
        1992  }
        -
        1993 
        -
        1994  if (flags & kSampleDescriptionIndexPresentMask) {
        -
        1995  RCHECK(buffer->ReadWriteUInt32(&sample_description_index));
        -
        1996  } else if (buffer->Reading()) {
        -
        1997  sample_description_index = 0;
        -
        1998  }
        -
        1999 
        -
        2000  if (flags & kDefaultSampleDurationPresentMask) {
        -
        2001  RCHECK(buffer->ReadWriteUInt32(&default_sample_duration));
        -
        2002  } else if (buffer->Reading()) {
        -
        2003  default_sample_duration = 0;
        -
        2004  }
        -
        2005 
        -
        2006  if (flags & kDefaultSampleSizePresentMask) {
        -
        2007  RCHECK(buffer->ReadWriteUInt32(&default_sample_size));
        -
        2008  } else if (buffer->Reading()) {
        -
        2009  default_sample_size = 0;
        -
        2010  }
        -
        2011 
        -
        2012  if (flags & kDefaultSampleFlagsPresentMask)
        -
        2013  RCHECK(buffer->ReadWriteUInt32(&default_sample_flags));
        -
        2014  return true;
        -
        2015 }
        -
        2016 
        -
        2017 uint32_t TrackFragmentHeader::ComputeSizeInternal() {
        -
        2018  uint32_t box_size = HeaderSize() + sizeof(track_id);
        -
        2019  if (flags & kSampleDescriptionIndexPresentMask)
        -
        2020  box_size += sizeof(sample_description_index);
        -
        2021  if (flags & kDefaultSampleDurationPresentMask)
        -
        2022  box_size += sizeof(default_sample_duration);
        -
        2023  if (flags & kDefaultSampleSizePresentMask)
        -
        2024  box_size += sizeof(default_sample_size);
        -
        2025  if (flags & kDefaultSampleFlagsPresentMask)
        -
        2026  box_size += sizeof(default_sample_flags);
        -
        2027  return box_size;
        -
        2028 }
        -
        2029 
        -
        2030 TrackFragmentRun::TrackFragmentRun() : sample_count(0), data_offset(0) {}
        -
        2031 TrackFragmentRun::~TrackFragmentRun() {}
        -
        2032 FourCC TrackFragmentRun::BoxType() const { return FOURCC_TRUN; }
        -
        2033 
        -
        2034 bool TrackFragmentRun::ReadWriteInternal(BoxBuffer* buffer) {
        -
        2035  if (!buffer->Reading()) {
        -
        2036  // Determine whether version 0 or version 1 should be used.
        -
        2037  // Use version 0 if possible, use version 1 if there is a negative
        -
        2038  // sample_offset value.
        -
        2039  version = 0;
        -
        2040  if (flags & kSampleCompTimeOffsetsPresentMask) {
        -
        2041  for (uint32_t i = 0; i < sample_count; ++i) {
        -
        2042  if (sample_composition_time_offsets[i] < 0) {
        -
        2043  version = 1;
        -
        2044  break;
        -
        2045  }
        -
        2046  }
        -
        2047  }
        -
        2048  }
        -
        2049 
        -
        2050  RCHECK(ReadWriteHeaderInternal(buffer) &&
        -
        2051  buffer->ReadWriteUInt32(&sample_count));
        -
        2052 
        -
        2053  bool data_offset_present = (flags & kDataOffsetPresentMask) != 0;
        -
        2054  bool first_sample_flags_present = (flags & kFirstSampleFlagsPresentMask) != 0;
        -
        2055  bool sample_duration_present = (flags & kSampleDurationPresentMask) != 0;
        -
        2056  bool sample_size_present = (flags & kSampleSizePresentMask) != 0;
        -
        2057  bool sample_flags_present = (flags & kSampleFlagsPresentMask) != 0;
        -
        2058  bool sample_composition_time_offsets_present =
        -
        2059  (flags & kSampleCompTimeOffsetsPresentMask) != 0;
        -
        2060 
        -
        2061  if (data_offset_present) {
        -
        2062  RCHECK(buffer->ReadWriteUInt32(&data_offset));
        -
        2063  } else {
        -
        2064  // NOTE: If the data-offset is not present, then the data for this run
        -
        2065  // starts immediately after the data of the previous run, or at the
        -
        2066  // base-data-offset defined by the track fragment header if this is the
        -
        2067  // first run in a track fragment. If the data-offset is present, it is
        -
        2068  // relative to the base-data-offset established in the track fragment
        -
        2069  // header.
        -
        2070  NOTIMPLEMENTED();
        -
        2071  }
        -
        2072 
        -
        2073  uint32_t first_sample_flags;
        -
        2074 
        -
        2075  if (buffer->Reading()) {
        -
        2076  if (first_sample_flags_present)
        -
        2077  RCHECK(buffer->ReadWriteUInt32(&first_sample_flags));
        +
        1979  if (flags & kSampleDescriptionIndexPresentMask) {
        +
        1980  RCHECK(buffer->ReadWriteUInt32(&sample_description_index));
        +
        1981  } else if (buffer->Reading()) {
        +
        1982  sample_description_index = 0;
        +
        1983  }
        +
        1984 
        +
        1985  if (flags & kDefaultSampleDurationPresentMask) {
        +
        1986  RCHECK(buffer->ReadWriteUInt32(&default_sample_duration));
        +
        1987  } else if (buffer->Reading()) {
        +
        1988  default_sample_duration = 0;
        +
        1989  }
        +
        1990 
        +
        1991  if (flags & kDefaultSampleSizePresentMask) {
        +
        1992  RCHECK(buffer->ReadWriteUInt32(&default_sample_size));
        +
        1993  } else if (buffer->Reading()) {
        +
        1994  default_sample_size = 0;
        +
        1995  }
        +
        1996 
        +
        1997  if (flags & kDefaultSampleFlagsPresentMask)
        +
        1998  RCHECK(buffer->ReadWriteUInt32(&default_sample_flags));
        +
        1999  return true;
        +
        2000 }
        +
        2001 
        +
        2002 uint32_t TrackFragmentHeader::ComputeSizeInternal() {
        +
        2003  uint32_t box_size = HeaderSize() + sizeof(track_id);
        +
        2004  if (flags & kSampleDescriptionIndexPresentMask)
        +
        2005  box_size += sizeof(sample_description_index);
        +
        2006  if (flags & kDefaultSampleDurationPresentMask)
        +
        2007  box_size += sizeof(default_sample_duration);
        +
        2008  if (flags & kDefaultSampleSizePresentMask)
        +
        2009  box_size += sizeof(default_sample_size);
        +
        2010  if (flags & kDefaultSampleFlagsPresentMask)
        +
        2011  box_size += sizeof(default_sample_flags);
        +
        2012  return box_size;
        +
        2013 }
        +
        2014 
        +
        2015 TrackFragmentRun::TrackFragmentRun() : sample_count(0), data_offset(0) {}
        +
        2016 TrackFragmentRun::~TrackFragmentRun() {}
        +
        2017 FourCC TrackFragmentRun::BoxType() const { return FOURCC_TRUN; }
        +
        2018 
        +
        2019 bool TrackFragmentRun::ReadWriteInternal(BoxBuffer* buffer) {
        +
        2020  if (!buffer->Reading()) {
        +
        2021  // Determine whether version 0 or version 1 should be used.
        +
        2022  // Use version 0 if possible, use version 1 if there is a negative
        +
        2023  // sample_offset value.
        +
        2024  version = 0;
        +
        2025  if (flags & kSampleCompTimeOffsetsPresentMask) {
        +
        2026  for (uint32_t i = 0; i < sample_count; ++i) {
        +
        2027  if (sample_composition_time_offsets[i] < 0) {
        +
        2028  version = 1;
        +
        2029  break;
        +
        2030  }
        +
        2031  }
        +
        2032  }
        +
        2033  }
        +
        2034 
        +
        2035  RCHECK(ReadWriteHeaderInternal(buffer) &&
        +
        2036  buffer->ReadWriteUInt32(&sample_count));
        +
        2037 
        +
        2038  bool data_offset_present = (flags & kDataOffsetPresentMask) != 0;
        +
        2039  bool first_sample_flags_present = (flags & kFirstSampleFlagsPresentMask) != 0;
        +
        2040  bool sample_duration_present = (flags & kSampleDurationPresentMask) != 0;
        +
        2041  bool sample_size_present = (flags & kSampleSizePresentMask) != 0;
        +
        2042  bool sample_flags_present = (flags & kSampleFlagsPresentMask) != 0;
        +
        2043  bool sample_composition_time_offsets_present =
        +
        2044  (flags & kSampleCompTimeOffsetsPresentMask) != 0;
        +
        2045 
        +
        2046  if (data_offset_present) {
        +
        2047  RCHECK(buffer->ReadWriteUInt32(&data_offset));
        +
        2048  } else {
        +
        2049  // NOTE: If the data-offset is not present, then the data for this run
        +
        2050  // starts immediately after the data of the previous run, or at the
        +
        2051  // base-data-offset defined by the track fragment header if this is the
        +
        2052  // first run in a track fragment. If the data-offset is present, it is
        +
        2053  // relative to the base-data-offset established in the track fragment
        +
        2054  // header.
        +
        2055  NOTIMPLEMENTED();
        +
        2056  }
        +
        2057 
        +
        2058  uint32_t first_sample_flags;
        +
        2059 
        +
        2060  if (buffer->Reading()) {
        +
        2061  if (first_sample_flags_present)
        +
        2062  RCHECK(buffer->ReadWriteUInt32(&first_sample_flags));
        +
        2063 
        +
        2064  if (sample_duration_present)
        +
        2065  sample_durations.resize(sample_count);
        +
        2066  if (sample_size_present)
        +
        2067  sample_sizes.resize(sample_count);
        +
        2068  if (sample_flags_present)
        +
        2069  sample_flags.resize(sample_count);
        +
        2070  if (sample_composition_time_offsets_present)
        +
        2071  sample_composition_time_offsets.resize(sample_count);
        +
        2072  } else {
        +
        2073  if (first_sample_flags_present) {
        +
        2074  first_sample_flags = sample_flags[0];
        +
        2075  DCHECK(sample_flags.size() == 1);
        +
        2076  RCHECK(buffer->ReadWriteUInt32(&first_sample_flags));
        +
        2077  }
        2078 
        2079  if (sample_duration_present)
        -
        2080  sample_durations.resize(sample_count);
        +
        2080  DCHECK(sample_durations.size() == sample_count);
        2081  if (sample_size_present)
        -
        2082  sample_sizes.resize(sample_count);
        +
        2082  DCHECK(sample_sizes.size() == sample_count);
        2083  if (sample_flags_present)
        -
        2084  sample_flags.resize(sample_count);
        +
        2084  DCHECK(sample_flags.size() == sample_count);
        2085  if (sample_composition_time_offsets_present)
        -
        2086  sample_composition_time_offsets.resize(sample_count);
        -
        2087  } else {
        -
        2088  if (first_sample_flags_present) {
        -
        2089  first_sample_flags = sample_flags[0];
        -
        2090  DCHECK(sample_flags.size() == 1);
        -
        2091  RCHECK(buffer->ReadWriteUInt32(&first_sample_flags));
        -
        2092  }
        -
        2093 
        -
        2094  if (sample_duration_present)
        -
        2095  DCHECK(sample_durations.size() == sample_count);
        -
        2096  if (sample_size_present)
        -
        2097  DCHECK(sample_sizes.size() == sample_count);
        -
        2098  if (sample_flags_present)
        -
        2099  DCHECK(sample_flags.size() == sample_count);
        -
        2100  if (sample_composition_time_offsets_present)
        -
        2101  DCHECK(sample_composition_time_offsets.size() == sample_count);
        -
        2102  }
        -
        2103 
        -
        2104  for (uint32_t i = 0; i < sample_count; ++i) {
        -
        2105  if (sample_duration_present)
        -
        2106  RCHECK(buffer->ReadWriteUInt32(&sample_durations[i]));
        -
        2107  if (sample_size_present)
        -
        2108  RCHECK(buffer->ReadWriteUInt32(&sample_sizes[i]));
        -
        2109  if (sample_flags_present)
        -
        2110  RCHECK(buffer->ReadWriteUInt32(&sample_flags[i]));
        -
        2111 
        -
        2112  if (sample_composition_time_offsets_present) {
        -
        2113  if (version == 0) {
        -
        2114  uint32_t sample_offset = sample_composition_time_offsets[i];
        -
        2115  RCHECK(buffer->ReadWriteUInt32(&sample_offset));
        -
        2116  sample_composition_time_offsets[i] = sample_offset;
        -
        2117  } else {
        -
        2118  int32_t sample_offset = sample_composition_time_offsets[i];
        -
        2119  RCHECK(buffer->ReadWriteInt32(&sample_offset));
        -
        2120  sample_composition_time_offsets[i] = sample_offset;
        -
        2121  }
        -
        2122  }
        -
        2123  }
        -
        2124 
        -
        2125  if (buffer->Reading()) {
        -
        2126  if (first_sample_flags_present) {
        -
        2127  if (sample_flags.size() == 0) {
        -
        2128  sample_flags.push_back(first_sample_flags);
        -
        2129  } else {
        -
        2130  sample_flags[0] = first_sample_flags;
        -
        2131  }
        -
        2132  }
        -
        2133  }
        -
        2134  return true;
        -
        2135 }
        -
        2136 
        -
        2137 uint32_t TrackFragmentRun::ComputeSizeInternal() {
        -
        2138  uint32_t box_size = HeaderSize() + sizeof(sample_count);
        -
        2139  if (flags & kDataOffsetPresentMask)
        -
        2140  box_size += sizeof(data_offset);
        -
        2141  if (flags & kFirstSampleFlagsPresentMask)
        -
        2142  box_size += sizeof(uint32_t);
        -
        2143  uint32_t fields = (flags & kSampleDurationPresentMask ? 1 : 0) +
        -
        2144  (flags & kSampleSizePresentMask ? 1 : 0) +
        -
        2145  (flags & kSampleFlagsPresentMask ? 1 : 0) +
        -
        2146  (flags & kSampleCompTimeOffsetsPresentMask ? 1 : 0);
        -
        2147  box_size += fields * sizeof(uint32_t) * sample_count;
        -
        2148  return box_size;
        -
        2149 }
        -
        2150 
        -
        2151 SampleToGroup::SampleToGroup() : grouping_type(0), grouping_type_parameter(0) {}
        -
        2152 SampleToGroup::~SampleToGroup() {}
        -
        2153 FourCC SampleToGroup::BoxType() const { return FOURCC_SBGP; }
        -
        2154 
        -
        2155 bool SampleToGroup::ReadWriteInternal(BoxBuffer* buffer) {
        -
        2156  RCHECK(ReadWriteHeaderInternal(buffer) &&
        -
        2157  buffer->ReadWriteUInt32(&grouping_type));
        -
        2158  if (version == 1)
        -
        2159  RCHECK(buffer->ReadWriteUInt32(&grouping_type_parameter));
        -
        2160 
        -
        2161  if (grouping_type != FOURCC_SEIG) {
        -
        2162  DCHECK(buffer->Reading());
        -
        2163  DLOG(WARNING) << "Sample group "
        -
        2164  << FourCCToString(static_cast<FourCC>(grouping_type))
        -
        2165  << " is not supported.";
        -
        2166  return true;
        -
        2167  }
        -
        2168 
        -
        2169  uint32_t count = entries.size();
        -
        2170  RCHECK(buffer->ReadWriteUInt32(&count));
        -
        2171  entries.resize(count);
        -
        2172  for (uint32_t i = 0; i < count; ++i) {
        -
        2173  RCHECK(buffer->ReadWriteUInt32(&entries[i].sample_count) &&
        -
        2174  buffer->ReadWriteUInt32(&entries[i].group_description_index));
        -
        2175  }
        -
        2176  return true;
        -
        2177 }
        -
        2178 
        -
        2179 uint32_t SampleToGroup::ComputeSizeInternal() {
        -
        2180  // This box is optional. Skip it if it is not used.
        -
        2181  if (entries.empty())
        -
        2182  return 0;
        -
        2183  return HeaderSize() + sizeof(grouping_type) +
        -
        2184  (version == 1 ? sizeof(grouping_type_parameter) : 0) +
        -
        2185  sizeof(uint32_t) + entries.size() * sizeof(entries[0]);
        -
        2186 }
        -
        2187 
        -
        2188 CencSampleEncryptionInfoEntry::CencSampleEncryptionInfoEntry()
        -
        2189  : is_encrypted(false), iv_size(0) {
        -
        2190 }
        -
        2191 CencSampleEncryptionInfoEntry::~CencSampleEncryptionInfoEntry() {};
        -
        2192 
        -
        2193 SampleGroupDescription::SampleGroupDescription() : grouping_type(0) {}
        -
        2194 SampleGroupDescription::~SampleGroupDescription() {}
        -
        2195 FourCC SampleGroupDescription::BoxType() const { return FOURCC_SGPD; }
        -
        2196 
        -
        2197 bool SampleGroupDescription::ReadWriteInternal(BoxBuffer* buffer) {
        -
        2198  RCHECK(ReadWriteHeaderInternal(buffer) &&
        -
        2199  buffer->ReadWriteUInt32(&grouping_type));
        -
        2200 
        -
        2201  if (grouping_type != FOURCC_SEIG) {
        -
        2202  DCHECK(buffer->Reading());
        -
        2203  DLOG(WARNING) << "Sample group '" << grouping_type << "' is not supported.";
        -
        2204  return true;
        -
        2205  }
        -
        2206 
        -
        2207  const size_t kEntrySize = sizeof(uint32_t) + kCencKeyIdSize;
        -
        2208  uint32_t default_length = 0;
        -
        2209  if (version == 1) {
        -
        2210  if (buffer->Reading()) {
        -
        2211  RCHECK(buffer->ReadWriteUInt32(&default_length));
        -
        2212  RCHECK(default_length == 0 || default_length >= kEntrySize);
        -
        2213  } else {
        -
        2214  default_length = kEntrySize;
        -
        2215  RCHECK(buffer->ReadWriteUInt32(&default_length));
        -
        2216  }
        -
        2217  }
        -
        2218 
        -
        2219  uint32_t count = entries.size();
        -
        2220  RCHECK(buffer->ReadWriteUInt32(&count));
        -
        2221  entries.resize(count);
        -
        2222  for (uint32_t i = 0; i < count; ++i) {
        -
        2223  if (version == 1) {
        -
        2224  if (buffer->Reading() && default_length == 0) {
        -
        2225  uint32_t description_length = 0;
        -
        2226  RCHECK(buffer->ReadWriteUInt32(&description_length));
        -
        2227  RCHECK(description_length >= kEntrySize);
        -
        2228  }
        -
        2229  }
        +
        2086  DCHECK(sample_composition_time_offsets.size() == sample_count);
        +
        2087  }
        +
        2088 
        +
        2089  for (uint32_t i = 0; i < sample_count; ++i) {
        +
        2090  if (sample_duration_present)
        +
        2091  RCHECK(buffer->ReadWriteUInt32(&sample_durations[i]));
        +
        2092  if (sample_size_present)
        +
        2093  RCHECK(buffer->ReadWriteUInt32(&sample_sizes[i]));
        +
        2094  if (sample_flags_present)
        +
        2095  RCHECK(buffer->ReadWriteUInt32(&sample_flags[i]));
        +
        2096 
        +
        2097  if (sample_composition_time_offsets_present) {
        +
        2098  if (version == 0) {
        +
        2099  uint32_t sample_offset = sample_composition_time_offsets[i];
        +
        2100  RCHECK(buffer->ReadWriteUInt32(&sample_offset));
        +
        2101  sample_composition_time_offsets[i] = sample_offset;
        +
        2102  } else {
        +
        2103  int32_t sample_offset = sample_composition_time_offsets[i];
        +
        2104  RCHECK(buffer->ReadWriteInt32(&sample_offset));
        +
        2105  sample_composition_time_offsets[i] = sample_offset;
        +
        2106  }
        +
        2107  }
        +
        2108  }
        +
        2109 
        +
        2110  if (buffer->Reading()) {
        +
        2111  if (first_sample_flags_present) {
        +
        2112  if (sample_flags.size() == 0) {
        +
        2113  sample_flags.push_back(first_sample_flags);
        +
        2114  } else {
        +
        2115  sample_flags[0] = first_sample_flags;
        +
        2116  }
        +
        2117  }
        +
        2118  }
        +
        2119  return true;
        +
        2120 }
        +
        2121 
        +
        2122 uint32_t TrackFragmentRun::ComputeSizeInternal() {
        +
        2123  uint32_t box_size = HeaderSize() + sizeof(sample_count);
        +
        2124  if (flags & kDataOffsetPresentMask)
        +
        2125  box_size += sizeof(data_offset);
        +
        2126  if (flags & kFirstSampleFlagsPresentMask)
        +
        2127  box_size += sizeof(uint32_t);
        +
        2128  uint32_t fields = (flags & kSampleDurationPresentMask ? 1 : 0) +
        +
        2129  (flags & kSampleSizePresentMask ? 1 : 0) +
        +
        2130  (flags & kSampleFlagsPresentMask ? 1 : 0) +
        +
        2131  (flags & kSampleCompTimeOffsetsPresentMask ? 1 : 0);
        +
        2132  box_size += fields * sizeof(uint32_t) * sample_count;
        +
        2133  return box_size;
        +
        2134 }
        +
        2135 
        +
        2136 SampleToGroup::SampleToGroup() : grouping_type(0), grouping_type_parameter(0) {}
        +
        2137 SampleToGroup::~SampleToGroup() {}
        +
        2138 FourCC SampleToGroup::BoxType() const { return FOURCC_SBGP; }
        +
        2139 
        +
        2140 bool SampleToGroup::ReadWriteInternal(BoxBuffer* buffer) {
        +
        2141  RCHECK(ReadWriteHeaderInternal(buffer) &&
        +
        2142  buffer->ReadWriteUInt32(&grouping_type));
        +
        2143  if (version == 1)
        +
        2144  RCHECK(buffer->ReadWriteUInt32(&grouping_type_parameter));
        +
        2145 
        +
        2146  if (grouping_type != FOURCC_SEIG) {
        +
        2147  DCHECK(buffer->Reading());
        +
        2148  DLOG(WARNING) << "Sample group "
        +
        2149  << FourCCToString(static_cast<FourCC>(grouping_type))
        +
        2150  << " is not supported.";
        +
        2151  return true;
        +
        2152  }
        +
        2153 
        +
        2154  uint32_t count = entries.size();
        +
        2155  RCHECK(buffer->ReadWriteUInt32(&count));
        +
        2156  entries.resize(count);
        +
        2157  for (uint32_t i = 0; i < count; ++i) {
        +
        2158  RCHECK(buffer->ReadWriteUInt32(&entries[i].sample_count) &&
        +
        2159  buffer->ReadWriteUInt32(&entries[i].group_description_index));
        +
        2160  }
        +
        2161  return true;
        +
        2162 }
        +
        2163 
        +
        2164 uint32_t SampleToGroup::ComputeSizeInternal() {
        +
        2165  // This box is optional. Skip it if it is not used.
        +
        2166  if (entries.empty())
        +
        2167  return 0;
        +
        2168  return HeaderSize() + sizeof(grouping_type) +
        +
        2169  (version == 1 ? sizeof(grouping_type_parameter) : 0) +
        +
        2170  sizeof(uint32_t) + entries.size() * sizeof(entries[0]);
        +
        2171 }
        +
        2172 
        +
        2173 CencSampleEncryptionInfoEntry::CencSampleEncryptionInfoEntry()
        +
        2174  : is_encrypted(false), iv_size(0) {
        +
        2175 }
        +
        2176 CencSampleEncryptionInfoEntry::~CencSampleEncryptionInfoEntry() {};
        +
        2177 
        +
        2178 SampleGroupDescription::SampleGroupDescription() : grouping_type(0) {}
        +
        2179 SampleGroupDescription::~SampleGroupDescription() {}
        +
        2180 FourCC SampleGroupDescription::BoxType() const { return FOURCC_SGPD; }
        +
        2181 
        +
        2182 bool SampleGroupDescription::ReadWriteInternal(BoxBuffer* buffer) {
        +
        2183  RCHECK(ReadWriteHeaderInternal(buffer) &&
        +
        2184  buffer->ReadWriteUInt32(&grouping_type));
        +
        2185 
        +
        2186  if (grouping_type != FOURCC_SEIG) {
        +
        2187  DCHECK(buffer->Reading());
        +
        2188  DLOG(WARNING) << "Sample group '" << grouping_type << "' is not supported.";
        +
        2189  return true;
        +
        2190  }
        +
        2191 
        +
        2192  const size_t kEntrySize = sizeof(uint32_t) + kCencKeyIdSize;
        +
        2193  uint32_t default_length = 0;
        +
        2194  if (version == 1) {
        +
        2195  if (buffer->Reading()) {
        +
        2196  RCHECK(buffer->ReadWriteUInt32(&default_length));
        +
        2197  RCHECK(default_length == 0 || default_length >= kEntrySize);
        +
        2198  } else {
        +
        2199  default_length = kEntrySize;
        +
        2200  RCHECK(buffer->ReadWriteUInt32(&default_length));
        +
        2201  }
        +
        2202  }
        +
        2203 
        +
        2204  uint32_t count = entries.size();
        +
        2205  RCHECK(buffer->ReadWriteUInt32(&count));
        +
        2206  entries.resize(count);
        +
        2207  for (uint32_t i = 0; i < count; ++i) {
        +
        2208  if (version == 1) {
        +
        2209  if (buffer->Reading() && default_length == 0) {
        +
        2210  uint32_t description_length = 0;
        +
        2211  RCHECK(buffer->ReadWriteUInt32(&description_length));
        +
        2212  RCHECK(description_length >= kEntrySize);
        +
        2213  }
        +
        2214  }
        +
        2215 
        +
        2216  if (!buffer->Reading()) {
        +
        2217  if (entries[i].key_id.size() != kCencKeyIdSize) {
        +
        2218  LOG(WARNING) << "CENC defines key id length of " << kCencKeyIdSize
        +
        2219  << " bytes; got " << entries[i].key_id.size()
        +
        2220  << ". Resized accordingly.";
        +
        2221  entries[i].key_id.resize(kCencKeyIdSize);
        +
        2222  }
        +
        2223  }
        +
        2224 
        +
        2225  uint8_t flag = entries[i].is_encrypted ? 1 : 0;
        +
        2226  RCHECK(buffer->IgnoreBytes(2) && // reserved.
        +
        2227  buffer->ReadWriteUInt8(&flag) &&
        +
        2228  buffer->ReadWriteUInt8(&entries[i].iv_size) &&
        +
        2229  buffer->ReadWriteVector(&entries[i].key_id, kCencKeyIdSize));
        2230 
        -
        2231  if (!buffer->Reading()) {
        -
        2232  if (entries[i].key_id.size() != kCencKeyIdSize) {
        -
        2233  LOG(WARNING) << "CENC defines key id length of " << kCencKeyIdSize
        -
        2234  << " bytes; got " << entries[i].key_id.size()
        -
        2235  << ". Resized accordingly.";
        -
        2236  entries[i].key_id.resize(kCencKeyIdSize);
        +
        2231  if (buffer->Reading()) {
        +
        2232  entries[i].is_encrypted = (flag != 0);
        +
        2233  if (entries[i].is_encrypted) {
        +
        2234  RCHECK(entries[i].iv_size == 8 || entries[i].iv_size == 16);
        +
        2235  } else {
        +
        2236  RCHECK(entries[i].iv_size == 0);
        2237  }
        2238  }
        -
        2239 
        -
        2240  uint8_t flag = entries[i].is_encrypted ? 1 : 0;
        -
        2241  RCHECK(buffer->IgnoreBytes(2) && // reserved.
        -
        2242  buffer->ReadWriteUInt8(&flag) &&
        -
        2243  buffer->ReadWriteUInt8(&entries[i].iv_size) &&
        -
        2244  buffer->ReadWriteVector(&entries[i].key_id, kCencKeyIdSize));
        -
        2245 
        -
        2246  if (buffer->Reading()) {
        -
        2247  entries[i].is_encrypted = (flag != 0);
        -
        2248  if (entries[i].is_encrypted) {
        -
        2249  RCHECK(entries[i].iv_size == 8 || entries[i].iv_size == 16);
        -
        2250  } else {
        -
        2251  RCHECK(entries[i].iv_size == 0);
        -
        2252  }
        -
        2253  }
        -
        2254  }
        -
        2255  return true;
        -
        2256 }
        -
        2257 
        -
        2258 uint32_t SampleGroupDescription::ComputeSizeInternal() {
        -
        2259  // Version 0 is obsoleted, so always generate version 1 box.
        -
        2260  version = 1;
        -
        2261  // This box is optional. Skip it if it is not used.
        -
        2262  if (entries.empty())
        -
        2263  return 0;
        -
        2264  const size_t kEntrySize = sizeof(uint32_t) + kCencKeyIdSize;
        -
        2265  return HeaderSize() + sizeof(grouping_type) +
        -
        2266  (version == 1 ? sizeof(uint32_t) : 0) + sizeof(uint32_t) +
        -
        2267  entries.size() * kEntrySize;
        -
        2268 }
        +
        2239  }
        +
        2240  return true;
        +
        2241 }
        +
        2242 
        +
        2243 uint32_t SampleGroupDescription::ComputeSizeInternal() {
        +
        2244  // Version 0 is obsoleted, so always generate version 1 box.
        +
        2245  version = 1;
        +
        2246  // This box is optional. Skip it if it is not used.
        +
        2247  if (entries.empty())
        +
        2248  return 0;
        +
        2249  const size_t kEntrySize = sizeof(uint32_t) + kCencKeyIdSize;
        +
        2250  return HeaderSize() + sizeof(grouping_type) +
        +
        2251  (version == 1 ? sizeof(uint32_t) : 0) + sizeof(uint32_t) +
        +
        2252  entries.size() * kEntrySize;
        +
        2253 }
        +
        2254 
        +
        2255 TrackFragment::TrackFragment() : decode_time_absent(false) {}
        +
        2256 TrackFragment::~TrackFragment() {}
        +
        2257 FourCC TrackFragment::BoxType() const { return FOURCC_TRAF; }
        +
        2258 
        +
        2259 bool TrackFragment::ReadWriteInternal(BoxBuffer* buffer) {
        +
        2260  RCHECK(ReadWriteHeaderInternal(buffer) &&
        +
        2261  buffer->PrepareChildren() &&
        +
        2262  buffer->ReadWriteChild(&header));
        +
        2263  if (buffer->Reading()) {
        +
        2264  DCHECK(buffer->reader());
        +
        2265  decode_time_absent = !buffer->reader()->ChildExist(&decode_time);
        +
        2266  if (!decode_time_absent)
        +
        2267  RCHECK(buffer->ReadWriteChild(&decode_time));
        +
        2268  RCHECK(buffer->reader()->TryReadChildren(&runs));
        2269 
        -
        2270 TrackFragment::TrackFragment() : decode_time_absent(false) {}
        -
        2271 TrackFragment::~TrackFragment() {}
        -
        2272 FourCC TrackFragment::BoxType() const { return FOURCC_TRAF; }
        -
        2273 
        -
        2274 bool TrackFragment::ReadWriteInternal(BoxBuffer* buffer) {
        -
        2275  RCHECK(ReadWriteHeaderInternal(buffer) &&
        -
        2276  buffer->PrepareChildren() &&
        -
        2277  buffer->ReadWriteChild(&header));
        -
        2278  if (buffer->Reading()) {
        -
        2279  DCHECK(buffer->reader());
        -
        2280  decode_time_absent = !buffer->reader()->ChildExist(&decode_time);
        -
        2281  if (!decode_time_absent)
        -
        2282  RCHECK(buffer->ReadWriteChild(&decode_time));
        -
        2283  RCHECK(buffer->reader()->TryReadChildren(&runs));
        -
        2284 
        -
        2285  // There could be multiple SampleGroupDescription and SampleToGroup boxes
        -
        2286  // with different grouping types. For common encryption, the relevant
        -
        2287  // grouping type is 'seig'. Continue reading until 'seig' is found, or
        -
        2288  // until running out of child boxes.
        -
        2289  while (sample_to_group.grouping_type != FOURCC_SEIG &&
        -
        2290  buffer->reader()->ChildExist(&sample_to_group)) {
        -
        2291  RCHECK(buffer->reader()->ReadChild(&sample_to_group));
        -
        2292  }
        -
        2293  while (sample_group_description.grouping_type != FOURCC_SEIG &&
        -
        2294  buffer->reader()->ChildExist(&sample_group_description)) {
        -
        2295  RCHECK(buffer->reader()->ReadChild(&sample_group_description));
        -
        2296  }
        -
        2297  } else {
        -
        2298  if (!decode_time_absent)
        -
        2299  RCHECK(buffer->ReadWriteChild(&decode_time));
        -
        2300  for (uint32_t i = 0; i < runs.size(); ++i)
        -
        2301  RCHECK(buffer->ReadWriteChild(&runs[i]));
        -
        2302  RCHECK(buffer->TryReadWriteChild(&sample_to_group) &&
        -
        2303  buffer->TryReadWriteChild(&sample_group_description));
        -
        2304  }
        -
        2305  return buffer->TryReadWriteChild(&auxiliary_size) &&
        -
        2306  buffer->TryReadWriteChild(&auxiliary_offset) &&
        -
        2307  buffer->TryReadWriteChild(&sample_encryption);
        -
        2308 }
        +
        2270  // There could be multiple SampleGroupDescription and SampleToGroup boxes
        +
        2271  // with different grouping types. For common encryption, the relevant
        +
        2272  // grouping type is 'seig'. Continue reading until 'seig' is found, or
        +
        2273  // until running out of child boxes.
        +
        2274  while (sample_to_group.grouping_type != FOURCC_SEIG &&
        +
        2275  buffer->reader()->ChildExist(&sample_to_group)) {
        +
        2276  RCHECK(buffer->reader()->ReadChild(&sample_to_group));
        +
        2277  }
        +
        2278  while (sample_group_description.grouping_type != FOURCC_SEIG &&
        +
        2279  buffer->reader()->ChildExist(&sample_group_description)) {
        +
        2280  RCHECK(buffer->reader()->ReadChild(&sample_group_description));
        +
        2281  }
        +
        2282  } else {
        +
        2283  if (!decode_time_absent)
        +
        2284  RCHECK(buffer->ReadWriteChild(&decode_time));
        +
        2285  for (uint32_t i = 0; i < runs.size(); ++i)
        +
        2286  RCHECK(buffer->ReadWriteChild(&runs[i]));
        +
        2287  RCHECK(buffer->TryReadWriteChild(&sample_to_group) &&
        +
        2288  buffer->TryReadWriteChild(&sample_group_description));
        +
        2289  }
        +
        2290  return buffer->TryReadWriteChild(&auxiliary_size) &&
        +
        2291  buffer->TryReadWriteChild(&auxiliary_offset) &&
        +
        2292  buffer->TryReadWriteChild(&sample_encryption);
        +
        2293 }
        +
        2294 
        +
        2295 uint32_t TrackFragment::ComputeSizeInternal() {
        +
        2296  uint32_t box_size =
        +
        2297  HeaderSize() + header.ComputeSize() + decode_time.ComputeSize() +
        +
        2298  sample_to_group.ComputeSize() + sample_group_description.ComputeSize() +
        +
        2299  auxiliary_size.ComputeSize() + auxiliary_offset.ComputeSize() +
        +
        2300  sample_encryption.ComputeSize();
        +
        2301  for (uint32_t i = 0; i < runs.size(); ++i)
        +
        2302  box_size += runs[i].ComputeSize();
        +
        2303  return box_size;
        +
        2304 }
        +
        2305 
        +
        2306 MovieFragment::MovieFragment() {}
        +
        2307 MovieFragment::~MovieFragment() {}
        +
        2308 FourCC MovieFragment::BoxType() const { return FOURCC_MOOF; }
        2309 
        -
        2310 uint32_t TrackFragment::ComputeSizeInternal() {
        -
        2311  uint32_t box_size =
        -
        2312  HeaderSize() + header.ComputeSize() + decode_time.ComputeSize() +
        -
        2313  sample_to_group.ComputeSize() + sample_group_description.ComputeSize() +
        -
        2314  auxiliary_size.ComputeSize() + auxiliary_offset.ComputeSize() +
        -
        2315  sample_encryption.ComputeSize();
        -
        2316  for (uint32_t i = 0; i < runs.size(); ++i)
        -
        2317  box_size += runs[i].ComputeSize();
        -
        2318  return box_size;
        -
        2319 }
        -
        2320 
        -
        2321 MovieFragment::MovieFragment() {}
        -
        2322 MovieFragment::~MovieFragment() {}
        -
        2323 FourCC MovieFragment::BoxType() const { return FOURCC_MOOF; }
        -
        2324 
        -
        2325 bool MovieFragment::ReadWriteInternal(BoxBuffer* buffer) {
        -
        2326  RCHECK(ReadWriteHeaderInternal(buffer) &&
        -
        2327  buffer->PrepareChildren() &&
        -
        2328  buffer->ReadWriteChild(&header));
        -
        2329  if (buffer->Reading()) {
        -
        2330  BoxReader* reader = buffer->reader();
        -
        2331  DCHECK(reader);
        -
        2332  RCHECK(reader->ReadChildren(&tracks) &&
        -
        2333  reader->TryReadChildren(&pssh));
        -
        2334  } else {
        -
        2335  for (uint32_t i = 0; i < tracks.size(); ++i)
        -
        2336  RCHECK(buffer->ReadWriteChild(&tracks[i]));
        -
        2337  for (uint32_t i = 0; i < pssh.size(); ++i)
        -
        2338  RCHECK(buffer->ReadWriteChild(&pssh[i]));
        -
        2339  }
        -
        2340  return true;
        -
        2341 }
        -
        2342 
        -
        2343 uint32_t MovieFragment::ComputeSizeInternal() {
        -
        2344  uint32_t box_size = HeaderSize() + header.ComputeSize();
        -
        2345  for (uint32_t i = 0; i < tracks.size(); ++i)
        -
        2346  box_size += tracks[i].ComputeSize();
        -
        2347  for (uint32_t i = 0; i < pssh.size(); ++i)
        -
        2348  box_size += pssh[i].ComputeSize();
        -
        2349  return box_size;
        -
        2350 }
        -
        2351 
        -
        2352 SegmentIndex::SegmentIndex()
        -
        2353  : reference_id(0),
        -
        2354  timescale(0),
        -
        2355  earliest_presentation_time(0),
        -
        2356  first_offset(0) {}
        -
        2357 SegmentIndex::~SegmentIndex() {}
        -
        2358 FourCC SegmentIndex::BoxType() const { return FOURCC_SIDX; }
        +
        2310 bool MovieFragment::ReadWriteInternal(BoxBuffer* buffer) {
        +
        2311  RCHECK(ReadWriteHeaderInternal(buffer) &&
        +
        2312  buffer->PrepareChildren() &&
        +
        2313  buffer->ReadWriteChild(&header));
        +
        2314  if (buffer->Reading()) {
        +
        2315  BoxReader* reader = buffer->reader();
        +
        2316  DCHECK(reader);
        +
        2317  RCHECK(reader->ReadChildren(&tracks) &&
        +
        2318  reader->TryReadChildren(&pssh));
        +
        2319  } else {
        +
        2320  for (uint32_t i = 0; i < tracks.size(); ++i)
        +
        2321  RCHECK(buffer->ReadWriteChild(&tracks[i]));
        +
        2322  for (uint32_t i = 0; i < pssh.size(); ++i)
        +
        2323  RCHECK(buffer->ReadWriteChild(&pssh[i]));
        +
        2324  }
        +
        2325  return true;
        +
        2326 }
        +
        2327 
        +
        2328 uint32_t MovieFragment::ComputeSizeInternal() {
        +
        2329  uint32_t box_size = HeaderSize() + header.ComputeSize();
        +
        2330  for (uint32_t i = 0; i < tracks.size(); ++i)
        +
        2331  box_size += tracks[i].ComputeSize();
        +
        2332  for (uint32_t i = 0; i < pssh.size(); ++i)
        +
        2333  box_size += pssh[i].ComputeSize();
        +
        2334  return box_size;
        +
        2335 }
        +
        2336 
        +
        2337 SegmentIndex::SegmentIndex()
        +
        2338  : reference_id(0),
        +
        2339  timescale(0),
        +
        2340  earliest_presentation_time(0),
        +
        2341  first_offset(0) {}
        +
        2342 SegmentIndex::~SegmentIndex() {}
        +
        2343 FourCC SegmentIndex::BoxType() const { return FOURCC_SIDX; }
        +
        2344 
        +
        2345 bool SegmentIndex::ReadWriteInternal(BoxBuffer* buffer) {
        +
        2346  RCHECK(ReadWriteHeaderInternal(buffer) &&
        +
        2347  buffer->ReadWriteUInt32(&reference_id) &&
        +
        2348  buffer->ReadWriteUInt32(&timescale));
        +
        2349 
        +
        2350  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
        +
        2351  RCHECK(
        +
        2352  buffer->ReadWriteUInt64NBytes(&earliest_presentation_time, num_bytes) &&
        +
        2353  buffer->ReadWriteUInt64NBytes(&first_offset, num_bytes));
        +
        2354 
        +
        2355  uint16_t reference_count = references.size();
        +
        2356  RCHECK(buffer->IgnoreBytes(2) && // reserved.
        +
        2357  buffer->ReadWriteUInt16(&reference_count));
        +
        2358  references.resize(reference_count);
        2359 
        -
        2360 bool SegmentIndex::ReadWriteInternal(BoxBuffer* buffer) {
        -
        2361  RCHECK(ReadWriteHeaderInternal(buffer) &&
        -
        2362  buffer->ReadWriteUInt32(&reference_id) &&
        -
        2363  buffer->ReadWriteUInt32(&timescale));
        -
        2364 
        -
        2365  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
        -
        2366  RCHECK(
        -
        2367  buffer->ReadWriteUInt64NBytes(&earliest_presentation_time, num_bytes) &&
        -
        2368  buffer->ReadWriteUInt64NBytes(&first_offset, num_bytes));
        -
        2369 
        -
        2370  uint16_t reference_count = references.size();
        -
        2371  RCHECK(buffer->IgnoreBytes(2) && // reserved.
        -
        2372  buffer->ReadWriteUInt16(&reference_count));
        -
        2373  references.resize(reference_count);
        -
        2374 
        -
        2375  uint32_t reference_type_size;
        -
        2376  uint32_t sap;
        -
        2377  for (uint32_t i = 0; i < reference_count; ++i) {
        -
        2378  if (!buffer->Reading()) {
        -
        2379  reference_type_size = references[i].referenced_size;
        -
        2380  if (references[i].reference_type)
        -
        2381  reference_type_size |= (1 << 31);
        -
        2382  sap = (references[i].sap_type << 28) | references[i].sap_delta_time;
        -
        2383  if (references[i].starts_with_sap)
        -
        2384  sap |= (1 << 31);
        -
        2385  }
        -
        2386  RCHECK(buffer->ReadWriteUInt32(&reference_type_size) &&
        -
        2387  buffer->ReadWriteUInt32(&references[i].subsegment_duration) &&
        -
        2388  buffer->ReadWriteUInt32(&sap));
        -
        2389  if (buffer->Reading()) {
        -
        2390  references[i].reference_type = (reference_type_size >> 31) ? true : false;
        -
        2391  references[i].referenced_size = reference_type_size & ~(1 << 31);
        -
        2392  references[i].starts_with_sap = (sap >> 31) ? true : false;
        -
        2393  references[i].sap_type =
        -
        2394  static_cast<SegmentReference::SAPType>((sap >> 28) & 0x07);
        -
        2395  references[i].sap_delta_time = sap & ~(0xF << 28);
        -
        2396  }
        -
        2397  }
        -
        2398  return true;
        -
        2399 }
        -
        2400 
        -
        2401 uint32_t SegmentIndex::ComputeSizeInternal() {
        -
        2402  version = IsFitIn32Bits(earliest_presentation_time, first_offset) ? 0 : 1;
        -
        2403  return HeaderSize() + sizeof(reference_id) + sizeof(timescale) +
        -
        2404  sizeof(uint32_t) * (1 + version) * 2 + 2 * sizeof(uint16_t) +
        -
        2405  3 * sizeof(uint32_t) * references.size();
        -
        2406 }
        -
        2407 
        -
        2408 MediaData::MediaData() : data_size(0) {}
        -
        2409 MediaData::~MediaData() {}
        -
        2410 FourCC MediaData::BoxType() const { return FOURCC_MDAT; }
        -
        2411 
        -
        2412 bool MediaData::ReadWriteInternal(BoxBuffer* buffer) {
        -
        2413  NOTIMPLEMENTED() << "Actual data is parsed and written separately.";
        -
        2414  return false;
        -
        2415 }
        -
        2416 
        -
        2417 uint32_t MediaData::ComputeSizeInternal() {
        -
        2418  return HeaderSize() + data_size;
        -
        2419 }
        -
        2420 
        -
        2421 CueSourceIDBox::CueSourceIDBox() : source_id(kCueSourceIdNotSet) {}
        -
        2422 CueSourceIDBox::~CueSourceIDBox() {}
        -
        2423 
        -
        2424 FourCC CueSourceIDBox::BoxType() const { return FOURCC_vsid; }
        -
        2425 
        -
        2426 bool CueSourceIDBox::ReadWriteInternal(BoxBuffer* buffer) {
        -
        2427  RCHECK(ReadWriteHeaderInternal(buffer) && buffer->ReadWriteInt32(&source_id));
        -
        2428  return true;
        -
        2429 }
        -
        2430 
        -
        2431 uint32_t CueSourceIDBox::ComputeSizeInternal() {
        -
        2432  if (source_id == kCueSourceIdNotSet)
        -
        2433  return 0;
        -
        2434  return HeaderSize() + sizeof(source_id);
        -
        2435 }
        -
        2436 
        -
        2437 CueTimeBox::CueTimeBox() {}
        -
        2438 CueTimeBox::~CueTimeBox() {}
        -
        2439 
        -
        2440 FourCC CueTimeBox::BoxType() const {
        -
        2441  return FOURCC_ctim;
        -
        2442 }
        -
        2443 
        -
        2444 bool CueTimeBox::ReadWriteInternal(BoxBuffer* buffer) {
        -
        2445  RCHECK(ReadWriteHeaderInternal(buffer));
        -
        2446  return buffer->ReadWriteString(
        -
        2447  &cue_current_time,
        -
        2448  buffer->Reading() ? buffer->BytesLeft() : cue_current_time.size());
        -
        2449 }
        -
        2450 
        -
        2451 uint32_t CueTimeBox::ComputeSizeInternal() {
        -
        2452  if (cue_current_time.empty())
        -
        2453  return 0;
        -
        2454  return HeaderSize() + cue_current_time.size();
        -
        2455 }
        -
        2456 
        -
        2457 CueIDBox::CueIDBox() {}
        -
        2458 CueIDBox::~CueIDBox() {}
        -
        2459 
        -
        2460 FourCC CueIDBox::BoxType() const {
        -
        2461  return FOURCC_iden;
        -
        2462 }
        +
        2360  uint32_t reference_type_size;
        +
        2361  uint32_t sap;
        +
        2362  for (uint32_t i = 0; i < reference_count; ++i) {
        +
        2363  if (!buffer->Reading()) {
        +
        2364  reference_type_size = references[i].referenced_size;
        +
        2365  if (references[i].reference_type)
        +
        2366  reference_type_size |= (1 << 31);
        +
        2367  sap = (references[i].sap_type << 28) | references[i].sap_delta_time;
        +
        2368  if (references[i].starts_with_sap)
        +
        2369  sap |= (1 << 31);
        +
        2370  }
        +
        2371  RCHECK(buffer->ReadWriteUInt32(&reference_type_size) &&
        +
        2372  buffer->ReadWriteUInt32(&references[i].subsegment_duration) &&
        +
        2373  buffer->ReadWriteUInt32(&sap));
        +
        2374  if (buffer->Reading()) {
        +
        2375  references[i].reference_type = (reference_type_size >> 31) ? true : false;
        +
        2376  references[i].referenced_size = reference_type_size & ~(1 << 31);
        +
        2377  references[i].starts_with_sap = (sap >> 31) ? true : false;
        +
        2378  references[i].sap_type =
        +
        2379  static_cast<SegmentReference::SAPType>((sap >> 28) & 0x07);
        +
        2380  references[i].sap_delta_time = sap & ~(0xF << 28);
        +
        2381  }
        +
        2382  }
        +
        2383  return true;
        +
        2384 }
        +
        2385 
        +
        2386 uint32_t SegmentIndex::ComputeSizeInternal() {
        +
        2387  version = IsFitIn32Bits(earliest_presentation_time, first_offset) ? 0 : 1;
        +
        2388  return HeaderSize() + sizeof(reference_id) + sizeof(timescale) +
        +
        2389  sizeof(uint32_t) * (1 + version) * 2 + 2 * sizeof(uint16_t) +
        +
        2390  3 * sizeof(uint32_t) * references.size();
        +
        2391 }
        +
        2392 
        +
        2393 MediaData::MediaData() : data_size(0) {}
        +
        2394 MediaData::~MediaData() {}
        +
        2395 FourCC MediaData::BoxType() const { return FOURCC_MDAT; }
        +
        2396 
        +
        2397 bool MediaData::ReadWriteInternal(BoxBuffer* buffer) {
        +
        2398  NOTIMPLEMENTED() << "Actual data is parsed and written separately.";
        +
        2399  return false;
        +
        2400 }
        +
        2401 
        +
        2402 uint32_t MediaData::ComputeSizeInternal() {
        +
        2403  return HeaderSize() + data_size;
        +
        2404 }
        +
        2405 
        +
        2406 CueSourceIDBox::CueSourceIDBox() : source_id(kCueSourceIdNotSet) {}
        +
        2407 CueSourceIDBox::~CueSourceIDBox() {}
        +
        2408 
        +
        2409 FourCC CueSourceIDBox::BoxType() const { return FOURCC_vsid; }
        +
        2410 
        +
        2411 bool CueSourceIDBox::ReadWriteInternal(BoxBuffer* buffer) {
        +
        2412  RCHECK(ReadWriteHeaderInternal(buffer) && buffer->ReadWriteInt32(&source_id));
        +
        2413  return true;
        +
        2414 }
        +
        2415 
        +
        2416 uint32_t CueSourceIDBox::ComputeSizeInternal() {
        +
        2417  if (source_id == kCueSourceIdNotSet)
        +
        2418  return 0;
        +
        2419  return HeaderSize() + sizeof(source_id);
        +
        2420 }
        +
        2421 
        +
        2422 CueTimeBox::CueTimeBox() {}
        +
        2423 CueTimeBox::~CueTimeBox() {}
        +
        2424 
        +
        2425 FourCC CueTimeBox::BoxType() const {
        +
        2426  return FOURCC_ctim;
        +
        2427 }
        +
        2428 
        +
        2429 bool CueTimeBox::ReadWriteInternal(BoxBuffer* buffer) {
        +
        2430  RCHECK(ReadWriteHeaderInternal(buffer));
        +
        2431  return buffer->ReadWriteString(
        +
        2432  &cue_current_time,
        +
        2433  buffer->Reading() ? buffer->BytesLeft() : cue_current_time.size());
        +
        2434 }
        +
        2435 
        +
        2436 uint32_t CueTimeBox::ComputeSizeInternal() {
        +
        2437  if (cue_current_time.empty())
        +
        2438  return 0;
        +
        2439  return HeaderSize() + cue_current_time.size();
        +
        2440 }
        +
        2441 
        +
        2442 CueIDBox::CueIDBox() {}
        +
        2443 CueIDBox::~CueIDBox() {}
        +
        2444 
        +
        2445 FourCC CueIDBox::BoxType() const {
        +
        2446  return FOURCC_iden;
        +
        2447 }
        +
        2448 
        +
        2449 bool CueIDBox::ReadWriteInternal(BoxBuffer* buffer) {
        +
        2450  RCHECK(ReadWriteHeaderInternal(buffer));
        +
        2451  return buffer->ReadWriteString(
        +
        2452  &cue_id, buffer->Reading() ? buffer->BytesLeft() : cue_id.size());
        +
        2453 }
        +
        2454 
        +
        2455 uint32_t CueIDBox::ComputeSizeInternal() {
        +
        2456  if (cue_id.empty())
        +
        2457  return 0;
        +
        2458  return HeaderSize() + cue_id.size();
        +
        2459 }
        +
        2460 
        +
        2461 CueSettingsBox::CueSettingsBox() {}
        +
        2462 CueSettingsBox::~CueSettingsBox() {}
        2463 
        -
        2464 bool CueIDBox::ReadWriteInternal(BoxBuffer* buffer) {
        -
        2465  RCHECK(ReadWriteHeaderInternal(buffer));
        -
        2466  return buffer->ReadWriteString(
        -
        2467  &cue_id, buffer->Reading() ? buffer->BytesLeft() : cue_id.size());
        -
        2468 }
        -
        2469 
        -
        2470 uint32_t CueIDBox::ComputeSizeInternal() {
        -
        2471  if (cue_id.empty())
        -
        2472  return 0;
        -
        2473  return HeaderSize() + cue_id.size();
        -
        2474 }
        -
        2475 
        -
        2476 CueSettingsBox::CueSettingsBox() {}
        -
        2477 CueSettingsBox::~CueSettingsBox() {}
        -
        2478 
        -
        2479 FourCC CueSettingsBox::BoxType() const {
        -
        2480  return FOURCC_sttg;
        -
        2481 }
        +
        2464 FourCC CueSettingsBox::BoxType() const {
        +
        2465  return FOURCC_sttg;
        +
        2466 }
        +
        2467 
        +
        2468 bool CueSettingsBox::ReadWriteInternal(BoxBuffer* buffer) {
        +
        2469  RCHECK(ReadWriteHeaderInternal(buffer));
        +
        2470  return buffer->ReadWriteString(
        +
        2471  &settings, buffer->Reading() ? buffer->BytesLeft() : settings.size());
        +
        2472 }
        +
        2473 
        +
        2474 uint32_t CueSettingsBox::ComputeSizeInternal() {
        +
        2475  if (settings.empty())
        +
        2476  return 0;
        +
        2477  return HeaderSize() + settings.size();
        +
        2478 }
        +
        2479 
        +
        2480 CuePayloadBox::CuePayloadBox() {}
        +
        2481 CuePayloadBox::~CuePayloadBox() {}
        2482 
        -
        2483 bool CueSettingsBox::ReadWriteInternal(BoxBuffer* buffer) {
        -
        2484  RCHECK(ReadWriteHeaderInternal(buffer));
        -
        2485  return buffer->ReadWriteString(
        -
        2486  &settings, buffer->Reading() ? buffer->BytesLeft() : settings.size());
        -
        2487 }
        -
        2488 
        -
        2489 uint32_t CueSettingsBox::ComputeSizeInternal() {
        -
        2490  if (settings.empty())
        -
        2491  return 0;
        -
        2492  return HeaderSize() + settings.size();
        -
        2493 }
        -
        2494 
        -
        2495 CuePayloadBox::CuePayloadBox() {}
        -
        2496 CuePayloadBox::~CuePayloadBox() {}
        -
        2497 
        -
        2498 FourCC CuePayloadBox::BoxType() const {
        -
        2499  return FOURCC_payl;
        -
        2500 }
        -
        2501 
        -
        2502 bool CuePayloadBox::ReadWriteInternal(BoxBuffer* buffer) {
        -
        2503  RCHECK(ReadWriteHeaderInternal(buffer));
        -
        2504  return buffer->ReadWriteString(
        -
        2505  &cue_text, buffer->Reading() ? buffer->BytesLeft() : cue_text.size());
        +
        2483 FourCC CuePayloadBox::BoxType() const {
        +
        2484  return FOURCC_payl;
        +
        2485 }
        +
        2486 
        +
        2487 bool CuePayloadBox::ReadWriteInternal(BoxBuffer* buffer) {
        +
        2488  RCHECK(ReadWriteHeaderInternal(buffer));
        +
        2489  return buffer->ReadWriteString(
        +
        2490  &cue_text, buffer->Reading() ? buffer->BytesLeft() : cue_text.size());
        +
        2491 }
        +
        2492 
        +
        2493 uint32_t CuePayloadBox::ComputeSizeInternal() {
        +
        2494  return HeaderSize() + cue_text.size();
        +
        2495 }
        +
        2496 
        +
        2497 VTTEmptyCueBox::VTTEmptyCueBox() {}
        +
        2498 VTTEmptyCueBox::~VTTEmptyCueBox() {}
        +
        2499 
        +
        2500 FourCC VTTEmptyCueBox::BoxType() const {
        +
        2501  return FOURCC_vtte;
        +
        2502 }
        +
        2503 
        +
        2504 bool VTTEmptyCueBox::ReadWriteInternal(BoxBuffer* buffer) {
        +
        2505  return ReadWriteHeaderInternal(buffer);
        2506 }
        2507 
        -
        2508 uint32_t CuePayloadBox::ComputeSizeInternal() {
        -
        2509  return HeaderSize() + cue_text.size();
        +
        2508 uint32_t VTTEmptyCueBox::ComputeSizeInternal() {
        +
        2509  return HeaderSize();
        2510 }
        2511 
        -
        2512 VTTEmptyCueBox::VTTEmptyCueBox() {}
        -
        2513 VTTEmptyCueBox::~VTTEmptyCueBox() {}
        +
        2512 VTTAdditionalTextBox::VTTAdditionalTextBox() {}
        +
        2513 VTTAdditionalTextBox::~VTTAdditionalTextBox() {}
        2514 
        -
        2515 FourCC VTTEmptyCueBox::BoxType() const {
        -
        2516  return FOURCC_vtte;
        + +
        2516  return FOURCC_vtta;
        2517 }
        2518 
        -
        2519 bool VTTEmptyCueBox::ReadWriteInternal(BoxBuffer* buffer) {
        -
        2520  return ReadWriteHeaderInternal(buffer);
        -
        2521 }
        -
        2522 
        -
        2523 uint32_t VTTEmptyCueBox::ComputeSizeInternal() {
        -
        2524  return HeaderSize();
        -
        2525 }
        -
        2526 
        -
        2527 VTTAdditionalTextBox::VTTAdditionalTextBox() {}
        -
        2528 VTTAdditionalTextBox::~VTTAdditionalTextBox() {}
        +
        2519 bool VTTAdditionalTextBox::ReadWriteInternal(BoxBuffer* buffer) {
        +
        2520  RCHECK(ReadWriteHeaderInternal(buffer));
        +
        2521  return buffer->ReadWriteString(
        +
        2522  &cue_additional_text,
        +
        2523  buffer->Reading() ? buffer->BytesLeft() : cue_additional_text.size());
        +
        2524 }
        +
        2525 
        +
        2526 uint32_t VTTAdditionalTextBox::ComputeSizeInternal() {
        +
        2527  return HeaderSize() + cue_additional_text.size();
        +
        2528 }
        2529 
        - -
        2531  return FOURCC_vtta;
        -
        2532 }
        -
        2533 
        -
        2534 bool VTTAdditionalTextBox::ReadWriteInternal(BoxBuffer* buffer) {
        -
        2535  RCHECK(ReadWriteHeaderInternal(buffer));
        -
        2536  return buffer->ReadWriteString(
        -
        2537  &cue_additional_text,
        -
        2538  buffer->Reading() ? buffer->BytesLeft() : cue_additional_text.size());
        -
        2539 }
        -
        2540 
        -
        2541 uint32_t VTTAdditionalTextBox::ComputeSizeInternal() {
        -
        2542  return HeaderSize() + cue_additional_text.size();
        -
        2543 }
        -
        2544 
        -
        2545 VTTCueBox::VTTCueBox() {}
        -
        2546 VTTCueBox::~VTTCueBox() {}
        +
        2530 VTTCueBox::VTTCueBox() {}
        +
        2531 VTTCueBox::~VTTCueBox() {}
        +
        2532 
        +
        2533 FourCC VTTCueBox::BoxType() const {
        +
        2534  return FOURCC_vttc;
        +
        2535 }
        +
        2536 
        +
        2537 bool VTTCueBox::ReadWriteInternal(BoxBuffer* buffer) {
        +
        2538  RCHECK(ReadWriteHeaderInternal(buffer) &&
        +
        2539  buffer->PrepareChildren() &&
        +
        2540  buffer->ReadWriteChild(&cue_source_id) &&
        +
        2541  buffer->ReadWriteChild(&cue_id) &&
        +
        2542  buffer->ReadWriteChild(&cue_time) &&
        +
        2543  buffer->ReadWriteChild(&cue_settings) &&
        +
        2544  buffer->ReadWriteChild(&cue_payload));
        +
        2545  return true;
        +
        2546 }
        2547 
        -
        2548 FourCC VTTCueBox::BoxType() const {
        -
        2549  return FOURCC_vttc;
        -
        2550 }
        -
        2551 
        -
        2552 bool VTTCueBox::ReadWriteInternal(BoxBuffer* buffer) {
        -
        2553  RCHECK(ReadWriteHeaderInternal(buffer) &&
        -
        2554  buffer->PrepareChildren() &&
        -
        2555  buffer->ReadWriteChild(&cue_source_id) &&
        -
        2556  buffer->ReadWriteChild(&cue_id) &&
        -
        2557  buffer->ReadWriteChild(&cue_time) &&
        -
        2558  buffer->ReadWriteChild(&cue_settings) &&
        -
        2559  buffer->ReadWriteChild(&cue_payload));
        -
        2560  return true;
        -
        2561 }
        -
        2562 
        -
        2563 uint32_t VTTCueBox::ComputeSizeInternal() {
        -
        2564  return HeaderSize() + cue_source_id.ComputeSize() + cue_id.ComputeSize() +
        -
        2565  cue_time.ComputeSize() + cue_settings.ComputeSize() +
        -
        2566  cue_payload.ComputeSize();
        -
        2567 }
        -
        2568 
        -
        2569 } // namespace mp4
        -
        2570 } // namespace media
        -
        2571 } // namespace edash_packager
        - -
        FourCC BoxType() const override
        - - +
        2548 uint32_t VTTCueBox::ComputeSizeInternal() {
        +
        2549  return HeaderSize() + cue_source_id.ComputeSize() + cue_id.ComputeSize() +
        +
        2550  cue_time.ComputeSize() + cue_settings.ComputeSize() +
        +
        2551  cue_payload.ComputeSize();
        +
        2552 }
        +
        2553 
        +
        2554 } // namespace mp4
        +
        2555 } // namespace media
        +
        2556 } // namespace edash_packager
        + +
        FourCC BoxType() const override
        + +
        bool ReadChildren(std::vector< T > *children) WARN_UNUSED_RESULT
        Definition: box_reader.h:133
        - +
        bool ReadChild(Box *child) WARN_UNUSED_RESULT
        Definition: box_reader.cc:123
        - - - + + +
        virtual bool ReadWriteHeaderInternal(BoxBuffer *buffer)
        Definition: box.cc:60
        - - + +
        bool ReadWriteHeaderInternal(BoxBuffer *buffer) final
        Definition: box.cc:79
        - + -
        bool ParseFromSampleEncryptionData(size_t iv_size, std::vector< SampleEncryptionEntry > *sample_encryption_entries) const
        - - - - - - - - +
        bool ParseFromSampleEncryptionData(size_t iv_size, std::vector< SampleEncryptionEntry > *sample_encryption_entries) const
        + + + + + + + + - +
        bool ChildExist(Box *child) WARN_UNUSED_RESULT
        Definition: box_reader.cc:136
        - - + + - - - + + + - - - + + +
        bool ReadWriteUInt64NBytes(uint64_t *v, size_t num_bytes)
        Definition: box_buffer.h:117
        - - - - - - - + + + + + + + - - - - - -
        PrivFrame private_frame
        We only support PrivateFrame in ID3. Other frames are ignored.
        + + + + + +
        PrivFrame private_frame
        We only support PrivateFrame in ID3. Other frames are ignored.
        bool ReadWriteString(std::string *str, size_t size)
        Definition: box_buffer.h:139
        - - + +
        bool IgnoreBytes(size_t num_bytes)
        Definition: box_buffer.h:189
        - - - + + + - + - - - - + + + + - - + + - - + +
        virtual uint32_t HeaderSize() const
        Definition: box.cc:54
        - +
        void Write(BufferWriter *writer)
        Definition: box.cc:25
        - -
        bool ParseFromBuffer(uint8_t iv_size, bool has_subsamples, BufferReader *reader)
        - - - - - - + +
        bool ParseFromBuffer(uint8_t iv_size, bool has_subsamples, BufferReader *reader)
        + + + + + +
        bool TryReadChildren(std::vector< T > *children) WARN_UNUSED_RESULT
        Definition: box_reader.h:139
        Class for reading MP4 boxes.
        Definition: box_reader.h:24
        - - - + + + - + -
        bool ReadWrite(uint8_t iv_size, bool has_subsamples, BoxBuffer *buffer)
        +
        bool ReadWrite(uint8_t iv_size, bool has_subsamples, BoxBuffer *buffer)
        - - - + + +
        uint32_t HeaderSize() const final
        Definition: box.cc:74
        - - - + + + diff --git a/docs/dd/def/classedash__packager_1_1media_1_1TextTrackConfig.html b/docs/dd/def/classedash__packager_1_1media_1_1TextTrackConfig.html index 9544d51512..20a3f2affc 100644 --- a/docs/dd/def/classedash__packager_1_1media_1_1TextTrackConfig.html +++ b/docs/dd/def/classedash__packager_1_1media_1_1TextTrackConfig.html @@ -125,7 +125,7 @@ const std::string & id diff --git a/docs/dd/df2/webm_2multi__segment__segmenter_8h_source.html b/docs/dd/df2/webm_2multi__segment__segmenter_8h_source.html index 4f0903d020..3e6c0f1ccf 100644 --- a/docs/dd/df2/webm_2multi__segment__segmenter_8h_source.html +++ b/docs/dd/df2/webm_2multi__segment__segmenter_8h_source.html @@ -149,7 +149,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/dfa/structedash__packager_1_1media_1_1MuxerOptions-members.html b/docs/dd/dfa/structedash__packager_1_1media_1_1MuxerOptions-members.html index 135e257bbd..17029cc892 100644 --- a/docs/dd/dfa/structedash__packager_1_1media_1_1MuxerOptions-members.html +++ b/docs/dd/dfa/structedash__packager_1_1media_1_1MuxerOptions-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d07/structedash__packager_1_1media_1_1mp4_1_1CueIDBox.html b/docs/de/d07/structedash__packager_1_1media_1_1mp4_1_1CueIDBox.html index 507810bb90..b6465c1e9a 100644 --- a/docs/de/d07/structedash__packager_1_1media_1_1mp4_1_1CueIDBox.html +++ b/docs/de/d07/structedash__packager_1_1media_1_1mp4_1_1CueIDBox.html @@ -136,7 +136,7 @@ Additional Inherited Members

        Detailed Description

        -

        Definition at line 748 of file box_definitions.h.

        +

        Definition at line 746 of file box_definitions.h.

        Member Function Documentation

        @@ -162,7 +162,7 @@ Additional Inherited Members

        Implements edash_packager::media::mp4::Box.

        -

        Definition at line 2460 of file box_definitions.cc.

        +

        Definition at line 2445 of file box_definitions.cc.

        @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/de/d0f/local__file_8h_source.html b/docs/de/d0f/local__file_8h_source.html index 7e47a73b83..be448c2dba 100644 --- a/docs/de/d0f/local__file_8h_source.html +++ b/docs/de/d0f/local__file_8h_source.html @@ -152,7 +152,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d12/container__names_8h_source.html b/docs/de/d12/container__names_8h_source.html index d47b69a8cb..a0718f0dbb 100644 --- a/docs/de/d12/container__names_8h_source.html +++ b/docs/de/d12/container__names_8h_source.html @@ -159,7 +159,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d15/media__stream_8cc_source.html b/docs/de/d15/media__stream_8cc_source.html index 03cc1336e2..12f5366e60 100644 --- a/docs/de/d15/media__stream_8cc_source.html +++ b/docs/de/d15/media__stream_8cc_source.html @@ -210,7 +210,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d17/cluster__builder_8cc_source.html b/docs/de/d17/cluster__builder_8cc_source.html index 4250d98b14..1f78859943 100644 --- a/docs/de/d17/cluster__builder_8cc_source.html +++ b/docs/de/d17/cluster__builder_8cc_source.html @@ -330,7 +330,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d18/classedash__packager_1_1media_1_1WebVttMediaParser-members.html b/docs/de/d18/classedash__packager_1_1media_1_1WebVttMediaParser-members.html index 6b8f2455b8..f7d8a2464f 100644 --- a/docs/de/d18/classedash__packager_1_1media_1_1WebVttMediaParser-members.html +++ b/docs/de/d18/classedash__packager_1_1media_1_1WebVttMediaParser-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d19/classedash__packager_1_1media_1_1File.html b/docs/de/d19/classedash__packager_1_1media_1_1File.html index bb659c666c..120344f9eb 100644 --- a/docs/de/d19/classedash__packager_1_1media_1_1File.html +++ b/docs/de/d19/classedash__packager_1_1media_1_1File.html @@ -811,7 +811,7 @@ class ThreadedIoFile diff --git a/docs/de/d1e/mp4_2single__segment__segmenter_8cc_source.html b/docs/de/d1e/mp4_2single__segment__segmenter_8cc_source.html index 917a56cb1e..312b611017 100644 --- a/docs/de/d1e/mp4_2single__segment__segmenter_8cc_source.html +++ b/docs/de/d1e/mp4_2single__segment__segmenter_8cc_source.html @@ -333,7 +333,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d1f/structedash__packager_1_1media_1_1StreamDescriptor.html b/docs/de/d1f/structedash__packager_1_1media_1_1StreamDescriptor.html index 041dc3ab83..64632f5e01 100644 --- a/docs/de/d1f/structedash__packager_1_1media_1_1StreamDescriptor.html +++ b/docs/de/d1f/structedash__packager_1_1media_1_1StreamDescriptor.html @@ -131,7 +131,7 @@ MediaContainerName output_ diff --git a/docs/de/d34/offset__byte__queue_8h_source.html b/docs/de/d34/offset__byte__queue_8h_source.html index 2a08e75977..69f8c33d95 100644 --- a/docs/de/d34/offset__byte__queue_8h_source.html +++ b/docs/de/d34/offset__byte__queue_8h_source.html @@ -143,7 +143,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d3c/macros_8h_source.html b/docs/de/d3c/macros_8h_source.html index 3b459db53a..688eb65cad 100644 --- a/docs/de/d3c/macros_8h_source.html +++ b/docs/de/d3c/macros_8h_source.html @@ -144,7 +144,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d3e/buffer__reader_8h_source.html b/docs/de/d3e/buffer__reader_8h_source.html index 5d0c0902de..bdb397a7ba 100644 --- a/docs/de/d3e/buffer__reader_8h_source.html +++ b/docs/de/d3e/buffer__reader_8h_source.html @@ -163,7 +163,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d44/structedash__packager_1_1media_1_1mp4_1_1TrackEncryption.html b/docs/de/d44/structedash__packager_1_1media_1_1mp4_1_1TrackEncryption.html index 7efdef033a..54c8969a64 100644 --- a/docs/de/d44/structedash__packager_1_1media_1_1mp4_1_1TrackEncryption.html +++ b/docs/de/d44/structedash__packager_1_1media_1_1mp4_1_1TrackEncryption.html @@ -151,7 +151,7 @@ Additional Inherited Members

        Detailed Description

        -

        Definition at line 146 of file box_definitions.h.

        +

        Definition at line 144 of file box_definitions.h.

        Member Function Documentation

        @@ -177,7 +177,7 @@ Additional Inherited Members

        Implements edash_packager::media::mp4::Box.

        -

        Definition at line 412 of file box_definitions.cc.

        +

        Definition at line 397 of file box_definitions.cc.

        @@ -188,7 +188,7 @@ Additional Inherited Members diff --git a/docs/de/d48/classedash__packager_1_1media_1_1VP8Parser-members.html b/docs/de/d48/classedash__packager_1_1media_1_1VP8Parser-members.html index e4fc865c92..a61a20f48e 100644 --- a/docs/de/d48/classedash__packager_1_1media_1_1VP8Parser-members.html +++ b/docs/de/d48/classedash__packager_1_1media_1_1VP8Parser-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d4a/muxer__listener__internal_8h_source.html b/docs/de/d4a/muxer__listener__internal_8h_source.html index 726996cc2e..177ad23ee2 100644 --- a/docs/de/d4a/muxer__listener__internal_8h_source.html +++ b/docs/de/d4a/muxer__listener__internal_8h_source.html @@ -144,7 +144,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d4c/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPat-members.html b/docs/de/d4c/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPat-members.html index 37c5c1aff4..29fb168e48 100644 --- a/docs/de/d4c/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPat-members.html +++ b/docs/de/d4c/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPat-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d57/structedash__packager_1_1media_1_1MuxerOptions.html b/docs/de/d57/structedash__packager_1_1media_1_1MuxerOptions.html index 9842e47e68..4a68af3008 100644 --- a/docs/de/d57/structedash__packager_1_1media_1_1MuxerOptions.html +++ b/docs/de/d57/structedash__packager_1_1media_1_1MuxerOptions.html @@ -275,7 +275,7 @@ std::string  diff --git a/docs/de/d59/classedash__packager_1_1media_1_1mp2t_1_1EsParserAdts.html b/docs/de/d59/classedash__packager_1_1media_1_1mp2t_1_1EsParserAdts.html index 57d603a216..97bec2ed34 100644 --- a/docs/de/d59/classedash__packager_1_1media_1_1mp2t_1_1EsParserAdts.html +++ b/docs/de/d59/classedash__packager_1_1media_1_1mp2t_1_1EsParserAdts.html @@ -148,7 +148,7 @@ const scoped_refptr
        diff --git a/docs/de/d5a/structedash__packager_1_1media_1_1mp4_1_1SchemeType-members.html b/docs/de/d5a/structedash__packager_1_1media_1_1mp4_1_1SchemeType-members.html index 54ba8ae733..2f94e33bd3 100644 --- a/docs/de/d5a/structedash__packager_1_1media_1_1mp4_1_1SchemeType-members.html +++ b/docs/de/d5a/structedash__packager_1_1media_1_1mp4_1_1SchemeType-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d5b/adts__header_8cc_source.html b/docs/de/d5b/adts__header_8cc_source.html index d4c84002d4..286f609e88 100644 --- a/docs/de/d5b/adts__header_8cc_source.html +++ b/docs/de/d5b/adts__header_8cc_source.html @@ -207,7 +207,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d5c/mpd__flags_8h_source.html b/docs/de/d5c/mpd__flags_8h_source.html index 4258be4dab..6d39b30893 100644 --- a/docs/de/d5c/mpd__flags_8h_source.html +++ b/docs/de/d5c/mpd__flags_8h_source.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d68/structedash__packager_1_1media_1_1mp4_1_1Track-members.html b/docs/de/d68/structedash__packager_1_1media_1_1mp4_1_1Track-members.html index c488c200d0..5e2b01c320 100644 --- a/docs/de/d68/structedash__packager_1_1media_1_1mp4_1_1Track-members.html +++ b/docs/de/d68/structedash__packager_1_1media_1_1mp4_1_1Track-members.html @@ -112,7 +112,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d6a/classedash__packager_1_1media_1_1webm_1_1WebMMuxer.html b/docs/de/d6a/classedash__packager_1_1media_1_1webm_1_1WebMMuxer.html index 0a66dfe28d..380f0821f9 100644 --- a/docs/de/d6a/classedash__packager_1_1media_1_1webm_1_1WebMMuxer.html +++ b/docs/de/d6a/classedash__packager_1_1media_1_1webm_1_1WebMMuxer.html @@ -179,7 +179,7 @@ base::Clock * clock () diff --git a/docs/de/d6e/language__utils_8h_source.html b/docs/de/d6e/language__utils_8h_source.html index 316fec41bd..c6edac13f0 100644 --- a/docs/de/d6e/language__utils_8h_source.html +++ b/docs/de/d6e/language__utils_8h_source.html @@ -114,7 +114,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d70/http__key__fetcher_8cc_source.html b/docs/de/d70/http__key__fetcher_8cc_source.html index d104420c6e..a8fabe4a78 100644 --- a/docs/de/d70/http__key__fetcher_8cc_source.html +++ b/docs/de/d70/http__key__fetcher_8cc_source.html @@ -238,7 +238,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d77/classedash__packager_1_1media_1_1VodMediaInfoDumpMuxerListener-members.html b/docs/de/d77/classedash__packager_1_1media_1_1VodMediaInfoDumpMuxerListener-members.html index 3616efb02b..d04af763e3 100644 --- a/docs/de/d77/classedash__packager_1_1media_1_1VodMediaInfoDumpMuxerListener-members.html +++ b/docs/de/d77/classedash__packager_1_1media_1_1VodMediaInfoDumpMuxerListener-members.html @@ -112,7 +112,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d77/webm__content__encodings__client_8cc_source.html b/docs/de/d77/webm__content__encodings__client_8cc_source.html index 8cb6c7d4ab..5d94ad965f 100644 --- a/docs/de/d77/webm__content__encodings__client_8cc_source.html +++ b/docs/de/d77/webm__content__encodings__client_8cc_source.html @@ -361,7 +361,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d7b/mp4__media__parser_8h_source.html b/docs/de/d7b/mp4__media__parser_8h_source.html index 1c9694df02..97e4592bed 100644 --- a/docs/de/d7b/mp4__media__parser_8h_source.html +++ b/docs/de/d7b/mp4__media__parser_8h_source.html @@ -194,19 +194,19 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
        114 #endif // MEDIA_FORMATS_MP4_MP4_MEDIA_PARSER_H_
        -
        bool LoadMoov(const std::string &file_path)
        +
        bool LoadMoov(const std::string &file_path)
        base::Callback< bool(uint32_t track_id, const scoped_refptr< MediaSample > &media_sample)> NewSampleCB
        Definition: media_parser.h:44
        KeySource is responsible for encryption key acquisition.
        Definition: key_source.h:29
        base::Callback< void(const std::vector< scoped_refptr< StreamInfo > > &stream_info)> InitCB
        Definition: media_parser.h:35
        -
        bool Flush() override WARN_UNUSED_RESULT
        -
        void Init(const InitCB &init_cb, const NewSampleCB &new_sample_cb, KeySource *decryption_key_source) override
        -
        bool Parse(const uint8_t *buf, int size) override WARN_UNUSED_RESULT
        +
        bool Flush() override WARN_UNUSED_RESULT
        +
        void Init(const InitCB &init_cb, const NewSampleCB &new_sample_cb, KeySource *decryption_key_source) override
        +
        bool Parse(const uint8_t *buf, int size) override WARN_UNUSED_RESULT
        Class for reading MP4 boxes.
        Definition: box_reader.h:24
        diff --git a/docs/de/d83/box__definitions__comparison_8h_source.html b/docs/de/d83/box__definitions__comparison_8h_source.html index c2418cd19b..e883213f52 100644 --- a/docs/de/d83/box__definitions__comparison_8h_source.html +++ b/docs/de/d83/box__definitions__comparison_8h_source.html @@ -118,7 +118,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
        29 
        30 inline bool operator==(const ProtectionSystemSpecificHeader& lhs,
        31  const ProtectionSystemSpecificHeader& rhs) {
        -
        32  return lhs.system_id == rhs.system_id && lhs.data == rhs.data;
        +
        32  return lhs.raw_box == rhs.raw_box;
        33 }
        34 
        35 inline bool operator==(const SampleAuxiliaryInformationOffset& lhs,
        @@ -575,7 +575,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d87/structedash__packager_1_1media_1_1mp4_1_1ChunkInfo-members.html b/docs/de/d87/structedash__packager_1_1media_1_1mp4_1_1ChunkInfo-members.html index e8fefeb292..c5bacb3c51 100644 --- a/docs/de/d87/structedash__packager_1_1media_1_1mp4_1_1ChunkInfo-members.html +++ b/docs/de/d87/structedash__packager_1_1media_1_1mp4_1_1ChunkInfo-members.html @@ -99,7 +99,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d8b/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPes.html b/docs/de/d8b/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPes.html index 61ad4dbb6d..4e3d7d74ed 100644 --- a/docs/de/d8b/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPes.html +++ b/docs/de/d8b/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPes.html @@ -142,7 +142,7 @@ Additional Inherited Members diff --git a/docs/de/d8d/structedash__packager_1_1media_1_1H264SliceHeader.html b/docs/de/d8d/structedash__packager_1_1media_1_1H264SliceHeader.html index dcfc3c488c..d7fae4cfe1 100644 --- a/docs/de/d8d/structedash__packager_1_1media_1_1H264SliceHeader.html +++ b/docs/de/d8d/structedash__packager_1_1media_1_1H264SliceHeader.html @@ -276,7 +276,7 @@ int slice_beta_offset_div2 diff --git a/docs/de/d93/classedash__packager_1_1media_1_1ByteQueue-members.html b/docs/de/d93/classedash__packager_1_1media_1_1ByteQueue-members.html index 6321f3e79e..f4aa6a22e4 100644 --- a/docs/de/d93/classedash__packager_1_1media_1_1ByteQueue-members.html +++ b/docs/de/d93/classedash__packager_1_1media_1_1ByteQueue-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d98/classedash__packager_1_1media_1_1WebMAudioClient.html b/docs/de/d98/classedash__packager_1_1media_1_1WebMAudioClient.html index 131064a221..36a3797649 100644 --- a/docs/de/d98/classedash__packager_1_1media_1_1WebMAudioClient.html +++ b/docs/de/d98/classedash__packager_1_1media_1_1WebMAudioClient.html @@ -199,7 +199,7 @@ An empty scoped_refptr if there was unexpected values in the provided parameters diff --git a/docs/de/d9d/classedash__packager_1_1media_1_1TracksBuilder-members.html b/docs/de/d9d/classedash__packager_1_1media_1_1TracksBuilder-members.html index b2bfbcdf34..b3b03be160 100644 --- a/docs/de/d9d/classedash__packager_1_1media_1_1TracksBuilder-members.html +++ b/docs/de/d9d/classedash__packager_1_1media_1_1TracksBuilder-members.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d9e/classedash__packager_1_1media_1_1TextTrack.html b/docs/de/d9e/classedash__packager_1_1media_1_1TextTrack.html index fd2937d9a3..1d45be42d2 100644 --- a/docs/de/d9e/classedash__packager_1_1media_1_1TextTrack.html +++ b/docs/de/d9e/classedash__packager_1_1media_1_1TextTrack.html @@ -109,7 +109,7 @@ virtual void addWebVTTCue< diff --git a/docs/de/da0/classedash__packager_1_1media_1_1AesCbcCtsDecryptor-members.html b/docs/de/da0/classedash__packager_1_1media_1_1AesCbcCtsDecryptor-members.html index 9fc95e02c8..084a26d6ae 100644 --- a/docs/de/da0/classedash__packager_1_1media_1_1AesCbcCtsDecryptor-members.html +++ b/docs/de/da0/classedash__packager_1_1media_1_1AesCbcCtsDecryptor-members.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/da5/classedash__packager_1_1media_1_1WebMParserClient.html b/docs/de/da5/classedash__packager_1_1media_1_1WebMParserClient.html index 162256d4c9..90cc28dbb9 100644 --- a/docs/de/da5/classedash__packager_1_1media_1_1WebMParserClient.html +++ b/docs/de/da5/classedash__packager_1_1media_1_1WebMParserClient.html @@ -151,7 +151,7 @@ Protected Member Functions diff --git a/docs/de/da6/classedash__packager_1_1media_1_1mp4_1_1DecodingTimeIterator-members.html b/docs/de/da6/classedash__packager_1_1media_1_1mp4_1_1DecodingTimeIterator-members.html index e635a1c080..313f4e0236 100644 --- a/docs/de/da6/classedash__packager_1_1media_1_1mp4_1_1DecodingTimeIterator-members.html +++ b/docs/de/da6/classedash__packager_1_1media_1_1mp4_1_1DecodingTimeIterator-members.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/da7/classedash__packager_1_1media_1_1AudioTimestampHelper-members.html b/docs/de/da7/classedash__packager_1_1media_1_1AudioTimestampHelper-members.html index a7dc533cb5..0e0ccb4938 100644 --- a/docs/de/da7/classedash__packager_1_1media_1_1AudioTimestampHelper-members.html +++ b/docs/de/da7/classedash__packager_1_1media_1_1AudioTimestampHelper-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/dab/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentRun-members.html b/docs/de/dab/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentRun-members.html index 0d39638117..866b61cee6 100644 --- a/docs/de/dab/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentRun-members.html +++ b/docs/de/dab/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentRun-members.html @@ -125,7 +125,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/dad/validate__flag_8cc_source.html b/docs/de/dad/validate__flag_8cc_source.html index ffe26d7222..a0e182ab3e 100644 --- a/docs/de/dad/validate__flag_8cc_source.html +++ b/docs/de/dad/validate__flag_8cc_source.html @@ -132,7 +132,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/db1/classedash__packager_1_1media_1_1mp4_1_1ESDescriptor.html b/docs/de/db1/classedash__packager_1_1media_1_1mp4_1_1ESDescriptor.html index d78c08774b..64636c2d4a 100644 --- a/docs/de/db1/classedash__packager_1_1media_1_1mp4_1_1ESDescriptor.html +++ b/docs/de/db1/classedash__packager_1_1media_1_1mp4_1_1ESDescriptor.html @@ -181,7 +181,7 @@ bool IsDTS () const diff --git a/docs/de/db4/structedash__packager_1_1media_1_1mp4_1_1SchemeInfo-members.html b/docs/de/db4/structedash__packager_1_1media_1_1mp4_1_1SchemeInfo-members.html index 5db6406ef3..87dffd1aea 100644 --- a/docs/de/db4/structedash__packager_1_1media_1_1mp4_1_1SchemeInfo-members.html +++ b/docs/de/db4/structedash__packager_1_1media_1_1mp4_1_1SchemeInfo-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/dc1/demuxer_8h_source.html b/docs/de/dc1/demuxer_8h_source.html index bbf4885e86..19d5c0cdd2 100644 --- a/docs/de/dc1/demuxer_8h_source.html +++ b/docs/de/dc1/demuxer_8h_source.html @@ -187,7 +187,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/dc4/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset.html b/docs/de/dc4/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset.html index 5817f45f2c..efa14ee646 100644 --- a/docs/de/dc4/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset.html +++ b/docs/de/dc4/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset.html @@ -145,7 +145,7 @@ Additional Inherited Members

        Detailed Description

        -

        Definition at line 65 of file box_definitions.h.

        +

        Definition at line 63 of file box_definitions.h.

        Member Function Documentation

        @@ -171,7 +171,7 @@ Additional Inherited Members

        Implements edash_packager::media::mp4::Box.

        -

        Definition at line 194 of file box_definitions.cc.

        +

        Definition at line 179 of file box_definitions.cc.

        @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/de/dcc/mock__mpd__notifier_8cc_source.html b/docs/de/dcc/mock__mpd__notifier_8cc_source.html index 46f614b5b6..83152a61a6 100644 --- a/docs/de/dcc/mock__mpd__notifier_8cc_source.html +++ b/docs/de/dcc/mock__mpd__notifier_8cc_source.html @@ -98,7 +98,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/dcf/file__closer_8h_source.html b/docs/de/dcf/file__closer_8h_source.html index 0e558cbdde..3c5c5ffd84 100644 --- a/docs/de/dcf/file__closer_8h_source.html +++ b/docs/de/dcf/file__closer_8h_source.html @@ -125,7 +125,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/dd4/classedash__packager_1_1media_1_1mp4_1_1MP4Muxer-members.html b/docs/de/dd4/classedash__packager_1_1media_1_1mp4_1_1MP4Muxer-members.html index 4d02e8d396..dbb1c8a8af 100644 --- a/docs/de/dd4/classedash__packager_1_1media_1_1mp4_1_1MP4Muxer-members.html +++ b/docs/de/dd4/classedash__packager_1_1media_1_1mp4_1_1MP4Muxer-members.html @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/dd6/content__protection__element_8h_source.html b/docs/de/dd6/content__protection__element_8h_source.html index 037d801526..2772106fc0 100644 --- a/docs/de/dd6/content__protection__element_8h_source.html +++ b/docs/de/dd6/content__protection__element_8h_source.html @@ -142,7 +142,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/dd6/muxer__listener__test__helper_8cc_source.html b/docs/de/dd6/muxer__listener__test__helper_8cc_source.html index c1b941895d..d5963574b6 100644 --- a/docs/de/dd6/muxer__listener__test__helper_8cc_source.html +++ b/docs/de/dd6/muxer__listener__test__helper_8cc_source.html @@ -204,7 +204,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/de7/structedash__packager_1_1media_1_1mp4_1_1Media.html b/docs/de/de7/structedash__packager_1_1media_1_1mp4_1_1Media.html index 7a07a1aa7c..170ad7a07d 100644 --- a/docs/de/de7/structedash__packager_1_1media_1_1mp4_1_1Media.html +++ b/docs/de/de7/structedash__packager_1_1media_1_1mp4_1_1Media.html @@ -142,7 +142,7 @@ Additional Inherited Members

        Detailed Description

        -

        Definition at line 531 of file box_definitions.h.

        +

        Definition at line 529 of file box_definitions.h.

        Member Function Documentation

        @@ -168,7 +168,7 @@ Additional Inherited Members

        Implements edash_packager::media::mp4::Box.

        -

        Definition at line 1781 of file box_definitions.cc.

        +

        Definition at line 1766 of file box_definitions.cc.

        @@ -179,7 +179,7 @@ Additional Inherited Members diff --git a/docs/de/de9/classedash__packager_1_1media_1_1LibcryptoThreading.html b/docs/de/de9/classedash__packager_1_1media_1_1LibcryptoThreading.html index 0dc0eb9b06..dab6efd2e8 100644 --- a/docs/de/de9/classedash__packager_1_1media_1_1LibcryptoThreading.html +++ b/docs/de/de9/classedash__packager_1_1media_1_1LibcryptoThreading.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/dfa/muxer__listener_8h_source.html b/docs/de/dfa/muxer__listener_8h_source.html index 582cfd048b..7afca3325f 100644 --- a/docs/de/dfa/muxer__listener_8h_source.html +++ b/docs/de/dfa/muxer__listener_8h_source.html @@ -204,7 +204,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/dfb/structedash__packager_1_1media_1_1H264ModificationOfPicNum-members.html b/docs/de/dfb/structedash__packager_1_1media_1_1H264ModificationOfPicNum-members.html index dad27fcc0b..a04cc6cf22 100644 --- a/docs/de/dfb/structedash__packager_1_1media_1_1H264ModificationOfPicNum-members.html +++ b/docs/de/dfb/structedash__packager_1_1media_1_1H264ModificationOfPicNum-members.html @@ -99,7 +99,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/dfc/classedash__packager_1_1media_1_1mp2t_1_1EsParserH264-members.html b/docs/de/dfc/classedash__packager_1_1media_1_1mp2t_1_1EsParserH264-members.html index cf9868b060..e74d805b4f 100644 --- a/docs/de/dfc/classedash__packager_1_1media_1_1mp2t_1_1EsParserH264-members.html +++ b/docs/de/dfc/classedash__packager_1_1media_1_1mp2t_1_1EsParserH264-members.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/dfd/stream__info_8cc_source.html b/docs/de/dfd/stream__info_8cc_source.html index 93b9de06be..951a1660d4 100644 --- a/docs/de/dfd/stream__info_8cc_source.html +++ b/docs/de/dfd/stream__info_8cc_source.html @@ -143,7 +143,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d0c/classedash__packager_1_1media_1_1VPCodecConfiguration-members.html b/docs/df/d0c/classedash__packager_1_1media_1_1VPCodecConfiguration-members.html index a510bc8f2f..6613621f48 100644 --- a/docs/df/d0c/classedash__packager_1_1media_1_1VPCodecConfiguration-members.html +++ b/docs/df/d0c/classedash__packager_1_1media_1_1VPCodecConfiguration-members.html @@ -131,7 +131,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d1a/offset__byte__queue_8cc_source.html b/docs/df/d1a/offset__byte__queue_8cc_source.html index 5e46efdd37..844542b82f 100644 --- a/docs/df/d1a/offset__byte__queue_8cc_source.html +++ b/docs/df/d1a/offset__byte__queue_8cc_source.html @@ -164,7 +164,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d1c/composition__offset__iterator_8h_source.html b/docs/df/d1c/composition__offset__iterator_8h_source.html index 8a00217716..042d993f05 100644 --- a/docs/df/d1c/composition__offset__iterator_8h_source.html +++ b/docs/df/d1c/composition__offset__iterator_8h_source.html @@ -140,14 +140,14 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
        CompositionOffsetIterator(const CompositionTimeToSample &composition_time_to_sample)
        Create CompositionOffsetIterator from composition time to sample box.
        - + diff --git a/docs/df/d1f/classedash__packager_1_1media_1_1mp4_1_1TrackRunIterator-members.html b/docs/df/d1f/classedash__packager_1_1media_1_1mp4_1_1TrackRunIterator-members.html index 8baf74414b..0f2252b629 100644 --- a/docs/df/d1f/classedash__packager_1_1media_1_1mp4_1_1TrackRunIterator-members.html +++ b/docs/df/d1f/classedash__packager_1_1media_1_1mp4_1_1TrackRunIterator-members.html @@ -122,7 +122,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d21/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentRun.html b/docs/df/d21/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentRun.html index 03e9e40674..9c49d24610 100644 --- a/docs/df/d21/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentRun.html +++ b/docs/df/d21/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentRun.html @@ -175,7 +175,7 @@ Additional Inherited Members

        Detailed Description

        -

        Definition at line 623 of file box_definitions.h.

        +

        Definition at line 621 of file box_definitions.h.

        Member Function Documentation

        @@ -201,7 +201,7 @@ Additional Inherited Members

        Implements edash_packager::media::mp4::Box.

        -

        Definition at line 2032 of file box_definitions.cc.

        +

        Definition at line 2017 of file box_definitions.cc.

        @@ -212,7 +212,7 @@ Additional Inherited Members diff --git a/docs/df/d22/validate__flag_8h_source.html b/docs/df/d22/validate__flag_8h_source.html index d7a9781fbb..28d43b06f3 100644 --- a/docs/df/d22/validate__flag_8h_source.html +++ b/docs/df/d22/validate__flag_8h_source.html @@ -120,7 +120,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d2f/structedash__packager_1_1media_1_1mp4_1_1Language.html b/docs/df/d2f/structedash__packager_1_1media_1_1mp4_1_1Language.html index 68cafc6221..3b56bafd83 100644 --- a/docs/df/d2f/structedash__packager_1_1media_1_1mp4_1_1Language.html +++ b/docs/df/d2f/structedash__packager_1_1media_1_1mp4_1_1Language.html @@ -112,7 +112,7 @@ std::string code<

        Detailed Description

        -

        Definition at line 228 of file box_definitions.h.

        +

        Definition at line 226 of file box_definitions.h.


        The documentation for this struct was generated from the following files:
        • media/formats/mp4/box_definitions.h
        • media/formats/mp4/box_definitions.cc
        • @@ -120,7 +120,7 @@ std::string code< diff --git a/docs/df/d30/classedash__packager_1_1media_1_1ContentEncoding.html b/docs/df/d30/classedash__packager_1_1media_1_1ContentEncoding.html index 8e43c7faab..c2b1c4719e 100644 --- a/docs/df/d30/classedash__packager_1_1media_1_1ContentEncoding.html +++ b/docs/df/d30/classedash__packager_1_1media_1_1ContentEncoding.html @@ -208,7 +208,7 @@ Static Public Attributes diff --git a/docs/df/d31/muxer__util_8cc_source.html b/docs/df/d31/muxer__util_8cc_source.html index dddde1fe00..e87cfa139e 100644 --- a/docs/df/d31/muxer__util_8cc_source.html +++ b/docs/df/d31/muxer__util_8cc_source.html @@ -247,7 +247,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d32/audio__stream__info_8h_source.html b/docs/df/d32/audio__stream__info_8h_source.html index 933767eb34..cea69e6558 100644 --- a/docs/df/d32/audio__stream__info_8h_source.html +++ b/docs/df/d32/audio__stream__info_8h_source.html @@ -187,7 +187,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d3c/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentDecodeTime-members.html b/docs/df/d3c/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentDecodeTime-members.html index 316219e816..9fbad40356 100644 --- a/docs/df/d3c/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentDecodeTime-members.html +++ b/docs/df/d3c/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentDecodeTime-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d40/classedash__packager_1_1media_1_1Cluster.html b/docs/df/d40/classedash__packager_1_1media_1_1Cluster.html index 15ae49c94d..41296df108 100644 --- a/docs/df/d40/classedash__packager_1_1media_1_1Cluster.html +++ b/docs/df/d40/classedash__packager_1_1media_1_1Cluster.html @@ -116,7 +116,7 @@ int size () const diff --git a/docs/df/d43/classedash__packager_1_1media_1_1mp4_1_1Segmenter-members.html b/docs/df/d43/classedash__packager_1_1media_1_1mp4_1_1Segmenter-members.html index 8c74012a4a..676c7f6d36 100644 --- a/docs/df/d43/classedash__packager_1_1media_1_1mp4_1_1Segmenter-members.html +++ b/docs/df/d43/classedash__packager_1_1media_1_1mp4_1_1Segmenter-members.html @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d4e/classedash__packager_1_1media_1_1webm_1_1MultiSegmentSegmenter.html b/docs/df/d4e/classedash__packager_1_1media_1_1webm_1_1MultiSegmentSegmenter.html index 4465cefaea..e283abb1eb 100644 --- a/docs/df/d4e/classedash__packager_1_1media_1_1webm_1_1MultiSegmentSegmenter.html +++ b/docs/df/d4e/classedash__packager_1_1media_1_1webm_1_1MultiSegmentSegmenter.html @@ -277,7 +277,7 @@ double cluster_length_sec< diff --git a/docs/df/d5b/classedash__packager_1_1media_1_1mp2t_1_1EsParserAdts-members.html b/docs/df/d5b/classedash__packager_1_1media_1_1mp2t_1_1EsParserAdts-members.html index 80c2263001..78e7e6519c 100644 --- a/docs/df/d5b/classedash__packager_1_1media_1_1mp2t_1_1EsParserAdts-members.html +++ b/docs/df/d5b/classedash__packager_1_1media_1_1mp2t_1_1EsParserAdts-members.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d5e/classedash__packager_1_1media_1_1mp2t_1_1TsSection-members.html b/docs/df/d5e/classedash__packager_1_1media_1_1mp2t_1_1TsSection-members.html index 589013aad2..2aac1c3b9e 100644 --- a/docs/df/d5e/classedash__packager_1_1media_1_1mp2t_1_1TsSection-members.html +++ b/docs/df/d5e/classedash__packager_1_1media_1_1mp2t_1_1TsSection-members.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d62/structedash__packager_1_1media_1_1mp4_1_1AudioSampleEntry.html b/docs/df/d62/structedash__packager_1_1media_1_1mp4_1_1AudioSampleEntry.html index 371b4e5074..e73a0a4987 100644 --- a/docs/df/d62/structedash__packager_1_1media_1_1mp4_1_1AudioSampleEntry.html +++ b/docs/df/d62/structedash__packager_1_1media_1_1mp4_1_1AudioSampleEntry.html @@ -166,7 +166,7 @@ Additional Inherited Members

          Detailed Description

          -

          Definition at line 324 of file box_definitions.h.

          +

          Definition at line 322 of file box_definitions.h.

          Member Function Documentation

          @@ -192,7 +192,7 @@ Additional Inherited Members

          Implements edash_packager::media::mp4::Box.

          -

          Definition at line 1470 of file box_definitions.cc.

          +

          Definition at line 1455 of file box_definitions.cc.

          @@ -203,7 +203,7 @@ Additional Inherited Members diff --git a/docs/df/d6a/structedash__packager_1_1media_1_1mp4_1_1VideoSampleEntry.html b/docs/df/d6a/structedash__packager_1_1media_1_1mp4_1_1VideoSampleEntry.html index 60d7726d62..42632c3123 100644 --- a/docs/df/d6a/structedash__packager_1_1media_1_1mp4_1_1VideoSampleEntry.html +++ b/docs/df/d6a/structedash__packager_1_1media_1_1mp4_1_1VideoSampleEntry.html @@ -157,7 +157,7 @@ Additional Inherited Members

          Detailed Description

          -

          Definition at line 278 of file box_definitions.h.

          +

          Definition at line 276 of file box_definitions.h.

          Member Function Documentation

          @@ -183,7 +183,7 @@ Additional Inherited Members

          Implements edash_packager::media::mp4::Box.

          -

          Definition at line 1252 of file box_definitions.cc.

          +

          Definition at line 1237 of file box_definitions.cc.

          @@ -194,7 +194,7 @@ Additional Inherited Members diff --git a/docs/df/d6e/structedash__packager_1_1media_1_1mp4_1_1Language-members.html b/docs/df/d6e/structedash__packager_1_1media_1_1mp4_1_1Language-members.html index 5832a011b0..392586c2e4 100644 --- a/docs/df/d6e/structedash__packager_1_1media_1_1mp4_1_1Language-members.html +++ b/docs/df/d6e/structedash__packager_1_1media_1_1mp4_1_1Language-members.html @@ -99,7 +99,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d76/structedash__packager_1_1media_1_1mp4_1_1SampleToChunk.html b/docs/df/d76/structedash__packager_1_1media_1_1mp4_1_1SampleToChunk.html index 89fba478da..cef32fa589 100644 --- a/docs/df/d76/structedash__packager_1_1media_1_1mp4_1_1SampleToChunk.html +++ b/docs/df/d76/structedash__packager_1_1media_1_1mp4_1_1SampleToChunk.html @@ -145,7 +145,7 @@ Additional Inherited Members

          Detailed Description

          -

          Definition at line 415 of file box_definitions.h.

          +

          Definition at line 413 of file box_definitions.h.

          Member Function Documentation

          @@ -171,7 +171,7 @@ Additional Inherited Members

          Implements edash_packager::media::mp4::Box.

          -

          Definition at line 723 of file box_definitions.cc.

          +

          Definition at line 708 of file box_definitions.cc.

          @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/df/d7d/webm__info__parser_8cc_source.html b/docs/df/d7d/webm__info__parser_8cc_source.html index 718f410e6e..3bdc2e4d2b 100644 --- a/docs/df/d7d/webm__info__parser_8cc_source.html +++ b/docs/df/d7d/webm__info__parser_8cc_source.html @@ -200,7 +200,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d86/structedash__packager_1_1media_1_1mp4_1_1MovieFragmentHeader.html b/docs/df/d86/structedash__packager_1_1media_1_1mp4_1_1MovieFragmentHeader.html index 9dea7983b4..7ddc427a72 100644 --- a/docs/df/d86/structedash__packager_1_1media_1_1mp4_1_1MovieFragmentHeader.html +++ b/docs/df/d86/structedash__packager_1_1media_1_1mp4_1_1MovieFragmentHeader.html @@ -145,7 +145,7 @@ Additional Inherited Members

          Detailed Description

          -

          Definition at line 587 of file box_definitions.h.

          +

          Definition at line 585 of file box_definitions.h.

          Member Function Documentation

          @@ -171,7 +171,7 @@ Additional Inherited Members

          Implements edash_packager::media::mp4::Box.

          -

          Definition at line 1958 of file box_definitions.cc.

          +

          Definition at line 1943 of file box_definitions.cc.

          @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/df/d89/classedash__packager_1_1media_1_1SegmentTestBase_1_1ClusterParser.html b/docs/df/d89/classedash__packager_1_1media_1_1SegmentTestBase_1_1ClusterParser.html index 4f31ba6f27..774a995512 100644 --- a/docs/df/d89/classedash__packager_1_1media_1_1SegmentTestBase_1_1ClusterParser.html +++ b/docs/df/d89/classedash__packager_1_1media_1_1SegmentTestBase_1_1ClusterParser.html @@ -128,7 +128,7 @@ int cluster_count () c diff --git a/docs/df/d8a/vp9__parser_8h_source.html b/docs/df/d8a/vp9__parser_8h_source.html index 05125723ab..48057bc3e0 100644 --- a/docs/df/d8a/vp9__parser_8h_source.html +++ b/docs/df/d8a/vp9__parser_8h_source.html @@ -136,7 +136,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d8a/vpx__parser_8h_source.html b/docs/df/d8a/vpx__parser_8h_source.html index 21ec62a8a2..a192695d0e 100644 --- a/docs/df/d8a/vpx__parser_8h_source.html +++ b/docs/df/d8a/vpx__parser_8h_source.html @@ -145,7 +145,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d96/xml__node_8cc_source.html b/docs/df/d96/xml__node_8cc_source.html index 4aa79ddd06..7cd0900968 100644 --- a/docs/df/d96/xml__node_8cc_source.html +++ b/docs/df/d96/xml__node_8cc_source.html @@ -492,7 +492,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/da9/classedash__packager_1_1media_1_1mp4_1_1Fragmenter-members.html b/docs/df/da9/classedash__packager_1_1media_1_1mp4_1_1Fragmenter-members.html index e35f641fa0..1734b13eea 100644 --- a/docs/df/da9/classedash__packager_1_1media_1_1mp4_1_1Fragmenter-members.html +++ b/docs/df/da9/classedash__packager_1_1media_1_1mp4_1_1Fragmenter-members.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/da9/structedash__packager_1_1media_1_1mp4_1_1WebVTTSourceLabelBox.html b/docs/df/da9/structedash__packager_1_1media_1_1mp4_1_1WebVTTSourceLabelBox.html index fa37558eb4..464c8df0bc 100644 --- a/docs/df/da9/structedash__packager_1_1media_1_1mp4_1_1WebVTTSourceLabelBox.html +++ b/docs/df/da9/structedash__packager_1_1media_1_1mp4_1_1WebVTTSourceLabelBox.html @@ -136,7 +136,7 @@ Additional Inherited Members

          Detailed Description

          -

          Definition at line 350 of file box_definitions.h.

          +

          Definition at line 348 of file box_definitions.h.

          Member Function Documentation

          @@ -162,7 +162,7 @@ Additional Inherited Members

          Implements edash_packager::media::mp4::Box.

          -

          Definition at line 1549 of file box_definitions.cc.

          +

          Definition at line 1534 of file box_definitions.cc.

          @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/df/dad/decrypt__config_8h_source.html b/docs/df/dad/decrypt__config_8h_source.html index 238501aa2e..d1a51bdd2e 100644 --- a/docs/df/dad/decrypt__config_8h_source.html +++ b/docs/df/dad/decrypt__config_8h_source.html @@ -151,7 +151,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/db4/classedash__packager_1_1media_1_1BitReader.html b/docs/df/db4/classedash__packager_1_1media_1_1BitReader.html index 957a93f778..aced6eab6e 100644 --- a/docs/df/db4/classedash__packager_1_1media_1_1BitReader.html +++ b/docs/df/db4/classedash__packager_1_1media_1_1BitReader.html @@ -362,7 +362,7 @@ template<typename T > diff --git a/docs/df/db8/structedash__packager_1_1media_1_1mp4_1_1AC3Specific-members.html b/docs/df/db8/structedash__packager_1_1media_1_1mp4_1_1AC3Specific-members.html index e48969137c..80c0dcab54 100644 --- a/docs/df/db8/structedash__packager_1_1media_1_1mp4_1_1AC3Specific-members.html +++ b/docs/df/db8/structedash__packager_1_1media_1_1mp4_1_1AC3Specific-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/dbc/structedash__packager_1_1media_1_1mp4_1_1ChunkLargeOffset-members.html b/docs/df/dbc/structedash__packager_1_1media_1_1mp4_1_1ChunkLargeOffset-members.html index d2dd6738b5..a5611a3466 100644 --- a/docs/df/dbc/structedash__packager_1_1media_1_1mp4_1_1ChunkLargeOffset-members.html +++ b/docs/df/dbc/structedash__packager_1_1media_1_1mp4_1_1ChunkLargeOffset-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/dd1/structedash__packager_1_1media_1_1mp4_1_1FileType-members.html b/docs/df/dd1/structedash__packager_1_1media_1_1mp4_1_1FileType-members.html index 17a6021ce3..840d5d092f 100644 --- a/docs/df/dd1/structedash__packager_1_1media_1_1mp4_1_1FileType-members.html +++ b/docs/df/dd1/structedash__packager_1_1media_1_1mp4_1_1FileType-members.html @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/dd2/classedash__packager_1_1MockMpdBuilder-members.html b/docs/df/dd2/classedash__packager_1_1MockMpdBuilder-members.html index a0d6ae4a07..ca135286d1 100644 --- a/docs/df/dd2/classedash__packager_1_1MockMpdBuilder-members.html +++ b/docs/df/dd2/classedash__packager_1_1MockMpdBuilder-members.html @@ -112,7 +112,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/dd2/mpd__utils_8h_source.html b/docs/df/dd2/mpd__utils_8h_source.html index 4af463573a..f2af95df8f 100644 --- a/docs/df/dd2/mpd__utils_8h_source.html +++ b/docs/df/dd2/mpd__utils_8h_source.html @@ -165,7 +165,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/dda/structedash__packager_1_1media_1_1Cue.html b/docs/df/dda/structedash__packager_1_1media_1_1Cue.html index cab39a053f..537189126f 100644 --- a/docs/df/dda/structedash__packager_1_1media_1_1Cue.html +++ b/docs/df/dda/structedash__packager_1_1media_1_1Cue.html @@ -125,7 +125,7 @@ std::vector< std::string >  diff --git a/docs/df/ddc/webm_2segmenter_8h_source.html b/docs/df/ddc/webm_2segmenter_8h_source.html index cda8138c97..f0120d5091 100644 --- a/docs/df/ddc/webm_2segmenter_8h_source.html +++ b/docs/df/ddc/webm_2segmenter_8h_source.html @@ -250,7 +250,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/dde/classedash__packager_1_1media_1_1BufferWriter.html b/docs/df/dde/classedash__packager_1_1media_1_1BufferWriter.html index ee5c3d638d..6e164f1a49 100644 --- a/docs/df/dde/classedash__packager_1_1media_1_1BufferWriter.html +++ b/docs/df/dde/classedash__packager_1_1media_1_1BufferWriter.html @@ -301,7 +301,7 @@ void AppendInt (int64_ diff --git a/docs/df/dde/ts__section__psi_8cc_source.html b/docs/df/dde/ts__section__psi_8cc_source.html index 7b752ff212..ab2debe39e 100644 --- a/docs/df/dde/ts__section__psi_8cc_source.html +++ b/docs/df/dde/ts__section__psi_8cc_source.html @@ -228,7 +228,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/de3/structedash__packager_1_1media_1_1mp4_1_1TrackHeader-members.html b/docs/df/de3/structedash__packager_1_1media_1_1mp4_1_1TrackHeader-members.html index b15025338e..b37472d7c6 100644 --- a/docs/df/de3/structedash__packager_1_1media_1_1mp4_1_1TrackHeader-members.html +++ b/docs/df/de3/structedash__packager_1_1media_1_1mp4_1_1TrackHeader-members.html @@ -125,7 +125,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/de3/text__track__config_8cc_source.html b/docs/df/de3/text__track__config_8cc_source.html index 3faeab5533..6563038f45 100644 --- a/docs/df/de3/text__track__config_8cc_source.html +++ b/docs/df/de3/text__track__config_8cc_source.html @@ -122,7 +122,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/de7/classedash__packager_1_1media_1_1MuxerListener.html b/docs/df/de7/classedash__packager_1_1media_1_1MuxerListener.html index d7e46e5efb..61bb92c74e 100644 --- a/docs/df/de7/classedash__packager_1_1media_1_1MuxerListener.html +++ b/docs/df/de7/classedash__packager_1_1media_1_1MuxerListener.html @@ -177,7 +177,7 @@ virtual void OnNewSegment< diff --git a/docs/df/de9/segment__info_8h_source.html b/docs/df/de9/segment__info_8h_source.html index 034c369217..5237cbf88e 100644 --- a/docs/df/de9/segment__info_8h_source.html +++ b/docs/df/de9/segment__info_8h_source.html @@ -114,7 +114,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/dec/classedash__packager_1_1media_1_1MuxerListener-members.html b/docs/df/dec/classedash__packager_1_1media_1_1MuxerListener-members.html index 0ac24293d4..b80ac47f3c 100644 --- a/docs/df/dec/classedash__packager_1_1media_1_1MuxerListener-members.html +++ b/docs/df/dec/classedash__packager_1_1media_1_1MuxerListener-members.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/df4/classedash__packager_1_1media_1_1SeekHead.html b/docs/df/df4/classedash__packager_1_1media_1_1SeekHead.html index 7c4a646c59..51e51576ef 100644 --- a/docs/df/df4/classedash__packager_1_1media_1_1SeekHead.html +++ b/docs/df/df4/classedash__packager_1_1media_1_1SeekHead.html @@ -148,7 +148,7 @@ void set_tracks_pos (u diff --git a/docs/df/df8/classedash__packager_1_1media_1_1Nalu-members.html b/docs/df/df8/classedash__packager_1_1media_1_1Nalu-members.html index 707361c8a0..b45db929fc 100644 --- a/docs/df/df8/classedash__packager_1_1media_1_1Nalu-members.html +++ b/docs/df/df8/classedash__packager_1_1media_1_1Nalu-members.html @@ -129,7 +129,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/dfa/classedash__packager_1_1media_1_1RsaPublicKey-members.html b/docs/df/dfa/classedash__packager_1_1media_1_1RsaPublicKey-members.html index 554409e370..b008ceffa7 100644 --- a/docs/df/dfa/classedash__packager_1_1media_1_1RsaPublicKey-members.html +++ b/docs/df/dfa/classedash__packager_1_1media_1_1RsaPublicKey-members.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dir_2618cd273dea54f184e42d7a562af818.html b/docs/dir_2618cd273dea54f184e42d7a562af818.html index 74c079351a..473ac27c20 100644 --- a/docs/dir_2618cd273dea54f184e42d7a562af818.html +++ b/docs/dir_2618cd273dea54f184e42d7a562af818.html @@ -140,7 +140,7 @@ Files diff --git a/docs/dir_279fd47bebb21302c25cfb685e84c359.html b/docs/dir_279fd47bebb21302c25cfb685e84c359.html index 12874af7cd..731e30ae03 100644 --- a/docs/dir_279fd47bebb21302c25cfb685e84c359.html +++ b/docs/dir_279fd47bebb21302c25cfb685e84c359.html @@ -119,7 +119,7 @@ Files diff --git a/docs/dir_2eceb70145328c029a5f43350007537a.html b/docs/dir_2eceb70145328c029a5f43350007537a.html index f25eab64d3..16a2059b41 100644 --- a/docs/dir_2eceb70145328c029a5f43350007537a.html +++ b/docs/dir_2eceb70145328c029a5f43350007537a.html @@ -93,7 +93,7 @@ Files diff --git a/docs/dir_39dc0668bd5a501998f94e8b4e546c71.html b/docs/dir_39dc0668bd5a501998f94e8b4e546c71.html index 4ec895e314..bc89bb7080 100644 --- a/docs/dir_39dc0668bd5a501998f94e8b4e546c71.html +++ b/docs/dir_39dc0668bd5a501998f94e8b4e546c71.html @@ -99,7 +99,7 @@ Directories diff --git a/docs/dir_3e9291fd7a18fdecc763294cb2628910.html b/docs/dir_3e9291fd7a18fdecc763294cb2628910.html index 6590e120e4..cd10f5014c 100644 --- a/docs/dir_3e9291fd7a18fdecc763294cb2628910.html +++ b/docs/dir_3e9291fd7a18fdecc763294cb2628910.html @@ -173,7 +173,7 @@ Files diff --git a/docs/dir_49627ef5ef0630f6cf11dd06344c4cf0.html b/docs/dir_49627ef5ef0630f6cf11dd06344c4cf0.html index a7a9ab3991..452d158c90 100644 --- a/docs/dir_49627ef5ef0630f6cf11dd06344c4cf0.html +++ b/docs/dir_49627ef5ef0630f6cf11dd06344c4cf0.html @@ -93,7 +93,7 @@ Files diff --git a/docs/dir_5039d854a18988ed1f1dbebc120ffbf7.html b/docs/dir_5039d854a18988ed1f1dbebc120ffbf7.html index efc184f50c..1bc7b6de71 100644 --- a/docs/dir_5039d854a18988ed1f1dbebc120ffbf7.html +++ b/docs/dir_5039d854a18988ed1f1dbebc120ffbf7.html @@ -181,7 +181,7 @@ Files diff --git a/docs/dir_5eb2e460866db0ed29e32d64402e5c22.html b/docs/dir_5eb2e460866db0ed29e32d64402e5c22.html index 5e9d73a1a9..b8acefe34b 100644 --- a/docs/dir_5eb2e460866db0ed29e32d64402e5c22.html +++ b/docs/dir_5eb2e460866db0ed29e32d64402e5c22.html @@ -137,7 +137,7 @@ Files diff --git a/docs/dir_65f7acfa8cf3a5f1edc11faa2428b914.html b/docs/dir_65f7acfa8cf3a5f1edc11faa2428b914.html index 20a148ddc7..00e620b0d6 100644 --- a/docs/dir_65f7acfa8cf3a5f1edc11faa2428b914.html +++ b/docs/dir_65f7acfa8cf3a5f1edc11faa2428b914.html @@ -101,7 +101,7 @@ Directories diff --git a/docs/dir_679a6f4e9fa092b388fc986148018f2a.html b/docs/dir_679a6f4e9fa092b388fc986148018f2a.html index 024e53ab5c..471c6f123d 100644 --- a/docs/dir_679a6f4e9fa092b388fc986148018f2a.html +++ b/docs/dir_679a6f4e9fa092b388fc986148018f2a.html @@ -95,7 +95,7 @@ Files diff --git a/docs/dir_7f5e01ba7faf319a30cabd201b6ef121.html b/docs/dir_7f5e01ba7faf319a30cabd201b6ef121.html index 42adf129d9..b7222f7dbe 100644 --- a/docs/dir_7f5e01ba7faf319a30cabd201b6ef121.html +++ b/docs/dir_7f5e01ba7faf319a30cabd201b6ef121.html @@ -93,7 +93,7 @@ Files diff --git a/docs/dir_89dd766eb2df7d7257dbe806a34404af.html b/docs/dir_89dd766eb2df7d7257dbe806a34404af.html index 6dfa938b2a..28dd8d2051 100644 --- a/docs/dir_89dd766eb2df7d7257dbe806a34404af.html +++ b/docs/dir_89dd766eb2df7d7257dbe806a34404af.html @@ -93,7 +93,7 @@ Directories diff --git a/docs/dir_aa73376d632f252584a1c0dfbefab2c4.html b/docs/dir_aa73376d632f252584a1c0dfbefab2c4.html index ad4f8f0815..1f41f85b30 100644 --- a/docs/dir_aa73376d632f252584a1c0dfbefab2c4.html +++ b/docs/dir_aa73376d632f252584a1c0dfbefab2c4.html @@ -109,7 +109,7 @@ Files diff --git a/docs/dir_c6ada2450b25ab5438a4dba6c9b890af.html b/docs/dir_c6ada2450b25ab5438a4dba6c9b890af.html index dc9e16a61c..55063e8ba1 100644 --- a/docs/dir_c6ada2450b25ab5438a4dba6c9b890af.html +++ b/docs/dir_c6ada2450b25ab5438a4dba6c9b890af.html @@ -181,6 +181,10 @@ Files   file  producer_consumer_queue.h [code]   +file  protection_system_specific_info.cc [code] +  +file  protection_system_specific_info.h [code] +  file  request_signer.cc [code]   file  request_signer.h [code] @@ -221,7 +225,7 @@ Files diff --git a/docs/dir_d422163b96683743ed3963d4aac17747.html b/docs/dir_d422163b96683743ed3963d4aac17747.html index 51956de872..4cc069f837 100644 --- a/docs/dir_d422163b96683743ed3963d4aac17747.html +++ b/docs/dir_d422163b96683743ed3963d4aac17747.html @@ -131,7 +131,7 @@ Files diff --git a/docs/dir_eeaeb49ac3913fcfb450d3ce9cc0141b.html b/docs/dir_eeaeb49ac3913fcfb450d3ce9cc0141b.html index e3d75b5526..15bbc26e4a 100644 --- a/docs/dir_eeaeb49ac3913fcfb450d3ce9cc0141b.html +++ b/docs/dir_eeaeb49ac3913fcfb450d3ce9cc0141b.html @@ -93,7 +93,7 @@ Files diff --git a/docs/dir_f7dcbe7025bbacfc4b9a7dff6ad41d72.html b/docs/dir_f7dcbe7025bbacfc4b9a7dff6ad41d72.html index 3d77ac7112..e7f6073a07 100644 --- a/docs/dir_f7dcbe7025bbacfc4b9a7dff6ad41d72.html +++ b/docs/dir_f7dcbe7025bbacfc4b9a7dff6ad41d72.html @@ -131,7 +131,7 @@ Files diff --git a/docs/files.html b/docs/files.html index 4293391a5a..2590b6f5cb 100644 --- a/docs/files.html +++ b/docs/files.html @@ -157,24 +157,26 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); ||o*offset_byte_queue.cc ||o*offset_byte_queue.h ||o*producer_consumer_queue.h -||o*request_signer.cc -||o*request_signer.h -||o*rsa_key.cc -||o*rsa_key.h -||o*status.cc -||o*status.h -||o*stream_info.cc -||o*stream_info.h -||o*text_stream_info.cc -||o*text_stream_info.h -||o*text_track.h -||o*text_track_config.cc -||o*text_track_config.h -||o*timestamp.h -||o*video_stream_info.cc -||o*video_stream_info.h -||o*widevine_key_source.cc -||\*widevine_key_source.h +||o*protection_system_specific_info.cc +||o*protection_system_specific_info.h +||o*request_signer.cc +||o*request_signer.h +||o*rsa_key.cc +||o*rsa_key.h +||o*status.cc +||o*status.h +||o*stream_info.cc +||o*stream_info.h +||o*text_stream_info.cc +||o*text_stream_info.h +||o*text_track.h +||o*text_track_config.cc +||o*text_track_config.h +||o*timestamp.h +||o*video_stream_info.cc +||o*video_stream_info.h +||o*widevine_key_source.cc +||\*widevine_key_source.h |o+event ||o*mpd_notify_muxer_listener.cc ||o*mpd_notify_muxer_listener.h @@ -386,7 +388,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions.html b/docs/functions.html index d4b14ed64a..7d1d79b0cc 100644 --- a/docs/functions.html +++ b/docs/functions.html @@ -220,7 +220,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_b.html b/docs/functions_b.html index b06ec35ee3..cff1ca86d9 100644 --- a/docs/functions_b.html +++ b/docs/functions_b.html @@ -238,7 +238,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_c.html b/docs/functions_c.html index d799001f93..af36a0c888 100644 --- a/docs/functions_c.html +++ b/docs/functions_c.html @@ -193,6 +193,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
        • CreateAndInitializeSegmenter() : edash_packager::media::SegmentTestBase
        • +
        • CreateBox() +: edash_packager::media::ProtectionSystemSpecificInfo +
        • CreateEmptyMediaSample() : edash_packager::media::MediaSample
        • @@ -225,7 +228,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_d.html b/docs/functions_d.html index 41ff5c7c2f..ecb30ee996 100644 --- a/docs/functions_d.html +++ b/docs/functions_d.html @@ -159,7 +159,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_e.html b/docs/functions_e.html index 2ff73b9f70..b270688e65 100644 --- a/docs/functions_e.html +++ b/docs/functions_e.html @@ -142,7 +142,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_eval.html b/docs/functions_eval.html index a94dc04dae..43df8ff576 100644 --- a/docs/functions_eval.html +++ b/docs/functions_eval.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_f.html b/docs/functions_f.html index ba735df37a..40842726e1 100644 --- a/docs/functions_f.html +++ b/docs/functions_f.html @@ -187,7 +187,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func.html b/docs/functions_func.html index 79bd77bd3e..a391f480b4 100644 --- a/docs/functions_func.html +++ b/docs/functions_func.html @@ -220,7 +220,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_b.html b/docs/functions_func_b.html index 51fefa1cc8..330b0b7690 100644 --- a/docs/functions_func_b.html +++ b/docs/functions_func_b.html @@ -235,7 +235,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_c.html b/docs/functions_func_c.html index e61fc9385e..db5d89e11a 100644 --- a/docs/functions_func_c.html +++ b/docs/functions_func_c.html @@ -193,6 +193,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
        • CreateAndInitializeSegmenter() : edash_packager::media::SegmentTestBase
        • +
        • CreateBox() +: edash_packager::media::ProtectionSystemSpecificInfo +
        • CreateEmptyMediaSample() : edash_packager::media::MediaSample
        • @@ -225,7 +228,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_d.html b/docs/functions_func_d.html index 78183f2f95..1d581b69b8 100644 --- a/docs/functions_func_d.html +++ b/docs/functions_func_d.html @@ -159,7 +159,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_e.html b/docs/functions_func_e.html index ae16606865..59273dde24 100644 --- a/docs/functions_func_e.html +++ b/docs/functions_func_e.html @@ -142,7 +142,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_f.html b/docs/functions_func_f.html index f1b875d093..8bff9f80bf 100644 --- a/docs/functions_func_f.html +++ b/docs/functions_func_f.html @@ -181,7 +181,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_g.html b/docs/functions_func_g.html index 60bf5f757d..8a571617c7 100644 --- a/docs/functions_func_g.html +++ b/docs/functions_func_g.html @@ -238,7 +238,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_h.html b/docs/functions_func_h.html index c572dad949..4de3ae8e9e 100644 --- a/docs/functions_func_h.html +++ b/docs/functions_func_h.html @@ -141,7 +141,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_i.html b/docs/functions_func_i.html index 8ca3f76e23..af4b1a0703 100644 --- a/docs/functions_func_i.html +++ b/docs/functions_func_i.html @@ -202,7 +202,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_k.html b/docs/functions_func_k.html index 41343e2f63..e0326dda14 100644 --- a/docs/functions_func_k.html +++ b/docs/functions_func_k.html @@ -128,7 +128,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_l.html b/docs/functions_func_l.html index fe4c750c7d..98fb3c5986 100644 --- a/docs/functions_func_l.html +++ b/docs/functions_func_l.html @@ -134,7 +134,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_m.html b/docs/functions_func_m.html index 21639c27d8..ca8842bca1 100644 --- a/docs/functions_func_m.html +++ b/docs/functions_func_m.html @@ -143,7 +143,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_n.html b/docs/functions_func_n.html index d67d3c441e..0a31961470 100644 --- a/docs/functions_func_n.html +++ b/docs/functions_func_n.html @@ -165,7 +165,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_o.html b/docs/functions_func_o.html index fa77226419..a91129e7dd 100644 --- a/docs/functions_func_o.html +++ b/docs/functions_func_o.html @@ -161,7 +161,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_p.html b/docs/functions_func_p.html index d4dca08703..ce54074052 100644 --- a/docs/functions_func_p.html +++ b/docs/functions_func_p.html @@ -130,6 +130,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , edash_packager::media::mp4::AACAudioSpecificConfig , edash_packager::media::mp4::Box , edash_packager::media::mp4::MP4MediaParser +, edash_packager::media::ProtectionSystemSpecificInfo , edash_packager::media::VP8Parser , edash_packager::media::VP9Parser , edash_packager::media::VPCodecConfiguration @@ -143,6 +144,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , edash_packager::media::WebVttMediaParser , edash_packager::media::wvm::WvmMediaParser +
        • ParseBoxes() +: edash_packager::media::ProtectionSystemSpecificInfo +
        • ParseFromBuffer() : edash_packager::media::mp4::SampleEncryptionEntry
        • @@ -173,7 +177,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : edash_packager::media::mp4::BoxBuffer
        • Position() -: edash_packager::media::MkvWriter +: edash_packager::media::MkvWriter
        • Post() : edash_packager::media::HttpKeyFetcher @@ -205,7 +209,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_r.html b/docs/functions_func_r.html index 8f638ba55a..f89c0af20d 100644 --- a/docs/functions_func_r.html +++ b/docs/functions_func_r.html @@ -200,7 +200,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_s.html b/docs/functions_func_s.html index 461f4e6443..8a3c24cc7c 100644 --- a/docs/functions_func_s.html +++ b/docs/functions_func_s.html @@ -268,7 +268,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_t.html b/docs/functions_func_t.html index dbdc0ce882..49367b7575 100644 --- a/docs/functions_func_t.html +++ b/docs/functions_func_t.html @@ -174,7 +174,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_u.html b/docs/functions_func_u.html index b44fb4f5a1..312b77924d 100644 --- a/docs/functions_func_u.html +++ b/docs/functions_func_u.html @@ -146,7 +146,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_v.html b/docs/functions_func_v.html index d27da828f9..9808a30d6a 100644 --- a/docs/functions_func_v.html +++ b/docs/functions_func_v.html @@ -134,7 +134,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_w.html b/docs/functions_func_w.html index 75a3596c83..95e3a2fda3 100644 --- a/docs/functions_func_w.html +++ b/docs/functions_func_w.html @@ -176,7 +176,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_x.html b/docs/functions_func_x.html index 6de287c4d2..62d4d307bd 100644 --- a/docs/functions_func_x.html +++ b/docs/functions_func_x.html @@ -128,7 +128,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_~.html b/docs/functions_func_~.html index ae891f4d27..d5295f22cb 100644 --- a/docs/functions_func_~.html +++ b/docs/functions_func_~.html @@ -131,7 +131,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_g.html b/docs/functions_g.html index d8968ea3c5..e8fba3fb30 100644 --- a/docs/functions_g.html +++ b/docs/functions_g.html @@ -238,7 +238,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_h.html b/docs/functions_h.html index 1ea3d10904..d30d99ca63 100644 --- a/docs/functions_h.html +++ b/docs/functions_h.html @@ -141,7 +141,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_i.html b/docs/functions_i.html index afe34ed4ef..02d7a3b2a7 100644 --- a/docs/functions_i.html +++ b/docs/functions_i.html @@ -205,7 +205,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_k.html b/docs/functions_k.html index e3804ba2bb..de6b0d782c 100644 --- a/docs/functions_k.html +++ b/docs/functions_k.html @@ -143,7 +143,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_l.html b/docs/functions_l.html index 27446cda6d..a0c9105e4a 100644 --- a/docs/functions_l.html +++ b/docs/functions_l.html @@ -134,7 +134,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_m.html b/docs/functions_m.html index 87c6634a7c..bf80958908 100644 --- a/docs/functions_m.html +++ b/docs/functions_m.html @@ -143,7 +143,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_n.html b/docs/functions_n.html index 7720ec10ba..a3226f86d2 100644 --- a/docs/functions_n.html +++ b/docs/functions_n.html @@ -171,7 +171,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_o.html b/docs/functions_o.html index c63e9617e3..3075ee2830 100644 --- a/docs/functions_o.html +++ b/docs/functions_o.html @@ -164,7 +164,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_p.html b/docs/functions_p.html index a75529ac31..5968185126 100644 --- a/docs/functions_p.html +++ b/docs/functions_p.html @@ -133,6 +133,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , edash_packager::media::mp4::AACAudioSpecificConfig , edash_packager::media::mp4::Box , edash_packager::media::mp4::MP4MediaParser +, edash_packager::media::ProtectionSystemSpecificInfo , edash_packager::media::VP8Parser , edash_packager::media::VP9Parser , edash_packager::media::VPCodecConfiguration @@ -146,6 +147,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , edash_packager::media::WebVttMediaParser , edash_packager::media::wvm::WvmMediaParser
        • +
        • ParseBoxes() +: edash_packager::media::ProtectionSystemSpecificInfo +
        • ParseFromBuffer() : edash_packager::media::mp4::SampleEncryptionEntry
        • @@ -192,7 +196,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : edash_packager::media::mp4::ID3v2
        • ProducerConsumerQueue() -: edash_packager::media::ProducerConsumerQueue< T > +: edash_packager::media::ProducerConsumerQueue< T >
        • PsshBoxFromPsshData() : edash_packager::media::KeySource @@ -211,7 +215,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_r.html b/docs/functions_r.html index fe70b33290..093b2cf3e4 100644 --- a/docs/functions_r.html +++ b/docs/functions_r.html @@ -200,7 +200,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_s.html b/docs/functions_s.html index cda58d1bbe..085aa71bf5 100644 --- a/docs/functions_s.html +++ b/docs/functions_s.html @@ -283,7 +283,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_t.html b/docs/functions_t.html index 212ff317d5..86c4e4fd45 100644 --- a/docs/functions_t.html +++ b/docs/functions_t.html @@ -177,7 +177,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_type.html b/docs/functions_type.html index 0270643f0b..2cd9318bdc 100644 --- a/docs/functions_type.html +++ b/docs/functions_type.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_u.html b/docs/functions_u.html index 1566796943..0a16504d5a 100644 --- a/docs/functions_u.html +++ b/docs/functions_u.html @@ -146,7 +146,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_v.html b/docs/functions_v.html index b5880b1360..db1507d53e 100644 --- a/docs/functions_v.html +++ b/docs/functions_v.html @@ -134,7 +134,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_vars.html b/docs/functions_vars.html index d7edcac4c7..108198c9d6 100644 --- a/docs/functions_vars.html +++ b/docs/functions_vars.html @@ -144,7 +144,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_w.html b/docs/functions_w.html index bbbcbd0ab9..881873c82e 100644 --- a/docs/functions_w.html +++ b/docs/functions_w.html @@ -176,7 +176,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_x.html b/docs/functions_x.html index fa8e4b192a..8dd4827129 100644 --- a/docs/functions_x.html +++ b/docs/functions_x.html @@ -128,7 +128,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_~.html b/docs/functions_~.html index abbd492e61..7149d704e3 100644 --- a/docs/functions_~.html +++ b/docs/functions_~.html @@ -131,7 +131,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/hierarchy.html b/docs/hierarchy.html index 2980714f36..fcfdc7e305 100644 --- a/docs/hierarchy.html +++ b/docs/hierarchy.html @@ -265,80 +265,81 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); oCedash_packager::media::mp4::PrivFrameImplemented per http://id3.org/id3v2.4.0-frames oCedash_packager::media::ProducerConsumerQueue< T > oCedash_packager::media::ProgressListenerThis class listens to progress updates events -oCRefCountedThreadSafe -|oCedash_packager::media::MediaSampleClass to hold a media sample -|\Cedash_packager::media::StreamInfoAbstract class holds stream information -| oCedash_packager::media::AudioStreamInfoHolds audio stream information -| oCedash_packager::media::TextStreamInfo -| \Cedash_packager::media::VideoStreamInfoHolds video stream information -oCedash_packager::Representation -|\Cedash_packager::MockRepresentation -oCedash_packager::RepresentationStateChangeListener -oCedash_packager::media::RequestSignerAbstract class used for signature generation -|oCedash_packager::media::AesRequestSignerAesRequestSigner uses AES-CBC signing -|\Cedash_packager::media::RsaRequestSignerRsaRequestSigner uses RSA-PSS signing -oCedash_packager::media::RsaPrivateKeyRsa private key, used for message signing and decryption -oCedash_packager::media::RsaPublicKeyRsa public key, used for signature verification and encryption -oCedash_packager::media::mp4::SampleEncryptionEntry -oCedash_packager::media::mp4::SampleToGroupEntry -oCedash_packager::media::SeekHead -oCedash_packager::media::mp4::Segmenter -|oCedash_packager::media::mp4::MultiSegmentSegmenter -|\Cedash_packager::media::mp4::SingleSegmentSegmenter -oCedash_packager::media::webm::Segmenter -|oCedash_packager::media::webm::MultiSegmentSegmenter -|\Cedash_packager::media::webm::SingleSegmentSegmenter -| \Cedash_packager::media::webm::TwoPassSingleSegmentSegmenter -oCedash_packager::SegmentInfo -oCedash_packager::media::mp4::SegmentReference -oCSimpleThread -|\Cedash_packager::media::ClosureThread -oCedash_packager::media::Status -oCedash_packager::media::StreamDescriptor -oCedash_packager::media::StreamDescriptorCompareFn -oCedash_packager::media::SubsampleEntry -oCedash_packager::media::mp4::SyncSampleIterator -oCTest -|\Cedash_packager::media::SegmentTestBase -oCedash_packager::media::TextTrack -oCedash_packager::media::TextTrackConfig -oCedash_packager::media::mp4::TrackRunIterator -oCedash_packager::media::TracksBuilder -oCedash_packager::media::mp2t::TsPacket -oCedash_packager::media::mp2t::TsSection -|oCedash_packager::media::mp2t::TsSectionPes -|\Cedash_packager::media::mp2t::TsSectionPsi -| oCedash_packager::media::mp2t::TsSectionPat -| \Cedash_packager::media::mp2t::TsSectionPmt -oCedash_packager::media::mp4::VideoSliceHeaderParser -|\Cedash_packager::media::mp4::H264VideoSliceHeaderParser -oCedash_packager::media::VideoStreamInfoParameters -oCedash_packager::media::VPCodecConfigurationClass for parsing or writing VP codec configuration data -oCedash_packager::media::VPxFrameInfo -oCedash_packager::media::VPxParser -|oCedash_packager::media::VP8Parser -|\Cedash_packager::media::VP9ParserClass to parse a vp9 bit stream -oCedash_packager::media::WebMListParser -oCedash_packager::media::WebMParserClient -|oCedash_packager::media::SegmentTestBase::ClusterParser -|oCedash_packager::media::WebMAudioClientHelper class used to parse an Audio element inside a TrackEntry element -|oCedash_packager::media::WebMClusterParser -|oCedash_packager::media::WebMContentEncodingsClientParser for WebM ContentEncodings element -|oCedash_packager::media::WebMInfoParserParser for WebM Info element -|oCedash_packager::media::WebMTracksParserParser for WebM Tracks element -|\Cedash_packager::media::WebMVideoClientHelper class used to parse a Video element inside a TrackEntry element -oCedash_packager::media::WebMWebVTTParser -oCedash_packager::xml::XmlDeleter -\Cedash_packager::xml::XmlNode - \Cedash_packager::xml::RepresentationBaseXmlNode -  oCedash_packager::xml::AdaptationSetXmlNodeAdaptationSetType specified in MPD -  \Cedash_packager::xml::RepresentationXmlNodeRepresentationType in MPD +oCedash_packager::media::ProtectionSystemSpecificInfo +oCRefCountedThreadSafe +|oCedash_packager::media::MediaSampleClass to hold a media sample +|\Cedash_packager::media::StreamInfoAbstract class holds stream information +| oCedash_packager::media::AudioStreamInfoHolds audio stream information +| oCedash_packager::media::TextStreamInfo +| \Cedash_packager::media::VideoStreamInfoHolds video stream information +oCedash_packager::Representation +|\Cedash_packager::MockRepresentation +oCedash_packager::RepresentationStateChangeListener +oCedash_packager::media::RequestSignerAbstract class used for signature generation +|oCedash_packager::media::AesRequestSignerAesRequestSigner uses AES-CBC signing +|\Cedash_packager::media::RsaRequestSignerRsaRequestSigner uses RSA-PSS signing +oCedash_packager::media::RsaPrivateKeyRsa private key, used for message signing and decryption +oCedash_packager::media::RsaPublicKeyRsa public key, used for signature verification and encryption +oCedash_packager::media::mp4::SampleEncryptionEntry +oCedash_packager::media::mp4::SampleToGroupEntry +oCedash_packager::media::SeekHead +oCedash_packager::media::mp4::Segmenter +|oCedash_packager::media::mp4::MultiSegmentSegmenter +|\Cedash_packager::media::mp4::SingleSegmentSegmenter +oCedash_packager::media::webm::Segmenter +|oCedash_packager::media::webm::MultiSegmentSegmenter +|\Cedash_packager::media::webm::SingleSegmentSegmenter +| \Cedash_packager::media::webm::TwoPassSingleSegmentSegmenter +oCedash_packager::SegmentInfo +oCedash_packager::media::mp4::SegmentReference +oCSimpleThread +|\Cedash_packager::media::ClosureThread +oCedash_packager::media::Status +oCedash_packager::media::StreamDescriptor +oCedash_packager::media::StreamDescriptorCompareFn +oCedash_packager::media::SubsampleEntry +oCedash_packager::media::mp4::SyncSampleIterator +oCTest +|\Cedash_packager::media::SegmentTestBase +oCedash_packager::media::TextTrack +oCedash_packager::media::TextTrackConfig +oCedash_packager::media::mp4::TrackRunIterator +oCedash_packager::media::TracksBuilder +oCedash_packager::media::mp2t::TsPacket +oCedash_packager::media::mp2t::TsSection +|oCedash_packager::media::mp2t::TsSectionPes +|\Cedash_packager::media::mp2t::TsSectionPsi +| oCedash_packager::media::mp2t::TsSectionPat +| \Cedash_packager::media::mp2t::TsSectionPmt +oCedash_packager::media::mp4::VideoSliceHeaderParser +|\Cedash_packager::media::mp4::H264VideoSliceHeaderParser +oCedash_packager::media::VideoStreamInfoParameters +oCedash_packager::media::VPCodecConfigurationClass for parsing or writing VP codec configuration data +oCedash_packager::media::VPxFrameInfo +oCedash_packager::media::VPxParser +|oCedash_packager::media::VP8Parser +|\Cedash_packager::media::VP9ParserClass to parse a vp9 bit stream +oCedash_packager::media::WebMListParser +oCedash_packager::media::WebMParserClient +|oCedash_packager::media::SegmentTestBase::ClusterParser +|oCedash_packager::media::WebMAudioClientHelper class used to parse an Audio element inside a TrackEntry element +|oCedash_packager::media::WebMClusterParser +|oCedash_packager::media::WebMContentEncodingsClientParser for WebM ContentEncodings element +|oCedash_packager::media::WebMInfoParserParser for WebM Info element +|oCedash_packager::media::WebMTracksParserParser for WebM Tracks element +|\Cedash_packager::media::WebMVideoClientHelper class used to parse a Video element inside a TrackEntry element +oCedash_packager::media::WebMWebVTTParser +oCedash_packager::xml::XmlDeleter +\Cedash_packager::xml::XmlNode + \Cedash_packager::xml::RepresentationBaseXmlNode +  oCedash_packager::xml::AdaptationSetXmlNodeAdaptationSetType specified in MPD +  \Cedash_packager::xml::RepresentationXmlNodeRepresentationType in MPD diff --git a/docs/index.html b/docs/index.html index c7bedc8923..9935786e5e 100644 --- a/docs/index.html +++ b/docs/index.html @@ -81,7 +81,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/namespacemembers.html b/docs/namespacemembers.html index a8a4cb3d78..0cba63adc0 100644 --- a/docs/namespacemembers.html +++ b/docs/namespacemembers.html @@ -124,7 +124,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/namespacemembers_func.html b/docs/namespacemembers_func.html index 3926861b70..51dd6d0543 100644 --- a/docs/namespacemembers_func.html +++ b/docs/namespacemembers_func.html @@ -124,7 +124,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/namespaces.html b/docs/namespaces.html index d12a3b67b0..483af8a527 100644 --- a/docs/namespaces.html +++ b/docs/namespaces.html @@ -92,7 +92,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/search/all_2.js b/docs/search/all_2.js index 064de77d93..86cc47ad8f 100644 --- a/docs/search/all_2.js +++ b/docs/search/all_2.js @@ -37,6 +37,7 @@ var searchData= ['copyfrom',['CopyFrom',['../d8/d6c/classedash__packager_1_1media_1_1MediaSample.html#ac65ec88fbe6d8b72c65b1ff3f68c5b02',1,'edash_packager::media::MediaSample::CopyFrom(const uint8_t *data, size_t size, bool is_key_frame)'],['../d8/d6c/classedash__packager_1_1media_1_1MediaSample.html#a7803f974ab6cdf542be46332598fef56',1,'edash_packager::media::MediaSample::CopyFrom(const uint8_t *data, size_t size, const uint8_t *side_data, size_t side_data_size, bool is_key_frame)']]], ['create',['Create',['../d5/d62/classedash__packager_1_1media_1_1RsaPrivateKey.html#a9360becce7c1e7be0bdecf2ce411b871',1,'edash_packager::media::RsaPrivateKey::Create()'],['../d1/d86/classedash__packager_1_1media_1_1RsaPublicKey.html#a21f9009c9654f141676ef05f0436baa4',1,'edash_packager::media::RsaPublicKey::Create()']]], ['createandinitializesegmenter',['CreateAndInitializeSegmenter',['../d2/d28/classedash__packager_1_1media_1_1SegmentTestBase.html#a850765b5c597b5681e5aa9c534985acf',1,'edash_packager::media::SegmentTestBase']]], + ['createbox',['CreateBox',['../db/da0/classedash__packager_1_1media_1_1ProtectionSystemSpecificInfo.html#af416386e03f4508e332a7a4334dd52e9',1,'edash_packager::media::ProtectionSystemSpecificInfo']]], ['createemptymediasample',['CreateEmptyMediaSample',['../d8/d6c/classedash__packager_1_1media_1_1MediaSample.html#ac30e98c643959047439a3b71baa399ca',1,'edash_packager::media::MediaSample']]], ['createencryptor',['CreateEncryptor',['../d8/d1e/classedash__packager_1_1media_1_1mp4_1_1EncryptingFragmenter.html#a5ed5486f22438e20d0d41524a47f4dd3',1,'edash_packager::media::mp4::EncryptingFragmenter']]], ['createeosbuffer',['CreateEOSBuffer',['../d8/d6c/classedash__packager_1_1media_1_1MediaSample.html#ae449ca4aeea6cacb8c08a56d9652a64e',1,'edash_packager::media::MediaSample']]], diff --git a/docs/search/all_e.js b/docs/search/all_e.js index dacdeea0fb..443301309d 100644 --- a/docs/search/all_e.js +++ b/docs/search/all_e.js @@ -1,7 +1,8 @@ var searchData= [ ['packager_5fversion_5fstring',['packager_version_string',['../de/d57/structedash__packager_1_1media_1_1MuxerOptions.html#a71efefea31d61d439c1d09a6563e8948',1,'edash_packager::media::MuxerOptions']]], - ['parse',['Parse',['../d5/dce/classedash__packager_1_1media_1_1Demuxer.html#adb6c35974c24809c715380a99ac7cc78',1,'edash_packager::media::Demuxer::Parse()'],['../dc/d48/classedash__packager_1_1media_1_1MediaParser.html#a3a70d164d75d6ed8f1ce59490d13beb4',1,'edash_packager::media::MediaParser::Parse()'],['../d8/dfb/classedash__packager_1_1media_1_1DecoderConfiguration.html#a22574190ccc29f66cb79a6ee68640dc5',1,'edash_packager::media::DecoderConfiguration::Parse(const std::vector< uint8_t > &data)'],['../d8/dfb/classedash__packager_1_1media_1_1DecoderConfiguration.html#af5972af71ac7bc672ae072bfd7e5f31a',1,'edash_packager::media::DecoderConfiguration::Parse(const uint8_t *data, size_t data_size)'],['../d5/dce/classedash__packager_1_1media_1_1VP8Parser.html#acee99f651808400222e4dd6b30ab40eb',1,'edash_packager::media::VP8Parser::Parse()'],['../da/d5f/classedash__packager_1_1media_1_1VP9Parser.html#a8b997dee438daade536e8ea189d110ed',1,'edash_packager::media::VP9Parser::Parse()'],['../d7/d85/classedash__packager_1_1media_1_1VPCodecConfiguration.html#a3428d45e1b7c31fc6dd3bef0c8dc46c7',1,'edash_packager::media::VPCodecConfiguration::Parse()'],['../d5/dd2/classedash__packager_1_1media_1_1VPxParser.html#ac65817688bb225757650c305ad4ec10f',1,'edash_packager::media::VPxParser::Parse()'],['../db/d69/classedash__packager_1_1media_1_1mp2t_1_1AdtsHeader.html#a12f7811f1539361980a13517f948f9fb',1,'edash_packager::media::mp2t::AdtsHeader::Parse()'],['../dc/dab/classedash__packager_1_1media_1_1mp2t_1_1Mp2tMediaParser.html#afaf26651a1ae06523f0243e0f73f565b',1,'edash_packager::media::mp2t::Mp2tMediaParser::Parse()'],['../dc/dc6/classedash__packager_1_1media_1_1mp4_1_1AACAudioSpecificConfig.html#a90a58afc9e6b20b9a6909d54f94dafc9',1,'edash_packager::media::mp4::AACAudioSpecificConfig::Parse()'],['../d7/d8a/structedash__packager_1_1media_1_1mp4_1_1Box.html#a7b62a3983faafbea54a32486df60ed96',1,'edash_packager::media::mp4::Box::Parse()'],['../d8/d0d/classedash__packager_1_1media_1_1mp4_1_1MP4MediaParser.html#a2228fd06a2237990b0f9208565f31520',1,'edash_packager::media::mp4::MP4MediaParser::Parse()'],['../db/da0/classedash__packager_1_1media_1_1WebMClusterParser.html#a060661d4a0bfc01543fa025fb4b09a7d',1,'edash_packager::media::WebMClusterParser::Parse()'],['../dd/d47/classedash__packager_1_1media_1_1WebMInfoParser.html#ab2f2dd920214bf7942e374d4c9843243',1,'edash_packager::media::WebMInfoParser::Parse()'],['../dd/d99/classedash__packager_1_1media_1_1WebMMediaParser.html#a41177fc84e98d89cef013cb50b4b44fc',1,'edash_packager::media::WebMMediaParser::Parse()'],['../d6/dd6/classedash__packager_1_1media_1_1WebMListParser.html#a5b3b0c8fd0423044d0090357428b8ee0',1,'edash_packager::media::WebMListParser::Parse()'],['../db/d23/classedash__packager_1_1media_1_1WebMTracksParser.html#a8719ba4bc187c32a73f133c0a67a19ab',1,'edash_packager::media::WebMTracksParser::Parse()'],['../dc/dc8/classedash__packager_1_1media_1_1WebMWebVTTParser.html#a979168b11e59b863de2d3ba3fbb60815',1,'edash_packager::media::WebMWebVTTParser::Parse()'],['../d2/d51/classedash__packager_1_1media_1_1WebVttMediaParser.html#adea6973058b03be69e9f07181e4242de',1,'edash_packager::media::WebVttMediaParser::Parse()'],['../d8/da0/classedash__packager_1_1media_1_1wvm_1_1WvmMediaParser.html#afb93a59f1ed5a174b4c4ef09072667a5',1,'edash_packager::media::wvm::WvmMediaParser::Parse()']]], + ['parse',['Parse',['../d5/dce/classedash__packager_1_1media_1_1Demuxer.html#adb6c35974c24809c715380a99ac7cc78',1,'edash_packager::media::Demuxer::Parse()'],['../dc/d48/classedash__packager_1_1media_1_1MediaParser.html#a3a70d164d75d6ed8f1ce59490d13beb4',1,'edash_packager::media::MediaParser::Parse()'],['../db/da0/classedash__packager_1_1media_1_1ProtectionSystemSpecificInfo.html#a36b22a8a94826ab52276fbccc525d6a1',1,'edash_packager::media::ProtectionSystemSpecificInfo::Parse()'],['../d8/dfb/classedash__packager_1_1media_1_1DecoderConfiguration.html#a22574190ccc29f66cb79a6ee68640dc5',1,'edash_packager::media::DecoderConfiguration::Parse(const std::vector< uint8_t > &data)'],['../d8/dfb/classedash__packager_1_1media_1_1DecoderConfiguration.html#af5972af71ac7bc672ae072bfd7e5f31a',1,'edash_packager::media::DecoderConfiguration::Parse(const uint8_t *data, size_t data_size)'],['../d5/dce/classedash__packager_1_1media_1_1VP8Parser.html#acee99f651808400222e4dd6b30ab40eb',1,'edash_packager::media::VP8Parser::Parse()'],['../da/d5f/classedash__packager_1_1media_1_1VP9Parser.html#a8b997dee438daade536e8ea189d110ed',1,'edash_packager::media::VP9Parser::Parse()'],['../d7/d85/classedash__packager_1_1media_1_1VPCodecConfiguration.html#a3428d45e1b7c31fc6dd3bef0c8dc46c7',1,'edash_packager::media::VPCodecConfiguration::Parse()'],['../d5/dd2/classedash__packager_1_1media_1_1VPxParser.html#ac65817688bb225757650c305ad4ec10f',1,'edash_packager::media::VPxParser::Parse()'],['../db/d69/classedash__packager_1_1media_1_1mp2t_1_1AdtsHeader.html#a12f7811f1539361980a13517f948f9fb',1,'edash_packager::media::mp2t::AdtsHeader::Parse()'],['../dc/dab/classedash__packager_1_1media_1_1mp2t_1_1Mp2tMediaParser.html#afaf26651a1ae06523f0243e0f73f565b',1,'edash_packager::media::mp2t::Mp2tMediaParser::Parse()'],['../dc/dc6/classedash__packager_1_1media_1_1mp4_1_1AACAudioSpecificConfig.html#a90a58afc9e6b20b9a6909d54f94dafc9',1,'edash_packager::media::mp4::AACAudioSpecificConfig::Parse()'],['../d7/d8a/structedash__packager_1_1media_1_1mp4_1_1Box.html#a7b62a3983faafbea54a32486df60ed96',1,'edash_packager::media::mp4::Box::Parse()'],['../d8/d0d/classedash__packager_1_1media_1_1mp4_1_1MP4MediaParser.html#a2228fd06a2237990b0f9208565f31520',1,'edash_packager::media::mp4::MP4MediaParser::Parse()'],['../db/da0/classedash__packager_1_1media_1_1WebMClusterParser.html#a060661d4a0bfc01543fa025fb4b09a7d',1,'edash_packager::media::WebMClusterParser::Parse()'],['../dd/d47/classedash__packager_1_1media_1_1WebMInfoParser.html#ab2f2dd920214bf7942e374d4c9843243',1,'edash_packager::media::WebMInfoParser::Parse()'],['../dd/d99/classedash__packager_1_1media_1_1WebMMediaParser.html#a41177fc84e98d89cef013cb50b4b44fc',1,'edash_packager::media::WebMMediaParser::Parse()'],['../d6/dd6/classedash__packager_1_1media_1_1WebMListParser.html#a5b3b0c8fd0423044d0090357428b8ee0',1,'edash_packager::media::WebMListParser::Parse()'],['../db/d23/classedash__packager_1_1media_1_1WebMTracksParser.html#a8719ba4bc187c32a73f133c0a67a19ab',1,'edash_packager::media::WebMTracksParser::Parse()'],['../dc/dc8/classedash__packager_1_1media_1_1WebMWebVTTParser.html#a979168b11e59b863de2d3ba3fbb60815',1,'edash_packager::media::WebMWebVTTParser::Parse()'],['../d2/d51/classedash__packager_1_1media_1_1WebVttMediaParser.html#adea6973058b03be69e9f07181e4242de',1,'edash_packager::media::WebVttMediaParser::Parse()'],['../d8/da0/classedash__packager_1_1media_1_1wvm_1_1WvmMediaParser.html#afb93a59f1ed5a174b4c4ef09072667a5',1,'edash_packager::media::wvm::WvmMediaParser::Parse()']]], + ['parseboxes',['ParseBoxes',['../db/da0/classedash__packager_1_1media_1_1ProtectionSystemSpecificInfo.html#a81b932254de07b9f586a6ad64cb4e6f1',1,'edash_packager::media::ProtectionSystemSpecificInfo']]], ['parsefrombuffer',['ParseFromBuffer',['../d8/de5/structedash__packager_1_1media_1_1mp4_1_1SampleEncryptionEntry.html#afcdbeb8f08f94028e152668060f3897b',1,'edash_packager::media::mp4::SampleEncryptionEntry']]], ['parsefromsampleencryptiondata',['ParseFromSampleEncryptionData',['../d5/d78/structedash__packager_1_1media_1_1mp4_1_1SampleEncryption.html#af94f8472666f214a83461d09de3a524f',1,'edash_packager::media::mp4::SampleEncryption']]], ['passscopedptr',['PassScopedPtr',['../dd/d85/classedash__packager_1_1xml_1_1XmlNode.html#a903bda1e35b396e8e182b77b5334e5ba',1,'edash_packager::xml::XmlNode']]], @@ -25,6 +26,7 @@ var searchData= ['progresslistener',['ProgressListener',['../d9/d2c/classedash__packager_1_1media_1_1ProgressListener.html',1,'edash_packager::media']]], ['protectionschemeinfo',['ProtectionSchemeInfo',['../dd/dc9/structedash__packager_1_1media_1_1mp4_1_1ProtectionSchemeInfo.html',1,'edash_packager::media::mp4']]], ['protectionsystemspecificheader',['ProtectionSystemSpecificHeader',['../da/d2a/structedash__packager_1_1media_1_1mp4_1_1ProtectionSystemSpecificHeader.html',1,'edash_packager::media::mp4']]], + ['protectionsystemspecificinfo',['ProtectionSystemSpecificInfo',['../db/da0/classedash__packager_1_1media_1_1ProtectionSystemSpecificInfo.html',1,'edash_packager::media']]], ['psshboxfrompsshdata',['PsshBoxFromPsshData',['../d9/d8b/classedash__packager_1_1media_1_1KeySource.html#ab5478505cfdb660fa6c680819f17f239',1,'edash_packager::media::KeySource']]], ['pullsample',['PullSample',['../d2/dfd/classedash__packager_1_1media_1_1MediaStream.html#a664ec77fc670a84bf3bd1cf0abb32dae',1,'edash_packager::media::MediaStream']]], ['push',['Push',['../d8/d2e/classedash__packager_1_1media_1_1ByteQueue.html#afa47d3dc54862cee101d4be8746de6eb',1,'edash_packager::media::ByteQueue::Push()'],['../d5/d02/classedash__packager_1_1media_1_1ProducerConsumerQueue.html#a6a9fc5405d52cfd4178ee76c22dd7fb6',1,'edash_packager::media::ProducerConsumerQueue::Push()']]], diff --git a/docs/search/classes_d.js b/docs/search/classes_d.js index a1cd489013..5a8b5f5977 100644 --- a/docs/search/classes_d.js +++ b/docs/search/classes_d.js @@ -6,5 +6,6 @@ var searchData= ['producerconsumerqueue',['ProducerConsumerQueue',['../d5/d02/classedash__packager_1_1media_1_1ProducerConsumerQueue.html',1,'edash_packager::media']]], ['progresslistener',['ProgressListener',['../d9/d2c/classedash__packager_1_1media_1_1ProgressListener.html',1,'edash_packager::media']]], ['protectionschemeinfo',['ProtectionSchemeInfo',['../dd/dc9/structedash__packager_1_1media_1_1mp4_1_1ProtectionSchemeInfo.html',1,'edash_packager::media::mp4']]], - ['protectionsystemspecificheader',['ProtectionSystemSpecificHeader',['../da/d2a/structedash__packager_1_1media_1_1mp4_1_1ProtectionSystemSpecificHeader.html',1,'edash_packager::media::mp4']]] + ['protectionsystemspecificheader',['ProtectionSystemSpecificHeader',['../da/d2a/structedash__packager_1_1media_1_1mp4_1_1ProtectionSystemSpecificHeader.html',1,'edash_packager::media::mp4']]], + ['protectionsystemspecificinfo',['ProtectionSystemSpecificInfo',['../db/da0/classedash__packager_1_1media_1_1ProtectionSystemSpecificInfo.html',1,'edash_packager::media']]] ]; diff --git a/docs/search/functions_2.js b/docs/search/functions_2.js index fe106965c3..242f5d4710 100644 --- a/docs/search/functions_2.js +++ b/docs/search/functions_2.js @@ -21,6 +21,7 @@ var searchData= ['copyfrom',['CopyFrom',['../d8/d6c/classedash__packager_1_1media_1_1MediaSample.html#ac65ec88fbe6d8b72c65b1ff3f68c5b02',1,'edash_packager::media::MediaSample::CopyFrom(const uint8_t *data, size_t size, bool is_key_frame)'],['../d8/d6c/classedash__packager_1_1media_1_1MediaSample.html#a7803f974ab6cdf542be46332598fef56',1,'edash_packager::media::MediaSample::CopyFrom(const uint8_t *data, size_t size, const uint8_t *side_data, size_t side_data_size, bool is_key_frame)']]], ['create',['Create',['../d5/d62/classedash__packager_1_1media_1_1RsaPrivateKey.html#a9360becce7c1e7be0bdecf2ce411b871',1,'edash_packager::media::RsaPrivateKey::Create()'],['../d1/d86/classedash__packager_1_1media_1_1RsaPublicKey.html#a21f9009c9654f141676ef05f0436baa4',1,'edash_packager::media::RsaPublicKey::Create()']]], ['createandinitializesegmenter',['CreateAndInitializeSegmenter',['../d2/d28/classedash__packager_1_1media_1_1SegmentTestBase.html#a850765b5c597b5681e5aa9c534985acf',1,'edash_packager::media::SegmentTestBase']]], + ['createbox',['CreateBox',['../db/da0/classedash__packager_1_1media_1_1ProtectionSystemSpecificInfo.html#af416386e03f4508e332a7a4334dd52e9',1,'edash_packager::media::ProtectionSystemSpecificInfo']]], ['createemptymediasample',['CreateEmptyMediaSample',['../d8/d6c/classedash__packager_1_1media_1_1MediaSample.html#ac30e98c643959047439a3b71baa399ca',1,'edash_packager::media::MediaSample']]], ['createencryptor',['CreateEncryptor',['../d8/d1e/classedash__packager_1_1media_1_1mp4_1_1EncryptingFragmenter.html#a5ed5486f22438e20d0d41524a47f4dd3',1,'edash_packager::media::mp4::EncryptingFragmenter']]], ['createeosbuffer',['CreateEOSBuffer',['../d8/d6c/classedash__packager_1_1media_1_1MediaSample.html#ae449ca4aeea6cacb8c08a56d9652a64e',1,'edash_packager::media::MediaSample']]], diff --git a/docs/search/functions_e.js b/docs/search/functions_e.js index 56cc5cada8..0a436ccec7 100644 --- a/docs/search/functions_e.js +++ b/docs/search/functions_e.js @@ -1,6 +1,7 @@ var searchData= [ - ['parse',['Parse',['../d5/dce/classedash__packager_1_1media_1_1Demuxer.html#adb6c35974c24809c715380a99ac7cc78',1,'edash_packager::media::Demuxer::Parse()'],['../dc/d48/classedash__packager_1_1media_1_1MediaParser.html#a3a70d164d75d6ed8f1ce59490d13beb4',1,'edash_packager::media::MediaParser::Parse()'],['../d8/dfb/classedash__packager_1_1media_1_1DecoderConfiguration.html#a22574190ccc29f66cb79a6ee68640dc5',1,'edash_packager::media::DecoderConfiguration::Parse(const std::vector< uint8_t > &data)'],['../d8/dfb/classedash__packager_1_1media_1_1DecoderConfiguration.html#af5972af71ac7bc672ae072bfd7e5f31a',1,'edash_packager::media::DecoderConfiguration::Parse(const uint8_t *data, size_t data_size)'],['../d5/dce/classedash__packager_1_1media_1_1VP8Parser.html#acee99f651808400222e4dd6b30ab40eb',1,'edash_packager::media::VP8Parser::Parse()'],['../da/d5f/classedash__packager_1_1media_1_1VP9Parser.html#a8b997dee438daade536e8ea189d110ed',1,'edash_packager::media::VP9Parser::Parse()'],['../d7/d85/classedash__packager_1_1media_1_1VPCodecConfiguration.html#a3428d45e1b7c31fc6dd3bef0c8dc46c7',1,'edash_packager::media::VPCodecConfiguration::Parse()'],['../d5/dd2/classedash__packager_1_1media_1_1VPxParser.html#ac65817688bb225757650c305ad4ec10f',1,'edash_packager::media::VPxParser::Parse()'],['../db/d69/classedash__packager_1_1media_1_1mp2t_1_1AdtsHeader.html#a12f7811f1539361980a13517f948f9fb',1,'edash_packager::media::mp2t::AdtsHeader::Parse()'],['../dc/dab/classedash__packager_1_1media_1_1mp2t_1_1Mp2tMediaParser.html#afaf26651a1ae06523f0243e0f73f565b',1,'edash_packager::media::mp2t::Mp2tMediaParser::Parse()'],['../dc/dc6/classedash__packager_1_1media_1_1mp4_1_1AACAudioSpecificConfig.html#a90a58afc9e6b20b9a6909d54f94dafc9',1,'edash_packager::media::mp4::AACAudioSpecificConfig::Parse()'],['../d7/d8a/structedash__packager_1_1media_1_1mp4_1_1Box.html#a7b62a3983faafbea54a32486df60ed96',1,'edash_packager::media::mp4::Box::Parse()'],['../d8/d0d/classedash__packager_1_1media_1_1mp4_1_1MP4MediaParser.html#a2228fd06a2237990b0f9208565f31520',1,'edash_packager::media::mp4::MP4MediaParser::Parse()'],['../db/da0/classedash__packager_1_1media_1_1WebMClusterParser.html#a060661d4a0bfc01543fa025fb4b09a7d',1,'edash_packager::media::WebMClusterParser::Parse()'],['../dd/d47/classedash__packager_1_1media_1_1WebMInfoParser.html#ab2f2dd920214bf7942e374d4c9843243',1,'edash_packager::media::WebMInfoParser::Parse()'],['../dd/d99/classedash__packager_1_1media_1_1WebMMediaParser.html#a41177fc84e98d89cef013cb50b4b44fc',1,'edash_packager::media::WebMMediaParser::Parse()'],['../d6/dd6/classedash__packager_1_1media_1_1WebMListParser.html#a5b3b0c8fd0423044d0090357428b8ee0',1,'edash_packager::media::WebMListParser::Parse()'],['../db/d23/classedash__packager_1_1media_1_1WebMTracksParser.html#a8719ba4bc187c32a73f133c0a67a19ab',1,'edash_packager::media::WebMTracksParser::Parse()'],['../dc/dc8/classedash__packager_1_1media_1_1WebMWebVTTParser.html#a979168b11e59b863de2d3ba3fbb60815',1,'edash_packager::media::WebMWebVTTParser::Parse()'],['../d2/d51/classedash__packager_1_1media_1_1WebVttMediaParser.html#adea6973058b03be69e9f07181e4242de',1,'edash_packager::media::WebVttMediaParser::Parse()'],['../d8/da0/classedash__packager_1_1media_1_1wvm_1_1WvmMediaParser.html#afb93a59f1ed5a174b4c4ef09072667a5',1,'edash_packager::media::wvm::WvmMediaParser::Parse()']]], + ['parse',['Parse',['../d5/dce/classedash__packager_1_1media_1_1Demuxer.html#adb6c35974c24809c715380a99ac7cc78',1,'edash_packager::media::Demuxer::Parse()'],['../dc/d48/classedash__packager_1_1media_1_1MediaParser.html#a3a70d164d75d6ed8f1ce59490d13beb4',1,'edash_packager::media::MediaParser::Parse()'],['../db/da0/classedash__packager_1_1media_1_1ProtectionSystemSpecificInfo.html#a36b22a8a94826ab52276fbccc525d6a1',1,'edash_packager::media::ProtectionSystemSpecificInfo::Parse()'],['../d8/dfb/classedash__packager_1_1media_1_1DecoderConfiguration.html#a22574190ccc29f66cb79a6ee68640dc5',1,'edash_packager::media::DecoderConfiguration::Parse(const std::vector< uint8_t > &data)'],['../d8/dfb/classedash__packager_1_1media_1_1DecoderConfiguration.html#af5972af71ac7bc672ae072bfd7e5f31a',1,'edash_packager::media::DecoderConfiguration::Parse(const uint8_t *data, size_t data_size)'],['../d5/dce/classedash__packager_1_1media_1_1VP8Parser.html#acee99f651808400222e4dd6b30ab40eb',1,'edash_packager::media::VP8Parser::Parse()'],['../da/d5f/classedash__packager_1_1media_1_1VP9Parser.html#a8b997dee438daade536e8ea189d110ed',1,'edash_packager::media::VP9Parser::Parse()'],['../d7/d85/classedash__packager_1_1media_1_1VPCodecConfiguration.html#a3428d45e1b7c31fc6dd3bef0c8dc46c7',1,'edash_packager::media::VPCodecConfiguration::Parse()'],['../d5/dd2/classedash__packager_1_1media_1_1VPxParser.html#ac65817688bb225757650c305ad4ec10f',1,'edash_packager::media::VPxParser::Parse()'],['../db/d69/classedash__packager_1_1media_1_1mp2t_1_1AdtsHeader.html#a12f7811f1539361980a13517f948f9fb',1,'edash_packager::media::mp2t::AdtsHeader::Parse()'],['../dc/dab/classedash__packager_1_1media_1_1mp2t_1_1Mp2tMediaParser.html#afaf26651a1ae06523f0243e0f73f565b',1,'edash_packager::media::mp2t::Mp2tMediaParser::Parse()'],['../dc/dc6/classedash__packager_1_1media_1_1mp4_1_1AACAudioSpecificConfig.html#a90a58afc9e6b20b9a6909d54f94dafc9',1,'edash_packager::media::mp4::AACAudioSpecificConfig::Parse()'],['../d7/d8a/structedash__packager_1_1media_1_1mp4_1_1Box.html#a7b62a3983faafbea54a32486df60ed96',1,'edash_packager::media::mp4::Box::Parse()'],['../d8/d0d/classedash__packager_1_1media_1_1mp4_1_1MP4MediaParser.html#a2228fd06a2237990b0f9208565f31520',1,'edash_packager::media::mp4::MP4MediaParser::Parse()'],['../db/da0/classedash__packager_1_1media_1_1WebMClusterParser.html#a060661d4a0bfc01543fa025fb4b09a7d',1,'edash_packager::media::WebMClusterParser::Parse()'],['../dd/d47/classedash__packager_1_1media_1_1WebMInfoParser.html#ab2f2dd920214bf7942e374d4c9843243',1,'edash_packager::media::WebMInfoParser::Parse()'],['../dd/d99/classedash__packager_1_1media_1_1WebMMediaParser.html#a41177fc84e98d89cef013cb50b4b44fc',1,'edash_packager::media::WebMMediaParser::Parse()'],['../d6/dd6/classedash__packager_1_1media_1_1WebMListParser.html#a5b3b0c8fd0423044d0090357428b8ee0',1,'edash_packager::media::WebMListParser::Parse()'],['../db/d23/classedash__packager_1_1media_1_1WebMTracksParser.html#a8719ba4bc187c32a73f133c0a67a19ab',1,'edash_packager::media::WebMTracksParser::Parse()'],['../dc/dc8/classedash__packager_1_1media_1_1WebMWebVTTParser.html#a979168b11e59b863de2d3ba3fbb60815',1,'edash_packager::media::WebMWebVTTParser::Parse()'],['../d2/d51/classedash__packager_1_1media_1_1WebVttMediaParser.html#adea6973058b03be69e9f07181e4242de',1,'edash_packager::media::WebVttMediaParser::Parse()'],['../d8/da0/classedash__packager_1_1media_1_1wvm_1_1WvmMediaParser.html#afb93a59f1ed5a174b4c4ef09072667a5',1,'edash_packager::media::wvm::WvmMediaParser::Parse()']]], + ['parseboxes',['ParseBoxes',['../db/da0/classedash__packager_1_1media_1_1ProtectionSystemSpecificInfo.html#a81b932254de07b9f586a6ad64cb4e6f1',1,'edash_packager::media::ProtectionSystemSpecificInfo']]], ['parsefrombuffer',['ParseFromBuffer',['../d8/de5/structedash__packager_1_1media_1_1mp4_1_1SampleEncryptionEntry.html#afcdbeb8f08f94028e152668060f3897b',1,'edash_packager::media::mp4::SampleEncryptionEntry']]], ['parsefromsampleencryptiondata',['ParseFromSampleEncryptionData',['../d5/d78/structedash__packager_1_1media_1_1mp4_1_1SampleEncryption.html#af94f8472666f214a83461d09de3a524f',1,'edash_packager::media::mp4::SampleEncryption']]], ['passscopedptr',['PassScopedPtr',['../dd/d85/classedash__packager_1_1xml_1_1XmlNode.html#a903bda1e35b396e8e182b77b5334e5ba',1,'edash_packager::xml::XmlNode']]],