diff --git a/docs/annotated.html b/docs/annotated.html index 4bce5490c1..8a76d16eb4 100644 --- a/docs/annotated.html +++ b/docs/annotated.html @@ -135,73 +135,75 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); |||oCElementaryStreamDescriptor |||oCDTSSpecific |||oCAC3Specific -|||oCAudioSampleEntry -|||oCWebVTTConfigurationBox -|||oCWebVTTSourceLabelBox -|||oCWVTTSampleEntry -|||oCSampleDescription -|||oCDecodingTime -|||oCDecodingTimeToSample -|||oCCompositionOffset -|||oCCompositionTimeToSample -|||oCChunkInfo -|||oCSampleToChunk -|||oCSampleSize -|||oCCompactSampleSize -|||oCChunkLargeOffset -|||oCChunkOffset -|||oCSyncSample -|||oCSampleTable -|||oCMediaHeader -|||oCVideoMediaHeader -|||oCSoundMediaHeader -|||oCSubtitleMediaHeader -|||oCDataEntryUrl -|||oCDataReference -|||oCDataInformation -|||oCMediaInformation -|||oCMedia -|||oCTrack -|||oCMovieExtendsHeader -|||oCTrackExtends -|||oCMovieExtends -|||oCMovie -|||oCTrackFragmentDecodeTime -|||oCMovieFragmentHeader -|||oCTrackFragmentHeader -|||oCTrackFragmentRun -|||oCSampleToGroupEntry -|||oCSampleToGroup -|||oCCencSampleEncryptionInfoEntry -|||oCSampleGroupDescription -|||oCTrackFragment -|||oCMovieFragment -|||oCSegmentReference -|||oCSegmentIndex -|||oCMediaData -|||oCCueSourceIDBox -|||oCCueTimeBox -|||oCCueIDBox -|||oCCueSettingsBox -|||oCCuePayloadBox -|||oCVTTEmptyCueBox -|||oCVTTAdditionalTextBox -|||oCVTTCueBox -|||oCBoxReaderClass for reading MP4 boxes -|||oCChunkInfoIterator -|||oCCompositionOffsetIterator -|||oCDecodingTimeIterator -|||oCEncryptingFragmenterEncryptingFragmenter generates MP4 fragments with sample encrypted -|||oCESDescriptor -|||oCFragmenter -|||oCKeyRotationFragmenter -|||oCMP4MediaParser -|||oCMP4Muxer -|||oCMultiSegmentSegmenter -|||oCSegmenter -|||oCSingleSegmentSegmenter -|||oCSyncSampleIterator -|||\CTrackRunIterator +|||oCIndependentSubstream +|||oCEC3Specific +|||oCAudioSampleEntry +|||oCWebVTTConfigurationBox +|||oCWebVTTSourceLabelBox +|||oCWVTTSampleEntry +|||oCSampleDescription +|||oCDecodingTime +|||oCDecodingTimeToSample +|||oCCompositionOffset +|||oCCompositionTimeToSample +|||oCChunkInfo +|||oCSampleToChunk +|||oCSampleSize +|||oCCompactSampleSize +|||oCChunkLargeOffset +|||oCChunkOffset +|||oCSyncSample +|||oCSampleTable +|||oCMediaHeader +|||oCVideoMediaHeader +|||oCSoundMediaHeader +|||oCSubtitleMediaHeader +|||oCDataEntryUrl +|||oCDataReference +|||oCDataInformation +|||oCMediaInformation +|||oCMedia +|||oCTrack +|||oCMovieExtendsHeader +|||oCTrackExtends +|||oCMovieExtends +|||oCMovie +|||oCTrackFragmentDecodeTime +|||oCMovieFragmentHeader +|||oCTrackFragmentHeader +|||oCTrackFragmentRun +|||oCSampleToGroupEntry +|||oCSampleToGroup +|||oCCencSampleEncryptionInfoEntry +|||oCSampleGroupDescription +|||oCTrackFragment +|||oCMovieFragment +|||oCSegmentReference +|||oCSegmentIndex +|||oCMediaData +|||oCCueSourceIDBox +|||oCCueTimeBox +|||oCCueIDBox +|||oCCueSettingsBox +|||oCCuePayloadBox +|||oCVTTEmptyCueBox +|||oCVTTAdditionalTextBox +|||oCVTTCueBox +|||oCBoxReaderClass for reading MP4 boxes +|||oCChunkInfoIterator +|||oCCompositionOffsetIterator +|||oCDecodingTimeIterator +|||oCEncryptingFragmenterEncryptingFragmenter generates MP4 fragments with sample encrypted +|||oCESDescriptor +|||oCFragmenter +|||oCKeyRotationFragmenter +|||oCMP4MediaParser +|||oCMP4Muxer +|||oCMultiSegmentSegmenter +|||oCSegmenter +|||oCSingleSegmentSegmenter +|||oCSyncSampleIterator +|||\CTrackRunIterator ||oNwebm |||oCEncryptor |||oCMultiSegmentSegmenter @@ -337,7 +339,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/classes.html b/docs/classes.html index 2d34c1c1cd..9b45c719f9 100644 --- a/docs/classes.html +++ b/docs/classes.html @@ -89,88 +89,88 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
A | B | C | D | E | F | H | I | K | L | M | O | P | R | S | T | U | V | W | X
+ + - - - - - + + + + - - - + - + + + - - + - - - - + + - - - - - - - - - + + + + + + + + + + - - - + + + + + - - - - - - - - - - - + + + + + + + + + + - - - - + + + - - + - - - + + + - - - - + +
  A  
-
DataReference (edash_packager::media::mp4)   
  L  
+
DataReference (edash_packager::media::mp4)   KeyRotationFragmenter (edash_packager::media::mp4)   ProtectionSchemeInfo (edash_packager::media::mp4)   TrackFragment (edash_packager::media::mp4)   
DecodingTime (edash_packager::media::mp4)   KeySource (edash_packager::media)   ProtectionSystemSpecificHeader (edash_packager::media::mp4)   TrackFragmentDecodeTime (edash_packager::media::mp4)   
AACAudioSpecificConfig (edash_packager::media::mp4)   DecodingTimeIterator (edash_packager::media::mp4)   
  L  
  R  
TrackFragmentHeader (edash_packager::media::mp4)   
DecodingTime (edash_packager::media::mp4)   TrackFragmentRun (edash_packager::media::mp4)   
AACAudioSpecificConfig (edash_packager::media::mp4)   DecodingTimeIterator (edash_packager::media::mp4)   Language (edash_packager::media::mp4)   Representation (edash_packager)   TrackHeader (edash_packager::media::mp4)   
AC3Specific (edash_packager::media::mp4)   DecodingTimeToSample (edash_packager::media::mp4)   LibcryptoThreading (edash_packager::media)   RepresentationBaseXmlNode (edash_packager::xml)   TrackRunIterator (edash_packager::media::mp4)   
AdaptationSet (edash_packager)   DecryptConfig (edash_packager::media)   LocalFile (edash_packager::media)   RepresentationStateChangeListener (edash_packager)   TracksBuilder (edash_packager::media)   
AdaptationSetXmlNode (edash_packager::xml)   DecryptorSource (edash_packager::media)   
  M  
+
AC3Specific (edash_packager::media::mp4)   DecodingTimeToSample (edash_packager::media::mp4)   TrackFragmentRun (edash_packager::media::mp4)   
AdaptationSet (edash_packager)   DecryptConfig (edash_packager::media)   Language (edash_packager::media::mp4)   Representation (edash_packager)   TrackHeader (edash_packager::media::mp4)   
AdaptationSetXmlNode (edash_packager::xml)   DecryptorSource (edash_packager::media)   LibcryptoThreading (edash_packager::media)   RepresentationBaseXmlNode (edash_packager::xml)   TrackRunIterator (edash_packager::media::mp4)   
AdtsHeader (edash_packager::media::mp2t)   Demuxer (edash_packager::media)   LocalFile (edash_packager::media)   RepresentationStateChangeListener (edash_packager)   TracksBuilder (edash_packager::media)   
AesCbcCtsDecryptor (edash_packager::media)   DemuxStreamIdMediaSample (edash_packager::media::wvm)   
  M  
RepresentationXmlNode (edash_packager::xml)   TsPacket (edash_packager::media::mp2t)   
AdtsHeader (edash_packager::media::mp2t)   Demuxer (edash_packager::media)   RequestSigner (edash_packager::media)   TsSection (edash_packager::media::mp2t)   
AesCbcCtsDecryptor (edash_packager::media)   DemuxStreamIdMediaSample (edash_packager::media::wvm)   Media (edash_packager::media::mp4)   RsaPrivateKey (edash_packager::media)   TsSectionPat (edash_packager::media::mp2t)   
AesCbcCtsEncryptor (edash_packager::media)   DTSSpecific (edash_packager::media::mp4)   MediaData (edash_packager::media::mp4)   RsaPublicKey (edash_packager::media)   TsSectionPes (edash_packager::media::mp2t)   
AesCbcCtsEncryptor (edash_packager::media)   DTSSpecific (edash_packager::media::mp4)   RequestSigner (edash_packager::media)   TsSection (edash_packager::media::mp2t)   
AesCbcPkcs5Decryptor (edash_packager::media)   
  E  
-
MediaHeader (edash_packager::media::mp4)   RsaRequestSigner (edash_packager::media)   TsSectionPmt (edash_packager::media::mp2t)   
AesCbcPkcs5Encryptor (edash_packager::media)   MediaInformation (edash_packager::media::mp4)   
  S  
+
Media (edash_packager::media::mp4)   RsaPrivateKey (edash_packager::media)   TsSectionPat (edash_packager::media::mp2t)   
AesCbcPkcs5Encryptor (edash_packager::media)   MediaData (edash_packager::media::mp4)   RsaPublicKey (edash_packager::media)   TsSectionPes (edash_packager::media::mp2t)   
AesCtrEncryptor (edash_packager::media)   EC3Specific (edash_packager::media::mp4)   MediaHeader (edash_packager::media::mp4)   RsaRequestSigner (edash_packager::media)   TsSectionPmt (edash_packager::media::mp2t)   
AesRequestSigner (edash_packager::media)   Edit (edash_packager::media::mp4)   MediaInformation (edash_packager::media::mp4)   
  S  
TsSectionPsi (edash_packager::media::mp2t)   
AesCtrEncryptor (edash_packager::media)   Edit (edash_packager::media::mp4)   MediaParser (edash_packager::media)   TwoPassSingleSegmentSegmenter (edash_packager::media::webm)   
AesRequestSigner (edash_packager::media)   EditList (edash_packager::media::mp4)   MediaSample (edash_packager::media)   SampleAuxiliaryInformationOffset (edash_packager::media::mp4)   
  U  
+
AudioSampleEntry (edash_packager::media::mp4)   EditList (edash_packager::media::mp4)   MediaParser (edash_packager::media)   TwoPassSingleSegmentSegmenter (edash_packager::media::webm)   
AudioStreamInfo (edash_packager::media)   EditListEntry (edash_packager::media::mp4)   MediaSample (edash_packager::media)   SampleAuxiliaryInformationOffset (edash_packager::media::mp4)   
  U  
AudioSampleEntry (edash_packager::media::mp4)   EditListEntry (edash_packager::media::mp4)   MediaStream (edash_packager::media)   SampleAuxiliaryInformationSize (edash_packager::media::mp4)   
AudioStreamInfo (edash_packager::media)   Element (edash_packager)   MemoryFile (edash_packager::media)   SampleDescription (edash_packager::media::mp4)   UdpFile (edash_packager::media)   
AudioTimestampHelper (edash_packager::media)   ElementaryStreamDescriptor (edash_packager::media::mp4)   Metadata (edash_packager::media::mp4)   SampleEncryption (edash_packager::media::mp4)   
  V  
-
AVCDecoderConfiguration (edash_packager::media)   EncryptingFragmenter (edash_packager::media::mp4)   MkvWriter (edash_packager::media)   SampleEncryptionEntry (edash_packager::media::mp4)   
AudioTimestampHelper (edash_packager::media)   Element (edash_packager)   MediaStream (edash_packager::media)   SampleAuxiliaryInformationSize (edash_packager::media::mp4)   
AVCDecoderConfiguration (edash_packager::media)   ElementaryStreamDescriptor (edash_packager::media::mp4)   MemoryFile (edash_packager::media)   SampleDescription (edash_packager::media::mp4)   UdpFile (edash_packager::media)   
  B  
-
EncryptionKey (edash_packager::media)   MockAdaptationSet (edash_packager)   SampleGroupDescription (edash_packager::media::mp4)   VideoMediaHeader (edash_packager::media::mp4)   
Encryptor (edash_packager::media::webm)   MockMpdBuilder (edash_packager)   SampleSize (edash_packager::media::mp4)   VideoSampleEntry (edash_packager::media::mp4)   
BandwidthEstimator   ESDescriptor (edash_packager::media::mp4)   MockMpdNotifier (edash_packager)   SampleTable (edash_packager::media::mp4)   VideoStreamInfo (edash_packager::media)   
BitReader (edash_packager::media)   EsParser (edash_packager::media::mp2t)   MockRepresentation (edash_packager)   SampleToChunk (edash_packager::media::mp4)   VideoStreamInfoParameters (edash_packager::media)   
Box (edash_packager::media::mp4)   EsParserAdts (edash_packager::media::mp2t)   Movie (edash_packager::media::mp4)   SampleToGroup (edash_packager::media::mp4)   VodMediaInfoDumpMuxerListener (edash_packager::media)   
BoxBuffer (edash_packager::media::mp4)   EsParserH264 (edash_packager::media::mp2t)   MovieExtends (edash_packager::media::mp4)   SampleToGroupEntry (edash_packager::media::mp4)   VP8Parser (edash_packager::media)   
BoxReader (edash_packager::media::mp4)   
  F  
-
MovieExtendsHeader (edash_packager::media::mp4)   SchemeInfo (edash_packager::media::mp4)   VP9Parser (edash_packager::media)   
BufferReader (edash_packager::media)   MovieFragment (edash_packager::media::mp4)   SchemeType (edash_packager::media::mp4)   VPCodecConfiguration (edash_packager::media)   
BufferWriter (edash_packager::media)   File (edash_packager::media)   MovieFragmentHeader (edash_packager::media::mp4)   SeekHead (edash_packager::media)   VPxFrameInfo (edash_packager::media)   
ByteQueue (edash_packager::media)   FileCloser (edash_packager::media)   MovieHeader (edash_packager::media::mp4)   Segmenter (edash_packager::media::mp4)   VPxParser (edash_packager::media)   
EncryptingFragmenter (edash_packager::media::mp4)   Metadata (edash_packager::media::mp4)   SampleEncryption (edash_packager::media::mp4)   
  V  
+
EncryptionKey (edash_packager::media)   MkvWriter (edash_packager::media)   SampleEncryptionEntry (edash_packager::media::mp4)   
BandwidthEstimator   Encryptor (edash_packager::media::webm)   MockAdaptationSet (edash_packager)   SampleGroupDescription (edash_packager::media::mp4)   VideoMediaHeader (edash_packager::media::mp4)   
BitReader (edash_packager::media)   ESDescriptor (edash_packager::media::mp4)   MockMpdBuilder (edash_packager)   SampleSize (edash_packager::media::mp4)   VideoSampleEntry (edash_packager::media::mp4)   
Box (edash_packager::media::mp4)   EsParser (edash_packager::media::mp2t)   MockMpdNotifier (edash_packager)   SampleTable (edash_packager::media::mp4)   VideoStreamInfo (edash_packager::media)   
BoxBuffer (edash_packager::media::mp4)   EsParserAdts (edash_packager::media::mp2t)   MockRepresentation (edash_packager)   SampleToChunk (edash_packager::media::mp4)   VideoStreamInfoParameters (edash_packager::media)   
BoxReader (edash_packager::media::mp4)   EsParserH264 (edash_packager::media::mp2t)   Movie (edash_packager::media::mp4)   SampleToGroup (edash_packager::media::mp4)   VodMediaInfoDumpMuxerListener (edash_packager::media)   
BufferReader (edash_packager::media)   
  F  
+
MovieExtends (edash_packager::media::mp4)   SampleToGroupEntry (edash_packager::media::mp4)   VP8Parser (edash_packager::media)   
BufferWriter (edash_packager::media)   MovieExtendsHeader (edash_packager::media::mp4)   SchemeInfo (edash_packager::media::mp4)   VP9Parser (edash_packager::media)   
ByteQueue (edash_packager::media)   File (edash_packager::media)   MovieFragment (edash_packager::media::mp4)   SchemeType (edash_packager::media::mp4)   VPCodecConfiguration (edash_packager::media)   
  C  
-
FileType (edash_packager::media::mp4)   Mp2tMediaParser (edash_packager::media::mp2t)   Segmenter (edash_packager::media::webm)   VTTAdditionalTextBox (edash_packager::media::mp4)   
Fragmenter (edash_packager::media::mp4)   MP4MediaParser (edash_packager::media::mp4)   SegmentIndex (edash_packager::media::mp4)   VTTCueBox (edash_packager::media::mp4)   
CencSampleEncryptionInfoEntry (edash_packager::media::mp4)   FullBox (edash_packager::media::mp4)   MP4Muxer (edash_packager::media::mp4)   SegmentInfo (edash_packager)   VTTEmptyCueBox (edash_packager::media::mp4)   
ChunkInfo (edash_packager::media::mp4)   
  H  
-
MpdBuilder (edash_packager)   SegmentReference (edash_packager::media::mp4)   
  W  
+
FileCloser (edash_packager::media)   MovieFragmentHeader (edash_packager::media::mp4)   SeekHead (edash_packager::media)   VPxFrameInfo (edash_packager::media)   
FileType (edash_packager::media::mp4)   MovieHeader (edash_packager::media::mp4)   Segmenter (edash_packager::media::mp4)   VPxParser (edash_packager::media)   
CencSampleEncryptionInfoEntry (edash_packager::media::mp4)   Fragmenter (edash_packager::media::mp4)   Mp2tMediaParser (edash_packager::media::mp2t)   Segmenter (edash_packager::media::webm)   VTTAdditionalTextBox (edash_packager::media::mp4)   
ChunkInfo (edash_packager::media::mp4)   FullBox (edash_packager::media::mp4)   MP4MediaParser (edash_packager::media::mp4)   SegmentIndex (edash_packager::media::mp4)   VTTCueBox (edash_packager::media::mp4)   
ChunkInfoIterator (edash_packager::media::mp4)   
  H  
+
MP4Muxer (edash_packager::media::mp4)   SegmentInfo (edash_packager)   VTTEmptyCueBox (edash_packager::media::mp4)   
ChunkLargeOffset (edash_packager::media::mp4)   MpdBuilder (edash_packager)   SegmentReference (edash_packager::media::mp4)   
  W  
ChunkInfoIterator (edash_packager::media::mp4)   MpdNotifier (edash_packager)   SegmentTestBase (edash_packager::media)   
ChunkLargeOffset (edash_packager::media::mp4)   H264BitReader (edash_packager::media)   MpdNotifierFactory (edash_packager)   SegmentType (edash_packager::media::mp4)   WebMAudioClient (edash_packager::media)   
ChunkOffset (edash_packager::media::mp4)   H264ByteToUnitStreamConverter (edash_packager::media)   MpdNotifyMuxerListener (edash_packager::media)   SimpleMpdNotifier (edash_packager)   WebMClusterParser (edash_packager::media)   
ClosureThread (edash_packager::media)   H264DecRefPicMarking (edash_packager::media)   MpdOptions (edash_packager)   SingleSegmentSegmenter (edash_packager::media::mp4)   WebMContentEncodingsClient (edash_packager::media)   
Cluster (edash_packager::media)   H264ModificationOfPicNum (edash_packager::media)   MpdWriter (edash_packager)   SingleSegmentSegmenter (edash_packager::media::webm)   WebMInfoParser (edash_packager::media)   
ClusterBuilder (edash_packager::media)   H264NALU (edash_packager::media)   MultiSegmentSegmenter (edash_packager::media::mp4)   SoundMediaHeader (edash_packager::media::mp4)   WebMListParser (edash_packager::media)   
SegmentTestBase::ClusterParser (edash_packager::media)   H264Parser (edash_packager::media)   MultiSegmentSegmenter (edash_packager::media::webm)   Status (edash_packager::media)   WebMMediaParser (edash_packager::media)   
CodecConfigurationRecord (edash_packager::media::mp4)   H264PPS (edash_packager::media)   Muxer (edash_packager::media)   StreamDescriptor (edash_packager::media)   WebMMuxer (edash_packager::media::webm)   
CompactSampleSize (edash_packager::media::mp4)   H264SEIMessage (edash_packager::media)   MuxerListener (edash_packager::media)   StreamDescriptorCompareFn (edash_packager::media)   WebMParserClient (edash_packager::media)   
CompositionOffset (edash_packager::media::mp4)   H264SEIRecoveryPoint (edash_packager::media)   MuxerOptions (edash_packager::media)   StreamInfo (edash_packager::media)   WebMTracksParser (edash_packager::media)   
CompositionOffsetIterator (edash_packager::media::mp4)   H264SliceHeader (edash_packager::media)   
  O  
+
ChunkOffset (edash_packager::media::mp4)   H264BitReader (edash_packager::media)   MpdNotifier (edash_packager)   SegmentTestBase (edash_packager::media)   
ClosureThread (edash_packager::media)   H264ByteToUnitStreamConverter (edash_packager::media)   MpdNotifierFactory (edash_packager)   SegmentType (edash_packager::media::mp4)   WebMAudioClient (edash_packager::media)   
Cluster (edash_packager::media)   H264DecRefPicMarking (edash_packager::media)   MpdNotifyMuxerListener (edash_packager::media)   SimpleMpdNotifier (edash_packager)   WebMClusterParser (edash_packager::media)   
ClusterBuilder (edash_packager::media)   H264ModificationOfPicNum (edash_packager::media)   MpdOptions (edash_packager)   SingleSegmentSegmenter (edash_packager::media::webm)   WebMContentEncodingsClient (edash_packager::media)   
SegmentTestBase::ClusterParser (edash_packager::media)   H264NALU (edash_packager::media)   MpdWriter (edash_packager)   SingleSegmentSegmenter (edash_packager::media::mp4)   WebMInfoParser (edash_packager::media)   
CodecConfigurationRecord (edash_packager::media::mp4)   H264Parser (edash_packager::media)   MultiSegmentSegmenter (edash_packager::media::webm)   SoundMediaHeader (edash_packager::media::mp4)   WebMListParser (edash_packager::media)   
CompactSampleSize (edash_packager::media::mp4)   H264PPS (edash_packager::media)   MultiSegmentSegmenter (edash_packager::media::mp4)   Status (edash_packager::media)   WebMMediaParser (edash_packager::media)   
CompositionOffset (edash_packager::media::mp4)   H264SEIMessage (edash_packager::media)   Muxer (edash_packager::media)   StreamDescriptor (edash_packager::media)   WebMMuxer (edash_packager::media::webm)   
CompositionOffsetIterator (edash_packager::media::mp4)   H264SEIRecoveryPoint (edash_packager::media)   MuxerListener (edash_packager::media)   StreamDescriptorCompareFn (edash_packager::media)   WebMParserClient (edash_packager::media)   
CompositionTimeToSample (edash_packager::media::mp4)   H264SliceHeader (edash_packager::media)   MuxerOptions (edash_packager::media)   StreamInfo (edash_packager::media)   WebMTracksParser (edash_packager::media)   
ContentEncoding (edash_packager::media)   H264SPS (edash_packager::media)   
  O  
SubsampleEntry (edash_packager::media)   WebMVideoClient (edash_packager::media)   
CompositionTimeToSample (edash_packager::media::mp4)   H264SPS (edash_packager::media)   SubtitleMediaHeader (edash_packager::media::mp4)   WebMWebVTTParser (edash_packager::media)   
ContentEncoding (edash_packager::media)   H264WeightingFactors (edash_packager::media)   OffsetByteQueue (edash_packager::media)   SyncSample (edash_packager::media::mp4)   WebVTTConfigurationBox (edash_packager::media::mp4)   
ContentProtectionElement (edash_packager)   HandlerReference (edash_packager::media::mp4)   OnMediaEndParameters (edash_packager::media)   SyncSampleIterator (edash_packager::media::mp4)   WebVttMediaParser (edash_packager::media)   
Cue (edash_packager::media)   HEVCDecoderConfiguration (edash_packager::media)   OpusPacket (edash_packager::media)   
  T  
+
ContentProtectionElement (edash_packager)   H264WeightingFactors (edash_packager::media)   SubtitleMediaHeader (edash_packager::media::mp4)   WebMWebVTTParser (edash_packager::media)   
Cue (edash_packager::media)   HandlerReference (edash_packager::media::mp4)   OffsetByteQueue (edash_packager::media)   SyncSample (edash_packager::media::mp4)   WebVTTConfigurationBox (edash_packager::media::mp4)   
CueIDBox (edash_packager::media::mp4)   HEVCDecoderConfiguration (edash_packager::media)   OnMediaEndParameters (edash_packager::media)   SyncSampleIterator (edash_packager::media::mp4)   WebVttMediaParser (edash_packager::media)   
CuePayloadBox (edash_packager::media::mp4)   HttpKeyFetcher (edash_packager::media)   OpusPacket (edash_packager::media)   
  T  
WebVTTSourceLabelBox (edash_packager::media::mp4)   
CueIDBox (edash_packager::media::mp4)   HttpKeyFetcher (edash_packager::media)   OriginalFormat (edash_packager::media::mp4)   WidevineKeySource (edash_packager::media)   
CuePayloadBox (edash_packager::media::mp4)   
  I  
-
  P  
+
CueSettingsBox (edash_packager::media::mp4)   
  I  
+
OriginalFormat (edash_packager::media::mp4)   WidevineKeySource (edash_packager::media)   
CueSourceIDBox (edash_packager::media::mp4)   
  P  
TextStreamInfo (edash_packager::media)   WvmMediaParser (edash_packager::media::wvm)   
CueSettingsBox (edash_packager::media::mp4)   TextTrack (edash_packager::media)   WVTTSampleEntry (edash_packager::media::mp4)   
CueSourceIDBox (edash_packager::media::mp4)   ID3v2 (edash_packager::media::mp4)   PixelAspectRatio (edash_packager::media::mp4)   TextTrackConfig (edash_packager::media)   
  X  
-
CueTimeBox (edash_packager::media::mp4)   IoCache (edash_packager::media)   PrevSampleData (edash_packager::media::wvm)   ThreadedIoFile (edash_packager::media)   
CueTimeBox (edash_packager::media::mp4)   ID3v2 (edash_packager::media::mp4)   TextTrack (edash_packager::media)   WVTTSampleEntry (edash_packager::media::mp4)   
  D  
-
  K  
+
IndependentSubstream (edash_packager::media::mp4)   PixelAspectRatio (edash_packager::media::mp4)   TextTrackConfig (edash_packager::media)   
  X  
+
IoCache (edash_packager::media)   PrevSampleData (edash_packager::media::wvm)   ThreadedIoFile (edash_packager::media)   
DashIopMpdNotifier (edash_packager)   
  K  
PrivFrame (edash_packager::media::mp4)   Track (edash_packager::media::mp4)   XmlDeleter (edash_packager::xml)   
ProducerConsumerQueue (edash_packager::media)   TrackEncryption (edash_packager::media::mp4)   XmlNode (edash_packager::xml)   
DashIopMpdNotifier (edash_packager)   KeyFetcher (edash_packager::media)   ProgressListener (edash_packager::media)   TrackExtends (edash_packager::media::mp4)   
DataEntryUrl (edash_packager::media::mp4)   KeyRotationFragmenter (edash_packager::media::mp4)   ProtectionSchemeInfo (edash_packager::media::mp4)   TrackFragment (edash_packager::media::mp4)   
DataInformation (edash_packager::media::mp4)   KeySource (edash_packager::media)   ProtectionSystemSpecificHeader (edash_packager::media::mp4)   TrackFragmentDecodeTime (edash_packager::media::mp4)   
DataEntryUrl (edash_packager::media::mp4)   ProducerConsumerQueue (edash_packager::media)   TrackEncryption (edash_packager::media::mp4)   XmlNode (edash_packager::xml)   
DataInformation (edash_packager::media::mp4)   KeyFetcher (edash_packager::media)   ProgressListener (edash_packager::media)   TrackExtends (edash_packager::media::mp4)   
A | B | C | D | E | F | H | I | K | L | M | 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 4da77e5325..97fa79c45f 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 4f632810a0..f89b6c737d 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 ff9a16a53b..8fa4f73b0c 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 48a62a8675..1b8e0c6a4c 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 61c16c07d1..bc0e832b38 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 4b6eacb50f..f9b296776c 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 9e91314adb..83366aab70 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 bc37e041fd..f0a6ff6ba7 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 db26655abb..dc9af64c55 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 90f9db71ab..c8c75fe23e 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 9afba95591..3670f8f7ef 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 e566fe434e..e3eef7e788 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 f1decf1b8d..05f0856b2d 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 6cecf819eb..44cc28db34 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 d23c1bdf85..0236490556 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 80ee3b4e5c..b195c31910 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 517c5a052e..6e99008d1f 100644 --- a/docs/d0/d46/fourccs_8h_source.html +++ b/docs/d0/d46/fourccs_8h_source.html @@ -115,127 +115,129 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
26  FOURCC_DAC3 = 0x64616333,
27  FOURCC_DASH = 0x64617368,
28  FOURCC_DDTS = 0x64647473,
-
29  FOURCC_DINF = 0x64696e66,
-
30  FOURCC_DREF = 0x64726566,
-
31  FOURCC_DTSC = 0x64747363,
-
32  FOURCC_DTSE = 0x64747365,
-
33  FOURCC_DTSH = 0x64747368,
-
34  FOURCC_DTSL = 0x6474736c,
-
35  FOURCC_DTSM = 0x6474732d,
-
36  FOURCC_DTSP = 0x6474732b,
-
37  FOURCC_EDTS = 0x65647473,
-
38  FOURCC_ELST = 0x656c7374,
-
39  FOURCC_ENCA = 0x656e6361,
-
40  FOURCC_ENCV = 0x656e6376,
-
41  FOURCC_ESDS = 0x65736473,
-
42  FOURCC_FREE = 0x66726565,
-
43  FOURCC_FRMA = 0x66726d61,
-
44  FOURCC_FTYP = 0x66747970,
-
45  FOURCC_HDLR = 0x68646c72,
-
46  FOURCC_HEV1 = 0x68657631,
-
47  FOURCC_HINT = 0x68696e74,
-
48  FOURCC_HVC1 = 0x68766331,
-
49  FOURCC_HVCC = 0x68766343,
-
50  FOURCC_ISO6 = 0x69736f36,
-
51  FOURCC_IODS = 0x696f6473,
-
52  FOURCC_MDAT = 0x6d646174,
-
53  FOURCC_MDHD = 0x6d646864,
-
54  FOURCC_MDIA = 0x6d646961,
-
55  FOURCC_MECO = 0x6d65636f,
-
56  FOURCC_MEHD = 0x6d656864,
-
57  FOURCC_META = 0x6d657461,
-
58  FOURCC_MFHD = 0x6d666864,
-
59  FOURCC_MFRA = 0x6d667261,
-
60  FOURCC_MINF = 0x6d696e66,
-
61  FOURCC_MOOF = 0x6d6f6f66,
-
62  FOURCC_MOOV = 0x6d6f6f76,
-
63  FOURCC_MP41 = 0x6d703431,
-
64  FOURCC_MP4A = 0x6d703461,
-
65  FOURCC_MP4V = 0x6d703476,
-
66  FOURCC_MVEX = 0x6d766578,
-
67  FOURCC_MVHD = 0x6d766864,
-
68  FOURCC_PASP = 0x70617370,
-
69  FOURCC_PDIN = 0x7064696e,
-
70  FOURCC_PRFT = 0x70726674,
-
71  FOURCC_PSSH = 0x70737368,
-
72  FOURCC_SAIO = 0x7361696f,
-
73  FOURCC_SAIZ = 0x7361697a,
-
74  FOURCC_SBGP = 0x73626770,
-
75  FOURCC_SCHI = 0x73636869,
-
76  FOURCC_SCHM = 0x7363686d,
-
77  FOURCC_SDTP = 0x73647470,
-
78  FOURCC_SEIG = 0x73656967,
-
79  FOURCC_SENC = 0x73656e63,
-
80  FOURCC_SGPD = 0x73677064,
-
81  FOURCC_SIDX = 0x73696478,
-
82  FOURCC_SINF = 0x73696e66,
-
83  FOURCC_SKIP = 0x736b6970,
-
84  FOURCC_SMHD = 0x736d6864,
-
85  FOURCC_SOUN = 0x736f756e,
-
86  FOURCC_SSIX = 0x73736978,
-
87  FOURCC_STBL = 0x7374626c,
-
88  FOURCC_STCO = 0x7374636f,
-
89  FOURCC_STSC = 0x73747363,
-
90  FOURCC_STSD = 0x73747364,
-
91  FOURCC_STSS = 0x73747373,
-
92  FOURCC_STSZ = 0x7374737a,
-
93  FOURCC_STTS = 0x73747473,
-
94  FOURCC_STYP = 0x73747970,
-
95  FOURCC_STZ2 = 0x73747a32,
-
96  FOURCC_SUBT = 0x73756274,
-
97  FOURCC_TENC = 0x74656e63,
-
98  FOURCC_TEXT = 0x74657874,
-
99  FOURCC_TFDT = 0x74666474,
-
100  FOURCC_TFHD = 0x74666864,
-
101  FOURCC_TKHD = 0x746b6864,
-
102  FOURCC_TRAF = 0x74726166,
-
103  FOURCC_TRAK = 0x7472616b,
-
104  FOURCC_TREX = 0x74726578,
-
105  FOURCC_TRUN = 0x7472756e,
-
106  FOURCC_UDTA = 0x75647461,
-
107  FOURCC_URL = 0x75726c20,
-
108  FOURCC_URN = 0x75726e20,
-
109  FOURCC_UUID = 0x75756964,
-
110  FOURCC_VIDE = 0x76696465,
-
111  FOURCC_VMHD = 0x766d6864,
-
112  FOURCC_VP08 = 0x76703038,
-
113  FOURCC_VP09 = 0x76703039,
-
114  FOURCC_VP10 = 0x76703130,
-
115  FOURCC_VPCC = 0x76706343,
-
116  FOURCC_WIDE = 0x77696465,
-
117  FOURCC_ctim = 0x6374696d,
-
118  FOURCC_iden = 0x6964656e,
-
119  FOURCC_payl = 0x7061796c,
-
120  FOURCC_sthd = 0x73746864,
-
121  FOURCC_sttg = 0x73747467,
-
122  FOURCC_vlab = 0x766c6162,
-
123  FOURCC_vsid = 0x76736964,
-
124  FOURCC_vttC = 0x76747443,
-
125  FOURCC_vtta = 0x76747461,
-
126  FOURCC_vttc = 0x76747463,
-
127  FOURCC_vtte = 0x76747465,
-
128  FOURCC_wvtt = 0x77767474,
-
129 };
-
130 
-
131 const inline std::string FourCCToString(FourCC fourcc) {
-
132  char buf[5];
-
133  buf[0] = (fourcc >> 24) & 0xff;
-
134  buf[1] = (fourcc >> 16) & 0xff;
-
135  buf[2] = (fourcc >> 8) & 0xff;
-
136  buf[3] = (fourcc) & 0xff;
-
137  buf[4] = 0;
-
138  return std::string(buf);
-
139 }
-
140 
-
141 } // namespace mp4
-
142 } // namespace media
-
143 } // namespace edash_packager
-
144 
-
145 #endif // MEDIA_FORMATS_MP4_FOURCCS_H_
+
29  FOURCC_DEC3 = 0x64656333,
+
30  FOURCC_DINF = 0x64696e66,
+
31  FOURCC_DREF = 0x64726566,
+
32  FOURCC_DTSC = 0x64747363,
+
33  FOURCC_DTSE = 0x64747365,
+
34  FOURCC_DTSH = 0x64747368,
+
35  FOURCC_DTSL = 0x6474736c,
+
36  FOURCC_DTSM = 0x6474732d,
+
37  FOURCC_DTSP = 0x6474732b,
+
38  FOURCC_EAC3 = 0x65632d33, // This fourcc is "ec-3".
+
39  FOURCC_EDTS = 0x65647473,
+
40  FOURCC_ELST = 0x656c7374,
+
41  FOURCC_ENCA = 0x656e6361,
+
42  FOURCC_ENCV = 0x656e6376,
+
43  FOURCC_ESDS = 0x65736473,
+
44  FOURCC_FREE = 0x66726565,
+
45  FOURCC_FRMA = 0x66726d61,
+
46  FOURCC_FTYP = 0x66747970,
+
47  FOURCC_HDLR = 0x68646c72,
+
48  FOURCC_HEV1 = 0x68657631,
+
49  FOURCC_HINT = 0x68696e74,
+
50  FOURCC_HVC1 = 0x68766331,
+
51  FOURCC_HVCC = 0x68766343,
+
52  FOURCC_ISO6 = 0x69736f36,
+
53  FOURCC_IODS = 0x696f6473,
+
54  FOURCC_MDAT = 0x6d646174,
+
55  FOURCC_MDHD = 0x6d646864,
+
56  FOURCC_MDIA = 0x6d646961,
+
57  FOURCC_MECO = 0x6d65636f,
+
58  FOURCC_MEHD = 0x6d656864,
+
59  FOURCC_META = 0x6d657461,
+
60  FOURCC_MFHD = 0x6d666864,
+
61  FOURCC_MFRA = 0x6d667261,
+
62  FOURCC_MINF = 0x6d696e66,
+
63  FOURCC_MOOF = 0x6d6f6f66,
+
64  FOURCC_MOOV = 0x6d6f6f76,
+
65  FOURCC_MP41 = 0x6d703431,
+
66  FOURCC_MP4A = 0x6d703461,
+
67  FOURCC_MP4V = 0x6d703476,
+
68  FOURCC_MVEX = 0x6d766578,
+
69  FOURCC_MVHD = 0x6d766864,
+
70  FOURCC_PASP = 0x70617370,
+
71  FOURCC_PDIN = 0x7064696e,
+
72  FOURCC_PRFT = 0x70726674,
+
73  FOURCC_PSSH = 0x70737368,
+
74  FOURCC_SAIO = 0x7361696f,
+
75  FOURCC_SAIZ = 0x7361697a,
+
76  FOURCC_SBGP = 0x73626770,
+
77  FOURCC_SCHI = 0x73636869,
+
78  FOURCC_SCHM = 0x7363686d,
+
79  FOURCC_SDTP = 0x73647470,
+
80  FOURCC_SEIG = 0x73656967,
+
81  FOURCC_SENC = 0x73656e63,
+
82  FOURCC_SGPD = 0x73677064,
+
83  FOURCC_SIDX = 0x73696478,
+
84  FOURCC_SINF = 0x73696e66,
+
85  FOURCC_SKIP = 0x736b6970,
+
86  FOURCC_SMHD = 0x736d6864,
+
87  FOURCC_SOUN = 0x736f756e,
+
88  FOURCC_SSIX = 0x73736978,
+
89  FOURCC_STBL = 0x7374626c,
+
90  FOURCC_STCO = 0x7374636f,
+
91  FOURCC_STSC = 0x73747363,
+
92  FOURCC_STSD = 0x73747364,
+
93  FOURCC_STSS = 0x73747373,
+
94  FOURCC_STSZ = 0x7374737a,
+
95  FOURCC_STTS = 0x73747473,
+
96  FOURCC_STYP = 0x73747970,
+
97  FOURCC_STZ2 = 0x73747a32,
+
98  FOURCC_SUBT = 0x73756274,
+
99  FOURCC_TENC = 0x74656e63,
+
100  FOURCC_TEXT = 0x74657874,
+
101  FOURCC_TFDT = 0x74666474,
+
102  FOURCC_TFHD = 0x74666864,
+
103  FOURCC_TKHD = 0x746b6864,
+
104  FOURCC_TRAF = 0x74726166,
+
105  FOURCC_TRAK = 0x7472616b,
+
106  FOURCC_TREX = 0x74726578,
+
107  FOURCC_TRUN = 0x7472756e,
+
108  FOURCC_UDTA = 0x75647461,
+
109  FOURCC_URL = 0x75726c20,
+
110  FOURCC_URN = 0x75726e20,
+
111  FOURCC_UUID = 0x75756964,
+
112  FOURCC_VIDE = 0x76696465,
+
113  FOURCC_VMHD = 0x766d6864,
+
114  FOURCC_VP08 = 0x76703038,
+
115  FOURCC_VP09 = 0x76703039,
+
116  FOURCC_VP10 = 0x76703130,
+
117  FOURCC_VPCC = 0x76706343,
+
118  FOURCC_WIDE = 0x77696465,
+
119  FOURCC_ctim = 0x6374696d,
+
120  FOURCC_iden = 0x6964656e,
+
121  FOURCC_payl = 0x7061796c,
+
122  FOURCC_sthd = 0x73746864,
+
123  FOURCC_sttg = 0x73747467,
+
124  FOURCC_vlab = 0x766c6162,
+
125  FOURCC_vsid = 0x76736964,
+
126  FOURCC_vttC = 0x76747443,
+
127  FOURCC_vtta = 0x76747461,
+
128  FOURCC_vttc = 0x76747463,
+
129  FOURCC_vtte = 0x76747465,
+
130  FOURCC_wvtt = 0x77767474,
+
131 };
+
132 
+
133 const inline std::string FourCCToString(FourCC fourcc) {
+
134  char buf[5];
+
135  buf[0] = (fourcc >> 24) & 0xff;
+
136  buf[1] = (fourcc >> 16) & 0xff;
+
137  buf[2] = (fourcc >> 8) & 0xff;
+
138  buf[3] = (fourcc) & 0xff;
+
139  buf[4] = 0;
+
140  return std::string(buf);
+
141 }
+
142 
+
143 } // namespace mp4
+
144 } // namespace media
+
145 } // namespace edash_packager
+
146 
+
147 #endif // MEDIA_FORMATS_MP4_FOURCCS_H_
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 e90290beb7..1bd574867a 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 afbe55cf84..00e3522b90 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 c2db029d2a..a7ba9fb454 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 a522ce8c59..03da17c64a 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 267b01b061..6268eee08f 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 ade8dc826e..37b6b2a324 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 @@ -162,7 +162,7 @@ Additional Inherited Members

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

-

Definition at line 1422 of file box_definitions.cc.

+

Definition at line 1423 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 cd591f9698..1c72b4f3ee 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 @@ -114,7 +114,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 ec4b073a5f..89d9a3b305 100644 --- a/docs/d0/d7d/decryptor__source_8h_source.html +++ b/docs/d0/d7d/decryptor__source_8h_source.html @@ -125,7 +125,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 ddc8485f8c..96fb7d6868 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 f9513126ef..f1c8d638bc 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 568 of file box_definitions.h.

+

Definition at line 598 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 1905 of file box_definitions.cc.

+

Definition at line 1956 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 a69098dfa7..2a210df953 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 a4cd411d08..039848cf96 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 419cb6ac99..788860bb96 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 0f46abe883..0e1a187ad2 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 2cdad049ca..9c884962fd 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 5b6e91fe0f..606ccbf04c 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 1e0864dead..8f2ef4f1d2 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 62f3b36d0c..341ed2d57c 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 073d3c17e9..c687468c94 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 @@ -174,7 +174,7 @@ Additional Inherited Members

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

-

Definition at line 1389 of file box_definitions.cc.

+

Definition at line 1390 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 34ad676c5b..c72362d99e 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 4beaa9720d..b3daa8cf59 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 @@ -98,7 +98,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 27b7b26796..2201362b28 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 e559f9f77f..6161c55648 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 1cf234724b..e1fee83b13 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 a056ae241f..3b9f835818 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 02369f9458..8b83cf8abf 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 9d84a091a5..53ad12ac84 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 66079eebb9..1b10b18cdf 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 @@ -115,7 +115,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 d0f22e61fe..07ecc6efd9 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 a5ff404a8e..3db1775cdb 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 6a239c77bf..0701a79eaa 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 4739c7e6f6..e223356dda 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 3b53c4048a..e226007bd2 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 bfdf98c418..25752162d3 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 0245ac73d9..840017ed52 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 83f6bac12b..b75c1fd164 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 a6afb14ab6..ced4eef4c5 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 40fdfa61af..b331484365 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 38e12c2e16..dbf066e57b 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 a8ea0c6b2e..5525ccda20 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/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 05042ec8fc..fb2be56949 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 fbcdbf5f63..dfe2183ae4 100644 --- a/docs/d1/d2f/webvtt__media__parser_8cc_source.html +++ b/docs/d1/d2f/webvtt__media__parser_8cc_source.html @@ -484,7 +484,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 4ece5d109e..4cd36fb834 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 @@ -165,7 +165,7 @@ Additional Inherited Members

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

-

Definition at line 1202 of file box_definitions.cc.

+

Definition at line 1203 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 ee07c6f9ec..210f7335d2 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 9ef037cc34..e1f4e440d3 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 39b5423303..5afa186173 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 8e9112bfa9..10c58220c8 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 e85a8c53c3..b0c812980c 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 ba0720919a..2b4f283a8a 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 06d6beaf91..ae7ca73412 100644 --- a/docs/d1/d4d/h264__bit__reader_8cc_source.html +++ b/docs/d1/d4d/h264__bit__reader_8cc_source.html @@ -205,7 +205,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 a3eaf48805..68f03d027a 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 3a5da701a2..5b1eee2856 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 640 of file box_definitions.h.

+

Definition at line 670 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 2116 of file box_definitions.cc.

+

Definition at line 2167 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 0072034127..e55e0d542a 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 246c7b13be..0fe0fbc22b 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 d73c491175..882cceadde 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 @@ -102,23 +102,24 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); dac3 (defined in edash_packager::media::mp4::AudioSampleEntry)edash_packager::media::mp4::AudioSampleEntry data_reference_index (defined in edash_packager::media::mp4::AudioSampleEntry)edash_packager::media::mp4::AudioSampleEntry ddts (defined in edash_packager::media::mp4::AudioSampleEntry)edash_packager::media::mp4::AudioSampleEntry - esds (defined in edash_packager::media::mp4::AudioSampleEntry)edash_packager::media::mp4::AudioSampleEntry - format (defined in edash_packager::media::mp4::AudioSampleEntry)edash_packager::media::mp4::AudioSampleEntry - GetActualFormat() const (defined in edash_packager::media::mp4::AudioSampleEntry)edash_packager::media::mp4::AudioSampleEntryinline - HeaderSize() const edash_packager::media::mp4::Boxvirtual - Parse(BoxReader *reader)edash_packager::media::mp4::Box - ReadWriteHeaderInternal(BoxBuffer *buffer)edash_packager::media::mp4::Boxprotectedvirtual - samplerate (defined in edash_packager::media::mp4::AudioSampleEntry)edash_packager::media::mp4::AudioSampleEntry - samplesize (defined in edash_packager::media::mp4::AudioSampleEntry)edash_packager::media::mp4::AudioSampleEntry - sinf (defined in edash_packager::media::mp4::AudioSampleEntry)edash_packager::media::mp4::AudioSampleEntry - Write(BufferWriter *writer)edash_packager::media::mp4::Box - WriteHeader(BufferWriter *writer)edash_packager::media::mp4::Box - ~AudioSampleEntry() override (defined in edash_packager::media::mp4::AudioSampleEntry)edash_packager::media::mp4::AudioSampleEntry - ~Box() (defined in edash_packager::media::mp4::Box)edash_packager::media::mp4::Boxvirtual + dec3 (defined in edash_packager::media::mp4::AudioSampleEntry)edash_packager::media::mp4::AudioSampleEntry + esds (defined in edash_packager::media::mp4::AudioSampleEntry)edash_packager::media::mp4::AudioSampleEntry + format (defined in edash_packager::media::mp4::AudioSampleEntry)edash_packager::media::mp4::AudioSampleEntry + GetActualFormat() const (defined in edash_packager::media::mp4::AudioSampleEntry)edash_packager::media::mp4::AudioSampleEntryinline + HeaderSize() const edash_packager::media::mp4::Boxvirtual + Parse(BoxReader *reader)edash_packager::media::mp4::Box + ReadWriteHeaderInternal(BoxBuffer *buffer)edash_packager::media::mp4::Boxprotectedvirtual + samplerate (defined in edash_packager::media::mp4::AudioSampleEntry)edash_packager::media::mp4::AudioSampleEntry + samplesize (defined in edash_packager::media::mp4::AudioSampleEntry)edash_packager::media::mp4::AudioSampleEntry + sinf (defined in edash_packager::media::mp4::AudioSampleEntry)edash_packager::media::mp4::AudioSampleEntry + Write(BufferWriter *writer)edash_packager::media::mp4::Box + WriteHeader(BufferWriter *writer)edash_packager::media::mp4::Box + ~AudioSampleEntry() override (defined in edash_packager::media::mp4::AudioSampleEntry)edash_packager::media::mp4::AudioSampleEntry + ~Box() (defined in edash_packager::media::mp4::Box)edash_packager::media::mp4::Boxvirtual 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 1a99aff227..d5ef0c8f5e 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 25e4820a97..626f1f68af 100644 --- a/docs/d1/d74/mp2t__media__parser_8cc_source.html +++ b/docs/d1/d74/mp2t__media__parser_8cc_source.html @@ -528,7 +528,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 41db9c9823..a5dddbb4c3 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 c34e74fe41..5f4543b869 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 @@ -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 5d771f91f9..5c26bb3b40 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 7520436ab3..fa00c4af38 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 9c21c6a141..92bbe3f21d 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 708 of file box_definitions.h.

+

Definition at line 738 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 2321 of file box_definitions.cc.

+

Definition at line 2372 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 f9b73c882f..d367c8d6e4 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 b136180085..68a8ea3922 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 bdd66424e8..f891e9dc49 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 484 of file box_definitions.h.

+

Definition at line 514 of file box_definitions.h.

Member Function Documentation

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

-

Definition at line 1628 of file box_definitions.cc.

+

Definition at line 1679 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 2fc4e5b1b4..e9485efb6c 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 85c7d4f6ee..a183561952 100644 --- a/docs/d1/d8e/webm__audio__client_8cc_source.html +++ b/docs/d1/d8e/webm__audio__client_8cc_source.html @@ -204,14 +204,14 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
115 
116 } // namespace media
117 } // namespace edash_packager
-
Holds audio stream information.
+
Holds audio stream information.
void Reset()
Reset this object's state so it can process a new audio track element.
-
static std::string GetCodecString(AudioCodec codec, uint8_t audio_object_type)
+
static std::string GetCodecString(AudioCodec codec, uint8_t audio_object_type)
scoped_refptr< AudioStreamInfo > GetAudioStreamInfo(int64_t track_num, const std::string &codec_id, const std::vector< uint8_t > &codec_private, const std::string &language, bool is_encrypted)
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 c86026ade6..19e043fc5b 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 4aa74966c1..bbfeaaecff 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 a4b4c24a78..683944e2a7 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 6c9c638e71..228799ca3d 100644 --- a/docs/d1/dcb/encrypting__fragmenter_8h_source.html +++ b/docs/d1/dcb/encrypting__fragmenter_8h_source.html @@ -175,13 +175,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 16a7147fdb..50a6833f30 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 @@ -171,7 +171,7 @@ Additional Inherited Members

Reimplemented in edash_packager::media::mp4::SegmentType.

-

Definition at line 129 of file box_definitions.cc.

+

Definition at line 130 of file box_definitions.cc.

@@ -182,7 +182,7 @@ Additional Inherited Members 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 9822506e16..e9a6e05285 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 dc627f7252..cfc6019f32 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/ddc/classedash__packager_1_1media_1_1VP9Parser-members.html b/docs/d1/ddc/classedash__packager_1_1media_1_1VP9Parser-members.html index e4e30e9a60..346136cdde 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 1b17a05ec6..8d780133ab 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 a340d06e42..8d4017fe9b 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 54241b094b..cd577c2e17 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 740 of file box_definitions.h.

+

Definition at line 770 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 2442 of file box_definitions.cc.

+

Definition at line 2493 of file box_definitions.cc.

@@ -173,7 +173,7 @@ Additional Inherited Members 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 cda0f8c873..4cb6df88cb 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 ce02d8b85f..86576d6027 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 2243aa54d1..e692bef3c5 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 @@ -174,7 +174,7 @@ Additional Inherited Members

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

-

Definition at line 1181 of file box_definitions.cc.

+

Definition at line 1182 of file box_definitions.cc.

@@ -185,7 +185,7 @@ Additional Inherited Members 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 27fdf4396b..46627bf105 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 e8f067d0c1..bc6edd07a4 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 069b419de1..8d2501fc1b 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 ca1f438b63..dbbc46ba45 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 f5e7605a48..2cc87a3d58 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 657 of file box_definitions.h.

+

Definition at line 687 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 2158 of file box_definitions.cc.

+

Definition at line 2209 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 9707ca2b5a..eb6cbcfde6 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 ffcf787c10..42a18405a0 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 1dc0eb22ab..748b4645e0 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/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 64eac7dd1c..2b58a72cad 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 5cfb142c61..3e9b37ed53 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 342123b289..d9dec6bdcb 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 c66fd33259..629c2f1804 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 3e358558f9..08aed813b0 100644 --- a/docs/d2/d51/classedash__packager_1_1media_1_1WebVttMediaParser.html +++ b/docs/d2/d51/classedash__packager_1_1media_1_1WebVttMediaParser.html @@ -255,7 +255,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 85d3041f3f..1dc91abd4a 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 @@ -177,7 +177,7 @@ Additional Inherited Members

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

-

Definition at line 221 of file box_definitions.cc.

+

Definition at line 222 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 81220779dd..3dcf2da007 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 31490e5bb9..07f2f6bd2d 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 32fbf22e9e..a7e6568920 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 a907d37994..cf66817f7f 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 1b2e8fb0aa..40e105df07 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 @@ -162,7 +162,7 @@ Additional Inherited Members

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

-

Definition at line 446 of file box_definitions.cc.

+

Definition at line 447 of file box_definitions.cc.

@@ -173,7 +173,7 @@ Additional Inherited Members 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 b850d2c796..9010449b72 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 18305046fb..b13af7d277 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 c7f5829c3d..58c7d537d6 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 fc5466cb99..bb26982ea8 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 82ac1abfb0..e43951151b 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 c58011a341..69d3dce901 100644 --- a/docs/d2/d98/avc__decoder__configuration_8h_source.html +++ b/docs/d2/d98/avc__decoder__configuration_8h_source.html @@ -154,7 +154,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 07762fbe96..6b0aff49b2 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 0a8a1e9aaa..0a4afc31f0 100644 --- a/docs/d2/da8/mp4_2segmenter_8cc_source.html +++ b/docs/d2/da8/mp4_2segmenter_8cc_source.html @@ -532,7 +532,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:45
@@ -557,7 +557,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 b466965bef..d561ee418f 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/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 4e6c241924..2adf09b4f4 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/dc6/structedash__packager_1_1media_1_1mp4_1_1IndependentSubstream-members.html b/docs/d2/dc6/structedash__packager_1_1media_1_1mp4_1_1IndependentSubstream-members.html new file mode 100644 index 0000000000..e59bf1d5d3 --- /dev/null +++ b/docs/d2/dc6/structedash__packager_1_1media_1_1mp4_1_1IndependentSubstream-members.html @@ -0,0 +1,112 @@ + + + + + + +DASH Media Packaging SDK: Member List + + + + + + + + + +
+
+ + + + + + +
+
DASH Media Packaging SDK +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
edash_packager::media::mp4::IndependentSubstream Member List
+
+ + + + + diff --git a/docs/d2/dd6/mkv__writer_8h_source.html b/docs/d2/dd6/mkv__writer_8h_source.html index 5c035100ee..07a592d880 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 ae6f306490..d317383221 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 1ae63c2e98..a4dbbd4c19 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 53f39be1cd..903e911327 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 5d561fe1eb..e9a93d127e 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 7bbad56ba9..31dcc6ecc7 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 20b5a14045..79f3c47b10 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 725 of file box_definitions.h.

+

Definition at line 755 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 2387 of file box_definitions.cc.

+

Definition at line 2438 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 b2dee96174..8585f77655 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 874b8ec396..f6fe704f75 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 f5e210ac0c..ff04e5e606 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 3b62f15f2b..c7051cad24 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 b9a1cd86de..6b0e5e31bb 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 2992a99d19..1c6d192f15 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 d80cc462e7..1d7ff06a79 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 33410c26a8..48fb2b3616 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 fccc54d8c8..2b1e6cdc8d 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 750 of file box_definitions.h.

+

Definition at line 780 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 2478 of file box_definitions.cc.

+

Definition at line 2529 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 bd8fc99178..732946d340 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 541 of file box_definitions.h.

+

Definition at line 571 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 1822 of file box_definitions.cc.

+

Definition at line 1873 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 9735df8008..5dd1f361d7 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/d3e/classedash__packager_1_1media_1_1HttpKeyFetcher.html b/docs/d3/d3e/classedash__packager_1_1media_1_1HttpKeyFetcher.html index 86266757af..5d61cc1ff1 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 new file mode 100644 index 0000000000..1e967af0fe --- /dev/null +++ b/docs/d3/d43/structedash__packager_1_1media_1_1mp4_1_1EC3Specific.html @@ -0,0 +1,187 @@ + + + + + + +DASH Media Packaging SDK: edash_packager::media::mp4::EC3Specific Struct Reference + + + + + + + + + +
+
+ + + + + + +
+
DASH Media Packaging SDK +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
edash_packager::media::mp4::EC3Specific Struct Reference
+
+
+
+Inheritance diagram for edash_packager::media::mp4::EC3Specific:
+
+
+ + +edash_packager::media::mp4::Box + +
+ + + + + + + + + + + + + + + + + +

+Public Member Functions

FourCC BoxType () const override
 
- Public Member Functions inherited from edash_packager::media::mp4::Box
bool Parse (BoxReader *reader)
 
void Write (BufferWriter *writer)
 
void WriteHeader (BufferWriter *writer)
 
uint32_t ComputeSize ()
 
virtual uint32_t HeaderSize () const
 
uint32_t box_size ()
 
+ + + + + + + +

+Public Attributes

+std::vector< uint8_t > data
 
+size_t number_independent_substreams
 
+std::vector< IndependentSubstreamindependent_substreams
 
+ + + + +

+Additional Inherited Members

- Protected Member Functions inherited from edash_packager::media::mp4::Box
virtual bool ReadWriteHeaderInternal (BoxBuffer *buffer)
 
+

Detailed Description

+
+

Definition at line 335 of file box_definitions.h.

+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + +
FourCC edash_packager::media::mp4::EC3Specific::BoxType () const
+
+overridevirtual
+
+
Returns
box type.
+ +

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

+ +

Definition at line 1442 of file box_definitions.cc.

+ +
+
+
The documentation for this struct was generated from the following files: +
+ + + + diff --git a/docs/d3/d43/structedash__packager_1_1media_1_1mp4_1_1EC3Specific.png b/docs/d3/d43/structedash__packager_1_1media_1_1mp4_1_1EC3Specific.png new file mode 100644 index 0000000000..f692ec694e Binary files /dev/null and b/docs/d3/d43/structedash__packager_1_1media_1_1mp4_1_1EC3Specific.png differ 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 ee9f30520f..0652873985 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 4e3b9aaf49..3c9f52490c 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 b8bd48cc5f..8023c351bd 100644 --- a/docs/d3/d56/decrypt__config_8cc_source.html +++ b/docs/d3/d56/decrypt__config_8cc_source.html @@ -118,7 +118,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 fe7bd46459..4f224ab9a8 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 @@ -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 68c460718e..74a5b19f1b 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 bdb72d0848..fd49b47099 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 1defb537f4..5fccd11c3c 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/d6b/classedash__packager_1_1media_1_1IoCache.html b/docs/d3/d6b/classedash__packager_1_1media_1_1IoCache.html index 31c8ac93b4..01ef52d295 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 4d1e960d38..ad08d9e523 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 357 of file box_definitions.h.

+

Definition at line 387 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 576 of file box_definitions.cc.

+

Definition at line 577 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 ef5087726b..70f74302eb 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 27959fb864..523e4914d3 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 444 of file box_definitions.h.

+

Definition at line 474 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 903 of file box_definitions.cc.

+

Definition at line 904 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 e5de279ba3..e06085721c 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 bf30331f30..31d709edda 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 a82ff893e2..85b00142a3 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 4e7747d824..748728c063 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 20cd1a4682..10caae992f 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/d9b/structedash__packager_1_1media_1_1VideoStreamInfoParameters-members.html b/docs/d3/d9b/structedash__packager_1_1media_1_1VideoStreamInfoParameters-members.html index 8635e558de..d311ce5bf9 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 8629cfbdb4..d0cdf8bfe7 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/db6/webm__parser_8cc_source.html b/docs/d3/db6/webm__parser_8cc_source.html index ede2258daf..1fa960f998 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 067350054a..78fd9a79d9 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 1f415df960..fa9d30a224 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 710c90db56..36ba8aeeed 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 @@ -171,7 +171,7 @@ Additional Inherited Members

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

-

Definition at line 1008 of file box_definitions.cc.

+

Definition at line 1009 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 ec5a21bdad..30472a9495 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 74c3a6c086..b6874551d3 100644 --- a/docs/d3/dbe/demuxer_8cc_source.html +++ b/docs/d3/dbe/demuxer_8cc_source.html @@ -311,7 +311,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 e0a90f8888..4e4c0a1240 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 2bf97517be..2692482459 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 f27575b0b7..5b62ddc83e 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 96fabbf533..3e1a996e1e 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 526 of file box_definitions.h.

+

Definition at line 556 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 1779 of file box_definitions.cc.

+

Definition at line 1830 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 9e999966dc..1e5254f1d8 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 673a81ab75..79f53ae791 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 ab14736a8c..5ce29cd1b9 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 f650108bff..77438c8470 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 73d1a36a4e..a766929ef1 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 59de231668..1dcbece1c2 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 809414fcf2..746a1d8616 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 fa1e50caed..88bd1632bf 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 361f6182a7..b62ed7c8bc 100644 --- a/docs/d4/d37/io__cache_8cc_source.html +++ b/docs/d4/d37/io__cache_8cc_source.html @@ -253,7 +253,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 7187c52b7b..3c9eca6bc8 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 @@ -165,7 +165,7 @@ Additional Inherited Members

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

-

Definition at line 1226 of file box_definitions.cc.

+

Definition at line 1227 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 27de38be4f..ccac192572 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 0648a588a2..28fbabff24 100644 --- a/docs/d4/d55/classedash__packager_1_1media_1_1H264BitReader.html +++ b/docs/d4/d55/classedash__packager_1_1media_1_1H264BitReader.html @@ -122,7 +122,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 502402782d..80710483da 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 890450bc9d..d64160b2c5 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/d8c/classedash__packager_1_1media_1_1MkvWriter.html b/docs/d4/d8c/classedash__packager_1_1media_1_1MkvWriter.html index 55cc2fc47f..e10e5bc562 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 e4999351a3..c164235c9f 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 ee77152a00..f5fb244628 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 7c116b32dc..3816cb4ec2 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 719 of file box_definitions.h.

+

Definition at line 749 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 2373 of file box_definitions.cc.

+

Definition at line 2424 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 9303cc9d51..5c00fd0e9e 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 3217f37c64..fa887b98ea 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 f795f68275..ba570f509b 100644 --- a/docs/d4/da1/classedash__packager_1_1media_1_1DecryptConfig.html +++ b/docs/d4/da1/classedash__packager_1_1media_1_1DecryptConfig.html @@ -183,7 +183,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 941c06e811..52e0a3c267 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 18c3f04a1e..d7a1af7ecf 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 e0a85fbb2e..ebc03315d3 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 cc4d4e3133..3a9b7db289 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 2c7bf6e2ee..bf787e67ec 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 82750da456..50c5ca403a 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 @@ -174,7 +174,7 @@ Additional Inherited Members

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

-

Definition at line 395 of file box_definitions.cc.

+

Definition at line 396 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 0bcf435e82..1ab2992f79 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 5cc62dacef..b46636496b 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 686 of file box_definitions.h.

+

Definition at line 716 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 a80193513e..3cc03c5df2 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 2f66da325f..f649fdf0d7 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 664 of file box_definitions.h.

+

Definition at line 694 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 2235 of file box_definitions.cc.

+

Definition at line 2286 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 72151b0329..832f9ff321 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 9fca29fb15..b38d7d7b32 100644 --- a/docs/d4/de4/structedash__packager_1_1media_1_1SubsampleEntry.html +++ b/docs/d4/de4/structedash__packager_1_1media_1_1SubsampleEntry.html @@ -115,7 +115,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 e4f00bf507..504fb6da91 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 16981fbbab..396626dee0 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 29c4d8132b..aa96aec714 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 7afdf9a7aa..3688052fb8 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 27b0b85571..82ca50801b 100644 --- a/docs/d4/dff/webm__media__parser_8cc_source.html +++ b/docs/d4/dff/webm__media__parser_8cc_source.html @@ -335,7 +335,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 a76370e22c..7aa6f2effa 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 69a6852803..cb1c980d38 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_1H264NALU-members.html b/docs/d5/d18/structedash__packager_1_1media_1_1H264NALU-members.html index 30c4b78ba7..8498f7d441 100644 --- a/docs/d5/d18/structedash__packager_1_1media_1_1H264NALU-members.html +++ b/docs/d5/d18/structedash__packager_1_1media_1_1H264NALU-members.html @@ -112,7 +112,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 9e934ed102..cd780c5ba6 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 ead7b6f66d..640c3c435e 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 f27b55e527..de7f7d5373 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 700f8568a1..51154f956b 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 0e34781d28..3909a08abf 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 3e916512a5..ae7b16bc9a 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 5c36c8f1be..41f1e2f9dd 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 4ab2c55346..7e8990137e 100644 --- a/docs/d5/d41/hevc__decoder__configuration_8cc_source.html +++ b/docs/d5/d41/hevc__decoder__configuration_8cc_source.html @@ -232,7 +232,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 dab7f6135c..193d582c28 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 6d9ebacb86..a93c46b8a6 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 e026e9dab8..6bc6e315a4 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 09418bfb00..ae0bb7d16f 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 1195cce973..f4eabebb07 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 dae03223c6..b70969f120 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 89808dcb6b..1e89eaa8a4 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 dc8472c856..478c1ef22b 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 18e27d036a..18f2ca6be2 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 21541f3dca..51393d0714 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 @@ -186,7 +186,7 @@ Additional Inherited Members

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

-

Definition at line 314 of file box_definitions.cc.

+

Definition at line 315 of file box_definitions.cc.

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

Definition at line 363 of file box_definitions.cc.

+

Definition at line 364 of file box_definitions.cc.

@@ -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 439885f425..9a60625bc5 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 8648b8195a..f9dc86ebea 100644 --- a/docs/d5/d7b/box__definitions_8h_source.html +++ b/docs/d5/d7b/box__definitions_8h_source.html @@ -378,562 +378,594 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
315  std::vector<uint8_t> data;
316 };
317 
- -
319  DECLARE_BOX_METHODS(AudioSampleEntry);
-
320  // Returns actual format of this sample entry.
-
321  FourCC GetActualFormat() const {
-
322  return format == FOURCC_ENCA ? sinf.format.format : format;
-
323  }
-
324 
-
325  FourCC format;
-
326  uint16_t data_reference_index;
-
327  uint16_t channelcount;
-
328  uint16_t samplesize;
-
329  uint32_t samplerate;
-
330 
- - -
333  DTSSpecific ddts;
-
334  AC3Specific dac3;
-
335 };
-
336 
- -
338  DECLARE_BOX_METHODS(WebVTTConfigurationBox);
-
339  std::string config;
-
340 };
+
318 // Independent substream in EC3Specific box.
+ +
320  uint8_t sample_rate_code; // fscod: 2 bits
+
321  uint8_t bit_stream_identification; // bsid: 5 bits
+
322  // reserved_1: 1 bit
+
323  uint8_t audio_service; // asvc: 1 bit
+
324  uint8_t bit_stream_mode; // bsmod: 3 bits
+
325  uint8_t audio_coding_mode; // acmod: 3 bits
+
326  uint8_t lfe_channel_on; // lfeon: 1 bit
+
327  // reserved_2: 3 bit
+
328  uint8_t number_dependent_substreams; // num_dep_sub: 4 bits.
+
329  // If num_dep_sub > 0, chan_loc is present and the size is 9 bits.
+
330  // Otherwise, reserved_3 is present and the size is 1 bit.
+
331  uint16_t channel_location; // chan_loc: 9 bits.
+
332  // reserved_3: 1 bit
+
333 };
+
334 
+
335 struct EC3Specific : Box {
+
336  DECLARE_BOX_METHODS(EC3Specific);
+
337 
+
338  // Before we know the number of independent substreams, data in EC3Specific
+
339  // box is store for parsing later.
+
340  std::vector<uint8_t> data;
341 
- -
343  DECLARE_BOX_METHODS(WebVTTSourceLabelBox);
-
344  std::string source_label;
-
345 };
-
346 
- -
348  DECLARE_BOX_METHODS(WVTTSampleEntry);
-
349 
-
350  uint16_t data_reference_index;
-
351 
-
352  WebVTTConfigurationBox config;
-
353  WebVTTSourceLabelBox label;
-
354  // Optional MPEG4BitRateBox.
-
355 };
-
356 
- -
358  DECLARE_BOX_METHODS(SampleDescription);
-
359 
-
360  TrackType type;
-
361  // TODO(kqyang): Clean up the code to have one single member, e.g. by creating
-
362  // SampleEntry struct, std::vector<SampleEntry> sample_entries.
-
363  std::vector<VideoSampleEntry> video_entries;
-
364  std::vector<AudioSampleEntry> audio_entries;
-
365  std::vector<WVTTSampleEntry> wvtt_entries;
-
366 };
-
367 
-
368 struct DecodingTime {
-
369  uint32_t sample_count;
-
370  uint32_t sample_delta;
-
371 };
-
372 
-
373 // stts.
- -
375  DECLARE_BOX_METHODS(DecodingTimeToSample);
+
342  size_t number_independent_substreams; // num_id_sub: 3 bits.
+
343  std::vector<IndependentSubstream> independent_substreams;
+
344 };
+
345 
+ +
347  DECLARE_BOX_METHODS(AudioSampleEntry);
+
348  // Returns actual format of this sample entry.
+
349  FourCC GetActualFormat() const {
+
350  return format == FOURCC_ENCA ? sinf.format.format : format;
+
351  }
+
352 
+
353  FourCC format;
+
354  uint16_t data_reference_index;
+
355  uint16_t channelcount;
+
356  uint16_t samplesize;
+
357  uint32_t samplerate;
+
358 
+ +
360 
+ +
362  DTSSpecific ddts;
+
363  AC3Specific dac3;
+
364  EC3Specific dec3;
+
365 };
+
366 
+ +
368  DECLARE_BOX_METHODS(WebVTTConfigurationBox);
+
369  std::string config;
+
370 };
+
371 
+ +
373  DECLARE_BOX_METHODS(WebVTTSourceLabelBox);
+
374  std::string source_label;
+
375 };
376 
-
377  std::vector<DecodingTime> decoding_time;
-
378 };
+ +
378  DECLARE_BOX_METHODS(WVTTSampleEntry);
379 
- -
381  uint32_t sample_count;
-
382  // If version == 0, sample_offset is uint32_t;
-
383  // If version == 1, sample_offset is int32_t.
-
384  // Use int64_t so both can be supported properly.
-
385  int64_t sample_offset;
-
386 };
-
387 
-
388 // ctts. Optional.
- -
390  DECLARE_BOX_METHODS(CompositionTimeToSample);
-
391 
-
392  std::vector<CompositionOffset> composition_offset;
-
393 };
-
394 
-
395 struct ChunkInfo {
-
396  uint32_t first_chunk;
-
397  uint32_t samples_per_chunk;
-
398  uint32_t sample_description_index;
-
399 };
-
400 
-
401 // stsc.
- -
403  DECLARE_BOX_METHODS(SampleToChunk);
-
404 
-
405  std::vector<ChunkInfo> chunk_info;
-
406 };
-
407 
-
408 // stsz.
-
409 struct SampleSize : FullBox {
-
410  DECLARE_BOX_METHODS(SampleSize);
-
411 
-
412  uint32_t sample_size;
-
413  uint32_t sample_count;
-
414  std::vector<uint32_t> sizes;
-
415 };
-
416 
-
417 // stz2.
- -
419  DECLARE_BOX_METHODS(CompactSampleSize);
-
420 
-
421  uint8_t field_size;
-
422  std::vector<uint32_t> sizes;
+
380  uint16_t data_reference_index;
+
381 
+
382  WebVTTConfigurationBox config;
+
383  WebVTTSourceLabelBox label;
+
384  // Optional MPEG4BitRateBox.
+
385 };
+
386 
+ +
388  DECLARE_BOX_METHODS(SampleDescription);
+
389 
+
390  TrackType type;
+
391  // TODO(kqyang): Clean up the code to have one single member, e.g. by creating
+
392  // SampleEntry struct, std::vector<SampleEntry> sample_entries.
+
393  std::vector<VideoSampleEntry> video_entries;
+
394  std::vector<AudioSampleEntry> audio_entries;
+
395  std::vector<WVTTSampleEntry> wvtt_entries;
+
396 };
+
397 
+
398 struct DecodingTime {
+
399  uint32_t sample_count;
+
400  uint32_t sample_delta;
+
401 };
+
402 
+
403 // stts.
+ +
405  DECLARE_BOX_METHODS(DecodingTimeToSample);
+
406 
+
407  std::vector<DecodingTime> decoding_time;
+
408 };
+
409 
+ +
411  uint32_t sample_count;
+
412  // If version == 0, sample_offset is uint32_t;
+
413  // If version == 1, sample_offset is int32_t.
+
414  // Use int64_t so both can be supported properly.
+
415  int64_t sample_offset;
+
416 };
+
417 
+
418 // ctts. Optional.
+ +
420  DECLARE_BOX_METHODS(CompositionTimeToSample);
+
421 
+
422  std::vector<CompositionOffset> composition_offset;
423 };
424 
-
425 // co64.
- -
427  DECLARE_BOX_METHODS(ChunkLargeOffset);
-
428 
-
429  std::vector<uint64_t> offsets;
-
430 };
-
431 
-
432 // stco.
- -
434  DECLARE_BOX_METHODS(ChunkOffset);
-
435 };
-
436 
-
437 // stss. Optional.
-
438 struct SyncSample : FullBox {
-
439  DECLARE_BOX_METHODS(SyncSample);
-
440 
-
441  std::vector<uint32_t> sample_number;
-
442 };
-
443 
-
444 struct SampleTable : Box {
-
445  DECLARE_BOX_METHODS(SampleTable);
+
425 struct ChunkInfo {
+
426  uint32_t first_chunk;
+
427  uint32_t samples_per_chunk;
+
428  uint32_t sample_description_index;
+
429 };
+
430 
+
431 // stsc.
+ +
433  DECLARE_BOX_METHODS(SampleToChunk);
+
434 
+
435  std::vector<ChunkInfo> chunk_info;
+
436 };
+
437 
+
438 // stsz.
+
439 struct SampleSize : FullBox {
+
440  DECLARE_BOX_METHODS(SampleSize);
+
441 
+
442  uint32_t sample_size;
+
443  uint32_t sample_count;
+
444  std::vector<uint32_t> sizes;
+
445 };
446 
-
447  SampleDescription description;
-
448  DecodingTimeToSample decoding_time_to_sample;
-
449  CompositionTimeToSample composition_time_to_sample;
-
450  SampleToChunk sample_to_chunk;
-
451  // Either SampleSize or CompactSampleSize must present. Store in SampleSize.
-
452  SampleSize sample_size;
-
453  // Either ChunkOffset or ChunkLargeOffset must present. Store in
-
454  // ChunkLargeOffset.
-
455  ChunkLargeOffset chunk_large_offset;
-
456  SyncSample sync_sample;
-
457 };
+
447 // stz2.
+ +
449  DECLARE_BOX_METHODS(CompactSampleSize);
+
450 
+
451  uint8_t field_size;
+
452  std::vector<uint32_t> sizes;
+
453 };
+
454 
+
455 // co64.
+ +
457  DECLARE_BOX_METHODS(ChunkLargeOffset);
458 
- -
460  DECLARE_BOX_METHODS(MediaHeader);
+
459  std::vector<uint64_t> offsets;
+
460 };
461 
-
462  uint64_t creation_time;
-
463  uint64_t modification_time;
-
464  uint32_t timescale;
-
465  uint64_t duration;
-
466  Language language;
-
467 };
-
468 
- -
470  DECLARE_BOX_METHODS(VideoMediaHeader);
-
471 
-
472  uint16_t graphicsmode;
-
473  uint16_t opcolor_red;
-
474  uint16_t opcolor_green;
-
475  uint16_t opcolor_blue;
-
476 };
-
477 
- -
479  DECLARE_BOX_METHODS(SoundMediaHeader);
-
480 
-
481  uint16_t balance;
-
482 };
-
483 
- -
485  DECLARE_BOX_METHODS(SubtitleMediaHeader);
-
486 };
-
487 
- -
489  DECLARE_BOX_METHODS(DataEntryUrl);
-
490 
-
491  std::vector<uint8_t> location;
-
492 };
-
493 
- -
495  DECLARE_BOX_METHODS(DataReference);
-
496 
-
497  // data entry can be either url or urn box. Fix to url box for now.
-
498  std::vector<DataEntryUrl> data_entry;
-
499 };
-
500 
- -
502  DECLARE_BOX_METHODS(DataInformation);
-
503 
-
504  DataReference dref;
-
505 };
-
506 
- -
508  DECLARE_BOX_METHODS(MediaInformation);
-
509 
-
510  DataInformation dinf;
-
511  SampleTable sample_table;
-
512  // Exactly one specific meida header shall be present, vmhd, smhd, hmhd, nmhd.
-
513  VideoMediaHeader vmhd;
-
514  SoundMediaHeader smhd;
-
515  SubtitleMediaHeader sthd;
+
462 // stco.
+ +
464  DECLARE_BOX_METHODS(ChunkOffset);
+
465 };
+
466 
+
467 // stss. Optional.
+
468 struct SyncSample : FullBox {
+
469  DECLARE_BOX_METHODS(SyncSample);
+
470 
+
471  std::vector<uint32_t> sample_number;
+
472 };
+
473 
+
474 struct SampleTable : Box {
+
475  DECLARE_BOX_METHODS(SampleTable);
+
476 
+
477  SampleDescription description;
+
478  DecodingTimeToSample decoding_time_to_sample;
+
479  CompositionTimeToSample composition_time_to_sample;
+
480  SampleToChunk sample_to_chunk;
+
481  // Either SampleSize or CompactSampleSize must present. Store in SampleSize.
+
482  SampleSize sample_size;
+
483  // Either ChunkOffset or ChunkLargeOffset must present. Store in
+
484  // ChunkLargeOffset.
+
485  ChunkLargeOffset chunk_large_offset;
+
486  SyncSample sync_sample;
+
487 };
+
488 
+ +
490  DECLARE_BOX_METHODS(MediaHeader);
+
491 
+
492  uint64_t creation_time;
+
493  uint64_t modification_time;
+
494  uint32_t timescale;
+
495  uint64_t duration;
+
496  Language language;
+
497 };
+
498 
+ +
500  DECLARE_BOX_METHODS(VideoMediaHeader);
+
501 
+
502  uint16_t graphicsmode;
+
503  uint16_t opcolor_red;
+
504  uint16_t opcolor_green;
+
505  uint16_t opcolor_blue;
+
506 };
+
507 
+ +
509  DECLARE_BOX_METHODS(SoundMediaHeader);
+
510 
+
511  uint16_t balance;
+
512 };
+
513 
+ +
515  DECLARE_BOX_METHODS(SubtitleMediaHeader);
516 };
517 
-
518 struct Media : Box {
-
519  DECLARE_BOX_METHODS(Media);
+ +
519  DECLARE_BOX_METHODS(DataEntryUrl);
520 
-
521  MediaHeader header;
-
522  HandlerReference handler;
-
523  MediaInformation information;
-
524 };
-
525 
-
526 struct Track : Box {
-
527  DECLARE_BOX_METHODS(Track);
-
528 
-
529  TrackHeader header;
-
530  Media media;
-
531  Edit edit;
-
532  SampleEncryption sample_encryption;
-
533 };
-
534 
- -
536  DECLARE_BOX_METHODS(MovieExtendsHeader);
-
537 
-
538  uint64_t fragment_duration;
-
539 };
-
540 
- -
542  DECLARE_BOX_METHODS(TrackExtends);
-
543 
-
544  uint32_t track_id;
-
545  uint32_t default_sample_description_index;
-
546  uint32_t default_sample_duration;
-
547  uint32_t default_sample_size;
-
548  uint32_t default_sample_flags;
-
549 };
+
521  std::vector<uint8_t> location;
+
522 };
+
523 
+ +
525  DECLARE_BOX_METHODS(DataReference);
+
526 
+
527  // data entry can be either url or urn box. Fix to url box for now.
+
528  std::vector<DataEntryUrl> data_entry;
+
529 };
+
530 
+ +
532  DECLARE_BOX_METHODS(DataInformation);
+
533 
+
534  DataReference dref;
+
535 };
+
536 
+ +
538  DECLARE_BOX_METHODS(MediaInformation);
+
539 
+
540  DataInformation dinf;
+
541  SampleTable sample_table;
+
542  // Exactly one specific meida header shall be present, vmhd, smhd, hmhd, nmhd.
+
543  VideoMediaHeader vmhd;
+
544  SoundMediaHeader smhd;
+
545  SubtitleMediaHeader sthd;
+
546 };
+
547 
+
548 struct Media : Box {
+
549  DECLARE_BOX_METHODS(Media);
550 
-
551 struct MovieExtends : Box {
-
552  DECLARE_BOX_METHODS(MovieExtends);
-
553 
-
554  MovieExtendsHeader header;
-
555  std::vector<TrackExtends> tracks;
-
556 };
-
557 
-
558 struct Movie : Box {
-
559  DECLARE_BOX_METHODS(Movie);
-
560 
-
561  MovieHeader header;
-
562  Metadata metadata; // Used to hold version information.
-
563  MovieExtends extends;
-
564  std::vector<Track> tracks;
-
565  std::vector<ProtectionSystemSpecificHeader> pssh;
-
566 };
+
551  MediaHeader header;
+
552  HandlerReference handler;
+
553  MediaInformation information;
+
554 };
+
555 
+
556 struct Track : Box {
+
557  DECLARE_BOX_METHODS(Track);
+
558 
+
559  TrackHeader header;
+
560  Media media;
+
561  Edit edit;
+
562  SampleEncryption sample_encryption;
+
563 };
+
564 
+ +
566  DECLARE_BOX_METHODS(MovieExtendsHeader);
567 
- -
569  DECLARE_BOX_METHODS(TrackFragmentDecodeTime);
+
568  uint64_t fragment_duration;
+
569 };
570 
-
571  uint64_t decode_time;
-
572 };
+ +
572  DECLARE_BOX_METHODS(TrackExtends);
573 
- -
575  DECLARE_BOX_METHODS(MovieFragmentHeader);
-
576 
-
577  uint32_t sequence_number;
-
578 };
-
579 
- -
581  enum TrackFragmentFlagsMasks {
-
582  kBaseDataOffsetPresentMask = 0x000001,
-
583  kSampleDescriptionIndexPresentMask = 0x000002,
-
584  kDefaultSampleDurationPresentMask = 0x000008,
-
585  kDefaultSampleSizePresentMask = 0x000010,
-
586  kDefaultSampleFlagsPresentMask = 0x000020,
-
587  kDurationIsEmptyMask = 0x010000,
-
588  kDefaultBaseIsMoofMask = 0x020000,
-
589  };
+
574  uint32_t track_id;
+
575  uint32_t default_sample_description_index;
+
576  uint32_t default_sample_duration;
+
577  uint32_t default_sample_size;
+
578  uint32_t default_sample_flags;
+
579 };
+
580 
+
581 struct MovieExtends : Box {
+
582  DECLARE_BOX_METHODS(MovieExtends);
+
583 
+
584  MovieExtendsHeader header;
+
585  std::vector<TrackExtends> tracks;
+
586 };
+
587 
+
588 struct Movie : Box {
+
589  DECLARE_BOX_METHODS(Movie);
590 
-
591  enum SampleFlagsMasks {
-
592  kReservedMask = 0xFC000000,
-
593  kSampleDependsOnMask = 0x03000000,
-
594  kSampleIsDependedOnMask = 0x00C00000,
-
595  kSampleHasRedundancyMask = 0x00300000,
-
596  kSamplePaddingValueMask = 0x000E0000,
-
597  kNonKeySampleMask = 0x00010000,
-
598  kSampleDegradationPriorityMask = 0x0000FFFF,
-
599  };
+
591  MovieHeader header;
+
592  Metadata metadata; // Used to hold version information.
+
593  MovieExtends extends;
+
594  std::vector<Track> tracks;
+
595  std::vector<ProtectionSystemSpecificHeader> pssh;
+
596 };
+
597 
+ +
599  DECLARE_BOX_METHODS(TrackFragmentDecodeTime);
600 
-
601  DECLARE_BOX_METHODS(TrackFragmentHeader);
-
602 
-
603  uint32_t track_id;
-
604  uint32_t sample_description_index;
-
605  uint32_t default_sample_duration;
-
606  uint32_t default_sample_size;
-
607  uint32_t default_sample_flags;
+
601  uint64_t decode_time;
+
602 };
+
603 
+ +
605  DECLARE_BOX_METHODS(MovieFragmentHeader);
+
606 
+
607  uint32_t sequence_number;
608 };
609 
- +
611  enum TrackFragmentFlagsMasks {
-
612  kDataOffsetPresentMask = 0x000001,
-
613  kFirstSampleFlagsPresentMask = 0x000004,
-
614  kSampleDurationPresentMask = 0x000100,
-
615  kSampleSizePresentMask = 0x000200,
-
616  kSampleFlagsPresentMask = 0x000400,
-
617  kSampleCompTimeOffsetsPresentMask = 0x000800,
-
618  };
-
619 
-
620  DECLARE_BOX_METHODS(TrackFragmentRun);
-
621 
-
622  uint32_t sample_count;
-
623  uint32_t data_offset;
-
624  std::vector<uint32_t> sample_flags;
-
625  std::vector<uint32_t> sample_sizes;
-
626  std::vector<uint32_t> sample_durations;
-
627  std::vector<int64_t> sample_composition_time_offsets;
-
628 };
-
629 
- -
631  enum GroupDescriptionIndexBase {
-
632  kTrackGroupDescriptionIndexBase = 0,
-
633  kTrackFragmentGroupDescriptionIndexBase = 0x10000,
-
634  };
-
635 
-
636  uint32_t sample_count;
-
637  uint32_t group_description_index;
+
612  kBaseDataOffsetPresentMask = 0x000001,
+
613  kSampleDescriptionIndexPresentMask = 0x000002,
+
614  kDefaultSampleDurationPresentMask = 0x000008,
+
615  kDefaultSampleSizePresentMask = 0x000010,
+
616  kDefaultSampleFlagsPresentMask = 0x000020,
+
617  kDurationIsEmptyMask = 0x010000,
+
618  kDefaultBaseIsMoofMask = 0x020000,
+
619  };
+
620 
+
621  enum SampleFlagsMasks {
+
622  kReservedMask = 0xFC000000,
+
623  kSampleDependsOnMask = 0x03000000,
+
624  kSampleIsDependedOnMask = 0x00C00000,
+
625  kSampleHasRedundancyMask = 0x00300000,
+
626  kSamplePaddingValueMask = 0x000E0000,
+
627  kNonKeySampleMask = 0x00010000,
+
628  kSampleDegradationPriorityMask = 0x0000FFFF,
+
629  };
+
630 
+
631  DECLARE_BOX_METHODS(TrackFragmentHeader);
+
632 
+
633  uint32_t track_id;
+
634  uint32_t sample_description_index;
+
635  uint32_t default_sample_duration;
+
636  uint32_t default_sample_size;
+
637  uint32_t default_sample_flags;
638 };
639 
- -
641  DECLARE_BOX_METHODS(SampleToGroup);
-
642 
-
643  uint32_t grouping_type;
-
644  uint32_t grouping_type_parameter; // Version 1 only.
-
645  std::vector<SampleToGroupEntry> entries;
-
646 };
-
647 
- - - + +
641  enum TrackFragmentFlagsMasks {
+
642  kDataOffsetPresentMask = 0x000001,
+
643  kFirstSampleFlagsPresentMask = 0x000004,
+
644  kSampleDurationPresentMask = 0x000100,
+
645  kSampleSizePresentMask = 0x000200,
+
646  kSampleFlagsPresentMask = 0x000400,
+
647  kSampleCompTimeOffsetsPresentMask = 0x000800,
+
648  };
+
649 
+
650  DECLARE_BOX_METHODS(TrackFragmentRun);
651 
-
652  bool is_encrypted;
-
653  uint8_t iv_size;
-
654  std::vector<uint8_t> key_id;
-
655 };
-
656 
- -
658  DECLARE_BOX_METHODS(SampleGroupDescription);
+
652  uint32_t sample_count;
+
653  uint32_t data_offset;
+
654  std::vector<uint32_t> sample_flags;
+
655  std::vector<uint32_t> sample_sizes;
+
656  std::vector<uint32_t> sample_durations;
+
657  std::vector<int64_t> sample_composition_time_offsets;
+
658 };
659 
-
660  uint32_t grouping_type;
-
661  std::vector<CencSampleEncryptionInfoEntry> entries;
-
662 };
-
663 
-
664 struct TrackFragment : Box {
-
665  DECLARE_BOX_METHODS(TrackFragment);
-
666 
-
667  TrackFragmentHeader header;
-
668  std::vector<TrackFragmentRun> runs;
-
669  bool decode_time_absent;
-
670  TrackFragmentDecodeTime decode_time;
-
671  SampleToGroup sample_to_group;
-
672  SampleGroupDescription sample_group_description;
-
673  SampleAuxiliaryInformationSize auxiliary_size;
-
674  SampleAuxiliaryInformationOffset auxiliary_offset;
-
675  SampleEncryption sample_encryption;
+ +
661  enum GroupDescriptionIndexBase {
+
662  kTrackGroupDescriptionIndexBase = 0,
+
663  kTrackFragmentGroupDescriptionIndexBase = 0x10000,
+
664  };
+
665 
+
666  uint32_t sample_count;
+
667  uint32_t group_description_index;
+
668 };
+
669 
+ +
671  DECLARE_BOX_METHODS(SampleToGroup);
+
672 
+
673  uint32_t grouping_type;
+
674  uint32_t grouping_type_parameter; // Version 1 only.
+
675  std::vector<SampleToGroupEntry> entries;
676 };
677 
-
678 struct MovieFragment : Box {
-
679  DECLARE_BOX_METHODS(MovieFragment);
-
680 
-
681  MovieFragmentHeader header;
-
682  std::vector<TrackFragment> tracks;
-
683  std::vector<ProtectionSystemSpecificHeader> pssh;
-
684 };
-
685 
- -
687  enum SAPType {
-
688  TypeUnknown = 0,
-
689  Type1 = 1, // T(ept) = T(dec) = T(sap) = T(ptf)
-
690  Type2 = 2, // T(ept) = T(dec) = T(sap) < T(ptf)
-
691  Type3 = 3, // T(ept) < T(dec) = T(sap) <= T(ptf)
-
692  Type4 = 4, // T(ept) <= T(ptf) < T(dec) = T(sap)
-
693  Type5 = 5, // T(ept) = T(dec) < T(sap)
-
694  Type6 = 6, // T(ept) < T(dec) < T(sap)
-
695  };
+ + + +
681 
+
682  bool is_encrypted;
+
683  uint8_t iv_size;
+
684  std::vector<uint8_t> key_id;
+
685 };
+
686 
+ +
688  DECLARE_BOX_METHODS(SampleGroupDescription);
+
689 
+
690  uint32_t grouping_type;
+
691  std::vector<CencSampleEncryptionInfoEntry> entries;
+
692 };
+
693 
+
694 struct TrackFragment : Box {
+
695  DECLARE_BOX_METHODS(TrackFragment);
696 
-
697  bool reference_type;
-
698  uint32_t referenced_size;
-
699  uint32_t subsegment_duration;
-
700  bool starts_with_sap;
-
701  SAPType sap_type;
-
702  uint32_t sap_delta_time;
-
703  // We add this field to keep track of earliest_presentation_time in this
-
704  // subsegment. It is not part of SegmentReference.
-
705  uint64_t earliest_presentation_time;
+
697  TrackFragmentHeader header;
+
698  std::vector<TrackFragmentRun> runs;
+
699  bool decode_time_absent;
+
700  TrackFragmentDecodeTime decode_time;
+
701  SampleToGroup sample_to_group;
+
702  SampleGroupDescription sample_group_description;
+
703  SampleAuxiliaryInformationSize auxiliary_size;
+
704  SampleAuxiliaryInformationOffset auxiliary_offset;
+
705  SampleEncryption sample_encryption;
706 };
707 
- -
709  DECLARE_BOX_METHODS(SegmentIndex);
+
708 struct MovieFragment : Box {
+
709  DECLARE_BOX_METHODS(MovieFragment);
710 
-
711  uint32_t reference_id;
-
712  uint32_t timescale;
-
713  uint64_t earliest_presentation_time;
-
714  uint64_t first_offset;
-
715  std::vector<SegmentReference> references;
-
716 };
-
717 
-
718 // The actual data is parsed and written separately.
-
719 struct MediaData : Box {
-
720  DECLARE_BOX_METHODS(MediaData);
-
721 
-
722  uint32_t data_size;
-
723 };
-
724 
-
725 struct CueSourceIDBox : Box {
-
726  DECLARE_BOX_METHODS(CueSourceIDBox);
-
727  int32_t source_id;
-
728 };
-
729 
-
730 struct CueTimeBox : Box {
-
731  DECLARE_BOX_METHODS(CueTimeBox);
-
732  std::string cue_current_time;
-
733 };
-
734 
-
735 struct CueIDBox : Box {
-
736  DECLARE_BOX_METHODS(CueIDBox);
-
737  std::string cue_id;
-
738 };
-
739 
-
740 struct CueSettingsBox : Box {
-
741  DECLARE_BOX_METHODS(CueSettingsBox);
-
742  std::string settings;
-
743 };
-
744 
-
745 struct CuePayloadBox : Box {
-
746  DECLARE_BOX_METHODS(CuePayloadBox);
-
747  std::string cue_text;
-
748 };
-
749 
-
750 struct VTTEmptyCueBox : Box {
-
751  DECLARE_BOX_METHODS(VTTEmptyCueBox);
-
752 };
-
753 
- -
755  DECLARE_BOX_METHODS(VTTAdditionalTextBox);
-
756  std::string cue_additional_text;
-
757 };
-
758 
-
759 struct VTTCueBox : Box {
-
760  DECLARE_BOX_METHODS(VTTCueBox);
-
761 
-
762  CueSourceIDBox cue_source_id;
-
763  CueIDBox cue_id;
-
764  CueTimeBox cue_time;
-
765  CueSettingsBox cue_settings;
-
766  CuePayloadBox cue_payload;
-
767 };
-
768 
-
769 #undef DECLARE_BOX
-
770 
-
771 } // namespace mp4
-
772 } // namespace media
-
773 } // namespace edash_packager
+
711  MovieFragmentHeader header;
+
712  std::vector<TrackFragment> tracks;
+
713  std::vector<ProtectionSystemSpecificHeader> pssh;
+
714 };
+
715 
+ +
717  enum SAPType {
+
718  TypeUnknown = 0,
+
719  Type1 = 1, // T(ept) = T(dec) = T(sap) = T(ptf)
+
720  Type2 = 2, // T(ept) = T(dec) = T(sap) < T(ptf)
+
721  Type3 = 3, // T(ept) < T(dec) = T(sap) <= T(ptf)
+
722  Type4 = 4, // T(ept) <= T(ptf) < T(dec) = T(sap)
+
723  Type5 = 5, // T(ept) = T(dec) < T(sap)
+
724  Type6 = 6, // T(ept) < T(dec) < T(sap)
+
725  };
+
726 
+
727  bool reference_type;
+
728  uint32_t referenced_size;
+
729  uint32_t subsegment_duration;
+
730  bool starts_with_sap;
+
731  SAPType sap_type;
+
732  uint32_t sap_delta_time;
+
733  // We add this field to keep track of earliest_presentation_time in this
+
734  // subsegment. It is not part of SegmentReference.
+
735  uint64_t earliest_presentation_time;
+
736 };
+
737 
+ +
739  DECLARE_BOX_METHODS(SegmentIndex);
+
740 
+
741  uint32_t reference_id;
+
742  uint32_t timescale;
+
743  uint64_t earliest_presentation_time;
+
744  uint64_t first_offset;
+
745  std::vector<SegmentReference> references;
+
746 };
+
747 
+
748 // The actual data is parsed and written separately.
+
749 struct MediaData : Box {
+
750  DECLARE_BOX_METHODS(MediaData);
+
751 
+
752  uint32_t data_size;
+
753 };
+
754 
+
755 struct CueSourceIDBox : Box {
+
756  DECLARE_BOX_METHODS(CueSourceIDBox);
+
757  int32_t source_id;
+
758 };
+
759 
+
760 struct CueTimeBox : Box {
+
761  DECLARE_BOX_METHODS(CueTimeBox);
+
762  std::string cue_current_time;
+
763 };
+
764 
+
765 struct CueIDBox : Box {
+
766  DECLARE_BOX_METHODS(CueIDBox);
+
767  std::string cue_id;
+
768 };
+
769 
+
770 struct CueSettingsBox : Box {
+
771  DECLARE_BOX_METHODS(CueSettingsBox);
+
772  std::string settings;
+
773 };
774 
-
775 #endif // MEDIA_FORMATS_MP4_BOX_DEFINITIONS_H_
+
775 struct CuePayloadBox : Box {
+
776  DECLARE_BOX_METHODS(CuePayloadBox);
+
777  std::string cue_text;
+
778 };
+
779 
+
780 struct VTTEmptyCueBox : Box {
+
781  DECLARE_BOX_METHODS(VTTEmptyCueBox);
+
782 };
+
783 
+ +
785  DECLARE_BOX_METHODS(VTTAdditionalTextBox);
+
786  std::string cue_additional_text;
+
787 };
+
788 
+
789 struct VTTCueBox : Box {
+
790  DECLARE_BOX_METHODS(VTTCueBox);
+
791 
+
792  CueSourceIDBox cue_source_id;
+
793  CueIDBox cue_id;
+
794  CueTimeBox cue_time;
+
795  CueSettingsBox cue_settings;
+
796  CuePayloadBox cue_payload;
+
797 };
+
798 
+
799 #undef DECLARE_BOX
+
800 
+
801 } // namespace mp4
+
802 } // namespace media
+
803 } // namespace edash_packager
+
804 
+
805 #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
+ +
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.
- + - - - + + + - - + + - - + + - - + + - + - - + + - -
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 d87647df69..b7c40c456c 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 a9ea087697..37ab56c130 100644 --- a/docs/d5/d8f/webm__cluster__parser_8cc_source.html +++ b/docs/d5/d8f/webm__cluster__parser_8cc_source.html @@ -881,7 +881,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 43a06d4faa..57c5a6742c 100644 --- a/docs/d5/d91/es__parser__adts_8cc_source.html +++ b/docs/d5/d91/es__parser__adts_8cc_source.html @@ -371,12 +371,12 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
static scoped_refptr< MediaSample > CopyFrom(const uint8_t *data, size_t size, bool is_key_frame)
Definition: media_sample.cc:45
static size_t GetAdtsHeaderSize(const uint8_t *data, size_t num_bytes)
Definition: adts_header.cc:31
void Reset()
Reset the queue to the empty state.
Definition: byte_queue.cc:24
-
static std::string GetCodecString(AudioCodec codec, uint8_t audio_object_type)
+
static std::string GetCodecString(AudioCodec codec, uint8_t audio_object_type)
void Peek(const uint8_t **data, int *size) const
Definition: byte_queue.cc:63
diff --git a/docs/d5/d98/encryptor_8cc_source.html b/docs/d5/d98/encryptor_8cc_source.html index 8a07b23be4..de3786f385 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 468e3e19f6..95c7e2aef3 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 e0c7956138..f670ce3610 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 b54f1f6851..71b881da1d 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 0c1cd9bfe0..a38bf9e835 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 a00bc4d92b..afe0ce438b 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/dc8/classedash__packager_1_1media_1_1OpusPacket.html b/docs/d5/dc8/classedash__packager_1_1media_1_1OpusPacket.html index 9716451eb9..fb496a4d66 100644 --- a/docs/d5/dc8/classedash__packager_1_1media_1_1OpusPacket.html +++ b/docs/d5/dc8/classedash__packager_1_1media_1_1OpusPacket.html @@ -119,7 +119,7 @@ double duration_ms () 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 63fdf3ba2b..25db5bed1a 100644 --- a/docs/d5/dce/classedash__packager_1_1media_1_1Demuxer.html +++ b/docs/d5/dce/classedash__packager_1_1media_1_1Demuxer.html @@ -294,7 +294,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 6d3c4dc290..9090a20c5b 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 cb0b88d110..2e72bd76eb 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 f2ecb933b3..3243c88991 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 0cf888566b..694a802f22 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 f6f60c8374..0909e6af67 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 f1d564bdfd..f2bdb53bb4 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 a8a96647be..99cf3a20cc 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 f6aafe5664..9f84a18efb 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 @@ -103,7 +103,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 22914e0ca3..d922fd8cef 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 0151c3a7ab..06e3ffeea0 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 ec8b9b79d8..ed1cb333eb 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 7400e72909..3e48888382 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 fe3a65cd9a..f4187abdeb 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 7e076542c3..9af4225c03 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 861f8682b6..e99496a841 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 726b90b730..55147bdc71 100644 --- a/docs/d6/d17/es__parser__h264_8cc_source.html +++ b/docs/d6/d17/es__parser__h264_8cc_source.html @@ -482,7 +482,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 fe22cce587..a725a90399 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 9683bd2b04..985087b194 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 e23136c7d6..1a0d93850a 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 1951d8a3e8..837797809a 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 5eea0dbb9d..eae2de565b 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 3b7b2ac351..c7ae8749a6 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 221f73d81a..fbf832df47 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/d3d/structedash__packager_1_1media_1_1mp4_1_1IndependentSubstream.html b/docs/d6/d3d/structedash__packager_1_1media_1_1mp4_1_1IndependentSubstream.html new file mode 100644 index 0000000000..34dcac4cc0 --- /dev/null +++ b/docs/d6/d3d/structedash__packager_1_1media_1_1mp4_1_1IndependentSubstream.html @@ -0,0 +1,138 @@ + + + + + + +DASH Media Packaging SDK: edash_packager::media::mp4::IndependentSubstream Struct Reference + + + + + + + + + +
+
+ + + + + + +
+
DASH Media Packaging SDK +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
edash_packager::media::mp4::IndependentSubstream Struct Reference
+
+
+ + + + + + + + + + + + + + + + + + +

+Public Attributes

+uint8_t sample_rate_code
 
+uint8_t bit_stream_identification
 
+uint8_t audio_service
 
+uint8_t bit_stream_mode
 
+uint8_t audio_coding_mode
 
+uint8_t lfe_channel_on
 
+uint8_t number_dependent_substreams
 
+uint16_t channel_location
 
+

Detailed Description

+
+

Definition at line 319 of file box_definitions.h.

+

The documentation for this struct was generated from the following file: +
+ + + + diff --git a/docs/d6/d41/encrypting__fragmenter_8cc_source.html b/docs/d6/d41/encrypting__fragmenter_8cc_source.html index 3d03b2ab87..6e9af2c83d 100644 --- a/docs/d6/d41/encrypting__fragmenter_8cc_source.html +++ b/docs/d6/d41/encrypting__fragmenter_8cc_source.html @@ -320,7 +320,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)
virtual void FinalizeFragmentForEncryption()
Finalize current fragment for encryption.
@@ -328,7 +328,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 3cc9fe4502..61b8b13a6c 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 b1efff15c1..8a9ec6bdde 100644 --- a/docs/d6/d49/classedash__packager_1_1media_1_1AVCDecoderConfiguration.html +++ b/docs/d6/d49/classedash__packager_1_1media_1_1AVCDecoderConfiguration.html @@ -233,7 +233,7 @@ Static Public Member Functions 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 d83e9d3e24..e3a777455a 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/structedash__packager_1_1media_1_1mp4_1_1DataInformation.html b/docs/d6/d59/structedash__packager_1_1media_1_1mp4_1_1DataInformation.html index b7b452a2cf..90a512c501 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 501 of file box_definitions.h.

+

Definition at line 531 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 1685 of file box_definitions.cc.

+

Definition at line 1736 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 9fe450e065..db17e18ecb 100644 --- a/docs/d6/d5d/classedash__packager_1_1media_1_1HEVCDecoderConfiguration.html +++ b/docs/d6/d5d/classedash__packager_1_1media_1_1HEVCDecoderConfiguration.html @@ -185,7 +185,7 @@ Public Member Functions 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 12d83f41c4..4fb5e20453 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 e766ff55a1..1729d93bc0 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 e64ff84fd5..eee9af3f01 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 488 of file box_definitions.h.

+

Definition at line 518 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 1643 of file box_definitions.cc.

+

Definition at line 1694 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 a1d0ee3e14..474bbc42ef 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 80c6088bad..1e7be45af5 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 6dcca90e2c..a8b2dca881 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 759 of file box_definitions.h.

+

Definition at line 789 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 2511 of file box_definitions.cc.

+

Definition at line 2562 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 0ae94fbed2..3cf9bbdce2 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 b4856f1889..dba84af299 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 433 of file box_definitions.h.

+

Definition at line 463 of file box_definitions.h.

Member Function Documentation

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

-

Definition at line 825 of file box_definitions.cc.

+

Definition at line 826 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 6761129121..cfbac081c7 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 e894b85932..6f51225737 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 a90e8af76c..486451e3ed 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 3e9c414943..52c709887e 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 53f0cabd33..3a96dee806 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 e6496be104..d091d9bb1f 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 551 of file box_definitions.h.

+

Definition at line 581 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 1843 of file box_definitions.cc.

+

Definition at line 1894 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 7b1f274dab..c6ed62456c 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 27a32bc07b..eeb4b9611e 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 283f1b7bce..ca5c41ef53 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 0773a5abab..e70f2abac8 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 b01aad8c3f..cb37c9f411 100644 --- a/docs/d6/d9b/h264__parser_8h_source.html +++ b/docs/d6/d9b/h264__parser_8h_source.html @@ -516,7 +516,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 791903dc10..ee4749a25d 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 1553bf5a12..57ab350bab 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 0ba1a4108d..067810d44e 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 92a57d0b60..41d345323c 100644 --- a/docs/d6/da3/classedash__packager_1_1media_1_1H264Parser.html +++ b/docs/d6/da3/classedash__packager_1_1media_1_1H264Parser.html @@ -154,7 +154,7 @@ static bool FindStartCode< diff --git a/docs/d6/da3/mpd__builder_8h_source.html b/docs/d6/da3/mpd__builder_8h_source.html index 3c60e42505..dff7466b81 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 5eb3921ac1..0d06fa4f3c 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 467ff447dd..0112d40c8c 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 5d56ef05bd..3c353fbb73 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 67139f820c..8c9568482f 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 62dd75f5d9..aa7b0d5f21 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/dc4/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor.html b/docs/d6/dc4/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor.html index 73a0db470d..ae1b07425a 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 d873d0432b..bb85bfb979 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 61816e89f6..b001e96abc 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 bb4731c540..d2371c1d4d 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 428de6b0b1..3affc2d133 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 1248356445..4bd5a34d3a 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 bff6e2689a..837189c7b6 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 59563882bb..cae078dfee 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 aacdcf437c..1f20efcabe 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 558 of file box_definitions.h.

+

Definition at line 588 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 1871 of file box_definitions.cc.

+

Definition at line 1922 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 f79fac5365..d48c34a972 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 d07125958d..16032beded 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 f7525f8a4b..7774d0443a 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 8dd816dba1..542f8b0a47 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 29819af644..0f0f34136b 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 09ff1cb0d0..0da5d9f686 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 494 of file box_definitions.h.

+

Definition at line 524 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 1663 of file box_definitions.cc.

+

Definition at line 1714 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 4741abdb1c..3cd4f9617e 100644 --- a/docs/d7/d12/media__parser_8h_source.html +++ b/docs/d7/d12/media__parser_8h_source.html @@ -149,7 +149,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 c366256166..0973158382 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 6f8558606b..0887200207 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 3c5073239f..e10b10c33d 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 368 of file box_definitions.h.

+

Definition at line 398 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 67dc1fcede..6de488d38c 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 2bd2ce10e1..36d4dc93ef 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 d20ff80277..b0d728e24d 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 f7df5e5436..5173733e94 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 82098ce131..92112b1588 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 @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d44/classedash__packager_1_1MockMpdNotifier.html b/docs/d7/d44/classedash__packager_1_1MockMpdNotifier.html index 7f87dbdc56..8f93752b48 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 d66968cd4d..ff42aea7ce 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 745 of file box_definitions.h.

+

Definition at line 775 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 2461 of file box_definitions.cc.

+

Definition at line 2512 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 50eaf2b1a1..0cd3fe1fac 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 @@ -162,7 +162,7 @@ Additional Inherited Members

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

-

Definition at line 991 of file box_definitions.cc.

+

Definition at line 992 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 e76eb04434..6359cabdb5 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 9cfd1b7e39..d97b5a7193 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 617a8e6cfe..fd28b18a83 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 648 of file box_definitions.h.

+

Definition at line 678 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 new file mode 100644 index 0000000000..8bcf1f141c --- /dev/null +++ b/docs/d7/d56/structedash__packager_1_1media_1_1mp4_1_1EC3Specific-members.html @@ -0,0 +1,119 @@ + + + + + + +DASH Media Packaging SDK: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    DASH Media Packaging SDK +
    +
    +
    + + + + + + + + + +
    + +
    + + +
    +
    +
    +
    edash_packager::media::mp4::EC3Specific Member List
    +
    + + + + + 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 c8cb254970..ba54dbe2ea 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 9b4757290f..d976b79f76 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 46dac5bb1f..51875ad355 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 ae25a98991..4d083e62a2 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 663c0969f0..aa53bbcf5f 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 12f58f9e5c..46623dbfe1 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 9be2c15770..65fc959b3b 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 @@ -113,29 +113,30 @@ Inheritance diagram for edash_packager::media::mp4::Box: edash_packager::media::mp4::CueTimeBox edash_packager::media::mp4::DataInformation edash_packager::media::mp4::DTSSpecific -edash_packager::media::mp4::Edit -edash_packager::media::mp4::FileType -edash_packager::media::mp4::FullBox -edash_packager::media::mp4::Media -edash_packager::media::mp4::MediaData -edash_packager::media::mp4::MediaInformation -edash_packager::media::mp4::Movie -edash_packager::media::mp4::MovieExtends -edash_packager::media::mp4::MovieFragment -edash_packager::media::mp4::OriginalFormat -edash_packager::media::mp4::PixelAspectRatio -edash_packager::media::mp4::ProtectionSchemeInfo -edash_packager::media::mp4::SampleTable -edash_packager::media::mp4::SchemeInfo -edash_packager::media::mp4::Track -edash_packager::media::mp4::TrackFragment -edash_packager::media::mp4::VideoSampleEntry -edash_packager::media::mp4::VTTAdditionalTextBox -edash_packager::media::mp4::VTTCueBox -edash_packager::media::mp4::VTTEmptyCueBox -edash_packager::media::mp4::WebVTTConfigurationBox -edash_packager::media::mp4::WebVTTSourceLabelBox -edash_packager::media::mp4::WVTTSampleEntry +edash_packager::media::mp4::EC3Specific +edash_packager::media::mp4::Edit +edash_packager::media::mp4::FileType +edash_packager::media::mp4::FullBox +edash_packager::media::mp4::Media +edash_packager::media::mp4::MediaData +edash_packager::media::mp4::MediaInformation +edash_packager::media::mp4::Movie +edash_packager::media::mp4::MovieExtends +edash_packager::media::mp4::MovieFragment +edash_packager::media::mp4::OriginalFormat +edash_packager::media::mp4::PixelAspectRatio +edash_packager::media::mp4::ProtectionSchemeInfo +edash_packager::media::mp4::SampleTable +edash_packager::media::mp4::SchemeInfo +edash_packager::media::mp4::Track +edash_packager::media::mp4::TrackFragment +edash_packager::media::mp4::VideoSampleEntry +edash_packager::media::mp4::VTTAdditionalTextBox +edash_packager::media::mp4::VTTCueBox +edash_packager::media::mp4::VTTEmptyCueBox +edash_packager::media::mp4::WebVTTConfigurationBox +edash_packager::media::mp4::WebVTTSourceLabelBox +edash_packager::media::mp4::WVTTSampleEntry @@ -220,7 +221,7 @@ class 
    Returns
    box type.
    -

    Implemented in edash_packager::media::mp4::VTTCueBox, edash_packager::media::mp4::VTTAdditionalTextBox, edash_packager::media::mp4::VTTEmptyCueBox, edash_packager::media::mp4::CuePayloadBox, edash_packager::media::mp4::CueSettingsBox, edash_packager::media::mp4::CueIDBox, edash_packager::media::mp4::CueTimeBox, edash_packager::media::mp4::CueSourceIDBox, edash_packager::media::mp4::MediaData, edash_packager::media::mp4::SegmentIndex, edash_packager::media::mp4::MovieFragment, edash_packager::media::mp4::TrackFragment, edash_packager::media::mp4::SampleGroupDescription, edash_packager::media::mp4::SampleToGroup, edash_packager::media::mp4::TrackFragmentRun, edash_packager::media::mp4::TrackFragmentHeader, edash_packager::media::mp4::MovieFragmentHeader, edash_packager::media::mp4::TrackFragmentDecodeTime, edash_packager::media::mp4::Movie, edash_packager::media::mp4::MovieExtends, edash_packager::media::mp4::TrackExtends, edash_packager::media::mp4::MovieExtendsHeader, edash_packager::media::mp4::Track, edash_packager::media::mp4::Media, edash_packager::media::mp4::MediaInformation, edash_packager::media::mp4::DataInformation, edash_packager::media::mp4::DataReference, edash_packager::media::mp4::DataEntryUrl, edash_packager::media::mp4::SubtitleMediaHeader, edash_packager::media::mp4::SoundMediaHeader, edash_packager::media::mp4::VideoMediaHeader, edash_packager::media::mp4::MediaHeader, edash_packager::media::mp4::SampleTable, edash_packager::media::mp4::SyncSample, edash_packager::media::mp4::ChunkOffset, edash_packager::media::mp4::ChunkLargeOffset, edash_packager::media::mp4::CompactSampleSize, edash_packager::media::mp4::SampleSize, edash_packager::media::mp4::SampleToChunk, edash_packager::media::mp4::CompositionTimeToSample, edash_packager::media::mp4::DecodingTimeToSample, edash_packager::media::mp4::SampleDescription, edash_packager::media::mp4::WVTTSampleEntry, edash_packager::media::mp4::WebVTTSourceLabelBox, edash_packager::media::mp4::WebVTTConfigurationBox, edash_packager::media::mp4::AudioSampleEntry, edash_packager::media::mp4::AC3Specific, edash_packager::media::mp4::DTSSpecific, edash_packager::media::mp4::ElementaryStreamDescriptor, edash_packager::media::mp4::VideoSampleEntry, edash_packager::media::mp4::PixelAspectRatio, edash_packager::media::mp4::CodecConfigurationRecord, edash_packager::media::mp4::Metadata, edash_packager::media::mp4::ID3v2, edash_packager::media::mp4::HandlerReference, edash_packager::media::mp4::Edit, edash_packager::media::mp4::EditList, edash_packager::media::mp4::TrackHeader, edash_packager::media::mp4::MovieHeader, edash_packager::media::mp4::ProtectionSchemeInfo, edash_packager::media::mp4::SchemeInfo, edash_packager::media::mp4::TrackEncryption, edash_packager::media::mp4::SchemeType, edash_packager::media::mp4::OriginalFormat, edash_packager::media::mp4::SampleEncryption, edash_packager::media::mp4::SampleAuxiliaryInformationSize, edash_packager::media::mp4::SampleAuxiliaryInformationOffset, edash_packager::media::mp4::ProtectionSystemSpecificHeader, edash_packager::media::mp4::SegmentType, and edash_packager::media::mp4::FileType.

    +

    Implemented in edash_packager::media::mp4::VTTCueBox, edash_packager::media::mp4::VTTAdditionalTextBox, edash_packager::media::mp4::VTTEmptyCueBox, edash_packager::media::mp4::CuePayloadBox, edash_packager::media::mp4::CueSettingsBox, edash_packager::media::mp4::CueIDBox, edash_packager::media::mp4::CueTimeBox, edash_packager::media::mp4::CueSourceIDBox, edash_packager::media::mp4::MediaData, edash_packager::media::mp4::SegmentIndex, edash_packager::media::mp4::MovieFragment, edash_packager::media::mp4::TrackFragment, edash_packager::media::mp4::SampleGroupDescription, edash_packager::media::mp4::SampleToGroup, edash_packager::media::mp4::TrackFragmentRun, edash_packager::media::mp4::TrackFragmentHeader, edash_packager::media::mp4::MovieFragmentHeader, edash_packager::media::mp4::TrackFragmentDecodeTime, edash_packager::media::mp4::Movie, edash_packager::media::mp4::MovieExtends, edash_packager::media::mp4::TrackExtends, edash_packager::media::mp4::MovieExtendsHeader, edash_packager::media::mp4::Track, edash_packager::media::mp4::Media, edash_packager::media::mp4::MediaInformation, edash_packager::media::mp4::DataInformation, edash_packager::media::mp4::DataReference, edash_packager::media::mp4::DataEntryUrl, edash_packager::media::mp4::SubtitleMediaHeader, edash_packager::media::mp4::SoundMediaHeader, edash_packager::media::mp4::VideoMediaHeader, edash_packager::media::mp4::MediaHeader, edash_packager::media::mp4::SampleTable, edash_packager::media::mp4::SyncSample, edash_packager::media::mp4::ChunkOffset, edash_packager::media::mp4::ChunkLargeOffset, edash_packager::media::mp4::CompactSampleSize, edash_packager::media::mp4::SampleSize, edash_packager::media::mp4::SampleToChunk, edash_packager::media::mp4::CompositionTimeToSample, edash_packager::media::mp4::DecodingTimeToSample, edash_packager::media::mp4::SampleDescription, edash_packager::media::mp4::WVTTSampleEntry, edash_packager::media::mp4::WebVTTSourceLabelBox, edash_packager::media::mp4::WebVTTConfigurationBox, edash_packager::media::mp4::AudioSampleEntry, edash_packager::media::mp4::EC3Specific, edash_packager::media::mp4::AC3Specific, edash_packager::media::mp4::DTSSpecific, edash_packager::media::mp4::ElementaryStreamDescriptor, edash_packager::media::mp4::VideoSampleEntry, edash_packager::media::mp4::PixelAspectRatio, edash_packager::media::mp4::CodecConfigurationRecord, edash_packager::media::mp4::Metadata, edash_packager::media::mp4::ID3v2, edash_packager::media::mp4::HandlerReference, edash_packager::media::mp4::Edit, edash_packager::media::mp4::EditList, edash_packager::media::mp4::TrackHeader, edash_packager::media::mp4::MovieHeader, edash_packager::media::mp4::ProtectionSchemeInfo, edash_packager::media::mp4::SchemeInfo, edash_packager::media::mp4::TrackEncryption, edash_packager::media::mp4::SchemeType, edash_packager::media::mp4::OriginalFormat, edash_packager::media::mp4::SampleEncryption, edash_packager::media::mp4::SampleAuxiliaryInformationSize, edash_packager::media::mp4::SampleAuxiliaryInformationOffset, edash_packager::media::mp4::ProtectionSystemSpecificHeader, edash_packager::media::mp4::SegmentType, and edash_packager::media::mp4::FileType.

    @@ -383,7 +384,7 @@ class  diff --git a/docs/d7/d8a/structedash__packager_1_1media_1_1mp4_1_1Box.png b/docs/d7/d8a/structedash__packager_1_1media_1_1mp4_1_1Box.png index 16383d5f3e..cb02adbf57 100644 Binary files a/docs/d7/d8a/structedash__packager_1_1media_1_1mp4_1_1Box.png and b/docs/d7/d8a/structedash__packager_1_1media_1_1mp4_1_1Box.png differ 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 3524cdf88d..82fca79b98 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');
    BoxBuffer BoxBuffer
    diff --git a/docs/d7/d9d/progress__listener_8h_source.html b/docs/d7/d9d/progress__listener_8h_source.html index 1d5d5909fb..7d39ac0ec3 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 945f7ca0fa..45f6bdb8f3 100644 --- a/docs/d7/da4/track__run__iterator_8h_source.html +++ b/docs/d7/da4/track__run__iterator_8h_source.html @@ -183,19 +183,19 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
    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 1d9c39fae8..6016c5d78d 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 409 of file box_definitions.h.

    +

    Definition at line 439 of file box_definitions.h.

    Member Function Documentation

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

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

    -

    Definition at line 745 of file box_definitions.cc.

    +

    Definition at line 746 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 0e91dfc195..b9c7a8d8ae 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 1667beb82a..f002fffb9b 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 afe7aac415..9d7464a88d 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 562e791341..d3413d0cc1 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 337 of file box_definitions.h.

    +

    Definition at line 367 of file box_definitions.h.

    Member Function Documentation

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

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

    -

    Definition at line 1506 of file box_definitions.cc.

    +

    Definition at line 1557 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 3d5a9ad232..72490d1810 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 bb5b165405..9edca37e14 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 df8f6eea8e..9ad856548e 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 9f8332a480..c630c0ce14 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 29a09de5dc..96cd475dc7 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 73b3e9168c..35c7c4d23e 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 @@ -139,7 +139,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 ffbb3c8bdf..13e4c0bdbd 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 459 of file box_definitions.h.

    +

    Definition at line 489 of file box_definitions.h.

    Member Function Documentation

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

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

    -

    Definition at line 1568 of file box_definitions.cc.

    +

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

    Implements edash_packager::media::MediaParser.

    -

    Definition at line 118 of file mp4_media_parser.cc.

    +

    Definition at line 120 of file mp4_media_parser.cc.

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

    Implements edash_packager::media::MediaParser.

    -

    Definition at line 97 of file mp4_media_parser.cc.

    +

    Definition at line 99 of file mp4_media_parser.cc.

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

    Definition at line 158 of file mp4_media_parser.cc.

    +

    Definition at line 160 of file mp4_media_parser.cc.

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

    Implements edash_packager::media::MediaParser.

    -

    Definition at line 124 of file mp4_media_parser.cc.

    +

    Definition at line 126 of file mp4_media_parser.cc.

    @@ -284,7 +284,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 0ebdc45522..efa71b97d7 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 46f622c7b6..24f3b5c232 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 e62276b988..ba6e5f63d9 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 @@ -374,7 +374,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 88348a788d..d5c0f06df1 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 395 of file box_definitions.h.

    +

    Definition at line 425 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 1e14e2a679..9cc7b780eb 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 c40f012d5a..4cdaf01bb3 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 ab90e175f1..5c62dc6351 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 5d8db8c3ff..4092c2bd1d 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 f9b91a393e..5831680f32 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 572ad7f3ee..e9172f6f19 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 d79e436133..9eebfef4ec 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 a18d29135b..66575bb926 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 @@ -171,7 +171,7 @@ Additional Inherited Members

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

    -

    Definition at line 954 of file box_definitions.cc.

    +

    Definition at line 955 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 678e9dbd85..18e0cf2bdd 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 db7f2e7be2..1b427e004c 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 31a52f90e6..d26659cd24 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 7068aad534..ae911ba28c 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 35912be206..b53aad76e1 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 88e9a79268..161a3312cd 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 b43ed6ef80..51741ab1b6 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 274a15bdff..df24938346 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 93ecbaccce..1654815fe4 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 75dd35d811..20a7f0d84f 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 7d2b78e36c..3641685552 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 efa2d143bc..1f150636fa 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 dc7f5641ab..0510247f68 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 9062fa11bf..0efb139a42 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 cd9c4b813e..f58cecdcc4 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 2de5616b2e..aeaf902eb2 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 9e39e8c1cb..b22136cc4a 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 @@ -255,7 +255,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 2886fdad38..75a704b63f 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 5a5d3630ae..0e6ef51b91 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 31856eb43f..7473698e41 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 cccbf71f0f..b2e41ee345 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 45136ef15a..28eae80838 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 0bd6757c8f..e87a05efb4 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 8ce03fc969..7b428c0dd7 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 263f558595..98cfdbb832 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 64d90a64d2..7d84de3d08 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 5fc43ba3ab..7ccc41ccb0 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 @@ -133,7 +133,7 @@ std::vector<
    Returns
    The size of the structure in bytes when it is stored.
    -

    Definition at line 296 of file box_definitions.cc.

    +

    Definition at line 297 of file box_definitions.cc.

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

    Definition at line 305 of file box_definitions.cc.

    +

    Definition at line 306 of file box_definitions.cc.

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

    Definition at line 271 of file box_definitions.cc.

    +

    Definition at line 272 of file box_definitions.cc.

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

    Definition at line 247 of file box_definitions.cc.

    +

    Definition at line 248 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 76c1288736..ef676365a4 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 8c921026a8..259c907341 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 3504f596f3..cb5783d9a7 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/dfd/structedash__packager_1_1media_1_1VPxFrameInfo.html b/docs/d8/dfd/structedash__packager_1_1media_1_1VPxFrameInfo.html index e7d689a7a7..0cca05cb72 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 03afff2bdc..05f220176a 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 d1db2e93ed..549254525d 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 0aa163cbbf..4f38bd3ac4 100644 --- a/docs/d9/d15/key__rotation__fragmenter_8cc_source.html +++ b/docs/d9/d15/key__rotation__fragmenter_8cc_source.html @@ -222,15 +222,15 @@ 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
    - - + +
    KeyRotationFragmenter(MovieFragment *moof, TrackFragment *traf, KeySource *encryption_key_source, KeySource::TrackType track_type, int64_t crypto_period_duration, int64_t clear_time, VideoCodec video_codec, uint8_t nalu_length_size, MuxerListener *muxer_listener)
    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 6b30da3390..d408dd266a 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 fcf8e1c9e2..e27184c166 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 438 of file box_definitions.h.

    +

    Definition at line 468 of file box_definitions.h.

    Member Function Documentation

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

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

    -

    Definition at line 880 of file box_definitions.cc.

    +

    Definition at line 881 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 4cf14051fc..2f215050e4 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 @@ -178,7 +178,7 @@ Additional Inherited Members

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

    -

    Definition at line 1145 of file box_definitions.cc.

    +

    Definition at line 1146 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 5e23611c1b..cbbd0d5490 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 9e40d52bad..9dafe496a7 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 9dec372c26..ae3cf73579 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 ffe7db7939..d614116cd7 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 9028b71256..8a5439ae14 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 580 of file box_definitions.h.

    +

    Definition at line 610 of file box_definitions.h.

    Member Function Documentation

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

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

    -

    Definition at line 1940 of file box_definitions.cc.

    +

    Definition at line 1991 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 ba3e847ebb..6a8c277c43 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 219b4fe4de..185e8d5948 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 b22eaf8106..c5d6a97385 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 dc2695b3ef..6ae79d5ef7 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 4b0b287070..826a9d1b7f 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 6888c17bf0..27b5014a25 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 e69db81a97..c5b9a2a3f3 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 1ec101bf1d..3ea139cad0 100644 --- a/docs/d9/d91/h264__bit__reader_8h_source.html +++ b/docs/d9/d91/h264__bit__reader_8h_source.html @@ -170,7 +170,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 43e153211b..75123229d8 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 b773a09ded..27000d1a98 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 3ad6d58595..4d995a0e4d 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 @@ -103,7 +103,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 284ff05266..17e1873b0d 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 5866e9de3d..1352e3a8c8 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 b71c4f13a9..a80a2bd4b4 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 cec9b2c29b..1fb001f00e 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 716c290958..a2f5638da6 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 5b864907f1..463b314774 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 9adfe4b162..d5150fe6fc 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 09d2da7b0f..777085a8b5 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 @@ -174,7 +174,7 @@ Additional Inherited Members

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

    -

    Definition at line 1357 of file box_definitions.cc.

    +

    Definition at line 1358 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 4ca92176fb..cc6edcf040 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 6dc2ce0005..dbaa95ccfe 100644 --- a/docs/d9/de3/muxer__listener__internal_8cc_source.html +++ b/docs/d9/de3/muxer__listener__internal_8cc_source.html @@ -326,7 +326,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 bbd6860261..c8f8815858 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 e0273439e2..e6682c464c 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 6ce3002f6b..b84a80e299 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 a2a6c1090b..fa40793309 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 2689bac4fa..220db1e0e1 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 1d9826003f..b906f0a162 100644 --- a/docs/da/d04/audio__stream__info_8cc_source.html +++ b/docs/da/d04/audio__stream__info_8cc_source.html @@ -122,106 +122,110 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
    33  return "DTS-";
    34  case kCodecDTSP:
    35  return "DTS+";
    -
    36  case kCodecOpus:
    -
    37  return "Opus";
    -
    38  case kCodecVorbis:
    -
    39  return "Vorbis";
    -
    40  default:
    -
    41  NOTIMPLEMENTED() << "Unknown Audio Codec: " << audio_codec;
    -
    42  return "UnknownAudioCodec";
    -
    43  }
    -
    44 }
    -
    45 } // namespace
    -
    46 
    - -
    48  uint32_t time_scale,
    -
    49  uint64_t duration,
    -
    50  AudioCodec codec,
    -
    51  const std::string& codec_string,
    -
    52  const std::string& language,
    -
    53  uint8_t sample_bits,
    -
    54  uint8_t num_channels,
    -
    55  uint32_t sampling_frequency,
    -
    56  uint32_t max_bitrate,
    -
    57  uint32_t avg_bitrate,
    -
    58  const uint8_t* extra_data,
    -
    59  size_t extra_data_size,
    -
    60  bool is_encrypted)
    -
    61  : StreamInfo(kStreamAudio,
    -
    62  track_id,
    -
    63  time_scale,
    -
    64  duration,
    -
    65  codec_string,
    -
    66  language,
    -
    67  extra_data,
    -
    68  extra_data_size,
    -
    69  is_encrypted),
    -
    70  codec_(codec),
    -
    71  sample_bits_(sample_bits),
    -
    72  num_channels_(num_channels),
    -
    73  sampling_frequency_(sampling_frequency),
    -
    74  max_bitrate_(max_bitrate),
    -
    75  avg_bitrate_(avg_bitrate) {}
    -
    76 
    -
    77 AudioStreamInfo::~AudioStreamInfo() {}
    +
    36  case kCodecEAC3:
    +
    37  return "EAC3";
    +
    38  case kCodecOpus:
    +
    39  return "Opus";
    +
    40  case kCodecVorbis:
    +
    41  return "Vorbis";
    +
    42  default:
    +
    43  NOTIMPLEMENTED() << "Unknown Audio Codec: " << audio_codec;
    +
    44  return "UnknownAudioCodec";
    +
    45  }
    +
    46 }
    +
    47 } // namespace
    +
    48 
    + +
    50  uint32_t time_scale,
    +
    51  uint64_t duration,
    +
    52  AudioCodec codec,
    +
    53  const std::string& codec_string,
    +
    54  const std::string& language,
    +
    55  uint8_t sample_bits,
    +
    56  uint8_t num_channels,
    +
    57  uint32_t sampling_frequency,
    +
    58  uint32_t max_bitrate,
    +
    59  uint32_t avg_bitrate,
    +
    60  const uint8_t* extra_data,
    +
    61  size_t extra_data_size,
    +
    62  bool is_encrypted)
    +
    63  : StreamInfo(kStreamAudio,
    +
    64  track_id,
    +
    65  time_scale,
    +
    66  duration,
    +
    67  codec_string,
    +
    68  language,
    +
    69  extra_data,
    +
    70  extra_data_size,
    +
    71  is_encrypted),
    +
    72  codec_(codec),
    +
    73  sample_bits_(sample_bits),
    +
    74  num_channels_(num_channels),
    +
    75  sampling_frequency_(sampling_frequency),
    +
    76  max_bitrate_(max_bitrate),
    +
    77  avg_bitrate_(avg_bitrate) {}
    78 
    - -
    80  return codec_ != kUnknownAudioCodec && num_channels_ != 0 &&
    -
    81  num_channels_ <= limits::kMaxChannels && sample_bits_ > 0 &&
    -
    82  sample_bits_ <= limits::kMaxBitsPerSample &&
    -
    83  sampling_frequency_ > 0 &&
    -
    84  sampling_frequency_ <= limits::kMaxSampleRate;
    -
    85 }
    -
    86 
    -
    87 std::string AudioStreamInfo::ToString() const {
    -
    88  return base::StringPrintf(
    -
    89  "%s codec: %s\n sample_bits: %d\n num_channels: %d\n "
    -
    90  "sampling_frequency: %d\n language: %s\n",
    -
    91  StreamInfo::ToString().c_str(), AudioCodecToString(codec_).c_str(),
    -
    92  sample_bits_, num_channels_, sampling_frequency_, language().c_str());
    -
    93 }
    -
    94 
    -
    95 std::string AudioStreamInfo::GetCodecString(AudioCodec codec,
    -
    96  uint8_t audio_object_type) {
    -
    97  switch (codec) {
    -
    98  case kCodecVorbis:
    -
    99  return "vorbis";
    -
    100  case kCodecOpus:
    -
    101  return "opus";
    -
    102  case kCodecAAC:
    -
    103  return "mp4a.40." + base::UintToString(audio_object_type);
    -
    104  case kCodecDTSC:
    -
    105  return "dtsc";
    -
    106  case kCodecDTSH:
    -
    107  return "dtsh";
    -
    108  case kCodecDTSL:
    -
    109  return "dtsl";
    -
    110  case kCodecDTSE:
    -
    111  return "dtse";
    -
    112  case kCodecDTSP:
    -
    113  return "dts+";
    -
    114  case kCodecDTSM:
    -
    115  return "dts-";
    -
    116  case kCodecAC3:
    -
    117  return "ac-3";
    -
    118  default:
    -
    119  NOTIMPLEMENTED() << "Codec: " << codec;
    -
    120  return "unknown";
    -
    121  }
    -
    122 }
    -
    123 
    -
    124 } // namespace media
    -
    125 } // namespace edash_packager
    -
    std::string ToString() const override
    +
    79 AudioStreamInfo::~AudioStreamInfo() {}
    +
    80 
    + +
    82  return codec_ != kUnknownAudioCodec && num_channels_ != 0 &&
    +
    83  num_channels_ <= limits::kMaxChannels && sample_bits_ > 0 &&
    +
    84  sample_bits_ <= limits::kMaxBitsPerSample &&
    +
    85  sampling_frequency_ > 0 &&
    +
    86  sampling_frequency_ <= limits::kMaxSampleRate;
    +
    87 }
    +
    88 
    +
    89 std::string AudioStreamInfo::ToString() const {
    +
    90  return base::StringPrintf(
    +
    91  "%s codec: %s\n sample_bits: %d\n num_channels: %d\n "
    +
    92  "sampling_frequency: %d\n language: %s\n",
    +
    93  StreamInfo::ToString().c_str(), AudioCodecToString(codec_).c_str(),
    +
    94  sample_bits_, num_channels_, sampling_frequency_, language().c_str());
    +
    95 }
    +
    96 
    +
    97 std::string AudioStreamInfo::GetCodecString(AudioCodec codec,
    +
    98  uint8_t audio_object_type) {
    +
    99  switch (codec) {
    +
    100  case kCodecVorbis:
    +
    101  return "vorbis";
    +
    102  case kCodecOpus:
    +
    103  return "opus";
    +
    104  case kCodecAAC:
    +
    105  return "mp4a.40." + base::UintToString(audio_object_type);
    +
    106  case kCodecDTSC:
    +
    107  return "dtsc";
    +
    108  case kCodecDTSH:
    +
    109  return "dtsh";
    +
    110  case kCodecDTSL:
    +
    111  return "dtsl";
    +
    112  case kCodecDTSE:
    +
    113  return "dtse";
    +
    114  case kCodecDTSP:
    +
    115  return "dts+";
    +
    116  case kCodecDTSM:
    +
    117  return "dts-";
    +
    118  case kCodecAC3:
    +
    119  return "ac-3";
    +
    120  case kCodecEAC3:
    +
    121  return "ec-3";
    +
    122  default:
    +
    123  NOTIMPLEMENTED() << "Codec: " << codec;
    +
    124  return "unknown";
    +
    125  }
    +
    126 }
    +
    127 
    +
    128 } // namespace media
    +
    129 } // namespace edash_packager
    +
    std::string ToString() const override
    Abstract class holds stream information.
    Definition: stream_info.h:26
    -
    AudioStreamInfo(int track_id, uint32_t time_scale, uint64_t duration, AudioCodec codec, const std::string &codec_string, const std::string &language, uint8_t sample_bits, uint8_t num_channels, uint32_t sampling_frequency, uint32_t max_bitrate, uint32_t avg_bitrate, const uint8_t *extra_data, size_t extra_data_size, bool is_encrypted)
    Construct an initialized audio stream info object.
    +
    AudioStreamInfo(int track_id, uint32_t time_scale, uint64_t duration, AudioCodec codec, const std::string &codec_string, const std::string &language, uint8_t sample_bits, uint8_t num_channels, uint32_t sampling_frequency, uint32_t max_bitrate, uint32_t avg_bitrate, const uint8_t *extra_data, size_t extra_data_size, bool is_encrypted)
    Construct an initialized audio stream info object.
    virtual std::string ToString() const
    Definition: stream_info.cc:40
    - -
    static std::string GetCodecString(AudioCodec codec, uint8_t audio_object_type)
    + +
    static std::string GetCodecString(AudioCodec codec, uint8_t audio_object_type)
    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 530d328982..d130a9413d 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 788fd8fbc1..297c976539 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 58cf0e2027..5977d28743 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 c9ebf33e76..92ae93db91 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 535 of file box_definitions.h.

    +

    Definition at line 565 of file box_definitions.h.

    Member Function Documentation

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

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

    -

    Definition at line 1798 of file box_definitions.cc.

    +

    Definition at line 1849 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 e1b6e7a580..aeece701fb 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 291d8277e9..d5d4fc31bc 100644 --- a/docs/da/d22/key__rotation__fragmenter_8h_source.html +++ b/docs/da/d22/key__rotation__fragmenter_8h_source.html @@ -149,13 +149,13 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
    KeySource is responsible for encryption key acquisition.
    Definition: key_source.h:29
    - - + +
    KeyRotationFragmenter(MovieFragment *moof, TrackFragment *traf, KeySource *encryption_key_source, KeySource::TrackType track_type, int64_t crypto_period_duration, int64_t clear_time, VideoCodec video_codec, uint8_t nalu_length_size, MuxerListener *muxer_listener)
    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 3b0c8073ea..6a43981ebb 100644 --- a/docs/da/d27/classedash__packager_1_1media_1_1AudioStreamInfo.html +++ b/docs/da/d27/classedash__packager_1_1media_1_1AudioStreamInfo.html @@ -199,7 +199,7 @@ Static Public Member Functions

    Detailed Description

    Holds audio stream information.

    -

    Definition at line 34 of file audio_stream_info.h.

    +

    Definition at line 35 of file audio_stream_info.h.

    Member Function Documentation

    @@ -240,7 +240,7 @@ Static Public Member Functions
    Returns
    The codec string.
    -

    Definition at line 95 of file audio_stream_info.cc.

    +

    Definition at line 97 of file audio_stream_info.cc.

    @@ -268,7 +268,7 @@ Static Public Member Functions

    Implements edash_packager::media::StreamInfo.

    -

    Definition at line 79 of file audio_stream_info.cc.

    +

    Definition at line 81 of file audio_stream_info.cc.

    @@ -296,7 +296,7 @@ Static Public Member Functions

    Reimplemented from edash_packager::media::StreamInfo.

    -

    Definition at line 87 of file audio_stream_info.cc.

    +

    Definition at line 89 of file audio_stream_info.cc.

    @@ -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 4da100699b..3816ad051a 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 @@ -177,7 +177,7 @@ Additional Inherited Members

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

    -

    Definition at line 157 of file box_definitions.cc.

    +

    Definition at line 158 of file box_definitions.cc.

    @@ -188,7 +188,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 c3195b0f48..b09b213f94 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/d37/classedash__packager_1_1media_1_1IoCache-members.html b/docs/da/d37/classedash__packager_1_1media_1_1IoCache-members.html index 7e3e54b330..095b0c5919 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 715f7978e8..817cdfcb20 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 0a52393690..5fc8383a48 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 d183760989..ea793d895a 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 9296c0993c..583b3c14f0 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 ee6d662a73..3f2b86676a 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 425c4c1806..19efdc80cd 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 @@ -162,7 +162,7 @@ Additional Inherited Members

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

    -

    Definition at line 383 of file box_definitions.cc.

    +

    Definition at line 384 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 97a1e5a0be..6ac1e6fb86 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 389 of file box_definitions.h.

    +

    Definition at line 419 of file box_definitions.h.

    Member Function Documentation

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

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

    -

    Definition at line 668 of file box_definitions.cc.

    +

    Definition at line 669 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 a15a2f1db9..ad865450a4 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 ff35ed1848..8d8d6b36a9 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 f2334efeb0..a93345c20c 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 3853d71a05..d2779ba944 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 7ea86daa39..23fc3373cb 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 cf16c4f489..bed9384287 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 84488bd8bb..328cda1980 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 @@ -110,7 +110,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 a82b599524..ae9649780f 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 1f08ad6933..3610337b0f 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 f6b86bb585..807888065d 100644 --- a/docs/da/d7f/hevc__decoder__configuration_8h_source.html +++ b/docs/da/d7f/hevc__decoder__configuration_8h_source.html @@ -141,7 +141,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 26def45272..dba42ec0ab 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 426 of file box_definitions.h.

    +

    Definition at line 456 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 844 of file box_definitions.cc.

    +

    Definition at line 845 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 aa283533e1..97d4641dfc 100644 --- a/docs/da/d88/mp4__muxer_8cc_source.html +++ b/docs/da/d88/mp4__muxer_8cc_source.html @@ -164,299 +164,304 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
    75  return FOURCC_DTSE;
    76  case kCodecDTSM:
    77  return FOURCC_DTSM;
    -
    78  default:
    -
    79  return FOURCC_NULL;
    -
    80  }
    -
    81 }
    -
    82 
    -
    83 } // namespace
    +
    78  case kCodecEAC3:
    +
    79  return FOURCC_EAC3;
    +
    80  default:
    +
    81  return FOURCC_NULL;
    +
    82  }
    +
    83 }
    84 
    -
    85 MP4Muxer::MP4Muxer(const MuxerOptions& options) : Muxer(options) {}
    -
    86 MP4Muxer::~MP4Muxer() {}
    -
    87 
    -
    88 Status MP4Muxer::Initialize() {
    -
    89  DCHECK(!streams().empty());
    -
    90 
    -
    91  scoped_ptr<FileType> ftyp(new FileType);
    -
    92  scoped_ptr<Movie> moov(new Movie);
    -
    93 
    -
    94  ftyp->major_brand = FOURCC_DASH;
    -
    95  ftyp->compatible_brands.push_back(FOURCC_ISO6);
    -
    96  ftyp->compatible_brands.push_back(FOURCC_MP41);
    -
    97  if (streams().size() == 1 &&
    -
    98  streams()[0]->info()->stream_type() == kStreamVideo) {
    -
    99  const FourCC codec_fourcc = VideoCodecToFourCC(
    -
    100  static_cast<VideoStreamInfo*>(streams()[0]->info().get())->codec());
    -
    101  if (codec_fourcc != FOURCC_NULL)
    -
    102  ftyp->compatible_brands.push_back(codec_fourcc);
    -
    103  }
    -
    104 
    -
    105  moov->header.creation_time = IsoTimeNow();
    -
    106  moov->header.modification_time = IsoTimeNow();
    -
    107  moov->header.next_track_id = streams().size() + 1;
    -
    108 
    -
    109  moov->tracks.resize(streams().size());
    -
    110  moov->extends.tracks.resize(streams().size());
    -
    111 
    -
    112  // Initialize tracks.
    -
    113  for (uint32_t i = 0; i < streams().size(); ++i) {
    -
    114  Track& trak = moov->tracks[i];
    -
    115  trak.header.track_id = i + 1;
    -
    116 
    -
    117  TrackExtends& trex = moov->extends.tracks[i];
    -
    118  trex.track_id = trak.header.track_id;
    -
    119  trex.default_sample_description_index = 1;
    -
    120 
    -
    121  switch (streams()[i]->info()->stream_type()) {
    -
    122  case kStreamVideo:
    -
    123  GenerateVideoTrak(
    -
    124  static_cast<VideoStreamInfo*>(streams()[i]->info().get()),
    -
    125  &trak,
    -
    126  i + 1);
    -
    127  break;
    -
    128  case kStreamAudio:
    -
    129  GenerateAudioTrak(
    -
    130  static_cast<AudioStreamInfo*>(streams()[i]->info().get()),
    -
    131  &trak,
    -
    132  i + 1);
    -
    133  break;
    -
    134  default:
    -
    135  NOTIMPLEMENTED() << "Not implemented for stream type: "
    -
    136  << streams()[i]->info()->stream_type();
    -
    137  }
    -
    138  }
    -
    139 
    -
    140  if (options().single_segment) {
    -
    141  segmenter_.reset(
    -
    142  new SingleSegmentSegmenter(options(), ftyp.Pass(), moov.Pass()));
    -
    143  } else {
    -
    144  segmenter_.reset(
    -
    145  new MultiSegmentSegmenter(options(), ftyp.Pass(), moov.Pass()));
    -
    146  }
    -
    147 
    -
    148  Status segmenter_initialized =
    -
    149  segmenter_->Initialize(streams(),
    -
    150  muxer_listener(),
    -
    151  progress_listener(),
    -
    152  encryption_key_source(),
    -
    153  max_sd_pixels(),
    -
    154  clear_lead_in_seconds(),
    -
    155  crypto_period_duration_in_seconds());
    -
    156 
    -
    157  if (!segmenter_initialized.ok())
    -
    158  return segmenter_initialized;
    -
    159 
    -
    160  FireOnMediaStartEvent();
    -
    161  return Status::OK;
    -
    162 }
    -
    163 
    -
    164 Status MP4Muxer::Finalize() {
    -
    165  DCHECK(segmenter_);
    -
    166  Status segmenter_finalized = segmenter_->Finalize();
    -
    167 
    -
    168  if (!segmenter_finalized.ok())
    -
    169  return segmenter_finalized;
    -
    170 
    -
    171  FireOnMediaEndEvent();
    -
    172  LOG(INFO) << "MP4 file '" << options().output_file_name << "' finalized.";
    -
    173  return Status::OK;
    -
    174 }
    -
    175 
    -
    176 Status MP4Muxer::DoAddSample(const MediaStream* stream,
    -
    177  scoped_refptr<MediaSample> sample) {
    -
    178  DCHECK(segmenter_);
    -
    179  return segmenter_->AddSample(stream, sample);
    -
    180 }
    -
    181 
    -
    182 void MP4Muxer::InitializeTrak(const StreamInfo* info, Track* trak) {
    -
    183  int64_t now = IsoTimeNow();
    -
    184  trak->header.creation_time = now;
    -
    185  trak->header.modification_time = now;
    -
    186  trak->header.duration = 0;
    -
    187  trak->media.header.creation_time = now;
    -
    188  trak->media.header.modification_time = now;
    -
    189  trak->media.header.timescale = info->time_scale();
    -
    190  trak->media.header.duration = 0;
    -
    191  if (!info->language().empty()) {
    -
    192  // ISO-639-2/T language code should be 3 characters..
    -
    193  if (info->language().size() != 3) {
    -
    194  LOG(WARNING) << "'" << info->language() << "' is not a valid ISO-639-2 "
    -
    195  << "language code, ignoring.";
    -
    196  } else {
    -
    197  trak->media.header.language.code = info->language();
    -
    198  }
    -
    199  }
    -
    200 }
    -
    201 
    -
    202 void MP4Muxer::GenerateVideoTrak(const VideoStreamInfo* video_info,
    -
    203  Track* trak,
    -
    204  uint32_t track_id) {
    -
    205  InitializeTrak(video_info, trak);
    -
    206 
    -
    207  // width and height specify the track's visual presentation size as
    -
    208  // fixed-point 16.16 values.
    -
    209  uint32_t pixel_width = video_info->pixel_width();
    -
    210  uint32_t pixel_height = video_info->pixel_height();
    -
    211  if (pixel_width == 0 || pixel_height == 0) {
    -
    212  LOG(WARNING) << "pixel width/height are not set. Assuming 1:1.";
    -
    213  pixel_width = 1;
    -
    214  pixel_height = 1;
    -
    215  }
    -
    216  const double sample_aspect_ratio =
    -
    217  static_cast<double>(pixel_width) / pixel_height;
    -
    218  trak->header.width = video_info->width() * sample_aspect_ratio * 0x10000;
    -
    219  trak->header.height = video_info->height() * 0x10000;
    -
    220 
    -
    221  VideoSampleEntry video;
    -
    222  video.format = VideoCodecToFourCC(video_info->codec());
    -
    223  video.width = video_info->width();
    -
    224  video.height = video_info->height();
    -
    225  video.codec_config_record.data = video_info->extra_data();
    -
    226  if (pixel_width != 1 || pixel_height != 1) {
    -
    227  video.pixel_aspect.h_spacing = pixel_width;
    -
    228  video.pixel_aspect.v_spacing = pixel_height;
    -
    229  }
    -
    230 
    -
    231  SampleDescription& sample_description =
    -
    232  trak->media.information.sample_table.description;
    -
    233  sample_description.type = kVideo;
    -
    234  sample_description.video_entries.push_back(video);
    -
    235 }
    -
    236 
    -
    237 void MP4Muxer::GenerateAudioTrak(const AudioStreamInfo* audio_info,
    -
    238  Track* trak,
    -
    239  uint32_t track_id) {
    -
    240  InitializeTrak(audio_info, trak);
    -
    241 
    -
    242  trak->header.volume = 0x100;
    +
    85 } // namespace
    +
    86 
    +
    87 MP4Muxer::MP4Muxer(const MuxerOptions& options) : Muxer(options) {}
    +
    88 MP4Muxer::~MP4Muxer() {}
    +
    89 
    +
    90 Status MP4Muxer::Initialize() {
    +
    91  DCHECK(!streams().empty());
    +
    92 
    +
    93  scoped_ptr<FileType> ftyp(new FileType);
    +
    94  scoped_ptr<Movie> moov(new Movie);
    +
    95 
    +
    96  ftyp->major_brand = FOURCC_DASH;
    +
    97  ftyp->compatible_brands.push_back(FOURCC_ISO6);
    +
    98  ftyp->compatible_brands.push_back(FOURCC_MP41);
    +
    99  if (streams().size() == 1 &&
    +
    100  streams()[0]->info()->stream_type() == kStreamVideo) {
    +
    101  const FourCC codec_fourcc = VideoCodecToFourCC(
    +
    102  static_cast<VideoStreamInfo*>(streams()[0]->info().get())->codec());
    +
    103  if (codec_fourcc != FOURCC_NULL)
    +
    104  ftyp->compatible_brands.push_back(codec_fourcc);
    +
    105  }
    +
    106 
    +
    107  moov->header.creation_time = IsoTimeNow();
    +
    108  moov->header.modification_time = IsoTimeNow();
    +
    109  moov->header.next_track_id = streams().size() + 1;
    +
    110 
    +
    111  moov->tracks.resize(streams().size());
    +
    112  moov->extends.tracks.resize(streams().size());
    +
    113 
    +
    114  // Initialize tracks.
    +
    115  for (uint32_t i = 0; i < streams().size(); ++i) {
    +
    116  Track& trak = moov->tracks[i];
    +
    117  trak.header.track_id = i + 1;
    +
    118 
    +
    119  TrackExtends& trex = moov->extends.tracks[i];
    +
    120  trex.track_id = trak.header.track_id;
    +
    121  trex.default_sample_description_index = 1;
    +
    122 
    +
    123  switch (streams()[i]->info()->stream_type()) {
    +
    124  case kStreamVideo:
    +
    125  GenerateVideoTrak(
    +
    126  static_cast<VideoStreamInfo*>(streams()[i]->info().get()),
    +
    127  &trak,
    +
    128  i + 1);
    +
    129  break;
    +
    130  case kStreamAudio:
    +
    131  GenerateAudioTrak(
    +
    132  static_cast<AudioStreamInfo*>(streams()[i]->info().get()),
    +
    133  &trak,
    +
    134  i + 1);
    +
    135  break;
    +
    136  default:
    +
    137  NOTIMPLEMENTED() << "Not implemented for stream type: "
    +
    138  << streams()[i]->info()->stream_type();
    +
    139  }
    +
    140  }
    +
    141 
    +
    142  if (options().single_segment) {
    +
    143  segmenter_.reset(
    +
    144  new SingleSegmentSegmenter(options(), ftyp.Pass(), moov.Pass()));
    +
    145  } else {
    +
    146  segmenter_.reset(
    +
    147  new MultiSegmentSegmenter(options(), ftyp.Pass(), moov.Pass()));
    +
    148  }
    +
    149 
    +
    150  Status segmenter_initialized =
    +
    151  segmenter_->Initialize(streams(),
    +
    152  muxer_listener(),
    +
    153  progress_listener(),
    +
    154  encryption_key_source(),
    +
    155  max_sd_pixels(),
    +
    156  clear_lead_in_seconds(),
    +
    157  crypto_period_duration_in_seconds());
    +
    158 
    +
    159  if (!segmenter_initialized.ok())
    +
    160  return segmenter_initialized;
    +
    161 
    +
    162  FireOnMediaStartEvent();
    +
    163  return Status::OK;
    +
    164 }
    +
    165 
    +
    166 Status MP4Muxer::Finalize() {
    +
    167  DCHECK(segmenter_);
    +
    168  Status segmenter_finalized = segmenter_->Finalize();
    +
    169 
    +
    170  if (!segmenter_finalized.ok())
    +
    171  return segmenter_finalized;
    +
    172 
    +
    173  FireOnMediaEndEvent();
    +
    174  LOG(INFO) << "MP4 file '" << options().output_file_name << "' finalized.";
    +
    175  return Status::OK;
    +
    176 }
    +
    177 
    +
    178 Status MP4Muxer::DoAddSample(const MediaStream* stream,
    +
    179  scoped_refptr<MediaSample> sample) {
    +
    180  DCHECK(segmenter_);
    +
    181  return segmenter_->AddSample(stream, sample);
    +
    182 }
    +
    183 
    +
    184 void MP4Muxer::InitializeTrak(const StreamInfo* info, Track* trak) {
    +
    185  int64_t now = IsoTimeNow();
    +
    186  trak->header.creation_time = now;
    +
    187  trak->header.modification_time = now;
    +
    188  trak->header.duration = 0;
    +
    189  trak->media.header.creation_time = now;
    +
    190  trak->media.header.modification_time = now;
    +
    191  trak->media.header.timescale = info->time_scale();
    +
    192  trak->media.header.duration = 0;
    +
    193  if (!info->language().empty()) {
    +
    194  // ISO-639-2/T language code should be 3 characters..
    +
    195  if (info->language().size() != 3) {
    +
    196  LOG(WARNING) << "'" << info->language() << "' is not a valid ISO-639-2 "
    +
    197  << "language code, ignoring.";
    +
    198  } else {
    +
    199  trak->media.header.language.code = info->language();
    +
    200  }
    +
    201  }
    +
    202 }
    +
    203 
    +
    204 void MP4Muxer::GenerateVideoTrak(const VideoStreamInfo* video_info,
    +
    205  Track* trak,
    +
    206  uint32_t track_id) {
    +
    207  InitializeTrak(video_info, trak);
    +
    208 
    +
    209  // width and height specify the track's visual presentation size as
    +
    210  // fixed-point 16.16 values.
    +
    211  uint32_t pixel_width = video_info->pixel_width();
    +
    212  uint32_t pixel_height = video_info->pixel_height();
    +
    213  if (pixel_width == 0 || pixel_height == 0) {
    +
    214  LOG(WARNING) << "pixel width/height are not set. Assuming 1:1.";
    +
    215  pixel_width = 1;
    +
    216  pixel_height = 1;
    +
    217  }
    +
    218  const double sample_aspect_ratio =
    +
    219  static_cast<double>(pixel_width) / pixel_height;
    +
    220  trak->header.width = video_info->width() * sample_aspect_ratio * 0x10000;
    +
    221  trak->header.height = video_info->height() * 0x10000;
    +
    222 
    +
    223  VideoSampleEntry video;
    +
    224  video.format = VideoCodecToFourCC(video_info->codec());
    +
    225  video.width = video_info->width();
    +
    226  video.height = video_info->height();
    +
    227  video.codec_config_record.data = video_info->extra_data();
    +
    228  if (pixel_width != 1 || pixel_height != 1) {
    +
    229  video.pixel_aspect.h_spacing = pixel_width;
    +
    230  video.pixel_aspect.v_spacing = pixel_height;
    +
    231  }
    +
    232 
    +
    233  SampleDescription& sample_description =
    +
    234  trak->media.information.sample_table.description;
    +
    235  sample_description.type = kVideo;
    +
    236  sample_description.video_entries.push_back(video);
    +
    237 }
    +
    238 
    +
    239 void MP4Muxer::GenerateAudioTrak(const AudioStreamInfo* audio_info,
    +
    240  Track* trak,
    +
    241  uint32_t track_id) {
    +
    242  InitializeTrak(audio_info, trak);
    243 
    -
    244  AudioSampleEntry audio;
    -
    245  audio.format = AudioCodecToFourCC(audio_info->codec());
    -
    246  switch(audio_info->codec()){
    -
    247  case kCodecAAC:
    -
    248  audio.esds.es_descriptor.set_object_type(kISO_14496_3); // MPEG4 AAC.
    -
    249  audio.esds.es_descriptor.set_esid(track_id);
    -
    250  audio.esds.es_descriptor.set_decoder_specific_info(
    -
    251  audio_info->extra_data());
    -
    252  audio.esds.es_descriptor.set_max_bitrate(audio_info->max_bitrate());
    -
    253  audio.esds.es_descriptor.set_avg_bitrate(audio_info->avg_bitrate());
    -
    254  break;
    -
    255  case kCodecDTSC:
    -
    256  case kCodecDTSH:
    -
    257  case kCodecDTSL:
    -
    258  case kCodecDTSE:
    -
    259  case kCodecDTSM:
    -
    260  audio.ddts.extra_data = audio_info->extra_data();
    -
    261  audio.ddts.max_bitrate = audio_info->max_bitrate();
    -
    262  audio.ddts.avg_bitrate = audio_info->avg_bitrate();
    -
    263  audio.ddts.sampling_frequency = audio_info->sampling_frequency();
    -
    264  audio.ddts.pcm_sample_depth = audio_info->sample_bits();
    -
    265  break;
    -
    266  case kCodecAC3:
    -
    267  audio.dac3.data = audio_info->extra_data();
    -
    268  break;
    -
    269  default:
    -
    270  NOTIMPLEMENTED();
    -
    271  break;
    -
    272  }
    -
    273 
    -
    274  audio.channelcount = audio_info->num_channels();
    -
    275  audio.samplesize = audio_info->sample_bits();
    -
    276  audio.samplerate = audio_info->sampling_frequency();
    -
    277  SampleDescription& sample_description =
    -
    278  trak->media.information.sample_table.description;
    -
    279  sample_description.type = kAudio;
    -
    280  sample_description.audio_entries.push_back(audio);
    -
    281 }
    -
    282 
    -
    283 bool MP4Muxer::GetInitRangeStartAndEnd(uint32_t* start, uint32_t* end) {
    -
    284  DCHECK(start && end);
    -
    285  size_t range_offset = 0;
    -
    286  size_t range_size = 0;
    -
    287  const bool has_range = segmenter_->GetInitRange(&range_offset, &range_size);
    -
    288 
    -
    289  if (!has_range)
    -
    290  return false;
    -
    291 
    -
    292  SetStartAndEndFromOffsetAndSize(range_offset, range_size, start, end);
    -
    293  return true;
    -
    294 }
    -
    295 
    -
    296 bool MP4Muxer::GetIndexRangeStartAndEnd(uint32_t* start, uint32_t* end) {
    -
    297  DCHECK(start && end);
    -
    298  size_t range_offset = 0;
    -
    299  size_t range_size = 0;
    -
    300  const bool has_range = segmenter_->GetIndexRange(&range_offset, &range_size);
    -
    301 
    -
    302  if (!has_range)
    -
    303  return false;
    -
    304 
    -
    305  SetStartAndEndFromOffsetAndSize(range_offset, range_size, start, end);
    -
    306  return true;
    -
    307 }
    -
    308 
    -
    309 void MP4Muxer::FireOnMediaStartEvent() {
    -
    310  if (!muxer_listener())
    -
    311  return;
    -
    312 
    -
    313  if (streams().size() > 1) {
    -
    314  LOG(ERROR) << "MuxerListener cannot take more than 1 stream.";
    -
    315  return;
    -
    316  }
    -
    317  DCHECK(!streams().empty()) << "Media started without a stream.";
    -
    318 
    -
    319  const uint32_t timescale = segmenter_->GetReferenceTimeScale();
    -
    320  muxer_listener()->OnMediaStart(options(),
    -
    321  *streams().front()->info(),
    -
    322  timescale,
    -
    323  MuxerListener::kContainerMp4);
    -
    324 }
    -
    325 
    -
    326 void MP4Muxer::FireOnMediaEndEvent() {
    -
    327  if (!muxer_listener())
    -
    328  return;
    -
    329 
    -
    330  uint32_t init_range_start = 0;
    -
    331  uint32_t init_range_end = 0;
    -
    332  const bool has_init_range =
    -
    333  GetInitRangeStartAndEnd(&init_range_start, &init_range_end);
    +
    244  trak->header.volume = 0x100;
    +
    245 
    +
    246  AudioSampleEntry audio;
    +
    247  audio.format = AudioCodecToFourCC(audio_info->codec());
    +
    248  switch(audio_info->codec()){
    +
    249  case kCodecAAC:
    +
    250  audio.esds.es_descriptor.set_object_type(kISO_14496_3); // MPEG4 AAC.
    +
    251  audio.esds.es_descriptor.set_esid(track_id);
    +
    252  audio.esds.es_descriptor.set_decoder_specific_info(
    +
    253  audio_info->extra_data());
    +
    254  audio.esds.es_descriptor.set_max_bitrate(audio_info->max_bitrate());
    +
    255  audio.esds.es_descriptor.set_avg_bitrate(audio_info->avg_bitrate());
    +
    256  break;
    +
    257  case kCodecDTSC:
    +
    258  case kCodecDTSH:
    +
    259  case kCodecDTSL:
    +
    260  case kCodecDTSE:
    +
    261  case kCodecDTSM:
    +
    262  audio.ddts.extra_data = audio_info->extra_data();
    +
    263  audio.ddts.max_bitrate = audio_info->max_bitrate();
    +
    264  audio.ddts.avg_bitrate = audio_info->avg_bitrate();
    +
    265  audio.ddts.sampling_frequency = audio_info->sampling_frequency();
    +
    266  audio.ddts.pcm_sample_depth = audio_info->sample_bits();
    +
    267  break;
    +
    268  case kCodecAC3:
    +
    269  audio.dac3.data = audio_info->extra_data();
    +
    270  break;
    +
    271  case kCodecEAC3:
    +
    272  audio.dec3.data = audio_info->extra_data();
    +
    273  break;
    +
    274  default:
    +
    275  NOTIMPLEMENTED();
    +
    276  break;
    +
    277  }
    +
    278 
    +
    279  audio.channelcount = audio_info->num_channels();
    +
    280  audio.samplesize = audio_info->sample_bits();
    +
    281  audio.samplerate = audio_info->sampling_frequency();
    +
    282  SampleDescription& sample_description =
    +
    283  trak->media.information.sample_table.description;
    +
    284  sample_description.type = kAudio;
    +
    285  sample_description.audio_entries.push_back(audio);
    +
    286 }
    +
    287 
    +
    288 bool MP4Muxer::GetInitRangeStartAndEnd(uint32_t* start, uint32_t* end) {
    +
    289  DCHECK(start && end);
    +
    290  size_t range_offset = 0;
    +
    291  size_t range_size = 0;
    +
    292  const bool has_range = segmenter_->GetInitRange(&range_offset, &range_size);
    +
    293 
    +
    294  if (!has_range)
    +
    295  return false;
    +
    296 
    +
    297  SetStartAndEndFromOffsetAndSize(range_offset, range_size, start, end);
    +
    298  return true;
    +
    299 }
    +
    300 
    +
    301 bool MP4Muxer::GetIndexRangeStartAndEnd(uint32_t* start, uint32_t* end) {
    +
    302  DCHECK(start && end);
    +
    303  size_t range_offset = 0;
    +
    304  size_t range_size = 0;
    +
    305  const bool has_range = segmenter_->GetIndexRange(&range_offset, &range_size);
    +
    306 
    +
    307  if (!has_range)
    +
    308  return false;
    +
    309 
    +
    310  SetStartAndEndFromOffsetAndSize(range_offset, range_size, start, end);
    +
    311  return true;
    +
    312 }
    +
    313 
    +
    314 void MP4Muxer::FireOnMediaStartEvent() {
    +
    315  if (!muxer_listener())
    +
    316  return;
    +
    317 
    +
    318  if (streams().size() > 1) {
    +
    319  LOG(ERROR) << "MuxerListener cannot take more than 1 stream.";
    +
    320  return;
    +
    321  }
    +
    322  DCHECK(!streams().empty()) << "Media started without a stream.";
    +
    323 
    +
    324  const uint32_t timescale = segmenter_->GetReferenceTimeScale();
    +
    325  muxer_listener()->OnMediaStart(options(),
    +
    326  *streams().front()->info(),
    +
    327  timescale,
    +
    328  MuxerListener::kContainerMp4);
    +
    329 }
    +
    330 
    +
    331 void MP4Muxer::FireOnMediaEndEvent() {
    +
    332  if (!muxer_listener())
    +
    333  return;
    334 
    -
    335  uint32_t index_range_start = 0;
    -
    336  uint32_t index_range_end = 0;
    -
    337  const bool has_index_range =
    -
    338  GetIndexRangeStartAndEnd(&index_range_start, &index_range_end);
    +
    335  uint32_t init_range_start = 0;
    +
    336  uint32_t init_range_end = 0;
    +
    337  const bool has_init_range =
    +
    338  GetInitRangeStartAndEnd(&init_range_start, &init_range_end);
    339 
    -
    340  const float duration_seconds = static_cast<float>(segmenter_->GetDuration());
    -
    341 
    -
    342  const int64_t file_size =
    -
    343  File::GetFileSize(options().output_file_name.c_str());
    -
    344  if (file_size <= 0) {
    -
    345  LOG(ERROR) << "Invalid file size: " << file_size;
    -
    346  return;
    -
    347  }
    -
    348 
    -
    349  muxer_listener()->OnMediaEnd(has_init_range,
    -
    350  init_range_start,
    -
    351  init_range_end,
    -
    352  has_index_range,
    -
    353  index_range_start,
    -
    354  index_range_end,
    -
    355  duration_seconds,
    -
    356  file_size);
    -
    357 }
    -
    358 
    -
    359 uint64_t MP4Muxer::IsoTimeNow() {
    -
    360  // Time in seconds from Jan. 1, 1904 to epoch time, i.e. Jan. 1, 1970.
    -
    361  const uint64_t kIsomTimeOffset = 2082844800l;
    -
    362  return kIsomTimeOffset +
    -
    363  (clock() ? clock()->Now() : base::Time::Now()).ToDoubleT();
    -
    364 }
    -
    365 
    -
    366 } // namespace mp4
    -
    367 } // namespace media
    -
    368 } // namespace edash_packager
    +
    340  uint32_t index_range_start = 0;
    +
    341  uint32_t index_range_end = 0;
    +
    342  const bool has_index_range =
    +
    343  GetIndexRangeStartAndEnd(&index_range_start, &index_range_end);
    +
    344 
    +
    345  const float duration_seconds = static_cast<float>(segmenter_->GetDuration());
    +
    346 
    +
    347  const int64_t file_size =
    +
    348  File::GetFileSize(options().output_file_name.c_str());
    +
    349  if (file_size <= 0) {
    +
    350  LOG(ERROR) << "Invalid file size: " << file_size;
    +
    351  return;
    +
    352  }
    +
    353 
    +
    354  muxer_listener()->OnMediaEnd(has_init_range,
    +
    355  init_range_start,
    +
    356  init_range_end,
    +
    357  has_index_range,
    +
    358  index_range_start,
    +
    359  index_range_end,
    +
    360  duration_seconds,
    +
    361  file_size);
    +
    362 }
    +
    363 
    +
    364 uint64_t MP4Muxer::IsoTimeNow() {
    +
    365  // Time in seconds from Jan. 1, 1904 to epoch time, i.e. Jan. 1, 1970.
    +
    366  const uint64_t kIsomTimeOffset = 2082844800l;
    +
    367  return kIsomTimeOffset +
    +
    368  (clock() ? clock()->Now() : base::Time::Now()).ToDoubleT();
    +
    369 }
    +
    370 
    +
    371 } // namespace mp4
    +
    372 } // namespace media
    +
    373 } // namespace edash_packager
    -
    MP4Muxer(const MuxerOptions &options)
    Create a MP4Muxer object from MuxerOptions.
    Definition: mp4_muxer.cc:85
    +
    MP4Muxer(const MuxerOptions &options)
    Create a MP4Muxer object from MuxerOptions.
    Definition: mp4_muxer.cc:87
    This structure contains the list of configuration options for Muxer.
    Definition: muxer_options.h:18
    @@ -464,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 965e85c8d2..12a71148e3 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 ec2872114c..e94d4e2576 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 cf53006883..1822f9cc06 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 fab3d07ec0..e528de9de7 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 478 of file box_definitions.h.

    +

    Definition at line 508 of file box_definitions.h.

    Member Function Documentation

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

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

    -

    Definition at line 1613 of file box_definitions.cc.

    +

    Definition at line 1664 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 a25a819eb0..ebd0081fc2 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 4603992533..fd1f8846cf 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 aaae75a254..51c766b5f5 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 27f4839211..19a7bc18bb 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 10008849c1..37288bbc74 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 ae07efddea..c3e1f4a179 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 cfc652d1e4..0d0ddf76fc 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 380 of file box_definitions.h.

    +

    Definition at line 410 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 1804c4db28..0c845b1e69 100644 --- a/docs/db/d01/avc__decoder__configuration_8cc_source.html +++ b/docs/db/d01/avc__decoder__configuration_8cc_source.html @@ -171,7 +171,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 28f527f737..f74319acef 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 840542a1a0..2cebd0228c 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 3d3301f980..e469d5962e 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 b013209e74..60ed48d3e2 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 7704de63f4..5de4b9634a 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 6fecac5692..80d61f0517 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 837cd1f67c..9d5cbb82ed 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 f1c9d45aa6..7b8a2eb5f9 100644 --- a/docs/db/d31/track__run__iterator_8cc_source.html +++ b/docs/db/d31/track__run__iterator_8cc_source.html @@ -701,9 +701,9 @@ 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)
    @@ -714,12 +714,12 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); - +
    uint32_t NumSamples(uint32_t start_chunk, uint32_t end_chunk) const
    - + @@ -728,26 +728,26 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); - - + + - + - + - - + + 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 00ba19741e..34eee479a3 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 e56de6b0af..701d463d7a 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 877a2612a9..f2925ebe48 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 b61bb5efeb..b41ab7de91 100644 --- a/docs/db/d51/mp2t__media__parser_8h_source.html +++ b/docs/db/d51/mp2t__media__parser_8h_source.html @@ -195,7 +195,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 0fe3704af1..800b39a31c 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/d56/classedash__packager_1_1SimpleMpdNotifier.html b/docs/db/d56/classedash__packager_1_1SimpleMpdNotifier.html index 0da46b5d34..9debf26da3 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 c212943b83..eaecb92179 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 4d6249e239..70eba21f59 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 @@ -101,7 +101,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 f6519c3cd8..fc2f907813 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 30da5318a1..aceb009ed8 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 3eb64d6cc4..7ce6c3f0dc 100644 --- a/docs/db/d64/webvtt__media__parser_8h_source.html +++ b/docs/db/d64/webvtt__media__parser_8h_source.html @@ -180,7 +180,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 02e5a7725f..e2324e2115 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 07eae0bf0c..3ad7875c87 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 754 of file box_definitions.h.

    +

    Definition at line 784 of file box_definitions.h.

    Member Function Documentation

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

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

    -

    Definition at line 2493 of file box_definitions.cc.

    +

    Definition at line 2544 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 7d6b3d8d43..3cf78db3e5 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 339081d431..5731f92d01 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 9a28cb11f5..5b63f2f20d 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 9525cbbafc..cfc8f6d72a 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 09bc09b70f..a679e3f57c 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 418 of file box_definitions.h.

    +

    Definition at line 448 of file box_definitions.h.

    Member Function Documentation

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

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

    -

    Definition at line 770 of file box_definitions.cc.

    +

    Definition at line 771 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 783b5af4c0..4bb14cc582 100644 --- a/docs/db/d8f/mp4__muxer_8h_source.html +++ b/docs/db/d8f/mp4__muxer_8h_source.html @@ -162,20 +162,20 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
    76 } // namespace edash_packager
    77 
    78 #endif // MEDIA_FORMATS_MP4_MP4_MUXER_H_
    -
    MP4Muxer(const MuxerOptions &options)
    Create a MP4Muxer object from MuxerOptions.
    Definition: mp4_muxer.cc:85
    -
    Holds audio stream information.
    +
    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 a59da4dd48..ce328ab23e 100644 --- a/docs/db/d96/wvm__media__parser_8h_source.html +++ b/docs/db/d96/wvm__media__parser_8h_source.html @@ -365,7 +365,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 6f4ab0cdd0..a3bf542f55 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_1WebMClusterParser.html b/docs/db/da0/classedash__packager_1_1media_1_1WebMClusterParser.html index 4cd4965551..d9240f0e44 100644 --- a/docs/db/da0/classedash__packager_1_1media_1_1WebMClusterParser.html +++ b/docs/db/da0/classedash__packager_1_1media_1_1WebMClusterParser.html @@ -292,7 +292,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 779ffa483c..e268e78b0f 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 66a1f9e9e4..33eb9c051c 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 c2211fedc2..b0d95dee75 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 08786cf5b3..fe00848f56 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 7ad6d003ab..bf41b7c409 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 e7aa471b64..2b36105c76 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 838698000f..a70a1d689d 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 49557df3fc..de6fe3787f 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 0486a163a3..936d0d17c8 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 93852a9a44..f0b3830665 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 3a3ab40c02..2542397ee1 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 e68f665e1b..bf167d73f3 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 9f16992d96..acc0bb2c2f 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/ded/opus__packet__builder_8cc_source.html b/docs/db/ded/opus__packet__builder_8cc_source.html index a1aa619ebb..35a8a42000 100644 --- a/docs/db/ded/opus__packet__builder_8cc_source.html +++ b/docs/db/ded/opus__packet__builder_8cc_source.html @@ -182,7 +182,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 84ed90f802..bb22919fd9 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 95f03d88a7..c971ad3ef9 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 c4216b1b2b..7404cbf64d 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 e29acc7573..083d05ea16 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 469 of file box_definitions.h.

    +

    Definition at line 499 of file box_definitions.h.

    Member Function Documentation

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

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

    -

    Definition at line 1596 of file box_definitions.cc.

    +

    Definition at line 1647 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 ae6b3b84d4..581ac9d9f5 100644 --- a/docs/db/dfb/mpd__utils_8cc_source.html +++ b/docs/db/dfb/mpd__utils_8cc_source.html @@ -385,7 +385,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 d1a42dd980..7b6c2d998a 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 519e20b525..892b108c9b 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 295093c3f9..b099242a4c 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 5d5e1b9ae9..3844bbfbda 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 32da09a0ca..864f358730 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 @@ -118,7 +118,7 @@ int16_t media_rate_fractio diff --git a/docs/dc/d0e/structedash__packager_1_1media_1_1mp4_1_1WVTTSampleEntry.html b/docs/dc/d0e/structedash__packager_1_1media_1_1mp4_1_1WVTTSampleEntry.html index 5792ad31fc..890c4ac5b9 100644 --- a/docs/dc/d0e/structedash__packager_1_1media_1_1mp4_1_1WVTTSampleEntry.html +++ b/docs/dc/d0e/structedash__packager_1_1media_1_1mp4_1_1WVTTSampleEntry.html @@ -142,7 +142,7 @@ Additional Inherited Members

    Detailed Description

    -

    Definition at line 347 of file box_definitions.h.

    +

    Definition at line 377 of file box_definitions.h.

    Member Function Documentation

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

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

    -

    Definition at line 1544 of file box_definitions.cc.

    +

    Definition at line 1595 of file box_definitions.cc.

    @@ -179,7 +179,7 @@ Additional Inherited Members diff --git a/docs/dc/d19/box_8h_source.html b/docs/dc/d19/box_8h_source.html index dc70585592..eb4346d75f 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 8400f26e89..d759c35d19 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 53c4ccde85..bcaf0bc3d6 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 fc24e16d77..74ac3aae8e 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 7e6bc31f6d..81fe4e3bfb 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 8911681ec1..703e40f52c 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 a4f2270e38..5e9a8bbc41 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 3d6a1e0b20..7bc21314ee 100644 --- a/docs/dc/d3c/webm__cluster__parser_8h_source.html +++ b/docs/dc/d3c/webm__cluster__parser_8h_source.html @@ -315,7 +315,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 d6cf1bebd0..897501c25e 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 16c096ec61..6269da1577 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 dceae32dd5..56372673d0 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 47688b3896..bdfce2d68d 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 ebcf10c6a9..99717c4e69 100644 --- a/docs/dc/d48/classedash__packager_1_1media_1_1MediaParser.html +++ b/docs/dc/d48/classedash__packager_1_1media_1_1MediaParser.html @@ -297,7 +297,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 0362a68ef7..ec8d11fa39 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/d51/structedash__packager_1_1media_1_1mp4_1_1WVTTSampleEntry-members.html b/docs/dc/d51/structedash__packager_1_1media_1_1mp4_1_1WVTTSampleEntry-members.html index 5ff72d5afc..e8cf33a07d 100644 --- a/docs/dc/d51/structedash__packager_1_1media_1_1mp4_1_1WVTTSampleEntry-members.html +++ b/docs/dc/d51/structedash__packager_1_1media_1_1mp4_1_1WVTTSampleEntry-members.html @@ -111,7 +111,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 68910b3867..0ba186ee76 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 69f1b5d05a..22a6240ab5 100644 --- a/docs/dc/d53/webm_2segmenter_8cc_source.html +++ b/docs/dc/d53/webm_2segmenter_8cc_source.html @@ -463,7 +463,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 227edcf224..4ee6d36715 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 ad261ace5e..83752d376e 100644 --- a/docs/dc/d58/webm__media__parser_8h_source.html +++ b/docs/dc/d58/webm__media__parser_8h_source.html @@ -177,7 +177,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 0a5f90df5d..e99b6ddc9b 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 252ed7b633..db863fcbdd 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 b42b06a7b4..719e43d055 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 809463f83f..418658f4be 100644 --- a/docs/dc/d7b/h264__parser_8cc_source.html +++ b/docs/dc/d7b/h264__parser_8cc_source.html @@ -1446,7 +1446,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 193a812de8..a1cf722c7e 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 8cce138cf0..5f175120fe 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 @@ -303,7 +303,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 1596dbe959..21c37872e0 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 @@ -255,7 +255,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 02f374ea37..a0d386e57e 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 374 of file box_definitions.h.

    +

    Definition at line 404 of file box_definitions.h.

    Member Function Documentation

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

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

    -

    Definition at line 646 of file box_definitions.cc.

    +

    Definition at line 647 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 6b233381c0..7c1f36b040 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 d439c81252..fe1788feb1 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 89666ea69c..0c2c21be7e 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 aedd575307..be0099c661 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 ec5c2cb2bd..b4a4a00188 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 3e9ad24cdf..72807cf3de 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 57e393caa2..a3eb9d98b0 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 587c4f2097..1cf9408b39 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 ee55f0c5b3..409dafaaec 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 6c62ec54b1..f0a684d3bf 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 90c5606a21..546a9631c3 100644 --- a/docs/dc/df1/classedash__packager_1_1media_1_1DecryptorSource.html +++ b/docs/dc/df1/classedash__packager_1_1media_1_1DecryptorSource.html @@ -158,7 +158,7 @@ Public Member Functions diff --git a/docs/dc/df8/closure__thread_8h_source.html b/docs/dc/df8/closure__thread_8h_source.html index c39973b653..0411d41987 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 302ada2cb3..8289f6135c 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 db894726d3..2a64dd0863 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 98ef079521..28e2ed7746 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 0a94ff88b6..8ca13bb6de 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 b933c6ef93..494de0504b 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 4415b74ea1..5361087076 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 da16e7eb69..d182923b3e 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 b13dea5376..423144260a 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 730 of file box_definitions.h.

    +

    Definition at line 760 of file box_definitions.h.

    Member Function Documentation

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

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

    -

    Definition at line 2403 of file box_definitions.cc.

    +

    Definition at line 2454 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 2560fa3acf..b54d44a557 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 @@ -189,7 +189,7 @@ Additional Inherited Members

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

    -

    Definition at line 493 of file box_definitions.cc.

    +

    Definition at line 494 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 31c4bf1b77..570eb400c4 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 @@ -204,7 +204,7 @@ Additional Inherited Members

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

    -

    Definition at line 536 of file box_definitions.cc.

    +

    Definition at line 537 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 ed87589872..472c8ec28d 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 4ec18c7e38..f5ae2df3b1 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 3a5889f0e4..dd384d459a 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 a5573721a9..02a3b67a6a 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 60d9c99ec7..e88069babd 100644 --- a/docs/dd/d30/wvm__media__parser_8cc_source.html +++ b/docs/dd/d30/wvm__media__parser_8cc_source.html @@ -1255,11 +1255,11 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
    static size_t GetAdtsFrameSize(const uint8_t *data, size_t num_bytes)
    Definition: adts_header.cc:23
    KeySource is responsible for encryption key acquisition.
    Definition: key_source.h:29
    static scoped_refptr< MediaSample > CreateEmptyMediaSample()
    Create a MediaSample object with default members.
    Definition: media_sample.cc:74
    -
    static std::string GetCodecString(AudioCodec codec, uint8_t audio_object_type)
    +
    static std::string GetCodecString(AudioCodec codec, uint8_t audio_object_type)
    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 5f34c1c2e1..d199e8bed2 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 248e612bb8..cb04dfdf77 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/d41/structedash__packager_1_1media_1_1H264NALU.html b/docs/dd/d41/structedash__packager_1_1media_1_1H264NALU.html index 004cf05ed0..4a56205ad3 100644 --- a/docs/dd/d41/structedash__packager_1_1media_1_1H264NALU.html +++ b/docs/dd/d41/structedash__packager_1_1media_1_1H264NALU.html @@ -139,7 +139,7 @@ int nal_unit_type diff --git a/docs/dd/d42/encryptor_8h_source.html b/docs/dd/d42/encryptor_8h_source.html index c64d50456d..e9d6ad17c8 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 9192dd37b0..491690cc88 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 f25836aa0b..6871d70dd7 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 15120cfe9e..73ec0541e9 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 465198ba01..1115168b2f 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 7c5e1d8be4..11cb8ae421 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 158c4dd4f2..2aa4cbc31f 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 b1f8d7f86c..87f0621491 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 9537dde3db..51b3871d38 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 61842183e0..7dcccdb9c6 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 8e1d5e38a1..978eba1316 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 @@ -226,7 +226,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 dbf830ccac..830f09a7a7 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/d80/media__sample_8h_source.html b/docs/dd/d80/media__sample_8h_source.html index dc325c504b..cfbbfc853b 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 1743524da0..2074f46082 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 4c642adf4c..7e4c241d16 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 082d66207b..600627875c 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 23a0e05d45..553f89dc42 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 d2d8eb878d..48fd220dbb 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 9d6a9ca6f8..0874aa55f0 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 b7ff364e41..38393e4253 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 1efecbe2ec..7d6af10db5 100644 --- a/docs/dd/d99/classedash__packager_1_1media_1_1WebMMediaParser.html +++ b/docs/dd/d99/classedash__packager_1_1media_1_1WebMMediaParser.html @@ -205,7 +205,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 a7422a1d74..4a4e6d6a8c 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 8f67751cb7..9ce8d659e0 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 678 of file box_definitions.h.

    +

    Definition at line 708 of file box_definitions.h.

    Member Function Documentation

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

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

    -

    Definition at line 2286 of file box_definitions.cc.

    +

    Definition at line 2337 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 a758fe38f2..65ba8891d4 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 @@ -166,7 +166,7 @@ std::vector< FourCC > <

    Reimplemented from edash_packager::media::mp4::FileType.

    -

    Definition at line 153 of file box_definitions.cc.

    +

    Definition at line 154 of file box_definitions.cc.

    @@ -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 8f47ce9998..6b94869000 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 9ad3a52b32..b592548898 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 bf6ace3da4..0f771d176b 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 630 of file box_definitions.h.

    +

    Definition at line 660 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 ff3e745e1a..3afdd6fe5b 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 19a9353e2c..00bb8e3a97 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 556b633cbd..428426c5e2 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 1c5f9065e4..ea99e0a76e 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 1cc234c3cf..d4356746ee 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 507 of file box_definitions.h.

    +

    Definition at line 537 of file box_definitions.h.

    Member Function Documentation

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

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

    -

    Definition at line 1699 of file box_definitions.cc.

    +

    Definition at line 1750 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 78afd62abf..b97d361706 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 64ea4a77f9..4fe39aa49a 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 0baff870f5..192311b7e6 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 @@ -168,7 +168,7 @@ Additional Inherited Members

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

    -

    Definition at line 460 of file box_definitions.cc.

    +

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

    +

    Definition at line 2474 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 b5a1118a3e..bf914ad65f 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 712758e0a2..4fd2504366 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 f9eb85ffd0..0b0627a487 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 19e479777a..7793be43f8 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 8eb85d3cac..d5f77811a0 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 aa1e017456..0118b30bcb 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 636e677c23..58c7ec0928 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 a5d95ad036..d880d09ebc 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 098d5c02a6..908b2a7a37 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 2963ab1af9..a1ec72ee66 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 9f30c78383..d0c98fac63 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 3914cb9f74..560cb2bbde 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 @@ -177,7 +177,7 @@ Additional Inherited Members

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

    -

    Definition at line 411 of file box_definitions.cc.

    +

    Definition at line 412 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 561fae288d..25eb229abf 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 dff720d1ae..96c06f0347 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 b00eff5f3a..8de3a6a283 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 46a62e9711..0c57ac56ed 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 db944d298e..f22f72eb95 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 859dffb41a..1b0380e60f 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 2c3edf7b36..f89817c5b1 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 ab55fd09fc..446efd5d57 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 089b8b33fb..41222c13fa 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 a14c9b9eea..2ecb1409f1 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 73c5c9ab3f..4355250cb7 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 e2d0ea8529..6e1577891f 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 ec7468526c..17edf36634 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 be15444160..bfc6d47132 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 b773f563a0..9ed421585a 100644 --- a/docs/de/d7b/mp4__media__parser_8h_source.html +++ b/docs/de/d7b/mp4__media__parser_8h_source.html @@ -203,21 +203,21 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
    123 #endif // MEDIA_FORMATS_MP4_MP4_MEDIA_PARSER_H_
    -
    bool Parse(const uint8_t *buf, int size) override
    +
    bool Parse(const uint8_t *buf, int size) override
    - -
    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:43
    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:34
    -
    void Init(const InitCB &init_cb, const NewSampleCB &new_sample_cb, KeySource *decryption_key_source) override
    +
    void Init(const InitCB &init_cb, const NewSampleCB &new_sample_cb, KeySource *decryption_key_source) override
    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 ab16fa623a..e39874af41 100644 --- a/docs/de/d83/box__definitions__comparison_8h_source.html +++ b/docs/de/d83/box__definitions__comparison_8h_source.html @@ -334,244 +334,249 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
    245  return lhs.data == rhs.data;
    246 }
    247 
    -
    248 inline bool operator==(const AudioSampleEntry& lhs,
    -
    249  const AudioSampleEntry& rhs) {
    -
    250  return lhs.format == rhs.format &&
    -
    251  lhs.data_reference_index == rhs.data_reference_index &&
    -
    252  lhs.channelcount == rhs.channelcount &&
    -
    253  lhs.samplesize == rhs.samplesize && lhs.samplerate == rhs.samplerate &&
    -
    254  lhs.sinf == rhs.sinf && lhs.esds == rhs.esds && lhs.ddts == rhs.ddts &&
    -
    255  lhs.dac3 == rhs.dac3;
    -
    256 }
    -
    257 
    -
    258 inline bool operator==(const WebVTTConfigurationBox& lhs,
    -
    259  const WebVTTConfigurationBox& rhs) {
    -
    260  return lhs.config == rhs.config;
    +
    248 inline bool operator==(const EC3Specific& lhs,
    +
    249  const EC3Specific& rhs) {
    +
    250  return lhs.data == rhs.data;
    +
    251 }
    +
    252 
    +
    253 inline bool operator==(const AudioSampleEntry& lhs,
    +
    254  const AudioSampleEntry& rhs) {
    +
    255  return lhs.format == rhs.format &&
    +
    256  lhs.data_reference_index == rhs.data_reference_index &&
    +
    257  lhs.channelcount == rhs.channelcount &&
    +
    258  lhs.samplesize == rhs.samplesize && lhs.samplerate == rhs.samplerate &&
    +
    259  lhs.sinf == rhs.sinf && lhs.esds == rhs.esds && lhs.ddts == rhs.ddts &&
    +
    260  lhs.dac3 == rhs.dac3 && lhs.dec3 == rhs.dec3;
    261 }
    262 
    -
    263 inline bool operator==(const WebVTTSourceLabelBox& lhs,
    -
    264  const WebVTTSourceLabelBox& rhs) {
    -
    265  return lhs.source_label == rhs.source_label;
    +
    263 inline bool operator==(const WebVTTConfigurationBox& lhs,
    +
    264  const WebVTTConfigurationBox& rhs) {
    +
    265  return lhs.config == rhs.config;
    266 }
    267 
    -
    268 inline bool operator==(const WVTTSampleEntry& lhs,
    -
    269  const WVTTSampleEntry& rhs) {
    -
    270  return lhs.config == rhs.config && lhs.label == rhs.label;
    +
    268 inline bool operator==(const WebVTTSourceLabelBox& lhs,
    +
    269  const WebVTTSourceLabelBox& rhs) {
    +
    270  return lhs.source_label == rhs.source_label;
    271 }
    272 
    -
    273 inline bool operator==(const MediaHeader& lhs, const MediaHeader& rhs) {
    -
    274  return lhs.creation_time == rhs.creation_time &&
    -
    275  lhs.modification_time == rhs.modification_time &&
    -
    276  lhs.timescale == rhs.timescale && lhs.duration == rhs.duration &&
    -
    277  lhs.language == rhs.language;
    -
    278 }
    -
    279 
    -
    280 inline bool operator==(const VideoMediaHeader& lhs,
    -
    281  const VideoMediaHeader& rhs) {
    -
    282  return lhs.graphicsmode == rhs.graphicsmode &&
    -
    283  lhs.opcolor_red == rhs.opcolor_red &&
    -
    284  lhs.opcolor_green == rhs.opcolor_green &&
    -
    285  lhs.opcolor_blue == rhs.opcolor_blue;
    -
    286 }
    -
    287 
    -
    288 inline bool operator==(const SoundMediaHeader& lhs,
    -
    289  const SoundMediaHeader& rhs) {
    -
    290  return lhs.balance == rhs.balance;
    +
    273 inline bool operator==(const WVTTSampleEntry& lhs,
    +
    274  const WVTTSampleEntry& rhs) {
    +
    275  return lhs.config == rhs.config && lhs.label == rhs.label;
    +
    276 }
    +
    277 
    +
    278 inline bool operator==(const MediaHeader& lhs, const MediaHeader& rhs) {
    +
    279  return lhs.creation_time == rhs.creation_time &&
    +
    280  lhs.modification_time == rhs.modification_time &&
    +
    281  lhs.timescale == rhs.timescale && lhs.duration == rhs.duration &&
    +
    282  lhs.language == rhs.language;
    +
    283 }
    +
    284 
    +
    285 inline bool operator==(const VideoMediaHeader& lhs,
    +
    286  const VideoMediaHeader& rhs) {
    +
    287  return lhs.graphicsmode == rhs.graphicsmode &&
    +
    288  lhs.opcolor_red == rhs.opcolor_red &&
    +
    289  lhs.opcolor_green == rhs.opcolor_green &&
    +
    290  lhs.opcolor_blue == rhs.opcolor_blue;
    291 }
    292 
    -
    293 inline bool operator==(const SubtitleMediaHeader& lhs,
    -
    294  const SubtitleMediaHeader& rhs) {
    -
    295  return true;
    +
    293 inline bool operator==(const SoundMediaHeader& lhs,
    +
    294  const SoundMediaHeader& rhs) {
    +
    295  return lhs.balance == rhs.balance;
    296 }
    297 
    -
    298 inline bool operator==(const DataEntryUrl& lhs, const DataEntryUrl& rhs) {
    -
    299  return lhs.flags == rhs.flags && lhs.location == rhs.location;
    -
    300 }
    -
    301 
    -
    302 inline bool operator==(const DataReference& lhs, const DataReference& rhs) {
    -
    303  return lhs.data_entry == rhs.data_entry;
    -
    304 }
    -
    305 
    -
    306 inline bool operator==(const DataInformation& lhs, const DataInformation& rhs) {
    -
    307  return lhs.dref == rhs.dref;
    -
    308 }
    -
    309 
    -
    310 inline bool operator==(const MediaInformation& lhs,
    -
    311  const MediaInformation& rhs) {
    -
    312  return lhs.dinf == rhs.dinf && lhs.sample_table == rhs.sample_table &&
    -
    313  lhs.vmhd == rhs.vmhd && lhs.smhd == rhs.smhd;
    -
    314 }
    -
    315 
    -
    316 inline bool operator==(const Media& lhs, const Media& rhs) {
    -
    317  return lhs.header == rhs.header && lhs.handler == rhs.handler &&
    -
    318  lhs.information == rhs.information;
    +
    298 inline bool operator==(const SubtitleMediaHeader& lhs,
    +
    299  const SubtitleMediaHeader& rhs) {
    +
    300  return true;
    +
    301 }
    +
    302 
    +
    303 inline bool operator==(const DataEntryUrl& lhs, const DataEntryUrl& rhs) {
    +
    304  return lhs.flags == rhs.flags && lhs.location == rhs.location;
    +
    305 }
    +
    306 
    +
    307 inline bool operator==(const DataReference& lhs, const DataReference& rhs) {
    +
    308  return lhs.data_entry == rhs.data_entry;
    +
    309 }
    +
    310 
    +
    311 inline bool operator==(const DataInformation& lhs, const DataInformation& rhs) {
    +
    312  return lhs.dref == rhs.dref;
    +
    313 }
    +
    314 
    +
    315 inline bool operator==(const MediaInformation& lhs,
    +
    316  const MediaInformation& rhs) {
    +
    317  return lhs.dinf == rhs.dinf && lhs.sample_table == rhs.sample_table &&
    +
    318  lhs.vmhd == rhs.vmhd && lhs.smhd == rhs.smhd;
    319 }
    320 
    -
    321 inline bool operator==(const Track& lhs, const Track& rhs) {
    -
    322  return lhs.header == rhs.header && lhs.media == rhs.media &&
    -
    323  lhs.edit == rhs.edit && lhs.sample_encryption == rhs.sample_encryption;
    +
    321 inline bool operator==(const Media& lhs, const Media& rhs) {
    +
    322  return lhs.header == rhs.header && lhs.handler == rhs.handler &&
    +
    323  lhs.information == rhs.information;
    324 }
    325 
    -
    326 inline bool operator==(const MovieExtendsHeader& lhs,
    -
    327  const MovieExtendsHeader& rhs) {
    -
    328  return lhs.fragment_duration == rhs.fragment_duration;
    +
    326 inline bool operator==(const Track& lhs, const Track& rhs) {
    +
    327  return lhs.header == rhs.header && lhs.media == rhs.media &&
    +
    328  lhs.edit == rhs.edit && lhs.sample_encryption == rhs.sample_encryption;
    329 }
    330 
    -
    331 inline bool operator==(const TrackExtends& lhs, const TrackExtends& rhs) {
    -
    332  return lhs.track_id == rhs.track_id &&
    -
    333  lhs.default_sample_description_index ==
    -
    334  rhs.default_sample_description_index &&
    -
    335  lhs.default_sample_duration == rhs.default_sample_duration &&
    -
    336  lhs.default_sample_size == rhs.default_sample_size &&
    -
    337  lhs.default_sample_flags == rhs.default_sample_flags;
    -
    338 }
    -
    339 
    -
    340 inline bool operator==(const MovieExtends& lhs, const MovieExtends& rhs) {
    -
    341  return lhs.header == rhs.header && lhs.tracks == rhs.tracks;
    -
    342 }
    -
    343 
    -
    344 inline bool operator==(const Movie& lhs, const Movie& rhs) {
    -
    345  return lhs.header == rhs.header && lhs.extends == rhs.extends &&
    -
    346  lhs.tracks == rhs.tracks && lhs.pssh == rhs.pssh;
    +
    331 inline bool operator==(const MovieExtendsHeader& lhs,
    +
    332  const MovieExtendsHeader& rhs) {
    +
    333  return lhs.fragment_duration == rhs.fragment_duration;
    +
    334 }
    +
    335 
    +
    336 inline bool operator==(const TrackExtends& lhs, const TrackExtends& rhs) {
    +
    337  return lhs.track_id == rhs.track_id &&
    +
    338  lhs.default_sample_description_index ==
    +
    339  rhs.default_sample_description_index &&
    +
    340  lhs.default_sample_duration == rhs.default_sample_duration &&
    +
    341  lhs.default_sample_size == rhs.default_sample_size &&
    +
    342  lhs.default_sample_flags == rhs.default_sample_flags;
    +
    343 }
    +
    344 
    +
    345 inline bool operator==(const MovieExtends& lhs, const MovieExtends& rhs) {
    +
    346  return lhs.header == rhs.header && lhs.tracks == rhs.tracks;
    347 }
    348 
    -
    349 inline bool operator==(const TrackFragmentDecodeTime& lhs,
    -
    350  const TrackFragmentDecodeTime& rhs) {
    -
    351  return lhs.decode_time == rhs.decode_time;
    +
    349 inline bool operator==(const Movie& lhs, const Movie& rhs) {
    +
    350  return lhs.header == rhs.header && lhs.extends == rhs.extends &&
    +
    351  lhs.tracks == rhs.tracks && lhs.pssh == rhs.pssh;
    352 }
    353 
    -
    354 inline bool operator==(const MovieFragmentHeader& lhs,
    -
    355  const MovieFragmentHeader& rhs) {
    -
    356  return lhs.sequence_number == rhs.sequence_number;
    +
    354 inline bool operator==(const TrackFragmentDecodeTime& lhs,
    +
    355  const TrackFragmentDecodeTime& rhs) {
    +
    356  return lhs.decode_time == rhs.decode_time;
    357 }
    358 
    -
    359 inline bool operator==(const TrackFragmentHeader& lhs,
    -
    360  const TrackFragmentHeader& rhs) {
    -
    361  return lhs.flags == rhs.flags && lhs.track_id == rhs.track_id &&
    -
    362  lhs.sample_description_index == rhs.sample_description_index &&
    -
    363  lhs.default_sample_duration == rhs.default_sample_duration &&
    -
    364  lhs.default_sample_size == rhs.default_sample_size &&
    -
    365  lhs.default_sample_flags == rhs.default_sample_flags;
    -
    366 }
    -
    367 
    -
    368 inline bool operator==(const TrackFragmentRun& lhs,
    -
    369  const TrackFragmentRun& rhs) {
    -
    370  return lhs.flags == rhs.flags && lhs.sample_count == rhs.sample_count &&
    -
    371  lhs.data_offset == rhs.data_offset &&
    -
    372  lhs.sample_flags == rhs.sample_flags &&
    -
    373  lhs.sample_sizes == rhs.sample_sizes &&
    -
    374  lhs.sample_durations == rhs.sample_durations &&
    -
    375  lhs.sample_composition_time_offsets ==
    -
    376  rhs.sample_composition_time_offsets;
    -
    377 }
    -
    378 
    -
    379 inline bool operator==(const SampleToGroupEntry& lhs,
    -
    380  const SampleToGroupEntry& rhs) {
    -
    381  return lhs.sample_count == rhs.sample_count &&
    -
    382  lhs.group_description_index == rhs.group_description_index;
    -
    383 }
    -
    384 
    -
    385 inline bool operator==(const SampleToGroup& lhs,
    -
    386  const SampleToGroup& rhs) {
    -
    387  return lhs.grouping_type == rhs.grouping_type &&
    -
    388  lhs.grouping_type_parameter == rhs.grouping_type_parameter &&
    -
    389  lhs.entries == rhs.entries;
    -
    390 }
    -
    391 
    -
    392 inline bool operator==(const CencSampleEncryptionInfoEntry& lhs,
    -
    393  const CencSampleEncryptionInfoEntry& rhs) {
    -
    394  return lhs.is_encrypted == rhs.is_encrypted &&
    -
    395  lhs.iv_size == rhs.iv_size &&
    -
    396  lhs.key_id == rhs.key_id;
    -
    397 }
    -
    398 
    -
    399 inline bool operator==(const SampleGroupDescription& lhs,
    -
    400  const SampleGroupDescription& rhs) {
    -
    401  return lhs.grouping_type == rhs.grouping_type &&
    -
    402  lhs.entries == rhs.entries;
    -
    403 }
    -
    404 
    -
    405 inline bool operator==(const TrackFragment& lhs, const TrackFragment& rhs) {
    -
    406  return lhs.header == rhs.header && lhs.runs == rhs.runs &&
    -
    407  lhs.decode_time == rhs.decode_time &&
    -
    408  lhs.auxiliary_offset == rhs.auxiliary_offset &&
    -
    409  lhs.auxiliary_size == rhs.auxiliary_size &&
    -
    410  lhs.sample_encryption == rhs.sample_encryption;
    -
    411 }
    -
    412 
    -
    413 inline bool operator==(const MovieFragment& lhs, const MovieFragment& rhs) {
    -
    414  return lhs.header == rhs.header && lhs.tracks == rhs.tracks &&
    -
    415  lhs.pssh == rhs.pssh;
    +
    359 inline bool operator==(const MovieFragmentHeader& lhs,
    +
    360  const MovieFragmentHeader& rhs) {
    +
    361  return lhs.sequence_number == rhs.sequence_number;
    +
    362 }
    +
    363 
    +
    364 inline bool operator==(const TrackFragmentHeader& lhs,
    +
    365  const TrackFragmentHeader& rhs) {
    +
    366  return lhs.flags == rhs.flags && lhs.track_id == rhs.track_id &&
    +
    367  lhs.sample_description_index == rhs.sample_description_index &&
    +
    368  lhs.default_sample_duration == rhs.default_sample_duration &&
    +
    369  lhs.default_sample_size == rhs.default_sample_size &&
    +
    370  lhs.default_sample_flags == rhs.default_sample_flags;
    +
    371 }
    +
    372 
    +
    373 inline bool operator==(const TrackFragmentRun& lhs,
    +
    374  const TrackFragmentRun& rhs) {
    +
    375  return lhs.flags == rhs.flags && lhs.sample_count == rhs.sample_count &&
    +
    376  lhs.data_offset == rhs.data_offset &&
    +
    377  lhs.sample_flags == rhs.sample_flags &&
    +
    378  lhs.sample_sizes == rhs.sample_sizes &&
    +
    379  lhs.sample_durations == rhs.sample_durations &&
    +
    380  lhs.sample_composition_time_offsets ==
    +
    381  rhs.sample_composition_time_offsets;
    +
    382 }
    +
    383 
    +
    384 inline bool operator==(const SampleToGroupEntry& lhs,
    +
    385  const SampleToGroupEntry& rhs) {
    +
    386  return lhs.sample_count == rhs.sample_count &&
    +
    387  lhs.group_description_index == rhs.group_description_index;
    +
    388 }
    +
    389 
    +
    390 inline bool operator==(const SampleToGroup& lhs,
    +
    391  const SampleToGroup& rhs) {
    +
    392  return lhs.grouping_type == rhs.grouping_type &&
    +
    393  lhs.grouping_type_parameter == rhs.grouping_type_parameter &&
    +
    394  lhs.entries == rhs.entries;
    +
    395 }
    +
    396 
    +
    397 inline bool operator==(const CencSampleEncryptionInfoEntry& lhs,
    +
    398  const CencSampleEncryptionInfoEntry& rhs) {
    +
    399  return lhs.is_encrypted == rhs.is_encrypted &&
    +
    400  lhs.iv_size == rhs.iv_size &&
    +
    401  lhs.key_id == rhs.key_id;
    +
    402 }
    +
    403 
    +
    404 inline bool operator==(const SampleGroupDescription& lhs,
    +
    405  const SampleGroupDescription& rhs) {
    +
    406  return lhs.grouping_type == rhs.grouping_type &&
    +
    407  lhs.entries == rhs.entries;
    +
    408 }
    +
    409 
    +
    410 inline bool operator==(const TrackFragment& lhs, const TrackFragment& rhs) {
    +
    411  return lhs.header == rhs.header && lhs.runs == rhs.runs &&
    +
    412  lhs.decode_time == rhs.decode_time &&
    +
    413  lhs.auxiliary_offset == rhs.auxiliary_offset &&
    +
    414  lhs.auxiliary_size == rhs.auxiliary_size &&
    +
    415  lhs.sample_encryption == rhs.sample_encryption;
    416 }
    417 
    -
    418 inline bool operator==(const SegmentReference& lhs,
    -
    419  const SegmentReference& rhs) {
    -
    420  return lhs.reference_type == rhs.reference_type &&
    -
    421  lhs.referenced_size == rhs.referenced_size &&
    -
    422  lhs.subsegment_duration == rhs.subsegment_duration &&
    -
    423  lhs.starts_with_sap == rhs.starts_with_sap &&
    -
    424  lhs.sap_type == rhs.sap_type &&
    -
    425  lhs.sap_delta_time == rhs.sap_delta_time;
    -
    426 }
    -
    427 
    -
    428 inline bool operator==(const SegmentIndex& lhs, const SegmentIndex& rhs) {
    -
    429  return lhs.reference_id == rhs.reference_id &&
    -
    430  lhs.timescale == rhs.timescale &&
    -
    431  lhs.earliest_presentation_time == rhs.earliest_presentation_time &&
    -
    432  lhs.first_offset == rhs.first_offset &&
    -
    433  lhs.references == rhs.references;
    -
    434 }
    -
    435 
    -
    436 inline bool operator==(const CueSourceIDBox& lhs,
    -
    437  const CueSourceIDBox& rhs) {
    -
    438  return lhs.source_id == rhs.source_id;
    +
    418 inline bool operator==(const MovieFragment& lhs, const MovieFragment& rhs) {
    +
    419  return lhs.header == rhs.header && lhs.tracks == rhs.tracks &&
    +
    420  lhs.pssh == rhs.pssh;
    +
    421 }
    +
    422 
    +
    423 inline bool operator==(const SegmentReference& lhs,
    +
    424  const SegmentReference& rhs) {
    +
    425  return lhs.reference_type == rhs.reference_type &&
    +
    426  lhs.referenced_size == rhs.referenced_size &&
    +
    427  lhs.subsegment_duration == rhs.subsegment_duration &&
    +
    428  lhs.starts_with_sap == rhs.starts_with_sap &&
    +
    429  lhs.sap_type == rhs.sap_type &&
    +
    430  lhs.sap_delta_time == rhs.sap_delta_time;
    +
    431 }
    +
    432 
    +
    433 inline bool operator==(const SegmentIndex& lhs, const SegmentIndex& rhs) {
    +
    434  return lhs.reference_id == rhs.reference_id &&
    +
    435  lhs.timescale == rhs.timescale &&
    +
    436  lhs.earliest_presentation_time == rhs.earliest_presentation_time &&
    +
    437  lhs.first_offset == rhs.first_offset &&
    +
    438  lhs.references == rhs.references;
    439 }
    440 
    -
    441 inline bool operator==(const CueTimeBox& lhs,
    -
    442  const CueTimeBox& rhs) {
    -
    443  return lhs.cue_current_time == rhs.cue_current_time;
    +
    441 inline bool operator==(const CueSourceIDBox& lhs,
    +
    442  const CueSourceIDBox& rhs) {
    +
    443  return lhs.source_id == rhs.source_id;
    444 }
    445 
    -
    446 inline bool operator==(const CueIDBox& lhs,
    -
    447  const CueIDBox& rhs) {
    -
    448  return lhs.cue_id == rhs.cue_id;
    +
    446 inline bool operator==(const CueTimeBox& lhs,
    +
    447  const CueTimeBox& rhs) {
    +
    448  return lhs.cue_current_time == rhs.cue_current_time;
    449 }
    450 
    -
    451 inline bool operator==(const CueSettingsBox& lhs,
    -
    452  const CueSettingsBox& rhs) {
    -
    453  return lhs.settings == rhs.settings;
    +
    451 inline bool operator==(const CueIDBox& lhs,
    +
    452  const CueIDBox& rhs) {
    +
    453  return lhs.cue_id == rhs.cue_id;
    454 }
    455 
    -
    456 inline bool operator==(const CuePayloadBox& lhs,
    -
    457  const CuePayloadBox& rhs) {
    -
    458  return lhs.cue_text == rhs.cue_text;
    +
    456 inline bool operator==(const CueSettingsBox& lhs,
    +
    457  const CueSettingsBox& rhs) {
    +
    458  return lhs.settings == rhs.settings;
    459 }
    460 
    -
    461 inline bool operator==(const VTTEmptyCueBox& lhs, const VTTEmptyCueBox& rhs) {
    -
    462  return true;
    -
    463 }
    -
    464 
    -
    465 inline bool operator==(const VTTAdditionalTextBox& lhs,
    -
    466  const VTTAdditionalTextBox& rhs) {
    -
    467  return lhs.cue_additional_text == rhs.cue_additional_text;
    +
    461 inline bool operator==(const CuePayloadBox& lhs,
    +
    462  const CuePayloadBox& rhs) {
    +
    463  return lhs.cue_text == rhs.cue_text;
    +
    464 }
    +
    465 
    +
    466 inline bool operator==(const VTTEmptyCueBox& lhs, const VTTEmptyCueBox& rhs) {
    +
    467  return true;
    468 }
    469 
    -
    470 inline bool operator==(const VTTCueBox& lhs,
    -
    471  const VTTCueBox& rhs) {
    -
    472  return lhs.cue_source_id == rhs.cue_source_id && lhs.cue_id == rhs.cue_id &&
    -
    473  lhs.cue_time == rhs.cue_time && lhs.cue_settings == rhs.cue_settings &&
    -
    474  lhs.cue_payload == rhs.cue_payload;
    -
    475 }
    -
    476 
    -
    477 } // namespace mp4
    -
    478 } // namespace media
    -
    479 } // namespace edash_packager
    -
    480 
    -
    481 #endif // MEDIA_FORMATS_MP4_BOX_DEFINITIONS_COMPARISON_H_
    +
    470 inline bool operator==(const VTTAdditionalTextBox& lhs,
    +
    471  const VTTAdditionalTextBox& rhs) {
    +
    472  return lhs.cue_additional_text == rhs.cue_additional_text;
    +
    473 }
    +
    474 
    +
    475 inline bool operator==(const VTTCueBox& lhs,
    +
    476  const VTTCueBox& rhs) {
    +
    477  return lhs.cue_source_id == rhs.cue_source_id && lhs.cue_id == rhs.cue_id &&
    +
    478  lhs.cue_time == rhs.cue_time && lhs.cue_settings == rhs.cue_settings &&
    +
    479  lhs.cue_payload == rhs.cue_payload;
    +
    480 }
    +
    481 
    +
    482 } // namespace mp4
    +
    483 } // namespace media
    +
    484 } // namespace edash_packager
    +
    485 
    +
    486 #endif // MEDIA_FORMATS_MP4_BOX_DEFINITIONS_COMPARISON_H_
    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 997e1aa432..19190e941d 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 c6c31d2137..093faf905f 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 e98106d9eb..c84fc153ee 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 ded548b6c5..e7c5b149fc 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 44ee03840d..a1b6300874 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 f3c31f4f42..8396076bec 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 3a93d65323..f43501f4a6 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 d3fdee12e0..00a2782174 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 c6b2554a13..c474e3bcd2 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 6d2e62e2a6..02652629b1 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 5ae8f3d2ea..8a8923e16c 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 3ecc2402b5..5b046941e0 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 1b108677ed..7571c2e879 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 d5f01dce2f..e353a882ec 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 f6c4a2ef3b..3b0b3c2476 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 d41bb201b0..7a64c0863d 100644 --- a/docs/de/dc1/demuxer_8h_source.html +++ b/docs/de/dc1/demuxer_8h_source.html @@ -171,7 +171,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 62295dbcf5..e14ed4f0ae 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 @@ -171,7 +171,7 @@ Additional Inherited Members

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

    -

    Definition at line 193 of file box_definitions.cc.

    +

    Definition at line 194 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 99a80c6417..96d1be7b1a 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 3949f038fe..cb0722fdb4 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 2be46e55e0..3a53d170ba 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 34098afb12..af1c95e3c6 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 47f0d319d5..966ef9844b 100644 --- a/docs/de/dd6/muxer__listener__test__helper_8cc_source.html +++ b/docs/de/dd6/muxer__listener__test__helper_8cc_source.html @@ -206,7 +206,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 6b47541385..48999b8134 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 518 of file box_definitions.h.

    +

    Definition at line 548 of file box_definitions.h.

    Member Function Documentation

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

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

    -

    Definition at line 1744 of file box_definitions.cc.

    +

    Definition at line 1795 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 40c0cb4002..f36b212fb6 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 86aacb07a0..d1e682f8ea 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 b10dd424ec..97ba5b2f0e 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 216636bf82..49ed331527 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 baa42b3530..754733a943 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 f823b85660..f6c3265a4d 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 3ea754e53b..3bd278c922 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 083e7e004c..ba5f1c4610 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 f1f22d8740..c1fa74f14b 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 a108464ad9..77d7173e93 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 610 of file box_definitions.h.

    +

    Definition at line 640 of file box_definitions.h.

    Member Function Documentation

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

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

    -

    Definition at line 1995 of file box_definitions.cc.

    +

    Definition at line 2046 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 b04238ad05..3eefeea2cd 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 52d9504528..6b71f0623a 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 @@ -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 502f7d0c41..5cfda7c490 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 4b4128714c..03b8fb68c3 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 d815092288..9a772fd9b6 100644 --- a/docs/df/d32/audio__stream__info_8h_source.html +++ b/docs/df/d32/audio__stream__info_8h_source.html @@ -113,80 +113,81 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
    24  kCodecDTSL,
    25  kCodecDTSM,
    26  kCodecDTSP,
    -
    27  kCodecOpus,
    -
    28  kCodecVorbis,
    -
    29 
    -
    30  kNumAudioCodec
    -
    31 };
    -
    32 
    -
    34 class AudioStreamInfo : public StreamInfo {
    -
    35  public:
    -
    37  AudioStreamInfo(int track_id,
    -
    38  uint32_t time_scale,
    -
    39  uint64_t duration,
    -
    40  AudioCodec codec,
    -
    41  const std::string& codec_string,
    -
    42  const std::string& language,
    -
    43  uint8_t sample_bits,
    -
    44  uint8_t num_channels,
    -
    45  uint32_t sampling_frequency,
    -
    46  uint32_t max_bitrate,
    -
    47  uint32_t avg_bitrate,
    -
    48  const uint8_t* extra_data,
    -
    49  size_t extra_data_size,
    -
    50  bool is_encrypted);
    -
    51 
    -
    54  bool IsValidConfig() const override;
    -
    55  std::string ToString() const override;
    -
    57 
    -
    58  AudioCodec codec() const { return codec_; }
    -
    59  uint8_t sample_bits() const { return sample_bits_; }
    -
    60  uint8_t sample_bytes() const { return sample_bits_ / 8; }
    -
    61  uint8_t num_channels() const { return num_channels_; }
    -
    62  uint32_t sampling_frequency() const { return sampling_frequency_; }
    -
    63  uint32_t bytes_per_frame() const {
    -
    64  return static_cast<uint32_t>(num_channels_) * sample_bits_ / 8;
    -
    65  }
    -
    66  uint32_t max_bitrate() const { return max_bitrate_; }
    -
    67  uint32_t avg_bitrate() const { return avg_bitrate_; }
    -
    68 
    -
    69  void set_codec(AudioCodec codec) { codec_ = codec; }
    -
    70  void set_sampling_frequency(const uint32_t sampling_frequency) {
    -
    71  sampling_frequency_ = sampling_frequency;
    -
    72  }
    -
    73 
    -
    76  static std::string GetCodecString(AudioCodec codec,
    -
    77  uint8_t audio_object_type);
    -
    78 
    -
    79  private:
    -
    80  ~AudioStreamInfo() override;
    -
    81 
    -
    82  AudioCodec codec_;
    -
    83  uint8_t sample_bits_;
    -
    84  uint8_t num_channels_;
    -
    85  uint32_t sampling_frequency_;
    -
    86  uint32_t max_bitrate_;
    -
    87  uint32_t avg_bitrate_;
    -
    88 
    -
    89  // Not using DISALLOW_COPY_AND_ASSIGN here intentionally to allow the compiler
    -
    90  // generated copy constructor and assignment operator. Since the extra data is
    -
    91  // typically small, the performance impact is minimal.
    -
    92 };
    -
    93 
    -
    94 } // namespace media
    -
    95 } // namespace edash_packager
    -
    96 
    -
    97 #endif // MEDIA_BASE_AUDIO_STREAM_INFO_H_
    -
    Holds audio stream information.
    -
    std::string ToString() const override
    +
    27  kCodecEAC3,
    +
    28  kCodecOpus,
    +
    29  kCodecVorbis,
    +
    30 
    +
    31  kNumAudioCodec
    +
    32 };
    +
    33 
    +
    35 class AudioStreamInfo : public StreamInfo {
    +
    36  public:
    +
    38  AudioStreamInfo(int track_id,
    +
    39  uint32_t time_scale,
    +
    40  uint64_t duration,
    +
    41  AudioCodec codec,
    +
    42  const std::string& codec_string,
    +
    43  const std::string& language,
    +
    44  uint8_t sample_bits,
    +
    45  uint8_t num_channels,
    +
    46  uint32_t sampling_frequency,
    +
    47  uint32_t max_bitrate,
    +
    48  uint32_t avg_bitrate,
    +
    49  const uint8_t* extra_data,
    +
    50  size_t extra_data_size,
    +
    51  bool is_encrypted);
    +
    52 
    +
    55  bool IsValidConfig() const override;
    +
    56  std::string ToString() const override;
    +
    58 
    +
    59  AudioCodec codec() const { return codec_; }
    +
    60  uint8_t sample_bits() const { return sample_bits_; }
    +
    61  uint8_t sample_bytes() const { return sample_bits_ / 8; }
    +
    62  uint8_t num_channels() const { return num_channels_; }
    +
    63  uint32_t sampling_frequency() const { return sampling_frequency_; }
    +
    64  uint32_t bytes_per_frame() const {
    +
    65  return static_cast<uint32_t>(num_channels_) * sample_bits_ / 8;
    +
    66  }
    +
    67  uint32_t max_bitrate() const { return max_bitrate_; }
    +
    68  uint32_t avg_bitrate() const { return avg_bitrate_; }
    +
    69 
    +
    70  void set_codec(AudioCodec codec) { codec_ = codec; }
    +
    71  void set_sampling_frequency(const uint32_t sampling_frequency) {
    +
    72  sampling_frequency_ = sampling_frequency;
    +
    73  }
    +
    74 
    +
    77  static std::string GetCodecString(AudioCodec codec,
    +
    78  uint8_t audio_object_type);
    +
    79 
    +
    80  private:
    +
    81  ~AudioStreamInfo() override;
    +
    82 
    +
    83  AudioCodec codec_;
    +
    84  uint8_t sample_bits_;
    +
    85  uint8_t num_channels_;
    +
    86  uint32_t sampling_frequency_;
    +
    87  uint32_t max_bitrate_;
    +
    88  uint32_t avg_bitrate_;
    +
    89 
    +
    90  // Not using DISALLOW_COPY_AND_ASSIGN here intentionally to allow the compiler
    +
    91  // generated copy constructor and assignment operator. Since the extra data is
    +
    92  // typically small, the performance impact is minimal.
    +
    93 };
    +
    94 
    +
    95 } // namespace media
    +
    96 } // namespace edash_packager
    +
    97 
    +
    98 #endif // MEDIA_BASE_AUDIO_STREAM_INFO_H_
    +
    Holds audio stream information.
    +
    std::string ToString() const override
    Abstract class holds stream information.
    Definition: stream_info.h:26
    -
    AudioStreamInfo(int track_id, uint32_t time_scale, uint64_t duration, AudioCodec codec, const std::string &codec_string, const std::string &language, uint8_t sample_bits, uint8_t num_channels, uint32_t sampling_frequency, uint32_t max_bitrate, uint32_t avg_bitrate, const uint8_t *extra_data, size_t extra_data_size, bool is_encrypted)
    Construct an initialized audio stream info object.
    - -
    static std::string GetCodecString(AudioCodec codec, uint8_t audio_object_type)
    +
    AudioStreamInfo(int track_id, uint32_t time_scale, uint64_t duration, AudioCodec codec, const std::string &codec_string, const std::string &language, uint8_t sample_bits, uint8_t num_channels, uint32_t sampling_frequency, uint32_t max_bitrate, uint32_t avg_bitrate, const uint8_t *extra_data, size_t extra_data_size, bool is_encrypted)
    Construct an initialized audio stream info object.
    + +
    static std::string GetCodecString(AudioCodec codec, uint8_t audio_object_type)
    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 d4aacc28f9..eceb65b40e 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 c6488c653a..eaf90455ee 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 76be954e9f..ce378fcbe0 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 8269d9b6b5..6f869e7f7b 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 c01add06da..a5535be3f3 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 98402f472d..d3fe403845 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 4b841df051..65001d020e 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 @@ -154,6 +154,9 @@ uint32_t samplerate AC3Specific dac3   + +EC3Specific dec3 +  @@ -163,7 +166,7 @@ Additional Inherited Members

    Additional Inherited Members

    Detailed Description

    -

    Definition at line 318 of file box_definitions.h.

    +

    Definition at line 346 of file box_definitions.h.

    Member Function Documentation

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

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

    -

    Definition at line 1447 of file box_definitions.cc.

    +

    Definition at line 1496 of file box_definitions.cc.

    @@ -200,7 +203,7 @@ Additional Inherited Members diff --git a/docs/df/d67/opus__packet__builder_8h_source.html b/docs/df/d67/opus__packet__builder_8h_source.html index e81f954767..2a0e981b41 100644 --- a/docs/df/d67/opus__packet__builder_8h_source.html +++ b/docs/df/d67/opus__packet__builder_8h_source.html @@ -136,7 +136,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); 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 5125d66b6c..c184f4e956 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 @@ -183,7 +183,7 @@ Additional Inherited Members

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

    -

    Definition at line 1248 of file box_definitions.cc.

    +

    Definition at line 1249 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 f6ea144b12..5946b0b88c 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 f797493b62..7c5bd7e9f6 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 402 of file box_definitions.h.

    +

    Definition at line 432 of file box_definitions.h.

    Member Function Documentation

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

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

    -

    Definition at line 719 of file box_definitions.cc.

    +

    Definition at line 720 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 6ce8622222..2e1fcfef3f 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 d8359f874c..0da326d8ac 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 574 of file box_definitions.h.

    +

    Definition at line 604 of file box_definitions.h.

    Member Function Documentation

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

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

    -

    Definition at line 1921 of file box_definitions.cc.

    +

    Definition at line 1972 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 2aeae27dcd..b62355fbbe 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 1f621071cb..13a108ee90 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 15a5ae479d..57ba10ba45 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 3a1394aa7a..d5bc31462c 100644 --- a/docs/df/d96/xml__node_8cc_source.html +++ b/docs/df/d96/xml__node_8cc_source.html @@ -475,7 +475,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 0c44651083..ef090b6ad8 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 f986d96b67..f0acdc4764 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 342 of file box_definitions.h.

    +

    Definition at line 372 of file box_definitions.h.

    Member Function Documentation

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

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

    -

    Definition at line 1524 of file box_definitions.cc.

    +

    Definition at line 1575 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 50b406cd88..58b1ecef82 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 adf97b4a24..1d3af7f10f 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 38294ee378..f602c223f0 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 f2f48da93b..fc48cf8e7d 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 f02ecb0dba..826b925b77 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 9b3073d328..47dc3e2991 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 37c02b96f1..492696828a 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 ab2a16c4db..22bffdf207 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 eb64e6daae..e32816d4b7 100644 --- a/docs/df/ddc/webm_2segmenter_8h_source.html +++ b/docs/df/ddc/webm_2segmenter_8h_source.html @@ -219,7 +219,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
    160 } // namespace edash_packager
    161 
    162 #endif // MEDIA_FORMATS_WEBM_SEGMENTER_H_
    -
    Holds audio stream information.
    +
    Holds audio stream information.
    An implementation of IMkvWriter using our File type.
    Definition: mkv_writer.h:21
    Status SetCluster(uint64_t start_webm_timecode, uint64_t position, MkvWriter *writer)
    Creates a Cluster object with the given parameters.
    Definition: segmenter.cc:231
    @@ -244,7 +244,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 59354d024e..e9842aad17 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 d0fc100e32..30de6a0413 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 4e8af37583..c45429f32e 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 396e724df7..70cb5bcdff 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 c7304e8244..c99921b281 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 f3838e1805..a21f1b5e68 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 0148a46f0f..2532dcd1d5 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 cdaa9867c4..3ffdf60c30 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/dfa/classedash__packager_1_1media_1_1RsaPublicKey-members.html b/docs/df/dfa/classedash__packager_1_1media_1_1RsaPublicKey-members.html index f7bd645f6a..674be05ab8 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 47058f75e9..88bc34ae20 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 28d0b1fc4a..678549c8d4 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 fdc6d2e135..76e744ff8a 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 4e43ab16de..268d3f0934 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 399fa98519..370e0aabd5 100644 --- a/docs/dir_3e9291fd7a18fdecc763294cb2628910.html +++ b/docs/dir_3e9291fd7a18fdecc763294cb2628910.html @@ -169,7 +169,7 @@ Files diff --git a/docs/dir_49627ef5ef0630f6cf11dd06344c4cf0.html b/docs/dir_49627ef5ef0630f6cf11dd06344c4cf0.html index 6eb7a4e77b..a6f460ae5a 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 214a8acda2..72adc2980e 100644 --- a/docs/dir_5039d854a18988ed1f1dbebc120ffbf7.html +++ b/docs/dir_5039d854a18988ed1f1dbebc120ffbf7.html @@ -185,7 +185,7 @@ Files diff --git a/docs/dir_5eb2e460866db0ed29e32d64402e5c22.html b/docs/dir_5eb2e460866db0ed29e32d64402e5c22.html index ae8355df47..79e6f292ee 100644 --- a/docs/dir_5eb2e460866db0ed29e32d64402e5c22.html +++ b/docs/dir_5eb2e460866db0ed29e32d64402e5c22.html @@ -125,7 +125,7 @@ Files diff --git a/docs/dir_65f7acfa8cf3a5f1edc11faa2428b914.html b/docs/dir_65f7acfa8cf3a5f1edc11faa2428b914.html index af4c58d6cb..3d2c7eace0 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 6ed4c11e55..2b11c23ac9 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 8ba742ee38..30642a7138 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 37c54c2a74..944f2873d8 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 96f11cfeef..d4ff2c51af 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 48b3e72a87..06e5ac6e4c 100644 --- a/docs/dir_c6ada2450b25ab5438a4dba6c9b890af.html +++ b/docs/dir_c6ada2450b25ab5438a4dba6c9b890af.html @@ -219,7 +219,7 @@ Files diff --git a/docs/dir_d422163b96683743ed3963d4aac17747.html b/docs/dir_d422163b96683743ed3963d4aac17747.html index 93f75b867a..d566cbfe4c 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 644c4b8425..f3a94da028 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 bbfb04bd53..743263f5c0 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 daa99cd617..2040c7a68d 100644 --- a/docs/files.html +++ b/docs/files.html @@ -379,7 +379,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions.html b/docs/functions.html index 39c46a6d81..a79fe1f082 100644 --- a/docs/functions.html +++ b/docs/functions.html @@ -214,7 +214,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_b.html b/docs/functions_b.html index ddd5c75ac2..00f03e304c 100644 --- a/docs/functions_b.html +++ b/docs/functions_b.html @@ -161,6 +161,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , edash_packager::media::mp4::DataReference , edash_packager::media::mp4::DecodingTimeToSample , edash_packager::media::mp4::DTSSpecific +, edash_packager::media::mp4::EC3Specific , edash_packager::media::mp4::Edit , edash_packager::media::mp4::EditList , edash_packager::media::mp4::ElementaryStreamDescriptor @@ -237,7 +238,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_c.html b/docs/functions_c.html index 314f89ae5f..f1d522386f 100644 --- a/docs/functions_c.html +++ b/docs/functions_c.html @@ -225,7 +225,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_d.html b/docs/functions_d.html index bfcdfe6b90..17d957c1f5 100644 --- a/docs/functions_d.html +++ b/docs/functions_d.html @@ -153,7 +153,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_e.html b/docs/functions_e.html index c802d984a4..5a0e832633 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 b249fa5190..c891c9fbcc 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 313d0161a3..c571df9dae 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 9deab31ed6..dbe95e0dbc 100644 --- a/docs/functions_func.html +++ b/docs/functions_func.html @@ -214,7 +214,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_b.html b/docs/functions_func_b.html index 8b82539b91..aba35c2a8c 100644 --- a/docs/functions_func_b.html +++ b/docs/functions_func_b.html @@ -158,6 +158,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , edash_packager::media::mp4::DataReference , edash_packager::media::mp4::DecodingTimeToSample , edash_packager::media::mp4::DTSSpecific +, edash_packager::media::mp4::EC3Specific , edash_packager::media::mp4::Edit , edash_packager::media::mp4::EditList , edash_packager::media::mp4::ElementaryStreamDescriptor @@ -234,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 015af90bb0..dbb4e5afb4 100644 --- a/docs/functions_func_c.html +++ b/docs/functions_func_c.html @@ -225,7 +225,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_d.html b/docs/functions_func_d.html index 74f1013044..86a08e2a27 100644 --- a/docs/functions_func_d.html +++ b/docs/functions_func_d.html @@ -153,7 +153,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_e.html b/docs/functions_func_e.html index 5c72f848e7..63d7b4229d 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 aa4b2a2969..37149def3f 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 e7dd115f2d..5dfee7eb20 100644 --- a/docs/functions_func_g.html +++ b/docs/functions_func_g.html @@ -234,7 +234,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_h.html b/docs/functions_func_h.html index d77105526e..0d49cc21b5 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 1a82220c49..f0fb766d66 100644 --- a/docs/functions_func_i.html +++ b/docs/functions_func_i.html @@ -200,7 +200,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_k.html b/docs/functions_func_k.html index 473a91c45e..e5cdc76974 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 5dbd17e922..f9466bbda9 100644 --- a/docs/functions_func_l.html +++ b/docs/functions_func_l.html @@ -137,7 +137,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_m.html b/docs/functions_func_m.html index 79356976ee..2681fa0307 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 8252c62173..d49a5b71d7 100644 --- a/docs/functions_func_n.html +++ b/docs/functions_func_n.html @@ -153,7 +153,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_o.html b/docs/functions_func_o.html index 60a860bec5..210dab8945 100644 --- a/docs/functions_func_o.html +++ b/docs/functions_func_o.html @@ -164,7 +164,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_p.html b/docs/functions_func_p.html index 8110f16b64..1022a9e7d7 100644 --- a/docs/functions_func_p.html +++ b/docs/functions_func_p.html @@ -206,7 +206,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_r.html b/docs/functions_func_r.html index 3bcedee58e..2374b62c6b 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 a8c2f4a2e7..6ca9bc3a31 100644 --- a/docs/functions_func_s.html +++ b/docs/functions_func_s.html @@ -262,7 +262,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_t.html b/docs/functions_func_t.html index 294a7fd94d..8028ce15f5 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 52f746fa36..7ba016a5d3 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 d9b0ca133b..2ee9f54521 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 7fd46887c4..276258f205 100644 --- a/docs/functions_func_w.html +++ b/docs/functions_func_w.html @@ -173,7 +173,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_x.html b/docs/functions_func_x.html index a35c022eac..d8e3a67b8f 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 203232e4eb..a83e548747 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 c5ff790e3c..8c5751ad1a 100644 --- a/docs/functions_g.html +++ b/docs/functions_g.html @@ -234,7 +234,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_h.html b/docs/functions_h.html index 9efcddb294..5d8433a88d 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 bbc59a6c53..c6c2d18b80 100644 --- a/docs/functions_i.html +++ b/docs/functions_i.html @@ -203,7 +203,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_k.html b/docs/functions_k.html index b874eb1e6a..fc48a6217f 100644 --- a/docs/functions_k.html +++ b/docs/functions_k.html @@ -146,7 +146,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_l.html b/docs/functions_l.html index 46465f9be9..b1f4c544c3 100644 --- a/docs/functions_l.html +++ b/docs/functions_l.html @@ -137,7 +137,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_m.html b/docs/functions_m.html index f1dd0f5d7e..750495abdf 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 f2956f8ce7..7edcaee3a9 100644 --- a/docs/functions_n.html +++ b/docs/functions_n.html @@ -159,7 +159,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_o.html b/docs/functions_o.html index 83dfc3c304..9394453b85 100644 --- a/docs/functions_o.html +++ b/docs/functions_o.html @@ -167,7 +167,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_p.html b/docs/functions_p.html index 6770686e7b..4035e772f2 100644 --- a/docs/functions_p.html +++ b/docs/functions_p.html @@ -212,7 +212,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_r.html b/docs/functions_r.html index 7e3f7b7b40..070848a093 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 1fb9b38a74..9294e088da 100644 --- a/docs/functions_s.html +++ b/docs/functions_s.html @@ -277,7 +277,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_t.html b/docs/functions_t.html index 5c3c0b4a16..4cf83dd0a9 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 d43677a6e1..df8d1c7135 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 1c00228b50..fbb77d53ca 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 a0cd88cd3f..8d61d7543f 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 78de4959d9..6fb51b887a 100644 --- a/docs/functions_vars.html +++ b/docs/functions_vars.html @@ -147,7 +147,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_w.html b/docs/functions_w.html index 07594c8d99..60875c665a 100644 --- a/docs/functions_w.html +++ b/docs/functions_w.html @@ -173,7 +173,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_x.html b/docs/functions_x.html index ee6003c30f..2e104d17b1 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 4df04499f0..4c2fb3284a 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 0a1df989d3..c3778a2efc 100644 --- a/docs/hierarchy.html +++ b/docs/hierarchy.html @@ -112,67 +112,68 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); |oCedash_packager::media::mp4::CueTimeBox |oCedash_packager::media::mp4::DataInformation |oCedash_packager::media::mp4::DTSSpecific -|oCedash_packager::media::mp4::Edit -|oCedash_packager::media::mp4::FileType -||\Cedash_packager::media::mp4::SegmentType -|oCedash_packager::media::mp4::FullBox -||oCedash_packager::media::mp4::ChunkLargeOffset -|||\Cedash_packager::media::mp4::ChunkOffset -||oCedash_packager::media::mp4::CompactSampleSize -||oCedash_packager::media::mp4::CompositionTimeToSample -||oCedash_packager::media::mp4::DataEntryUrl -||oCedash_packager::media::mp4::DataReference -||oCedash_packager::media::mp4::DecodingTimeToSample -||oCedash_packager::media::mp4::EditList -||oCedash_packager::media::mp4::ElementaryStreamDescriptor -||oCedash_packager::media::mp4::HandlerReference -||oCedash_packager::media::mp4::ID3v2 -||oCedash_packager::media::mp4::MediaHeader -||oCedash_packager::media::mp4::Metadata -||oCedash_packager::media::mp4::MovieExtendsHeader -||oCedash_packager::media::mp4::MovieFragmentHeader -||oCedash_packager::media::mp4::MovieHeader -||oCedash_packager::media::mp4::ProtectionSystemSpecificHeader -||oCedash_packager::media::mp4::SampleAuxiliaryInformationOffset -||oCedash_packager::media::mp4::SampleAuxiliaryInformationSize -||oCedash_packager::media::mp4::SampleDescription -||oCedash_packager::media::mp4::SampleEncryption -||oCedash_packager::media::mp4::SampleGroupDescription -||oCedash_packager::media::mp4::SampleSize -||oCedash_packager::media::mp4::SampleToChunk -||oCedash_packager::media::mp4::SampleToGroup -||oCedash_packager::media::mp4::SchemeType -||oCedash_packager::media::mp4::SegmentIndex -||oCedash_packager::media::mp4::SoundMediaHeader -||oCedash_packager::media::mp4::SubtitleMediaHeader -||oCedash_packager::media::mp4::SyncSample -||oCedash_packager::media::mp4::TrackEncryption -||oCedash_packager::media::mp4::TrackExtends -||oCedash_packager::media::mp4::TrackFragmentDecodeTime -||oCedash_packager::media::mp4::TrackFragmentHeader -||oCedash_packager::media::mp4::TrackFragmentRun -||oCedash_packager::media::mp4::TrackHeader -||\Cedash_packager::media::mp4::VideoMediaHeader -|oCedash_packager::media::mp4::Media -|oCedash_packager::media::mp4::MediaData -|oCedash_packager::media::mp4::MediaInformation -|oCedash_packager::media::mp4::Movie -|oCedash_packager::media::mp4::MovieExtends -|oCedash_packager::media::mp4::MovieFragment -|oCedash_packager::media::mp4::OriginalFormat -|oCedash_packager::media::mp4::PixelAspectRatio -|oCedash_packager::media::mp4::ProtectionSchemeInfo -|oCedash_packager::media::mp4::SampleTable -|oCedash_packager::media::mp4::SchemeInfo -|oCedash_packager::media::mp4::Track -|oCedash_packager::media::mp4::TrackFragment -|oCedash_packager::media::mp4::VideoSampleEntry -|oCedash_packager::media::mp4::VTTAdditionalTextBox -|oCedash_packager::media::mp4::VTTCueBox -|oCedash_packager::media::mp4::VTTEmptyCueBox -|oCedash_packager::media::mp4::WebVTTConfigurationBox -|oCedash_packager::media::mp4::WebVTTSourceLabelBox -|\Cedash_packager::media::mp4::WVTTSampleEntry +|oCedash_packager::media::mp4::EC3Specific +|oCedash_packager::media::mp4::Edit +|oCedash_packager::media::mp4::FileType +||\Cedash_packager::media::mp4::SegmentType +|oCedash_packager::media::mp4::FullBox +||oCedash_packager::media::mp4::ChunkLargeOffset +|||\Cedash_packager::media::mp4::ChunkOffset +||oCedash_packager::media::mp4::CompactSampleSize +||oCedash_packager::media::mp4::CompositionTimeToSample +||oCedash_packager::media::mp4::DataEntryUrl +||oCedash_packager::media::mp4::DataReference +||oCedash_packager::media::mp4::DecodingTimeToSample +||oCedash_packager::media::mp4::EditList +||oCedash_packager::media::mp4::ElementaryStreamDescriptor +||oCedash_packager::media::mp4::HandlerReference +||oCedash_packager::media::mp4::ID3v2 +||oCedash_packager::media::mp4::MediaHeader +||oCedash_packager::media::mp4::Metadata +||oCedash_packager::media::mp4::MovieExtendsHeader +||oCedash_packager::media::mp4::MovieFragmentHeader +||oCedash_packager::media::mp4::MovieHeader +||oCedash_packager::media::mp4::ProtectionSystemSpecificHeader +||oCedash_packager::media::mp4::SampleAuxiliaryInformationOffset +||oCedash_packager::media::mp4::SampleAuxiliaryInformationSize +||oCedash_packager::media::mp4::SampleDescription +||oCedash_packager::media::mp4::SampleEncryption +||oCedash_packager::media::mp4::SampleGroupDescription +||oCedash_packager::media::mp4::SampleSize +||oCedash_packager::media::mp4::SampleToChunk +||oCedash_packager::media::mp4::SampleToGroup +||oCedash_packager::media::mp4::SchemeType +||oCedash_packager::media::mp4::SegmentIndex +||oCedash_packager::media::mp4::SoundMediaHeader +||oCedash_packager::media::mp4::SubtitleMediaHeader +||oCedash_packager::media::mp4::SyncSample +||oCedash_packager::media::mp4::TrackEncryption +||oCedash_packager::media::mp4::TrackExtends +||oCedash_packager::media::mp4::TrackFragmentDecodeTime +||oCedash_packager::media::mp4::TrackFragmentHeader +||oCedash_packager::media::mp4::TrackFragmentRun +||oCedash_packager::media::mp4::TrackHeader +||\Cedash_packager::media::mp4::VideoMediaHeader +|oCedash_packager::media::mp4::Media +|oCedash_packager::media::mp4::MediaData +|oCedash_packager::media::mp4::MediaInformation +|oCedash_packager::media::mp4::Movie +|oCedash_packager::media::mp4::MovieExtends +|oCedash_packager::media::mp4::MovieFragment +|oCedash_packager::media::mp4::OriginalFormat +|oCedash_packager::media::mp4::PixelAspectRatio +|oCedash_packager::media::mp4::ProtectionSchemeInfo +|oCedash_packager::media::mp4::SampleTable +|oCedash_packager::media::mp4::SchemeInfo +|oCedash_packager::media::mp4::Track +|oCedash_packager::media::mp4::TrackFragment +|oCedash_packager::media::mp4::VideoSampleEntry +|oCedash_packager::media::mp4::VTTAdditionalTextBox +|oCedash_packager::media::mp4::VTTCueBox +|oCedash_packager::media::mp4::VTTEmptyCueBox +|oCedash_packager::media::mp4::WebVTTConfigurationBox +|oCedash_packager::media::mp4::WebVTTSourceLabelBox +|\Cedash_packager::media::mp4::WVTTSampleEntry oCedash_packager::media::mp4::BoxBuffer oCedash_packager::media::BufferReader |\Cedash_packager::media::mp4::BoxReaderClass for reading MP4 boxes @@ -226,115 +227,116 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); oCedash_packager::media::HEVCDecoderConfigurationClass for parsing HEVC decoder configuration oCIMkvWriter |\Cedash_packager::media::MkvWriterAn implementation of IMkvWriter using our File type -oCedash_packager::media::IoCacheDeclaration of class which implements a thread-safe circular buffer -oCedash_packager::media::KeyFetcherBase class for fetching keys from the license service -|\Cedash_packager::media::HttpKeyFetcher -oCedash_packager::media::KeySourceKeySource is responsible for encryption key acquisition -|\Cedash_packager::media::WidevineKeySource -oCedash_packager::media::mp4::Language -oCedash_packager::media::LibcryptoThreadingConvenience class which initializes and terminates libcrypto threading -oCedash_packager::media::MediaParser -|oCedash_packager::media::mp2t::Mp2tMediaParser -|oCedash_packager::media::mp4::MP4MediaParser -|oCedash_packager::media::WebMMediaParser -|oCedash_packager::media::WebVttMediaParser -|\Cedash_packager::media::wvm::WvmMediaParser -oCedash_packager::media::MediaStream -oCedash_packager::MpdBuilderThis class generates DASH MPDs (Media Presentation Descriptions) -|\Cedash_packager::MockMpdBuilder -oCedash_packager::MpdNotifier -|oCedash_packager::DashIopMpdNotifier -|oCedash_packager::MockMpdNotifier -|\Cedash_packager::SimpleMpdNotifier -oCedash_packager::MpdNotifierFactory -oCedash_packager::MpdOptionsDefines Mpd Options -oCedash_packager::MpdWriter -oCedash_packager::media::Muxer -|oCedash_packager::media::mp4::MP4Muxer -|\Cedash_packager::media::webm::WebMMuxerImplements WebM Muxer -oCedash_packager::media::MuxerListener -|oCedash_packager::media::MpdNotifyMuxerListener -|\Cedash_packager::media::VodMediaInfoDumpMuxerListener -oCedash_packager::media::MuxerOptionsThis structure contains the list of configuration options for Muxer -oCedash_packager::media::OffsetByteQueue -oCedash_packager::media::OnMediaEndParameters -oCedash_packager::media::OpusPacket -oCedash_packager::media::wvm::PrevSampleData -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::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::mp4::IndependentSubstream +oCedash_packager::media::IoCacheDeclaration of class which implements a thread-safe circular buffer +oCedash_packager::media::KeyFetcherBase class for fetching keys from the license service +|\Cedash_packager::media::HttpKeyFetcher +oCedash_packager::media::KeySourceKeySource is responsible for encryption key acquisition +|\Cedash_packager::media::WidevineKeySource +oCedash_packager::media::mp4::Language +oCedash_packager::media::LibcryptoThreadingConvenience class which initializes and terminates libcrypto threading +oCedash_packager::media::MediaParser +|oCedash_packager::media::mp2t::Mp2tMediaParser +|oCedash_packager::media::mp4::MP4MediaParser +|oCedash_packager::media::WebMMediaParser +|oCedash_packager::media::WebVttMediaParser +|\Cedash_packager::media::wvm::WvmMediaParser +oCedash_packager::media::MediaStream +oCedash_packager::MpdBuilderThis class generates DASH MPDs (Media Presentation Descriptions) +|\Cedash_packager::MockMpdBuilder +oCedash_packager::MpdNotifier +|oCedash_packager::DashIopMpdNotifier +|oCedash_packager::MockMpdNotifier +|\Cedash_packager::SimpleMpdNotifier +oCedash_packager::MpdNotifierFactory +oCedash_packager::MpdOptionsDefines Mpd Options +oCedash_packager::MpdWriter +oCedash_packager::media::Muxer +|oCedash_packager::media::mp4::MP4Muxer +|\Cedash_packager::media::webm::WebMMuxerImplements WebM Muxer +oCedash_packager::media::MuxerListener +|oCedash_packager::media::MpdNotifyMuxerListener +|\Cedash_packager::media::VodMediaInfoDumpMuxerListener +oCedash_packager::media::MuxerOptionsThis structure contains the list of configuration options for Muxer +oCedash_packager::media::OffsetByteQueue +oCedash_packager::media::OnMediaEndParameters +oCedash_packager::media::OpusPacket +oCedash_packager::media::wvm::PrevSampleData +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::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 b003366cb8..416f5f0c5b 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 66331c6347..fdb6a15870 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 c0c0c73ded..31e23ea74d 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 68adc90f6e..d90fdc28e1 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_1.js b/docs/search/all_1.js index fcbac638f6..5361a1d17e 100644 --- a/docs/search/all_1.js +++ b/docs/search/all_1.js @@ -11,7 +11,7 @@ var searchData= ['boxbuffer',['BoxBuffer',['../dd/d4f/classedash__packager_1_1media_1_1mp4_1_1BoxBuffer.html',1,'edash_packager::media::mp4']]], ['boxbuffer',['BoxBuffer',['../dd/d4f/classedash__packager_1_1media_1_1mp4_1_1BoxBuffer.html#aa1144b8d6912a983d65ff97f44ffeb51',1,'edash_packager::media::mp4::BoxBuffer::BoxBuffer(BoxReader *reader)'],['../dd/d4f/classedash__packager_1_1media_1_1mp4_1_1BoxBuffer.html#a1ecfb419ea348ad684bf3c1556d1570c',1,'edash_packager::media::mp4::BoxBuffer::BoxBuffer(BufferWriter *writer)']]], ['boxreader',['BoxReader',['../db/d6c/classedash__packager_1_1media_1_1mp4_1_1BoxReader.html',1,'edash_packager::media::mp4']]], - ['boxtype',['BoxType',['../d7/d8a/structedash__packager_1_1media_1_1mp4_1_1Box.html#a504e7612c24f7d788748dff9940e46ea',1,'edash_packager::media::mp4::Box::BoxType()'],['../d1/dcd/structedash__packager_1_1media_1_1mp4_1_1FileType.html#a37c1287fee817803e6cb18eebfd99847',1,'edash_packager::media::mp4::FileType::BoxType()'],['../dd/da6/structedash__packager_1_1media_1_1mp4_1_1SegmentType.html#aebd87db93b8d63a08e0becb45e1d70cf',1,'edash_packager::media::mp4::SegmentType::BoxType()'],['../da/d2a/structedash__packager_1_1media_1_1mp4_1_1ProtectionSystemSpecificHeader.html#a652e720a34bfc0ea43de52642325d12e',1,'edash_packager::media::mp4::ProtectionSystemSpecificHeader::BoxType()'],['../de/dc4/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset.html#acfbcac458961036f8fa9c47bea95905c',1,'edash_packager::media::mp4::SampleAuxiliaryInformationOffset::BoxType()'],['../d2/d51/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize.html#a54b83543e5924c4f9d7e4e45934be26a',1,'edash_packager::media::mp4::SampleAuxiliaryInformationSize::BoxType()'],['../d5/d78/structedash__packager_1_1media_1_1mp4_1_1SampleEncryption.html#ab6d4d91b2bd0a2a021c10afac4672c09',1,'edash_packager::media::mp4::SampleEncryption::BoxType()'],['../da/d4b/structedash__packager_1_1media_1_1mp4_1_1OriginalFormat.html#a3c21bf81deb542ab69811673ec025f2e',1,'edash_packager::media::mp4::OriginalFormat::BoxType()'],['../d4/dcc/structedash__packager_1_1media_1_1mp4_1_1SchemeType.html#a9d477e94ca46a6ee6ebd6208a3343c6c',1,'edash_packager::media::mp4::SchemeType::BoxType()'],['../de/d44/structedash__packager_1_1media_1_1mp4_1_1TrackEncryption.html#aebad0e736feade55f9a81675737380fe',1,'edash_packager::media::mp4::TrackEncryption::BoxType()'],['../d2/d6f/structedash__packager_1_1media_1_1mp4_1_1SchemeInfo.html#a05f236b91e36bd7c774fec38378dae2c',1,'edash_packager::media::mp4::SchemeInfo::BoxType()'],['../dd/dc9/structedash__packager_1_1media_1_1mp4_1_1ProtectionSchemeInfo.html#a62ea06c139c349ef4f1960c15f85da33',1,'edash_packager::media::mp4::ProtectionSchemeInfo::BoxType()'],['../dd/d14/structedash__packager_1_1media_1_1mp4_1_1MovieHeader.html#a4403980ce1e53080796c60d8d7f91ee1',1,'edash_packager::media::mp4::MovieHeader::BoxType()'],['../dd/d15/structedash__packager_1_1media_1_1mp4_1_1TrackHeader.html#a7347e1e4b0e9785b4cecaf6b24c7b70f',1,'edash_packager::media::mp4::TrackHeader::BoxType()'],['../d8/d4a/structedash__packager_1_1media_1_1mp4_1_1EditList.html#aeeaefd1b799f2da1d28dd037ecbbd6a8',1,'edash_packager::media::mp4::EditList::BoxType()'],['../d7/d4f/structedash__packager_1_1media_1_1mp4_1_1Edit.html#aa59c17335999289620bd51d05d3208ab',1,'edash_packager::media::mp4::Edit::BoxType()'],['../d3/dbd/structedash__packager_1_1media_1_1mp4_1_1HandlerReference.html#a27e27257f90332a2585114153e0d7594',1,'edash_packager::media::mp4::HandlerReference::BoxType()'],['../d9/d21/structedash__packager_1_1media_1_1mp4_1_1ID3v2.html#acc52776c15a2dcd6a61be12cb7604bb1',1,'edash_packager::media::mp4::ID3v2::BoxType()'],['../d2/d06/structedash__packager_1_1media_1_1mp4_1_1Metadata.html#aeb14c600d3581277e2709857ab86203a',1,'edash_packager::media::mp4::Metadata::BoxType()'],['../d1/d31/structedash__packager_1_1media_1_1mp4_1_1CodecConfigurationRecord.html#af79275c621765517a82bd0805c82247e',1,'edash_packager::media::mp4::CodecConfigurationRecord::BoxType()'],['../d4/d3d/structedash__packager_1_1media_1_1mp4_1_1PixelAspectRatio.html#a9b88be9293ff1ea9d943de9e9d737782',1,'edash_packager::media::mp4::PixelAspectRatio::BoxType()'],['../df/d6a/structedash__packager_1_1media_1_1mp4_1_1VideoSampleEntry.html#a9d870de1a6e6799c18976adeed3d2b3e',1,'edash_packager::media::mp4::VideoSampleEntry::BoxType()'],['../d9/dcc/structedash__packager_1_1media_1_1mp4_1_1ElementaryStreamDescriptor.html#a8a819a7d71dfbbaf5ec2770499689d2d',1,'edash_packager::media::mp4::ElementaryStreamDescriptor::BoxType()'],['../d0/db7/structedash__packager_1_1media_1_1mp4_1_1DTSSpecific.html#aa392cbec3186779bb28e57e9a5e55973',1,'edash_packager::media::mp4::DTSSpecific::BoxType()'],['../d0/d65/structedash__packager_1_1media_1_1mp4_1_1AC3Specific.html#adcfdf18f91a08aa3f9fa73d617e02a22',1,'edash_packager::media::mp4::AC3Specific::BoxType()'],['../df/d62/structedash__packager_1_1media_1_1mp4_1_1AudioSampleEntry.html#a9204f77a7c4e0c6bed49ac995ba25488',1,'edash_packager::media::mp4::AudioSampleEntry::BoxType()'],['../d7/dcc/structedash__packager_1_1media_1_1mp4_1_1WebVTTConfigurationBox.html#a0189e52ddef8d5674a0d9e46a96eff87',1,'edash_packager::media::mp4::WebVTTConfigurationBox::BoxType()'],['../df/da9/structedash__packager_1_1media_1_1mp4_1_1WebVTTSourceLabelBox.html#aa2605337625ef9e34e6563d95688338c',1,'edash_packager::media::mp4::WebVTTSourceLabelBox::BoxType()'],['../dc/d0e/structedash__packager_1_1media_1_1mp4_1_1WVTTSampleEntry.html#a0cde4e110795765483a2b8d7feab1010',1,'edash_packager::media::mp4::WVTTSampleEntry::BoxType()'],['../d3/d74/structedash__packager_1_1media_1_1mp4_1_1SampleDescription.html#ada90ed0cac4d2d899424669864f7e6d8',1,'edash_packager::media::mp4::SampleDescription::BoxType()'],['../dc/db7/structedash__packager_1_1media_1_1mp4_1_1DecodingTimeToSample.html#a52fc624b3a6ce6ccd1077420d46d6ef2',1,'edash_packager::media::mp4::DecodingTimeToSample::BoxType()'],['../da/d54/structedash__packager_1_1media_1_1mp4_1_1CompositionTimeToSample.html#a11a38fe87d393d25f89b0b616159479f',1,'edash_packager::media::mp4::CompositionTimeToSample::BoxType()'],['../df/d76/structedash__packager_1_1media_1_1mp4_1_1SampleToChunk.html#ac28ec4cd9cac79d7b552102cb8c3304a',1,'edash_packager::media::mp4::SampleToChunk::BoxType()'],['../d7/da5/structedash__packager_1_1media_1_1mp4_1_1SampleSize.html#ad408709db5e9d0843948b1de6921d11c',1,'edash_packager::media::mp4::SampleSize::BoxType()'],['../db/d89/structedash__packager_1_1media_1_1mp4_1_1CompactSampleSize.html#afd1bbe1300c24d2b86e69a2b20942174',1,'edash_packager::media::mp4::CompactSampleSize::BoxType()'],['../da/d81/structedash__packager_1_1media_1_1mp4_1_1ChunkLargeOffset.html#a83ff8d4e12f4a84c9e5652d74cb582d4',1,'edash_packager::media::mp4::ChunkLargeOffset::BoxType()'],['../d6/d79/structedash__packager_1_1media_1_1mp4_1_1ChunkOffset.html#a7aa021dc4bc57fd5abb83582513ec7d6',1,'edash_packager::media::mp4::ChunkOffset::BoxType()'],['../d9/d18/structedash__packager_1_1media_1_1mp4_1_1SyncSample.html#a83405091000e8777b4be3088ed638c65',1,'edash_packager::media::mp4::SyncSample::BoxType()'],['../d3/d77/structedash__packager_1_1media_1_1mp4_1_1SampleTable.html#a8d8d5a5f691ea55bd0248a6d12302e90',1,'edash_packager::media::mp4::SampleTable::BoxType()'],['../d7/dec/structedash__packager_1_1media_1_1mp4_1_1MediaHeader.html#af7668a8993e5ef0b515cf1deca69db90',1,'edash_packager::media::mp4::MediaHeader::BoxType()'],['../db/df7/structedash__packager_1_1media_1_1mp4_1_1VideoMediaHeader.html#a5a3f17a16ce780e1d3c9e7ff2c2d8b92',1,'edash_packager::media::mp4::VideoMediaHeader::BoxType()'],['../da/db0/structedash__packager_1_1media_1_1mp4_1_1SoundMediaHeader.html#a294713d0b23c8fd694752a9fe5b302d0',1,'edash_packager::media::mp4::SoundMediaHeader::BoxType()'],['../d1/d86/structedash__packager_1_1media_1_1mp4_1_1SubtitleMediaHeader.html#a46fb740ceb2e6b51336e602fb707d9dc',1,'edash_packager::media::mp4::SubtitleMediaHeader::BoxType()'],['../d6/d6c/structedash__packager_1_1media_1_1mp4_1_1DataEntryUrl.html#a52a2b2d6afb05554e144b476e2a7c2e1',1,'edash_packager::media::mp4::DataEntryUrl::BoxType()'],['../d7/d0d/structedash__packager_1_1media_1_1mp4_1_1DataReference.html#a4cfadf5c0c452c121be0ea980555be60',1,'edash_packager::media::mp4::DataReference::BoxType()'],['../d6/d59/structedash__packager_1_1media_1_1mp4_1_1DataInformation.html#aed66cd68a3126748afe6b42d04cab885',1,'edash_packager::media::mp4::DataInformation::BoxType()'],['../dd/dbd/structedash__packager_1_1media_1_1mp4_1_1MediaInformation.html#a2dab0117ee2e03c052f5df25134db42e',1,'edash_packager::media::mp4::MediaInformation::BoxType()'],['../de/de7/structedash__packager_1_1media_1_1mp4_1_1Media.html#a339ebe17f0f7d4ffbbf82795419155b5',1,'edash_packager::media::mp4::Media::BoxType()'],['../d3/de1/structedash__packager_1_1media_1_1mp4_1_1Track.html#a94e5e94f5bc4e4f6498bb384ed548cae',1,'edash_packager::media::mp4::Track::BoxType()'],['../da/d17/structedash__packager_1_1media_1_1mp4_1_1MovieExtendsHeader.html#a3d7d2e08f6baedf1af02c9e4504d75d9',1,'edash_packager::media::mp4::MovieExtendsHeader::BoxType()'],['../d3/d2c/structedash__packager_1_1media_1_1mp4_1_1TrackExtends.html#a133f1027410f7767253ed0bfd8da54cd',1,'edash_packager::media::mp4::TrackExtends::BoxType()'],['../d6/d8b/structedash__packager_1_1media_1_1mp4_1_1MovieExtends.html#a13e40bc4f9d2a6988b3506a5305e6fca',1,'edash_packager::media::mp4::MovieExtends::BoxType()'],['../d6/dec/structedash__packager_1_1media_1_1mp4_1_1Movie.html#aa5e25db4def848291ed7b79217e7e2fe',1,'edash_packager::media::mp4::Movie::BoxType()'],['../d0/d92/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentDecodeTime.html#a33cfba86f8b918fbedaceb465ec40eb1',1,'edash_packager::media::mp4::TrackFragmentDecodeTime::BoxType()'],['../df/d86/structedash__packager_1_1media_1_1mp4_1_1MovieFragmentHeader.html#a1cd6327f596a7cb253f1426812490dce',1,'edash_packager::media::mp4::MovieFragmentHeader::BoxType()'],['../d9/d47/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentHeader.html#a9a5be3ea4894965d2bb643d88acdb4c9',1,'edash_packager::media::mp4::TrackFragmentHeader::BoxType()'],['../df/d21/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentRun.html#a1390e0e93a5181be7d31cb701592ec18',1,'edash_packager::media::mp4::TrackFragmentRun::BoxType()'],['../d1/d65/structedash__packager_1_1media_1_1mp4_1_1SampleToGroup.html#abf5ab6476c2530cf820cc4262c2eef41',1,'edash_packager::media::mp4::SampleToGroup::BoxType()'],['../d2/d26/structedash__packager_1_1media_1_1mp4_1_1SampleGroupDescription.html#a20836adec61bcbc891d08ffbc291ab4e',1,'edash_packager::media::mp4::SampleGroupDescription::BoxType()'],['../d4/dd9/structedash__packager_1_1media_1_1mp4_1_1TrackFragment.html#a1b72b2b61bdbca4b23f0ef727cb04901',1,'edash_packager::media::mp4::TrackFragment::BoxType()'],['../dd/da2/structedash__packager_1_1media_1_1mp4_1_1MovieFragment.html#a5455c20a8391c344d91929eb088f0699',1,'edash_packager::media::mp4::MovieFragment::BoxType()'],['../d1/d81/structedash__packager_1_1media_1_1mp4_1_1SegmentIndex.html#a2a0444e32d7ccc525b10b6f9fc81b0b5',1,'edash_packager::media::mp4::SegmentIndex::BoxType()'],['../d4/d92/structedash__packager_1_1media_1_1mp4_1_1MediaData.html#a2cd09fe16fb9b50fc70476217977a060',1,'edash_packager::media::mp4::MediaData::BoxType()'],['../d2/df8/structedash__packager_1_1media_1_1mp4_1_1CueSourceIDBox.html#a79ce16bc0cd49723eaa8e4734c6426e5',1,'edash_packager::media::mp4::CueSourceIDBox::BoxType()'],['../dd/d12/structedash__packager_1_1media_1_1mp4_1_1CueTimeBox.html#a099bff9996e063551114d44e9a0429bc',1,'edash_packager::media::mp4::CueTimeBox::BoxType()'],['../de/d07/structedash__packager_1_1media_1_1mp4_1_1CueIDBox.html#ad160b5d1ef859073d2536f048d71af05',1,'edash_packager::media::mp4::CueIDBox::BoxType()'],['../d1/df2/structedash__packager_1_1media_1_1mp4_1_1CueSettingsBox.html#af750ff88f1d2e7926f01969db44b76ed',1,'edash_packager::media::mp4::CueSettingsBox::BoxType()'],['../d7/d49/structedash__packager_1_1media_1_1mp4_1_1CuePayloadBox.html#a227df861e36f5876dca5cd91b5b230ad',1,'edash_packager::media::mp4::CuePayloadBox::BoxType()'],['../d3/d1c/structedash__packager_1_1media_1_1mp4_1_1VTTEmptyCueBox.html#a12c38669db1fc4e70bb8dca039a52f8b',1,'edash_packager::media::mp4::VTTEmptyCueBox::BoxType()'],['../db/d6b/structedash__packager_1_1media_1_1mp4_1_1VTTAdditionalTextBox.html#ad0715718756fb534e945ed725670bf79',1,'edash_packager::media::mp4::VTTAdditionalTextBox::BoxType()'],['../d6/d74/structedash__packager_1_1media_1_1mp4_1_1VTTCueBox.html#abd7dab86dd675aadf17eb857d0d0ab80',1,'edash_packager::media::mp4::VTTCueBox::BoxType()']]], + ['boxtype',['BoxType',['../d7/d8a/structedash__packager_1_1media_1_1mp4_1_1Box.html#a504e7612c24f7d788748dff9940e46ea',1,'edash_packager::media::mp4::Box::BoxType()'],['../d1/dcd/structedash__packager_1_1media_1_1mp4_1_1FileType.html#a37c1287fee817803e6cb18eebfd99847',1,'edash_packager::media::mp4::FileType::BoxType()'],['../dd/da6/structedash__packager_1_1media_1_1mp4_1_1SegmentType.html#aebd87db93b8d63a08e0becb45e1d70cf',1,'edash_packager::media::mp4::SegmentType::BoxType()'],['../da/d2a/structedash__packager_1_1media_1_1mp4_1_1ProtectionSystemSpecificHeader.html#a652e720a34bfc0ea43de52642325d12e',1,'edash_packager::media::mp4::ProtectionSystemSpecificHeader::BoxType()'],['../de/dc4/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset.html#acfbcac458961036f8fa9c47bea95905c',1,'edash_packager::media::mp4::SampleAuxiliaryInformationOffset::BoxType()'],['../d2/d51/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize.html#a54b83543e5924c4f9d7e4e45934be26a',1,'edash_packager::media::mp4::SampleAuxiliaryInformationSize::BoxType()'],['../d5/d78/structedash__packager_1_1media_1_1mp4_1_1SampleEncryption.html#ab6d4d91b2bd0a2a021c10afac4672c09',1,'edash_packager::media::mp4::SampleEncryption::BoxType()'],['../da/d4b/structedash__packager_1_1media_1_1mp4_1_1OriginalFormat.html#a3c21bf81deb542ab69811673ec025f2e',1,'edash_packager::media::mp4::OriginalFormat::BoxType()'],['../d4/dcc/structedash__packager_1_1media_1_1mp4_1_1SchemeType.html#a9d477e94ca46a6ee6ebd6208a3343c6c',1,'edash_packager::media::mp4::SchemeType::BoxType()'],['../de/d44/structedash__packager_1_1media_1_1mp4_1_1TrackEncryption.html#aebad0e736feade55f9a81675737380fe',1,'edash_packager::media::mp4::TrackEncryption::BoxType()'],['../d2/d6f/structedash__packager_1_1media_1_1mp4_1_1SchemeInfo.html#a05f236b91e36bd7c774fec38378dae2c',1,'edash_packager::media::mp4::SchemeInfo::BoxType()'],['../dd/dc9/structedash__packager_1_1media_1_1mp4_1_1ProtectionSchemeInfo.html#a62ea06c139c349ef4f1960c15f85da33',1,'edash_packager::media::mp4::ProtectionSchemeInfo::BoxType()'],['../dd/d14/structedash__packager_1_1media_1_1mp4_1_1MovieHeader.html#a4403980ce1e53080796c60d8d7f91ee1',1,'edash_packager::media::mp4::MovieHeader::BoxType()'],['../dd/d15/structedash__packager_1_1media_1_1mp4_1_1TrackHeader.html#a7347e1e4b0e9785b4cecaf6b24c7b70f',1,'edash_packager::media::mp4::TrackHeader::BoxType()'],['../d8/d4a/structedash__packager_1_1media_1_1mp4_1_1EditList.html#aeeaefd1b799f2da1d28dd037ecbbd6a8',1,'edash_packager::media::mp4::EditList::BoxType()'],['../d7/d4f/structedash__packager_1_1media_1_1mp4_1_1Edit.html#aa59c17335999289620bd51d05d3208ab',1,'edash_packager::media::mp4::Edit::BoxType()'],['../d3/dbd/structedash__packager_1_1media_1_1mp4_1_1HandlerReference.html#a27e27257f90332a2585114153e0d7594',1,'edash_packager::media::mp4::HandlerReference::BoxType()'],['../d9/d21/structedash__packager_1_1media_1_1mp4_1_1ID3v2.html#acc52776c15a2dcd6a61be12cb7604bb1',1,'edash_packager::media::mp4::ID3v2::BoxType()'],['../d2/d06/structedash__packager_1_1media_1_1mp4_1_1Metadata.html#aeb14c600d3581277e2709857ab86203a',1,'edash_packager::media::mp4::Metadata::BoxType()'],['../d1/d31/structedash__packager_1_1media_1_1mp4_1_1CodecConfigurationRecord.html#af79275c621765517a82bd0805c82247e',1,'edash_packager::media::mp4::CodecConfigurationRecord::BoxType()'],['../d4/d3d/structedash__packager_1_1media_1_1mp4_1_1PixelAspectRatio.html#a9b88be9293ff1ea9d943de9e9d737782',1,'edash_packager::media::mp4::PixelAspectRatio::BoxType()'],['../df/d6a/structedash__packager_1_1media_1_1mp4_1_1VideoSampleEntry.html#a9d870de1a6e6799c18976adeed3d2b3e',1,'edash_packager::media::mp4::VideoSampleEntry::BoxType()'],['../d9/dcc/structedash__packager_1_1media_1_1mp4_1_1ElementaryStreamDescriptor.html#a8a819a7d71dfbbaf5ec2770499689d2d',1,'edash_packager::media::mp4::ElementaryStreamDescriptor::BoxType()'],['../d0/db7/structedash__packager_1_1media_1_1mp4_1_1DTSSpecific.html#aa392cbec3186779bb28e57e9a5e55973',1,'edash_packager::media::mp4::DTSSpecific::BoxType()'],['../d0/d65/structedash__packager_1_1media_1_1mp4_1_1AC3Specific.html#adcfdf18f91a08aa3f9fa73d617e02a22',1,'edash_packager::media::mp4::AC3Specific::BoxType()'],['../d3/d43/structedash__packager_1_1media_1_1mp4_1_1EC3Specific.html#a87001ebd7f4894c6df389386b85d0168',1,'edash_packager::media::mp4::EC3Specific::BoxType()'],['../df/d62/structedash__packager_1_1media_1_1mp4_1_1AudioSampleEntry.html#a9204f77a7c4e0c6bed49ac995ba25488',1,'edash_packager::media::mp4::AudioSampleEntry::BoxType()'],['../d7/dcc/structedash__packager_1_1media_1_1mp4_1_1WebVTTConfigurationBox.html#a0189e52ddef8d5674a0d9e46a96eff87',1,'edash_packager::media::mp4::WebVTTConfigurationBox::BoxType()'],['../df/da9/structedash__packager_1_1media_1_1mp4_1_1WebVTTSourceLabelBox.html#aa2605337625ef9e34e6563d95688338c',1,'edash_packager::media::mp4::WebVTTSourceLabelBox::BoxType()'],['../dc/d0e/structedash__packager_1_1media_1_1mp4_1_1WVTTSampleEntry.html#a0cde4e110795765483a2b8d7feab1010',1,'edash_packager::media::mp4::WVTTSampleEntry::BoxType()'],['../d3/d74/structedash__packager_1_1media_1_1mp4_1_1SampleDescription.html#ada90ed0cac4d2d899424669864f7e6d8',1,'edash_packager::media::mp4::SampleDescription::BoxType()'],['../dc/db7/structedash__packager_1_1media_1_1mp4_1_1DecodingTimeToSample.html#a52fc624b3a6ce6ccd1077420d46d6ef2',1,'edash_packager::media::mp4::DecodingTimeToSample::BoxType()'],['../da/d54/structedash__packager_1_1media_1_1mp4_1_1CompositionTimeToSample.html#a11a38fe87d393d25f89b0b616159479f',1,'edash_packager::media::mp4::CompositionTimeToSample::BoxType()'],['../df/d76/structedash__packager_1_1media_1_1mp4_1_1SampleToChunk.html#ac28ec4cd9cac79d7b552102cb8c3304a',1,'edash_packager::media::mp4::SampleToChunk::BoxType()'],['../d7/da5/structedash__packager_1_1media_1_1mp4_1_1SampleSize.html#ad408709db5e9d0843948b1de6921d11c',1,'edash_packager::media::mp4::SampleSize::BoxType()'],['../db/d89/structedash__packager_1_1media_1_1mp4_1_1CompactSampleSize.html#afd1bbe1300c24d2b86e69a2b20942174',1,'edash_packager::media::mp4::CompactSampleSize::BoxType()'],['../da/d81/structedash__packager_1_1media_1_1mp4_1_1ChunkLargeOffset.html#a83ff8d4e12f4a84c9e5652d74cb582d4',1,'edash_packager::media::mp4::ChunkLargeOffset::BoxType()'],['../d6/d79/structedash__packager_1_1media_1_1mp4_1_1ChunkOffset.html#a7aa021dc4bc57fd5abb83582513ec7d6',1,'edash_packager::media::mp4::ChunkOffset::BoxType()'],['../d9/d18/structedash__packager_1_1media_1_1mp4_1_1SyncSample.html#a83405091000e8777b4be3088ed638c65',1,'edash_packager::media::mp4::SyncSample::BoxType()'],['../d3/d77/structedash__packager_1_1media_1_1mp4_1_1SampleTable.html#a8d8d5a5f691ea55bd0248a6d12302e90',1,'edash_packager::media::mp4::SampleTable::BoxType()'],['../d7/dec/structedash__packager_1_1media_1_1mp4_1_1MediaHeader.html#af7668a8993e5ef0b515cf1deca69db90',1,'edash_packager::media::mp4::MediaHeader::BoxType()'],['../db/df7/structedash__packager_1_1media_1_1mp4_1_1VideoMediaHeader.html#a5a3f17a16ce780e1d3c9e7ff2c2d8b92',1,'edash_packager::media::mp4::VideoMediaHeader::BoxType()'],['../da/db0/structedash__packager_1_1media_1_1mp4_1_1SoundMediaHeader.html#a294713d0b23c8fd694752a9fe5b302d0',1,'edash_packager::media::mp4::SoundMediaHeader::BoxType()'],['../d1/d86/structedash__packager_1_1media_1_1mp4_1_1SubtitleMediaHeader.html#a46fb740ceb2e6b51336e602fb707d9dc',1,'edash_packager::media::mp4::SubtitleMediaHeader::BoxType()'],['../d6/d6c/structedash__packager_1_1media_1_1mp4_1_1DataEntryUrl.html#a52a2b2d6afb05554e144b476e2a7c2e1',1,'edash_packager::media::mp4::DataEntryUrl::BoxType()'],['../d7/d0d/structedash__packager_1_1media_1_1mp4_1_1DataReference.html#a4cfadf5c0c452c121be0ea980555be60',1,'edash_packager::media::mp4::DataReference::BoxType()'],['../d6/d59/structedash__packager_1_1media_1_1mp4_1_1DataInformation.html#aed66cd68a3126748afe6b42d04cab885',1,'edash_packager::media::mp4::DataInformation::BoxType()'],['../dd/dbd/structedash__packager_1_1media_1_1mp4_1_1MediaInformation.html#a2dab0117ee2e03c052f5df25134db42e',1,'edash_packager::media::mp4::MediaInformation::BoxType()'],['../de/de7/structedash__packager_1_1media_1_1mp4_1_1Media.html#a339ebe17f0f7d4ffbbf82795419155b5',1,'edash_packager::media::mp4::Media::BoxType()'],['../d3/de1/structedash__packager_1_1media_1_1mp4_1_1Track.html#a94e5e94f5bc4e4f6498bb384ed548cae',1,'edash_packager::media::mp4::Track::BoxType()'],['../da/d17/structedash__packager_1_1media_1_1mp4_1_1MovieExtendsHeader.html#a3d7d2e08f6baedf1af02c9e4504d75d9',1,'edash_packager::media::mp4::MovieExtendsHeader::BoxType()'],['../d3/d2c/structedash__packager_1_1media_1_1mp4_1_1TrackExtends.html#a133f1027410f7767253ed0bfd8da54cd',1,'edash_packager::media::mp4::TrackExtends::BoxType()'],['../d6/d8b/structedash__packager_1_1media_1_1mp4_1_1MovieExtends.html#a13e40bc4f9d2a6988b3506a5305e6fca',1,'edash_packager::media::mp4::MovieExtends::BoxType()'],['../d6/dec/structedash__packager_1_1media_1_1mp4_1_1Movie.html#aa5e25db4def848291ed7b79217e7e2fe',1,'edash_packager::media::mp4::Movie::BoxType()'],['../d0/d92/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentDecodeTime.html#a33cfba86f8b918fbedaceb465ec40eb1',1,'edash_packager::media::mp4::TrackFragmentDecodeTime::BoxType()'],['../df/d86/structedash__packager_1_1media_1_1mp4_1_1MovieFragmentHeader.html#a1cd6327f596a7cb253f1426812490dce',1,'edash_packager::media::mp4::MovieFragmentHeader::BoxType()'],['../d9/d47/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentHeader.html#a9a5be3ea4894965d2bb643d88acdb4c9',1,'edash_packager::media::mp4::TrackFragmentHeader::BoxType()'],['../df/d21/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentRun.html#a1390e0e93a5181be7d31cb701592ec18',1,'edash_packager::media::mp4::TrackFragmentRun::BoxType()'],['../d1/d65/structedash__packager_1_1media_1_1mp4_1_1SampleToGroup.html#abf5ab6476c2530cf820cc4262c2eef41',1,'edash_packager::media::mp4::SampleToGroup::BoxType()'],['../d2/d26/structedash__packager_1_1media_1_1mp4_1_1SampleGroupDescription.html#a20836adec61bcbc891d08ffbc291ab4e',1,'edash_packager::media::mp4::SampleGroupDescription::BoxType()'],['../d4/dd9/structedash__packager_1_1media_1_1mp4_1_1TrackFragment.html#a1b72b2b61bdbca4b23f0ef727cb04901',1,'edash_packager::media::mp4::TrackFragment::BoxType()'],['../dd/da2/structedash__packager_1_1media_1_1mp4_1_1MovieFragment.html#a5455c20a8391c344d91929eb088f0699',1,'edash_packager::media::mp4::MovieFragment::BoxType()'],['../d1/d81/structedash__packager_1_1media_1_1mp4_1_1SegmentIndex.html#a2a0444e32d7ccc525b10b6f9fc81b0b5',1,'edash_packager::media::mp4::SegmentIndex::BoxType()'],['../d4/d92/structedash__packager_1_1media_1_1mp4_1_1MediaData.html#a2cd09fe16fb9b50fc70476217977a060',1,'edash_packager::media::mp4::MediaData::BoxType()'],['../d2/df8/structedash__packager_1_1media_1_1mp4_1_1CueSourceIDBox.html#a79ce16bc0cd49723eaa8e4734c6426e5',1,'edash_packager::media::mp4::CueSourceIDBox::BoxType()'],['../dd/d12/structedash__packager_1_1media_1_1mp4_1_1CueTimeBox.html#a099bff9996e063551114d44e9a0429bc',1,'edash_packager::media::mp4::CueTimeBox::BoxType()'],['../de/d07/structedash__packager_1_1media_1_1mp4_1_1CueIDBox.html#ad160b5d1ef859073d2536f048d71af05',1,'edash_packager::media::mp4::CueIDBox::BoxType()'],['../d1/df2/structedash__packager_1_1media_1_1mp4_1_1CueSettingsBox.html#af750ff88f1d2e7926f01969db44b76ed',1,'edash_packager::media::mp4::CueSettingsBox::BoxType()'],['../d7/d49/structedash__packager_1_1media_1_1mp4_1_1CuePayloadBox.html#a227df861e36f5876dca5cd91b5b230ad',1,'edash_packager::media::mp4::CuePayloadBox::BoxType()'],['../d3/d1c/structedash__packager_1_1media_1_1mp4_1_1VTTEmptyCueBox.html#a12c38669db1fc4e70bb8dca039a52f8b',1,'edash_packager::media::mp4::VTTEmptyCueBox::BoxType()'],['../db/d6b/structedash__packager_1_1media_1_1mp4_1_1VTTAdditionalTextBox.html#ad0715718756fb534e945ed725670bf79',1,'edash_packager::media::mp4::VTTAdditionalTextBox::BoxType()'],['../d6/d74/structedash__packager_1_1media_1_1mp4_1_1VTTCueBox.html#abd7dab86dd675aadf17eb857d0d0ab80',1,'edash_packager::media::mp4::VTTCueBox::BoxType()']]], ['buffer',['Buffer',['../df/dde/classedash__packager_1_1media_1_1BufferWriter.html#a8849c495e9e5cb0c33d7633fecbe0643',1,'edash_packager::media::BufferWriter']]], ['bufferreader',['BufferReader',['../d9/d46/classedash__packager_1_1media_1_1BufferReader.html#a7354b7da262fd2cd4680346d4ae871d8',1,'edash_packager::media::BufferReader']]], ['bufferreader',['BufferReader',['../d9/d46/classedash__packager_1_1media_1_1BufferReader.html',1,'edash_packager::media']]], diff --git a/docs/search/all_10.js b/docs/search/all_10.js index 1002ae8d81..51ea00aaf2 100644 --- a/docs/search/all_10.js +++ b/docs/search/all_10.js @@ -54,8 +54,8 @@ var searchData= ['setstringattribute',['SetStringAttribute',['../dd/d85/classedash__packager_1_1xml_1_1XmlNode.html#a13806def844e3fd8e8cc0e690f292aab',1,'edash_packager::xml::XmlNode']]], ['simplempdnotifier',['SimpleMpdNotifier',['../db/d56/classedash__packager_1_1SimpleMpdNotifier.html',1,'edash_packager']]], ['single_5fsegment',['single_segment',['../de/d57/structedash__packager_1_1media_1_1MuxerOptions.html#a7542af69b834f3a72e5c5b25f4f0f474',1,'edash_packager::media::MuxerOptions']]], - ['singlesegmentsegmenter',['SingleSegmentSegmenter',['../da/d75/classedash__packager_1_1media_1_1mp4_1_1SingleSegmentSegmenter.html',1,'edash_packager::media::mp4']]], ['singlesegmentsegmenter',['SingleSegmentSegmenter',['../d0/d03/classedash__packager_1_1media_1_1webm_1_1SingleSegmentSegmenter.html',1,'edash_packager::media::webm']]], + ['singlesegmentsegmenter',['SingleSegmentSegmenter',['../da/d75/classedash__packager_1_1media_1_1mp4_1_1SingleSegmentSegmenter.html',1,'edash_packager::media::mp4']]], ['size',['Size',['../d5/d02/classedash__packager_1_1media_1_1ProducerConsumerQueue.html#aa502e5cfc6159ded7abb3672cdab8cd5',1,'edash_packager::media::ProducerConsumerQueue::Size()'],['../de/d19/classedash__packager_1_1media_1_1File.html#a1bb2a295cb69b3e51b9cc14969848632',1,'edash_packager::media::File::Size()'],['../dd/d98/classedash__packager_1_1media_1_1LocalFile.html#a8984949196dc5230a8ece08c738a9fd3',1,'edash_packager::media::LocalFile::Size()'],['../d3/d81/classedash__packager_1_1media_1_1MemoryFile.html#a01c8a932b632f130f02f067171f0f4ff',1,'edash_packager::media::MemoryFile::Size()'],['../dc/dfa/classedash__packager_1_1media_1_1ThreadedIoFile.html#af61d3986b87d43e3b5ffd86c86094478',1,'edash_packager::media::ThreadedIoFile::Size()'],['../d8/dc7/classedash__packager_1_1media_1_1UdpFile.html#a8d62376715aee117aa7a225b54be0945',1,'edash_packager::media::UdpFile::Size()'],['../dd/d4f/classedash__packager_1_1media_1_1mp4_1_1BoxBuffer.html#aef7267aa7963866d3dcef4f051f84674',1,'edash_packager::media::mp4::BoxBuffer::Size()']]], ['skipbits',['SkipBits',['../df/db4/classedash__packager_1_1media_1_1BitReader.html#acacb97d71aaae01796b90d27e7cdca0a',1,'edash_packager::media::BitReader']]], ['skipbitsconditional',['SkipBitsConditional',['../df/db4/classedash__packager_1_1media_1_1BitReader.html#a8a7f24cfdc78211fb2c1a0167c8d903e',1,'edash_packager::media::BitReader']]], diff --git a/docs/search/all_4.js b/docs/search/all_4.js index ea981cefa4..15ecaf7a43 100644 --- a/docs/search/all_4.js +++ b/docs/search/all_4.js @@ -1,5 +1,6 @@ var searchData= [ + ['ec3specific',['EC3Specific',['../d3/d43/structedash__packager_1_1media_1_1mp4_1_1EC3Specific.html',1,'edash_packager::media::mp4']]], ['edash_5fpackager',['edash_packager',['../db/d09/namespaceedash__packager.html',1,'']]], ['edit',['Edit',['../d7/d4f/structedash__packager_1_1media_1_1mp4_1_1Edit.html',1,'edash_packager::media::mp4']]], ['editlist',['EditList',['../d8/d4a/structedash__packager_1_1media_1_1mp4_1_1EditList.html',1,'edash_packager::media::mp4']]], diff --git a/docs/search/all_8.js b/docs/search/all_8.js index 8cb33b0b58..4e6e905a00 100644 --- a/docs/search/all_8.js +++ b/docs/search/all_8.js @@ -3,6 +3,7 @@ var searchData= ['id',['id',['../d7/d15/classedash__packager_1_1Representation.html#a0a59920aa8a31f1fb2b30a2ee8cc4e95',1,'edash_packager::Representation']]], ['id3v2',['ID3v2',['../d9/d21/structedash__packager_1_1media_1_1mp4_1_1ID3v2.html',1,'edash_packager::media::mp4']]], ['ignorebytes',['IgnoreBytes',['../dd/d4f/classedash__packager_1_1media_1_1mp4_1_1BoxBuffer.html#a7efa53df1ef135edd31d1e1818b9a884',1,'edash_packager::media::mp4::BoxBuffer']]], + ['independentsubstream',['IndependentSubstream',['../d6/d3d/structedash__packager_1_1media_1_1mp4_1_1IndependentSubstream.html',1,'edash_packager::media::mp4']]], ['init',['Init',['../dc/d48/classedash__packager_1_1media_1_1MediaParser.html#a7ac1ee5db298922f094920cd564bfb16',1,'edash_packager::media::MediaParser::Init()'],['../dc/dab/classedash__packager_1_1media_1_1mp2t_1_1Mp2tMediaParser.html#abfcd1be5f00d8091feb044e7199966f5',1,'edash_packager::media::mp2t::Mp2tMediaParser::Init()'],['../d8/d0d/classedash__packager_1_1media_1_1mp4_1_1MP4MediaParser.html#a4ef745c8846adc9e932059a4e91f67c2',1,'edash_packager::media::mp4::MP4MediaParser::Init()'],['../db/d26/classedash__packager_1_1media_1_1mp4_1_1TrackRunIterator.html#a6fd0f1d72f9a31a1c0d26c3b1ae25250',1,'edash_packager::media::mp4::TrackRunIterator::Init()'],['../db/d26/classedash__packager_1_1media_1_1mp4_1_1TrackRunIterator.html#a354985cb4f5eed26e91dbb343a6343a0',1,'edash_packager::media::mp4::TrackRunIterator::Init(const MovieFragment &moof)'],['../dd/d99/classedash__packager_1_1media_1_1WebMMediaParser.html#a8a85bf527013ebbb0b902dcd56039467',1,'edash_packager::media::WebMMediaParser::Init()'],['../d2/d51/classedash__packager_1_1media_1_1WebVttMediaParser.html#a6e678b88894210cd665c1466b0c0fd41',1,'edash_packager::media::WebVttMediaParser::Init()'],['../d8/da0/classedash__packager_1_1media_1_1wvm_1_1WvmMediaParser.html#aef36e6f7cc6bdb2c6b287ae07ef9a55a',1,'edash_packager::media::wvm::WvmMediaParser::Init()'],['../da/d49/classedash__packager_1_1DashIopMpdNotifier.html#ace93090275f0ef9b33cf62648f854690',1,'edash_packager::DashIopMpdNotifier::Init()'],['../d7/d15/classedash__packager_1_1Representation.html#aac7ad6e54e88b4d31196d54ad5fb4a9d',1,'edash_packager::Representation::Init()'],['../da/d38/classedash__packager_1_1MpdNotifier.html#ae7067d35133b0573a2919fb69195328e',1,'edash_packager::MpdNotifier::Init()'],['../db/d56/classedash__packager_1_1SimpleMpdNotifier.html#a8c0efff460547138724769b768ae6341',1,'edash_packager::SimpleMpdNotifier::Init()']]], ['initcb',['InitCB',['../dc/d48/classedash__packager_1_1media_1_1MediaParser.html#af5c74c8723a5306faddcdfdcadb4ab4a',1,'edash_packager::media::MediaParser']]], ['initialize',['Initialize',['../d5/dce/classedash__packager_1_1media_1_1Demuxer.html#a5b156dbf1d1c86f4d18e137b3f7bc7c9',1,'edash_packager::media::Demuxer::Initialize()'],['../dc/de1/classedash__packager_1_1media_1_1mp4_1_1Segmenter.html#ae977765092cab9a566b4a5a3e9184370',1,'edash_packager::media::mp4::Segmenter::Initialize()'],['../d2/d76/classedash__packager_1_1media_1_1webm_1_1Encryptor.html#ab37db1af563c523c84ef1addb9594175',1,'edash_packager::media::webm::Encryptor::Initialize()'],['../da/d14/classedash__packager_1_1media_1_1webm_1_1Segmenter.html#a5918dc2431560b2ae816c0840ddf7728',1,'edash_packager::media::webm::Segmenter::Initialize()']]], diff --git a/docs/search/all_b.js b/docs/search/all_b.js index e34fbcfb4b..c21e29a262 100644 --- a/docs/search/all_b.js +++ b/docs/search/all_b.js @@ -35,8 +35,8 @@ var searchData= ['mpdnotifymuxerlistener',['MpdNotifyMuxerListener',['../d3/d0e/classedash__packager_1_1media_1_1MpdNotifyMuxerListener.html',1,'edash_packager::media']]], ['mpdoptions',['MpdOptions',['../d1/d5d/structedash__packager_1_1MpdOptions.html',1,'edash_packager']]], ['mpdwriter',['MpdWriter',['../dc/d81/classedash__packager_1_1MpdWriter.html',1,'edash_packager']]], - ['multisegmentsegmenter',['MultiSegmentSegmenter',['../df/d4e/classedash__packager_1_1media_1_1webm_1_1MultiSegmentSegmenter.html',1,'edash_packager::media::webm']]], ['multisegmentsegmenter',['MultiSegmentSegmenter',['../dc/d7a/classedash__packager_1_1media_1_1mp4_1_1MultiSegmentSegmenter.html',1,'edash_packager::media::mp4']]], + ['multisegmentsegmenter',['MultiSegmentSegmenter',['../df/d4e/classedash__packager_1_1media_1_1webm_1_1MultiSegmentSegmenter.html',1,'edash_packager::media::webm']]], ['muxer',['Muxer',['../d4/d1d/classedash__packager_1_1media_1_1Muxer.html',1,'edash_packager::media']]], ['muxerlistener',['MuxerListener',['../df/de7/classedash__packager_1_1media_1_1MuxerListener.html',1,'edash_packager::media']]], ['muxeroptions',['MuxerOptions',['../de/d57/structedash__packager_1_1media_1_1MuxerOptions.html',1,'edash_packager::media']]] diff --git a/docs/search/classes_4.js b/docs/search/classes_4.js index 4ad45d11dd..4c98197978 100644 --- a/docs/search/classes_4.js +++ b/docs/search/classes_4.js @@ -1,5 +1,6 @@ var searchData= [ + ['ec3specific',['EC3Specific',['../d3/d43/structedash__packager_1_1media_1_1mp4_1_1EC3Specific.html',1,'edash_packager::media::mp4']]], ['edit',['Edit',['../d7/d4f/structedash__packager_1_1media_1_1mp4_1_1Edit.html',1,'edash_packager::media::mp4']]], ['editlist',['EditList',['../d8/d4a/structedash__packager_1_1media_1_1mp4_1_1EditList.html',1,'edash_packager::media::mp4']]], ['editlistentry',['EditListEntry',['../dc/d0d/structedash__packager_1_1media_1_1mp4_1_1EditListEntry.html',1,'edash_packager::media::mp4']]], diff --git a/docs/search/classes_7.js b/docs/search/classes_7.js index bdbb70c1cc..cd9705c022 100644 --- a/docs/search/classes_7.js +++ b/docs/search/classes_7.js @@ -1,5 +1,6 @@ var searchData= [ ['id3v2',['ID3v2',['../d9/d21/structedash__packager_1_1media_1_1mp4_1_1ID3v2.html',1,'edash_packager::media::mp4']]], + ['independentsubstream',['IndependentSubstream',['../d6/d3d/structedash__packager_1_1media_1_1mp4_1_1IndependentSubstream.html',1,'edash_packager::media::mp4']]], ['iocache',['IoCache',['../d3/d6b/classedash__packager_1_1media_1_1IoCache.html',1,'edash_packager::media']]] ]; diff --git a/docs/search/classes_a.js b/docs/search/classes_a.js index 9e4d5580e1..589cdc1742 100644 --- a/docs/search/classes_a.js +++ b/docs/search/classes_a.js @@ -29,8 +29,8 @@ var searchData= ['mpdnotifymuxerlistener',['MpdNotifyMuxerListener',['../d3/d0e/classedash__packager_1_1media_1_1MpdNotifyMuxerListener.html',1,'edash_packager::media']]], ['mpdoptions',['MpdOptions',['../d1/d5d/structedash__packager_1_1MpdOptions.html',1,'edash_packager']]], ['mpdwriter',['MpdWriter',['../dc/d81/classedash__packager_1_1MpdWriter.html',1,'edash_packager']]], - ['multisegmentsegmenter',['MultiSegmentSegmenter',['../dc/d7a/classedash__packager_1_1media_1_1mp4_1_1MultiSegmentSegmenter.html',1,'edash_packager::media::mp4']]], ['multisegmentsegmenter',['MultiSegmentSegmenter',['../df/d4e/classedash__packager_1_1media_1_1webm_1_1MultiSegmentSegmenter.html',1,'edash_packager::media::webm']]], + ['multisegmentsegmenter',['MultiSegmentSegmenter',['../dc/d7a/classedash__packager_1_1media_1_1mp4_1_1MultiSegmentSegmenter.html',1,'edash_packager::media::mp4']]], ['muxer',['Muxer',['../d4/d1d/classedash__packager_1_1media_1_1Muxer.html',1,'edash_packager::media']]], ['muxerlistener',['MuxerListener',['../df/de7/classedash__packager_1_1media_1_1MuxerListener.html',1,'edash_packager::media']]], ['muxeroptions',['MuxerOptions',['../de/d57/structedash__packager_1_1media_1_1MuxerOptions.html',1,'edash_packager::media']]] diff --git a/docs/search/classes_e.js b/docs/search/classes_e.js index e44b5dbd13..b6bd53dfd8 100644 --- a/docs/search/classes_e.js +++ b/docs/search/classes_e.js @@ -22,8 +22,8 @@ var searchData= ['segmenttestbase',['SegmentTestBase',['../d2/d28/classedash__packager_1_1media_1_1SegmentTestBase.html',1,'edash_packager::media']]], ['segmenttype',['SegmentType',['../dd/da6/structedash__packager_1_1media_1_1mp4_1_1SegmentType.html',1,'edash_packager::media::mp4']]], ['simplempdnotifier',['SimpleMpdNotifier',['../db/d56/classedash__packager_1_1SimpleMpdNotifier.html',1,'edash_packager']]], - ['singlesegmentsegmenter',['SingleSegmentSegmenter',['../da/d75/classedash__packager_1_1media_1_1mp4_1_1SingleSegmentSegmenter.html',1,'edash_packager::media::mp4']]], ['singlesegmentsegmenter',['SingleSegmentSegmenter',['../d0/d03/classedash__packager_1_1media_1_1webm_1_1SingleSegmentSegmenter.html',1,'edash_packager::media::webm']]], + ['singlesegmentsegmenter',['SingleSegmentSegmenter',['../da/d75/classedash__packager_1_1media_1_1mp4_1_1SingleSegmentSegmenter.html',1,'edash_packager::media::mp4']]], ['soundmediaheader',['SoundMediaHeader',['../da/db0/structedash__packager_1_1media_1_1mp4_1_1SoundMediaHeader.html',1,'edash_packager::media::mp4']]], ['status',['Status',['../d2/d90/classedash__packager_1_1media_1_1Status.html',1,'edash_packager::media']]], ['streamdescriptor',['StreamDescriptor',['../de/d1f/structedash__packager_1_1media_1_1StreamDescriptor.html',1,'edash_packager::media']]], diff --git a/docs/search/functions_1.js b/docs/search/functions_1.js index c4dfe70293..bc9ba0a10e 100644 --- a/docs/search/functions_1.js +++ b/docs/search/functions_1.js @@ -6,7 +6,7 @@ var searchData= ['bits_5favailable',['bits_available',['../df/db4/classedash__packager_1_1media_1_1BitReader.html#a1409a0968749ca5a55ba823cd718065b',1,'edash_packager::media::BitReader']]], ['box_5fsize',['box_size',['../d7/d8a/structedash__packager_1_1media_1_1mp4_1_1Box.html#a6a9392e954db3ae0aa6cc16c87562dc7',1,'edash_packager::media::mp4::Box']]], ['boxbuffer',['BoxBuffer',['../dd/d4f/classedash__packager_1_1media_1_1mp4_1_1BoxBuffer.html#aa1144b8d6912a983d65ff97f44ffeb51',1,'edash_packager::media::mp4::BoxBuffer::BoxBuffer(BoxReader *reader)'],['../dd/d4f/classedash__packager_1_1media_1_1mp4_1_1BoxBuffer.html#a1ecfb419ea348ad684bf3c1556d1570c',1,'edash_packager::media::mp4::BoxBuffer::BoxBuffer(BufferWriter *writer)']]], - ['boxtype',['BoxType',['../d7/d8a/structedash__packager_1_1media_1_1mp4_1_1Box.html#a504e7612c24f7d788748dff9940e46ea',1,'edash_packager::media::mp4::Box::BoxType()'],['../d1/dcd/structedash__packager_1_1media_1_1mp4_1_1FileType.html#a37c1287fee817803e6cb18eebfd99847',1,'edash_packager::media::mp4::FileType::BoxType()'],['../dd/da6/structedash__packager_1_1media_1_1mp4_1_1SegmentType.html#aebd87db93b8d63a08e0becb45e1d70cf',1,'edash_packager::media::mp4::SegmentType::BoxType()'],['../da/d2a/structedash__packager_1_1media_1_1mp4_1_1ProtectionSystemSpecificHeader.html#a652e720a34bfc0ea43de52642325d12e',1,'edash_packager::media::mp4::ProtectionSystemSpecificHeader::BoxType()'],['../de/dc4/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset.html#acfbcac458961036f8fa9c47bea95905c',1,'edash_packager::media::mp4::SampleAuxiliaryInformationOffset::BoxType()'],['../d2/d51/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize.html#a54b83543e5924c4f9d7e4e45934be26a',1,'edash_packager::media::mp4::SampleAuxiliaryInformationSize::BoxType()'],['../d5/d78/structedash__packager_1_1media_1_1mp4_1_1SampleEncryption.html#ab6d4d91b2bd0a2a021c10afac4672c09',1,'edash_packager::media::mp4::SampleEncryption::BoxType()'],['../da/d4b/structedash__packager_1_1media_1_1mp4_1_1OriginalFormat.html#a3c21bf81deb542ab69811673ec025f2e',1,'edash_packager::media::mp4::OriginalFormat::BoxType()'],['../d4/dcc/structedash__packager_1_1media_1_1mp4_1_1SchemeType.html#a9d477e94ca46a6ee6ebd6208a3343c6c',1,'edash_packager::media::mp4::SchemeType::BoxType()'],['../de/d44/structedash__packager_1_1media_1_1mp4_1_1TrackEncryption.html#aebad0e736feade55f9a81675737380fe',1,'edash_packager::media::mp4::TrackEncryption::BoxType()'],['../d2/d6f/structedash__packager_1_1media_1_1mp4_1_1SchemeInfo.html#a05f236b91e36bd7c774fec38378dae2c',1,'edash_packager::media::mp4::SchemeInfo::BoxType()'],['../dd/dc9/structedash__packager_1_1media_1_1mp4_1_1ProtectionSchemeInfo.html#a62ea06c139c349ef4f1960c15f85da33',1,'edash_packager::media::mp4::ProtectionSchemeInfo::BoxType()'],['../dd/d14/structedash__packager_1_1media_1_1mp4_1_1MovieHeader.html#a4403980ce1e53080796c60d8d7f91ee1',1,'edash_packager::media::mp4::MovieHeader::BoxType()'],['../dd/d15/structedash__packager_1_1media_1_1mp4_1_1TrackHeader.html#a7347e1e4b0e9785b4cecaf6b24c7b70f',1,'edash_packager::media::mp4::TrackHeader::BoxType()'],['../d8/d4a/structedash__packager_1_1media_1_1mp4_1_1EditList.html#aeeaefd1b799f2da1d28dd037ecbbd6a8',1,'edash_packager::media::mp4::EditList::BoxType()'],['../d7/d4f/structedash__packager_1_1media_1_1mp4_1_1Edit.html#aa59c17335999289620bd51d05d3208ab',1,'edash_packager::media::mp4::Edit::BoxType()'],['../d3/dbd/structedash__packager_1_1media_1_1mp4_1_1HandlerReference.html#a27e27257f90332a2585114153e0d7594',1,'edash_packager::media::mp4::HandlerReference::BoxType()'],['../d9/d21/structedash__packager_1_1media_1_1mp4_1_1ID3v2.html#acc52776c15a2dcd6a61be12cb7604bb1',1,'edash_packager::media::mp4::ID3v2::BoxType()'],['../d2/d06/structedash__packager_1_1media_1_1mp4_1_1Metadata.html#aeb14c600d3581277e2709857ab86203a',1,'edash_packager::media::mp4::Metadata::BoxType()'],['../d1/d31/structedash__packager_1_1media_1_1mp4_1_1CodecConfigurationRecord.html#af79275c621765517a82bd0805c82247e',1,'edash_packager::media::mp4::CodecConfigurationRecord::BoxType()'],['../d4/d3d/structedash__packager_1_1media_1_1mp4_1_1PixelAspectRatio.html#a9b88be9293ff1ea9d943de9e9d737782',1,'edash_packager::media::mp4::PixelAspectRatio::BoxType()'],['../df/d6a/structedash__packager_1_1media_1_1mp4_1_1VideoSampleEntry.html#a9d870de1a6e6799c18976adeed3d2b3e',1,'edash_packager::media::mp4::VideoSampleEntry::BoxType()'],['../d9/dcc/structedash__packager_1_1media_1_1mp4_1_1ElementaryStreamDescriptor.html#a8a819a7d71dfbbaf5ec2770499689d2d',1,'edash_packager::media::mp4::ElementaryStreamDescriptor::BoxType()'],['../d0/db7/structedash__packager_1_1media_1_1mp4_1_1DTSSpecific.html#aa392cbec3186779bb28e57e9a5e55973',1,'edash_packager::media::mp4::DTSSpecific::BoxType()'],['../d0/d65/structedash__packager_1_1media_1_1mp4_1_1AC3Specific.html#adcfdf18f91a08aa3f9fa73d617e02a22',1,'edash_packager::media::mp4::AC3Specific::BoxType()'],['../df/d62/structedash__packager_1_1media_1_1mp4_1_1AudioSampleEntry.html#a9204f77a7c4e0c6bed49ac995ba25488',1,'edash_packager::media::mp4::AudioSampleEntry::BoxType()'],['../d7/dcc/structedash__packager_1_1media_1_1mp4_1_1WebVTTConfigurationBox.html#a0189e52ddef8d5674a0d9e46a96eff87',1,'edash_packager::media::mp4::WebVTTConfigurationBox::BoxType()'],['../df/da9/structedash__packager_1_1media_1_1mp4_1_1WebVTTSourceLabelBox.html#aa2605337625ef9e34e6563d95688338c',1,'edash_packager::media::mp4::WebVTTSourceLabelBox::BoxType()'],['../dc/d0e/structedash__packager_1_1media_1_1mp4_1_1WVTTSampleEntry.html#a0cde4e110795765483a2b8d7feab1010',1,'edash_packager::media::mp4::WVTTSampleEntry::BoxType()'],['../d3/d74/structedash__packager_1_1media_1_1mp4_1_1SampleDescription.html#ada90ed0cac4d2d899424669864f7e6d8',1,'edash_packager::media::mp4::SampleDescription::BoxType()'],['../dc/db7/structedash__packager_1_1media_1_1mp4_1_1DecodingTimeToSample.html#a52fc624b3a6ce6ccd1077420d46d6ef2',1,'edash_packager::media::mp4::DecodingTimeToSample::BoxType()'],['../da/d54/structedash__packager_1_1media_1_1mp4_1_1CompositionTimeToSample.html#a11a38fe87d393d25f89b0b616159479f',1,'edash_packager::media::mp4::CompositionTimeToSample::BoxType()'],['../df/d76/structedash__packager_1_1media_1_1mp4_1_1SampleToChunk.html#ac28ec4cd9cac79d7b552102cb8c3304a',1,'edash_packager::media::mp4::SampleToChunk::BoxType()'],['../d7/da5/structedash__packager_1_1media_1_1mp4_1_1SampleSize.html#ad408709db5e9d0843948b1de6921d11c',1,'edash_packager::media::mp4::SampleSize::BoxType()'],['../db/d89/structedash__packager_1_1media_1_1mp4_1_1CompactSampleSize.html#afd1bbe1300c24d2b86e69a2b20942174',1,'edash_packager::media::mp4::CompactSampleSize::BoxType()'],['../da/d81/structedash__packager_1_1media_1_1mp4_1_1ChunkLargeOffset.html#a83ff8d4e12f4a84c9e5652d74cb582d4',1,'edash_packager::media::mp4::ChunkLargeOffset::BoxType()'],['../d6/d79/structedash__packager_1_1media_1_1mp4_1_1ChunkOffset.html#a7aa021dc4bc57fd5abb83582513ec7d6',1,'edash_packager::media::mp4::ChunkOffset::BoxType()'],['../d9/d18/structedash__packager_1_1media_1_1mp4_1_1SyncSample.html#a83405091000e8777b4be3088ed638c65',1,'edash_packager::media::mp4::SyncSample::BoxType()'],['../d3/d77/structedash__packager_1_1media_1_1mp4_1_1SampleTable.html#a8d8d5a5f691ea55bd0248a6d12302e90',1,'edash_packager::media::mp4::SampleTable::BoxType()'],['../d7/dec/structedash__packager_1_1media_1_1mp4_1_1MediaHeader.html#af7668a8993e5ef0b515cf1deca69db90',1,'edash_packager::media::mp4::MediaHeader::BoxType()'],['../db/df7/structedash__packager_1_1media_1_1mp4_1_1VideoMediaHeader.html#a5a3f17a16ce780e1d3c9e7ff2c2d8b92',1,'edash_packager::media::mp4::VideoMediaHeader::BoxType()'],['../da/db0/structedash__packager_1_1media_1_1mp4_1_1SoundMediaHeader.html#a294713d0b23c8fd694752a9fe5b302d0',1,'edash_packager::media::mp4::SoundMediaHeader::BoxType()'],['../d1/d86/structedash__packager_1_1media_1_1mp4_1_1SubtitleMediaHeader.html#a46fb740ceb2e6b51336e602fb707d9dc',1,'edash_packager::media::mp4::SubtitleMediaHeader::BoxType()'],['../d6/d6c/structedash__packager_1_1media_1_1mp4_1_1DataEntryUrl.html#a52a2b2d6afb05554e144b476e2a7c2e1',1,'edash_packager::media::mp4::DataEntryUrl::BoxType()'],['../d7/d0d/structedash__packager_1_1media_1_1mp4_1_1DataReference.html#a4cfadf5c0c452c121be0ea980555be60',1,'edash_packager::media::mp4::DataReference::BoxType()'],['../d6/d59/structedash__packager_1_1media_1_1mp4_1_1DataInformation.html#aed66cd68a3126748afe6b42d04cab885',1,'edash_packager::media::mp4::DataInformation::BoxType()'],['../dd/dbd/structedash__packager_1_1media_1_1mp4_1_1MediaInformation.html#a2dab0117ee2e03c052f5df25134db42e',1,'edash_packager::media::mp4::MediaInformation::BoxType()'],['../de/de7/structedash__packager_1_1media_1_1mp4_1_1Media.html#a339ebe17f0f7d4ffbbf82795419155b5',1,'edash_packager::media::mp4::Media::BoxType()'],['../d3/de1/structedash__packager_1_1media_1_1mp4_1_1Track.html#a94e5e94f5bc4e4f6498bb384ed548cae',1,'edash_packager::media::mp4::Track::BoxType()'],['../da/d17/structedash__packager_1_1media_1_1mp4_1_1MovieExtendsHeader.html#a3d7d2e08f6baedf1af02c9e4504d75d9',1,'edash_packager::media::mp4::MovieExtendsHeader::BoxType()'],['../d3/d2c/structedash__packager_1_1media_1_1mp4_1_1TrackExtends.html#a133f1027410f7767253ed0bfd8da54cd',1,'edash_packager::media::mp4::TrackExtends::BoxType()'],['../d6/d8b/structedash__packager_1_1media_1_1mp4_1_1MovieExtends.html#a13e40bc4f9d2a6988b3506a5305e6fca',1,'edash_packager::media::mp4::MovieExtends::BoxType()'],['../d6/dec/structedash__packager_1_1media_1_1mp4_1_1Movie.html#aa5e25db4def848291ed7b79217e7e2fe',1,'edash_packager::media::mp4::Movie::BoxType()'],['../d0/d92/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentDecodeTime.html#a33cfba86f8b918fbedaceb465ec40eb1',1,'edash_packager::media::mp4::TrackFragmentDecodeTime::BoxType()'],['../df/d86/structedash__packager_1_1media_1_1mp4_1_1MovieFragmentHeader.html#a1cd6327f596a7cb253f1426812490dce',1,'edash_packager::media::mp4::MovieFragmentHeader::BoxType()'],['../d9/d47/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentHeader.html#a9a5be3ea4894965d2bb643d88acdb4c9',1,'edash_packager::media::mp4::TrackFragmentHeader::BoxType()'],['../df/d21/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentRun.html#a1390e0e93a5181be7d31cb701592ec18',1,'edash_packager::media::mp4::TrackFragmentRun::BoxType()'],['../d1/d65/structedash__packager_1_1media_1_1mp4_1_1SampleToGroup.html#abf5ab6476c2530cf820cc4262c2eef41',1,'edash_packager::media::mp4::SampleToGroup::BoxType()'],['../d2/d26/structedash__packager_1_1media_1_1mp4_1_1SampleGroupDescription.html#a20836adec61bcbc891d08ffbc291ab4e',1,'edash_packager::media::mp4::SampleGroupDescription::BoxType()'],['../d4/dd9/structedash__packager_1_1media_1_1mp4_1_1TrackFragment.html#a1b72b2b61bdbca4b23f0ef727cb04901',1,'edash_packager::media::mp4::TrackFragment::BoxType()'],['../dd/da2/structedash__packager_1_1media_1_1mp4_1_1MovieFragment.html#a5455c20a8391c344d91929eb088f0699',1,'edash_packager::media::mp4::MovieFragment::BoxType()'],['../d1/d81/structedash__packager_1_1media_1_1mp4_1_1SegmentIndex.html#a2a0444e32d7ccc525b10b6f9fc81b0b5',1,'edash_packager::media::mp4::SegmentIndex::BoxType()'],['../d4/d92/structedash__packager_1_1media_1_1mp4_1_1MediaData.html#a2cd09fe16fb9b50fc70476217977a060',1,'edash_packager::media::mp4::MediaData::BoxType()'],['../d2/df8/structedash__packager_1_1media_1_1mp4_1_1CueSourceIDBox.html#a79ce16bc0cd49723eaa8e4734c6426e5',1,'edash_packager::media::mp4::CueSourceIDBox::BoxType()'],['../dd/d12/structedash__packager_1_1media_1_1mp4_1_1CueTimeBox.html#a099bff9996e063551114d44e9a0429bc',1,'edash_packager::media::mp4::CueTimeBox::BoxType()'],['../de/d07/structedash__packager_1_1media_1_1mp4_1_1CueIDBox.html#ad160b5d1ef859073d2536f048d71af05',1,'edash_packager::media::mp4::CueIDBox::BoxType()'],['../d1/df2/structedash__packager_1_1media_1_1mp4_1_1CueSettingsBox.html#af750ff88f1d2e7926f01969db44b76ed',1,'edash_packager::media::mp4::CueSettingsBox::BoxType()'],['../d7/d49/structedash__packager_1_1media_1_1mp4_1_1CuePayloadBox.html#a227df861e36f5876dca5cd91b5b230ad',1,'edash_packager::media::mp4::CuePayloadBox::BoxType()'],['../d3/d1c/structedash__packager_1_1media_1_1mp4_1_1VTTEmptyCueBox.html#a12c38669db1fc4e70bb8dca039a52f8b',1,'edash_packager::media::mp4::VTTEmptyCueBox::BoxType()'],['../db/d6b/structedash__packager_1_1media_1_1mp4_1_1VTTAdditionalTextBox.html#ad0715718756fb534e945ed725670bf79',1,'edash_packager::media::mp4::VTTAdditionalTextBox::BoxType()'],['../d6/d74/structedash__packager_1_1media_1_1mp4_1_1VTTCueBox.html#abd7dab86dd675aadf17eb857d0d0ab80',1,'edash_packager::media::mp4::VTTCueBox::BoxType()']]], + ['boxtype',['BoxType',['../d7/d8a/structedash__packager_1_1media_1_1mp4_1_1Box.html#a504e7612c24f7d788748dff9940e46ea',1,'edash_packager::media::mp4::Box::BoxType()'],['../d1/dcd/structedash__packager_1_1media_1_1mp4_1_1FileType.html#a37c1287fee817803e6cb18eebfd99847',1,'edash_packager::media::mp4::FileType::BoxType()'],['../dd/da6/structedash__packager_1_1media_1_1mp4_1_1SegmentType.html#aebd87db93b8d63a08e0becb45e1d70cf',1,'edash_packager::media::mp4::SegmentType::BoxType()'],['../da/d2a/structedash__packager_1_1media_1_1mp4_1_1ProtectionSystemSpecificHeader.html#a652e720a34bfc0ea43de52642325d12e',1,'edash_packager::media::mp4::ProtectionSystemSpecificHeader::BoxType()'],['../de/dc4/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset.html#acfbcac458961036f8fa9c47bea95905c',1,'edash_packager::media::mp4::SampleAuxiliaryInformationOffset::BoxType()'],['../d2/d51/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize.html#a54b83543e5924c4f9d7e4e45934be26a',1,'edash_packager::media::mp4::SampleAuxiliaryInformationSize::BoxType()'],['../d5/d78/structedash__packager_1_1media_1_1mp4_1_1SampleEncryption.html#ab6d4d91b2bd0a2a021c10afac4672c09',1,'edash_packager::media::mp4::SampleEncryption::BoxType()'],['../da/d4b/structedash__packager_1_1media_1_1mp4_1_1OriginalFormat.html#a3c21bf81deb542ab69811673ec025f2e',1,'edash_packager::media::mp4::OriginalFormat::BoxType()'],['../d4/dcc/structedash__packager_1_1media_1_1mp4_1_1SchemeType.html#a9d477e94ca46a6ee6ebd6208a3343c6c',1,'edash_packager::media::mp4::SchemeType::BoxType()'],['../de/d44/structedash__packager_1_1media_1_1mp4_1_1TrackEncryption.html#aebad0e736feade55f9a81675737380fe',1,'edash_packager::media::mp4::TrackEncryption::BoxType()'],['../d2/d6f/structedash__packager_1_1media_1_1mp4_1_1SchemeInfo.html#a05f236b91e36bd7c774fec38378dae2c',1,'edash_packager::media::mp4::SchemeInfo::BoxType()'],['../dd/dc9/structedash__packager_1_1media_1_1mp4_1_1ProtectionSchemeInfo.html#a62ea06c139c349ef4f1960c15f85da33',1,'edash_packager::media::mp4::ProtectionSchemeInfo::BoxType()'],['../dd/d14/structedash__packager_1_1media_1_1mp4_1_1MovieHeader.html#a4403980ce1e53080796c60d8d7f91ee1',1,'edash_packager::media::mp4::MovieHeader::BoxType()'],['../dd/d15/structedash__packager_1_1media_1_1mp4_1_1TrackHeader.html#a7347e1e4b0e9785b4cecaf6b24c7b70f',1,'edash_packager::media::mp4::TrackHeader::BoxType()'],['../d8/d4a/structedash__packager_1_1media_1_1mp4_1_1EditList.html#aeeaefd1b799f2da1d28dd037ecbbd6a8',1,'edash_packager::media::mp4::EditList::BoxType()'],['../d7/d4f/structedash__packager_1_1media_1_1mp4_1_1Edit.html#aa59c17335999289620bd51d05d3208ab',1,'edash_packager::media::mp4::Edit::BoxType()'],['../d3/dbd/structedash__packager_1_1media_1_1mp4_1_1HandlerReference.html#a27e27257f90332a2585114153e0d7594',1,'edash_packager::media::mp4::HandlerReference::BoxType()'],['../d9/d21/structedash__packager_1_1media_1_1mp4_1_1ID3v2.html#acc52776c15a2dcd6a61be12cb7604bb1',1,'edash_packager::media::mp4::ID3v2::BoxType()'],['../d2/d06/structedash__packager_1_1media_1_1mp4_1_1Metadata.html#aeb14c600d3581277e2709857ab86203a',1,'edash_packager::media::mp4::Metadata::BoxType()'],['../d1/d31/structedash__packager_1_1media_1_1mp4_1_1CodecConfigurationRecord.html#af79275c621765517a82bd0805c82247e',1,'edash_packager::media::mp4::CodecConfigurationRecord::BoxType()'],['../d4/d3d/structedash__packager_1_1media_1_1mp4_1_1PixelAspectRatio.html#a9b88be9293ff1ea9d943de9e9d737782',1,'edash_packager::media::mp4::PixelAspectRatio::BoxType()'],['../df/d6a/structedash__packager_1_1media_1_1mp4_1_1VideoSampleEntry.html#a9d870de1a6e6799c18976adeed3d2b3e',1,'edash_packager::media::mp4::VideoSampleEntry::BoxType()'],['../d9/dcc/structedash__packager_1_1media_1_1mp4_1_1ElementaryStreamDescriptor.html#a8a819a7d71dfbbaf5ec2770499689d2d',1,'edash_packager::media::mp4::ElementaryStreamDescriptor::BoxType()'],['../d0/db7/structedash__packager_1_1media_1_1mp4_1_1DTSSpecific.html#aa392cbec3186779bb28e57e9a5e55973',1,'edash_packager::media::mp4::DTSSpecific::BoxType()'],['../d0/d65/structedash__packager_1_1media_1_1mp4_1_1AC3Specific.html#adcfdf18f91a08aa3f9fa73d617e02a22',1,'edash_packager::media::mp4::AC3Specific::BoxType()'],['../d3/d43/structedash__packager_1_1media_1_1mp4_1_1EC3Specific.html#a87001ebd7f4894c6df389386b85d0168',1,'edash_packager::media::mp4::EC3Specific::BoxType()'],['../df/d62/structedash__packager_1_1media_1_1mp4_1_1AudioSampleEntry.html#a9204f77a7c4e0c6bed49ac995ba25488',1,'edash_packager::media::mp4::AudioSampleEntry::BoxType()'],['../d7/dcc/structedash__packager_1_1media_1_1mp4_1_1WebVTTConfigurationBox.html#a0189e52ddef8d5674a0d9e46a96eff87',1,'edash_packager::media::mp4::WebVTTConfigurationBox::BoxType()'],['../df/da9/structedash__packager_1_1media_1_1mp4_1_1WebVTTSourceLabelBox.html#aa2605337625ef9e34e6563d95688338c',1,'edash_packager::media::mp4::WebVTTSourceLabelBox::BoxType()'],['../dc/d0e/structedash__packager_1_1media_1_1mp4_1_1WVTTSampleEntry.html#a0cde4e110795765483a2b8d7feab1010',1,'edash_packager::media::mp4::WVTTSampleEntry::BoxType()'],['../d3/d74/structedash__packager_1_1media_1_1mp4_1_1SampleDescription.html#ada90ed0cac4d2d899424669864f7e6d8',1,'edash_packager::media::mp4::SampleDescription::BoxType()'],['../dc/db7/structedash__packager_1_1media_1_1mp4_1_1DecodingTimeToSample.html#a52fc624b3a6ce6ccd1077420d46d6ef2',1,'edash_packager::media::mp4::DecodingTimeToSample::BoxType()'],['../da/d54/structedash__packager_1_1media_1_1mp4_1_1CompositionTimeToSample.html#a11a38fe87d393d25f89b0b616159479f',1,'edash_packager::media::mp4::CompositionTimeToSample::BoxType()'],['../df/d76/structedash__packager_1_1media_1_1mp4_1_1SampleToChunk.html#ac28ec4cd9cac79d7b552102cb8c3304a',1,'edash_packager::media::mp4::SampleToChunk::BoxType()'],['../d7/da5/structedash__packager_1_1media_1_1mp4_1_1SampleSize.html#ad408709db5e9d0843948b1de6921d11c',1,'edash_packager::media::mp4::SampleSize::BoxType()'],['../db/d89/structedash__packager_1_1media_1_1mp4_1_1CompactSampleSize.html#afd1bbe1300c24d2b86e69a2b20942174',1,'edash_packager::media::mp4::CompactSampleSize::BoxType()'],['../da/d81/structedash__packager_1_1media_1_1mp4_1_1ChunkLargeOffset.html#a83ff8d4e12f4a84c9e5652d74cb582d4',1,'edash_packager::media::mp4::ChunkLargeOffset::BoxType()'],['../d6/d79/structedash__packager_1_1media_1_1mp4_1_1ChunkOffset.html#a7aa021dc4bc57fd5abb83582513ec7d6',1,'edash_packager::media::mp4::ChunkOffset::BoxType()'],['../d9/d18/structedash__packager_1_1media_1_1mp4_1_1SyncSample.html#a83405091000e8777b4be3088ed638c65',1,'edash_packager::media::mp4::SyncSample::BoxType()'],['../d3/d77/structedash__packager_1_1media_1_1mp4_1_1SampleTable.html#a8d8d5a5f691ea55bd0248a6d12302e90',1,'edash_packager::media::mp4::SampleTable::BoxType()'],['../d7/dec/structedash__packager_1_1media_1_1mp4_1_1MediaHeader.html#af7668a8993e5ef0b515cf1deca69db90',1,'edash_packager::media::mp4::MediaHeader::BoxType()'],['../db/df7/structedash__packager_1_1media_1_1mp4_1_1VideoMediaHeader.html#a5a3f17a16ce780e1d3c9e7ff2c2d8b92',1,'edash_packager::media::mp4::VideoMediaHeader::BoxType()'],['../da/db0/structedash__packager_1_1media_1_1mp4_1_1SoundMediaHeader.html#a294713d0b23c8fd694752a9fe5b302d0',1,'edash_packager::media::mp4::SoundMediaHeader::BoxType()'],['../d1/d86/structedash__packager_1_1media_1_1mp4_1_1SubtitleMediaHeader.html#a46fb740ceb2e6b51336e602fb707d9dc',1,'edash_packager::media::mp4::SubtitleMediaHeader::BoxType()'],['../d6/d6c/structedash__packager_1_1media_1_1mp4_1_1DataEntryUrl.html#a52a2b2d6afb05554e144b476e2a7c2e1',1,'edash_packager::media::mp4::DataEntryUrl::BoxType()'],['../d7/d0d/structedash__packager_1_1media_1_1mp4_1_1DataReference.html#a4cfadf5c0c452c121be0ea980555be60',1,'edash_packager::media::mp4::DataReference::BoxType()'],['../d6/d59/structedash__packager_1_1media_1_1mp4_1_1DataInformation.html#aed66cd68a3126748afe6b42d04cab885',1,'edash_packager::media::mp4::DataInformation::BoxType()'],['../dd/dbd/structedash__packager_1_1media_1_1mp4_1_1MediaInformation.html#a2dab0117ee2e03c052f5df25134db42e',1,'edash_packager::media::mp4::MediaInformation::BoxType()'],['../de/de7/structedash__packager_1_1media_1_1mp4_1_1Media.html#a339ebe17f0f7d4ffbbf82795419155b5',1,'edash_packager::media::mp4::Media::BoxType()'],['../d3/de1/structedash__packager_1_1media_1_1mp4_1_1Track.html#a94e5e94f5bc4e4f6498bb384ed548cae',1,'edash_packager::media::mp4::Track::BoxType()'],['../da/d17/structedash__packager_1_1media_1_1mp4_1_1MovieExtendsHeader.html#a3d7d2e08f6baedf1af02c9e4504d75d9',1,'edash_packager::media::mp4::MovieExtendsHeader::BoxType()'],['../d3/d2c/structedash__packager_1_1media_1_1mp4_1_1TrackExtends.html#a133f1027410f7767253ed0bfd8da54cd',1,'edash_packager::media::mp4::TrackExtends::BoxType()'],['../d6/d8b/structedash__packager_1_1media_1_1mp4_1_1MovieExtends.html#a13e40bc4f9d2a6988b3506a5305e6fca',1,'edash_packager::media::mp4::MovieExtends::BoxType()'],['../d6/dec/structedash__packager_1_1media_1_1mp4_1_1Movie.html#aa5e25db4def848291ed7b79217e7e2fe',1,'edash_packager::media::mp4::Movie::BoxType()'],['../d0/d92/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentDecodeTime.html#a33cfba86f8b918fbedaceb465ec40eb1',1,'edash_packager::media::mp4::TrackFragmentDecodeTime::BoxType()'],['../df/d86/structedash__packager_1_1media_1_1mp4_1_1MovieFragmentHeader.html#a1cd6327f596a7cb253f1426812490dce',1,'edash_packager::media::mp4::MovieFragmentHeader::BoxType()'],['../d9/d47/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentHeader.html#a9a5be3ea4894965d2bb643d88acdb4c9',1,'edash_packager::media::mp4::TrackFragmentHeader::BoxType()'],['../df/d21/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentRun.html#a1390e0e93a5181be7d31cb701592ec18',1,'edash_packager::media::mp4::TrackFragmentRun::BoxType()'],['../d1/d65/structedash__packager_1_1media_1_1mp4_1_1SampleToGroup.html#abf5ab6476c2530cf820cc4262c2eef41',1,'edash_packager::media::mp4::SampleToGroup::BoxType()'],['../d2/d26/structedash__packager_1_1media_1_1mp4_1_1SampleGroupDescription.html#a20836adec61bcbc891d08ffbc291ab4e',1,'edash_packager::media::mp4::SampleGroupDescription::BoxType()'],['../d4/dd9/structedash__packager_1_1media_1_1mp4_1_1TrackFragment.html#a1b72b2b61bdbca4b23f0ef727cb04901',1,'edash_packager::media::mp4::TrackFragment::BoxType()'],['../dd/da2/structedash__packager_1_1media_1_1mp4_1_1MovieFragment.html#a5455c20a8391c344d91929eb088f0699',1,'edash_packager::media::mp4::MovieFragment::BoxType()'],['../d1/d81/structedash__packager_1_1media_1_1mp4_1_1SegmentIndex.html#a2a0444e32d7ccc525b10b6f9fc81b0b5',1,'edash_packager::media::mp4::SegmentIndex::BoxType()'],['../d4/d92/structedash__packager_1_1media_1_1mp4_1_1MediaData.html#a2cd09fe16fb9b50fc70476217977a060',1,'edash_packager::media::mp4::MediaData::BoxType()'],['../d2/df8/structedash__packager_1_1media_1_1mp4_1_1CueSourceIDBox.html#a79ce16bc0cd49723eaa8e4734c6426e5',1,'edash_packager::media::mp4::CueSourceIDBox::BoxType()'],['../dd/d12/structedash__packager_1_1media_1_1mp4_1_1CueTimeBox.html#a099bff9996e063551114d44e9a0429bc',1,'edash_packager::media::mp4::CueTimeBox::BoxType()'],['../de/d07/structedash__packager_1_1media_1_1mp4_1_1CueIDBox.html#ad160b5d1ef859073d2536f048d71af05',1,'edash_packager::media::mp4::CueIDBox::BoxType()'],['../d1/df2/structedash__packager_1_1media_1_1mp4_1_1CueSettingsBox.html#af750ff88f1d2e7926f01969db44b76ed',1,'edash_packager::media::mp4::CueSettingsBox::BoxType()'],['../d7/d49/structedash__packager_1_1media_1_1mp4_1_1CuePayloadBox.html#a227df861e36f5876dca5cd91b5b230ad',1,'edash_packager::media::mp4::CuePayloadBox::BoxType()'],['../d3/d1c/structedash__packager_1_1media_1_1mp4_1_1VTTEmptyCueBox.html#a12c38669db1fc4e70bb8dca039a52f8b',1,'edash_packager::media::mp4::VTTEmptyCueBox::BoxType()'],['../db/d6b/structedash__packager_1_1media_1_1mp4_1_1VTTAdditionalTextBox.html#ad0715718756fb534e945ed725670bf79',1,'edash_packager::media::mp4::VTTAdditionalTextBox::BoxType()'],['../d6/d74/structedash__packager_1_1media_1_1mp4_1_1VTTCueBox.html#abd7dab86dd675aadf17eb857d0d0ab80',1,'edash_packager::media::mp4::VTTCueBox::BoxType()']]], ['buffer',['Buffer',['../df/dde/classedash__packager_1_1media_1_1BufferWriter.html#a8849c495e9e5cb0c33d7633fecbe0643',1,'edash_packager::media::BufferWriter']]], ['bufferreader',['BufferReader',['../d9/d46/classedash__packager_1_1media_1_1BufferReader.html#a7354b7da262fd2cd4680346d4ae871d8',1,'edash_packager::media::BufferReader']]], ['bufferwriter',['BufferWriter',['../df/dde/classedash__packager_1_1media_1_1BufferWriter.html#abffefbaff39469927deaaa97fec636a4',1,'edash_packager::media::BufferWriter']]],