diff --git a/docs/annotated.html b/docs/annotated.html index 658ce0937b..1faebda553 100644 --- a/docs/annotated.html +++ b/docs/annotated.html @@ -147,76 +147,78 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); |||oCDTSSpecific |||oCAC3Specific |||oCEC3Specific -|||oCAudioSampleEntry -|||oCWebVTTConfigurationBox -|||oCWebVTTSourceLabelBox -|||oCTextSampleEntry -|||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 -|||oCTrackRunIterator -|||oCVideoSliceHeaderParser -|||oCH264VideoSliceHeaderParser -|||\CH265VideoSliceHeaderParser +|||oCOpusSpecific +|||oCAudioSampleEntry +|||oCWebVTTConfigurationBox +|||oCWebVTTSourceLabelBox +|||oCTextSampleEntry +|||oCSampleDescription +|||oCDecodingTime +|||oCDecodingTimeToSample +|||oCCompositionOffset +|||oCCompositionTimeToSample +|||oCChunkInfo +|||oCSampleToChunk +|||oCSampleSize +|||oCCompactSampleSize +|||oCChunkLargeOffset +|||oCChunkOffset +|||oCSyncSample +|||oCCencSampleEncryptionInfoEntry +|||oCAudioRollRecoveryEntry +|||oCSampleGroupDescription +|||oCSampleToGroupEntry +|||oCSampleToGroup +|||oCSampleTable +|||oCMediaHeader +|||oCVideoMediaHeader +|||oCSoundMediaHeader +|||oCSubtitleMediaHeader +|||oCDataEntryUrl +|||oCDataReference +|||oCDataInformation +|||oCMediaInformation +|||oCMedia +|||oCTrack +|||oCMovieExtendsHeader +|||oCTrackExtends +|||oCMovieExtends +|||oCMovie +|||oCTrackFragmentDecodeTime +|||oCMovieFragmentHeader +|||oCTrackFragmentHeader +|||oCTrackFragmentRun +|||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 +|||oCTrackRunIterator +|||oCVideoSliceHeaderParser +|||oCH264VideoSliceHeaderParser +|||\CH265VideoSliceHeaderParser ||oNwebm |||oCEncryptor |||oCMultiSegmentSegmenter @@ -369,7 +371,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/classes.html b/docs/classes.html index 8448f26aba..ea7113cd5f 100644 --- a/docs/classes.html +++ b/docs/classes.html @@ -89,96 +89,97 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
A | B | C | D | E | F | H | I | K | L | M | N | O | P | R | S | T | U | V | W | X
- - - - - - + + + + + + + - - - + + - - - - - - - - - + + + + + + + + - - + - + - - - - - + + + + + + - + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - - - - + + + + + + + + + - - - + + - +
  A  
-
DecodingTimeToSample (edash_packager::media::mp4)   IoCache (edash_packager::media)   PixelAspectRatio (edash_packager::media::mp4)   TrackExtends (edash_packager::media::mp4)   
DecryptConfig (edash_packager::media)   
  K  
-
PrevSampleData (edash_packager::media::wvm)   TrackFragment (edash_packager::media::mp4)   
AACAudioSpecificConfig (edash_packager::media::mp4)   DecryptorSource (edash_packager::media)   PrivFrame (edash_packager::media::mp4)   TrackFragmentDecodeTime (edash_packager::media::mp4)   
AacProgramMapTableWriter (edash_packager::media::mp2t)   Demuxer (edash_packager::media)   KeyFetcher (edash_packager::media)   ProducerConsumerQueue (edash_packager::media)   TrackFragmentHeader (edash_packager::media::mp4)   
AC3Specific (edash_packager::media::mp4)   DemuxStreamIdMediaSample (edash_packager::media::wvm)   KeyRotationFragmenter (edash_packager::media::mp4)   ProgramMapTableWriter (edash_packager::media::mp2t)   TrackFragmentRun (edash_packager::media::mp4)   
AdaptationSet (edash_packager)   DTSSpecific (edash_packager::media::mp4)   KeySource (edash_packager::media)   ProgressListener (edash_packager::media)   TrackHeader (edash_packager::media::mp4)   
AdaptationSetXmlNode (edash_packager::xml)   
  E  
-
  L  
+
DecodingTimeIterator (edash_packager::media::mp4)   IoCache (edash_packager::media)   PesPacketGenerator (edash_packager::media::mp2t)   TrackEncryption (edash_packager::media::mp4)   
DecodingTimeToSample (edash_packager::media::mp4)   
  K  
+
PixelAspectRatio (edash_packager::media::mp4)   TrackExtends (edash_packager::media::mp4)   
AACAudioSpecificConfig (edash_packager::media::mp4)   DecryptConfig (edash_packager::media)   PrevSampleData (edash_packager::media::wvm)   TrackFragment (edash_packager::media::mp4)   
AacProgramMapTableWriter (edash_packager::media::mp2t)   DecryptorSource (edash_packager::media)   KeyFetcher (edash_packager::media)   PrivFrame (edash_packager::media::mp4)   TrackFragmentDecodeTime (edash_packager::media::mp4)   
AC3Specific (edash_packager::media::mp4)   Demuxer (edash_packager::media)   KeyRotationFragmenter (edash_packager::media::mp4)   ProducerConsumerQueue (edash_packager::media)   TrackFragmentHeader (edash_packager::media::mp4)   
AdaptationSet (edash_packager)   DemuxStreamIdMediaSample (edash_packager::media::wvm)   KeySource (edash_packager::media)   ProgramMapTableWriter (edash_packager::media::mp2t)   TrackFragmentRun (edash_packager::media::mp4)   
AdaptationSetXmlNode (edash_packager::xml)   DTSSpecific (edash_packager::media::mp4)   
  L  
+
ProgressListener (edash_packager::media)   TrackHeader (edash_packager::media::mp4)   
AdtsHeader (edash_packager::media::mp2t)   
  E  
ProtectionSchemeInfo (edash_packager::media::mp4)   TrackRunIterator (edash_packager::media::mp4)   
AdtsHeader (edash_packager::media::mp2t)   ProtectionSystemSpecificHeader (edash_packager::media::mp4)   TracksBuilder (edash_packager::media)   
AesCbcDecryptor (edash_packager::media)   EC3Specific (edash_packager::media::mp4)   Language (edash_packager::media::mp4)   ProtectionSystemSpecificInfo (edash_packager::media)   TsMuxer (edash_packager::media::mp2t)   
AesCbcEncryptor (edash_packager::media)   Edit (edash_packager::media::mp4)   LibcryptoThreading (edash_packager::media)   
  R  
+
AesCbcDecryptor (edash_packager::media)   Language (edash_packager::media::mp4)   ProtectionSystemSpecificHeader (edash_packager::media::mp4)   TracksBuilder (edash_packager::media)   
AesCbcEncryptor (edash_packager::media)   EC3Specific (edash_packager::media::mp4)   LibcryptoThreading (edash_packager::media)   ProtectionSystemSpecificInfo (edash_packager::media)   TsMuxer (edash_packager::media::mp2t)   
AesCryptor (edash_packager::media)   Edit (edash_packager::media::mp4)   LocalFile (edash_packager::media)   
  R  
TsPacket (edash_packager::media::mp2t)   
AesCryptor (edash_packager::media)   EditList (edash_packager::media::mp4)   LocalFile (edash_packager::media)   TsSection (edash_packager::media::mp2t)   
AesCtrEncryptor (edash_packager::media)   EditListEntry (edash_packager::media::mp4)   H265SliceHeader::LongTermPicsInfo (edash_packager::media)   Representation (edash_packager)   TsSectionPat (edash_packager::media::mp2t)   
AesEncryptor (edash_packager::media)   Element (edash_packager)   
  M  
-
RepresentationBaseXmlNode (edash_packager::xml)   TsSectionPes (edash_packager::media::mp2t)   
AesPatternCryptor (edash_packager::media)   ElementaryStreamDescriptor (edash_packager::media::mp4)   RepresentationStateChangeListener (edash_packager)   TsSectionPmt (edash_packager::media::mp2t)   
AesRequestSigner (edash_packager::media)   EncryptingFragmenter (edash_packager::media::mp4)   Media (edash_packager::media::mp4)   RepresentationXmlNode (edash_packager::xml)   TsSectionPsi (edash_packager::media::mp2t)   
AudioSampleEntry (edash_packager::media::mp4)   EncryptionKey (edash_packager::media)   MediaData (edash_packager::media::mp4)   RequestSigner (edash_packager::media)   TsSegmenter (edash_packager::media::mp2t)   
AudioStreamInfo (edash_packager::media)   Encryptor (edash_packager::media::webm)   MediaHeader (edash_packager::media::mp4)   RsaPrivateKey (edash_packager::media)   TsWriter (edash_packager::media::mp2t)   
AudioTimestampHelper (edash_packager::media)   ESDescriptor (edash_packager::media::mp4)   MediaInformation (edash_packager::media::mp4)   RsaPublicKey (edash_packager::media)   TwoPassSingleSegmentSegmenter (edash_packager::media::webm)   
AVCDecoderConfiguration (edash_packager::media)   EsParser (edash_packager::media::mp2t)   MediaParser (edash_packager::media)   RsaRequestSigner (edash_packager::media)   
  U  
+
AesCtrEncryptor (edash_packager::media)   EditList (edash_packager::media::mp4)   H265SliceHeader::LongTermPicsInfo (edash_packager::media)   TsSection (edash_packager::media::mp2t)   
AesEncryptor (edash_packager::media)   EditListEntry (edash_packager::media::mp4)   
  M  
+
Representation (edash_packager)   TsSectionPat (edash_packager::media::mp2t)   
AesPatternCryptor (edash_packager::media)   Element (edash_packager)   RepresentationBaseXmlNode (edash_packager::xml)   TsSectionPes (edash_packager::media::mp2t)   
AesRequestSigner (edash_packager::media)   ElementaryStreamDescriptor (edash_packager::media::mp4)   Media (edash_packager::media::mp4)   RepresentationStateChangeListener (edash_packager)   TsSectionPmt (edash_packager::media::mp2t)   
AudioRollRecoveryEntry (edash_packager::media::mp4)   EncryptingFragmenter (edash_packager::media::mp4)   MediaData (edash_packager::media::mp4)   RepresentationXmlNode (edash_packager::xml)   TsSectionPsi (edash_packager::media::mp2t)   
AudioSampleEntry (edash_packager::media::mp4)   EncryptionKey (edash_packager::media)   MediaHeader (edash_packager::media::mp4)   RequestSigner (edash_packager::media)   TsSegmenter (edash_packager::media::mp2t)   
AudioStreamInfo (edash_packager::media)   Encryptor (edash_packager::media::webm)   MediaInformation (edash_packager::media::mp4)   RsaPrivateKey (edash_packager::media)   TsWriter (edash_packager::media::mp2t)   
AudioTimestampHelper (edash_packager::media)   ESDescriptor (edash_packager::media::mp4)   MediaParser (edash_packager::media)   RsaPublicKey (edash_packager::media)   TwoPassSingleSegmentSegmenter (edash_packager::media::webm)   
AVCDecoderConfiguration (edash_packager::media)   EsParser (edash_packager::media::mp2t)   MediaSample (edash_packager::media)   RsaRequestSigner (edash_packager::media)   
  U  
  B  
-
EsParserAdts (edash_packager::media::mp2t)   MediaSample (edash_packager::media)   
  S  
+
EsParserAdts (edash_packager::media::mp2t)   MediaStream (edash_packager::media)   
  S  
EsParserH264 (edash_packager::media::mp2t)   MediaStream (edash_packager::media)   UdpFile (edash_packager::media)   
BandwidthEstimator   EsParserH265 (edash_packager::media::mp2t)   MemoryFile (edash_packager::media)   SampleAuxiliaryInformationOffset (edash_packager::media::mp4)   
  V  
+
EsParserH264 (edash_packager::media::mp2t)   MemoryFile (edash_packager::media)   UdpFile (edash_packager::media)   
BandwidthEstimator   EsParserH265 (edash_packager::media::mp2t)   Metadata (edash_packager::media::mp4)   SampleAuxiliaryInformationOffset (edash_packager::media::mp4)   
  V  
BitReader (edash_packager::media)   EsParserH26x (edash_packager::media::mp2t)   Metadata (edash_packager::media::mp4)   SampleAuxiliaryInformationSize (edash_packager::media::mp4)   
BitReader (edash_packager::media)   EsParserH26x (edash_packager::media::mp2t)   MkvWriter (edash_packager::media)   SampleAuxiliaryInformationSize (edash_packager::media::mp4)   
Box (edash_packager::media::mp4)   
  F  
-
MkvWriter (edash_packager::media)   SampleDescription (edash_packager::media::mp4)   VideoMediaHeader (edash_packager::media::mp4)   
BoxBuffer (edash_packager::media::mp4)   MockAdaptationSet (edash_packager)   SampleEncryption (edash_packager::media::mp4)   VideoSampleEntry (edash_packager::media::mp4)   
BoxReader (edash_packager::media::mp4)   File (edash_packager::media)   MockMpdBuilder (edash_packager)   SampleEncryptionEntry (edash_packager::media::mp4)   VideoSliceHeaderParser (edash_packager::media::mp4)   
BufferReader (edash_packager::media)   FileCloser (edash_packager::media)   MockMpdNotifier (edash_packager)   SampleGroupDescription (edash_packager::media::mp4)   VideoStreamInfo (edash_packager::media)   
BufferWriter (edash_packager::media)   FileType (edash_packager::media::mp4)   MockMuxerListener (edash_packager::media)   SampleSize (edash_packager::media::mp4)   VideoStreamInfoParameters (edash_packager::media)   
ByteQueue (edash_packager::media)   FixedKeySource (edash_packager::media)   MockRepresentation (edash_packager)   SampleTable (edash_packager::media::mp4)   VodMediaInfoDumpMuxerListener (edash_packager::media)   
MockAdaptationSet (edash_packager)   SampleDescription (edash_packager::media::mp4)   VideoMediaHeader (edash_packager::media::mp4)   
BoxBuffer (edash_packager::media::mp4)   MockMpdBuilder (edash_packager)   SampleEncryption (edash_packager::media::mp4)   VideoSampleEntry (edash_packager::media::mp4)   
BoxReader (edash_packager::media::mp4)   File (edash_packager::media)   MockMpdNotifier (edash_packager)   SampleEncryptionEntry (edash_packager::media::mp4)   VideoSliceHeaderParser (edash_packager::media::mp4)   
BufferReader (edash_packager::media)   FileCloser (edash_packager::media)   MockMuxerListener (edash_packager::media)   SampleGroupDescription (edash_packager::media::mp4)   VideoStreamInfo (edash_packager::media)   
BufferWriter (edash_packager::media)   FileType (edash_packager::media::mp4)   MockRepresentation (edash_packager)   SampleSize (edash_packager::media::mp4)   VideoStreamInfoParameters (edash_packager::media)   
ByteQueue (edash_packager::media)   FixedKeySource (edash_packager::media)   Movie (edash_packager::media::mp4)   SampleTable (edash_packager::media::mp4)   VodMediaInfoDumpMuxerListener (edash_packager::media)   
  C  
-
Fragmenter (edash_packager::media::mp4)   Movie (edash_packager::media::mp4)   SampleToChunk (edash_packager::media::mp4)   VP8Parser (edash_packager::media)   
FullBox (edash_packager::media::mp4)   MovieExtends (edash_packager::media::mp4)   SampleToGroup (edash_packager::media::mp4)   VP9Parser (edash_packager::media)   
Fragmenter (edash_packager::media::mp4)   MovieExtends (edash_packager::media::mp4)   SampleToChunk (edash_packager::media::mp4)   VP8Parser (edash_packager::media)   
FullBox (edash_packager::media::mp4)   MovieExtendsHeader (edash_packager::media::mp4)   SampleToGroup (edash_packager::media::mp4)   VP9Parser (edash_packager::media)   
CencSampleEncryptionInfoEntry (edash_packager::media::mp4)   
  H  
-
MovieExtendsHeader (edash_packager::media::mp4)   SampleToGroupEntry (edash_packager::media::mp4)   VPCodecConfiguration (edash_packager::media)   
ChunkInfo (edash_packager::media::mp4)   MovieFragment (edash_packager::media::mp4)   SchemeInfo (edash_packager::media::mp4)   VPxFrameInfo (edash_packager::media)   
ChunkInfoIterator (edash_packager::media::mp4)   H264ByteToUnitStreamConverter (edash_packager::media)   MovieFragmentHeader (edash_packager::media::mp4)   SchemeType (edash_packager::media::mp4)   VPxParser (edash_packager::media)   
ChunkLargeOffset (edash_packager::media::mp4)   H264DecRefPicMarking (edash_packager::media)   MovieHeader (edash_packager::media::mp4)   SeekHead (edash_packager::media)   VTTAdditionalTextBox (edash_packager::media::mp4)   
ChunkOffset (edash_packager::media::mp4)   H264ModificationOfPicNum (edash_packager::media)   Mp2tMediaParser (edash_packager::media::mp2t)   Segmenter (edash_packager::media::webm)   VTTCueBox (edash_packager::media::mp4)   
ClosureThread (edash_packager::media)   H264Parser (edash_packager::media)   MP4MediaParser (edash_packager::media::mp4)   Segmenter (edash_packager::media::mp4)   VTTEmptyCueBox (edash_packager::media::mp4)   
Cluster (edash_packager::media)   H264Pps (edash_packager::media)   MP4Muxer (edash_packager::media::mp4)   SegmentIndex (edash_packager::media::mp4)   
  W  
+
MovieFragment (edash_packager::media::mp4)   SampleToGroupEntry (edash_packager::media::mp4)   VPCodecConfiguration (edash_packager::media)   
ChunkInfo (edash_packager::media::mp4)   MovieFragmentHeader (edash_packager::media::mp4)   SchemeInfo (edash_packager::media::mp4)   VPxFrameInfo (edash_packager::media)   
ChunkInfoIterator (edash_packager::media::mp4)   H264ByteToUnitStreamConverter (edash_packager::media)   MovieHeader (edash_packager::media::mp4)   SchemeType (edash_packager::media::mp4)   VPxParser (edash_packager::media)   
ChunkLargeOffset (edash_packager::media::mp4)   H264DecRefPicMarking (edash_packager::media)   Mp2tMediaParser (edash_packager::media::mp2t)   SeekHead (edash_packager::media)   VTTAdditionalTextBox (edash_packager::media::mp4)   
ChunkOffset (edash_packager::media::mp4)   H264ModificationOfPicNum (edash_packager::media)   MP4MediaParser (edash_packager::media::mp4)   Segmenter (edash_packager::media::mp4)   VTTCueBox (edash_packager::media::mp4)   
ClosureThread (edash_packager::media)   H264Parser (edash_packager::media)   MP4Muxer (edash_packager::media::mp4)   Segmenter (edash_packager::media::webm)   VTTEmptyCueBox (edash_packager::media::mp4)   
Cluster (edash_packager::media)   H264Pps (edash_packager::media)   MpdBuilder (edash_packager)   SegmentIndex (edash_packager::media::mp4)   
  W  
ClusterBuilder (edash_packager::media)   H264ProgramMapTableWriter (edash_packager::media::mp2t)   MpdBuilder (edash_packager)   SegmentInfo (edash_packager)   
SegmentTestBase::ClusterParser (edash_packager::media)   H264SEIMessage (edash_packager::media)   MpdNotifier (edash_packager)   SegmentReference (edash_packager::media::mp4)   WebMAudioClient (edash_packager::media)   
CodecConfigurationRecord (edash_packager::media::mp4)   H264SEIRecoveryPoint (edash_packager::media)   MpdNotifierFactory (edash_packager)   SegmentTestBase (edash_packager::media)   WebMClusterParser (edash_packager::media)   
CompactSampleSize (edash_packager::media::mp4)   H264SliceHeader (edash_packager::media)   MpdNotifyMuxerListener (edash_packager::media)   SegmentType (edash_packager::media::mp4)   WebMContentEncodingsClient (edash_packager::media)   
CompositionOffset (edash_packager::media::mp4)   H264Sps (edash_packager::media)   MpdOptions (edash_packager)   SimpleMpdNotifier (edash_packager)   WebMInfoParser (edash_packager::media)   
CompositionOffsetIterator (edash_packager::media::mp4)   H264VideoSliceHeaderParser (edash_packager::media::mp4)   MpdWriter (edash_packager)   SingleSegmentSegmenter (edash_packager::media::mp4)   WebMListParser (edash_packager::media)   
ClusterBuilder (edash_packager::media)   H264ProgramMapTableWriter (edash_packager::media::mp2t)   MpdNotifier (edash_packager)   SegmentInfo (edash_packager)   
SegmentTestBase::ClusterParser (edash_packager::media)   H264SEIMessage (edash_packager::media)   MpdNotifierFactory (edash_packager)   SegmentReference (edash_packager::media::mp4)   WebMAudioClient (edash_packager::media)   
CodecConfigurationRecord (edash_packager::media::mp4)   H264SEIRecoveryPoint (edash_packager::media)   MpdNotifyMuxerListener (edash_packager::media)   SegmentTestBase (edash_packager::media)   WebMClusterParser (edash_packager::media)   
CompactSampleSize (edash_packager::media::mp4)   H264SliceHeader (edash_packager::media)   MpdOptions (edash_packager)   SegmentType (edash_packager::media::mp4)   WebMContentEncodingsClient (edash_packager::media)   
CompositionOffset (edash_packager::media::mp4)   H264Sps (edash_packager::media)   MpdWriter (edash_packager)   SimpleMpdNotifier (edash_packager)   WebMInfoParser (edash_packager::media)   
CompositionOffsetIterator (edash_packager::media::mp4)   H264VideoSliceHeaderParser (edash_packager::media::mp4)   MultiSegmentSegmenter (edash_packager::media::webm)   SingleSegmentSegmenter (edash_packager::media::mp4)   WebMListParser (edash_packager::media)   
CompositionTimeToSample (edash_packager::media::mp4)   H264WeightingFactors (edash_packager::media)   MultiSegmentSegmenter (edash_packager::media::mp4)   SingleSegmentSegmenter (edash_packager::media::webm)   WebMMediaParser (edash_packager::media)   
ContentEncoding (edash_packager::media)   H265ByteToUnitStreamConverter (edash_packager::media)   MultiSegmentSegmenter (edash_packager::media::webm)   SoundMediaHeader (edash_packager::media::mp4)   WebMMuxer (edash_packager::media::webm)   
ContentProtectionElement (edash_packager)   H265Parser (edash_packager::media)   Muxer (edash_packager::media)   Status (edash_packager::media)   WebMParserClient (edash_packager::media)   
ContinuityCounter (edash_packager::media::mp2t)   H265Pps (edash_packager::media)   MuxerListener (edash_packager::media)   StreamDescriptor (edash_packager::media)   WebMTracksParser (edash_packager::media)   
Cue (edash_packager::media)   H265ReferencePictureListModifications (edash_packager::media)   MuxerOptions (edash_packager::media)   StreamDescriptorCompareFn (edash_packager::media)   WebMVideoClient (edash_packager::media)   
CueIDBox (edash_packager::media::mp4)   H265ReferencePictureSet (edash_packager::media)   
  N  
-
StreamInfo (edash_packager::media)   WebMWebVTTParser (edash_packager::media)   
CuePayloadBox (edash_packager::media::mp4)   H265SliceHeader (edash_packager::media)   SubsampleEntry (edash_packager::media)   WebVTTConfigurationBox (edash_packager::media::mp4)   
CueSettingsBox (edash_packager::media::mp4)   H265Sps (edash_packager::media)   Nalu (edash_packager::media)   SubtitleMediaHeader (edash_packager::media::mp4)   WebVttMediaParser (edash_packager::media)   
CueSourceIDBox (edash_packager::media::mp4)   H265VideoSliceHeaderParser (edash_packager::media::mp4)   NalUnitToByteStreamConverter (edash_packager::media)   SyncSample (edash_packager::media::mp4)   WebVTTSourceLabelBox (edash_packager::media::mp4)   
CueTimeBox (edash_packager::media::mp4)   H265VuiParameters (edash_packager::media)   NaluReader (edash_packager::media)   SyncSampleIterator (edash_packager::media::mp4)   WidevineKeySource (edash_packager::media)   
ContentEncoding (edash_packager::media)   H265ByteToUnitStreamConverter (edash_packager::media)   Muxer (edash_packager::media)   SoundMediaHeader (edash_packager::media::mp4)   WebMMuxer (edash_packager::media::webm)   
ContentProtectionElement (edash_packager)   H265Parser (edash_packager::media)   MuxerListener (edash_packager::media)   Status (edash_packager::media)   WebMParserClient (edash_packager::media)   
ContinuityCounter (edash_packager::media::mp2t)   H265Pps (edash_packager::media)   MuxerOptions (edash_packager::media)   StreamDescriptor (edash_packager::media)   WebMTracksParser (edash_packager::media)   
Cue (edash_packager::media)   H265ReferencePictureListModifications (edash_packager::media)   
  N  
+
StreamDescriptorCompareFn (edash_packager::media)   WebMVideoClient (edash_packager::media)   
CueIDBox (edash_packager::media::mp4)   H265ReferencePictureSet (edash_packager::media)   StreamInfo (edash_packager::media)   WebMWebVTTParser (edash_packager::media)   
CuePayloadBox (edash_packager::media::mp4)   H265SliceHeader (edash_packager::media)   Nalu (edash_packager::media)   SubsampleEntry (edash_packager::media)   WebVTTConfigurationBox (edash_packager::media::mp4)   
CueSettingsBox (edash_packager::media::mp4)   H265Sps (edash_packager::media)   NalUnitToByteStreamConverter (edash_packager::media)   SubtitleMediaHeader (edash_packager::media::mp4)   WebVttMediaParser (edash_packager::media)   
CueSourceIDBox (edash_packager::media::mp4)   H265VideoSliceHeaderParser (edash_packager::media::mp4)   NaluReader (edash_packager::media)   SyncSample (edash_packager::media::mp4)   WebVTTSourceLabelBox (edash_packager::media::mp4)   
CueTimeBox (edash_packager::media::mp4)   H265VuiParameters (edash_packager::media)   
  O  
+
SyncSampleIterator (edash_packager::media::mp4)   WidevineKeySource (edash_packager::media)   
  D  
-
H26xBitReader (edash_packager::media)   
  O  
-
  T  
+
H26xBitReader (edash_packager::media)   
  T  
WvmMediaParser (edash_packager::media::wvm)   
H26xByteToUnitStreamConverter (edash_packager::media)   
  X  
+
H26xByteToUnitStreamConverter (edash_packager::media)   OffsetByteQueue (edash_packager::media)   
  X  
DashIopMpdNotifier (edash_packager)   HandlerReference (edash_packager::media::mp4)   OffsetByteQueue (edash_packager::media)   TextSampleEntry (edash_packager::media::mp4)   
DataEntryUrl (edash_packager::media::mp4)   HEVCDecoderConfiguration (edash_packager::media)   OnMediaEndParameters (edash_packager::media)   TextStreamInfo (edash_packager::media)   XmlDeleter (edash_packager::xml)   
DashIopMpdNotifier (edash_packager)   HandlerReference (edash_packager::media::mp4)   OnMediaEndParameters (edash_packager::media)   TextSampleEntry (edash_packager::media::mp4)   
DataEntryUrl (edash_packager::media::mp4)   HEVCDecoderConfiguration (edash_packager::media)   OpusSpecific (edash_packager::media::mp4)   TextStreamInfo (edash_packager::media)   XmlDeleter (edash_packager::xml)   
DataInformation (edash_packager::media::mp4)   HlsNotifyMuxerListener (edash_packager::media)   OriginalFormat (edash_packager::media::mp4)   TextTrack (edash_packager::media)   XmlNode (edash_packager::xml)   
DataReference (edash_packager::media::mp4)   HttpKeyFetcher (edash_packager::media)   
  P  
TextTrackConfig (edash_packager::media)   
DecoderConfiguration (edash_packager::media)   
  I  
ThreadedIoFile (edash_packager::media)   
DecodingTime (edash_packager::media::mp4)   PesPacket (edash_packager::media::mp2t)   Track (edash_packager::media::mp4)   
DecodingTimeIterator (edash_packager::media::mp4)   ID3v2 (edash_packager::media::mp4)   PesPacketGenerator (edash_packager::media::mp2t)   TrackEncryption (edash_packager::media::mp4)   
ID3v2 (edash_packager::media::mp4)   
A | B | C | D | E | F | H | I | K | L | M | N | O | P | R | S | T | U | V | W | X
diff --git a/docs/d0/d03/classedash__packager_1_1media_1_1webm_1_1SingleSegmentSegmenter.html b/docs/d0/d03/classedash__packager_1_1media_1_1webm_1_1SingleSegmentSegmenter.html index 5ca0e56be3..508a656c0c 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 @@ -293,7 +293,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 1a73b115d5..388dafaee0 100644 --- a/docs/d0/d06/mpd__flags_8cc_source.html +++ b/docs/d0/d06/mpd__flags_8cc_source.html @@ -140,7 +140,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 03baf95fda..da7e3725ef 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 7990906e3e..bd1f93403a 100644 --- a/docs/d0/d0e/muxer__options_8h_source.html +++ b/docs/d0/d0e/muxer__options_8h_source.html @@ -155,7 +155,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 64ca8c7cc0..fc00e56759 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 871cf88864..73eeae55d6 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 7ace677dc0..37e298936c 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 1891780d06..f6302a986c 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/d2c/classedash__packager_1_1media_1_1H26xByteToUnitStreamConverter-members.html b/docs/d0/d2c/classedash__packager_1_1media_1_1H26xByteToUnitStreamConverter-members.html index fb9345e1a6..a53a0a2b94 100644 --- a/docs/d0/d2c/classedash__packager_1_1media_1_1H26xByteToUnitStreamConverter-members.html +++ b/docs/d0/d2c/classedash__packager_1_1media_1_1H26xByteToUnitStreamConverter-members.html @@ -101,7 +101,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 c5db5e26ab..79a5e9aa2e 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 7edb2f8d30..2b6077765e 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 2afce39acf..cb20cd114a 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 7e3106657e..dde25d637c 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 4ee1c174d7..9cd2625134 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/hls__notify__muxer__listener_8cc_source.html b/docs/d0/d3a/hls__notify__muxer__listener_8cc_source.html index a445c85a32..42c6d4de36 100644 --- a/docs/d0/d3a/hls__notify__muxer__listener_8cc_source.html +++ b/docs/d0/d3a/hls__notify__muxer__listener_8cc_source.html @@ -182,7 +182,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 dc8fbbe7af..a02f295a83 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/aes__cryptor_8h_source.html b/docs/d0/d42/aes__cryptor_8h_source.html index 62f7ad2e11..68df96a3bf 100644 --- a/docs/d0/d42/aes__cryptor_8h_source.html +++ b/docs/d0/d42/aes__cryptor_8h_source.html @@ -212,7 +212,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 017a9eba7d..8b50f9e284 100644 --- a/docs/d0/d42/widevine__encryption__flags_8cc_source.html +++ b/docs/d0/d42/widevine__encryption__flags_8cc_source.html @@ -262,7 +262,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 dd5e9a4aa9..63768f59b5 100644 --- a/docs/d0/d46/fourccs_8h_source.html +++ b/docs/d0/d46/fourccs_8h_source.html @@ -103,148 +103,152 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
14  FOURCC_NULL = 0,
15 
16  FOURCC_ID32 = 0x49443332,
-
17  FOURCC_PRIV = 0x50524956,
-
18 
-
19  FOURCC_aacd = 0x61616364,
-
20  FOURCC_ac_3 = 0x61632d33, // "ac-3"
-
21  FOURCC_apad = 0x61706164,
-
22  FOURCC_avc1 = 0x61766331,
-
23  FOURCC_avcC = 0x61766343,
-
24  FOURCC_bloc = 0x626C6F63,
-
25  FOURCC_cbc1 = 0x63626331,
-
26  FOURCC_cbcs = 0x63626373,
-
27  FOURCC_cenc = 0x63656e63,
-
28  FOURCC_cens = 0x63656e73,
-
29  FOURCC_co64 = 0x636f3634,
-
30  FOURCC_ctim = 0x6374696d,
-
31  FOURCC_ctts = 0x63747473,
-
32  FOURCC_dac3 = 0x64616333,
-
33  FOURCC_dash = 0x64617368,
-
34  FOURCC_ddts = 0x64647473,
-
35  FOURCC_dec3 = 0x64656333,
-
36  FOURCC_dinf = 0x64696e66,
-
37  FOURCC_dref = 0x64726566,
-
38  FOURCC_dtsc = 0x64747363,
-
39  FOURCC_dtse = 0x64747365,
-
40  FOURCC_dtsh = 0x64747368,
-
41  FOURCC_dtsl = 0x6474736c,
-
42  FOURCC_dtsm = 0x6474732d, // "dts-"
-
43  FOURCC_dtsp = 0x6474732b, // "dts+"
-
44  FOURCC_ec_3 = 0x65632d33, // "ec-3"
-
45  FOURCC_edts = 0x65647473,
-
46  FOURCC_elst = 0x656c7374,
-
47  FOURCC_enca = 0x656e6361,
-
48  FOURCC_encv = 0x656e6376,
-
49  FOURCC_esds = 0x65736473,
-
50  FOURCC_free = 0x66726565,
-
51  FOURCC_frma = 0x66726d61,
-
52  FOURCC_ftyp = 0x66747970,
-
53  FOURCC_hdlr = 0x68646c72,
-
54  FOURCC_hev1 = 0x68657631,
-
55  FOURCC_hint = 0x68696e74,
-
56  FOURCC_hvc1 = 0x68766331,
-
57  FOURCC_hvcC = 0x68766343,
-
58  FOURCC_iden = 0x6964656e,
-
59  FOURCC_iso6 = 0x69736f36,
-
60  FOURCC_iods = 0x696f6473,
-
61  FOURCC_mdat = 0x6d646174,
-
62  FOURCC_mdhd = 0x6d646864,
-
63  FOURCC_mdia = 0x6d646961,
-
64  FOURCC_meco = 0x6d65636f,
-
65  FOURCC_mehd = 0x6d656864,
-
66  FOURCC_meta = 0x6d657461,
-
67  FOURCC_mfhd = 0x6d666864,
-
68  FOURCC_mfra = 0x6d667261,
-
69  FOURCC_minf = 0x6d696e66,
-
70  FOURCC_moof = 0x6d6f6f66,
-
71  FOURCC_moov = 0x6d6f6f76,
-
72  FOURCC_mp41 = 0x6d703431,
-
73  FOURCC_mp4a = 0x6d703461,
-
74  FOURCC_mp4v = 0x6d703476,
-
75  FOURCC_mvex = 0x6d766578,
-
76  FOURCC_mvhd = 0x6d766864,
-
77  FOURCC_pasp = 0x70617370,
-
78  FOURCC_payl = 0x7061796c,
-
79  FOURCC_pdin = 0x7064696e,
-
80  FOURCC_prft = 0x70726674,
-
81  FOURCC_pssh = 0x70737368,
-
82  FOURCC_saio = 0x7361696f,
-
83  FOURCC_saiz = 0x7361697a,
-
84  FOURCC_sbgp = 0x73626770,
-
85  FOURCC_schi = 0x73636869,
-
86  FOURCC_schm = 0x7363686d,
-
87  FOURCC_sdtp = 0x73647470,
-
88  FOURCC_seig = 0x73656967,
-
89  FOURCC_senc = 0x73656e63,
-
90  FOURCC_sgpd = 0x73677064,
-
91  FOURCC_sidx = 0x73696478,
-
92  FOURCC_sinf = 0x73696e66,
-
93  FOURCC_skip = 0x736b6970,
-
94  FOURCC_smhd = 0x736d6864,
-
95  FOURCC_soun = 0x736f756e,
-
96  FOURCC_ssix = 0x73736978,
-
97  FOURCC_stbl = 0x7374626c,
-
98  FOURCC_stco = 0x7374636f,
-
99  FOURCC_sthd = 0x73746864,
-
100  FOURCC_stsc = 0x73747363,
-
101  FOURCC_stsd = 0x73747364,
-
102  FOURCC_stss = 0x73747373,
-
103  FOURCC_stsz = 0x7374737a,
-
104  FOURCC_sttg = 0x73747467,
-
105  FOURCC_stts = 0x73747473,
-
106  FOURCC_styp = 0x73747970,
-
107  FOURCC_stz2 = 0x73747a32,
-
108  FOURCC_subt = 0x73756274,
-
109  FOURCC_tenc = 0x74656e63,
-
110  FOURCC_text = 0x74657874,
-
111  FOURCC_tfdt = 0x74666474,
-
112  FOURCC_tfhd = 0x74666864,
-
113  FOURCC_tkhd = 0x746b6864,
-
114  FOURCC_traf = 0x74726166,
-
115  FOURCC_trak = 0x7472616b,
-
116  FOURCC_trex = 0x74726578,
-
117  FOURCC_trun = 0x7472756e,
-
118  FOURCC_udta = 0x75647461,
-
119  FOURCC_url = 0x75726c20, // "url "
-
120  FOURCC_urn = 0x75726e20, // "urn "
-
121  FOURCC_uuid = 0x75756964,
-
122  FOURCC_vide = 0x76696465,
-
123  FOURCC_vlab = 0x766c6162,
-
124  FOURCC_vmhd = 0x766d6864,
-
125  FOURCC_vp08 = 0x76703038,
-
126  FOURCC_vp09 = 0x76703039,
-
127  FOURCC_vp10 = 0x76703130,
-
128  FOURCC_vpcC = 0x76706343,
-
129  FOURCC_vsid = 0x76736964,
-
130  FOURCC_vttC = 0x76747443,
-
131  FOURCC_vtta = 0x76747461,
-
132  FOURCC_vttc = 0x76747463,
-
133  FOURCC_vtte = 0x76747465,
-
134  FOURCC_wide = 0x77696465,
-
135  FOURCC_wvtt = 0x77767474,
-
136  FOURCC_zaac = 0x7A616163,
-
137  FOURCC_zach = 0x7A616368,
-
138  FOURCC_zacp = 0x7A616370,
-
139 };
-
140 
-
141 const inline std::string FourCCToString(FourCC fourcc) {
-
142  char buf[5];
-
143  buf[0] = (fourcc >> 24) & 0xff;
-
144  buf[1] = (fourcc >> 16) & 0xff;
-
145  buf[2] = (fourcc >> 8) & 0xff;
-
146  buf[3] = (fourcc) & 0xff;
-
147  buf[4] = 0;
-
148  return std::string(buf);
-
149 }
-
150 
-
151 } // namespace media
-
152 } // namespace edash_packager
-
153 
-
154 #endif // PACKAGER_MEDIA_BASE_FOURCCS_H_
+
17  FOURCC_Head = 0x48656164,
+
18  FOURCC_Opus = 0x4f707573,
+
19  FOURCC_PRIV = 0x50524956,
+
20 
+
21  FOURCC_aacd = 0x61616364,
+
22  FOURCC_ac_3 = 0x61632d33, // "ac-3"
+
23  FOURCC_apad = 0x61706164,
+
24  FOURCC_avc1 = 0x61766331,
+
25  FOURCC_avcC = 0x61766343,
+
26  FOURCC_bloc = 0x626C6F63,
+
27  FOURCC_cbc1 = 0x63626331,
+
28  FOURCC_cbcs = 0x63626373,
+
29  FOURCC_cenc = 0x63656e63,
+
30  FOURCC_cens = 0x63656e73,
+
31  FOURCC_co64 = 0x636f3634,
+
32  FOURCC_ctim = 0x6374696d,
+
33  FOURCC_ctts = 0x63747473,
+
34  FOURCC_dOps = 0x644f7073,
+
35  FOURCC_dac3 = 0x64616333,
+
36  FOURCC_dash = 0x64617368,
+
37  FOURCC_ddts = 0x64647473,
+
38  FOURCC_dec3 = 0x64656333,
+
39  FOURCC_dinf = 0x64696e66,
+
40  FOURCC_dref = 0x64726566,
+
41  FOURCC_dtsc = 0x64747363,
+
42  FOURCC_dtse = 0x64747365,
+
43  FOURCC_dtsh = 0x64747368,
+
44  FOURCC_dtsl = 0x6474736c,
+
45  FOURCC_dtsm = 0x6474732d, // "dts-"
+
46  FOURCC_dtsp = 0x6474732b, // "dts+"
+
47  FOURCC_ec_3 = 0x65632d33, // "ec-3"
+
48  FOURCC_edts = 0x65647473,
+
49  FOURCC_elst = 0x656c7374,
+
50  FOURCC_enca = 0x656e6361,
+
51  FOURCC_encv = 0x656e6376,
+
52  FOURCC_esds = 0x65736473,
+
53  FOURCC_free = 0x66726565,
+
54  FOURCC_frma = 0x66726d61,
+
55  FOURCC_ftyp = 0x66747970,
+
56  FOURCC_hdlr = 0x68646c72,
+
57  FOURCC_hev1 = 0x68657631,
+
58  FOURCC_hint = 0x68696e74,
+
59  FOURCC_hvc1 = 0x68766331,
+
60  FOURCC_hvcC = 0x68766343,
+
61  FOURCC_iden = 0x6964656e,
+
62  FOURCC_iso6 = 0x69736f36,
+
63  FOURCC_iods = 0x696f6473,
+
64  FOURCC_mdat = 0x6d646174,
+
65  FOURCC_mdhd = 0x6d646864,
+
66  FOURCC_mdia = 0x6d646961,
+
67  FOURCC_meco = 0x6d65636f,
+
68  FOURCC_mehd = 0x6d656864,
+
69  FOURCC_meta = 0x6d657461,
+
70  FOURCC_mfhd = 0x6d666864,
+
71  FOURCC_mfra = 0x6d667261,
+
72  FOURCC_minf = 0x6d696e66,
+
73  FOURCC_moof = 0x6d6f6f66,
+
74  FOURCC_moov = 0x6d6f6f76,
+
75  FOURCC_mp41 = 0x6d703431,
+
76  FOURCC_mp4a = 0x6d703461,
+
77  FOURCC_mp4v = 0x6d703476,
+
78  FOURCC_mvex = 0x6d766578,
+
79  FOURCC_mvhd = 0x6d766864,
+
80  FOURCC_pasp = 0x70617370,
+
81  FOURCC_payl = 0x7061796c,
+
82  FOURCC_pdin = 0x7064696e,
+
83  FOURCC_prft = 0x70726674,
+
84  FOURCC_pssh = 0x70737368,
+
85  FOURCC_roll = 0x726f6c6c,
+
86  FOURCC_saio = 0x7361696f,
+
87  FOURCC_saiz = 0x7361697a,
+
88  FOURCC_sbgp = 0x73626770,
+
89  FOURCC_schi = 0x73636869,
+
90  FOURCC_schm = 0x7363686d,
+
91  FOURCC_sdtp = 0x73647470,
+
92  FOURCC_seig = 0x73656967,
+
93  FOURCC_senc = 0x73656e63,
+
94  FOURCC_sgpd = 0x73677064,
+
95  FOURCC_sidx = 0x73696478,
+
96  FOURCC_sinf = 0x73696e66,
+
97  FOURCC_skip = 0x736b6970,
+
98  FOURCC_smhd = 0x736d6864,
+
99  FOURCC_soun = 0x736f756e,
+
100  FOURCC_ssix = 0x73736978,
+
101  FOURCC_stbl = 0x7374626c,
+
102  FOURCC_stco = 0x7374636f,
+
103  FOURCC_sthd = 0x73746864,
+
104  FOURCC_stsc = 0x73747363,
+
105  FOURCC_stsd = 0x73747364,
+
106  FOURCC_stss = 0x73747373,
+
107  FOURCC_stsz = 0x7374737a,
+
108  FOURCC_sttg = 0x73747467,
+
109  FOURCC_stts = 0x73747473,
+
110  FOURCC_styp = 0x73747970,
+
111  FOURCC_stz2 = 0x73747a32,
+
112  FOURCC_subt = 0x73756274,
+
113  FOURCC_tenc = 0x74656e63,
+
114  FOURCC_text = 0x74657874,
+
115  FOURCC_tfdt = 0x74666474,
+
116  FOURCC_tfhd = 0x74666864,
+
117  FOURCC_tkhd = 0x746b6864,
+
118  FOURCC_traf = 0x74726166,
+
119  FOURCC_trak = 0x7472616b,
+
120  FOURCC_trex = 0x74726578,
+
121  FOURCC_trun = 0x7472756e,
+
122  FOURCC_udta = 0x75647461,
+
123  FOURCC_url = 0x75726c20, // "url "
+
124  FOURCC_urn = 0x75726e20, // "urn "
+
125  FOURCC_uuid = 0x75756964,
+
126  FOURCC_vide = 0x76696465,
+
127  FOURCC_vlab = 0x766c6162,
+
128  FOURCC_vmhd = 0x766d6864,
+
129  FOURCC_vp08 = 0x76703038,
+
130  FOURCC_vp09 = 0x76703039,
+
131  FOURCC_vp10 = 0x76703130,
+
132  FOURCC_vpcC = 0x76706343,
+
133  FOURCC_vsid = 0x76736964,
+
134  FOURCC_vttC = 0x76747443,
+
135  FOURCC_vtta = 0x76747461,
+
136  FOURCC_vttc = 0x76747463,
+
137  FOURCC_vtte = 0x76747465,
+
138  FOURCC_wide = 0x77696465,
+
139  FOURCC_wvtt = 0x77767474,
+
140  FOURCC_zaac = 0x7A616163,
+
141  FOURCC_zach = 0x7A616368,
+
142  FOURCC_zacp = 0x7A616370,
+
143 };
+
144 
+
145 const inline std::string FourCCToString(FourCC fourcc) {
+
146  char buf[5];
+
147  buf[0] = (fourcc >> 24) & 0xff;
+
148  buf[1] = (fourcc >> 16) & 0xff;
+
149  buf[2] = (fourcc >> 8) & 0xff;
+
150  buf[3] = (fourcc) & 0xff;
+
151  buf[4] = 0;
+
152  return std::string(buf);
+
153 }
+
154 
+
155 } // namespace media
+
156 } // namespace edash_packager
+
157 
+
158 #endif // PACKAGER_MEDIA_BASE_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 c3788d2cc9..2465018def 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 94f8b5e6a6..510ce09579 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 fc4117274a..2e60daffab 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 c042d3f3d3..fd53ffea3c 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/d53/classedash__packager_1_1media_1_1AesPatternCryptor-members.html b/docs/d0/d53/classedash__packager_1_1media_1_1AesPatternCryptor-members.html index ee0cd3057e..aa42df27a9 100644 --- a/docs/d0/d53/classedash__packager_1_1media_1_1AesPatternCryptor-members.html +++ b/docs/d0/d53/classedash__packager_1_1media_1_1AesPatternCryptor-members.html @@ -117,7 +117,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 19115268b9..3d7c4d2427 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 9b5b9b0095..fa99af4adc 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 1435 of file box_definitions.cc.

+

Definition at line 1631 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 4e2dd7ac34..86d462ade8 100644 --- a/docs/d0/d7d/classedash__packager_1_1media_1_1H264Parser-members.html +++ b/docs/d0/d7d/classedash__packager_1_1media_1_1H264Parser-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d7d/decryptor__source_8h_source.html b/docs/d0/d7d/decryptor__source_8h_source.html index 4a97f68164..568c3ccea7 100644 --- a/docs/d0/d7d/decryptor__source_8h_source.html +++ b/docs/d0/d7d/decryptor__source_8h_source.html @@ -133,7 +133,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d86/classedash__packager_1_1media_1_1FixedKeySource.html b/docs/d0/d86/classedash__packager_1_1media_1_1FixedKeySource.html index beaac9856b..27495f1345 100644 --- a/docs/d0/d86/classedash__packager_1_1media_1_1FixedKeySource.html +++ b/docs/d0/d86/classedash__packager_1_1media_1_1FixedKeySource.html @@ -479,7 +479,7 @@ Additional Inherited Members 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 6b2f059d0d..54181eb597 100644 --- a/docs/d0/d86/structedash__packager_1_1media_1_1EncryptionKey.html +++ b/docs/d0/d86/structedash__packager_1_1media_1_1EncryptionKey.html @@ -120,7 +120,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 7a111dabbe..104539490e 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 586 of file box_definitions.h.

+

Definition at line 658 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 1941 of file box_definitions.cc.

+

Definition at line 2189 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 f3812ba67f..296977f3d8 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 @@ -104,8 +104,10 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); HeaderSize() const edash_packager::media::mp4::Boxvirtual Parse(BoxReader *reader)edash_packager::media::mp4::Box ReadWriteHeaderInternal(BoxBuffer *buffer)edash_packager::media::mp4::Boxprotectedvirtual - sample_size (defined in edash_packager::media::mp4::SampleTable)edash_packager::media::mp4::SampleTable - sample_to_chunk (defined in edash_packager::media::mp4::SampleTable)edash_packager::media::mp4::SampleTable + sample_group_descriptions (defined in edash_packager::media::mp4::SampleTable)edash_packager::media::mp4::SampleTable + sample_size (defined in edash_packager::media::mp4::SampleTable)edash_packager::media::mp4::SampleTable + sample_to_chunk (defined in edash_packager::media::mp4::SampleTable)edash_packager::media::mp4::SampleTable + sample_to_groups (defined in edash_packager::media::mp4::SampleTable)edash_packager::media::mp4::SampleTable SampleTable() (defined in edash_packager::media::mp4::SampleTable)edash_packager::media::mp4::SampleTable sync_sample (defined in edash_packager::media::mp4::SampleTable)edash_packager::media::mp4::SampleTable Write(BufferWriter *writer)edash_packager::media::mp4::Box @@ -115,7 +117,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 2f21e0e204..f7c8bf35b9 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 e7e9b44b25..1896c3217b 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 560b8e0045..9390da662c 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 28b2dc5919..b6bc2316a1 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 04855524e8..67166ff436 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 5b1c6b323c..5e2a1f57c5 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 @@ -117,7 +117,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 3bd7c7a82a..f59ba921b6 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 f2e6d5e91e..8372729fe8 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 1402 of file box_definitions.cc.

+

Definition at line 1598 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 5cf832daa8..7e30341616 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 2f53553ccc..dfe365e3b7 100644 --- a/docs/d0/dd4/structedash__packager_1_1media_1_1SubsampleEntry-members.html +++ b/docs/d0/dd4/structedash__packager_1_1media_1_1SubsampleEntry-members.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/dd6/webm__crypto__helpers_8cc_source.html b/docs/d0/dd6/webm__crypto__helpers_8cc_source.html index 57f26d6e87..d319c61591 100644 --- a/docs/d0/dd6/webm__crypto__helpers_8cc_source.html +++ b/docs/d0/dd6/webm__crypto__helpers_8cc_source.html @@ -156,7 +156,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 45b58961ee..8da6e9ce02 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 19f65602d2..73d50fdc50 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 0b24985814..7272df031c 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_1HlsNotifyMuxerListener-members.html b/docs/d0/de6/classedash__packager_1_1media_1_1HlsNotifyMuxerListener-members.html index f5e6650902..9dacf18c41 100644 --- a/docs/d0/de6/classedash__packager_1_1media_1_1HlsNotifyMuxerListener-members.html +++ b/docs/d0/de6/classedash__packager_1_1media_1_1HlsNotifyMuxerListener-members.html @@ -110,7 +110,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 ffb544df1d..abd65da689 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 67fc9ef0d7..ef8ff32137 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 12e55a30fd..568c281141 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 @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/dee/segmenter__test__base_8h_source.html b/docs/d0/dee/segmenter__test__base_8h_source.html index 5f3ef15c55..33ec0eed7c 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 de775809fe..131f9aaecf 100644 --- a/docs/d0/df3/packager__util_8cc_source.html +++ b/docs/d0/df3/packager__util_8cc_source.html @@ -332,7 +332,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 1dfbc12288..bace586b29 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 a0586356eb..538f3d74c8 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 be1c2f41ba..f62898e10e 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 76ff22f27d..95b1d4af4e 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 bd2fbae54d..303e1bc772 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 cee4dbbfba..5ebb59a842 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 95bdce7920..b58fbf10e5 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 c109b7df78..fff569691e 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 081f97e2f4..8e42c58da8 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 c3579a36bb..a43d7d3b33 100644 --- a/docs/d1/d28/classedash__packager_1_1media_1_1mp4_1_1SyncSampleIterator-members.html +++ b/docs/d1/d28/classedash__packager_1_1media_1_1mp4_1_1SyncSampleIterator-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d2a/decryptor__source_8cc_source.html b/docs/d1/d2a/decryptor__source_8cc_source.html index 2c587ad08b..e4e3be67ae 100644 --- a/docs/d1/d2a/decryptor__source_8cc_source.html +++ b/docs/d1/d2a/decryptor__source_8cc_source.html @@ -209,7 +209,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 ba95b35415..0cdf7ad6ae 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 17e77cb361..bba3cb5c50 100644 --- a/docs/d1/d2f/webvtt__media__parser_8cc_source.html +++ b/docs/d1/d2f/webvtt__media__parser_8cc_source.html @@ -491,7 +491,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d31/structedash__packager_1_1media_1_1mp4_1_1CodecConfigurationRecord.html b/docs/d1/d31/structedash__packager_1_1media_1_1mp4_1_1CodecConfigurationRecord.html index b595d32009..020e65a57f 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 1225 of file box_definitions.cc.

+

Definition at line 1421 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 5de922e4db..050a5c79d6 100644 --- a/docs/d1/d37/es__parser__h264_8h_source.html +++ b/docs/d1/d37/es__parser__h264_8h_source.html @@ -153,7 +153,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 3d7d27fa28..e7bbb84c43 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 e0eaea5d29..03605c54ff 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 2f7d5adedf..e36b4085ed 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 96d1abff0b..c81bef1bf9 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 19766e7527..0583cb655e 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/d5d/structedash__packager_1_1MpdOptions.html b/docs/d1/d5d/structedash__packager_1_1MpdOptions.html index a2bc44fb4b..fecf50eadb 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 4962ac0bdd..8d01569c51 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 658 of file box_definitions.h.

+

Definition at line 524 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 2152 of file box_definitions.cc.

+

Definition at line 1070 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 8080b93610..625bbfe607 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 8aff9da3d2..c6f4b32e98 100644 --- a/docs/d1/d72/language__utils_8cc_source.html +++ b/docs/d1/d72/language__utils_8cc_source.html @@ -226,7 +226,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 ebe1324119..3d5103780e 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 @@ -103,23 +103,24 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); 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 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 + dops (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 0fff44e096..329026bee5 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 df8dc8379f..9d57d1b3fa 100644 --- a/docs/d1/d74/mp2t__media__parser_8cc_source.html +++ b/docs/d1/d74/mp2t__media__parser_8cc_source.html @@ -539,7 +539,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 4d5ecd6050..d622d4f359 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 3a3084dcf0..fe8c1753f2 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 @@ -179,7 +179,7 @@ FourCC protection_scheme diff --git a/docs/d1/d7d/webm__video__client_8cc_source.html b/docs/d1/d7d/webm__video__client_8cc_source.html index 7e755c6be6..9a460a6c3b 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 fcf1e15ad9..b1154290f3 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 afaadec953..481265ba9f 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 733 of file box_definitions.h.

+

Definition at line 764 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 2384 of file box_definitions.cc.

+

Definition at line 2480 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 1f704cdd76..a535f6587d 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 1fbd599c7d..65c774418d 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 fb1b374f77..3948407da3 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 502 of file box_definitions.h.

+

Definition at line 574 of file box_definitions.h.

Member Function Documentation

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

-

Definition at line 1664 of file box_definitions.cc.

+

Definition at line 1912 of file box_definitions.cc.

@@ -175,7 +175,7 @@ uint32_t flags diff --git a/docs/d1/d8a/structedash__packager_1_1media_1_1mp4_1_1OpusSpecific.html b/docs/d1/d8a/structedash__packager_1_1media_1_1mp4_1_1OpusSpecific.html new file mode 100644 index 0000000000..78b755c27e --- /dev/null +++ b/docs/d1/d8a/structedash__packager_1_1media_1_1mp4_1_1OpusSpecific.html @@ -0,0 +1,184 @@ + + + + + + +DASH Media Packaging SDK: edash_packager::media::mp4::OpusSpecific Struct Reference + + + + + + + + + +
+
+ + + + + + +
+
DASH Media Packaging SDK +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
edash_packager::media::mp4::OpusSpecific Struct Reference
+
+
+
+Inheritance diagram for edash_packager::media::mp4::OpusSpecific:
+
+
+ + +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 > opus_identification_header
 
+uint16_t preskip
 
+ + + + +

+Additional Inherited Members

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

Detailed Description

+
+

Definition at line 329 of file box_definitions.h.

+

Member Function Documentation

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

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

+ +

Definition at line 1669 of file box_definitions.cc.

+ +
+
+
The documentation for this struct was generated from the following files: +
+ + + + diff --git a/docs/d1/d8a/structedash__packager_1_1media_1_1mp4_1_1OpusSpecific.png b/docs/d1/d8a/structedash__packager_1_1media_1_1mp4_1_1OpusSpecific.png new file mode 100644 index 0000000000..55d744e877 Binary files /dev/null and b/docs/d1/d8a/structedash__packager_1_1media_1_1mp4_1_1OpusSpecific.png differ 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 cbbe3a793b..6637dbb44c 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 a28a2810b0..2f2eb47168 100644 --- a/docs/d1/d8e/webm__audio__client_8cc_source.html +++ b/docs/d1/d8e/webm__audio__client_8cc_source.html @@ -117,101 +117,104 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
28  output_samples_per_second_ = -1;
29 }
30 
-
31 scoped_refptr<AudioStreamInfo> WebMAudioClient::GetAudioStreamInfo(
+
31 scoped_refptr<AudioStreamInfo> WebMAudioClient::GetAudioStreamInfo(
32  int64_t track_num,
33  const std::string& codec_id,
34  const std::vector<uint8_t>& codec_private,
-
35  const std::string& language,
-
36  bool is_encrypted) {
-
37  AudioCodec audio_codec = kUnknownAudioCodec;
-
38  if (codec_id == "A_VORBIS") {
-
39  audio_codec = kCodecVorbis;
-
40  } else if (codec_id == "A_OPUS") {
-
41  audio_codec = kCodecOpus;
-
42  } else {
-
43  LOG(ERROR) << "Unsupported audio codec_id " << codec_id;
-
44  return scoped_refptr<AudioStreamInfo>();
-
45  }
-
46 
-
47  if (samples_per_second_ <= 0)
-
48  return scoped_refptr<AudioStreamInfo>();
-
49 
-
50  // Set channel layout default if a Channels element was not present.
-
51  if (channels_ == -1)
-
52  channels_ = 1;
-
53 
-
54  uint32_t sampling_frequency = samples_per_second_;
-
55  // Always use 48kHz for OPUS. See the "Input Sample Rate" section of the
-
56  // spec: http://tools.ietf.org/html/draft-terriberry-oggopus-01#page-11
-
57  if (audio_codec == kCodecOpus) {
-
58  sampling_frequency = 48000;
-
59  }
-
60 
-
61  const uint8_t* extra_data = NULL;
-
62  size_t extra_data_size = 0;
-
63  if (codec_private.size() > 0) {
-
64  extra_data = &codec_private[0];
-
65  extra_data_size = codec_private.size();
-
66  }
-
67 
-
68  const uint32_t kSampleSizeInBits = 4u;
-
69  return scoped_refptr<AudioStreamInfo>(new AudioStreamInfo(
-
70  track_num, kWebMTimeScale, 0, audio_codec,
-
71  AudioStreamInfo::GetCodecString(audio_codec, 0), language,
-
72  kSampleSizeInBits, channels_, sampling_frequency, 0, 0, extra_data,
-
73  extra_data_size, is_encrypted));
-
74 }
-
75 
-
76 bool WebMAudioClient::OnUInt(int id, int64_t val) {
-
77  if (id == kWebMIdChannels) {
-
78  if (channels_ != -1) {
-
79  LOG(ERROR) << "Multiple values for id " << std::hex << id
-
80  << " specified. (" << channels_ << " and " << val << ")";
-
81  return false;
-
82  }
-
83 
-
84  channels_ = val;
-
85  }
-
86  return true;
-
87 }
-
88 
-
89 bool WebMAudioClient::OnFloat(int id, double val) {
-
90  double* dst = NULL;
+
35  int64_t seek_preroll,
+
36  int64_t codec_delay,
+
37  const std::string& language,
+
38  bool is_encrypted) {
+
39  AudioCodec audio_codec = kUnknownAudioCodec;
+
40  if (codec_id == "A_VORBIS") {
+
41  audio_codec = kCodecVorbis;
+
42  } else if (codec_id == "A_OPUS") {
+
43  audio_codec = kCodecOpus;
+
44  } else {
+
45  LOG(ERROR) << "Unsupported audio codec_id " << codec_id;
+
46  return scoped_refptr<AudioStreamInfo>();
+
47  }
+
48 
+
49  if (samples_per_second_ <= 0)
+
50  return scoped_refptr<AudioStreamInfo>();
+
51 
+
52  // Set channel layout default if a Channels element was not present.
+
53  if (channels_ == -1)
+
54  channels_ = 1;
+
55 
+
56  uint32_t sampling_frequency = samples_per_second_;
+
57  // Always use 48kHz for OPUS. See the "Input Sample Rate" section of the
+
58  // spec: http://tools.ietf.org/html/draft-terriberry-oggopus-01#page-11
+
59  if (audio_codec == kCodecOpus) {
+
60  sampling_frequency = 48000;
+
61  }
+
62 
+
63  const uint8_t* extra_data = NULL;
+
64  size_t extra_data_size = 0;
+
65  if (codec_private.size() > 0) {
+
66  extra_data = &codec_private[0];
+
67  extra_data_size = codec_private.size();
+
68  }
+
69 
+
70  const uint8_t kSampleSizeInBits = 16u;
+
71  return scoped_refptr<AudioStreamInfo>(new AudioStreamInfo(
+
72  track_num, kWebMTimeScale, 0, audio_codec,
+
73  AudioStreamInfo::GetCodecString(audio_codec, 0), language,
+
74  kSampleSizeInBits, channels_, sampling_frequency,
+
75  seek_preroll < 0 ? 0 : seek_preroll, codec_delay < 0 ? 0 : codec_delay, 0,
+
76  0, extra_data, extra_data_size, is_encrypted));
+
77 }
+
78 
+
79 bool WebMAudioClient::OnUInt(int id, int64_t val) {
+
80  if (id == kWebMIdChannels) {
+
81  if (channels_ != -1) {
+
82  LOG(ERROR) << "Multiple values for id " << std::hex << id
+
83  << " specified. (" << channels_ << " and " << val << ")";
+
84  return false;
+
85  }
+
86 
+
87  channels_ = val;
+
88  }
+
89  return true;
+
90 }
91 
-
92  switch (id) {
-
93  case kWebMIdSamplingFrequency:
-
94  dst = &samples_per_second_;
-
95  break;
-
96  case kWebMIdOutputSamplingFrequency:
-
97  dst = &output_samples_per_second_;
+
92 bool WebMAudioClient::OnFloat(int id, double val) {
+
93  double* dst = NULL;
+
94 
+
95  switch (id) {
+
96  case kWebMIdSamplingFrequency:
+
97  dst = &samples_per_second_;
98  break;
-
99  default:
-
100  return true;
-
101  }
-
102 
-
103  if (val <= 0)
-
104  return false;
+
99  case kWebMIdOutputSamplingFrequency:
+
100  dst = &output_samples_per_second_;
+
101  break;
+
102  default:
+
103  return true;
+
104  }
105 
-
106  if (*dst != -1) {
-
107  LOG(ERROR) << "Multiple values for id " << std::hex << id << " specified ("
-
108  << *dst << " and " << val << ")";
-
109  return false;
-
110  }
-
111 
-
112  *dst = val;
-
113  return true;
-
114 }
-
115 
-
116 } // namespace media
-
117 } // namespace edash_packager
+
106  if (val <= 0)
+
107  return false;
+
108 
+
109  if (*dst != -1) {
+
110  LOG(ERROR) << "Multiple values for id " << std::hex << id << " specified ("
+
111  << *dst << " and " << val << ")";
+
112  return false;
+
113  }
+
114 
+
115  *dst = val;
+
116  return true;
+
117 }
+
118 
+
119 } // namespace media
+
120 } // namespace edash_packager
Holds audio stream information.
+
scoped_refptr< AudioStreamInfo > GetAudioStreamInfo(int64_t track_num, const std::string &codec_id, const std::vector< uint8_t > &codec_private, int64_t seek_preroll, int64_t codec_delay, const std::string &language, bool is_encrypted)
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)
-
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)
+
static std::string GetCodecString(AudioCodec codec, uint8_t audio_object_type)
diff --git a/docs/d1/d91/structedash__packager_1_1media_1_1H265SliceHeader-members.html b/docs/d1/d91/structedash__packager_1_1media_1_1H265SliceHeader-members.html index 1bf8d33549..a0e6130847 100644 --- a/docs/d1/d91/structedash__packager_1_1media_1_1H265SliceHeader-members.html +++ b/docs/d1/d91/structedash__packager_1_1media_1_1H265SliceHeader-members.html @@ -139,7 +139,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d92/classedash__packager_1_1media_1_1OffsetByteQueue.html b/docs/d1/d92/classedash__packager_1_1media_1_1OffsetByteQueue.html index 08fda372e3..f32b44cead 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 0987fb8d92..598bd1c528 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/dc2/h26x__bit__reader_8h_source.html b/docs/d1/dc2/h26x__bit__reader_8h_source.html index 53656ae459..afe8bb62f4 100644 --- a/docs/d1/dc2/h26x__bit__reader_8h_source.html +++ b/docs/d1/dc2/h26x__bit__reader_8h_source.html @@ -192,7 +192,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 bb6a19282c..d161958fc3 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/dc4/classedash__packager_1_1media_1_1mp4_1_1H265VideoSliceHeaderParser-members.html b/docs/d1/dc4/classedash__packager_1_1media_1_1mp4_1_1H265VideoSliceHeaderParser-members.html index 161f4e6f8f..be40879af5 100644 --- a/docs/d1/dc4/classedash__packager_1_1media_1_1mp4_1_1H265VideoSliceHeaderParser-members.html +++ b/docs/d1/dc4/classedash__packager_1_1media_1_1mp4_1_1H265VideoSliceHeaderParser-members.html @@ -102,7 +102,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 49a35cbced..af12fa6eaf 100644 --- a/docs/d1/dcb/encrypting__fragmenter_8h_source.html +++ b/docs/d1/dcb/encrypting__fragmenter_8h_source.html @@ -114,69 +114,69 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
25 
28  public:
-
39  EncryptingFragmenter(scoped_refptr<StreamInfo> info,
-
40  TrackFragment* traf,
-
41  scoped_ptr<EncryptionKey> encryption_key,
-
42  int64_t clear_time,
-
43  FourCC protection_scheme,
-
44  uint8_t crypt_byte_block,
-
45  uint8_t skip_byte_block);
-
46 
-
47  ~EncryptingFragmenter() override;
-
48 
-
51  Status AddSample(scoped_refptr<MediaSample> sample) override;
-
52  Status InitializeFragment(int64_t first_sample_dts) override;
-
53  void FinalizeFragment() override;
-
55 
-
56  protected:
-
59  virtual Status PrepareFragmentForEncryption(bool enable_encryption);
-
61  virtual void FinalizeFragmentForEncryption();
-
62 
- -
67 
-
68  const EncryptionKey* encryption_key() const { return encryption_key_.get(); }
-
69  AesCryptor* encryptor() { return encryptor_.get(); }
-
70  FourCC protection_scheme() const { return protection_scheme_; }
-
71  uint8_t crypt_byte_block() const { return crypt_byte_block_; }
-
72  uint8_t skip_byte_block() const { return skip_byte_block_; }
-
73 
-
74  void set_encryption_key(scoped_ptr<EncryptionKey> encryption_key) {
-
75  encryption_key_ = encryption_key.Pass();
-
76  }
-
77 
-
78  private:
-
79  void EncryptBytes(uint8_t* data, uint32_t size);
-
80  Status EncryptSample(scoped_refptr<MediaSample> sample);
-
81 
-
82  // Should we enable subsample encryption?
-
83  bool IsSubsampleEncryptionRequired();
-
84 
-
85  scoped_refptr<StreamInfo> info_;
-
86  scoped_ptr<EncryptionKey> encryption_key_;
-
87  scoped_ptr<AesCryptor> encryptor_;
-
88  // If this stream contains AVC, subsample encryption specifies that the size
-
89  // and type of NAL units remain unencrypted. This function returns the size of
-
90  // the size field in bytes. Can be 1, 2 or 4 bytes.
-
91  const uint8_t nalu_length_size_;
-
92  const VideoCodec video_codec_;
-
93  int64_t clear_time_;
-
94  const FourCC protection_scheme_;
-
95  const uint8_t crypt_byte_block_;
-
96  const uint8_t skip_byte_block_;
-
97 
-
98  scoped_ptr<VPxParser> vpx_parser_;
-
99  scoped_ptr<VideoSliceHeaderParser> header_parser_;
-
100 
-
101  DISALLOW_COPY_AND_ASSIGN(EncryptingFragmenter);
-
102 };
-
103 
-
104 } // namespace mp4
-
105 } // namespace media
-
106 } // namespace edash_packager
-
107 
-
108 #endif // MEDIA_FORMATS_MP4_ENCRYPTING_FRAGMENTER_H_
+
40  EncryptingFragmenter(scoped_refptr<StreamInfo> info,
+
41  TrackFragment* traf,
+
42  scoped_ptr<EncryptionKey> encryption_key,
+
43  int64_t clear_time,
+
44  FourCC protection_scheme,
+
45  uint8_t crypt_byte_block,
+
46  uint8_t skip_byte_block);
+
47 
+
48  ~EncryptingFragmenter() override;
+
49 
+
52  Status AddSample(scoped_refptr<MediaSample> sample) override;
+
53  Status InitializeFragment(int64_t first_sample_dts) override;
+
54  void FinalizeFragment() override;
+
56 
+
57  protected:
+
60  virtual Status PrepareFragmentForEncryption(bool enable_encryption);
+
62  virtual void FinalizeFragmentForEncryption();
+
63 
+ +
68 
+
69  const EncryptionKey* encryption_key() const { return encryption_key_.get(); }
+
70  AesCryptor* encryptor() { return encryptor_.get(); }
+
71  FourCC protection_scheme() const { return protection_scheme_; }
+
72  uint8_t crypt_byte_block() const { return crypt_byte_block_; }
+
73  uint8_t skip_byte_block() const { return skip_byte_block_; }
+
74 
+
75  void set_encryption_key(scoped_ptr<EncryptionKey> encryption_key) {
+
76  encryption_key_ = encryption_key.Pass();
+
77  }
+
78 
+
79  private:
+
80  void EncryptBytes(uint8_t* data, uint32_t size);
+
81  Status EncryptSample(scoped_refptr<MediaSample> sample);
+
82 
+
83  // Should we enable subsample encryption?
+
84  bool IsSubsampleEncryptionRequired();
+
85 
+
86  scoped_refptr<StreamInfo> info_;
+
87  scoped_ptr<EncryptionKey> encryption_key_;
+
88  scoped_ptr<AesCryptor> encryptor_;
+
89  // If this stream contains AVC, subsample encryption specifies that the size
+
90  // and type of NAL units remain unencrypted. This function returns the size of
+
91  // the size field in bytes. Can be 1, 2 or 4 bytes.
+
92  const uint8_t nalu_length_size_;
+
93  const VideoCodec video_codec_;
+
94  int64_t clear_time_;
+
95  const FourCC protection_scheme_;
+
96  const uint8_t crypt_byte_block_;
+
97  const uint8_t skip_byte_block_;
+
98 
+
99  scoped_ptr<VPxParser> vpx_parser_;
+
100  scoped_ptr<VideoSliceHeaderParser> header_parser_;
+
101 
+
102  DISALLOW_COPY_AND_ASSIGN(EncryptingFragmenter);
+
103 };
+
104 
+
105 } // namespace mp4
+
106 } // namespace media
+
107 } // namespace edash_packager
+
108 
+
109 #endif // MEDIA_FORMATS_MP4_ENCRYPTING_FRAGMENTER_H_
- +
EncryptingFragmenter generates MP4 fragments with sample encrypted.
@@ -184,14 +184,14 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
Status InitializeFragment(int64_t first_sample_dts) override
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.
EncryptingFragmenter(scoped_refptr< StreamInfo > info, TrackFragment *traf, scoped_ptr< EncryptionKey > encryption_key, int64_t clear_time, FourCC protection_scheme, uint8_t crypt_byte_block, uint8_t skip_byte_block)
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 8d03e5cdf4..1879a06960 100644 --- a/docs/d1/dcd/structedash__packager_1_1media_1_1mp4_1_1FileType.html +++ b/docs/d1/dcd/structedash__packager_1_1media_1_1mp4_1_1FileType.html @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/d1/dd0/classedash__packager_1_1media_1_1mp4_1_1VideoSliceHeaderParser.html b/docs/d1/dd0/classedash__packager_1_1media_1_1mp4_1_1VideoSliceHeaderParser.html index 74d7e022b3..bfae8af022 100644 --- a/docs/d1/dd0/classedash__packager_1_1media_1_1mp4_1_1VideoSliceHeaderParser.html +++ b/docs/d1/dd0/classedash__packager_1_1media_1_1mp4_1_1VideoSliceHeaderParser.html @@ -150,7 +150,7 @@ virtual int64_t  diff --git a/docs/d1/dd0/structedash__packager_1_1media_1_1mp4_1_1SampleToGroup-members.html b/docs/d1/dd0/structedash__packager_1_1media_1_1mp4_1_1SampleToGroup-members.html index baad4b1285..24b71e1847 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 2300cf55bd..981eb0d956 100644 --- a/docs/d1/dd5/classedash__packager_1_1xml_1_1RepresentationBaseXmlNode.html +++ b/docs/d1/dd5/classedash__packager_1_1xml_1_1RepresentationBaseXmlNode.html @@ -156,7 +156,7 @@ Protected Member Functions diff --git a/docs/d1/ddb/structedash__packager_1_1media_1_1mp4_1_1TextSampleEntry-members.html b/docs/d1/ddb/structedash__packager_1_1media_1_1mp4_1_1TextSampleEntry-members.html index c028473b83..6bdf3435e9 100644 --- a/docs/d1/ddb/structedash__packager_1_1media_1_1mp4_1_1TextSampleEntry-members.html +++ b/docs/d1/ddb/structedash__packager_1_1media_1_1mp4_1_1TextSampleEntry-members.html @@ -112,7 +112,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/ddc/classedash__packager_1_1media_1_1VP9Parser-members.html b/docs/d1/ddc/classedash__packager_1_1media_1_1VP9Parser-members.html index 385583b3a5..17acc13b1c 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 b530291683..ed8dfd5c6f 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 c6eafa7907..933574b291 100644 --- a/docs/d1/df0/aes__encryptor_8h_source.html +++ b/docs/d1/df0/aes__encryptor_8h_source.html @@ -195,7 +195,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 137393ca3a..9ff7430219 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 765 of file box_definitions.h.

+

Definition at line 796 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 2505 of file box_definitions.cc.

+

Definition at line 2601 of file box_definitions.cc.

@@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d1/df5/nalu__reader_8cc_source.html b/docs/d1/df5/nalu__reader_8cc_source.html index a26eeb9ef6..63f7907962 100644 --- a/docs/d1/df5/nalu__reader_8cc_source.html +++ b/docs/d1/df5/nalu__reader_8cc_source.html @@ -434,7 +434,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/dfc/structedash__packager_1_1media_1_1wvm_1_1DemuxStreamIdMediaSample-members.html b/docs/d1/dfc/structedash__packager_1_1media_1_1wvm_1_1DemuxStreamIdMediaSample-members.html index e772c5df19..214744a639 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 5506ee3744..5579048f9e 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 78a2bea162..77b741634c 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 1204 of file box_definitions.cc.

+

Definition at line 1400 of file box_definitions.cc.

@@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/d2/d09/decoder__configuration_8h_source.html b/docs/d2/d09/decoder__configuration_8h_source.html index 64846f39d9..58807746d4 100644 --- a/docs/d2/d09/decoder__configuration_8h_source.html +++ b/docs/d2/d09/decoder__configuration_8h_source.html @@ -166,7 +166,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d0f/structedash__packager_1_1media_1_1mp4_1_1MediaInformation-members.html b/docs/d2/d0f/structedash__packager_1_1media_1_1mp4_1_1MediaInformation-members.html index a9489bc8b9..f5665861c0 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 6dec6933e9..1f9df69bdb 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 39b3d5a676..85e45cc78d 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 3927f59580..76f45a91c2 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 0901cfab8a..c35dfd8ce4 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 @@ -109,6 +109,10 @@ Inheritance diagram for edash_packager::media::mp4::SampleGroupDescription: FourCC BoxType () const override   + +template<typename T > +bool ReadWriteEntries (BoxBuffer *buffer, std::vector< T > *entries) +  - Public Member Functions inherited from edash_packager::media::mp4::FullBox uint32_t HeaderSize () const final   @@ -129,10 +133,14 @@ Public Attributes uint32_t grouping_type   - + std::vector
-< CencSampleEncryptionInfoEntryentries -  +< CencSampleEncryptionInfoEntrycenc_sample_encryption_info_entries +  + +std::vector
+< AudioRollRecoveryEntryaudio_roll_recovery_entries- Public Attributes inherited from edash_packager::media::mp4::FullBox uint8_t version @@ -149,7 +157,7 @@ Additional Inherited Members

Detailed Description

-

Definition at line 682 of file box_definitions.h.

+

Definition at line 500 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 2196 of file box_definitions.cc.

+

Definition at line 991 of file box_definitions.cc.

@@ -186,7 +194,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 a9ef928ad2..9a9a6800f7 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/classedash__packager_1_1media_1_1mp2t_1_1ContinuityCounter-members.html b/docs/d2/d2d/classedash__packager_1_1media_1_1mp2t_1_1ContinuityCounter-members.html index 39d11e77f7..c5135b7288 100644 --- a/docs/d2/d2d/classedash__packager_1_1media_1_1mp2t_1_1ContinuityCounter-members.html +++ b/docs/d2/d2d/classedash__packager_1_1media_1_1mp2t_1_1ContinuityCounter-members.html @@ -99,7 +99,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); 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 bc251e5b6e..2c21bb0293 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 23452b9867..4e2a2bccee 100644 --- a/docs/d2/d30/tracks__builder_8cc_source.html +++ b/docs/d2/d30/tracks__builder_8cc_source.html @@ -487,7 +487,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d33/video__slice__header__parser_8h_source.html b/docs/d2/d33/video__slice__header__parser_8h_source.html index 71a6f76869..5e3591495d 100644 --- a/docs/d2/d33/video__slice__header__parser_8h_source.html +++ b/docs/d2/d33/video__slice__header__parser_8h_source.html @@ -169,7 +169,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d45/program__map__table__writer_8cc_source.html b/docs/d2/d45/program__map__table__writer_8cc_source.html index 58425d2d13..4822b952e4 100644 --- a/docs/d2/d45/program__map__table__writer_8cc_source.html +++ b/docs/d2/d45/program__map__table__writer_8cc_source.html @@ -511,7 +511,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 b1898ff7b1..6d69fb0a0f 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 6a0acdbf04..6abf4c862d 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/d4c/nal__unit__to__byte__stream__converter_8cc_source.html b/docs/d2/d4c/nal__unit__to__byte__stream__converter_8cc_source.html index 1ba9416023..f16e3454d8 100644 --- a/docs/d2/d4c/nal__unit__to__byte__stream__converter_8cc_source.html +++ b/docs/d2/d4c/nal__unit__to__byte__stream__converter_8cc_source.html @@ -291,7 +291,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 9be49e46ac..3d6fd1e115 100644 --- a/docs/d2/d4d/file_8h_source.html +++ b/docs/d2/d4d/file_8h_source.html @@ -191,7 +191,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 fbaf692624..0ad7e8ae23 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 d5e26edadf..2c16620a13 100644 --- a/docs/d2/d51/classedash__packager_1_1media_1_1WebVttMediaParser.html +++ b/docs/d2/d51/classedash__packager_1_1media_1_1WebVttMediaParser.html @@ -256,7 +256,7 @@ track_id, const scoped_refptr
diff --git a/docs/d2/d51/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize.html b/docs/d2/d51/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize.html index 5047a3f86f..1accbef7c1 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 @@ -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 2abcb5d521..976d579789 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 076c1157f2..ce1d50a47a 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 5f14463c55..58e32abc0d 100644 --- a/docs/d2/d62/simple__mpd__notifier_8h_source.html +++ b/docs/d2/d62/simple__mpd__notifier_8h_source.html @@ -186,7 +186,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d6f/classBandwidthEstimator.html b/docs/d2/d6f/classBandwidthEstimator.html index a57d8870d3..ac7b669574 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 cf21be5402..8fcb2a286a 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 @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d2/d72/classedash__packager_1_1media_1_1Nalu.html b/docs/d2/d72/classedash__packager_1_1media_1_1Nalu.html index b84d308ce2..cb98d5ca4a 100644 --- a/docs/d2/d72/classedash__packager_1_1media_1_1Nalu.html +++ b/docs/d2/d72/classedash__packager_1_1media_1_1Nalu.html @@ -240,7 +240,7 @@ bool can_start_access_unit 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 1263a5f550..9c189b8910 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 0680863e1c..67aadcfc79 100644 --- a/docs/d2/d7b/simple__mpd__notifier_8cc_source.html +++ b/docs/d2/d7b/simple__mpd__notifier_8cc_source.html @@ -239,7 +239,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 8df9c7ea6e..35e814dfbf 100644 --- a/docs/d2/d7e/aac__audio__specific__config_8h_source.html +++ b/docs/d2/d7e/aac__audio__specific__config_8h_source.html @@ -167,7 +167,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d8a/hls__notify__muxer__listener_8h_source.html b/docs/d2/d8a/hls__notify__muxer__listener_8h_source.html index 39dc298dc1..c5da73e171 100644 --- a/docs/d2/d8a/hls__notify__muxer__listener_8h_source.html +++ b/docs/d2/d8a/hls__notify__muxer__listener_8h_source.html @@ -163,7 +163,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 52f992a95a..43924c62d5 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 8e89ea54ad..dc3c77e5db 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 34dbd0bcad..7e8a255a15 100644 --- a/docs/d2/d98/avc__decoder__configuration_8h_source.html +++ b/docs/d2/d98/avc__decoder__configuration_8h_source.html @@ -153,7 +153,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/da6/threaded__io__file_8h_source.html b/docs/d2/da6/threaded__io__file_8h_source.html index 9fdc0ef487..3d593348f2 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 fed35941e5..1b176cbcc8 100644 --- a/docs/d2/da8/mp4_2segmenter_8cc_source.html +++ b/docs/d2/da8/mp4_2segmenter_8cc_source.html @@ -259,7 +259,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
170  sidx_->reference_id = i + 1;
171  }
172  if (!encryption_key_source) {
-
173  fragmenters_[i] = new Fragmenter(&moof_->tracks[i]);
+
173  fragmenters_[i] = new Fragmenter(streams[i]->info(), &moof_->tracks[i]);
174  continue;
175  }
176 
@@ -557,8 +557,8 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
468 } // namespace media
469 } // namespace edash_packager
- - + +
virtual Status GetKey(TrackType track_type, EncryptionKey *key)=0
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:47
@@ -569,7 +569,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
EncryptingFragmenter generates MP4 fragments with sample encrypted.
static bool GenerateRandomIv(FourCC protection_scheme, std::vector< uint8_t > *iv)
Definition: aes_cryptor.cc:109
-
virtual Status AddSample(scoped_refptr< MediaSample > sample)
Definition: fragmenter.cc:36
+
virtual Status AddSample(scoped_refptr< MediaSample > sample)
Definition: fragmenter.cc:45
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:31
@@ -583,7 +583,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 24224041aa..0b8f36d7d5 100644 --- a/docs/d2/dae/webm__muxer_8cc_source.html +++ b/docs/d2/dae/webm__muxer_8cc_source.html @@ -225,7 +225,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/db7/classedash__packager_1_1media_1_1NaluReader-members.html b/docs/d2/db7/classedash__packager_1_1media_1_1NaluReader-members.html index 6b1ed182f1..8604e0310c 100644 --- a/docs/d2/db7/classedash__packager_1_1media_1_1NaluReader-members.html +++ b/docs/d2/db7/classedash__packager_1_1media_1_1NaluReader-members.html @@ -105,7 +105,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 01fdb28be1..0798e92dcb 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/dcd/program__map__table__writer_8h_source.html b/docs/d2/dcd/program__map__table__writer_8h_source.html index ab1b4ac24e..44deb77454 100644 --- a/docs/d2/dcd/program__map__table__writer_8h_source.html +++ b/docs/d2/dcd/program__map__table__writer_8h_source.html @@ -191,7 +191,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/dd6/mkv__writer_8h_source.html b/docs/d2/dd6/mkv__writer_8h_source.html index 02c08acaf7..33eb48d5c7 100644 --- a/docs/d2/dd6/mkv__writer_8h_source.html +++ b/docs/d2/dd6/mkv__writer_8h_source.html @@ -152,7 +152,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/dd8/classedash__packager_1_1media_1_1mp2t_1_1H264ProgramMapTableWriter-members.html b/docs/d2/dd8/classedash__packager_1_1media_1_1mp2t_1_1H264ProgramMapTableWriter-members.html index 10d0105b05..d1807f7b5d 100644 --- a/docs/d2/dd8/classedash__packager_1_1media_1_1mp2t_1_1H264ProgramMapTableWriter-members.html +++ b/docs/d2/dd8/classedash__packager_1_1media_1_1mp2t_1_1H264ProgramMapTableWriter-members.html @@ -105,7 +105,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 1614c0e366..8c5836b892 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 8f8b97e220..7787a2a52a 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 03f796659a..d7edafd288 100644 --- a/docs/d2/de6/packager__main_8cc_source.html +++ b/docs/d2/de6/packager__main_8cc_source.html @@ -588,7 +588,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/de9/mock__muxer__listener_8h_source.html b/docs/d2/de9/mock__muxer__listener_8h_source.html index 231ca79c05..0d288e593d 100644 --- a/docs/d2/de9/mock__muxer__listener_8h_source.html +++ b/docs/d2/de9/mock__muxer__listener_8h_source.html @@ -160,7 +160,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 1cbbbc1b9a..20e4d976a0 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/dee/pes__packet__generator_8cc_source.html b/docs/d2/dee/pes__packet__generator_8cc_source.html index 39ac995f77..8a931a5792 100644 --- a/docs/d2/dee/pes__packet__generator_8cc_source.html +++ b/docs/d2/dee/pes__packet__generator_8cc_source.html @@ -328,7 +328,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/df3/structedash__packager_1_1media_1_1H265VuiParameters-members.html b/docs/d2/df3/structedash__packager_1_1media_1_1H265VuiParameters-members.html index 49b2b9b288..637f5a5a93 100644 --- a/docs/d2/df3/structedash__packager_1_1media_1_1H265VuiParameters-members.html +++ b/docs/d2/df3/structedash__packager_1_1media_1_1H265VuiParameters-members.html @@ -103,7 +103,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 e1fe2e3404..40637b3aff 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 37824eb6d5..89e3667eb5 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 750 of file box_definitions.h.

+

Definition at line 781 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 2450 of file box_definitions.cc.

+

Definition at line 2546 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 ad1a519269..92facd3b3e 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 3624004ae3..4fafc1dc71 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 a5aa62533c..3abb5d01b8 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 d80a11eda9..caa7518e61 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 51b25dd702..a85be8e6a2 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 @@ -94,7 +94,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');

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

- + @@ -107,7 +107,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
DISALLOW_COPY_AND_ASSIGN(WebMParserClient) (defined in edash_packager::media::WebMParserClient)edash_packager::media::WebMParserClientprotected
GetAudioStreamInfo(int64_t track_num, const std::string &codec_id, const std::vector< uint8_t > &codec_private, const std::string &language, bool is_encrypted)edash_packager::media::WebMAudioClient
GetAudioStreamInfo(int64_t track_num, const std::string &codec_id, const std::vector< uint8_t > &codec_private, int64_t seek_preroll, int64_t codec_delay, const std::string &language, bool is_encrypted)edash_packager::media::WebMAudioClient
OnBinary(int id, const uint8_t *data, int size) (defined in edash_packager::media::WebMParserClient)edash_packager::media::WebMParserClientvirtual
OnListEnd(int id) (defined in edash_packager::media::WebMParserClient)edash_packager::media::WebMParserClientvirtual
OnListStart(int id) (defined in edash_packager::media::WebMParserClient)edash_packager::media::WebMParserClientvirtual
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 5e0cedd802..dff2bb1fff 100644 --- a/docs/d3/d0e/classedash__packager_1_1media_1_1MpdNotifyMuxerListener.html +++ b/docs/d3/d0e/classedash__packager_1_1media_1_1MpdNotifyMuxerListener.html @@ -483,7 +483,7 @@ Additional Inherited Members diff --git a/docs/d3/d11/structedash__packager_1_1media_1_1H265Pps.html b/docs/d3/d11/structedash__packager_1_1media_1_1H265Pps.html index 6f5d905abf..7eef38c742 100644 --- a/docs/d3/d11/structedash__packager_1_1media_1_1H265Pps.html +++ b/docs/d3/d11/structedash__packager_1_1media_1_1H265Pps.html @@ -224,7 +224,7 @@ bool chroma_qp_offset_list diff --git a/docs/d3/d15/udp__file__win_8cc_source.html b/docs/d3/d15/udp__file__win_8cc_source.html index b8ca5b0296..774104782a 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 d699a6a7ae..894db80b1a 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 0f5f64462e..0ddf494b81 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 775 of file box_definitions.h.

+

Definition at line 806 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 2541 of file box_definitions.cc.

+

Definition at line 2637 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 3d6b7bc066..1908b84829 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 559 of file box_definitions.h.

+

Definition at line 631 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 1858 of file box_definitions.cc.

+

Definition at line 2106 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 216fd8f6bb..eb94919081 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 @@ -118,7 +118,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d35/video__slice__header__parser_8cc_source.html b/docs/d3/d35/video__slice__header__parser_8cc_source.html index 32926479d5..11c1ff8cd4 100644 --- a/docs/d3/d35/video__slice__header__parser_8cc_source.html +++ b/docs/d3/d35/video__slice__header__parser_8cc_source.html @@ -202,7 +202,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d39/structedash__packager_1_1media_1_1H265ReferencePictureListModifications.html b/docs/d3/d39/structedash__packager_1_1media_1_1H265ReferencePictureListModifications.html index 4ad4f22587..7c1c551af1 100644 --- a/docs/d3/d39/structedash__packager_1_1media_1_1H265ReferencePictureListModifications.html +++ b/docs/d3/d39/structedash__packager_1_1media_1_1H265ReferencePictureListModifications.html @@ -119,7 +119,7 @@ std::vector< int > l 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 068c245120..6144f89954 100644 --- a/docs/d3/d3e/classedash__packager_1_1media_1_1HttpKeyFetcher.html +++ b/docs/d3/d3e/classedash__packager_1_1media_1_1HttpKeyFetcher.html @@ -311,7 +311,7 @@ KeyFetcher implementation overrides. diff --git a/docs/d3/d43/structedash__packager_1_1media_1_1mp4_1_1EC3Specific.html b/docs/d3/d43/structedash__packager_1_1media_1_1mp4_1_1EC3Specific.html index 6d5d4f4b57..58268dabea 100644 --- a/docs/d3/d43/structedash__packager_1_1media_1_1mp4_1_1EC3Specific.html +++ b/docs/d3/d43/structedash__packager_1_1media_1_1mp4_1_1EC3Specific.html @@ -162,7 +162,7 @@ Additional Inherited Members

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

-

Definition at line 1454 of file box_definitions.cc.

+

Definition at line 1650 of file box_definitions.cc.

@@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d3/d48/structedash__packager_1_1media_1_1mp4_1_1EditList-members.html b/docs/d3/d48/structedash__packager_1_1media_1_1mp4_1_1EditList-members.html index 1c77e0d40c..c0ab5ad597 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 2a24de6ba3..ae96192870 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 ec46d08027..f375ec018f 100644 --- a/docs/d3/d56/decrypt__config_8cc_source.html +++ b/docs/d3/d56/decrypt__config_8cc_source.html @@ -127,7 +127,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 27df9db73a..3dd29215a6 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/continuity__counter_8h_source.html b/docs/d3/d62/continuity__counter_8h_source.html index e559e3e86d..594d162bc0 100644 --- a/docs/d3/d62/continuity__counter_8h_source.html +++ b/docs/d3/d62/continuity__counter_8h_source.html @@ -124,7 +124,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d62/rcheck_8h_source.html b/docs/d3/d62/rcheck_8h_source.html index 4139faf5c1..5acc7ed863 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 a297f11ef4..361818dbca 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 61bb9a3f2f..9b5ab5a1da 100644 --- a/docs/d3/d69/classedash__packager_1_1media_1_1ClusterBuilder.html +++ b/docs/d3/d69/classedash__packager_1_1media_1_1ClusterBuilder.html @@ -125,7 +125,7 @@ scoped_ptr< diff --git a/docs/d3/d6a/classedash__packager_1_1media_1_1NaluReader.html b/docs/d3/d6a/classedash__packager_1_1media_1_1NaluReader.html index 75d928145e..074d6e619d 100644 --- a/docs/d3/d6a/classedash__packager_1_1media_1_1NaluReader.html +++ b/docs/d3/d6a/classedash__packager_1_1media_1_1NaluReader.html @@ -228,7 +228,7 @@ static bool FindStartCode< diff --git a/docs/d3/d6b/classedash__packager_1_1media_1_1IoCache.html b/docs/d3/d6b/classedash__packager_1_1media_1_1IoCache.html index 2f7fc58064..80f2b56030 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/d6b/fixed__key__source_8cc_source.html b/docs/d3/d6b/fixed__key__source_8cc_source.html index c60376aec4..fa31709332 100644 --- a/docs/d3/d6b/fixed__key__source_8cc_source.html +++ b/docs/d3/d6b/fixed__key__source_8cc_source.html @@ -243,7 +243,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d72/fixed__key__source_8h_source.html b/docs/d3/d72/fixed__key__source_8h_source.html index fde59d7a04..8869db40f1 100644 --- a/docs/d3/d72/fixed__key__source_8h_source.html +++ b/docs/d3/d72/fixed__key__source_8h_source.html @@ -160,7 +160,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); 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 4c6b40d1ef..828b103a71 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 375 of file box_definitions.h.

+

Definition at line 384 of file box_definitions.h.

Member Function Documentation

@@ -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 4e6fcf63d2..6e8104372b 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 6713cf5241..44def590a7 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 @@ -145,6 +145,13 @@ Public Attributes SyncSample sync_sample   + +std::vector
+< SampleGroupDescriptionsample_group_descriptions +  + +std::vector< SampleToGroupsample_to_groups +  @@ -154,7 +161,7 @@ Additional Inherited Members

Additional Inherited Members

Detailed Description

-

Definition at line 462 of file box_definitions.h.

+

Definition at line 532 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 926 of file box_definitions.cc.

+

Definition at line 1107 of file box_definitions.cc.

@@ -191,7 +198,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 8b295bebc8..f67c1d1108 100644 --- a/docs/d3/d80/muxer__util_8h_source.html +++ b/docs/d3/d80/muxer__util_8h_source.html @@ -127,7 +127,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 fbef5d1393..a1a07c11d1 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 758351e698..fa5a0ab62c 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 47f9b5b323..f247c59449 100644 --- a/docs/d3/d8d/webm__audio__client_8h_source.html +++ b/docs/d3/d8d/webm__audio__client_8h_source.html @@ -112,37 +112,39 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
24 
26  void Reset();
27 
-
34  scoped_refptr<AudioStreamInfo> GetAudioStreamInfo(
-
35  int64_t track_num,
-
36  const std::string& codec_id,
-
37  const std::vector<uint8_t>& codec_private,
-
38  const std::string& language,
-
39  bool is_encrypted);
-
40 
-
41  private:
-
42  // WebMParserClient implementation.
-
43  bool OnUInt(int id, int64_t val) override;
-
44  bool OnFloat(int id, double val) override;
-
45 
-
46  int channels_;
-
47  double samples_per_second_;
-
48  double output_samples_per_second_;
-
49 
-
50  DISALLOW_COPY_AND_ASSIGN(WebMAudioClient);
-
51 };
-
52 
-
53 } // namespace media
-
54 } // namespace edash_packager
-
55 
-
56 #endif // MEDIA_FORMATS_WEBM_WEBM_AUDIO_CLIENT_H_
+
43  scoped_refptr<AudioStreamInfo> GetAudioStreamInfo(
+
44  int64_t track_num,
+
45  const std::string& codec_id,
+
46  const std::vector<uint8_t>& codec_private,
+
47  int64_t seek_preroll,
+
48  int64_t codec_delay,
+
49  const std::string& language,
+
50  bool is_encrypted);
+
51 
+
52  private:
+
53  // WebMParserClient implementation.
+
54  bool OnUInt(int id, int64_t val) override;
+
55  bool OnFloat(int id, double val) override;
+
56 
+
57  int channels_;
+
58  double samples_per_second_;
+
59  double output_samples_per_second_;
+
60 
+
61  DISALLOW_COPY_AND_ASSIGN(WebMAudioClient);
+
62 };
+
63 
+
64 } // namespace media
+
65 } // namespace edash_packager
+
66 
+
67 #endif // MEDIA_FORMATS_WEBM_WEBM_AUDIO_CLIENT_H_
+
scoped_refptr< AudioStreamInfo > GetAudioStreamInfo(int64_t track_num, const std::string &codec_id, const std::vector< uint8_t > &codec_private, int64_t seek_preroll, int64_t codec_delay, const std::string &language, bool is_encrypted)
void Reset()
Reset this object's state so it can process a new audio track element.
Helper class used to parse an Audio element inside a TrackEntry element.
-
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/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 af684210d9..2b4b30b739 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 @@ -130,7 +130,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d90/ec3__audio__util_8cc_source.html b/docs/d3/d90/ec3__audio__util_8cc_source.html index 36fab6c1f0..a27ac45e62 100644 --- a/docs/d3/d90/ec3__audio__util_8cc_source.html +++ b/docs/d3/d90/ec3__audio__util_8cc_source.html @@ -245,7 +245,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d9b/structedash__packager_1_1media_1_1VideoStreamInfoParameters-members.html b/docs/d3/d9b/structedash__packager_1_1media_1_1VideoStreamInfoParameters-members.html index ccd4ef7803..17299eed40 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 7e3b49d722..ba25b15526 100644 --- a/docs/d3/d9f/classedash__packager_1_1media_1_1mp4_1_1ESDescriptor-members.html +++ b/docs/d3/d9f/classedash__packager_1_1media_1_1mp4_1_1ESDescriptor-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/da0/ec3__audio__util_8h_source.html b/docs/d3/da0/ec3__audio__util_8h_source.html index 02d5ea65d2..304b923551 100644 --- a/docs/d3/da0/ec3__audio__util_8h_source.html +++ b/docs/d3/da0/ec3__audio__util_8h_source.html @@ -114,7 +114,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/db6/webm__parser_8cc_source.html b/docs/d3/db6/webm__parser_8cc_source.html index bc994cf03f..ae4f28b723 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 4cde2b6de2..6f6f2e06c9 100644 --- a/docs/d3/dbc/seek__head_8cc_source.html +++ b/docs/d3/dbc/seek__head_8cc_source.html @@ -216,7 +216,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 9dfd997eb7..8e1f9bfb49 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 a8b9736244..016bb4b4ab 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 1031 of file box_definitions.cc.

+

Definition at line 1227 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 9ec23edcdb..120701b31a 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 1197d649a7..ab6bdc33a2 100644 --- a/docs/d3/dbe/demuxer_8cc_source.html +++ b/docs/d3/dbe/demuxer_8cc_source.html @@ -345,7 +345,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/dc0/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset-members.html b/docs/d3/dc0/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset-members.html index be8a43e275..02d989d0d4 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 809708070f..93db7de490 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 8e1a80456d..dae26d6fea 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 dba5fb637a..d421096913 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 544 of file box_definitions.h.

+

Definition at line 616 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 1815 of file box_definitions.cc.

+

Definition at line 2063 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 c5ba656849..ea5c1a9842 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 df8b6ac1cb..160f4885e9 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/dec/classedash__packager_1_1media_1_1H26xBitReader.html b/docs/d3/dec/classedash__packager_1_1media_1_1H26xBitReader.html index 6ff0e50592..9508fb31fb 100644 --- a/docs/d3/dec/classedash__packager_1_1media_1_1H26xBitReader.html +++ b/docs/d3/dec/classedash__packager_1_1media_1_1H26xBitReader.html @@ -134,7 +134,7 @@ size_t NumEmulationPrevent diff --git a/docs/d3/df1/box__reader_8cc_source.html b/docs/d3/df1/box__reader_8cc_source.html index d74724db2f..a123b64add 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 316baf119c..98be06473c 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 3747d1b160..572aa5466f 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 ed9fa28238..ddeca735a8 100644 --- a/docs/d4/d00/mp4_2multi__segment__segmenter_8cc_source.html +++ b/docs/d4/d00/mp4_2multi__segment__segmenter_8cc_source.html @@ -304,7 +304,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 79b5cf37f3..6b74695773 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/d0e/structedash__packager_1_1media_1_1mp4_1_1AudioRollRecoveryEntry-members.html b/docs/d4/d0e/structedash__packager_1_1media_1_1mp4_1_1AudioRollRecoveryEntry-members.html new file mode 100644 index 0000000000..7eca8a8b35 --- /dev/null +++ b/docs/d4/d0e/structedash__packager_1_1media_1_1mp4_1_1AudioRollRecoveryEntry-members.html @@ -0,0 +1,109 @@ + + + + + + +DASH Media Packaging SDK: Member List + + + + + + + + + +
+
+ + + + + + +
+
DASH Media Packaging SDK +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
edash_packager::media::mp4::AudioRollRecoveryEntry Member List
+
+ + + + + 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 64b3527eca..e3ce1a90ed 100644 --- a/docs/d4/d1d/classedash__packager_1_1media_1_1Muxer.html +++ b/docs/d4/d1d/classedash__packager_1_1media_1_1Muxer.html @@ -342,7 +342,7 @@ class MediaStream diff --git a/docs/d4/d25/classedash__packager_1_1media_1_1mp2t_1_1TsWriter-members.html b/docs/d4/d25/classedash__packager_1_1media_1_1mp2t_1_1TsWriter-members.html index b26a513617..f9ba34b3a6 100644 --- a/docs/d4/d25/classedash__packager_1_1media_1_1mp2t_1_1TsWriter-members.html +++ b/docs/d4/d25/classedash__packager_1_1media_1_1mp2t_1_1TsWriter-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d26/classedash__packager_1_1media_1_1mp2t_1_1TsWriter.html b/docs/d4/d26/classedash__packager_1_1media_1_1mp2t_1_1TsWriter.html index b9ea8bb4de..2762992d46 100644 --- a/docs/d4/d26/classedash__packager_1_1media_1_1mp2t_1_1TsWriter.html +++ b/docs/d4/d26/classedash__packager_1_1media_1_1mp2t_1_1TsWriter.html @@ -292,7 +292,7 @@ void  diff --git a/docs/d4/d37/io__cache_8cc_source.html b/docs/d4/d37/io__cache_8cc_source.html index 67707376e9..dcee7264b1 100644 --- a/docs/d4/d37/io__cache_8cc_source.html +++ b/docs/d4/d37/io__cache_8cc_source.html @@ -252,7 +252,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d3d/structedash__packager_1_1media_1_1mp4_1_1PixelAspectRatio.html b/docs/d4/d3d/structedash__packager_1_1media_1_1mp4_1_1PixelAspectRatio.html index c36f906f33..9713e78edd 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 1249 of file box_definitions.cc.

+

Definition at line 1445 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 f5ec3661ca..55bfc5478e 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/d4a/structedash__packager_1_1media_1_1H265Sps-members.html b/docs/d4/d4a/structedash__packager_1_1media_1_1H265Sps-members.html index 1df2ee1325..6b69bd05b4 100644 --- a/docs/d4/d4a/structedash__packager_1_1media_1_1H265Sps-members.html +++ b/docs/d4/d4a/structedash__packager_1_1media_1_1H265Sps-members.html @@ -146,7 +146,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); 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 ace6c2d5bb..f66a5a7826 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 1ed071b71b..072b6a4a6b 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 @@ -128,7 +128,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d87/nalu__reader_8h_source.html b/docs/d4/d87/nalu__reader_8h_source.html index 010560f55d..663a0ef688 100644 --- a/docs/d4/d87/nalu__reader_8h_source.html +++ b/docs/d4/d87/nalu__reader_8h_source.html @@ -297,7 +297,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 e04f1b7dcf..cf773050c3 100644 --- a/docs/d4/d8c/classedash__packager_1_1media_1_1MkvWriter.html +++ b/docs/d4/d8c/classedash__packager_1_1media_1_1MkvWriter.html @@ -376,7 +376,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 86a51c9abb..2947a8db2f 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 340e875bac..4b8f371def 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 e2302df393..a06572c542 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 744 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 2436 of file box_definitions.cc.

+

Definition at line 2532 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 93f69853cb..6a0eef9a3c 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 69f438d0b3..f9d31cf870 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 9914b076c0..7dd88ab55d 100644 --- a/docs/d4/da1/classedash__packager_1_1media_1_1DecryptConfig.html +++ b/docs/d4/da1/classedash__packager_1_1media_1_1DecryptConfig.html @@ -249,7 +249,7 @@ static const size_t  diff --git a/docs/d4/da7/segmenter__test__base_8cc_source.html b/docs/d4/da7/segmenter__test__base_8cc_source.html index 76074babb1..e105c08d6a 100644 --- a/docs/d4/da7/segmenter__test__base_8cc_source.html +++ b/docs/d4/da7/segmenter__test__base_8cc_source.html @@ -310,7 +310,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 00f5da1a76..3ec73c16f5 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/dbe/classedash__packager_1_1media_1_1NalUnitToByteStreamConverter.html b/docs/d4/dbe/classedash__packager_1_1media_1_1NalUnitToByteStreamConverter.html index 9af906c4e1..27ba4d17f8 100644 --- a/docs/d4/dbe/classedash__packager_1_1media_1_1NalUnitToByteStreamConverter.html +++ b/docs/d4/dbe/classedash__packager_1_1media_1_1NalUnitToByteStreamConverter.html @@ -229,7 +229,7 @@ class NalUnitToByteStreamC 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 084c6a782b..c4dd08d6fe 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 ad77d3e5e2..55d2317cd5 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 40440a06a8..491c67d945 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 @@ -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 5c31184fc9..9430542240 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 21751c1ddd..abf5d72bc4 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 711 of file box_definitions.h.

+

Definition at line 742 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 adc7696624..ed8e5e4049 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/dd8/classedash__packager_1_1media_1_1H26xByteToUnitStreamConverter.html b/docs/d4/dd8/classedash__packager_1_1media_1_1H26xByteToUnitStreamConverter.html index 6c414f27eb..ba543a0943 100644 --- a/docs/d4/dd8/classedash__packager_1_1media_1_1H26xByteToUnitStreamConverter.html +++ b/docs/d4/dd8/classedash__packager_1_1media_1_1H26xByteToUnitStreamConverter.html @@ -216,7 +216,7 @@ static const size_t kUnitS 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 0bf8f6605a..75b39505ff 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 @@ -136,12 +136,13 @@ bool decode_time_absent TrackFragmentDecodeTime decode_time   - -SampleToGroup sample_to_group -  - -SampleGroupDescription sample_group_description -  + +std::vector
+< SampleGroupDescriptionsample_group_descriptions +  + +std::vector< SampleToGroupsample_to_groups SampleAuxiliaryInformationSize auxiliary_size   @@ -160,7 +161,7 @@ Additional Inherited Members

Detailed Description

-

Definition at line 689 of file box_definitions.h.

+

Definition at line 720 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 2298 of file box_definitions.cc.

+

Definition at line 2400 of file box_definitions.cc.

@@ -197,7 +198,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 1a186132d7..2a68dbdde5 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/de0/structedash__packager_1_1media_1_1H265SliceHeader_1_1LongTermPicsInfo.html b/docs/d4/de0/structedash__packager_1_1media_1_1H265SliceHeader_1_1LongTermPicsInfo.html index aeb9ac002d..08ad478c56 100644 --- a/docs/d4/de0/structedash__packager_1_1media_1_1H265SliceHeader_1_1LongTermPicsInfo.html +++ b/docs/d4/de0/structedash__packager_1_1media_1_1H265SliceHeader_1_1LongTermPicsInfo.html @@ -112,7 +112,7 @@ int delta_poc_msb_cycle_lt 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 408a38416c..f6b4e9fb44 100644 --- a/docs/d4/de4/structedash__packager_1_1media_1_1SubsampleEntry.html +++ b/docs/d4/de4/structedash__packager_1_1media_1_1SubsampleEntry.html @@ -122,7 +122,7 @@ uint32_t cipher_bytes< diff --git a/docs/d4/de5/classedash__packager_1_1media_1_1mp4_1_1CompositionOffsetIterator.html b/docs/d4/de5/classedash__packager_1_1media_1_1mp4_1_1CompositionOffsetIterator.html index 892a89fc85..1388026ec1 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 096d0753f5..2195d7efd7 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 6699f2c1bd..78294775f2 100644 --- a/docs/d4/df5/request__signer_8cc_source.html +++ b/docs/d4/df5/request__signer_8cc_source.html @@ -178,7 +178,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 434eda34aa..21a6435db3 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 8a85b86ff4..e293e673b8 100644 --- a/docs/d4/dff/webm__media__parser_8cc_source.html +++ b/docs/d4/dff/webm__media__parser_8cc_source.html @@ -364,7 +364,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d02/classedash__packager_1_1media_1_1ProducerConsumerQueue.html b/docs/d5/d02/classedash__packager_1_1media_1_1ProducerConsumerQueue.html index 1779c1ad96..71705cc40c 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 1c61df22e6..06042e2d5f 100644 --- a/docs/d5/d15/producer__consumer__queue_8h_source.html +++ b/docs/d5/d15/producer__consumer__queue_8h_source.html @@ -374,7 +374,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d18/structedash__packager_1_1media_1_1mp4_1_1CueIDBox-members.html b/docs/d5/d18/structedash__packager_1_1media_1_1mp4_1_1CueIDBox-members.html index 8aabfa5535..9866561c40 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 46a78a2d3a..05d5b048cb 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 1bff742983..70e176f0d2 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 afe018ca48..c44e1287e3 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 4d5999534a..ceab8fce72 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 50ec1b09a5..da7e1b0a19 100644 --- a/docs/d5/d30/classedash__packager_1_1media_1_1H264ByteToUnitStreamConverter.html +++ b/docs/d5/d30/classedash__packager_1_1media_1_1H264ByteToUnitStreamConverter.html @@ -171,7 +171,7 @@ static const size_t kUnitS diff --git a/docs/d5/d3e/structedash__packager_1_1media_1_1H265ReferencePictureSet-members.html b/docs/d5/d3e/structedash__packager_1_1media_1_1H265ReferencePictureSet-members.html index 3a2271aab7..348231f3c3 100644 --- a/docs/d5/d3e/structedash__packager_1_1media_1_1H265ReferencePictureSet-members.html +++ b/docs/d5/d3e/structedash__packager_1_1media_1_1H265ReferencePictureSet-members.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); 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 1163a3b9e8..55048f70c5 100644 --- a/docs/d5/d40/webm_2single__segment__segmenter_8h_source.html +++ b/docs/d5/d40/webm_2single__segment__segmenter_8h_source.html @@ -156,7 +156,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 b4d460e894..300ec1f035 100644 --- a/docs/d5/d41/hevc__decoder__configuration_8cc_source.html +++ b/docs/d5/d41/hevc__decoder__configuration_8cc_source.html @@ -256,7 +256,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d49/structedash__packager_1_1media_1_1H265VuiParameters.html b/docs/d5/d49/structedash__packager_1_1media_1_1H265VuiParameters.html index 01f2bc89af..9680248d42 100644 --- a/docs/d5/d49/structedash__packager_1_1media_1_1H265VuiParameters.html +++ b/docs/d5/d49/structedash__packager_1_1media_1_1H265VuiParameters.html @@ -131,7 +131,7 @@ int min_spatial_segmentati 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 45d4e3b44c..1e44ea1a95 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 f61f6cbffd..b08a47e48a 100644 --- a/docs/d5/d4d/box_8cc_source.html +++ b/docs/d5/d4d/box_8cc_source.html @@ -200,7 +200,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 49f3f84f7e..0fa0f6c60b 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 8918c693d8..488301802a 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/d5c/continuity__counter_8cc_source.html b/docs/d5/d5c/continuity__counter_8cc_source.html index 3d978b588c..7c529756ff 100644 --- a/docs/d5/d5c/continuity__counter_8cc_source.html +++ b/docs/d5/d5c/continuity__counter_8cc_source.html @@ -116,7 +116,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 1f98267830..70802f21a2 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 7adfeaa23f..c410402d78 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 2510f60ad3..185f663c42 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 7edfb5ccf0..6959a89563 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 84a92b54c5..24174e86c3 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 dc7d4d7b1e..6e2e6a187f 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 @@ -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 19a1d4c055..d145afeca7 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 f8d9e5fbe3..d0293d9969 100644 --- a/docs/d5/d7b/box__definitions_8h_source.html +++ b/docs/d5/d7b/box__definitions_8h_source.html @@ -389,577 +389,610 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
326  std::vector<uint8_t> data;
327 };
328 
- -
330  DECLARE_BOX_METHODS(AudioSampleEntry);
-
331  // Returns actual format of this sample entry.
-
332  FourCC GetActualFormat() const {
-
333  return format == FOURCC_enca ? sinf.format.format : format;
-
334  }
-
335 
-
336  FourCC format;
-
337  uint16_t data_reference_index;
-
338  uint16_t channelcount;
-
339  uint16_t samplesize;
-
340  uint32_t samplerate;
-
341 
- +
329 struct OpusSpecific : Box {
+
330  DECLARE_BOX_METHODS(OpusSpecific);
+
331 
+
332  std::vector<uint8_t> opus_identification_header;
+
333  // The number of priming samples. Extracted from |opus_identification_header|.
+
334  uint16_t preskip;
+
335 };
+
336 
+ +
338  DECLARE_BOX_METHODS(AudioSampleEntry);
+
339  // Returns actual format of this sample entry.
+
340  FourCC GetActualFormat() const {
+
341  return format == FOURCC_enca ? sinf.format.format : format;
+
342  }
343 
- -
345  DTSSpecific ddts;
-
346  AC3Specific dac3;
-
347  EC3Specific dec3;
-
348 };
+
344  FourCC format;
+
345  uint16_t data_reference_index;
+
346  uint16_t channelcount;
+
347  uint16_t samplesize;
+
348  uint32_t samplerate;
349 
- -
351  DECLARE_BOX_METHODS(WebVTTConfigurationBox);
-
352  std::string config;
-
353 };
-
354 
- -
356  DECLARE_BOX_METHODS(WebVTTSourceLabelBox);
-
357  std::string source_label;
-
358 };
-
359 
- -
361  DECLARE_BOX_METHODS(TextSampleEntry);
-
362 
-
363  // Specifies fourcc of this sample entry. It needs to be set on write, e.g.
-
364  // set to 'wvtt' to write WVTTSampleEntry; On read, it is recovered from box
-
365  // header.
-
366  FourCC format;
-
367  uint16_t data_reference_index;
+ +
351 
+ +
353  DTSSpecific ddts;
+
354  AC3Specific dac3;
+
355  EC3Specific dec3;
+
356  OpusSpecific dops;
+
357 };
+
358 
+ +
360  DECLARE_BOX_METHODS(WebVTTConfigurationBox);
+
361  std::string config;
+
362 };
+
363 
+ +
365  DECLARE_BOX_METHODS(WebVTTSourceLabelBox);
+
366  std::string source_label;
+
367 };
368 
-
369  // Sub boxes for wvtt text sample entry.
-
370  WebVTTConfigurationBox config;
-
371  WebVTTSourceLabelBox label;
-
372  // Optional MPEG4BitRateBox.
-
373 };
-
374 
- -
376  DECLARE_BOX_METHODS(SampleDescription);
+ +
370  DECLARE_BOX_METHODS(TextSampleEntry);
+
371 
+
372  // Specifies fourcc of this sample entry. It needs to be set on write, e.g.
+
373  // set to 'wvtt' to write WVTTSampleEntry; On read, it is recovered from box
+
374  // header.
+
375  FourCC format;
+
376  uint16_t data_reference_index;
377 
-
378  TrackType type;
-
379  // TODO(kqyang): Clean up the code to have one single member, e.g. by creating
-
380  // SampleEntry struct, std::vector<SampleEntry> sample_entries.
-
381  std::vector<VideoSampleEntry> video_entries;
-
382  std::vector<AudioSampleEntry> audio_entries;
-
383  std::vector<TextSampleEntry> text_entries;
-
384 };
-
385 
-
386 struct DecodingTime {
-
387  uint32_t sample_count;
-
388  uint32_t sample_delta;
-
389 };
-
390 
-
391 // stts.
- -
393  DECLARE_BOX_METHODS(DecodingTimeToSample);
+
378  // Sub boxes for wvtt text sample entry.
+
379  WebVTTConfigurationBox config;
+
380  WebVTTSourceLabelBox label;
+
381  // Optional MPEG4BitRateBox.
+
382 };
+
383 
+ +
385  DECLARE_BOX_METHODS(SampleDescription);
+
386 
+
387  TrackType type;
+
388  // TODO(kqyang): Clean up the code to have one single member, e.g. by creating
+
389  // SampleEntry struct, std::vector<SampleEntry> sample_entries.
+
390  std::vector<VideoSampleEntry> video_entries;
+
391  std::vector<AudioSampleEntry> audio_entries;
+
392  std::vector<TextSampleEntry> text_entries;
+
393 };
394 
-
395  std::vector<DecodingTime> decoding_time;
-
396 };
-
397 
- -
399  uint32_t sample_count;
-
400  // If version == 0, sample_offset is uint32_t;
-
401  // If version == 1, sample_offset is int32_t.
-
402  // Use int64_t so both can be supported properly.
-
403  int64_t sample_offset;
-
404 };
-
405 
-
406 // ctts. Optional.
- -
408  DECLARE_BOX_METHODS(CompositionTimeToSample);
-
409 
-
410  std::vector<CompositionOffset> composition_offset;
-
411 };
-
412 
-
413 struct ChunkInfo {
-
414  uint32_t first_chunk;
-
415  uint32_t samples_per_chunk;
-
416  uint32_t sample_description_index;
-
417 };
+
395 struct DecodingTime {
+
396  uint32_t sample_count;
+
397  uint32_t sample_delta;
+
398 };
+
399 
+
400 // stts.
+ +
402  DECLARE_BOX_METHODS(DecodingTimeToSample);
+
403 
+
404  std::vector<DecodingTime> decoding_time;
+
405 };
+
406 
+ +
408  uint32_t sample_count;
+
409  // If version == 0, sample_offset is uint32_t;
+
410  // If version == 1, sample_offset is int32_t.
+
411  // Use int64_t so both can be supported properly.
+
412  int64_t sample_offset;
+
413 };
+
414 
+
415 // ctts. Optional.
+ +
417  DECLARE_BOX_METHODS(CompositionTimeToSample);
418 
-
419 // stsc.
- -
421  DECLARE_BOX_METHODS(SampleToChunk);
-
422 
-
423  std::vector<ChunkInfo> chunk_info;
-
424 };
-
425 
-
426 // stsz.
-
427 struct SampleSize : FullBox {
-
428  DECLARE_BOX_METHODS(SampleSize);
-
429 
-
430  uint32_t sample_size;
-
431  uint32_t sample_count;
-
432  std::vector<uint32_t> sizes;
+
419  std::vector<CompositionOffset> composition_offset;
+
420 };
+
421 
+
422 struct ChunkInfo {
+
423  uint32_t first_chunk;
+
424  uint32_t samples_per_chunk;
+
425  uint32_t sample_description_index;
+
426 };
+
427 
+
428 // stsc.
+ +
430  DECLARE_BOX_METHODS(SampleToChunk);
+
431 
+
432  std::vector<ChunkInfo> chunk_info;
433 };
434 
-
435 // stz2.
- -
437  DECLARE_BOX_METHODS(CompactSampleSize);
+
435 // stsz.
+
436 struct SampleSize : FullBox {
+
437  DECLARE_BOX_METHODS(SampleSize);
438 
-
439  uint8_t field_size;
-
440  std::vector<uint32_t> sizes;
-
441 };
-
442 
-
443 // co64.
- -
445  DECLARE_BOX_METHODS(ChunkLargeOffset);
-
446 
-
447  std::vector<uint64_t> offsets;
-
448 };
-
449 
-
450 // stco.
- -
452  DECLARE_BOX_METHODS(ChunkOffset);
-
453 };
-
454 
-
455 // stss. Optional.
-
456 struct SyncSample : FullBox {
-
457  DECLARE_BOX_METHODS(SyncSample);
+
439  uint32_t sample_size;
+
440  uint32_t sample_count;
+
441  std::vector<uint32_t> sizes;
+
442 };
+
443 
+
444 // stz2.
+ +
446  DECLARE_BOX_METHODS(CompactSampleSize);
+
447 
+
448  uint8_t field_size;
+
449  std::vector<uint32_t> sizes;
+
450 };
+
451 
+
452 // co64.
+ +
454  DECLARE_BOX_METHODS(ChunkLargeOffset);
+
455 
+
456  std::vector<uint64_t> offsets;
+
457 };
458 
-
459  std::vector<uint32_t> sample_number;
-
460 };
-
461 
-
462 struct SampleTable : Box {
-
463  DECLARE_BOX_METHODS(SampleTable);
-
464 
-
465  SampleDescription description;
-
466  DecodingTimeToSample decoding_time_to_sample;
-
467  CompositionTimeToSample composition_time_to_sample;
-
468  SampleToChunk sample_to_chunk;
-
469  // Either SampleSize or CompactSampleSize must present. Store in SampleSize.
-
470  SampleSize sample_size;
-
471  // Either ChunkOffset or ChunkLargeOffset must present. Store in
-
472  // ChunkLargeOffset.
-
473  ChunkLargeOffset chunk_large_offset;
-
474  SyncSample sync_sample;
-
475 };
-
476 
- -
478  DECLARE_BOX_METHODS(MediaHeader);
-
479 
-
480  uint64_t creation_time;
-
481  uint64_t modification_time;
-
482  uint32_t timescale;
-
483  uint64_t duration;
-
484  Language language;
-
485 };
-
486 
- -
488  DECLARE_BOX_METHODS(VideoMediaHeader);
+
459 // stco.
+ +
461  DECLARE_BOX_METHODS(ChunkOffset);
+
462 };
+
463 
+
464 // stss. Optional.
+
465 struct SyncSample : FullBox {
+
466  DECLARE_BOX_METHODS(SyncSample);
+
467 
+
468  std::vector<uint32_t> sample_number;
+
469 };
+
470 
+ + + +
474 
+
475  bool ReadWrite(BoxBuffer* buffer);
+
476  uint32_t ComputeSize() const;
+
477 
+
478  uint8_t is_protected;
+
479  uint8_t per_sample_iv_size;
+
480  std::vector<uint8_t> key_id;
+
481 
+
482  // For pattern-based encryption.
+
483  uint8_t crypt_byte_block;
+
484  uint8_t skip_byte_block;
+
485 
+
486  // Present only if |is_protected == 1 && per_sample_iv_size == 0|.
+
487  std::vector<uint8_t> constant_iv;
+
488 };
489 
-
490  uint16_t graphicsmode;
-
491  uint16_t opcolor_red;
-
492  uint16_t opcolor_green;
-
493  uint16_t opcolor_blue;
-
494 };
-
495 
- -
497  DECLARE_BOX_METHODS(SoundMediaHeader);
-
498 
-
499  uint16_t balance;
-
500 };
-
501 
- -
503  DECLARE_BOX_METHODS(SubtitleMediaHeader);
-
504 };
+ + + +
493 
+
494  bool ReadWrite(BoxBuffer* buffer);
+
495  uint32_t ComputeSize() const;
+
496 
+
497  int16_t roll_distance;
+
498 };
+
499 
+ +
501  DECLARE_BOX_METHODS(SampleGroupDescription);
+
502 
+
503  template <typename T>
+
504  bool ReadWriteEntries(BoxBuffer* buffer, std::vector<T>* entries);
505 
- -
507  DECLARE_BOX_METHODS(DataEntryUrl);
-
508 
-
509  std::vector<uint8_t> location;
-
510 };
-
511 
- -
513  DECLARE_BOX_METHODS(DataReference);
-
514 
-
515  // data entry can be either url or urn box. Fix to url box for now.
-
516  std::vector<DataEntryUrl> data_entry;
-
517 };
-
518 
- -
520  DECLARE_BOX_METHODS(DataInformation);
-
521 
-
522  DataReference dref;
-
523 };
-
524 
- -
526  DECLARE_BOX_METHODS(MediaInformation);
-
527 
-
528  DataInformation dinf;
-
529  SampleTable sample_table;
-
530  // Exactly one specific meida header shall be present, vmhd, smhd, hmhd, nmhd.
-
531  VideoMediaHeader vmhd;
-
532  SoundMediaHeader smhd;
-
533  SubtitleMediaHeader sthd;
-
534 };
-
535 
-
536 struct Media : Box {
-
537  DECLARE_BOX_METHODS(Media);
-
538 
-
539  MediaHeader header;
-
540  HandlerReference handler;
-
541  MediaInformation information;
-
542 };
-
543 
-
544 struct Track : Box {
-
545  DECLARE_BOX_METHODS(Track);
-
546 
-
547  TrackHeader header;
-
548  Media media;
-
549  Edit edit;
-
550  SampleEncryption sample_encryption;
-
551 };
-
552 
- -
554  DECLARE_BOX_METHODS(MovieExtendsHeader);
-
555 
-
556  uint64_t fragment_duration;
+
506  uint32_t grouping_type;
+
507  // Only present if grouping_type == 'seig'.
+
508  std::vector<CencSampleEncryptionInfoEntry>
+
509  cenc_sample_encryption_info_entries;
+
510  // Only present if grouping_type == 'roll'.
+
511  std::vector<AudioRollRecoveryEntry> audio_roll_recovery_entries;
+
512 };
+
513 
+ +
515  enum GroupDescriptionIndexBase {
+
516  kTrackGroupDescriptionIndexBase = 0,
+
517  kTrackFragmentGroupDescriptionIndexBase = 0x10000,
+
518  };
+
519 
+
520  uint32_t sample_count;
+
521  uint32_t group_description_index;
+
522 };
+
523 
+ +
525  DECLARE_BOX_METHODS(SampleToGroup);
+
526 
+
527  uint32_t grouping_type;
+
528  uint32_t grouping_type_parameter; // Version 1 only.
+
529  std::vector<SampleToGroupEntry> entries;
+
530 };
+
531 
+
532 struct SampleTable : Box {
+
533  DECLARE_BOX_METHODS(SampleTable);
+
534 
+
535  SampleDescription description;
+
536  DecodingTimeToSample decoding_time_to_sample;
+
537  CompositionTimeToSample composition_time_to_sample;
+
538  SampleToChunk sample_to_chunk;
+
539  // Either SampleSize or CompactSampleSize must present. Store in SampleSize.
+
540  SampleSize sample_size;
+
541  // Either ChunkOffset or ChunkLargeOffset must present. Store in
+
542  // ChunkLargeOffset.
+
543  ChunkLargeOffset chunk_large_offset;
+
544  SyncSample sync_sample;
+
545  std::vector<SampleGroupDescription> sample_group_descriptions;
+
546  std::vector<SampleToGroup> sample_to_groups;
+
547 };
+
548 
+ +
550  DECLARE_BOX_METHODS(MediaHeader);
+
551 
+
552  uint64_t creation_time;
+
553  uint64_t modification_time;
+
554  uint32_t timescale;
+
555  uint64_t duration;
+
556  Language language;
557 };
558 
- -
560  DECLARE_BOX_METHODS(TrackExtends);
+ +
560  DECLARE_BOX_METHODS(VideoMediaHeader);
561 
-
562  uint32_t track_id;
-
563  uint32_t default_sample_description_index;
-
564  uint32_t default_sample_duration;
-
565  uint32_t default_sample_size;
-
566  uint32_t default_sample_flags;
-
567 };
-
568 
-
569 struct MovieExtends : Box {
-
570  DECLARE_BOX_METHODS(MovieExtends);
-
571 
-
572  MovieExtendsHeader header;
-
573  std::vector<TrackExtends> tracks;
-
574 };
-
575 
-
576 struct Movie : Box {
-
577  DECLARE_BOX_METHODS(Movie);
-
578 
-
579  MovieHeader header;
-
580  Metadata metadata; // Used to hold version information.
-
581  MovieExtends extends;
-
582  std::vector<Track> tracks;
-
583  std::vector<ProtectionSystemSpecificHeader> pssh;
-
584 };
-
585 
- -
587  DECLARE_BOX_METHODS(TrackFragmentDecodeTime);
-
588 
-
589  uint64_t decode_time;
-
590 };
-
591 
- -
593  DECLARE_BOX_METHODS(MovieFragmentHeader);
-
594 
-
595  uint32_t sequence_number;
-
596 };
-
597 
- -
599  enum TrackFragmentFlagsMasks {
-
600  kBaseDataOffsetPresentMask = 0x000001,
-
601  kSampleDescriptionIndexPresentMask = 0x000002,
-
602  kDefaultSampleDurationPresentMask = 0x000008,
-
603  kDefaultSampleSizePresentMask = 0x000010,
-
604  kDefaultSampleFlagsPresentMask = 0x000020,
-
605  kDurationIsEmptyMask = 0x010000,
-
606  kDefaultBaseIsMoofMask = 0x020000,
-
607  };
-
608 
-
609  enum SampleFlagsMasks {
-
610  kReservedMask = 0xFC000000,
-
611  kSampleDependsOnMask = 0x03000000,
-
612  kSampleIsDependedOnMask = 0x00C00000,
-
613  kSampleHasRedundancyMask = 0x00300000,
-
614  kSamplePaddingValueMask = 0x000E0000,
-
615  kNonKeySampleMask = 0x00010000,
-
616  kSampleDegradationPriorityMask = 0x0000FFFF,
-
617  };
+
562  uint16_t graphicsmode;
+
563  uint16_t opcolor_red;
+
564  uint16_t opcolor_green;
+
565  uint16_t opcolor_blue;
+
566 };
+
567 
+ +
569  DECLARE_BOX_METHODS(SoundMediaHeader);
+
570 
+
571  uint16_t balance;
+
572 };
+
573 
+ +
575  DECLARE_BOX_METHODS(SubtitleMediaHeader);
+
576 };
+
577 
+ +
579  DECLARE_BOX_METHODS(DataEntryUrl);
+
580 
+
581  std::vector<uint8_t> location;
+
582 };
+
583 
+ +
585  DECLARE_BOX_METHODS(DataReference);
+
586 
+
587  // data entry can be either url or urn box. Fix to url box for now.
+
588  std::vector<DataEntryUrl> data_entry;
+
589 };
+
590 
+ +
592  DECLARE_BOX_METHODS(DataInformation);
+
593 
+
594  DataReference dref;
+
595 };
+
596 
+ +
598  DECLARE_BOX_METHODS(MediaInformation);
+
599 
+
600  DataInformation dinf;
+
601  SampleTable sample_table;
+
602  // Exactly one specific meida header shall be present, vmhd, smhd, hmhd, nmhd.
+
603  VideoMediaHeader vmhd;
+
604  SoundMediaHeader smhd;
+
605  SubtitleMediaHeader sthd;
+
606 };
+
607 
+
608 struct Media : Box {
+
609  DECLARE_BOX_METHODS(Media);
+
610 
+
611  MediaHeader header;
+
612  HandlerReference handler;
+
613  MediaInformation information;
+
614 };
+
615 
+
616 struct Track : Box {
+
617  DECLARE_BOX_METHODS(Track);
618 
-
619  DECLARE_BOX_METHODS(TrackFragmentHeader);
-
620 
-
621  uint32_t track_id;
-
622  uint32_t sample_description_index;
-
623  uint32_t default_sample_duration;
-
624  uint32_t default_sample_size;
-
625  uint32_t default_sample_flags;
-
626 };
+
619  TrackHeader header;
+
620  Media media;
+
621  Edit edit;
+
622  SampleEncryption sample_encryption;
+
623 };
+
624 
+ +
626  DECLARE_BOX_METHODS(MovieExtendsHeader);
627 
- -
629  enum TrackFragmentFlagsMasks {
-
630  kDataOffsetPresentMask = 0x000001,
-
631  kFirstSampleFlagsPresentMask = 0x000004,
-
632  kSampleDurationPresentMask = 0x000100,
-
633  kSampleSizePresentMask = 0x000200,
-
634  kSampleFlagsPresentMask = 0x000400,
-
635  kSampleCompTimeOffsetsPresentMask = 0x000800,
-
636  };
-
637 
-
638  DECLARE_BOX_METHODS(TrackFragmentRun);
-
639 
-
640  uint32_t sample_count;
-
641  uint32_t data_offset;
-
642  std::vector<uint32_t> sample_flags;
-
643  std::vector<uint32_t> sample_sizes;
-
644  std::vector<uint32_t> sample_durations;
-
645  std::vector<int64_t> sample_composition_time_offsets;
+
628  uint64_t fragment_duration;
+
629 };
+
630 
+ +
632  DECLARE_BOX_METHODS(TrackExtends);
+
633 
+
634  uint32_t track_id;
+
635  uint32_t default_sample_description_index;
+
636  uint32_t default_sample_duration;
+
637  uint32_t default_sample_size;
+
638  uint32_t default_sample_flags;
+
639 };
+
640 
+
641 struct MovieExtends : Box {
+
642  DECLARE_BOX_METHODS(MovieExtends);
+
643 
+
644  MovieExtendsHeader header;
+
645  std::vector<TrackExtends> tracks;
646 };
647 
- -
649  enum GroupDescriptionIndexBase {
-
650  kTrackGroupDescriptionIndexBase = 0,
-
651  kTrackFragmentGroupDescriptionIndexBase = 0x10000,
-
652  };
-
653 
-
654  uint32_t sample_count;
-
655  uint32_t group_description_index;
+
648 struct Movie : Box {
+
649  DECLARE_BOX_METHODS(Movie);
+
650 
+
651  MovieHeader header;
+
652  Metadata metadata; // Used to hold version information.
+
653  MovieExtends extends;
+
654  std::vector<Track> tracks;
+
655  std::vector<ProtectionSystemSpecificHeader> pssh;
656 };
657 
- -
659  DECLARE_BOX_METHODS(SampleToGroup);
+ +
659  DECLARE_BOX_METHODS(TrackFragmentDecodeTime);
660 
-
661  uint32_t grouping_type;
-
662  uint32_t grouping_type_parameter; // Version 1 only.
-
663  std::vector<SampleToGroupEntry> entries;
-
664 };
-
665 
- - - +
661  uint64_t decode_time;
+
662 };
+
663 
+ +
665  DECLARE_BOX_METHODS(MovieFragmentHeader);
+
666 
+
667  uint32_t sequence_number;
+
668 };
669 
-
670  uint8_t is_protected;
-
671  uint8_t per_sample_iv_size;
-
672  std::vector<uint8_t> key_id;
-
673 
-
674  // For pattern-based encryption.
-
675  uint8_t crypt_byte_block;
-
676  uint8_t skip_byte_block;
-
677 
-
678  // Present only if |is_protected == 1 && per_sample_iv_size == 0|.
-
679  std::vector<uint8_t> constant_iv;
-
680 };
-
681 
- -
683  DECLARE_BOX_METHODS(SampleGroupDescription);
-
684 
-
685  uint32_t grouping_type;
-
686  std::vector<CencSampleEncryptionInfoEntry> entries;
-
687 };
-
688 
-
689 struct TrackFragment : Box {
-
690  DECLARE_BOX_METHODS(TrackFragment);
-
691 
-
692  TrackFragmentHeader header;
-
693  std::vector<TrackFragmentRun> runs;
-
694  bool decode_time_absent;
-
695  TrackFragmentDecodeTime decode_time;
-
696  SampleToGroup sample_to_group;
-
697  SampleGroupDescription sample_group_description;
-
698  SampleAuxiliaryInformationSize auxiliary_size;
-
699  SampleAuxiliaryInformationOffset auxiliary_offset;
-
700  SampleEncryption sample_encryption;
-
701 };
-
702 
-
703 struct MovieFragment : Box {
-
704  DECLARE_BOX_METHODS(MovieFragment);
-
705 
-
706  MovieFragmentHeader header;
-
707  std::vector<TrackFragment> tracks;
-
708  std::vector<ProtectionSystemSpecificHeader> pssh;
-
709 };
-
710 
- -
712  enum SAPType {
-
713  TypeUnknown = 0,
-
714  Type1 = 1, // T(ept) = T(dec) = T(sap) = T(ptf)
-
715  Type2 = 2, // T(ept) = T(dec) = T(sap) < T(ptf)
-
716  Type3 = 3, // T(ept) < T(dec) = T(sap) <= T(ptf)
-
717  Type4 = 4, // T(ept) <= T(ptf) < T(dec) = T(sap)
-
718  Type5 = 5, // T(ept) = T(dec) < T(sap)
-
719  Type6 = 6, // T(ept) < T(dec) < T(sap)
-
720  };
-
721 
-
722  bool reference_type;
-
723  uint32_t referenced_size;
-
724  uint32_t subsegment_duration;
-
725  bool starts_with_sap;
-
726  SAPType sap_type;
-
727  uint32_t sap_delta_time;
-
728  // We add this field to keep track of earliest_presentation_time in this
-
729  // subsegment. It is not part of SegmentReference.
-
730  uint64_t earliest_presentation_time;
-
731 };
-
732 
- -
734  DECLARE_BOX_METHODS(SegmentIndex);
-
735 
-
736  uint32_t reference_id;
-
737  uint32_t timescale;
-
738  uint64_t earliest_presentation_time;
-
739  uint64_t first_offset;
-
740  std::vector<SegmentReference> references;
-
741 };
-
742 
-
743 // The actual data is parsed and written separately.
-
744 struct MediaData : Box {
-
745  DECLARE_BOX_METHODS(MediaData);
-
746 
-
747  uint32_t data_size;
-
748 };
-
749 
-
750 struct CueSourceIDBox : Box {
-
751  DECLARE_BOX_METHODS(CueSourceIDBox);
-
752  int32_t source_id;
-
753 };
-
754 
-
755 struct CueTimeBox : Box {
-
756  DECLARE_BOX_METHODS(CueTimeBox);
-
757  std::string cue_current_time;
-
758 };
-
759 
-
760 struct CueIDBox : Box {
-
761  DECLARE_BOX_METHODS(CueIDBox);
-
762  std::string cue_id;
-
763 };
-
764 
-
765 struct CueSettingsBox : Box {
-
766  DECLARE_BOX_METHODS(CueSettingsBox);
-
767  std::string settings;
-
768 };
-
769 
-
770 struct CuePayloadBox : Box {
-
771  DECLARE_BOX_METHODS(CuePayloadBox);
-
772  std::string cue_text;
-
773 };
-
774 
-
775 struct VTTEmptyCueBox : Box {
-
776  DECLARE_BOX_METHODS(VTTEmptyCueBox);
-
777 };
-
778 
- -
780  DECLARE_BOX_METHODS(VTTAdditionalTextBox);
-
781  std::string cue_additional_text;
-
782 };
-
783 
-
784 struct VTTCueBox : Box {
-
785  DECLARE_BOX_METHODS(VTTCueBox);
-
786 
-
787  CueSourceIDBox cue_source_id;
-
788  CueIDBox cue_id;
-
789  CueTimeBox cue_time;
-
790  CueSettingsBox cue_settings;
-
791  CuePayloadBox cue_payload;
-
792 };
-
793 
-
794 #undef DECLARE_BOX
-
795 
-
796 } // namespace mp4
-
797 } // namespace media
-
798 } // namespace edash_packager
-
799 
-
800 #endif // MEDIA_FORMATS_MP4_BOX_DEFINITIONS_H_
+ +
671  enum TrackFragmentFlagsMasks {
+
672  kBaseDataOffsetPresentMask = 0x000001,
+
673  kSampleDescriptionIndexPresentMask = 0x000002,
+
674  kDefaultSampleDurationPresentMask = 0x000008,
+
675  kDefaultSampleSizePresentMask = 0x000010,
+
676  kDefaultSampleFlagsPresentMask = 0x000020,
+
677  kDurationIsEmptyMask = 0x010000,
+
678  kDefaultBaseIsMoofMask = 0x020000,
+
679  };
+
680 
+
681  enum SampleFlagsMasks {
+
682  kReservedMask = 0xFC000000,
+
683  kSampleDependsOnMask = 0x03000000,
+
684  kSampleIsDependedOnMask = 0x00C00000,
+
685  kSampleHasRedundancyMask = 0x00300000,
+
686  kSamplePaddingValueMask = 0x000E0000,
+
687  kNonKeySampleMask = 0x00010000,
+
688  kSampleDegradationPriorityMask = 0x0000FFFF,
+
689  };
+
690 
+
691  DECLARE_BOX_METHODS(TrackFragmentHeader);
+
692 
+
693  uint32_t track_id;
+
694  uint32_t sample_description_index;
+
695  uint32_t default_sample_duration;
+
696  uint32_t default_sample_size;
+
697  uint32_t default_sample_flags;
+
698 };
+
699 
+ +
701  enum TrackFragmentFlagsMasks {
+
702  kDataOffsetPresentMask = 0x000001,
+
703  kFirstSampleFlagsPresentMask = 0x000004,
+
704  kSampleDurationPresentMask = 0x000100,
+
705  kSampleSizePresentMask = 0x000200,
+
706  kSampleFlagsPresentMask = 0x000400,
+
707  kSampleCompTimeOffsetsPresentMask = 0x000800,
+
708  };
+
709 
+
710  DECLARE_BOX_METHODS(TrackFragmentRun);
+
711 
+
712  uint32_t sample_count;
+
713  uint32_t data_offset;
+
714  std::vector<uint32_t> sample_flags;
+
715  std::vector<uint32_t> sample_sizes;
+
716  std::vector<uint32_t> sample_durations;
+
717  std::vector<int64_t> sample_composition_time_offsets;
+
718 };
+
719 
+
720 struct TrackFragment : Box {
+
721  DECLARE_BOX_METHODS(TrackFragment);
+
722 
+
723  TrackFragmentHeader header;
+
724  std::vector<TrackFragmentRun> runs;
+
725  bool decode_time_absent;
+
726  TrackFragmentDecodeTime decode_time;
+
727  std::vector<SampleGroupDescription> sample_group_descriptions;
+
728  std::vector<SampleToGroup> sample_to_groups;
+
729  SampleAuxiliaryInformationSize auxiliary_size;
+
730  SampleAuxiliaryInformationOffset auxiliary_offset;
+
731  SampleEncryption sample_encryption;
+
732 };
+
733 
+
734 struct MovieFragment : Box {
+
735  DECLARE_BOX_METHODS(MovieFragment);
+
736 
+
737  MovieFragmentHeader header;
+
738  std::vector<TrackFragment> tracks;
+
739  std::vector<ProtectionSystemSpecificHeader> pssh;
+
740 };
+
741 
+ +
743  enum SAPType {
+
744  TypeUnknown = 0,
+
745  Type1 = 1, // T(ept) = T(dec) = T(sap) = T(ptf)
+
746  Type2 = 2, // T(ept) = T(dec) = T(sap) < T(ptf)
+
747  Type3 = 3, // T(ept) < T(dec) = T(sap) <= T(ptf)
+
748  Type4 = 4, // T(ept) <= T(ptf) < T(dec) = T(sap)
+
749  Type5 = 5, // T(ept) = T(dec) < T(sap)
+
750  Type6 = 6, // T(ept) < T(dec) < T(sap)
+
751  };
+
752 
+
753  bool reference_type;
+
754  uint32_t referenced_size;
+
755  uint32_t subsegment_duration;
+
756  bool starts_with_sap;
+
757  SAPType sap_type;
+
758  uint32_t sap_delta_time;
+
759  // We add this field to keep track of earliest_presentation_time in this
+
760  // subsegment. It is not part of SegmentReference.
+
761  uint64_t earliest_presentation_time;
+
762 };
+
763 
+ +
765  DECLARE_BOX_METHODS(SegmentIndex);
+
766 
+
767  uint32_t reference_id;
+
768  uint32_t timescale;
+
769  uint64_t earliest_presentation_time;
+
770  uint64_t first_offset;
+
771  std::vector<SegmentReference> references;
+
772 };
+
773 
+
774 // The actual data is parsed and written separately.
+
775 struct MediaData : Box {
+
776  DECLARE_BOX_METHODS(MediaData);
+
777 
+
778  uint32_t data_size;
+
779 };
+
780 
+
781 struct CueSourceIDBox : Box {
+
782  DECLARE_BOX_METHODS(CueSourceIDBox);
+
783  int32_t source_id;
+
784 };
+
785 
+
786 struct CueTimeBox : Box {
+
787  DECLARE_BOX_METHODS(CueTimeBox);
+
788  std::string cue_current_time;
+
789 };
+
790 
+
791 struct CueIDBox : Box {
+
792  DECLARE_BOX_METHODS(CueIDBox);
+
793  std::string cue_id;
+
794 };
+
795 
+
796 struct CueSettingsBox : Box {
+
797  DECLARE_BOX_METHODS(CueSettingsBox);
+
798  std::string settings;
+
799 };
+
800 
+
801 struct CuePayloadBox : Box {
+
802  DECLARE_BOX_METHODS(CuePayloadBox);
+
803  std::string cue_text;
+
804 };
+
805 
+
806 struct VTTEmptyCueBox : Box {
+
807  DECLARE_BOX_METHODS(VTTEmptyCueBox);
+
808 };
+
809 
+ +
811  DECLARE_BOX_METHODS(VTTAdditionalTextBox);
+
812  std::string cue_additional_text;
+
813 };
+
814 
+
815 struct VTTCueBox : Box {
+
816  DECLARE_BOX_METHODS(VTTCueBox);
+
817 
+
818  CueSourceIDBox cue_source_id;
+
819  CueIDBox cue_id;
+
820  CueTimeBox cue_time;
+
821  CueSettingsBox cue_settings;
+
822  CuePayloadBox cue_payload;
+
823 };
+
824 
+
825 #undef DECLARE_BOX
+
826 
+
827 } // namespace mp4
+
828 } // namespace media
+
829 } // namespace edash_packager
+
830 
+
831 #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
- - + + - + - + - + + - + - - + + - + - - - - + + + + + - + - - - + + + - - + + - - + +
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 ReadWrite(uint8_t iv_size, bool has_subsamples, BoxBuffer *buffer)
- - + + - + diff --git a/docs/d5/d89/classedash__packager_1_1media_1_1HlsNotifyMuxerListener.html b/docs/d5/d89/classedash__packager_1_1media_1_1HlsNotifyMuxerListener.html index 5899658cb3..d51b5b4ef1 100644 --- a/docs/d5/d89/classedash__packager_1_1media_1_1HlsNotifyMuxerListener.html +++ b/docs/d5/d89/classedash__packager_1_1media_1_1HlsNotifyMuxerListener.html @@ -491,7 +491,7 @@ Additional Inherited Members diff --git a/docs/d5/d89/widevine__key__source_8cc_source.html b/docs/d5/d89/widevine__key__source_8cc_source.html index 24e0c4f707..54d4ec7f13 100644 --- a/docs/d5/d89/widevine__key__source_8cc_source.html +++ b/docs/d5/d89/widevine__key__source_8cc_source.html @@ -724,7 +724,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 73272554c7..d721ee986c 100644 --- a/docs/d5/d8f/webm__cluster__parser_8cc_source.html +++ b/docs/d5/d8f/webm__cluster__parser_8cc_source.html @@ -740,7 +740,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d91/es__parser__adts_8cc_source.html b/docs/d5/d91/es__parser__adts_8cc_source.html index e1b9546b47..06ca81de34 100644 --- a/docs/d5/d91/es__parser__adts_8cc_source.html +++ b/docs/d5/d91/es__parser__adts_8cc_source.html @@ -322,61 +322,63 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
233  kAacSampleSizeBits,
234  adts_header.GetNumChannels(),
235  extended_samples_per_second,
-
236  0,
-
237  0,
-
238  audio_specific_config.data(),
-
239  audio_specific_config.size(),
-
240  false));
-
241 
-
242  DVLOG(1) << "Sampling frequency: " << samples_per_second;
-
243  DVLOG(1) << "Extended sampling frequency: " << extended_samples_per_second;
-
244  DVLOG(1) << "Channel config: " << adts_header.GetNumChannels();
-
245  DVLOG(1) << "Object type: " << adts_header.GetObjectType();
-
246  // Reset the timestamp helper to use a new sampling frequency.
-
247  if (audio_timestamp_helper_) {
-
248  int64_t base_timestamp = audio_timestamp_helper_->GetTimestamp();
-
249  audio_timestamp_helper_.reset(
-
250  new AudioTimestampHelper(kMpeg2Timescale, samples_per_second));
-
251  audio_timestamp_helper_->SetBaseTimestamp(base_timestamp);
-
252  } else {
-
253  audio_timestamp_helper_.reset(
-
254  new AudioTimestampHelper(kMpeg2Timescale, extended_samples_per_second));
-
255  }
-
256 
-
257  // Audio config notification.
-
258  new_stream_info_cb_.Run(last_audio_decoder_config_);
-
259 
-
260  return true;
-
261 }
-
262 
-
263 void EsParserAdts::DiscardEs(int nbytes) {
-
264  DCHECK_GE(nbytes, 0);
-
265  if (nbytes <= 0)
-
266  return;
-
267 
-
268  // Adjust the ES position of each PTS.
-
269  for (EsPtsList::iterator it = pts_list_.begin(); it != pts_list_.end(); ++it)
-
270  it->first -= nbytes;
-
271 
-
272  // Discard |nbytes| of ES.
-
273  es_byte_queue_.Pop(nbytes);
-
274 }
-
275 
-
276 } // namespace mp2t
-
277 } // namespace media
-
278 } // namespace edash_packager
+
236  0 /* seek preroll */,
+
237  0 /* codec delay */,
+
238  0 /* max bitrate */,
+
239  0 /* avg bitrate */,
+
240  audio_specific_config.data(),
+
241  audio_specific_config.size(),
+
242  false));
+
243 
+
244  DVLOG(1) << "Sampling frequency: " << samples_per_second;
+
245  DVLOG(1) << "Extended sampling frequency: " << extended_samples_per_second;
+
246  DVLOG(1) << "Channel config: " << adts_header.GetNumChannels();
+
247  DVLOG(1) << "Object type: " << adts_header.GetObjectType();
+
248  // Reset the timestamp helper to use a new sampling frequency.
+
249  if (audio_timestamp_helper_) {
+
250  int64_t base_timestamp = audio_timestamp_helper_->GetTimestamp();
+
251  audio_timestamp_helper_.reset(
+
252  new AudioTimestampHelper(kMpeg2Timescale, samples_per_second));
+
253  audio_timestamp_helper_->SetBaseTimestamp(base_timestamp);
+
254  } else {
+
255  audio_timestamp_helper_.reset(
+
256  new AudioTimestampHelper(kMpeg2Timescale, extended_samples_per_second));
+
257  }
+
258 
+
259  // Audio config notification.
+
260  new_stream_info_cb_.Run(last_audio_decoder_config_);
+
261 
+
262  return true;
+
263 }
+
264 
+
265 void EsParserAdts::DiscardEs(int nbytes) {
+
266  DCHECK_GE(nbytes, 0);
+
267  if (nbytes <= 0)
+
268  return;
+
269 
+
270  // Adjust the ES position of each PTS.
+
271  for (EsPtsList::iterator it = pts_list_.begin(); it != pts_list_.end(); ++it)
+
272  it->first -= nbytes;
+
273 
+
274  // Discard |nbytes| of ES.
+
275  es_byte_queue_.Pop(nbytes);
+
276 }
+
277 
+
278 } // namespace mp2t
+
279 } // namespace media
+
280 } // namespace edash_packager
static size_t GetAdtsFrameSize(const uint8_t *data, size_t num_bytes)
Definition: adts_header.cc:23
void Push(const uint8_t *data, int size)
Append new bytes to the end of the queue.
Definition: byte_queue.cc:29
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 dad05b053f..31426f08cf 100644 --- a/docs/d5/d98/encryptor_8cc_source.html +++ b/docs/d5/d98/encryptor_8cc_source.html @@ -234,7 +234,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d98/structedash__packager_1_1media_1_1H264Pps-members.html b/docs/d5/d98/structedash__packager_1_1media_1_1H264Pps-members.html index 8e69ef8215..fef69aec91 100644 --- a/docs/d5/d98/structedash__packager_1_1media_1_1H264Pps-members.html +++ b/docs/d5/d98/structedash__packager_1_1media_1_1H264Pps-members.html @@ -117,7 +117,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 7f0c0693f4..39ad2d9eb7 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/d9f/structedash__packager_1_1media_1_1H265Pps-members.html b/docs/d5/d9f/structedash__packager_1_1media_1_1H265Pps-members.html index 76fd3a3507..0441d5f409 100644 --- a/docs/d5/d9f/structedash__packager_1_1media_1_1H265Pps-members.html +++ b/docs/d5/d9f/structedash__packager_1_1media_1_1H265Pps-members.html @@ -137,7 +137,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/da2/classedash__packager_1_1media_1_1mp2t_1_1EsParserH26x-members.html b/docs/d5/da2/classedash__packager_1_1media_1_1mp2t_1_1EsParserH26x-members.html index 0df74523e9..2be5643df2 100644 --- a/docs/d5/da2/classedash__packager_1_1media_1_1mp2t_1_1EsParserH26x-members.html +++ b/docs/d5/da2/classedash__packager_1_1media_1_1mp2t_1_1EsParserH26x-members.html @@ -107,7 +107,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 7360b73663..d178f35673 100644 --- a/docs/d5/da4/aes__encryptor_8cc_source.html +++ b/docs/d5/da4/aes__encryptor_8cc_source.html @@ -297,7 +297,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 57ff550925..937e34a077 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 d723799ca9..fede64c3f8 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 2841988c1a..73430d8d4f 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/dc9/classedash__packager_1_1media_1_1AesCbcDecryptor-members.html b/docs/d5/dc9/classedash__packager_1_1media_1_1AesCbcDecryptor-members.html index c60bb86e3a..52af561b93 100644 --- a/docs/d5/dc9/classedash__packager_1_1media_1_1AesCbcDecryptor-members.html +++ b/docs/d5/dc9/classedash__packager_1_1media_1_1AesCbcDecryptor-members.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/dcb/classedash__packager_1_1media_1_1AesCbcDecryptor.html b/docs/d5/dcb/classedash__packager_1_1media_1_1AesCbcDecryptor.html index 4ac553a306..8993be2ee8 100644 --- a/docs/d5/dcb/classedash__packager_1_1media_1_1AesCbcDecryptor.html +++ b/docs/d5/dcb/classedash__packager_1_1media_1_1AesCbcDecryptor.html @@ -277,7 +277,7 @@ AES_KEY * mutable_aes_key< 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 562ef077d5..175581c763 100644 --- a/docs/d5/dce/classedash__packager_1_1media_1_1Demuxer.html +++ b/docs/d5/dce/classedash__packager_1_1media_1_1Demuxer.html @@ -295,7 +295,7 @@ Public Member Functions diff --git a/docs/d5/dce/classedash__packager_1_1media_1_1VP8Parser.html b/docs/d5/dce/classedash__packager_1_1media_1_1VP8Parser.html index bb4a32e98a..4bc9307047 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 788a85e23f..5a825755aa 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 e4bb48f4bb..b0185011e7 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 dac14b23a3..43f9b66f78 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 4eaebfa894..4bb326e162 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 9d0ad6b866..c062ad2034 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 c8bdebd058..54027bdce3 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/dfc/file_8cc_source.html b/docs/d5/dfc/file_8cc_source.html index 05f0588b3f..4207e1891b 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 00585a09db..e8940c8511 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/d05/structedash__packager_1_1media_1_1H265SliceHeader_1_1LongTermPicsInfo-members.html b/docs/d6/d05/structedash__packager_1_1media_1_1H265SliceHeader_1_1LongTermPicsInfo-members.html index bbb66dd291..5944c060d9 100644 --- a/docs/d6/d05/structedash__packager_1_1media_1_1H265SliceHeader_1_1LongTermPicsInfo-members.html +++ b/docs/d6/d05/structedash__packager_1_1media_1_1H265SliceHeader_1_1LongTermPicsInfo-members.html @@ -98,7 +98,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 9af69a220e..28f7948d2e 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/d09/aes__pattern__cryptor_8h_source.html b/docs/d6/d09/aes__pattern__cryptor_8h_source.html index 36de4ded68..fa09f8ae81 100644 --- a/docs/d6/d09/aes__pattern__cryptor_8h_source.html +++ b/docs/d6/d09/aes__pattern__cryptor_8h_source.html @@ -148,7 +148,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d09/classedash__packager_1_1media_1_1H265Parser-members.html b/docs/d6/d09/classedash__packager_1_1media_1_1H265Parser-members.html index 8af10d93f0..b0202a44a0 100644 --- a/docs/d6/d09/classedash__packager_1_1media_1_1H265Parser-members.html +++ b/docs/d6/d09/classedash__packager_1_1media_1_1H265Parser-members.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); 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 68ced7985f..77ab253242 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 6863181e1a..699782e731 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 2168974c72..909c5835bf 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 fcdac828cd..72479039bb 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 0f00c483bc..bd14770d89 100644 --- a/docs/d6/d17/es__parser__h264_8cc_source.html +++ b/docs/d6/d17/es__parser__h264_8cc_source.html @@ -268,7 +268,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 37535fd3ba..bbce367a92 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 @@ -93,16 +93,18 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');

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

- - - + + + + + - - - - - - + + + + + + @@ -114,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
Box() (defined in edash_packager::media::mp4::Box)edash_packager::media::mp4::Box
box_size()edash_packager::media::mp4::Boxinline
BoxType() const overrideedash_packager::media::mp4::SampleGroupDescriptionvirtual
audio_roll_recovery_entries (defined in edash_packager::media::mp4::SampleGroupDescription)edash_packager::media::mp4::SampleGroupDescription
Box() (defined in edash_packager::media::mp4::Box)edash_packager::media::mp4::Box
box_size()edash_packager::media::mp4::Boxinline
BoxType() const overrideedash_packager::media::mp4::SampleGroupDescriptionvirtual
cenc_sample_encryption_info_entries (defined in edash_packager::media::mp4::SampleGroupDescription)edash_packager::media::mp4::SampleGroupDescription
ComputeSize()edash_packager::media::mp4::Box
entries (defined in edash_packager::media::mp4::SampleGroupDescription)edash_packager::media::mp4::SampleGroupDescription
flags (defined in edash_packager::media::mp4::FullBox)edash_packager::media::mp4::FullBox
FullBox() (defined in edash_packager::media::mp4::FullBox)edash_packager::media::mp4::FullBox
grouping_type (defined in edash_packager::media::mp4::SampleGroupDescription)edash_packager::media::mp4::SampleGroupDescription
HeaderSize() const finaledash_packager::media::mp4::FullBoxvirtual
Parse(BoxReader *reader)edash_packager::media::mp4::Box
flags (defined in edash_packager::media::mp4::FullBox)edash_packager::media::mp4::FullBox
FullBox() (defined in edash_packager::media::mp4::FullBox)edash_packager::media::mp4::FullBox
grouping_type (defined in edash_packager::media::mp4::SampleGroupDescription)edash_packager::media::mp4::SampleGroupDescription
HeaderSize() const finaledash_packager::media::mp4::FullBoxvirtual
Parse(BoxReader *reader)edash_packager::media::mp4::Box
ReadWriteEntries(BoxBuffer *buffer, std::vector< T > *entries) (defined in edash_packager::media::mp4::SampleGroupDescription)edash_packager::media::mp4::SampleGroupDescription
ReadWriteHeaderInternal(BoxBuffer *buffer) finaledash_packager::media::mp4::FullBoxprotectedvirtual
SampleGroupDescription() (defined in edash_packager::media::mp4::SampleGroupDescription)edash_packager::media::mp4::SampleGroupDescription
version (defined in edash_packager::media::mp4::FullBox)edash_packager::media::mp4::FullBox
diff --git a/docs/d6/d1a/ts__packet__writer__util_8cc_source.html b/docs/d6/d1a/ts__packet__writer__util_8cc_source.html index 0f50894673..8545a3a950 100644 --- a/docs/d6/d1a/ts__packet__writer__util_8cc_source.html +++ b/docs/d6/d1a/ts__packet__writer__util_8cc_source.html @@ -255,7 +255,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 1927844ece..2a8490885b 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/d1d/structedash__packager_1_1media_1_1H265ReferencePictureListModifications-members.html b/docs/d6/d1d/structedash__packager_1_1media_1_1H265ReferencePictureListModifications-members.html index 85bd72063b..a400f50ab3 100644 --- a/docs/d6/d1d/structedash__packager_1_1media_1_1H265ReferencePictureListModifications-members.html +++ b/docs/d6/d1d/structedash__packager_1_1media_1_1H265ReferencePictureListModifications-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d29/classedash__packager_1_1media_1_1AesCryptor-members.html b/docs/d6/d29/classedash__packager_1_1media_1_1AesCryptor-members.html index 2c7f6df476..c05a58c4b3 100644 --- a/docs/d6/d29/classedash__packager_1_1media_1_1AesCryptor-members.html +++ b/docs/d6/d29/classedash__packager_1_1media_1_1AesCryptor-members.html @@ -112,7 +112,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 f3dde390c5..243d6a2db2 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 4ad37eab69..092cd50d31 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 961b61c05d..84c03caa0b 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 5bfd666e4a..e8a0d7c04c 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 c60ec24442..b699e5141d 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/d3e/classedash__packager_1_1media_1_1mp2t_1_1PesPacket.html b/docs/d6/d3e/classedash__packager_1_1media_1_1mp2t_1_1PesPacket.html index 81b628d1ed..b6df1a1458 100644 --- a/docs/d6/d3e/classedash__packager_1_1media_1_1mp2t_1_1PesPacket.html +++ b/docs/d6/d3e/classedash__packager_1_1media_1_1mp2t_1_1PesPacket.html @@ -387,7 +387,7 @@ const std::vector< uint8_t > &  diff --git a/docs/d6/d41/encrypting__fragmenter_8cc_source.html b/docs/d6/d41/encrypting__fragmenter_8cc_source.html index ae4360d353..c0df7fe6c1 100644 --- a/docs/d6/d41/encrypting__fragmenter_8cc_source.html +++ b/docs/d6/d41/encrypting__fragmenter_8cc_source.html @@ -156,7 +156,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
67  FourCC protection_scheme,
68  uint8_t crypt_byte_block,
69  uint8_t skip_byte_block)
-
70  : Fragmenter(traf),
+
70  : Fragmenter(info, traf),
71  info_(info),
72  encryption_key_(encryption_key.Pass()),
73  nalu_length_size_(GetNaluLengthSize(*info)),
@@ -443,32 +443,32 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
354 } // namespace media
355 } // namespace edash_packager
- +
Status InitializeFragment(int64_t first_sample_dts) override
-
virtual Status InitializeFragment(int64_t first_sample_dts)
Definition: fragmenter.cc:76
-
virtual Status AddSample(scoped_refptr< MediaSample > sample)
Definition: fragmenter.cc:36
+
virtual Status InitializeFragment(int64_t first_sample_dts)
Definition: fragmenter.cc:85
+
virtual Status AddSample(scoped_refptr< MediaSample > sample)
Definition: fragmenter.cc:45
Class to parse a vp9 bit stream.
Definition: vp9_parser.h:20
-
bool OptimizeSampleEntries(std::vector< T > *entries, T *default_value)
Definition: fragmenter.h:89
+
bool OptimizeSampleEntries(std::vector< T > *entries, T *default_value)
Definition: fragmenter.h:92
Status AddSample(scoped_refptr< MediaSample > sample) override
Implements pattern-based encryption/decryption.
void FinalizeFragment() override
Finalize and optimize the fragment.
- +
virtual Status PrepareFragmentForEncryption(bool enable_encryption)
virtual void FinalizeFragmentForEncryption()
Finalize current fragment for encryption.
-
virtual void FinalizeFragment()
Finalize and optimize the fragment.
Definition: fragmenter.cc:93
+
virtual void FinalizeFragment()
Finalize and optimize the fragment.
Definition: fragmenter.cc:104
EncryptingFragmenter(scoped_refptr< StreamInfo > info, TrackFragment *traf, scoped_ptr< EncryptionKey > encryption_key, int64_t clear_time, FourCC protection_scheme, uint8_t crypt_byte_block, uint8_t skip_byte_block)
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 b93ad04dff..fe654a385f 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 b3e4cbd981..85c2883775 100644 --- a/docs/d6/d49/classedash__packager_1_1media_1_1AVCDecoderConfiguration.html +++ b/docs/d6/d49/classedash__packager_1_1media_1_1AVCDecoderConfiguration.html @@ -244,7 +244,7 @@ void  diff --git a/docs/d6/d4e/webm_2multi__segment__segmenter_8cc_source.html b/docs/d6/d4e/webm_2multi__segment__segmenter_8cc_source.html index d3fb29c326..2e1e014f87 100644 --- a/docs/d6/d4e/webm_2multi__segment__segmenter_8cc_source.html +++ b/docs/d6/d4e/webm_2multi__segment__segmenter_8cc_source.html @@ -188,7 +188,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d55/aes__cryptor_8cc_source.html b/docs/d6/d55/aes__cryptor_8cc_source.html index c39b5f1f8b..3e85152c58 100644 --- a/docs/d6/d55/aes__cryptor_8cc_source.html +++ b/docs/d6/d55/aes__cryptor_8cc_source.html @@ -231,7 +231,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d59/protection__system__specific__info_8h_source.html b/docs/d6/d59/protection__system__specific__info_8h_source.html index d33ec73fdb..b92af84ec8 100644 --- a/docs/d6/d59/protection__system__specific__info_8h_source.html +++ b/docs/d6/d59/protection__system__specific__info_8h_source.html @@ -163,7 +163,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 ff40fa2fb3..fe21c7cf86 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 519 of file box_definitions.h.

+

Definition at line 591 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 1721 of file box_definitions.cc.

+

Definition at line 1969 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 6b11ff005c..11822105a9 100644 --- a/docs/d6/d5d/classedash__packager_1_1media_1_1HEVCDecoderConfiguration.html +++ b/docs/d6/d5d/classedash__packager_1_1media_1_1HEVCDecoderConfiguration.html @@ -171,7 +171,7 @@ void  diff --git a/docs/d6/d5e/structedash__packager_1_1media_1_1H264SEIRecoveryPoint-members.html b/docs/d6/d5e/structedash__packager_1_1media_1_1H264SEIRecoveryPoint-members.html index 9f61900d01..1696c3cc15 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 7ad9931245..257833f447 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/h26x__bit__reader_8cc_source.html b/docs/d6/d6c/h26x__bit__reader_8cc_source.html index 4be1220f1f..552f921d89 100644 --- a/docs/d6/d6c/h26x__bit__reader_8cc_source.html +++ b/docs/d6/d6c/h26x__bit__reader_8cc_source.html @@ -259,7 +259,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 5de53b2eab..20eb93221b 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 506 of file box_definitions.h.

+

Definition at line 578 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 1679 of file box_definitions.cc.

+

Definition at line 1927 of file box_definitions.cc.

@@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/d6/d6e/ts__section__pes_8cc_source.html b/docs/d6/d6e/ts__section__pes_8cc_source.html index d0986e3d33..517270c5ef 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 79cf012acc..e7548a2d77 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 dbd2498988..8462047363 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 784 of file box_definitions.h.

+

Definition at line 815 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 2574 of file box_definitions.cc.

+

Definition at line 2670 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 7de955af88..58b847fa5e 100644 --- a/docs/d6/d77/dash__iop__mpd__notifier_8h_source.html +++ b/docs/d6/d77/dash__iop__mpd__notifier_8h_source.html @@ -210,7 +210,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 c0238e7cf7..58dbd97335 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 451 of file box_definitions.h.

+

Definition at line 460 of file box_definitions.h.

Member Function Documentation

@@ -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 8bdb6e02b7..3f1102064e 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 af4f5b219f..072ecacb2a 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 843cb143a6..ba691a3451 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 0faeaa2836..c12237a761 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/d86/classedash__packager_1_1media_1_1mp2t_1_1EsParserH26x.html b/docs/d6/d86/classedash__packager_1_1media_1_1mp2t_1_1EsParserH26x.html index 5a3c2cbe2b..93645d38fe 100644 --- a/docs/d6/d86/classedash__packager_1_1media_1_1mp2t_1_1EsParserH26x.html +++ b/docs/d6/d86/classedash__packager_1_1media_1_1mp2t_1_1EsParserH26x.html @@ -159,7 +159,7 @@ const scoped_refptr
diff --git a/docs/d6/d8a/vp9__parser_8cc_source.html b/docs/d6/d8a/vp9__parser_8cc_source.html index 20ffd217fc..55197a9fa2 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 2ea1ae2eb5..6209015e77 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 569 of file box_definitions.h.

+

Definition at line 641 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 1879 of file box_definitions.cc.

+

Definition at line 2127 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 39fab3a8f2..11b05ec689 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 cf918d1491..da236bff69 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 fc0abd90d4..8b13cc60cc 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 a07f477a41..121561b9dd 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 9a925e2501..74e0c58c24 100644 --- a/docs/d6/d9b/h264__parser_8h_source.html +++ b/docs/d6/d9b/h264__parser_8h_source.html @@ -439,7 +439,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d9c/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPes-members.html b/docs/d6/d9c/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPes-members.html index e366abef44..46ff71b609 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 3d925b4545..955b926c1b 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/da3/classedash__packager_1_1media_1_1H264Parser.html b/docs/d6/da3/classedash__packager_1_1media_1_1H264Parser.html index 80901f7759..e33c6b69a9 100644 --- a/docs/d6/da3/classedash__packager_1_1media_1_1H264Parser.html +++ b/docs/d6/da3/classedash__packager_1_1media_1_1H264Parser.html @@ -135,7 +135,7 @@ Result ParseSEI (const diff --git a/docs/d6/da3/mpd__builder_8h_source.html b/docs/d6/da3/mpd__builder_8h_source.html index bc43fd7b11..657d8c5dad 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 3ca4f39ad2..841c8d7b8c 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 b586b1d502..12b44bb702 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 a50b6ba7f4..36fd04346a 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 1b7a9bf002..b32fc9a546 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 4f6660fbce..e10960cd7b 100644 --- a/docs/d6/dc2/classedash__packager_1_1media_1_1TextTrackConfig-members.html +++ b/docs/d6/dc2/classedash__packager_1_1media_1_1TextTrackConfig-members.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/dc2/classedash__packager_1_1media_1_1mp4_1_1H264VideoSliceHeaderParser.html b/docs/d6/dc2/classedash__packager_1_1media_1_1mp4_1_1H264VideoSliceHeaderParser.html index 43bc7fedfe..140d826814 100644 --- a/docs/d6/dc2/classedash__packager_1_1media_1_1mp4_1_1H264VideoSliceHeaderParser.html +++ b/docs/d6/dc2/classedash__packager_1_1media_1_1mp4_1_1H264VideoSliceHeaderParser.html @@ -152,7 +152,7 @@ int64_t  diff --git a/docs/d6/dc8/mkv__writer_8cc_source.html b/docs/d6/dc8/mkv__writer_8cc_source.html index 3389bc3413..3530d89fab 100644 --- a/docs/d6/dc8/mkv__writer_8cc_source.html +++ b/docs/d6/dc8/mkv__writer_8cc_source.html @@ -195,7 +195,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 0015a9e10f..709bd244d1 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 60fc14b083..1d9f59ade0 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 c754df8667..204a8a469a 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/de8/local__file_8cc_source.html b/docs/d6/de8/local__file_8cc_source.html index d675a8f04f..0818621645 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 ab13606d23..aa57e6f546 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/de9/ts__segmenter_8cc_source.html b/docs/d6/de9/ts__segmenter_8cc_source.html index c1aa9596aa..58e08b5492 100644 --- a/docs/d6/de9/ts__segmenter_8cc_source.html +++ b/docs/d6/de9/ts__segmenter_8cc_source.html @@ -307,7 +307,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 2c2932a170..f224ed387a 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 576 of file box_definitions.h.

+

Definition at line 648 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 1907 of file box_definitions.cc.

+

Definition at line 2155 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 422012709d..21f36e94a5 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 3aa418ca4d..96368a4693 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 754866394c..d31dbf88e8 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 d4410568dd..1f1429c524 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/d6/dff/classedash__packager_1_1media_1_1H265Parser.html b/docs/d6/dff/classedash__packager_1_1media_1_1H265Parser.html index 6614e06d41..a2f104d0ce 100644 --- a/docs/d6/dff/classedash__packager_1_1media_1_1H265Parser.html +++ b/docs/d6/dff/classedash__packager_1_1media_1_1H265Parser.html @@ -256,7 +256,7 @@ Public Member Functions 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 44c376ad53..48e5bf1ad2 100644 --- a/docs/d7/d0b/muxer__listener__test__helper_8h_source.html +++ b/docs/d7/d0b/muxer__listener__test__helper_8h_source.html @@ -206,7 +206,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 31e85f003b..fe6258def5 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 512 of file box_definitions.h.

+

Definition at line 584 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 1699 of file box_definitions.cc.

+

Definition at line 1947 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 c3fa05f8e3..b28e4f10de 100644 --- a/docs/d7/d12/media__parser_8h_source.html +++ b/docs/d7/d12/media__parser_8h_source.html @@ -150,7 +150,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d15/classedash__packager_1_1Representation.html b/docs/d7/d15/classedash__packager_1_1Representation.html index b32b8c6ce3..0332a4d583 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 afc2df088a..3fe77b2fa1 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/classedash__packager_1_1media_1_1AesCbcEncryptor-members.html b/docs/d7/d1c/classedash__packager_1_1media_1_1AesCbcEncryptor-members.html index 06ede646aa..0fa4f10bbf 100644 --- a/docs/d7/d1c/classedash__packager_1_1media_1_1AesCbcEncryptor-members.html +++ b/docs/d7/d1c/classedash__packager_1_1media_1_1AesCbcEncryptor-members.html @@ -117,7 +117,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 c2e642c2db..6e5717cfc3 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 386 of file box_definitions.h.

+

Definition at line 395 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 46b458f3b0..6becee861a 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 1dacc66b4d..b35bacdcf8 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 1ff7d1f091..927f987972 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 b06bfc98b7..1884637466 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 21fc33da78..ac7e8a8ac9 100644 --- a/docs/d7/d40/classedash__packager_1_1media_1_1WebMClusterParser-members.html +++ b/docs/d7/d40/classedash__packager_1_1media_1_1WebMClusterParser-members.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d42/protection__system__specific__info_8cc_source.html b/docs/d7/d42/protection__system__specific__info_8cc_source.html index 2f9473a816..9cc2548e5d 100644 --- a/docs/d7/d42/protection__system__specific__info_8cc_source.html +++ b/docs/d7/d42/protection__system__specific__info_8cc_source.html @@ -219,7 +219,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 b537c074e0..9d655de587 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 95f21abcb3..a1d6e6f1da 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 770 of file box_definitions.h.

+

Definition at line 801 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 2524 of file box_definitions.cc.

+

Definition at line 2620 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 0977954d4c..5cbe7e6a59 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 1014 of file box_definitions.cc.

+

Definition at line 1210 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 487af4387d..54b6092442 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 @@ -107,7 +107,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); fragment_duration() const (defined in edash_packager::media::mp4::Fragmenter)edash_packager::media::mp4::Fragmenterinline fragment_finalized() const (defined in edash_packager::media::mp4::Fragmenter)edash_packager::media::mp4::Fragmenterinline fragment_initialized() const (defined in edash_packager::media::mp4::Fragmenter)edash_packager::media::mp4::Fragmenterinline - Fragmenter(TrackFragment *traf)edash_packager::media::mp4::Fragmenter + Fragmenter(scoped_refptr< StreamInfo > info, TrackFragment *traf)edash_packager::media::mp4::Fragmenter GenerateSegmentReference(SegmentReference *reference)edash_packager::media::mp4::Fragmenter InitializeFragment(int64_t first_sample_dts) overrideedash_packager::media::mp4::EncryptingFragmentervirtual OptimizeSampleEntries(std::vector< T > *entries, T *default_value)edash_packager::media::mp4::Fragmenterprotected @@ -121,7 +121,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 7bc30cfefd..fbd9d901b7 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 3bb4c5ec2a..7d555a4a24 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 @@ -87,6 +87,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
@@ -94,6 +95,15 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
+ + + + + +

+Public Member Functions

+bool ReadWrite (BoxBuffer *buffer)
 
+uint32_t ComputeSize () const
 

Public Attributes

@@ -117,7 +127,7 @@ std::vector< uint8_t > 

Detailed Description

-

Definition at line 666 of file box_definitions.h.

+

Definition at line 471 of file box_definitions.h.


The documentation for this struct was generated from the following files:
diff --git a/docs/d7/d56/structedash__packager_1_1media_1_1mp4_1_1EC3Specific-members.html b/docs/d7/d56/structedash__packager_1_1media_1_1mp4_1_1EC3Specific-members.html index b00f9dfefe..a84280900a 100644 --- a/docs/d7/d56/structedash__packager_1_1media_1_1mp4_1_1EC3Specific-members.html +++ b/docs/d7/d56/structedash__packager_1_1media_1_1mp4_1_1EC3Specific-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
diff --git a/docs/d7/d5a/classedash__packager_1_1media_1_1AesEncryptor-members.html b/docs/d7/d5a/classedash__packager_1_1media_1_1AesEncryptor-members.html index d165c3b382..0135b97734 100644 --- a/docs/d7/d5a/classedash__packager_1_1media_1_1AesEncryptor-members.html +++ b/docs/d7/d5a/classedash__packager_1_1media_1_1AesEncryptor-members.html @@ -114,7 +114,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d79/structedash__packager_1_1media_1_1mp4_1_1MediaData-members.html b/docs/d7/d79/structedash__packager_1_1media_1_1mp4_1_1MediaData-members.html index f5ccde218a..cc4e1a6bf6 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 c09e8aaaa6..df17fe86dc 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 f2d4367c57..f48a540383 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 a4dfb509ec..a5084523dd 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 25d3521482..36cc1f8f88 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 a6abf81f42..6339e2b798 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 4ce9dbb276..df4e823673 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 @@ -123,20 +123,21 @@ Inheritance diagram for edash_packager::media::mp4::Box: 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::TextSampleEntry -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::OpusSpecific +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::TextSampleEntry +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 @@ -221,7 +222,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::TextSampleEntry, 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.

+

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::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::SampleToGroup, edash_packager::media::mp4::SampleGroupDescription, 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::TextSampleEntry, edash_packager::media::mp4::WebVTTSourceLabelBox, edash_packager::media::mp4::WebVTTConfigurationBox, edash_packager::media::mp4::AudioSampleEntry, edash_packager::media::mp4::OpusSpecific, 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.

@@ -384,7 +385,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 fe3cbb4fc5..8b03521a1b 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 5877cbce87..f62ceec14c 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 b43decf2e9..d6a6d662ac 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 e9e4cf3ac7..57e6bc9a18 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 822bc49dda..abfaff23e9 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 427 of file box_definitions.h.

+

Definition at line 436 of file box_definitions.h.

Member Function Documentation

@@ -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 e925dfdc55..db19dc21b7 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 d4040302d3..ae409f265a 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 6967485b45..6b7c6418f0 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 b2d03f9dd2..fd52376ec0 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 350 of file box_definitions.h.

+

Definition at line 359 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 1530 of file box_definitions.cc.

+

Definition at line 1778 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 6f5fdbf9ac..218278f7e1 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 37d666bada..d017797fc2 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 5678718b82..c7cb0904fe 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 8a4d2a1280..0b0fa2df67 100644 --- a/docs/d7/dd6/key__source_8cc_source.html +++ b/docs/d7/dd6/key__source_8cc_source.html @@ -142,7 +142,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 9210acfcaf..0c8e777023 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/de6/structedash__packager_1_1media_1_1H265SliceHeader.html b/docs/d7/de6/structedash__packager_1_1media_1_1H265SliceHeader.html index dbd635e372..5a89e52889 100644 --- a/docs/d7/de6/structedash__packager_1_1media_1_1H265SliceHeader.html +++ b/docs/d7/de6/structedash__packager_1_1media_1_1H265SliceHeader.html @@ -236,7 +236,7 @@ std::vector< int > e 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 92c029f75e..4e6ecbbc5b 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 @@ -134,7 +134,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 376cda6434..aadd704899 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 477 of file box_definitions.h.

+

Definition at line 549 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 1604 of file box_definitions.cc.

+

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

Implements edash_packager::media::MediaParser.

-

Definition at line 121 of file mp4_media_parser.cc.

+

Definition at line 122 of file mp4_media_parser.cc.

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

Implements edash_packager::media::MediaParser.

-

Definition at line 98 of file mp4_media_parser.cc.

+

Definition at line 99 of file mp4_media_parser.cc.

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

Definition at line 162 of file mp4_media_parser.cc.

+

Definition at line 163 of file mp4_media_parser.cc.

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

Implements edash_packager::media::MediaParser.

-

Definition at line 128 of file mp4_media_parser.cc.

+

Definition at line 129 of file mp4_media_parser.cc.

@@ -285,7 +285,7 @@ track_id, const scoped_refptr
diff --git a/docs/d8/d0d/media__sample_8cc_source.html b/docs/d8/d0d/media__sample_8cc_source.html index cba326ad99..6630d90cdf 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 04c965600c..99d9433db8 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 9e704cd130..6f8a88269e 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 @@ -124,8 +124,8 @@ void  Finalize and optimize the fragment.
  - Public Member Functions inherited from
edash_packager::media::mp4::FragmenterFragmenter (TrackFragment *traf) -  + Fragmenter (scoped_refptr< StreamInfo > info, TrackFragment *traf) +  void GenerateSegmentReference (SegmentReference *reference)  Fill reference with current fragment information.
@@ -245,6 +245,7 @@ void set_encryption_key
Parameters
+ @@ -396,7 +397,7 @@ void 
infocontains stream information.
trafpoints to a TrackFragment box.
encryption_keycontains the encryption parameters.
clear_timespecifies clear lead duration in units of the current track's timescale.
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 9349913929..c0c2e99e84 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 413 of file box_definitions.h.

+

Definition at line 422 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 b3de7a7172..44a9d5f444 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 2afd38d2d0..a74b79c8ec 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 30385ca7c3..2ec69b7310 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/d28/es__parser__h265_8h_source.html b/docs/d8/d28/es__parser__h265_8h_source.html index 4c14a944ed..086073221f 100644 --- a/docs/d8/d28/es__parser__h265_8h_source.html +++ b/docs/d8/d28/es__parser__h265_8h_source.html @@ -155,7 +155,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 a2fcdc425e..2361020dbb 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 2c4e8ea697..65176287a1 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 22241bb638..a3354da21f 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 977b745643..79412064de 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/d37/classedash__packager_1_1media_1_1mp2t_1_1ContinuityCounter.html b/docs/d8/d37/classedash__packager_1_1media_1_1mp2t_1_1ContinuityCounter.html index b1fd00a9a0..e787ca8394 100644 --- a/docs/d8/d37/classedash__packager_1_1media_1_1mp2t_1_1ContinuityCounter.html +++ b/docs/d8/d37/classedash__packager_1_1media_1_1mp2t_1_1ContinuityCounter.html @@ -129,7 +129,7 @@ Public Member Functions diff --git a/docs/d8/d42/classedash__packager_1_1media_1_1mp2t_1_1AacProgramMapTableWriter-members.html b/docs/d8/d42/classedash__packager_1_1media_1_1mp2t_1_1AacProgramMapTableWriter-members.html index 4a66b7ad49..6cca779ae8 100644 --- a/docs/d8/d42/classedash__packager_1_1media_1_1mp2t_1_1AacProgramMapTableWriter-members.html +++ b/docs/d8/d42/classedash__packager_1_1media_1_1mp2t_1_1AacProgramMapTableWriter-members.html @@ -105,7 +105,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 3a6af37d5d..cf59f4564f 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 977 of file box_definitions.cc.

+

Definition at line 1173 of file box_definitions.cc.

@@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/d8/d4d/aes__decryptor_8h_source.html b/docs/d8/d4d/aes__decryptor_8h_source.html index 427a5f8ff3..1725abed07 100644 --- a/docs/d8/d4d/aes__decryptor_8h_source.html +++ b/docs/d8/d4d/aes__decryptor_8h_source.html @@ -147,7 +147,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d4d/classedash__packager_1_1media_1_1H265ByteToUnitStreamConverter.html b/docs/d8/d4d/classedash__packager_1_1media_1_1H265ByteToUnitStreamConverter.html index 97119940ff..4ee1f39d7a 100644 --- a/docs/d8/d4d/classedash__packager_1_1media_1_1H265ByteToUnitStreamConverter.html +++ b/docs/d8/d4d/classedash__packager_1_1media_1_1H265ByteToUnitStreamConverter.html @@ -171,7 +171,7 @@ static const size_t kUnitS 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 5ae9d8246b..87ae8f0493 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 @@ -93,22 +93,24 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');

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

- + - - - - - - - - - - - - + + + + + + + + + + + + + + @@ -124,7 +126,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
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)edash_packager::media::AudioStreamInfo
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, uint64_t seek_preroll_ns, uint64_t codec_delay_ns, uint32_t max_bitrate, uint32_t avg_bitrate, const uint8_t *extra_data, size_t extra_data_size, bool is_encrypted)edash_packager::media::AudioStreamInfo
avg_bitrate() const (defined in edash_packager::media::AudioStreamInfo)edash_packager::media::AudioStreamInfoinline
bytes_per_frame() const (defined in edash_packager::media::AudioStreamInfo)edash_packager::media::AudioStreamInfoinline
codec() const (defined in edash_packager::media::AudioStreamInfo)edash_packager::media::AudioStreamInfoinline
codec_string() const (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline
duration() const (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline
extra_data() const (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline
GetCodecString(AudioCodec codec, uint8_t audio_object_type)edash_packager::media::AudioStreamInfostatic
is_encrypted() const (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline
IsValidConfig() const overrideedash_packager::media::AudioStreamInfovirtual
language() const (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline
max_bitrate() const (defined in edash_packager::media::AudioStreamInfo)edash_packager::media::AudioStreamInfoinline
num_channels() const (defined in edash_packager::media::AudioStreamInfo)edash_packager::media::AudioStreamInfoinline
sample_bits() const (defined in edash_packager::media::AudioStreamInfo)edash_packager::media::AudioStreamInfoinline
sample_bytes() const (defined in edash_packager::media::AudioStreamInfo)edash_packager::media::AudioStreamInfoinline
sampling_frequency() const (defined in edash_packager::media::AudioStreamInfo)edash_packager::media::AudioStreamInfoinline
codec_delay_ns() const (defined in edash_packager::media::AudioStreamInfo)edash_packager::media::AudioStreamInfoinline
codec_string() const (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline
duration() const (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline
extra_data() const (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline
GetCodecString(AudioCodec codec, uint8_t audio_object_type)edash_packager::media::AudioStreamInfostatic
is_encrypted() const (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline
IsValidConfig() const overrideedash_packager::media::AudioStreamInfovirtual
language() const (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline
max_bitrate() const (defined in edash_packager::media::AudioStreamInfo)edash_packager::media::AudioStreamInfoinline
num_channels() const (defined in edash_packager::media::AudioStreamInfo)edash_packager::media::AudioStreamInfoinline
sample_bits() const (defined in edash_packager::media::AudioStreamInfo)edash_packager::media::AudioStreamInfoinline
sample_bytes() const (defined in edash_packager::media::AudioStreamInfo)edash_packager::media::AudioStreamInfoinline
sampling_frequency() const (defined in edash_packager::media::AudioStreamInfo)edash_packager::media::AudioStreamInfoinline
seek_preroll_ns() const (defined in edash_packager::media::AudioStreamInfo)edash_packager::media::AudioStreamInfoinline
set_codec(AudioCodec codec) (defined in edash_packager::media::AudioStreamInfo)edash_packager::media::AudioStreamInfoinline
set_codec_string(const std::string &codec_string) (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline
set_duration(int duration) (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline
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 5d39fb21fd..09638e6dbc 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 deb8ab1925..99df70f138 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 a52f04d8c8..f3ef9220fa 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 @@ -107,8 +107,8 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); ReadWriteHeaderInternal(BoxBuffer *buffer)edash_packager::media::mp4::Boxprotectedvirtual runs (defined in edash_packager::media::mp4::TrackFragment)edash_packager::media::mp4::TrackFragment sample_encryption (defined in edash_packager::media::mp4::TrackFragment)edash_packager::media::mp4::TrackFragment - sample_group_description (defined in edash_packager::media::mp4::TrackFragment)edash_packager::media::mp4::TrackFragment - sample_to_group (defined in edash_packager::media::mp4::TrackFragment)edash_packager::media::mp4::TrackFragment + sample_group_descriptions (defined in edash_packager::media::mp4::TrackFragment)edash_packager::media::mp4::TrackFragment + sample_to_groups (defined in edash_packager::media::mp4::TrackFragment)edash_packager::media::mp4::TrackFragment TrackFragment() (defined in edash_packager::media::mp4::TrackFragment)edash_packager::media::mp4::TrackFragment Write(BufferWriter *writer)edash_packager::media::mp4::Box WriteHeader(BufferWriter *writer)edash_packager::media::mp4::Box @@ -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 90f0dfeb77..b24a581687 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 507c917e21..3c4e15b2c1 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 33dd927d78..0cdeae2db0 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 94f9304cf4..d7d2a423b0 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 35d691ebb9..5711070ab0 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 1accf3f8b6..5eb5ab9e78 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 @@ -110,7 +110,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 9f004ec35b..37857ee200 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 675b6e2d1e..5d8960c41f 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/d94/classedash__packager_1_1media_1_1mp2t_1_1PesPacketGenerator-members.html b/docs/d8/d94/classedash__packager_1_1media_1_1mp2t_1_1PesPacketGenerator-members.html index e4370cec1b..b5b4a47131 100644 --- a/docs/d8/d94/classedash__packager_1_1media_1_1mp2t_1_1PesPacketGenerator-members.html +++ b/docs/d8/d94/classedash__packager_1_1media_1_1mp2t_1_1PesPacketGenerator-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d94/pes__packet_8h_source.html b/docs/d8/d94/pes__packet_8h_source.html index 04479e33e7..621153c6ff 100644 --- a/docs/d8/d94/pes__packet_8h_source.html +++ b/docs/d8/d94/pes__packet_8h_source.html @@ -159,7 +159,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 e45b65fca0..428c8579af 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 b4ce693da6..eadb54d286 100644 --- a/docs/d8/d9a/fragmenter_8cc_source.html +++ b/docs/d8/d9a/fragmenter_8cc_source.html @@ -98,160 +98,202 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
9 #include <limits>
10 
11 #include "packager/media/base/buffer_writer.h"
-
12 #include "packager/media/base/media_sample.h"
-
13 #include "packager/media/formats/mp4/box_definitions.h"
-
14 
-
15 namespace edash_packager {
-
16 namespace media {
-
17 namespace mp4 {
-
18 
-
19 namespace {
-
20 const int64_t kInvalidTime = std::numeric_limits<int64_t>::max();
-
21 } // namespace
+
12 #include "packager/media/base/audio_stream_info.h"
+
13 #include "packager/media/base/media_sample.h"
+
14 #include "packager/media/formats/mp4/box_definitions.h"
+
15 
+
16 namespace edash_packager {
+
17 namespace media {
+
18 namespace mp4 {
+
19 
+
20 namespace {
+
21 const int64_t kInvalidTime = std::numeric_limits<int64_t>::max();
22 
- -
24  : traf_(traf),
-
25  fragment_initialized_(false),
-
26  fragment_finalized_(false),
-
27  fragment_duration_(0),
-
28  presentation_start_time_(kInvalidTime),
-
29  earliest_presentation_time_(kInvalidTime),
-
30  first_sap_time_(kInvalidTime) {
-
31  DCHECK(traf);
-
32 }
-
33 
-
34 Fragmenter::~Fragmenter() {}
-
35 
-
36 Status Fragmenter::AddSample(scoped_refptr<MediaSample> sample) {
-
37  DCHECK(sample);
-
38  CHECK_GT(sample->duration(), 0);
-
39 
-
40  if (!fragment_initialized_) {
-
41  Status status = InitializeFragment(sample->dts());
-
42  if (!status.ok())
-
43  return status;
-
44  }
-
45 
-
46  if (sample->side_data_size() > 0)
-
47  LOG(WARNING) << "MP4 samples do not support side data. Side data ignored.";
+
23 uint64_t GetSeekPreroll(const StreamInfo& stream_info) {
+
24  if (stream_info.stream_type() != kStreamAudio) return 0;
+
25  const AudioStreamInfo& audio_stream_info =
+
26  static_cast<const AudioStreamInfo&>(stream_info);
+
27  return audio_stream_info.seek_preroll_ns();
+
28 }
+
29 } // namespace
+
30 
+
31 Fragmenter::Fragmenter(scoped_refptr<StreamInfo> info, TrackFragment* traf)
+
32  : traf_(traf),
+
33  seek_preroll_(GetSeekPreroll(*info)),
+
34  fragment_initialized_(false),
+
35  fragment_finalized_(false),
+
36  fragment_duration_(0),
+
37  presentation_start_time_(kInvalidTime),
+
38  earliest_presentation_time_(kInvalidTime),
+
39  first_sap_time_(kInvalidTime) {
+
40  DCHECK(traf);
+
41 }
+
42 
+
43 Fragmenter::~Fragmenter() {}
+
44 
+
45 Status Fragmenter::AddSample(scoped_refptr<MediaSample> sample) {
+
46  DCHECK(sample);
+
47  CHECK_GT(sample->duration(), 0);
48 
-
49  // Fill in sample parameters. It will be optimized later.
-
50  traf_->runs[0].sample_sizes.push_back(sample->data_size());
-
51  traf_->runs[0].sample_durations.push_back(sample->duration());
-
52  traf_->runs[0].sample_flags.push_back(
-
53  sample->is_key_frame() ? 0 : TrackFragmentHeader::kNonKeySampleMask);
+
49  if (!fragment_initialized_) {
+
50  Status status = InitializeFragment(sample->dts());
+
51  if (!status.ok())
+
52  return status;
+
53  }
54 
-
55  data_->AppendArray(sample->data(), sample->data_size());
-
56  fragment_duration_ += sample->duration();
+
55  if (sample->side_data_size() > 0)
+
56  LOG(WARNING) << "MP4 samples do not support side data. Side data ignored.";
57 
-
58  int64_t pts = sample->pts();
-
59 
-
60  // Set |earliest_presentation_time_| to |pts| if |pts| is smaller or if it is
-
61  // not yet initialized (kInvalidTime > pts is always true).
-
62  if (earliest_presentation_time_ > pts)
-
63  earliest_presentation_time_ = pts;
-
64 
-
65  traf_->runs[0].sample_composition_time_offsets.push_back(pts - sample->dts());
-
66  if (pts != sample->dts())
-
67  traf_->runs[0].flags |= TrackFragmentRun::kSampleCompTimeOffsetsPresentMask;
+
58  // Fill in sample parameters. It will be optimized later.
+
59  traf_->runs[0].sample_sizes.push_back(sample->data_size());
+
60  traf_->runs[0].sample_durations.push_back(sample->duration());
+
61  traf_->runs[0].sample_flags.push_back(
+
62  sample->is_key_frame() ? 0 : TrackFragmentHeader::kNonKeySampleMask);
+
63 
+
64  data_->AppendArray(sample->data(), sample->data_size());
+
65  fragment_duration_ += sample->duration();
+
66 
+
67  int64_t pts = sample->pts();
68 
-
69  if (sample->is_key_frame()) {
-
70  if (first_sap_time_ == kInvalidTime)
-
71  first_sap_time_ = pts;
-
72  }
-
73  return Status::OK;
-
74 }
-
75 
-
76 Status Fragmenter::InitializeFragment(int64_t first_sample_dts) {
-
77  fragment_initialized_ = true;
-
78  fragment_finalized_ = false;
-
79  traf_->decode_time.decode_time = first_sample_dts;
-
80  traf_->runs.clear();
-
81  traf_->runs.resize(1);
-
82  traf_->runs[0].flags = TrackFragmentRun::kDataOffsetPresentMask;
-
83  traf_->header.sample_description_index = 1; // 1-based.
-
84  traf_->header.flags = TrackFragmentHeader::kDefaultBaseIsMoofMask |
-
85  TrackFragmentHeader::kSampleDescriptionIndexPresentMask;
-
86  fragment_duration_ = 0;
-
87  earliest_presentation_time_ = kInvalidTime;
-
88  first_sap_time_ = kInvalidTime;
-
89  data_.reset(new BufferWriter());
-
90  return Status::OK;
-
91 }
-
92 
- -
94  // Optimize trun box.
-
95  traf_->runs[0].sample_count = traf_->runs[0].sample_sizes.size();
-
96  if (OptimizeSampleEntries(&traf_->runs[0].sample_durations,
-
97  &traf_->header.default_sample_duration)) {
-
98  traf_->header.flags |=
-
99  TrackFragmentHeader::kDefaultSampleDurationPresentMask;
-
100  } else {
-
101  traf_->runs[0].flags |= TrackFragmentRun::kSampleDurationPresentMask;
-
102  }
-
103  if (OptimizeSampleEntries(&traf_->runs[0].sample_sizes,
-
104  &traf_->header.default_sample_size)) {
-
105  traf_->header.flags |= TrackFragmentHeader::kDefaultSampleSizePresentMask;
-
106  } else {
-
107  traf_->runs[0].flags |= TrackFragmentRun::kSampleSizePresentMask;
-
108  }
-
109  if (OptimizeSampleEntries(&traf_->runs[0].sample_flags,
-
110  &traf_->header.default_sample_flags)) {
-
111  traf_->header.flags |= TrackFragmentHeader::kDefaultSampleFlagsPresentMask;
-
112  } else {
-
113  traf_->runs[0].flags |= TrackFragmentRun::kSampleFlagsPresentMask;
-
114  }
-
115 
-
116  fragment_finalized_ = true;
-
117  fragment_initialized_ = false;
-
118 }
-
119 
- -
121  // NOTE: Daisy chain is not supported currently.
-
122  reference->reference_type = false;
-
123  reference->subsegment_duration = fragment_duration_;
-
124  reference->starts_with_sap = StartsWithSAP();
-
125  if (kInvalidTime == first_sap_time_) {
-
126  reference->sap_type = SegmentReference::TypeUnknown;
-
127  reference->sap_delta_time = 0;
-
128  } else {
-
129  reference->sap_type = SegmentReference::Type1;
-
130  reference->sap_delta_time = first_sap_time_ - earliest_presentation_time_;
-
131  }
-
132  reference->earliest_presentation_time = earliest_presentation_time_;
-
133 }
-
134 
-
135 bool Fragmenter::StartsWithSAP() {
-
136  DCHECK(!traf_->runs.empty());
-
137  uint32_t start_sample_flag;
-
138  if (traf_->runs[0].flags & TrackFragmentRun::kSampleFlagsPresentMask) {
-
139  DCHECK(!traf_->runs[0].sample_flags.empty());
-
140  start_sample_flag = traf_->runs[0].sample_flags[0];
-
141  } else {
-
142  DCHECK(traf_->header.flags &
-
143  TrackFragmentHeader::kDefaultSampleFlagsPresentMask);
-
144  start_sample_flag = traf_->header.default_sample_flags;
-
145  }
-
146  return (start_sample_flag & TrackFragmentHeader::kNonKeySampleMask) == 0;
-
147 }
+
69  // Set |earliest_presentation_time_| to |pts| if |pts| is smaller or if it is
+
70  // not yet initialized (kInvalidTime > pts is always true).
+
71  if (earliest_presentation_time_ > pts)
+
72  earliest_presentation_time_ = pts;
+
73 
+
74  traf_->runs[0].sample_composition_time_offsets.push_back(pts - sample->dts());
+
75  if (pts != sample->dts())
+
76  traf_->runs[0].flags |= TrackFragmentRun::kSampleCompTimeOffsetsPresentMask;
+
77 
+
78  if (sample->is_key_frame()) {
+
79  if (first_sap_time_ == kInvalidTime)
+
80  first_sap_time_ = pts;
+
81  }
+
82  return Status::OK;
+
83 }
+
84 
+
85 Status Fragmenter::InitializeFragment(int64_t first_sample_dts) {
+
86  fragment_initialized_ = true;
+
87  fragment_finalized_ = false;
+
88  traf_->decode_time.decode_time = first_sample_dts;
+
89  traf_->runs.clear();
+
90  traf_->runs.resize(1);
+
91  traf_->runs[0].flags = TrackFragmentRun::kDataOffsetPresentMask;
+
92  traf_->sample_group_descriptions.clear();
+
93  traf_->sample_to_groups.clear();
+
94  traf_->header.sample_description_index = 1; // 1-based.
+
95  traf_->header.flags = TrackFragmentHeader::kDefaultBaseIsMoofMask |
+
96  TrackFragmentHeader::kSampleDescriptionIndexPresentMask;
+
97  fragment_duration_ = 0;
+
98  earliest_presentation_time_ = kInvalidTime;
+
99  first_sap_time_ = kInvalidTime;
+
100  data_.reset(new BufferWriter());
+
101  return Status::OK;
+
102 }
+
103 
+ +
105  // Optimize trun box.
+
106  traf_->runs[0].sample_count = traf_->runs[0].sample_sizes.size();
+
107  if (OptimizeSampleEntries(&traf_->runs[0].sample_durations,
+
108  &traf_->header.default_sample_duration)) {
+
109  traf_->header.flags |=
+
110  TrackFragmentHeader::kDefaultSampleDurationPresentMask;
+
111  } else {
+
112  traf_->runs[0].flags |= TrackFragmentRun::kSampleDurationPresentMask;
+
113  }
+
114  if (OptimizeSampleEntries(&traf_->runs[0].sample_sizes,
+
115  &traf_->header.default_sample_size)) {
+
116  traf_->header.flags |= TrackFragmentHeader::kDefaultSampleSizePresentMask;
+
117  } else {
+
118  traf_->runs[0].flags |= TrackFragmentRun::kSampleSizePresentMask;
+
119  }
+
120  if (OptimizeSampleEntries(&traf_->runs[0].sample_flags,
+
121  &traf_->header.default_sample_flags)) {
+
122  traf_->header.flags |= TrackFragmentHeader::kDefaultSampleFlagsPresentMask;
+
123  } else {
+
124  traf_->runs[0].flags |= TrackFragmentRun::kSampleFlagsPresentMask;
+
125  }
+
126 
+
127  // Add SampleToGroup boxes. A SampleToGroup box with grouping type of 'roll'
+
128  // needs to be added if there is seek preroll, referencing sample group
+
129  // description in track level; Also need to add SampleToGroup boxes
+
130  // correponding to every SampleGroupDescription boxes, referencing sample
+
131  // group description in fragment level.
+
132  DCHECK_EQ(traf_->sample_to_groups.size(), 0u);
+
133  if (seek_preroll_ > 0) {
+
134  traf_->sample_to_groups.resize(traf_->sample_to_groups.size() + 1);
+
135  SampleToGroup& sample_to_group = traf_->sample_to_groups.back();
+
136  sample_to_group.grouping_type = FOURCC_roll;
+
137 
+
138  sample_to_group.entries.resize(1);
+
139  SampleToGroupEntry& sample_to_group_entry = sample_to_group.entries.back();
+
140  sample_to_group_entry.sample_count = traf_->runs[0].sample_count;
+
141  sample_to_group_entry.group_description_index =
+
142  SampleToGroupEntry::kTrackGroupDescriptionIndexBase + 1;
+
143  }
+
144  for (const auto& sample_group_description : traf_->sample_group_descriptions) {
+
145  traf_->sample_to_groups.resize(traf_->sample_to_groups.size() + 1);
+
146  SampleToGroup& sample_to_group = traf_->sample_to_groups.back();
+
147  sample_to_group.grouping_type = sample_group_description.grouping_type;
148 
-
149 } // namespace mp4
-
150 } // namespace media
-
151 } // namespace edash_packager
- -
void GenerateSegmentReference(SegmentReference *reference)
Fill reference with current fragment information.
Definition: fragmenter.cc:120
+
149  sample_to_group.entries.resize(1);
+
150  SampleToGroupEntry& sample_to_group_entry = sample_to_group.entries.back();
+
151  sample_to_group_entry.sample_count = traf_->runs[0].sample_count;
+
152  sample_to_group_entry.group_description_index =
+
153  SampleToGroupEntry::kTrackFragmentGroupDescriptionIndexBase + 1;
+
154  }
+
155 
+
156  fragment_finalized_ = true;
+
157  fragment_initialized_ = false;
+
158 }
+
159 
+ +
161  // NOTE: Daisy chain is not supported currently.
+
162  reference->reference_type = false;
+
163  reference->subsegment_duration = fragment_duration_;
+
164  reference->starts_with_sap = StartsWithSAP();
+
165  if (kInvalidTime == first_sap_time_) {
+
166  reference->sap_type = SegmentReference::TypeUnknown;
+
167  reference->sap_delta_time = 0;
+
168  } else {
+
169  reference->sap_type = SegmentReference::Type1;
+
170  reference->sap_delta_time = first_sap_time_ - earliest_presentation_time_;
+
171  }
+
172  reference->earliest_presentation_time = earliest_presentation_time_;
+
173 }
+
174 
+
175 bool Fragmenter::StartsWithSAP() {
+
176  DCHECK(!traf_->runs.empty());
+
177  uint32_t start_sample_flag;
+
178  if (traf_->runs[0].flags & TrackFragmentRun::kSampleFlagsPresentMask) {
+
179  DCHECK(!traf_->runs[0].sample_flags.empty());
+
180  start_sample_flag = traf_->runs[0].sample_flags[0];
+
181  } else {
+
182  DCHECK(traf_->header.flags &
+
183  TrackFragmentHeader::kDefaultSampleFlagsPresentMask);
+
184  start_sample_flag = traf_->header.default_sample_flags;
+
185  }
+
186  return (start_sample_flag & TrackFragmentHeader::kNonKeySampleMask) == 0;
+
187 }
+
188 
+
189 } // namespace mp4
+
190 } // namespace media
+
191 } // namespace edash_packager
+
Fragmenter(scoped_refptr< StreamInfo > info, TrackFragment *traf)
Definition: fragmenter.cc:31
+
void GenerateSegmentReference(SegmentReference *reference)
Fill reference with current fragment information.
Definition: fragmenter.cc:160
-
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
+
virtual Status InitializeFragment(int64_t first_sample_dts)
Definition: fragmenter.cc:85
+
virtual Status AddSample(scoped_refptr< MediaSample > sample)
Definition: fragmenter.cc:45
+ + +
bool OptimizeSampleEntries(std::vector< T > *entries, T *default_value)
Definition: fragmenter.h:92
+ + +
virtual void FinalizeFragment()
Finalize and optimize the fragment.
Definition: fragmenter.cc:104
diff --git a/docs/d8/d9c/webm__tracks__parser_8cc_source.html b/docs/d8/d9c/webm__tracks__parser_8cc_source.html index b6f0c92382..787ee5c4ee 100644 --- a/docs/d8/d9c/webm__tracks__parser_8cc_source.html +++ b/docs/d8/d9c/webm__tracks__parser_8cc_source.html @@ -291,9 +291,9 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
202  audio_default_duration_ = default_duration_;
203 
204  DCHECK(!audio_stream_info_);
-
205  audio_stream_info_ = audio_client_.GetAudioStreamInfo(
-
206  audio_track_num_, codec_id_, codec_private_, track_language_,
-
207  !audio_encryption_key_id_.empty());
+
205  audio_stream_info_ = audio_client_.GetAudioStreamInfo(
+
206  audio_track_num_, codec_id_, codec_private_, seek_preroll_,
+
207  codec_delay_, track_language_, !audio_encryption_key_id_.empty());
208  if (!audio_stream_info_)
209  return false;
210  } else {
@@ -429,6 +429,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
340 } // namespace media
341 } // namespace edash_packager
int Parse(const uint8_t *buf, int size)
+
scoped_refptr< AudioStreamInfo > GetAudioStreamInfo(int64_t track_num, const std::string &codec_id, const std::vector< uint8_t > &codec_private, int64_t seek_preroll, int64_t codec_delay, const std::string &language, bool is_encrypted)
scoped_refptr< VideoStreamInfo > GetVideoStreamInfo(int64_t track_num, const std::string &codec_id, const std::vector< uint8_t > &codec_private, bool is_encrypted)
void Reset()
Reset this object's state so it can process a new video track element.
@@ -436,11 +437,10 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
int64_t GetAudioDefaultDuration(const double timecode_scale_in_us) const
void Reset()
Reset this object's state so it can process a new audio track element.
-
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/d8/d9f/udp__file_8h_source.html b/docs/d8/d9f/udp__file_8h_source.html index 7be74e91c7..03c811bfcd 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 dfca3cd0f2..8ce86f3f61 100644 --- a/docs/d8/da0/classedash__packager_1_1media_1_1wvm_1_1WvmMediaParser.html +++ b/docs/d8/da0/classedash__packager_1_1media_1_1wvm_1_1WvmMediaParser.html @@ -256,7 +256,7 @@ track_id, const scoped_refptr
diff --git a/docs/d8/da1/classedash__packager_1_1media_1_1WidevineKeySource-members.html b/docs/d8/da1/classedash__packager_1_1media_1_1WidevineKeySource-members.html index 2e024db431..48db510252 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 @@ -119,7 +119,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 3958ae1aa9..4cf66cd85b 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 4fe1d5c3b7..20d2531502 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/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 3db1ee2d1a..ca3a04df9c 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 f65e1c51b6..b64d3a2c61 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/ts__writer_8h_source.html b/docs/d8/dca/ts__writer_8h_source.html index 7371f881aa..400a19610a 100644 --- a/docs/d8/dca/ts__writer_8h_source.html +++ b/docs/d8/dca/ts__writer_8h_source.html @@ -165,7 +165,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 3139c298de..b5cbc35d92 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 7541e3573a..5cc682ae30 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 8cb80ea2ba..40ce13225f 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 @@ -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 218ad9b8a9..1eb666e906 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 2a72e45e92..b03816abb3 100644 --- a/docs/d8/df0/webm_2single__segment__segmenter_8cc_source.html +++ b/docs/d8/df0/webm_2single__segment__segmenter_8cc_source.html @@ -181,7 +181,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 5bcbd1537d..b0784173bf 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/df4/classedash__packager_1_1media_1_1mp2t_1_1TsSegmenter-members.html b/docs/d8/df4/classedash__packager_1_1media_1_1mp2t_1_1TsSegmenter-members.html index a753e04c4a..79eca98eaa 100644 --- a/docs/d8/df4/classedash__packager_1_1media_1_1mp2t_1_1TsSegmenter-members.html +++ b/docs/d8/df4/classedash__packager_1_1media_1_1mp2t_1_1TsSegmenter-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/dfa/nal__unit__to__byte__stream__converter_8h_source.html b/docs/d8/dfa/nal__unit__to__byte__stream__converter_8h_source.html index 4664edd0db..033fe77d6d 100644 --- a/docs/d8/dfa/nal__unit__to__byte__stream__converter_8h_source.html +++ b/docs/d8/dfa/nal__unit__to__byte__stream__converter_8h_source.html @@ -147,7 +147,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/dfb/classedash__packager_1_1media_1_1DecoderConfiguration.html b/docs/d8/dfb/classedash__packager_1_1media_1_1DecoderConfiguration.html index 78b7f34d27..0266742253 100644 --- a/docs/d8/dfb/classedash__packager_1_1media_1_1DecoderConfiguration.html +++ b/docs/d8/dfb/classedash__packager_1_1media_1_1DecoderConfiguration.html @@ -333,7 +333,7 @@ void  diff --git a/docs/d8/dfd/structedash__packager_1_1media_1_1VPxFrameInfo.html b/docs/d8/dfd/structedash__packager_1_1media_1_1VPxFrameInfo.html index 672d881b62..0e4a6057c1 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 5d3a1a2765..344e087bcb 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 2037282ad4..d80b014807 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 9faf196836..d2e44f8528 100644 --- a/docs/d9/d15/key__rotation__fragmenter_8cc_source.html +++ b/docs/d9/d15/key__rotation__fragmenter_8cc_source.html @@ -196,43 +196,36 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
107  // i.e. there is at most one key for the fragment. So there should be only
108  // one entry in SampleGroupDescription box and one entry in SampleToGroup box.
109  // Fill in SampleGroupDescription box information.
-
110  traf()->sample_group_description.grouping_type = FOURCC_seig;
-
111  traf()->sample_group_description.entries.resize(1);
-
112  auto& sample_group_entry = traf()->sample_group_description.entries[0];
-
113  sample_group_entry.is_protected = 1;
-
114  if (protection_scheme() == FOURCC_cbcs) {
-
115  // For 'cbcs' scheme, Constant IVs SHALL be used.
-
116  sample_group_entry.per_sample_iv_size = 0;
-
117  sample_group_entry.constant_iv = encryptor()->iv();
-
118  } else {
-
119  sample_group_entry.per_sample_iv_size = encryptor()->iv().size();
-
120  }
-
121  sample_group_entry.crypt_byte_block = crypt_byte_block();
-
122  sample_group_entry.skip_byte_block = skip_byte_block();
-
123  sample_group_entry.key_id = encryption_key()->key_id;
-
124 
-
125  // Fill in SampleToGroup box information.
-
126  traf()->sample_to_group.grouping_type = FOURCC_seig;
-
127  traf()->sample_to_group.entries.resize(1);
-
128  // sample_count is adjusted in |FinalizeFragment| later.
-
129  traf()->sample_to_group.entries[0].group_description_index =
-
130  SampleToGroupEntry::kTrackFragmentGroupDescriptionIndexBase + 1;
-
131 
-
132  return Status::OK;
-
133 }
-
134 
- - -
137  DCHECK_EQ(1u, traf()->sample_to_group.entries.size());
-
138  traf()->sample_to_group.entries[0].sample_count =
-
139  traf()->auxiliary_size.sample_count;
-
140 }
-
141 
-
142 } // namespace mp4
-
143 } // namespace media
-
144 } // namespace edash_packager
+
110  traf()->sample_group_descriptions.resize(
+
111  traf()->sample_group_descriptions.size() + 1);
+
112  SampleGroupDescription& sample_group_description =
+
113  traf()->sample_group_descriptions.back();
+
114  sample_group_description.grouping_type = FOURCC_seig;
+
115 
+
116  sample_group_description.cenc_sample_encryption_info_entries.resize(1);
+
117  CencSampleEncryptionInfoEntry& sample_group_entry =
+
118  sample_group_description.cenc_sample_encryption_info_entries.back();
+
119  sample_group_entry.is_protected = 1;
+
120  if (protection_scheme() == FOURCC_cbcs) {
+
121  // For 'cbcs' scheme, Constant IVs SHALL be used.
+
122  sample_group_entry.per_sample_iv_size = 0;
+
123  sample_group_entry.constant_iv = encryptor()->iv();
+
124  } else {
+
125  sample_group_entry.per_sample_iv_size = encryptor()->iv().size();
+
126  }
+
127  sample_group_entry.crypt_byte_block = crypt_byte_block();
+
128  sample_group_entry.skip_byte_block = skip_byte_block();
+
129  sample_group_entry.key_id = encryption_key()->key_id;
+
130 
+
131  return Status::OK;
+
132 }
+
133 
+
134 } // namespace mp4
+
135 } // namespace media
+
136 } // namespace edash_packager
+
KeyRotationFragmenter(MovieFragment *moof, scoped_refptr< StreamInfo > info, TrackFragment *traf, KeySource *encryption_key_source, KeySource::TrackType track_type, int64_t crypto_period_duration, int64_t clear_time, FourCC protection_scheme, uint8_t crypt_byte_block, uint8_t skip_byte_block, MuxerListener *muxer_listener)
-
void FinalizeFragmentForEncryption() override
Finalize current fragment for encryption.
+
EncryptingFragmenter generates MP4 fragments with sample encrypted.
@@ -241,16 +234,15 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
Status PrepareFragmentForEncryption(bool enable_encryption) override
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:31
- - + +
const std::vector< uint8_t > & iv() const
Definition: aes_cryptor.h:81
-
virtual void FinalizeFragmentForEncryption()
Finalize current fragment for encryption.
virtual Status GetCryptoPeriodKey(uint32_t crypto_period_index, TrackType track_type, EncryptionKey *key)=0
virtual void OnEncryptionInfoReady(bool is_initial_encryption_info, FourCC protection_scheme, const std::vector< uint8_t > &key_id, const std::vector< uint8_t > &iv, const std::vector< ProtectionSystemSpecificInfo > &key_system_info)=0
diff --git a/docs/d9/d17/classedash__packager_1_1DashIopMpdNotifier-members.html b/docs/d9/d17/classedash__packager_1_1DashIopMpdNotifier-members.html index e86391703c..9fe7c2fbf1 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 7dde9dddbc..8526ea5ae1 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 456 of file box_definitions.h.

+

Definition at line 465 of file box_definitions.h.

Member Function Documentation

@@ -182,7 +182,7 @@ Additional Inherited Members
diff --git a/docs/d9/d1b/classedash__packager_1_1media_1_1mp2t_1_1EsParserH265-members.html b/docs/d9/d1b/classedash__packager_1_1media_1_1mp2t_1_1EsParserH265-members.html index 7f5cca48a4..89d036f0a1 100644 --- a/docs/d9/d1b/classedash__packager_1_1media_1_1mp2t_1_1EsParserH265-members.html +++ b/docs/d9/d1b/classedash__packager_1_1media_1_1mp2t_1_1EsParserH265-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); 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 a2d9eb8d13..a8a4959462 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 1168 of file box_definitions.cc.

+

Definition at line 1364 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 5e0f247b6d..65e2db371f 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 43ac57ce48..2a1b0e584d 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 53a0d025ab..385f438181 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 1f139ad5ea..bd0c26fa76 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 5270b1d849..450f6c7f6e 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 598 of file box_definitions.h.

+

Definition at line 670 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 1976 of file box_definitions.cc.

+

Definition at line 2224 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 57bb918ea9..3b091aa05a 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/d60/classedash__packager_1_1media_1_1AesCryptor.html b/docs/d9/d60/classedash__packager_1_1media_1_1AesCryptor.html index 090792e19f..aab3326ba6 100644 --- a/docs/d9/d60/classedash__packager_1_1media_1_1AesCryptor.html +++ b/docs/d9/d60/classedash__packager_1_1media_1_1AesCryptor.html @@ -396,7 +396,7 @@ AES_KEY * mutable_aes_key< 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 b7e0ea5b10..fbce63e4e8 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 bf2a8f2df2..889f8ad02b 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/d76/ts__muxer_8cc_source.html b/docs/d9/d76/ts__muxer_8cc_source.html index 60025aa93a..d5a2075ed8 100644 --- a/docs/d9/d76/ts__muxer_8cc_source.html +++ b/docs/d9/d76/ts__muxer_8cc_source.html @@ -155,7 +155,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); 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 f0287e71f8..be66913d6b 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 5c9f4aa999..ed79b69014 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 e7af8c6b48..1393945157 100644 --- a/docs/d9/d8b/classedash__packager_1_1media_1_1KeySource.html +++ b/docs/d9/d8b/classedash__packager_1_1media_1_1KeySource.html @@ -407,7 +407,7 @@ static std::string  diff --git a/docs/d9/d90/text__track_8h_source.html b/docs/d9/d90/text__track_8h_source.html index 8820f8008a..a070404b5d 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/d93/media__stream_8h_source.html b/docs/d9/d93/media__stream_8h_source.html index 2c9f5e2143..f4ca0b1972 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 205ec22a30..3e274b34fc 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 5801977e58..8084347b4e 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 @@ -106,7 +106,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 7c4357584f..808347f20a 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 67b7ebc922..3cbdf6ffe5 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/da7/classedash__packager_1_1media_1_1H26xBitReader-members.html b/docs/d9/da7/classedash__packager_1_1media_1_1H26xBitReader-members.html index 94974a649d..706773dae1 100644 --- a/docs/d9/da7/classedash__packager_1_1media_1_1H26xBitReader-members.html +++ b/docs/d9/da7/classedash__packager_1_1media_1_1H26xBitReader-members.html @@ -107,7 +107,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 4d3df12e3f..66aad168e5 100644 --- a/docs/d9/db4/classedash__packager_1_1media_1_1VodMediaInfoDumpMuxerListener.html +++ b/docs/d9/db4/classedash__packager_1_1media_1_1VodMediaInfoDumpMuxerListener.html @@ -501,7 +501,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 79137a2f59..f66850328c 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 ab34935849..7f5094d8fd 100644 --- a/docs/d9/db9/muxer_8cc_source.html +++ b/docs/d9/db9/muxer_8cc_source.html @@ -218,7 +218,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 22503d4d3a..71ce6f6945 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 917bb8b777..a60c570bf6 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 fc3234b37e..990ae5b1ca 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 1370 of file box_definitions.cc.

+

Definition at line 1566 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 9462cbfab7..a0b25e3608 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 e7ee9c112a..4621fddcb1 100644 --- a/docs/d9/de3/muxer__listener__internal_8cc_source.html +++ b/docs/d9/de3/muxer__listener__internal_8cc_source.html @@ -348,7 +348,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/de9/structedash__packager_1_1media_1_1mp4_1_1OpusSpecific-members.html b/docs/d9/de9/structedash__packager_1_1media_1_1mp4_1_1OpusSpecific-members.html new file mode 100644 index 0000000000..9ffd0cfe6c --- /dev/null +++ b/docs/d9/de9/structedash__packager_1_1media_1_1mp4_1_1OpusSpecific-members.html @@ -0,0 +1,118 @@ + + + + + + +DASH Media Packaging SDK: Member List + + + + + + + + + +
+
+ + + + + + +
+
DASH Media Packaging SDK +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
edash_packager::media::mp4::OpusSpecific Member List
+
+ + + + + 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 23b3ba5734..459f13c97a 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 0a83bbb87f..b212503d8e 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 7c743c3016..58da1598b1 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 6ad86d9bc5..3625d6066e 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 30f395e459..91dae0fc47 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 48e3366419..9587c5ce69 100644 --- a/docs/da/d04/audio__stream__info_8cc_source.html +++ b/docs/da/d04/audio__stream__info_8cc_source.html @@ -95,137 +95,152 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
6 
7 #include "packager/media/base/audio_stream_info.h"
8 
-
9 #include "packager/base/logging.h"
-
10 #include "packager/base/strings/string_number_conversions.h"
-
11 #include "packager/base/strings/stringprintf.h"
-
12 #include "packager/media/base/limits.h"
-
13 
-
14 namespace edash_packager {
-
15 namespace media {
-
16 
-
17 namespace {
-
18 std::string AudioCodecToString(AudioCodec audio_codec) {
-
19  switch (audio_codec) {
-
20  case kCodecAAC:
-
21  return "AAC";
-
22  case kCodecAC3:
-
23  return "AC3";
-
24  case kCodecDTSC:
-
25  return "DTSC";
-
26  case kCodecDTSE:
-
27  return "DTSE";
-
28  case kCodecDTSH:
-
29  return "DTSH";
-
30  case kCodecDTSL:
-
31  return "DTSL";
-
32  case kCodecDTSM:
-
33  return "DTS-";
-
34  case kCodecDTSP:
-
35  return "DTS+";
-
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 
-
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
+
9 #include <inttypes.h>
+
10 
+
11 #include "packager/base/logging.h"
+
12 #include "packager/base/strings/string_number_conversions.h"
+
13 #include "packager/base/strings/stringprintf.h"
+
14 #include "packager/media/base/limits.h"
+
15 
+
16 namespace edash_packager {
+
17 namespace media {
+
18 
+
19 namespace {
+
20 std::string AudioCodecToString(AudioCodec audio_codec) {
+
21  switch (audio_codec) {
+
22  case kCodecAAC:
+
23  return "AAC";
+
24  case kCodecAC3:
+
25  return "AC3";
+
26  case kCodecDTSC:
+
27  return "DTSC";
+
28  case kCodecDTSE:
+
29  return "DTSE";
+
30  case kCodecDTSH:
+
31  return "DTSH";
+
32  case kCodecDTSL:
+
33  return "DTSL";
+
34  case kCodecDTSM:
+
35  return "DTS-";
+
36  case kCodecDTSP:
+
37  return "DTS+";
+
38  case kCodecEAC3:
+
39  return "EAC3";
+
40  case kCodecOpus:
+
41  return "Opus";
+
42  case kCodecVorbis:
+
43  return "Vorbis";
+
44  default:
+
45  NOTIMPLEMENTED() << "Unknown Audio Codec: " << audio_codec;
+
46  return "UnknownAudioCodec";
+
47  }
+
48 }
+
49 } // namespace
+
50 
+ +
52  uint32_t time_scale,
+
53  uint64_t duration,
+
54  AudioCodec codec,
+
55  const std::string& codec_string,
+
56  const std::string& language,
+
57  uint8_t sample_bits,
+
58  uint8_t num_channels,
+
59  uint32_t sampling_frequency,
+
60  uint64_t seek_preroll_ns,
+
61  uint64_t codec_delay_ns,
+
62  uint32_t max_bitrate,
+
63  uint32_t avg_bitrate,
+
64  const uint8_t* extra_data,
+
65  size_t extra_data_size,
+
66  bool is_encrypted)
+
67  : StreamInfo(kStreamAudio,
+
68  track_id,
+
69  time_scale,
+
70  duration,
+
71  codec_string,
+
72  language,
+
73  extra_data,
+
74  extra_data_size,
+
75  is_encrypted),
+
76  codec_(codec),
+
77  sample_bits_(sample_bits),
+
78  num_channels_(num_channels),
+
79  sampling_frequency_(sampling_frequency),
+
80  seek_preroll_ns_(seek_preroll_ns),
+
81  codec_delay_ns_(codec_delay_ns),
+
82  max_bitrate_(max_bitrate),
+
83  avg_bitrate_(avg_bitrate) {}
+
84 
+
85 AudioStreamInfo::~AudioStreamInfo() {}
+
86 
+ +
88  return codec_ != kUnknownAudioCodec && num_channels_ != 0 &&
+
89  num_channels_ <= limits::kMaxChannels && sample_bits_ > 0 &&
+
90  sample_bits_ <= limits::kMaxBitsPerSample &&
+
91  sampling_frequency_ > 0 &&
+
92  sampling_frequency_ <= limits::kMaxSampleRate;
+
93 }
+
94 
+
95 std::string AudioStreamInfo::ToString() const {
+
96  std::string str = base::StringPrintf(
+
97  "%s codec: %s\n sample_bits: %d\n num_channels: %d\n "
+
98  "sampling_frequency: %d\n language: %s\n",
+
99  StreamInfo::ToString().c_str(), AudioCodecToString(codec_).c_str(),
+
100  sample_bits_, num_channels_, sampling_frequency_, language().c_str());
+
101  if (seek_preroll_ns_ != 0) {
+
102  base::StringAppendF(&str, " seek_preroll_ns: %" PRIu64 "d\n",
+
103  seek_preroll_ns_);
+
104  }
+
105  if (codec_delay_ns_ != 0) {
+
106  base::StringAppendF(&str, " codec_delay_ns: %" PRIu64 "d\n",
+
107  codec_delay_ns_);
+
108  }
+
109  return str;
+
110 }
+
111 
+
112 std::string AudioStreamInfo::GetCodecString(AudioCodec codec,
+
113  uint8_t audio_object_type) {
+
114  switch (codec) {
+
115  case kCodecVorbis:
+
116  return "vorbis";
+
117  case kCodecOpus:
+
118  return "opus";
+
119  case kCodecAAC:
+
120  return "mp4a.40." + base::UintToString(audio_object_type);
+
121  case kCodecDTSC:
+
122  return "dtsc";
+
123  case kCodecDTSH:
+
124  return "dtsh";
+
125  case kCodecDTSL:
+
126  return "dtsl";
+
127  case kCodecDTSE:
+
128  return "dtse";
+
129  case kCodecDTSP:
+
130  return "dts+";
+
131  case kCodecDTSM:
+
132  return "dts-";
+
133  case kCodecAC3:
+
134  return "ac-3";
+
135  case kCodecEAC3:
+
136  return "ec-3";
+
137  default:
+
138  NOTIMPLEMENTED() << "Codec: " << codec;
+
139  return "unknown";
+
140  }
+
141 }
+
142 
+
143 } // namespace media
+
144 } // 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.
virtual std::string ToString() const
Definition: stream_info.cc:40
- -
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, uint64_t seek_preroll_ns, uint64_t codec_delay_ns, 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/da/d09/classedash__packager_1_1media_1_1SegmentTestBase-members.html b/docs/da/d09/classedash__packager_1_1media_1_1SegmentTestBase-members.html index 765a76539b..de4f37050b 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/d0b/classedash__packager_1_1media_1_1FixedKeySource-members.html b/docs/da/d0b/classedash__packager_1_1media_1_1FixedKeySource-members.html index ef9ec10f58..f1536d4fb2 100644 --- a/docs/da/d0b/classedash__packager_1_1media_1_1FixedKeySource-members.html +++ b/docs/da/d0b/classedash__packager_1_1media_1_1FixedKeySource-members.html @@ -116,7 +116,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 d01d820409..c28ba29990 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 ed23307dcd..e1e5cd8b17 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 282b84a521..32092cd715 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 553 of file box_definitions.h.

+

Definition at line 625 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 1834 of file box_definitions.cc.

+

Definition at line 2082 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 d91b0c25e5..49b545150e 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 eda08aa4f5..82ff55b19f 100644 --- a/docs/da/d22/key__rotation__fragmenter_8h_source.html +++ b/docs/da/d22/key__rotation__fragmenter_8h_source.html @@ -109,22 +109,21 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
20 
24  public:
- -
44  scoped_refptr<StreamInfo> info,
-
45  TrackFragment* traf,
-
46  KeySource* encryption_key_source,
-
47  KeySource::TrackType track_type,
-
48  int64_t crypto_period_duration,
-
49  int64_t clear_time,
-
50  FourCC protection_scheme,
-
51  uint8_t crypt_byte_block,
-
52  uint8_t skip_byte_block,
-
53  MuxerListener* muxer_listener);
-
54  ~KeyRotationFragmenter() override;
-
55 
-
56  protected:
-
59  Status PrepareFragmentForEncryption(bool enable_encryption) override;
-
60  void FinalizeFragmentForEncryption() override;
+ +
45  scoped_refptr<StreamInfo> info,
+
46  TrackFragment* traf,
+
47  KeySource* encryption_key_source,
+
48  KeySource::TrackType track_type,
+
49  int64_t crypto_period_duration,
+
50  int64_t clear_time,
+
51  FourCC protection_scheme,
+
52  uint8_t crypt_byte_block,
+
53  uint8_t skip_byte_block,
+
54  MuxerListener* muxer_listener);
+
55  ~KeyRotationFragmenter() override;
+
56 
+
57  protected:
+
60  Status PrepareFragmentForEncryption(bool enable_encryption) override;
62 
63  private:
64  MovieFragment* moof_;
@@ -146,19 +145,18 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
80 
81 #endif // MEDIA_FORMATS_MP4_KEY_ROTATION_FRAGMENTER_H_
KeyRotationFragmenter(MovieFragment *moof, scoped_refptr< StreamInfo > info, TrackFragment *traf, KeySource *encryption_key_source, KeySource::TrackType track_type, int64_t crypto_period_duration, int64_t clear_time, FourCC protection_scheme, uint8_t crypt_byte_block, uint8_t skip_byte_block, MuxerListener *muxer_listener)
-
void FinalizeFragmentForEncryption() override
Finalize current fragment for encryption.
EncryptingFragmenter generates MP4 fragments with sample encrypted.
Status PrepareFragmentForEncryption(bool enable_encryption) override
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:31
- - + + diff --git a/docs/da/d23/ts__muxer_8h_source.html b/docs/da/d23/ts__muxer_8h_source.html index c832abcdb2..b3a7206e71 100644 --- a/docs/da/d23/ts__muxer_8h_source.html +++ b/docs/da/d23/ts__muxer_8h_source.html @@ -137,7 +137,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d24/h265__parser_8h_source.html b/docs/da/d24/h265__parser_8h_source.html index 4e82fe1259..ea911158f2 100644 --- a/docs/da/d24/h265__parser_8h_source.html +++ b/docs/da/d24/h265__parser_8h_source.html @@ -450,7 +450,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d25/classedash__packager_1_1media_1_1mp2t_1_1TsMuxer-members.html b/docs/da/d25/classedash__packager_1_1media_1_1mp2t_1_1TsMuxer-members.html index 759a396e87..9543561972 100644 --- a/docs/da/d25/classedash__packager_1_1media_1_1mp2t_1_1TsMuxer-members.html +++ b/docs/da/d25/classedash__packager_1_1media_1_1mp2t_1_1TsMuxer-members.html @@ -117,7 +117,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); 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 dec2aff615..5ce5e5469d 100644 --- a/docs/da/d27/classedash__packager_1_1media_1_1AudioStreamInfo.html +++ b/docs/da/d27/classedash__packager_1_1media_1_1AudioStreamInfo.html @@ -111,10 +111,10 @@ Inheritance diagram for edash_packager::media::AudioStreamInfo: - - - + + + @@ -133,6 +133,12 @@ uint32_t  + + + + @@ -240,7 +246,7 @@ Static Public Member Functions
Returns
The codec string.
-

Definition at line 97 of file audio_stream_info.cc.

+

Definition at line 112 of file audio_stream_info.cc.

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

Implements edash_packager::media::StreamInfo.

-

Definition at line 81 of file audio_stream_info.cc.

+

Definition at line 87 of file audio_stream_info.cc.

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

Reimplemented from edash_packager::media::StreamInfo.

-

Definition at line 89 of file audio_stream_info.cc.

+

Definition at line 95 of file audio_stream_info.cc.

@@ -307,7 +313,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 d79215b435..6a1ed14bba 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 @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/da/d2a/text__stream__info_8h_source.html b/docs/da/d2a/text__stream__info_8h_source.html index 25c4cef00e..0d4f985ddb 100644 --- a/docs/da/d2a/text__stream__info_8h_source.html +++ b/docs/da/d2a/text__stream__info_8h_source.html @@ -140,7 +140,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d2c/decoder__configuration_8cc_source.html b/docs/da/d2c/decoder__configuration_8cc_source.html index 82784c3001..fc6d90e4d7 100644 --- a/docs/da/d2c/decoder__configuration_8cc_source.html +++ b/docs/da/d2c/decoder__configuration_8cc_source.html @@ -119,7 +119,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d2e/classedash__packager_1_1media_1_1mp4_1_1H264VideoSliceHeaderParser-members.html b/docs/da/d2e/classedash__packager_1_1media_1_1mp4_1_1H264VideoSliceHeaderParser-members.html index 76188108e9..02be40d0e7 100644 --- a/docs/da/d2e/classedash__packager_1_1media_1_1mp4_1_1H264VideoSliceHeaderParser-members.html +++ b/docs/da/d2e/classedash__packager_1_1media_1_1mp4_1_1H264VideoSliceHeaderParser-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');

Public Member Functions

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, uint64_t seek_preroll_ns, uint64_t codec_delay_ns, 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.
 
AudioCodec codec () const
 
sampling_frequenc
uint32_t bytes_per_frame () const
 
+uint64_t seek_preroll_ns () const
 
+uint64_t codec_delay_ns () const
 
uint32_t max_bitrate () const
 
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 951cd2ca6e..f1e57f5e71 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 3392f05a65..13a944681d 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 54386003ea..47d1a60062 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 99fc87aeab..efeb909439 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/d49/classedash__packager_1_1DashIopMpdNotifier.html b/docs/da/d49/classedash__packager_1_1DashIopMpdNotifier.html index 0bd21b2a13..4301c9f668 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 47becfaa92..05575aa1c0 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 @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/da/d53/es__parser__h265_8cc_source.html b/docs/da/d53/es__parser__h265_8cc_source.html index a75998a4ce..2ced6399ac 100644 --- a/docs/da/d53/es__parser__h265_8cc_source.html +++ b/docs/da/d53/es__parser__h265_8cc_source.html @@ -267,7 +267,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); 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 fad8f5cfc5..f2249faa25 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 407 of file box_definitions.h.

+

Definition at line 416 of file box_definitions.h.

Member Function Documentation

@@ -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 203c510fe0..45d7cab777 100644 --- a/docs/da/d5c/widevine__key__source_8h_source.html +++ b/docs/da/d5c/widevine__key__source_8h_source.html @@ -218,7 +218,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 9d522b57ae..ee612fd8e2 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 539c56b8ae..608b266986 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 578401e82b..7a2704337f 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 8faab76ff8..8eda90920e 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 0019441a31..d090976763 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 7912fe5185..7199da50de 100644 --- a/docs/da/d7a/classedash__packager_1_1media_1_1AVCDecoderConfiguration-members.html +++ b/docs/da/d7a/classedash__packager_1_1media_1_1AVCDecoderConfiguration-members.html @@ -119,7 +119,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d7a/fixed__key__encryption__flags_8h_source.html b/docs/da/d7a/fixed__key__encryption__flags_8h_source.html index 81545b8be3..9c52221acb 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 e15ceed077..2573548e13 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/classedash__packager_1_1media_1_1AesCbcEncryptor.html b/docs/da/d7f/classedash__packager_1_1media_1_1AesCbcEncryptor.html index 66d24c416e..b0c9133c8b 100644 --- a/docs/da/d7f/classedash__packager_1_1media_1_1AesCbcEncryptor.html +++ b/docs/da/d7f/classedash__packager_1_1media_1_1AesCbcEncryptor.html @@ -233,7 +233,7 @@ AES_KEY * mutable_aes_key< diff --git a/docs/da/d7f/hevc__decoder__configuration_8h_source.html b/docs/da/d7f/hevc__decoder__configuration_8h_source.html index e6000db9ff..f7d116dba4 100644 --- a/docs/da/d7f/hevc__decoder__configuration_8h_source.html +++ b/docs/da/d7f/hevc__decoder__configuration_8h_source.html @@ -138,7 +138,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d81/structedash__packager_1_1media_1_1mp4_1_1ChunkLargeOffset.html b/docs/da/d81/structedash__packager_1_1media_1_1mp4_1_1ChunkLargeOffset.html index 51b0fd51c9..2b3c4bbb2e 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 444 of file box_definitions.h.

+

Definition at line 453 of file box_definitions.h.

Member Function Documentation

@@ -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 7dc9462c7c..31334847b8 100644 --- a/docs/da/d88/mp4__muxer_8cc_source.html +++ b/docs/da/d88/mp4__muxer_8cc_source.html @@ -166,305 +166,341 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
77  return FOURCC_dtsm;
78  case kCodecEAC3:
79  return FOURCC_ec_3;
-
80  default:
-
81  return FOURCC_NULL;
-
82  }
-
83 }
-
84 
-
85 } // namespace
+
80  case kCodecOpus:
+
81  return FOURCC_Opus;
+
82  default:
+
83  return FOURCC_NULL;
+
84  }
+
85 }
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  const Status segmenter_initialized = segmenter_->Initialize(
-
151  streams(), muxer_listener(), progress_listener(), encryption_key_source(),
-
152  max_sd_pixels(), clear_lead_in_seconds(),
-
153  crypto_period_duration_in_seconds(), protection_scheme());
-
154 
-
155  if (!segmenter_initialized.ok())
-
156  return segmenter_initialized;
-
157 
-
158  FireOnMediaStartEvent();
-
159  return Status::OK;
-
160 }
-
161 
-
162 Status MP4Muxer::Finalize() {
-
163  DCHECK(segmenter_);
-
164  Status segmenter_finalized = segmenter_->Finalize();
-
165 
-
166  if (!segmenter_finalized.ok())
-
167  return segmenter_finalized;
-
168 
-
169  FireOnMediaEndEvent();
-
170  LOG(INFO) << "MP4 file '" << options().output_file_name << "' finalized.";
-
171  return Status::OK;
-
172 }
-
173 
-
174 Status MP4Muxer::DoAddSample(const MediaStream* stream,
-
175  scoped_refptr<MediaSample> sample) {
-
176  DCHECK(segmenter_);
-
177  return segmenter_->AddSample(stream, sample);
-
178 }
-
179 
-
180 void MP4Muxer::InitializeTrak(const StreamInfo* info, Track* trak) {
-
181  int64_t now = IsoTimeNow();
-
182  trak->header.creation_time = now;
-
183  trak->header.modification_time = now;
-
184  trak->header.duration = 0;
-
185  trak->media.header.creation_time = now;
-
186  trak->media.header.modification_time = now;
-
187  trak->media.header.timescale = info->time_scale();
-
188  trak->media.header.duration = 0;
-
189  if (!info->language().empty()) {
-
190  // Strip off the subtag, if any.
-
191  std::string main_language = info->language();
-
192  size_t dash = main_language.find('-');
-
193  if (dash != std::string::npos) {
-
194  main_language.erase(dash);
-
195  }
-
196 
-
197  // ISO-639-2/T main language code should be 3 characters.
-
198  if (main_language.size() != 3) {
-
199  LOG(WARNING) << "'" << main_language << "' is not a valid ISO-639-2 "
-
200  << "language code, ignoring.";
-
201  } else {
-
202  trak->media.header.language.code = main_language;
-
203  }
-
204  }
-
205 }
-
206 
-
207 void MP4Muxer::GenerateVideoTrak(const VideoStreamInfo* video_info,
-
208  Track* trak,
-
209  uint32_t track_id) {
-
210  InitializeTrak(video_info, trak);
-
211 
-
212  // width and height specify the track's visual presentation size as
-
213  // fixed-point 16.16 values.
-
214  uint32_t pixel_width = video_info->pixel_width();
-
215  uint32_t pixel_height = video_info->pixel_height();
-
216  if (pixel_width == 0 || pixel_height == 0) {
-
217  LOG(WARNING) << "pixel width/height are not set. Assuming 1:1.";
-
218  pixel_width = 1;
-
219  pixel_height = 1;
-
220  }
-
221  const double sample_aspect_ratio =
-
222  static_cast<double>(pixel_width) / pixel_height;
-
223  trak->header.width = video_info->width() * sample_aspect_ratio * 0x10000;
-
224  trak->header.height = video_info->height() * 0x10000;
-
225 
-
226  VideoSampleEntry video;
-
227  video.format = VideoCodecToFourCC(video_info->codec());
-
228  video.width = video_info->width();
-
229  video.height = video_info->height();
-
230  video.codec_config_record.data = video_info->extra_data();
-
231  if (pixel_width != 1 || pixel_height != 1) {
-
232  video.pixel_aspect.h_spacing = pixel_width;
-
233  video.pixel_aspect.v_spacing = pixel_height;
-
234  }
-
235 
-
236  SampleDescription& sample_description =
-
237  trak->media.information.sample_table.description;
-
238  sample_description.type = kVideo;
-
239  sample_description.video_entries.push_back(video);
-
240 }
-
241 
-
242 void MP4Muxer::GenerateAudioTrak(const AudioStreamInfo* audio_info,
-
243  Track* trak,
-
244  uint32_t track_id) {
-
245  InitializeTrak(audio_info, trak);
-
246 
-
247  trak->header.volume = 0x100;
+
87 } // namespace
+
88 
+
89 MP4Muxer::MP4Muxer(const MuxerOptions& options) : Muxer(options) {}
+
90 MP4Muxer::~MP4Muxer() {}
+
91 
+
92 Status MP4Muxer::Initialize() {
+
93  DCHECK(!streams().empty());
+
94 
+
95  scoped_ptr<FileType> ftyp(new FileType);
+
96  scoped_ptr<Movie> moov(new Movie);
+
97 
+
98  ftyp->major_brand = FOURCC_dash;
+
99  ftyp->compatible_brands.push_back(FOURCC_iso6);
+
100  ftyp->compatible_brands.push_back(FOURCC_mp41);
+
101  if (streams().size() == 1 &&
+
102  streams()[0]->info()->stream_type() == kStreamVideo) {
+
103  const FourCC codec_fourcc = VideoCodecToFourCC(
+
104  static_cast<VideoStreamInfo*>(streams()[0]->info().get())->codec());
+
105  if (codec_fourcc != FOURCC_NULL)
+
106  ftyp->compatible_brands.push_back(codec_fourcc);
+
107  }
+
108 
+
109  moov->header.creation_time = IsoTimeNow();
+
110  moov->header.modification_time = IsoTimeNow();
+
111  moov->header.next_track_id = streams().size() + 1;
+
112 
+
113  moov->tracks.resize(streams().size());
+
114  moov->extends.tracks.resize(streams().size());
+
115 
+
116  // Initialize tracks.
+
117  for (uint32_t i = 0; i < streams().size(); ++i) {
+
118  Track& trak = moov->tracks[i];
+
119  trak.header.track_id = i + 1;
+
120 
+
121  TrackExtends& trex = moov->extends.tracks[i];
+
122  trex.track_id = trak.header.track_id;
+
123  trex.default_sample_description_index = 1;
+
124 
+
125  switch (streams()[i]->info()->stream_type()) {
+
126  case kStreamVideo:
+
127  GenerateVideoTrak(
+
128  static_cast<VideoStreamInfo*>(streams()[i]->info().get()),
+
129  &trak,
+
130  i + 1);
+
131  break;
+
132  case kStreamAudio:
+
133  GenerateAudioTrak(
+
134  static_cast<AudioStreamInfo*>(streams()[i]->info().get()),
+
135  &trak,
+
136  i + 1);
+
137  break;
+
138  default:
+
139  NOTIMPLEMENTED() << "Not implemented for stream type: "
+
140  << streams()[i]->info()->stream_type();
+
141  }
+
142  }
+
143 
+
144  if (options().single_segment) {
+
145  segmenter_.reset(
+
146  new SingleSegmentSegmenter(options(), ftyp.Pass(), moov.Pass()));
+
147  } else {
+
148  segmenter_.reset(
+
149  new MultiSegmentSegmenter(options(), ftyp.Pass(), moov.Pass()));
+
150  }
+
151 
+
152  const Status segmenter_initialized = segmenter_->Initialize(
+
153  streams(), muxer_listener(), progress_listener(), encryption_key_source(),
+
154  max_sd_pixels(), clear_lead_in_seconds(),
+
155  crypto_period_duration_in_seconds(), protection_scheme());
+
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  // Strip off the subtag, if any.
+
193  std::string main_language = info->language();
+
194  size_t dash = main_language.find('-');
+
195  if (dash != std::string::npos) {
+
196  main_language.erase(dash);
+
197  }
+
198 
+
199  // ISO-639-2/T main language code should be 3 characters.
+
200  if (main_language.size() != 3) {
+
201  LOG(WARNING) << "'" << main_language << "' is not a valid ISO-639-2 "
+
202  << "language code, ignoring.";
+
203  } else {
+
204  trak->media.header.language.code = main_language;
+
205  }
+
206  }
+
207 }
+
208 
+
209 void MP4Muxer::GenerateVideoTrak(const VideoStreamInfo* video_info,
+
210  Track* trak,
+
211  uint32_t track_id) {
+
212  InitializeTrak(video_info, trak);
+
213 
+
214  // width and height specify the track's visual presentation size as
+
215  // fixed-point 16.16 values.
+
216  uint32_t pixel_width = video_info->pixel_width();
+
217  uint32_t pixel_height = video_info->pixel_height();
+
218  if (pixel_width == 0 || pixel_height == 0) {
+
219  LOG(WARNING) << "pixel width/height are not set. Assuming 1:1.";
+
220  pixel_width = 1;
+
221  pixel_height = 1;
+
222  }
+
223  const double sample_aspect_ratio =
+
224  static_cast<double>(pixel_width) / pixel_height;
+
225  trak->header.width = video_info->width() * sample_aspect_ratio * 0x10000;
+
226  trak->header.height = video_info->height() * 0x10000;
+
227 
+
228  VideoSampleEntry video;
+
229  video.format = VideoCodecToFourCC(video_info->codec());
+
230  video.width = video_info->width();
+
231  video.height = video_info->height();
+
232  video.codec_config_record.data = video_info->extra_data();
+
233  if (pixel_width != 1 || pixel_height != 1) {
+
234  video.pixel_aspect.h_spacing = pixel_width;
+
235  video.pixel_aspect.v_spacing = pixel_height;
+
236  }
+
237 
+
238  SampleDescription& sample_description =
+
239  trak->media.information.sample_table.description;
+
240  sample_description.type = kVideo;
+
241  sample_description.video_entries.push_back(video);
+
242 }
+
243 
+
244 void MP4Muxer::GenerateAudioTrak(const AudioStreamInfo* audio_info,
+
245  Track* trak,
+
246  uint32_t track_id) {
+
247  InitializeTrak(audio_info, trak);
248 
-
249  AudioSampleEntry audio;
-
250  audio.format = AudioCodecToFourCC(audio_info->codec());
-
251  switch(audio_info->codec()){
-
252  case kCodecAAC:
-
253  audio.esds.es_descriptor.set_object_type(kISO_14496_3); // MPEG4 AAC.
-
254  audio.esds.es_descriptor.set_esid(track_id);
-
255  audio.esds.es_descriptor.set_decoder_specific_info(
-
256  audio_info->extra_data());
-
257  audio.esds.es_descriptor.set_max_bitrate(audio_info->max_bitrate());
-
258  audio.esds.es_descriptor.set_avg_bitrate(audio_info->avg_bitrate());
-
259  break;
-
260  case kCodecDTSC:
-
261  case kCodecDTSH:
-
262  case kCodecDTSL:
-
263  case kCodecDTSE:
-
264  case kCodecDTSM:
-
265  audio.ddts.extra_data = audio_info->extra_data();
-
266  audio.ddts.max_bitrate = audio_info->max_bitrate();
-
267  audio.ddts.avg_bitrate = audio_info->avg_bitrate();
-
268  audio.ddts.sampling_frequency = audio_info->sampling_frequency();
-
269  audio.ddts.pcm_sample_depth = audio_info->sample_bits();
-
270  break;
-
271  case kCodecAC3:
-
272  audio.dac3.data = audio_info->extra_data();
-
273  break;
-
274  case kCodecEAC3:
-
275  audio.dec3.data = audio_info->extra_data();
-
276  break;
-
277  default:
-
278  NOTIMPLEMENTED();
-
279  break;
-
280  }
-
281 
-
282  audio.channelcount = audio_info->num_channels();
-
283  audio.samplesize = audio_info->sample_bits();
-
284  audio.samplerate = audio_info->sampling_frequency();
-
285  SampleDescription& sample_description =
-
286  trak->media.information.sample_table.description;
-
287  sample_description.type = kAudio;
-
288  sample_description.audio_entries.push_back(audio);
-
289 }
-
290 
-
291 bool MP4Muxer::GetInitRangeStartAndEnd(uint32_t* start, uint32_t* end) {
-
292  DCHECK(start && end);
-
293  size_t range_offset = 0;
-
294  size_t range_size = 0;
-
295  const bool has_range = segmenter_->GetInitRange(&range_offset, &range_size);
-
296 
-
297  if (!has_range)
-
298  return false;
-
299 
-
300  SetStartAndEndFromOffsetAndSize(range_offset, range_size, start, end);
-
301  return true;
-
302 }
-
303 
-
304 bool MP4Muxer::GetIndexRangeStartAndEnd(uint32_t* start, uint32_t* end) {
-
305  DCHECK(start && end);
-
306  size_t range_offset = 0;
-
307  size_t range_size = 0;
-
308  const bool has_range = segmenter_->GetIndexRange(&range_offset, &range_size);
-
309 
-
310  if (!has_range)
-
311  return false;
-
312 
-
313  SetStartAndEndFromOffsetAndSize(range_offset, range_size, start, end);
-
314  return true;
-
315 }
-
316 
-
317 void MP4Muxer::FireOnMediaStartEvent() {
-
318  if (!muxer_listener())
-
319  return;
-
320 
-
321  if (streams().size() > 1) {
-
322  LOG(ERROR) << "MuxerListener cannot take more than 1 stream.";
+
249  trak->header.volume = 0x100;
+
250 
+
251  AudioSampleEntry audio;
+
252  audio.format = AudioCodecToFourCC(audio_info->codec());
+
253  switch(audio_info->codec()){
+
254  case kCodecAAC:
+
255  audio.esds.es_descriptor.set_object_type(kISO_14496_3); // MPEG4 AAC.
+
256  audio.esds.es_descriptor.set_esid(track_id);
+
257  audio.esds.es_descriptor.set_decoder_specific_info(
+
258  audio_info->extra_data());
+
259  audio.esds.es_descriptor.set_max_bitrate(audio_info->max_bitrate());
+
260  audio.esds.es_descriptor.set_avg_bitrate(audio_info->avg_bitrate());
+
261  break;
+
262  case kCodecDTSC:
+
263  case kCodecDTSH:
+
264  case kCodecDTSL:
+
265  case kCodecDTSE:
+
266  case kCodecDTSM:
+
267  audio.ddts.extra_data = audio_info->extra_data();
+
268  audio.ddts.max_bitrate = audio_info->max_bitrate();
+
269  audio.ddts.avg_bitrate = audio_info->avg_bitrate();
+
270  audio.ddts.sampling_frequency = audio_info->sampling_frequency();
+
271  audio.ddts.pcm_sample_depth = audio_info->sample_bits();
+
272  break;
+
273  case kCodecAC3:
+
274  audio.dac3.data = audio_info->extra_data();
+
275  break;
+
276  case kCodecEAC3:
+
277  audio.dec3.data = audio_info->extra_data();
+
278  break;
+
279  case kCodecOpus:
+
280  audio.dops.opus_identification_header = audio_info->extra_data();
+
281  break;
+
282  default:
+
283  NOTIMPLEMENTED();
+
284  break;
+
285  }
+
286 
+
287  audio.channelcount = audio_info->num_channels();
+
288  audio.samplesize = audio_info->sample_bits();
+
289  audio.samplerate = audio_info->sampling_frequency();
+
290  SampleTable& sample_table = trak->media.information.sample_table;
+
291  SampleDescription& sample_description = sample_table.description;
+
292  sample_description.type = kAudio;
+
293  sample_description.audio_entries.push_back(audio);
+
294 
+
295  // Opus requires at least one sample group description box and at least one
+
296  // sample to group box with grouping type 'roll' within sample table box.
+
297  if (audio_info->codec() == kCodecOpus) {
+
298  sample_table.sample_group_descriptions.resize(1);
+
299  SampleGroupDescription& sample_group_description =
+
300  sample_table.sample_group_descriptions.back();
+
301  sample_group_description.grouping_type = FOURCC_roll;
+
302  sample_group_description.audio_roll_recovery_entries.resize(1);
+
303  // The roll distance is expressed in sample units and always takes negative
+
304  // values.
+
305  const uint64_t kNanosecondsPerSecond = 1000000000ull;
+
306  sample_group_description.audio_roll_recovery_entries[0].roll_distance =
+
307  -(audio_info->seek_preroll_ns() * audio.samplerate +
+
308  kNanosecondsPerSecond / 2) /
+
309  kNanosecondsPerSecond;
+
310 
+
311  sample_table.sample_to_groups.resize(1);
+
312  SampleToGroup& sample_to_group = sample_table.sample_to_groups.back();
+
313  sample_to_group.grouping_type = FOURCC_roll;
+
314 
+
315  sample_to_group.entries.resize(1);
+
316  SampleToGroupEntry& sample_to_group_entry = sample_to_group.entries.back();
+
317  // All samples are in track fragments.
+
318  sample_to_group_entry.sample_count = 0;
+
319  sample_to_group_entry.group_description_index =
+
320  SampleToGroupEntry::kTrackGroupDescriptionIndexBase + 1;
+
321  } else if (audio_info->seek_preroll_ns() != 0) {
+
322  LOG(WARNING) << "Unexpected seek preroll for codec " << audio_info->codec();
323  return;
324  }
-
325  DCHECK(!streams().empty()) << "Media started without a stream.";
+
325 }
326 
-
327  const uint32_t timescale = segmenter_->GetReferenceTimeScale();
-
328  muxer_listener()->OnMediaStart(options(),
-
329  *streams().front()->info(),
-
330  timescale,
-
331  MuxerListener::kContainerMp4);
-
332 }
-
333 
-
334 void MP4Muxer::FireOnMediaEndEvent() {
-
335  if (!muxer_listener())
-
336  return;
-
337 
-
338  uint32_t init_range_start = 0;
-
339  uint32_t init_range_end = 0;
-
340  const bool has_init_range =
-
341  GetInitRangeStartAndEnd(&init_range_start, &init_range_end);
-
342 
-
343  uint32_t index_range_start = 0;
-
344  uint32_t index_range_end = 0;
-
345  const bool has_index_range =
-
346  GetIndexRangeStartAndEnd(&index_range_start, &index_range_end);
-
347 
-
348  const float duration_seconds = static_cast<float>(segmenter_->GetDuration());
-
349 
-
350  const int64_t file_size =
-
351  File::GetFileSize(options().output_file_name.c_str());
-
352  if (file_size <= 0) {
-
353  LOG(ERROR) << "Invalid file size: " << file_size;
-
354  return;
-
355  }
+
327 bool MP4Muxer::GetInitRangeStartAndEnd(uint32_t* start, uint32_t* end) {
+
328  DCHECK(start && end);
+
329  size_t range_offset = 0;
+
330  size_t range_size = 0;
+
331  const bool has_range = segmenter_->GetInitRange(&range_offset, &range_size);
+
332 
+
333  if (!has_range)
+
334  return false;
+
335 
+
336  SetStartAndEndFromOffsetAndSize(range_offset, range_size, start, end);
+
337  return true;
+
338 }
+
339 
+
340 bool MP4Muxer::GetIndexRangeStartAndEnd(uint32_t* start, uint32_t* end) {
+
341  DCHECK(start && end);
+
342  size_t range_offset = 0;
+
343  size_t range_size = 0;
+
344  const bool has_range = segmenter_->GetIndexRange(&range_offset, &range_size);
+
345 
+
346  if (!has_range)
+
347  return false;
+
348 
+
349  SetStartAndEndFromOffsetAndSize(range_offset, range_size, start, end);
+
350  return true;
+
351 }
+
352 
+
353 void MP4Muxer::FireOnMediaStartEvent() {
+
354  if (!muxer_listener())
+
355  return;
356 
-
357  muxer_listener()->OnMediaEnd(has_init_range,
-
358  init_range_start,
-
359  init_range_end,
-
360  has_index_range,
-
361  index_range_start,
-
362  index_range_end,
-
363  duration_seconds,
-
364  file_size);
-
365 }
-
366 
-
367 uint64_t MP4Muxer::IsoTimeNow() {
-
368  // Time in seconds from Jan. 1, 1904 to epoch time, i.e. Jan. 1, 1970.
-
369  const uint64_t kIsomTimeOffset = 2082844800l;
-
370  return kIsomTimeOffset +
-
371  (clock() ? clock()->Now() : base::Time::Now()).ToDoubleT();
-
372 }
+
357  if (streams().size() > 1) {
+
358  LOG(ERROR) << "MuxerListener cannot take more than 1 stream.";
+
359  return;
+
360  }
+
361  DCHECK(!streams().empty()) << "Media started without a stream.";
+
362 
+
363  const uint32_t timescale = segmenter_->GetReferenceTimeScale();
+
364  muxer_listener()->OnMediaStart(options(),
+
365  *streams().front()->info(),
+
366  timescale,
+
367  MuxerListener::kContainerMp4);
+
368 }
+
369 
+
370 void MP4Muxer::FireOnMediaEndEvent() {
+
371  if (!muxer_listener())
+
372  return;
373 
-
374 } // namespace mp4
-
375 } // namespace media
-
376 } // namespace edash_packager
+
374  uint32_t init_range_start = 0;
+
375  uint32_t init_range_end = 0;
+
376  const bool has_init_range =
+
377  GetInitRangeStartAndEnd(&init_range_start, &init_range_end);
+
378 
+
379  uint32_t index_range_start = 0;
+
380  uint32_t index_range_end = 0;
+
381  const bool has_index_range =
+
382  GetIndexRangeStartAndEnd(&index_range_start, &index_range_end);
+
383 
+
384  const float duration_seconds = static_cast<float>(segmenter_->GetDuration());
+
385 
+
386  const int64_t file_size =
+
387  File::GetFileSize(options().output_file_name.c_str());
+
388  if (file_size <= 0) {
+
389  LOG(ERROR) << "Invalid file size: " << file_size;
+
390  return;
+
391  }
+
392 
+
393  muxer_listener()->OnMediaEnd(has_init_range,
+
394  init_range_start,
+
395  init_range_end,
+
396  has_index_range,
+
397  index_range_start,
+
398  index_range_end,
+
399  duration_seconds,
+
400  file_size);
+
401 }
+
402 
+
403 uint64_t MP4Muxer::IsoTimeNow() {
+
404  // Time in seconds from Jan. 1, 1904 to epoch time, i.e. Jan. 1, 1970.
+
405  const uint64_t kIsomTimeOffset = 2082844800l;
+
406  return kIsomTimeOffset +
+
407  (clock() ? clock()->Now() : base::Time::Now()).ToDoubleT();
+
408 }
+
409 
+
410 } // namespace mp4
+
411 } // namespace media
+
412 } // namespace edash_packager
-
MP4Muxer(const MuxerOptions &options)
Create a MP4Muxer object from MuxerOptions.
Definition: mp4_muxer.cc:87
+
MP4Muxer(const MuxerOptions &options)
Create a MP4Muxer object from MuxerOptions.
Definition: mp4_muxer.cc:89
virtual void OnMediaStart(const MuxerOptions &muxer_options, const StreamInfo &stream_info, uint32_t time_scale, ContainerType container_type)=0
@@ -474,7 +510,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 1791e097cc..3f038f840e 100644 --- a/docs/da/d8e/container__names_8cc_source.html +++ b/docs/da/d8e/container__names_8cc_source.html @@ -1844,7 +1844,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 b702e6bc7c..4382044480 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 @@ -108,7 +108,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 739dc0dbe0..ccd1bb951b 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 9129ec23ba..4a53a93ec5 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 496 of file box_definitions.h.

+

Definition at line 568 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 1649 of file box_definitions.cc.

+

Definition at line 1897 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 b83d187dc9..f7fba94cb9 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 7e66fe0ec2..119f9bbba9 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 790cf6ead1..65d67fb2e5 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 c84ecab11c..ec642df40a 100644 --- a/docs/da/dd1/fragmenter_8h_source.html +++ b/docs/da/dd1/fragmenter_8h_source.html @@ -108,96 +108,98 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
19 
20 class BufferWriter;
21 class MediaSample;
-
22 
-
23 namespace mp4 {
-
24 
-
25 struct SegmentReference;
-
26 struct TrackFragment;
-
27 
-
30 class Fragmenter {
-
31  public:
- -
34 
-
35  virtual ~Fragmenter();
+
22 class StreamInfo;
+
23 
+
24 namespace mp4 {
+
25 
+
26 struct SegmentReference;
+
27 struct TrackFragment;
+
28 
+
31 class Fragmenter {
+
32  public:
+
35  Fragmenter(scoped_refptr<StreamInfo> info, TrackFragment* traf);
36 
-
40  virtual Status AddSample(scoped_refptr<MediaSample> sample);
-
41 
-
46  virtual Status InitializeFragment(int64_t first_sample_dts);
-
47 
-
49  virtual void FinalizeFragment();
-
50 
- -
53 
-
54  uint64_t fragment_duration() const { return fragment_duration_; }
-
55  uint64_t first_sap_time() const { return first_sap_time_; }
-
56  uint64_t earliest_presentation_time() const {
-
57  return earliest_presentation_time_;
-
58  }
-
59  bool fragment_initialized() const { return fragment_initialized_; }
-
60  bool fragment_finalized() const { return fragment_finalized_; }
-
61  BufferWriter* data() { return data_.get(); }
-
62 
-
63  protected:
-
64  TrackFragment* traf() { return traf_; }
-
65 
-
69  template <typename T>
-
70  bool OptimizeSampleEntries(std::vector<T>* entries, T* default_value);
-
71 
-
72  private:
-
73  // Check if the current fragment starts with SAP.
-
74  bool StartsWithSAP();
-
75 
-
76  TrackFragment* traf_;
-
77  bool fragment_initialized_;
-
78  bool fragment_finalized_;
-
79  uint64_t fragment_duration_;
-
80  int64_t presentation_start_time_;
-
81  int64_t earliest_presentation_time_;
-
82  int64_t first_sap_time_;
-
83  scoped_ptr<BufferWriter> data_;
-
84 
-
85  DISALLOW_COPY_AND_ASSIGN(Fragmenter);
-
86 };
+
37  virtual ~Fragmenter();
+
38 
+
42  virtual Status AddSample(scoped_refptr<MediaSample> sample);
+
43 
+
48  virtual Status InitializeFragment(int64_t first_sample_dts);
+
49 
+
51  virtual void FinalizeFragment();
+
52 
+ +
55 
+
56  uint64_t fragment_duration() const { return fragment_duration_; }
+
57  uint64_t first_sap_time() const { return first_sap_time_; }
+
58  uint64_t earliest_presentation_time() const {
+
59  return earliest_presentation_time_;
+
60  }
+
61  bool fragment_initialized() const { return fragment_initialized_; }
+
62  bool fragment_finalized() const { return fragment_finalized_; }
+
63  BufferWriter* data() { return data_.get(); }
+
64 
+
65  protected:
+
66  TrackFragment* traf() { return traf_; }
+
67 
+
71  template <typename T>
+
72  bool OptimizeSampleEntries(std::vector<T>* entries, T* default_value);
+
73 
+
74  private:
+
75  // Check if the current fragment starts with SAP.
+
76  bool StartsWithSAP();
+
77 
+
78  TrackFragment* traf_;
+
79  uint64_t seek_preroll_;
+
80  bool fragment_initialized_;
+
81  bool fragment_finalized_;
+
82  uint64_t fragment_duration_;
+
83  int64_t presentation_start_time_;
+
84  int64_t earliest_presentation_time_;
+
85  int64_t first_sap_time_;
+
86  scoped_ptr<BufferWriter> data_;
87 
-
88 template <typename T>
-
89 bool Fragmenter::OptimizeSampleEntries(std::vector<T>* entries,
-
90  T* default_value) {
-
91  DCHECK(entries);
-
92  DCHECK(default_value);
-
93  DCHECK(!entries->empty());
-
94 
-
95  typename std::vector<T>::const_iterator it = entries->begin();
-
96  T value = *it;
-
97  for (; it < entries->end(); ++it)
-
98  if (value != *it)
-
99  return false;
-
100 
-
101  // Clear |entries| if it contains only one value.
-
102  entries->clear();
-
103  *default_value = value;
-
104  return true;
-
105 }
-
106 
-
107 } // namespace mp4
-
108 } // namespace media
-
109 } // namespace edash_packager
-
110 
-
111 #endif // MEDIA_FORMATS_MP4_FRAGMENTER_H_
- - -
void GenerateSegmentReference(SegmentReference *reference)
Fill reference with current fragment information.
Definition: fragmenter.cc:120
+
88  DISALLOW_COPY_AND_ASSIGN(Fragmenter);
+
89 };
+
90 
+
91 template <typename T>
+
92 bool Fragmenter::OptimizeSampleEntries(std::vector<T>* entries,
+
93  T* default_value) {
+
94  DCHECK(entries);
+
95  DCHECK(default_value);
+
96  DCHECK(!entries->empty());
+
97 
+
98  typename std::vector<T>::const_iterator it = entries->begin();
+
99  T value = *it;
+
100  for (; it < entries->end(); ++it)
+
101  if (value != *it)
+
102  return false;
+
103 
+
104  // Clear |entries| if it contains only one value.
+
105  entries->clear();
+
106  *default_value = value;
+
107  return true;
+
108 }
+
109 
+
110 } // namespace mp4
+
111 } // namespace media
+
112 } // namespace edash_packager
+
113 
+
114 #endif // MEDIA_FORMATS_MP4_FRAGMENTER_H_
+ +
Fragmenter(scoped_refptr< StreamInfo > info, TrackFragment *traf)
Definition: fragmenter.cc:31
+
void GenerateSegmentReference(SegmentReference *reference)
Fill reference with current fragment information.
Definition: fragmenter.cc:160
-
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
+
virtual Status InitializeFragment(int64_t first_sample_dts)
Definition: fragmenter.cc:85
+
virtual Status AddSample(scoped_refptr< MediaSample > sample)
Definition: fragmenter.cc:45
+ +
bool OptimizeSampleEntries(std::vector< T > *entries, T *default_value)
Definition: fragmenter.h:92
+ +
virtual void FinalizeFragment()
Finalize and optimize the fragment.
Definition: fragmenter.cc:104
diff --git a/docs/da/de2/mock__mpd__builder_8cc_source.html b/docs/da/de2/mock__mpd__builder_8cc_source.html index a330261580..f7111b4ba0 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 c48bf940e3..521221ee0a 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/df0/classedash__packager_1_1media_1_1NalUnitToByteStreamConverter-members.html b/docs/da/df0/classedash__packager_1_1media_1_1NalUnitToByteStreamConverter-members.html index 1aef02fc7a..82827cba85 100644 --- a/docs/da/df0/classedash__packager_1_1media_1_1NalUnitToByteStreamConverter-members.html +++ b/docs/da/df0/classedash__packager_1_1media_1_1NalUnitToByteStreamConverter-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/df4/aes__decryptor_8cc_source.html b/docs/da/df4/aes__decryptor_8cc_source.html index c80b046764..f7fcd2f326 100644 --- a/docs/da/df4/aes__decryptor_8cc_source.html +++ b/docs/da/df4/aes__decryptor_8cc_source.html @@ -258,7 +258,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); 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 4c88789a78..cb77934d6a 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 398 of file box_definitions.h.

+

Definition at line 407 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 39864e957c..546e547a92 100644 --- a/docs/db/d01/avc__decoder__configuration_8cc_source.html +++ b/docs/db/d01/avc__decoder__configuration_8cc_source.html @@ -203,7 +203,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d01/classedash__packager_1_1media_1_1mp4_1_1SyncSampleIterator.html b/docs/db/d01/classedash__packager_1_1media_1_1mp4_1_1SyncSampleIterator.html index 1a85f1b0b2..1c0141484b 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 c0dbb4f5e1..f3f1c27e0c 100644 --- a/docs/db/d09/namespaceedash__packager.html +++ b/docs/db/d09/namespaceedash__packager.html @@ -556,7 +556,7 @@ const char kPsshElementNam 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 6ec6881f4a..01228ee54b 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 7f7547bfec..0e93a9d76a 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 7752a48e29..90ce8ccf15 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 8766777231..7260a08a5d 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 1ebd3dae6d..8a3281a4bc 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/h26x__byte__to__unit__stream__converter_8h_source.html b/docs/db/d31/h26x__byte__to__unit__stream__converter_8h_source.html index b0bf2f5968..9b45db7d8d 100644 --- a/docs/db/d31/h26x__byte__to__unit__stream__converter_8h_source.html +++ b/docs/db/d31/h26x__byte__to__unit__stream__converter_8h_source.html @@ -143,7 +143,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d31/track__run__iterator_8cc_source.html b/docs/db/d31/track__run__iterator_8cc_source.html index a20527c4ae..33558fcb9f 100644 --- a/docs/db/d31/track__run__iterator_8cc_source.html +++ b/docs/db/d31/track__run__iterator_8cc_source.html @@ -721,7 +721,7 @@ 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
@@ -734,12 +734,12 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); - +
uint32_t NumSamples(uint32_t start_chunk, uint32_t end_chunk) const
- + @@ -748,26 +748,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 03e4bde01d..3ddb7942bf 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 d0b546c985..64b5053640 100644 --- a/docs/db/d45/mpd__notify__muxer__listener_8h_source.html +++ b/docs/db/d45/mpd__notify__muxer__listener_8h_source.html @@ -187,7 +187,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 fbf9081147..ee5b8525a6 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 0363dc30a0..0ba8691f02 100644 --- a/docs/db/d51/mp2t__media__parser_8h_source.html +++ b/docs/db/d51/mp2t__media__parser_8h_source.html @@ -193,7 +193,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d51/two__pass__single__segment__segmenter_8h_source.html b/docs/db/d51/two__pass__single__segment__segmenter_8h_source.html index 39c5576bec..ce1df63714 100644 --- a/docs/db/d51/two__pass__single__segment__segmenter_8h_source.html +++ b/docs/db/d51/two__pass__single__segment__segmenter_8h_source.html @@ -145,7 +145,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d52/classedash__packager_1_1media_1_1ProtectionSystemSpecificInfo-members.html b/docs/db/d52/classedash__packager_1_1media_1_1ProtectionSystemSpecificInfo-members.html index 78da59bd04..7a0aa79ac6 100644 --- a/docs/db/d52/classedash__packager_1_1media_1_1ProtectionSystemSpecificInfo-members.html +++ b/docs/db/d52/classedash__packager_1_1media_1_1ProtectionSystemSpecificInfo-members.html @@ -110,7 +110,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 d3d5044046..c714eb5fea 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 64b27d77e5..9e54f8aa00 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 960ff40408..190e131475 100644 --- a/docs/db/d5b/classedash__packager_1_1media_1_1HEVCDecoderConfiguration-members.html +++ b/docs/db/d5b/classedash__packager_1_1media_1_1HEVCDecoderConfiguration-members.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d60/mpd__options_8h_source.html b/docs/db/d60/mpd__options_8h_source.html index 5055623b37..11cea84397 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 952a60b0b5..5fce0e68bd 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 c674f00e61..2c4842dd48 100644 --- a/docs/db/d64/webvtt__media__parser_8h_source.html +++ b/docs/db/d64/webvtt__media__parser_8h_source.html @@ -181,7 +181,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d69/classedash__packager_1_1media_1_1mp2t_1_1AdtsHeader.html b/docs/db/d69/classedash__packager_1_1media_1_1mp2t_1_1AdtsHeader.html index b01c876ed7..0502b04806 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 5b7e2e6b57..cacdcf39f5 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 779 of file box_definitions.h.

+

Definition at line 810 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 2556 of file box_definitions.cc.

+

Definition at line 2652 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 36a906d8aa..a22c67f54a 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 a1d00219e6..5a10059794 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 1ebe1e07bb..2fd9b6b3fe 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/d7b/structedash__packager_1_1media_1_1H264Pps.html b/docs/db/d7b/structedash__packager_1_1media_1_1H264Pps.html index cbd7d19ede..ffecd272bf 100644 --- a/docs/db/d7b/structedash__packager_1_1media_1_1H264Pps.html +++ b/docs/db/d7b/structedash__packager_1_1media_1_1H264Pps.html @@ -167,7 +167,7 @@ int second_chroma_qp_index diff --git a/docs/db/d7e/muxer__options_8cc_source.html b/docs/db/d7e/muxer__options_8cc_source.html index 2e77d8fccf..90e930c48c 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 fb442f91f0..b9bce9e3eb 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 436 of file box_definitions.h.

+

Definition at line 445 of file box_definitions.h.

Member Function Documentation

@@ -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 b5b29812f2..08fc8b5265 100644 --- a/docs/db/d8f/mp4__muxer_8h_source.html +++ b/docs/db/d8f/mp4__muxer_8h_source.html @@ -160,20 +160,20 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
74 } // namespace edash_packager
75 
76 #endif // MEDIA_FORMATS_MP4_MP4_MUXER_H_
-
MP4Muxer(const MuxerOptions &options)
Create a MP4Muxer object from MuxerOptions.
Definition: mp4_muxer.cc:87
+
MP4Muxer(const MuxerOptions &options)
Create a MP4Muxer object from MuxerOptions.
Definition: mp4_muxer.cc:89
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 3898839f07..90449b6524 100644 --- a/docs/db/d96/wvm__media__parser_8h_source.html +++ b/docs/db/d96/wvm__media__parser_8h_source.html @@ -363,7 +363,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d97/classedash__packager_1_1media_1_1WebMContentEncodingsClient-members.html b/docs/db/d97/classedash__packager_1_1media_1_1WebMContentEncodingsClient-members.html index 0d492037d7..e49291147a 100644 --- a/docs/db/d97/classedash__packager_1_1media_1_1WebMContentEncodingsClient-members.html +++ b/docs/db/d97/classedash__packager_1_1media_1_1WebMContentEncodingsClient-members.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/da0/classedash__packager_1_1media_1_1ProtectionSystemSpecificInfo.html b/docs/db/da0/classedash__packager_1_1media_1_1ProtectionSystemSpecificInfo.html index 373a5a44c2..e25b1620f0 100644 --- a/docs/db/da0/classedash__packager_1_1media_1_1ProtectionSystemSpecificInfo.html +++ b/docs/db/da0/classedash__packager_1_1media_1_1ProtectionSystemSpecificInfo.html @@ -222,7 +222,7 @@ Static Public Member Functions 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 bce6c0c661..9e3e037bba 100644 --- a/docs/db/da0/classedash__packager_1_1media_1_1WebMClusterParser.html +++ b/docs/db/da0/classedash__packager_1_1media_1_1WebMClusterParser.html @@ -365,7 +365,7 @@ The number of bytes parsed on success. diff --git a/docs/db/da4/classBandwidthEstimator-members.html b/docs/db/da4/classBandwidthEstimator-members.html index f6e4ee732f..8786700ce2 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 8372dcecb2..bd85234ba8 100644 --- a/docs/db/da4/classedash__packager_1_1media_1_1WidevineKeySource.html +++ b/docs/db/da4/classedash__packager_1_1media_1_1WidevineKeySource.html @@ -550,7 +550,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 5084fc74fd..19c3f2bf49 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 @@ -94,17 +94,19 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');

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

- - - - - + + + + + + +
CencSampleEncryptionInfoEntry() (defined in edash_packager::media::mp4::CencSampleEncryptionInfoEntry)edash_packager::media::mp4::CencSampleEncryptionInfoEntry
constant_iv (defined in edash_packager::media::mp4::CencSampleEncryptionInfoEntry)edash_packager::media::mp4::CencSampleEncryptionInfoEntry
crypt_byte_block (defined in edash_packager::media::mp4::CencSampleEncryptionInfoEntry)edash_packager::media::mp4::CencSampleEncryptionInfoEntry
is_protected (defined in edash_packager::media::mp4::CencSampleEncryptionInfoEntry)edash_packager::media::mp4::CencSampleEncryptionInfoEntry
key_id (defined in edash_packager::media::mp4::CencSampleEncryptionInfoEntry)edash_packager::media::mp4::CencSampleEncryptionInfoEntry
per_sample_iv_size (defined in edash_packager::media::mp4::CencSampleEncryptionInfoEntry)edash_packager::media::mp4::CencSampleEncryptionInfoEntry
ComputeSize() const (defined in edash_packager::media::mp4::CencSampleEncryptionInfoEntry)edash_packager::media::mp4::CencSampleEncryptionInfoEntry
constant_iv (defined in edash_packager::media::mp4::CencSampleEncryptionInfoEntry)edash_packager::media::mp4::CencSampleEncryptionInfoEntry
crypt_byte_block (defined in edash_packager::media::mp4::CencSampleEncryptionInfoEntry)edash_packager::media::mp4::CencSampleEncryptionInfoEntry
is_protected (defined in edash_packager::media::mp4::CencSampleEncryptionInfoEntry)edash_packager::media::mp4::CencSampleEncryptionInfoEntry
key_id (defined in edash_packager::media::mp4::CencSampleEncryptionInfoEntry)edash_packager::media::mp4::CencSampleEncryptionInfoEntry
per_sample_iv_size (defined in edash_packager::media::mp4::CencSampleEncryptionInfoEntry)edash_packager::media::mp4::CencSampleEncryptionInfoEntry
ReadWrite(BoxBuffer *buffer) (defined in edash_packager::media::mp4::CencSampleEncryptionInfoEntry)edash_packager::media::mp4::CencSampleEncryptionInfoEntry
skip_byte_block (defined in edash_packager::media::mp4::CencSampleEncryptionInfoEntry)edash_packager::media::mp4::CencSampleEncryptionInfoEntry
~CencSampleEncryptionInfoEntry() (defined in edash_packager::media::mp4::CencSampleEncryptionInfoEntry)edash_packager::media::mp4::CencSampleEncryptionInfoEntry
diff --git a/docs/db/da6/memory__file_8h_source.html b/docs/db/da6/memory__file_8h_source.html index 333717f7d3..68eb117d7c 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 19c22898c3..a320ed0b67 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 @@ -109,8 +109,8 @@ Inheritance diagram for edash_packager::media::mp4::Fragmenter: - - + + @@ -154,29 +154,40 @@ Protected Member Functions

Detailed Description

Fragmenter is responsible for the generation of MP4 fragments, i.e. 'traf' box and corresponding 'mdat' box.

-

Definition at line 30 of file fragmenter.h.

+

Definition at line 31 of file fragmenter.h.

Constructor & Destructor Documentation

- +

Public Member Functions

 Fragmenter (TrackFragment *traf)
 
 Fragmenter (scoped_refptr< StreamInfo > info, TrackFragment *traf)
 
virtual Status AddSample (scoped_refptr< MediaSample > sample)
 
virtual Status InitializeFragment (int64_t first_sample_dts)
- - + + + + + + + + + + + +
edash_packager::media::mp4::Fragmenter::Fragmenter (TrackFragmenttraf)scoped_refptr< StreamInfoinfo,
TrackFragmenttraf 
)
Parameters
+
infocontains stream information.
trafpoints to a TrackFragment box.
-

Definition at line 23 of file fragmenter.cc.

+

Definition at line 31 of file fragmenter.cc.

@@ -213,7 +224,7 @@ Protected Member Functions

Reimplemented in edash_packager::media::mp4::EncryptingFragmenter.

-

Definition at line 36 of file fragmenter.cc.

+

Definition at line 45 of file fragmenter.cc.

@@ -249,7 +260,7 @@ Protected Member Functions

Reimplemented in edash_packager::media::mp4::EncryptingFragmenter.

-

Definition at line 76 of file fragmenter.cc.

+

Definition at line 85 of file fragmenter.cc.

@@ -288,7 +299,7 @@ template<typename T >

Optimize sample entries table. If all values in entries are identical, then entries is cleared and the value is assigned to default_value; otherwise it is a NOP. Return true if the table is optimized.

-

Definition at line 89 of file fragmenter.h.

+

Definition at line 92 of file fragmenter.h.

@@ -299,7 +310,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 03cbbeb1c0..248da35a9d 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/dbd/classedash__packager_1_1media_1_1mp2t_1_1ProgramMapTableWriter-members.html b/docs/db/dbd/classedash__packager_1_1media_1_1mp2t_1_1ProgramMapTableWriter-members.html index 8736ca3305..1130ce3965 100644 --- a/docs/db/dbd/classedash__packager_1_1media_1_1mp2t_1_1ProgramMapTableWriter-members.html +++ b/docs/db/dbd/classedash__packager_1_1media_1_1mp2t_1_1ProgramMapTableWriter-members.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/dbf/classedash__packager_1_1media_1_1H265ByteToUnitStreamConverter-members.html b/docs/db/dbf/classedash__packager_1_1media_1_1H265ByteToUnitStreamConverter-members.html index 441d652413..776bc2bb1a 100644 --- a/docs/db/dbf/classedash__packager_1_1media_1_1H265ByteToUnitStreamConverter-members.html +++ b/docs/db/dbf/classedash__packager_1_1media_1_1H265ByteToUnitStreamConverter-members.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/dbf/classedash__packager_1_1media_1_1mp4_1_1H265VideoSliceHeaderParser.html b/docs/db/dbf/classedash__packager_1_1media_1_1mp4_1_1H265VideoSliceHeaderParser.html index 818f6730ed..2eec13d998 100644 --- a/docs/db/dbf/classedash__packager_1_1media_1_1mp4_1_1H265VideoSliceHeaderParser.html +++ b/docs/db/dbf/classedash__packager_1_1media_1_1mp4_1_1H265VideoSliceHeaderParser.html @@ -152,7 +152,7 @@ int64_t  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 1cffaa6adb..46bc2833c8 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 18dd3f66bd..a05e87bbd1 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 98fddb6864..e948b6e114 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 aac8af661d..5d2e714a24 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/dde/h265__parser_8cc_source.html b/docs/db/dde/h265__parser_8cc_source.html index 3c2ab25a9d..3f066ec500 100644 --- a/docs/db/dde/h265__parser_8cc_source.html +++ b/docs/db/dde/h265__parser_8cc_source.html @@ -1221,7 +1221,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/de0/classedash__packager_1_1media_1_1MockMuxerListener-members.html b/docs/db/de0/classedash__packager_1_1media_1_1MockMuxerListener-members.html index 0d4e63d16c..12459f707f 100644 --- a/docs/db/de0/classedash__packager_1_1media_1_1MockMuxerListener-members.html +++ b/docs/db/de0/classedash__packager_1_1media_1_1MockMuxerListener-members.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/de4/classedash__packager_1_1AdaptationSet.html b/docs/db/de4/classedash__packager_1_1AdaptationSet.html index 80a83b5492..da5fcdfc67 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 dff4133419..15216d232d 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 8675837987..f748e2cb46 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/dee/pes__packet_8cc_source.html b/docs/db/dee/pes__packet_8cc_source.html index 283b1a7f77..629ac45180 100644 --- a/docs/db/dee/pes__packet_8cc_source.html +++ b/docs/db/dee/pes__packet_8cc_source.html @@ -108,7 +108,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 c7b03c145e..6ddabcd3e0 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 @@ -146,7 +146,7 @@ uint32_t pid () diff --git a/docs/db/df6/muxer_8h_source.html b/docs/db/df6/muxer_8h_source.html index 2cb5664930..6ce2a71df1 100644 --- a/docs/db/df6/muxer_8h_source.html +++ b/docs/db/df6/muxer_8h_source.html @@ -212,7 +212,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 3adf634976..a323a61dcf 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 b69b7f8935..af1253e0d0 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 487 of file box_definitions.h.

+

Definition at line 559 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 1632 of file box_definitions.cc.

+

Definition at line 1880 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 803551b839..a8c233ea99 100644 --- a/docs/db/dfb/mpd__utils_8cc_source.html +++ b/docs/db/dfb/mpd__utils_8cc_source.html @@ -443,7 +443,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 eb8fe03cae..9d1857e53f 100644 --- a/docs/db/dfc/mpd__notify__muxer__listener_8cc_source.html +++ b/docs/db/dfc/mpd__notify__muxer__listener_8cc_source.html @@ -271,7 +271,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); 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 e9e114ef1f..119ccd83b8 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/d06/classedash__packager_1_1media_1_1MockMuxerListener.html b/docs/dc/d06/classedash__packager_1_1media_1_1MockMuxerListener.html index 7e877e9ce4..6b6ef7dac8 100644 --- a/docs/dc/d06/classedash__packager_1_1media_1_1MockMuxerListener.html +++ b/docs/dc/d06/classedash__packager_1_1media_1_1MockMuxerListener.html @@ -152,7 +152,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 5d95ffd9f2..8aa93fcb73 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 42318f7c6c..6f96d9e78d 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/d19/box_8h_source.html b/docs/dc/d19/box_8h_source.html index e8d5b222db..de5589bfad 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 9d87b71043..0330f2b2a1 100644 --- a/docs/dc/d22/dash__iop__mpd__notifier_8cc_source.html +++ b/docs/dc/d22/dash__iop__mpd__notifier_8cc_source.html @@ -397,7 +397,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 e70e100ffd..3a44de4090 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 a9c9d3e52f..36f8f67e9b 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 @@ -113,7 +113,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 5fedab0e5c..93143b673b 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 28dda33bff..edeac24006 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 4a6a883af4..df0006dc1e 100644 --- a/docs/dc/d3b/fixed__key__encryption__flags_8cc_source.html +++ b/docs/dc/d3b/fixed__key__encryption__flags_8cc_source.html @@ -166,7 +166,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 a31e06c88d..4b702f1d95 100644 --- a/docs/dc/d3c/webm__cluster__parser_8h_source.html +++ b/docs/dc/d3c/webm__cluster__parser_8h_source.html @@ -298,7 +298,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d3f/key__source_8h_source.html b/docs/dc/d3f/key__source_8h_source.html index 3fdc381a23..de39029058 100644 --- a/docs/dc/d3f/key__source_8h_source.html +++ b/docs/dc/d3f/key__source_8h_source.html @@ -169,7 +169,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 59eb614b4f..5e39f12a59 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 3d1a681c0a..559bb31058 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 f3910adab4..85d068e829 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 a13e5458f6..cfe0bce0a8 100644 --- a/docs/dc/d48/classedash__packager_1_1media_1_1MediaParser.html +++ b/docs/dc/d48/classedash__packager_1_1media_1_1MediaParser.html @@ -298,7 +298,7 @@ Public Member Functions diff --git a/docs/dc/d4a/structedash__packager_1_1media_1_1mp4_1_1WebVTTConfigurationBox-members.html b/docs/dc/d4a/structedash__packager_1_1media_1_1mp4_1_1WebVTTConfigurationBox-members.html index ae10884356..95bc9f52c6 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/h265__byte__to__unit__stream__converter_8cc_source.html b/docs/dc/d51/h265__byte__to__unit__stream__converter_8cc_source.html index e987eeca53..f6247d03f9 100644 --- a/docs/dc/d51/h265__byte__to__unit__stream__converter_8cc_source.html +++ b/docs/dc/d51/h265__byte__to__unit__stream__converter_8cc_source.html @@ -226,7 +226,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 602104c276..3aee2c2b34 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 6783b9c370..16db823665 100644 --- a/docs/dc/d53/webm_2segmenter_8cc_source.html +++ b/docs/dc/d53/webm_2segmenter_8cc_source.html @@ -412,94 +412,96 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
323  track->set_type(mkvmuxer::Tracks::kAudio);
324  track->set_sample_rate(info->sampling_frequency());
325  track->set_channels(info->num_channels());
-
326 
-
327  if (encryptor_)
-
328  encryptor_->AddTrackInfo(track);
-
329 
-
330  tracks_.AddTrack(track, info->track_id());
-
331  track_id_ = track->number();
-
332  return Status::OK;
-
333 }
-
334 
-
335 Status Segmenter::InitializeEncryptor(KeySource* key_source,
-
336  uint32_t max_sd_pixels) {
-
337  encryptor_.reset(new Encryptor());
-
338  const KeySource::TrackType track_type =
-
339  GetTrackTypeForEncryption(*info_, max_sd_pixels);
-
340  if (track_type == KeySource::TrackType::TRACK_TYPE_UNKNOWN)
-
341  return Status::OK;
-
342  return encryptor_->Initialize(muxer_listener_, track_type, key_source);
-
343 }
-
344 
-
345 Status Segmenter::WriteFrame(bool write_duration) {
-
346  // Create a frame manually so we can create non-SimpleBlock frames. This
-
347  // is required to allow the frame duration to be added. If the duration
-
348  // is not set, then a SimpleBlock will still be written.
-
349  mkvmuxer::Frame frame;
-
350 
-
351  if (!frame.Init(prev_sample_->data(), prev_sample_->data_size())) {
-
352  return Status(error::MUXER_FAILURE,
-
353  "Error adding sample to segment: Frame::Init failed");
-
354  }
-
355 
-
356  if (write_duration) {
-
357  const uint64_t duration_ns =
-
358  prev_sample_->duration() * kSecondsToNs / info_->time_scale();
-
359  frame.set_duration(duration_ns);
-
360  }
-
361  frame.set_is_key(prev_sample_->is_key_frame());
-
362  frame.set_timestamp(prev_sample_->pts() * kSecondsToNs / info_->time_scale());
-
363  frame.set_track_number(track_id_);
-
364 
-
365  if (prev_sample_->side_data_size() > 0) {
-
366  uint64_t block_add_id;
-
367  // First 8 bytes of side_data is the BlockAddID element's value, which is
-
368  // done to mimic ffmpeg behavior. See webm_cluster_parser.cc for details.
-
369  CHECK_GT(prev_sample_->side_data_size(), sizeof(block_add_id));
-
370  memcpy(&block_add_id, prev_sample_->side_data(), sizeof(block_add_id));
-
371  if (!frame.AddAdditionalData(
-
372  prev_sample_->side_data() + sizeof(block_add_id),
-
373  prev_sample_->side_data_size() - sizeof(block_add_id),
-
374  block_add_id)) {
-
375  return Status(
-
376  error::MUXER_FAILURE,
-
377  "Error adding sample to segment: Frame::AddAditionalData Failed");
-
378  }
-
379  }
-
380 
-
381  if (!prev_sample_->is_key_frame() && !frame.CanBeSimpleBlock()) {
-
382  const int64_t timestamp_ns =
-
383  reference_frame_timestamp_ * kSecondsToNs / info_->time_scale();
-
384  frame.set_reference_block_timestamp(timestamp_ns);
-
385  }
-
386 
-
387  // GetRelativeTimecode will return -1 if the relative timecode is too large
-
388  // to fit in the frame.
-
389  if (cluster_->GetRelativeTimecode(frame.timestamp() /
-
390  cluster_->timecode_scale()) < 0) {
-
391  const double segment_duration =
-
392  static_cast<double>(frame.timestamp()) / kSecondsToNs;
-
393  LOG(ERROR) << "Error adding sample to segment: segment too large, "
-
394  << segment_duration << " seconds.";
-
395  return Status(error::MUXER_FAILURE,
-
396  "Error adding sample to segment: segment too large");
-
397  }
-
398 
-
399  if (!cluster_->AddFrame(&frame)) {
-
400  return Status(error::MUXER_FAILURE,
-
401  "Error adding sample to segment: Cluster::AddFrame failed");
-
402  }
-
403 
-
404  // A reference frame is needed for non-keyframes. Having a reference to the
-
405  // previous block is good enough.
-
406  // See libwebm Segment::AddGenericFrame
-
407  reference_frame_timestamp_ = prev_sample_->pts();
-
408  return Status::OK;
-
409 }
-
410 
-
411 } // namespace webm
-
412 } // namespace media
-
413 } // namespace edash_packager
+
326  track->set_seek_pre_roll(info->seek_preroll_ns());
+
327  track->set_codec_delay(info->codec_delay_ns());
+
328 
+
329  if (encryptor_)
+
330  encryptor_->AddTrackInfo(track);
+
331 
+
332  tracks_.AddTrack(track, info->track_id());
+
333  track_id_ = track->number();
+
334  return Status::OK;
+
335 }
+
336 
+
337 Status Segmenter::InitializeEncryptor(KeySource* key_source,
+
338  uint32_t max_sd_pixels) {
+
339  encryptor_.reset(new Encryptor());
+
340  const KeySource::TrackType track_type =
+
341  GetTrackTypeForEncryption(*info_, max_sd_pixels);
+
342  if (track_type == KeySource::TrackType::TRACK_TYPE_UNKNOWN)
+
343  return Status::OK;
+
344  return encryptor_->Initialize(muxer_listener_, track_type, key_source);
+
345 }
+
346 
+
347 Status Segmenter::WriteFrame(bool write_duration) {
+
348  // Create a frame manually so we can create non-SimpleBlock frames. This
+
349  // is required to allow the frame duration to be added. If the duration
+
350  // is not set, then a SimpleBlock will still be written.
+
351  mkvmuxer::Frame frame;
+
352 
+
353  if (!frame.Init(prev_sample_->data(), prev_sample_->data_size())) {
+
354  return Status(error::MUXER_FAILURE,
+
355  "Error adding sample to segment: Frame::Init failed");
+
356  }
+
357 
+
358  if (write_duration) {
+
359  const uint64_t duration_ns =
+
360  prev_sample_->duration() * kSecondsToNs / info_->time_scale();
+
361  frame.set_duration(duration_ns);
+
362  }
+
363  frame.set_is_key(prev_sample_->is_key_frame());
+
364  frame.set_timestamp(prev_sample_->pts() * kSecondsToNs / info_->time_scale());
+
365  frame.set_track_number(track_id_);
+
366 
+
367  if (prev_sample_->side_data_size() > 0) {
+
368  uint64_t block_add_id;
+
369  // First 8 bytes of side_data is the BlockAddID element's value, which is
+
370  // done to mimic ffmpeg behavior. See webm_cluster_parser.cc for details.
+
371  CHECK_GT(prev_sample_->side_data_size(), sizeof(block_add_id));
+
372  memcpy(&block_add_id, prev_sample_->side_data(), sizeof(block_add_id));
+
373  if (!frame.AddAdditionalData(
+
374  prev_sample_->side_data() + sizeof(block_add_id),
+
375  prev_sample_->side_data_size() - sizeof(block_add_id),
+
376  block_add_id)) {
+
377  return Status(
+
378  error::MUXER_FAILURE,
+
379  "Error adding sample to segment: Frame::AddAditionalData Failed");
+
380  }
+
381  }
+
382 
+
383  if (!prev_sample_->is_key_frame() && !frame.CanBeSimpleBlock()) {
+
384  const int64_t timestamp_ns =
+
385  reference_frame_timestamp_ * kSecondsToNs / info_->time_scale();
+
386  frame.set_reference_block_timestamp(timestamp_ns);
+
387  }
+
388 
+
389  // GetRelativeTimecode will return -1 if the relative timecode is too large
+
390  // to fit in the frame.
+
391  if (cluster_->GetRelativeTimecode(frame.timestamp() /
+
392  cluster_->timecode_scale()) < 0) {
+
393  const double segment_duration =
+
394  static_cast<double>(frame.timestamp()) / kSecondsToNs;
+
395  LOG(ERROR) << "Error adding sample to segment: segment too large, "
+
396  << segment_duration << " seconds.";
+
397  return Status(error::MUXER_FAILURE,
+
398  "Error adding sample to segment: segment too large");
+
399  }
+
400 
+
401  if (!cluster_->AddFrame(&frame)) {
+
402  return Status(error::MUXER_FAILURE,
+
403  "Error adding sample to segment: Cluster::AddFrame failed");
+
404  }
+
405 
+
406  // A reference frame is needed for non-keyframes. Having a reference to the
+
407  // previous block is good enough.
+
408  // See libwebm Segment::AddGenericFrame
+
409  reference_frame_timestamp_ = prev_sample_->pts();
+
410  return Status::OK;
+
411 }
+
412 
+
413 } // namespace webm
+
414 } // namespace media
+
415 } // namespace edash_packager
An implementation of IMkvWriter using our File type.
Definition: mkv_writer.h:21
mkvmuxer::int64 Position() const override
Definition: mkv_writer.cc:71
@@ -526,7 +528,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d54/classedash__packager_1_1media_1_1AesPatternCryptor.html b/docs/dc/d54/classedash__packager_1_1media_1_1AesPatternCryptor.html index 06f4dd54bb..8d7e4bb25e 100644 --- a/docs/dc/d54/classedash__packager_1_1media_1_1AesPatternCryptor.html +++ b/docs/dc/d54/classedash__packager_1_1media_1_1AesPatternCryptor.html @@ -295,7 +295,7 @@ AES_KEY * mutable_aes_key< 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 708db9fc62..67378bc3da 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 3063c443af..22282235b5 100644 --- a/docs/dc/d58/webm__media__parser_8h_source.html +++ b/docs/dc/d58/webm__media__parser_8h_source.html @@ -179,7 +179,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d73/classedash__packager_1_1media_1_1RequestSigner.html b/docs/dc/d73/classedash__packager_1_1media_1_1RequestSigner.html index e19c1c22b3..d2ddf758a5 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 4ec3384966..5eaf3f1c1a 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 db37aadb06..b26e11718f 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 e1eaffed7b..3a4f1ef3fe 100644 --- a/docs/dc/d7b/h264__parser_8cc_source.html +++ b/docs/dc/d7b/h264__parser_8cc_source.html @@ -1267,7 +1267,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d81/classedash__packager_1_1MpdWriter.html b/docs/dc/d81/classedash__packager_1_1MpdWriter.html index 6dd8f8f3c5..65ff488465 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 75206f23c3..1556d88f26 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 @@ -122,8 +122,8 @@ void  Finalize and optimize the fragment.
  - Public Member Functions inherited from
edash_packager::media::mp4::FragmenterFragmenter (TrackFragment *traf) -  + Fragmenter (scoped_refptr< StreamInfo > info, TrackFragment *traf) +  void GenerateSegmentReference (SegmentReference *reference)  Fill reference with current fragment information.
@@ -152,11 +152,11 @@ Protected Member Functions
Fragmenter implementation overrides.
Status PrepareFragmentForEncryption (bool enable_encryption) override   - -void FinalizeFragmentForEncryption () override - Finalize current fragment for encryption.
- Protected Member Functions inherited from edash_packager::media::mp4::EncryptingFragmenter + +virtual void FinalizeFragmentForEncryption () + Finalize current fragment for encryption.
Status CreateEncryptor ()   @@ -270,6 +270,7 @@ void set_encryption_key
Parameters
+ @@ -325,7 +326,7 @@ void 
moofpoints to a MovieFragment box.
infocontains stream information.
trafpoints to a TrackFragment box.
encryption_key_sourcepoints to the source which generates encryption keys.
track_typeindicates whether SD key or HD key should be used to encrypt the video content.
set_encryption_key diff --git a/docs/dc/d92/classedash__packager_1_1media_1_1AesEncryptor.html b/docs/dc/d92/classedash__packager_1_1media_1_1AesEncryptor.html index 27ecee6f24..72d1e5bd8b 100644 --- a/docs/dc/d92/classedash__packager_1_1media_1_1AesEncryptor.html +++ b/docs/dc/d92/classedash__packager_1_1media_1_1AesEncryptor.html @@ -234,7 +234,7 @@ AES_KEY * mutable_aes_key< diff --git a/docs/dc/d96/structedash__packager_1_1media_1_1H265Sps.html b/docs/dc/d96/structedash__packager_1_1media_1_1H265Sps.html index 61c823a77e..6d73337fdc 100644 --- a/docs/dc/d96/structedash__packager_1_1media_1_1H265Sps.html +++ b/docs/dc/d96/structedash__packager_1_1media_1_1H265Sps.html @@ -256,7 +256,7 @@ bool vui_parameters_presen 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 2aeb52c9e8..3e96d64b20 100644 --- a/docs/dc/dab/classedash__packager_1_1media_1_1mp2t_1_1Mp2tMediaParser.html +++ b/docs/dc/dab/classedash__packager_1_1media_1_1mp2t_1_1Mp2tMediaParser.html @@ -256,7 +256,7 @@ track_id, const scoped_refptr
diff --git a/docs/dc/db7/structedash__packager_1_1media_1_1mp4_1_1DecodingTimeToSample.html b/docs/dc/db7/structedash__packager_1_1media_1_1mp4_1_1DecodingTimeToSample.html index 316f805a03..68515b6ca4 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 392 of file box_definitions.h.

+

Definition at line 401 of file box_definitions.h.

Member Function Documentation

@@ -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 d72584c8ce..9954f1f673 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 2f3b174799..3b70e8ba91 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 @@ -329,7 +329,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 54b1e48a4a..b1010ecc41 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 21ecacd044..11b5db8b72 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 6bb039004b..71ad775cef 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 2550bfaa1b..428b55448b 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 e7c35e2d85..07a5a289c0 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 c366a9491f..87e97b343d 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 @@ -430,7 +430,7 @@ void set_progress_target diff --git a/docs/dc/deb/h265__byte__to__unit__stream__converter_8h_source.html b/docs/dc/deb/h265__byte__to__unit__stream__converter_8h_source.html index 3150f44f2b..e584ceb6d5 100644 --- a/docs/dc/deb/h265__byte__to__unit__stream__converter_8h_source.html +++ b/docs/dc/deb/h265__byte__to__unit__stream__converter_8h_source.html @@ -135,7 +135,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/dec/ts__section__pmt_8cc_source.html b/docs/dc/dec/ts__section__pmt_8cc_source.html index b36ad62f05..131349d9df 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 e0c19374c8..cb41201f66 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 018c4b82fd..ca64d10c19 100644 --- a/docs/dc/df1/classedash__packager_1_1media_1_1DecryptorSource.html +++ b/docs/dc/df1/classedash__packager_1_1media_1_1DecryptorSource.html @@ -119,7 +119,7 @@ bool DecryptSampleBuffer diff --git a/docs/dc/df8/closure__thread_8h_source.html b/docs/dc/df8/closure__thread_8h_source.html index 854850d49d..415b9eb369 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 21384de2e2..e3dd71e802 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 85e09e1926..1e3267e7ea 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 @@ -116,7 +116,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 235d473ffb..6a553755ff 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 d24235dd92..369ef35cf9 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 @@ -161,7 +161,7 @@ const
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 a71b828b59..5575463a8f 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 078a3804df..a9fee21a8c 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 4741ce9149..50611c6ca4 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 7b23cf8409..febf5e0c02 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 755 of file box_definitions.h.

+

Definition at line 786 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 2466 of file box_definitions.cc.

+

Definition at line 2562 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 a7c7a14582..4621719839 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 @@ -200,7 +200,7 @@ Additional Inherited Members diff --git a/docs/dd/d15/classedash__packager_1_1media_1_1mp2t_1_1ProgramMapTableWriter.html b/docs/dd/d15/classedash__packager_1_1media_1_1mp2t_1_1ProgramMapTableWriter.html index 2de8947647..f0a9861924 100644 --- a/docs/dd/d15/classedash__packager_1_1media_1_1mp2t_1_1ProgramMapTableWriter.html +++ b/docs/dd/d15/classedash__packager_1_1media_1_1mp2t_1_1ProgramMapTableWriter.html @@ -218,7 +218,7 @@ static const uint8_t kElem 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 c589ad65a9..a1d90fee4e 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 @@ -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 2dd18196de..d67561dd1b 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 dc69e6e089..b475327311 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 691df01064..a920712002 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 @@ -103,7 +103,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 e461ea8f94..74cea77085 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 9a1620ae8f..d34c8dca7d 100644 --- a/docs/dd/d30/wvm__media__parser_8cc_source.html +++ b/docs/dd/d30/wvm__media__parser_8cc_source.html @@ -841,429 +841,430 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
752  stream_id_count_++;
753  }
754  if (has_audio) {
-
755  AudioCodec audio_codec = kCodecAAC;
+
755  const AudioCodec audio_codec = kCodecAAC;
756  // TODO(beil): Pass in max and average bitrate in wvm container.
757  stream_infos_.push_back(new AudioStreamInfo(
758  stream_id_count_, time_scale, track_duration, audio_codec,
759  std::string(), std::string(), kAacSampleSizeBits, num_channels,
-
760  sampling_frequency, 0, 0, audio_codec_config.data(),
-
761  audio_codec_config.size(), true));
-
762  program_demux_stream_map_[base::UintToString(index_program_id_) + ":" +
-
763  base::UintToString(audio_pes_stream_id ?
-
764  audio_pes_stream_id :
-
765  kDefaultAudioStreamId)] =
-
766  stream_id_count_++;
-
767  }
-
768  }
-
769 
-
770  index_program_id_++;
-
771  index_data_.clear();
-
772  return true;
-
773 }
-
774 
-
775 bool WvmMediaParser::DemuxNextPes(bool is_program_end) {
-
776  bool output_encrypted_sample = false;
-
777  if (!sample_data_.empty() && (prev_pes_flags_1_ & kScramblingBitsMask)) {
-
778  // Decrypt crypto unit.
-
779  if (!content_decryptor_) {
-
780  output_encrypted_sample = true;
-
781  } else {
-
782  content_decryptor_->Crypt(&sample_data_[crypto_unit_start_pos_],
-
783  sample_data_.size() - crypto_unit_start_pos_,
-
784  &sample_data_[crypto_unit_start_pos_]);
-
785  }
-
786  }
-
787  // Demux media sample if we are at program end or if we are not at a
-
788  // continuation PES.
-
789  if ((pes_flags_2_ & kPesOptPts) || is_program_end) {
-
790  if (!sample_data_.empty()) {
-
791  if (!Output(output_encrypted_sample)) {
-
792  return false;
-
793  }
-
794  }
-
795  StartMediaSampleDemux();
-
796  }
-
797 
-
798  crypto_unit_start_pos_ = sample_data_.size();
-
799  return true;
-
800 }
-
801 
-
802 void WvmMediaParser::StartMediaSampleDemux() {
-
803  bool is_key_frame = ((pes_flags_1_ & kPesOptAlign) != 0);
-
804  media_sample_ = MediaSample::CreateEmptyMediaSample();
-
805  media_sample_->set_dts(dts_);
-
806  media_sample_->set_pts(pts_);
-
807  media_sample_->set_is_key_frame(is_key_frame);
-
808 
-
809  sample_data_.clear();
-
810 }
-
811 
-
812 bool WvmMediaParser::Output(bool output_encrypted_sample) {
-
813  if (output_encrypted_sample) {
-
814  media_sample_->set_data(sample_data_.data(), sample_data_.size());
-
815  media_sample_->set_is_encrypted(true);
-
816  } else {
-
817  if ((prev_pes_stream_id_ & kPesStreamIdVideoMask) == kPesStreamIdVideo) {
-
818  // Convert video stream to unit stream and get config.
-
819  std::vector<uint8_t> nal_unit_stream;
-
820  if (!byte_to_unit_stream_converter_.ConvertByteStreamToNalUnitStream(
-
821  sample_data_.data(), sample_data_.size(), &nal_unit_stream)) {
-
822  LOG(ERROR) << "Could not convert h.264 byte stream sample";
-
823  return false;
-
824  }
-
825  media_sample_->set_data(nal_unit_stream.data(), nal_unit_stream.size());
-
826  if (!is_initialized_) {
-
827  // Set extra data for video stream from AVC Decoder Config Record.
-
828  // Also, set codec string from the AVC Decoder Config Record.
-
829  std::vector<uint8_t> decoder_config_record;
-
830  byte_to_unit_stream_converter_.GetDecoderConfigurationRecord(
-
831  &decoder_config_record);
-
832  for (uint32_t i = 0; i < stream_infos_.size(); i++) {
-
833  if (stream_infos_[i]->stream_type() == media::kStreamVideo &&
-
834  stream_infos_[i]->codec_string().empty()) {
-
835  const std::vector<uint8_t>* stream_config;
-
836  if (stream_infos_[i]->extra_data().empty()) {
-
837  // Decoder config record not available for stream. Use the one
-
838  // computed from the first video stream.
-
839  stream_infos_[i]->set_extra_data(decoder_config_record);
-
840  stream_config = &decoder_config_record;
-
841  } else {
-
842  // Use stream-specific config record.
-
843  stream_config = &stream_infos_[i]->extra_data();
-
844  }
-
845  DCHECK(stream_config);
-
846 
-
847  VideoStreamInfo* video_stream_info =
-
848  reinterpret_cast<VideoStreamInfo*>(stream_infos_[i].get());
-
849  AVCDecoderConfiguration avc_config;
-
850  if (!avc_config.Parse(*stream_config)) {
-
851  LOG(WARNING) << "Failed to parse AVCDecoderConfigurationRecord. "
-
852  "Using computed configuration record instead.";
-
853  video_stream_info->set_extra_data(decoder_config_record);
-
854  if (!avc_config.Parse(decoder_config_record)) {
-
855  LOG(ERROR) << "Failed to parse AVCDecoderConfigurationRecord.";
-
856  return false;
-
857  }
-
858  }
-
859  video_stream_info->set_codec_string(avc_config.GetCodecString());
-
860 
-
861  if (avc_config.pixel_width() != video_stream_info->pixel_width() ||
-
862  avc_config.pixel_height() !=
-
863  video_stream_info->pixel_height()) {
-
864  LOG_IF(WARNING, video_stream_info->pixel_width() != 0 ||
-
865  video_stream_info->pixel_height() != 0)
-
866  << "Pixel aspect ratio in WVM metadata ("
-
867  << video_stream_info->pixel_width() << ","
-
868  << video_stream_info->pixel_height()
-
869  << ") does not match with SAR in "
-
870  "AVCDecoderConfigurationRecord ("
-
871  << avc_config.pixel_width() << ","
-
872  << avc_config.pixel_height()
-
873  << "). Use AVCDecoderConfigurationRecord.";
-
874  video_stream_info->set_pixel_width(avc_config.pixel_width());
-
875  video_stream_info->set_pixel_height(avc_config.pixel_height());
-
876  }
-
877  if (avc_config.coded_width() != video_stream_info->width() ||
-
878  avc_config.coded_height() != video_stream_info->height()) {
-
879  LOG(WARNING) << "Resolution in WVM metadata ("
-
880  << video_stream_info->width() << ","
-
881  << video_stream_info->height()
-
882  << ") does not match with resolution in "
-
883  "AVCDecoderConfigurationRecord ("
-
884  << avc_config.coded_width() << ","
-
885  << avc_config.coded_height()
-
886  << "). Use AVCDecoderConfigurationRecord.";
-
887  video_stream_info->set_width(avc_config.coded_width());
-
888  video_stream_info->set_height(avc_config.coded_height());
-
889  }
-
890  }
-
891  }
-
892  }
-
893  } else if ((prev_pes_stream_id_ & kPesStreamIdAudioMask) ==
-
894  kPesStreamIdAudio) {
-
895  // Set data on the audio stream.
- -
897  sample_data_.data(), kAdtsHeaderMinSize);
-
898  media::mp2t::AdtsHeader adts_header;
-
899  const uint8_t* frame_ptr = sample_data_.data();
-
900  if (!adts_header.Parse(frame_ptr, frame_size)) {
-
901  LOG(ERROR) << "Could not parse ADTS header";
-
902  return false;
-
903  }
-
904  size_t header_size = adts_header.GetAdtsHeaderSize(frame_ptr,
-
905  frame_size);
-
906  media_sample_->set_data(frame_ptr + header_size,
-
907  frame_size - header_size);
-
908  if (!is_initialized_) {
-
909  for (uint32_t i = 0; i < stream_infos_.size(); i++) {
-
910  if (stream_infos_[i]->stream_type() == media::kStreamAudio &&
-
911  stream_infos_[i]->codec_string().empty()) {
-
912  AudioStreamInfo* audio_stream_info =
-
913  reinterpret_cast<AudioStreamInfo*>(stream_infos_[i].get());
-
914  if (audio_stream_info->extra_data().empty()) {
-
915  // Set AudioStreamInfo fields using information from the ADTS
-
916  // header.
-
917  audio_stream_info->set_sampling_frequency(
-
918  adts_header.GetSamplingFrequency());
-
919  std::vector<uint8_t> audio_specific_config;
-
920  if (!adts_header.GetAudioSpecificConfig(&audio_specific_config)) {
-
921  LOG(ERROR) << "Could not compute AACaudiospecificconfig";
-
922  return false;
-
923  }
-
924  audio_stream_info->set_extra_data(audio_specific_config);
-
925  audio_stream_info->set_codec_string(
- -
927  kCodecAAC, adts_header.GetObjectType()));
-
928  } else {
-
929  // Set AudioStreamInfo fields using information from the
-
930  // AACAudioSpecificConfig record.
-
931  mp4::AACAudioSpecificConfig aac_config;
-
932  if (!aac_config.Parse(stream_infos_[i]->extra_data())) {
-
933  LOG(ERROR) << "Could not parse AACAudioSpecificconfig";
-
934  return false;
-
935  }
-
936  audio_stream_info->set_sampling_frequency(aac_config.frequency());
-
937  audio_stream_info->set_codec_string(
- -
939  kCodecAAC, aac_config.audio_object_type()));
-
940  }
-
941  }
-
942  }
-
943  }
-
944  }
-
945  }
-
946 
-
947  if (!is_initialized_) {
-
948  bool all_streams_have_config = true;
-
949  // Check if all collected stream infos have extra_data set.
-
950  for (uint32_t i = 0; i < stream_infos_.size(); i++) {
-
951  if (stream_infos_[i]->codec_string().empty()) {
-
952  all_streams_have_config = false;
-
953  break;
-
954  }
-
955  }
-
956  if (all_streams_have_config) {
-
957  init_cb_.Run(stream_infos_);
-
958  is_initialized_ = true;
-
959  }
-
960  }
-
961 
-
962  DCHECK_GT(media_sample_->data_size(), 0UL);
-
963  std::string key = base::UintToString(current_program_id_).append(":")
-
964  .append(base::UintToString(prev_pes_stream_id_));
-
965  std::map<std::string, uint32_t>::iterator it =
-
966  program_demux_stream_map_.find(key);
-
967  if (it == program_demux_stream_map_.end()) {
-
968  // TODO(ramjic): Log error message here and in other error cases through
-
969  // this method.
-
970  return false;
-
971  }
-
972  DemuxStreamIdMediaSample demux_stream_media_sample;
-
973  demux_stream_media_sample.parsed_audio_or_video_stream_id =
-
974  prev_pes_stream_id_;
-
975  demux_stream_media_sample.demux_stream_id = (*it).second;
-
976  demux_stream_media_sample.media_sample = media_sample_;
-
977  // Check if sample can be emitted.
-
978  if (!is_initialized_) {
-
979  media_sample_queue_.push_back(demux_stream_media_sample);
-
980  } else {
-
981  // flush the sample queue and emit all queued samples.
-
982  while (!media_sample_queue_.empty()) {
-
983  if (!EmitPendingSamples())
-
984  return false;
-
985  }
-
986  // Emit current sample.
-
987  if (!EmitSample(prev_pes_stream_id_, (*it).second, media_sample_, false))
-
988  return false;
-
989  }
-
990  return true;
-
991 }
-
992 
-
993 bool WvmMediaParser::EmitSample(uint32_t parsed_audio_or_video_stream_id,
-
994  uint32_t stream_id,
-
995  scoped_refptr<MediaSample>& new_sample,
-
996  bool isLastSample) {
-
997  DCHECK(new_sample);
-
998  if (isLastSample) {
-
999  if ((parsed_audio_or_video_stream_id & kPesStreamIdVideoMask) ==
-
1000  kPesStreamIdVideo) {
-
1001  new_sample->set_duration(prev_media_sample_data_.video_sample_duration);
-
1002  } else if ((parsed_audio_or_video_stream_id & kPesStreamIdAudioMask) ==
-
1003  kPesStreamIdAudio) {
-
1004  new_sample->set_duration(prev_media_sample_data_.audio_sample_duration);
-
1005  }
-
1006  if (!new_sample_cb_.Run(stream_id, new_sample)) {
-
1007  LOG(ERROR) << "Failed to process the last sample.";
-
1008  return false;
-
1009  }
-
1010  return true;
-
1011  }
-
1012 
-
1013  // Cannot emit current sample. Compute duration first and then,
-
1014  // emit previous sample.
-
1015  if ((parsed_audio_or_video_stream_id & kPesStreamIdVideoMask) ==
-
1016  kPesStreamIdVideo) {
-
1017  if (prev_media_sample_data_.video_sample == NULL) {
-
1018  prev_media_sample_data_.video_sample = new_sample;
-
1019  prev_media_sample_data_.video_stream_id = stream_id;
-
1020  return true;
-
1021  }
-
1022  prev_media_sample_data_.video_sample->set_duration(
-
1023  new_sample->dts() - prev_media_sample_data_.video_sample->dts());
-
1024  prev_media_sample_data_.video_sample_duration =
-
1025  prev_media_sample_data_.video_sample->duration();
-
1026  if (!new_sample_cb_.Run(prev_media_sample_data_.video_stream_id,
-
1027  prev_media_sample_data_.video_sample)) {
-
1028  LOG(ERROR) << "Failed to process the video sample.";
-
1029  return false;
-
1030  }
-
1031  prev_media_sample_data_.video_sample = new_sample;
-
1032  prev_media_sample_data_.video_stream_id = stream_id;
-
1033  } else if ((parsed_audio_or_video_stream_id & kPesStreamIdAudioMask) ==
-
1034  kPesStreamIdAudio) {
-
1035  if (prev_media_sample_data_.audio_sample == NULL) {
-
1036  prev_media_sample_data_.audio_sample = new_sample;
-
1037  prev_media_sample_data_.audio_stream_id = stream_id;
-
1038  return true;
-
1039  }
-
1040  prev_media_sample_data_.audio_sample->set_duration(
-
1041  new_sample->dts() - prev_media_sample_data_.audio_sample->dts());
-
1042  prev_media_sample_data_.audio_sample_duration =
-
1043  prev_media_sample_data_.audio_sample->duration();
-
1044  if (!new_sample_cb_.Run(prev_media_sample_data_.audio_stream_id,
-
1045  prev_media_sample_data_.audio_sample)) {
-
1046  LOG(ERROR) << "Failed to process the audio sample.";
-
1047  return false;
-
1048  }
-
1049  prev_media_sample_data_.audio_sample = new_sample;
-
1050  prev_media_sample_data_.audio_stream_id = stream_id;
-
1051  }
-
1052  return true;
-
1053 }
-
1054 
-
1055 bool WvmMediaParser::GetAssetKey(const uint32_t asset_id,
-
1056  EncryptionKey* encryption_key) {
-
1057  DCHECK(decryption_key_source_);
-
1058  Status status = decryption_key_source_->FetchKeys(asset_id);
-
1059  if (!status.ok()) {
-
1060  LOG(ERROR) << "Fetch Key(s) failed for AssetID = " << asset_id
-
1061  << ", error = " << status;
-
1062  return false;
-
1063  }
-
1064 
-
1065  status = decryption_key_source_->GetKey(KeySource::TRACK_TYPE_HD,
-
1066  encryption_key);
-
1067  if (!status.ok()) {
-
1068  LOG(ERROR) << "Fetch Key(s) failed for AssetID = " << asset_id
-
1069  << ", error = " << status;
-
1070  return false;
-
1071  }
-
1072 
-
1073  return true;
-
1074 }
-
1075 
-
1076 bool WvmMediaParser::ProcessEcm() {
-
1077  // An error will be returned later if the samples need to be decrypted.
-
1078  if (!decryption_key_source_)
-
1079  return true;
-
1080 
-
1081  if (current_program_id_ > 0) {
-
1082  return true;
-
1083  }
-
1084  if (ecm_.size() != kEcmSizeBytes) {
-
1085  LOG(ERROR) << "Unexpected ECM size = " << ecm_.size()
-
1086  << ", expected size = " << kEcmSizeBytes;
-
1087  return false;
-
1088  }
-
1089  const uint8_t* ecm_data = ecm_.data();
-
1090  DCHECK(ecm_data);
-
1091  ecm_data += sizeof(uint32_t); // old version field - skip.
-
1092  ecm_data += sizeof(uint32_t); // clear lead - skip.
-
1093  ecm_data += sizeof(uint32_t); // system id(includes ECM version) - skip.
-
1094  uint32_t asset_id = ntohlFromBuffer(ecm_data);
-
1095  if (asset_id == 0) {
-
1096  LOG(ERROR) << "AssetID in ECM is not valid.";
-
1097  return false;
-
1098  }
-
1099  ecm_data += sizeof(uint32_t); // asset_id.
-
1100  EncryptionKey encryption_key;
-
1101  if (!GetAssetKey(asset_id, &encryption_key)) {
-
1102  return false;
-
1103  }
-
1104  if (encryption_key.key.size() < kAssetKeySizeBytes) {
-
1105  LOG(ERROR) << "Asset Key size of " << encryption_key.key.size()
-
1106  << " for AssetID = " << asset_id
-
1107  << " is less than minimum asset key size.";
-
1108  return false;
-
1109  }
-
1110  // Legacy WVM content may have asset keys > 16 bytes.
-
1111  // Use only the first 16 bytes of the asset key to get
-
1112  // the content key.
-
1113  std::vector<uint8_t> asset_key(
-
1114  encryption_key.key.begin(),
-
1115  encryption_key.key.begin() + kAssetKeySizeBytes);
-
1116  // WVM format always uses all zero IV.
-
1117  std::vector<uint8_t> zero_iv(kInitializationVectorSizeBytes, 0);
-
1118  AesCbcDecryptor asset_decryptor(kCtsPadding, AesCryptor::kUseConstantIv);
-
1119  if (!asset_decryptor.InitializeWithIv(asset_key, zero_iv)) {
-
1120  LOG(ERROR) << "Failed to initialize asset_decryptor.";
-
1121  return false;
-
1122  }
-
1123 
-
1124  const size_t content_key_buffer_size =
-
1125  kEcmFlagsSizeBytes + kEcmContentKeySizeBytes +
-
1126  kEcmPaddingSizeBytes; // flags + contentKey + padding.
-
1127  std::vector<uint8_t> content_key_buffer(content_key_buffer_size);
-
1128  CHECK(asset_decryptor.Crypt(ecm_data, content_key_buffer_size,
-
1129  content_key_buffer.data()));
-
1130 
-
1131  std::vector<uint8_t> decrypted_content_key_vec(
-
1132  content_key_buffer.begin() + 4,
-
1133  content_key_buffer.begin() + 20);
-
1134  scoped_ptr<AesCbcDecryptor> content_decryptor(
-
1135  new AesCbcDecryptor(kCtsPadding, AesCryptor::kUseConstantIv));
-
1136  if (!content_decryptor->InitializeWithIv(decrypted_content_key_vec,
-
1137  zero_iv)) {
-
1138  LOG(ERROR) << "Failed to initialize content decryptor.";
-
1139  return false;
-
1140  }
-
1141 
-
1142  content_decryptor_ = content_decryptor.Pass();
-
1143  return true;
-
1144 }
-
1145 
-
1146 DemuxStreamIdMediaSample::DemuxStreamIdMediaSample() :
-
1147  demux_stream_id(0),
-
1148  parsed_audio_or_video_stream_id(0) {}
-
1149 
-
1150 DemuxStreamIdMediaSample::~DemuxStreamIdMediaSample() {}
-
1151 
-
1152 PrevSampleData::PrevSampleData() {
-
1153  Reset();
-
1154 }
-
1155 
-
1156 PrevSampleData::~PrevSampleData() {}
-
1157 
-
1158 void PrevSampleData::Reset() {
-
1159  audio_sample = NULL;
-
1160  video_sample = NULL;
-
1161  audio_stream_id = 0;
-
1162  video_stream_id = 0;
-
1163  audio_sample_duration = 0;
-
1164  video_sample_duration = 0;
-
1165 }
-
1166 
-
1167 } // namespace wvm
-
1168 } // namespace media
-
1169 } // namespace edash_packager
+
760  sampling_frequency, 0 /* seek preroll */, 0 /* codec delay */,
+
761  0 /* max bitrate */, 0 /* avg bitrate */, audio_codec_config.data(),
+
762  audio_codec_config.size(), true));
+
763  program_demux_stream_map_[base::UintToString(index_program_id_) + ":" +
+
764  base::UintToString(audio_pes_stream_id ?
+
765  audio_pes_stream_id :
+
766  kDefaultAudioStreamId)] =
+
767  stream_id_count_++;
+
768  }
+
769  }
+
770 
+
771  index_program_id_++;
+
772  index_data_.clear();
+
773  return true;
+
774 }
+
775 
+
776 bool WvmMediaParser::DemuxNextPes(bool is_program_end) {
+
777  bool output_encrypted_sample = false;
+
778  if (!sample_data_.empty() && (prev_pes_flags_1_ & kScramblingBitsMask)) {
+
779  // Decrypt crypto unit.
+
780  if (!content_decryptor_) {
+
781  output_encrypted_sample = true;
+
782  } else {
+
783  content_decryptor_->Crypt(&sample_data_[crypto_unit_start_pos_],
+
784  sample_data_.size() - crypto_unit_start_pos_,
+
785  &sample_data_[crypto_unit_start_pos_]);
+
786  }
+
787  }
+
788  // Demux media sample if we are at program end or if we are not at a
+
789  // continuation PES.
+
790  if ((pes_flags_2_ & kPesOptPts) || is_program_end) {
+
791  if (!sample_data_.empty()) {
+
792  if (!Output(output_encrypted_sample)) {
+
793  return false;
+
794  }
+
795  }
+
796  StartMediaSampleDemux();
+
797  }
+
798 
+
799  crypto_unit_start_pos_ = sample_data_.size();
+
800  return true;
+
801 }
+
802 
+
803 void WvmMediaParser::StartMediaSampleDemux() {
+
804  bool is_key_frame = ((pes_flags_1_ & kPesOptAlign) != 0);
+
805  media_sample_ = MediaSample::CreateEmptyMediaSample();
+
806  media_sample_->set_dts(dts_);
+
807  media_sample_->set_pts(pts_);
+
808  media_sample_->set_is_key_frame(is_key_frame);
+
809 
+
810  sample_data_.clear();
+
811 }
+
812 
+
813 bool WvmMediaParser::Output(bool output_encrypted_sample) {
+
814  if (output_encrypted_sample) {
+
815  media_sample_->set_data(sample_data_.data(), sample_data_.size());
+
816  media_sample_->set_is_encrypted(true);
+
817  } else {
+
818  if ((prev_pes_stream_id_ & kPesStreamIdVideoMask) == kPesStreamIdVideo) {
+
819  // Convert video stream to unit stream and get config.
+
820  std::vector<uint8_t> nal_unit_stream;
+
821  if (!byte_to_unit_stream_converter_.ConvertByteStreamToNalUnitStream(
+
822  sample_data_.data(), sample_data_.size(), &nal_unit_stream)) {
+
823  LOG(ERROR) << "Could not convert h.264 byte stream sample";
+
824  return false;
+
825  }
+
826  media_sample_->set_data(nal_unit_stream.data(), nal_unit_stream.size());
+
827  if (!is_initialized_) {
+
828  // Set extra data for video stream from AVC Decoder Config Record.
+
829  // Also, set codec string from the AVC Decoder Config Record.
+
830  std::vector<uint8_t> decoder_config_record;
+
831  byte_to_unit_stream_converter_.GetDecoderConfigurationRecord(
+
832  &decoder_config_record);
+
833  for (uint32_t i = 0; i < stream_infos_.size(); i++) {
+
834  if (stream_infos_[i]->stream_type() == media::kStreamVideo &&
+
835  stream_infos_[i]->codec_string().empty()) {
+
836  const std::vector<uint8_t>* stream_config;
+
837  if (stream_infos_[i]->extra_data().empty()) {
+
838  // Decoder config record not available for stream. Use the one
+
839  // computed from the first video stream.
+
840  stream_infos_[i]->set_extra_data(decoder_config_record);
+
841  stream_config = &decoder_config_record;
+
842  } else {
+
843  // Use stream-specific config record.
+
844  stream_config = &stream_infos_[i]->extra_data();
+
845  }
+
846  DCHECK(stream_config);
+
847 
+
848  VideoStreamInfo* video_stream_info =
+
849  reinterpret_cast<VideoStreamInfo*>(stream_infos_[i].get());
+
850  AVCDecoderConfiguration avc_config;
+
851  if (!avc_config.Parse(*stream_config)) {
+
852  LOG(WARNING) << "Failed to parse AVCDecoderConfigurationRecord. "
+
853  "Using computed configuration record instead.";
+
854  video_stream_info->set_extra_data(decoder_config_record);
+
855  if (!avc_config.Parse(decoder_config_record)) {
+
856  LOG(ERROR) << "Failed to parse AVCDecoderConfigurationRecord.";
+
857  return false;
+
858  }
+
859  }
+
860  video_stream_info->set_codec_string(avc_config.GetCodecString());
+
861 
+
862  if (avc_config.pixel_width() != video_stream_info->pixel_width() ||
+
863  avc_config.pixel_height() !=
+
864  video_stream_info->pixel_height()) {
+
865  LOG_IF(WARNING, video_stream_info->pixel_width() != 0 ||
+
866  video_stream_info->pixel_height() != 0)
+
867  << "Pixel aspect ratio in WVM metadata ("
+
868  << video_stream_info->pixel_width() << ","
+
869  << video_stream_info->pixel_height()
+
870  << ") does not match with SAR in "
+
871  "AVCDecoderConfigurationRecord ("
+
872  << avc_config.pixel_width() << ","
+
873  << avc_config.pixel_height()
+
874  << "). Use AVCDecoderConfigurationRecord.";
+
875  video_stream_info->set_pixel_width(avc_config.pixel_width());
+
876  video_stream_info->set_pixel_height(avc_config.pixel_height());
+
877  }
+
878  if (avc_config.coded_width() != video_stream_info->width() ||
+
879  avc_config.coded_height() != video_stream_info->height()) {
+
880  LOG(WARNING) << "Resolution in WVM metadata ("
+
881  << video_stream_info->width() << ","
+
882  << video_stream_info->height()
+
883  << ") does not match with resolution in "
+
884  "AVCDecoderConfigurationRecord ("
+
885  << avc_config.coded_width() << ","
+
886  << avc_config.coded_height()
+
887  << "). Use AVCDecoderConfigurationRecord.";
+
888  video_stream_info->set_width(avc_config.coded_width());
+
889  video_stream_info->set_height(avc_config.coded_height());
+
890  }
+
891  }
+
892  }
+
893  }
+
894  } else if ((prev_pes_stream_id_ & kPesStreamIdAudioMask) ==
+
895  kPesStreamIdAudio) {
+
896  // Set data on the audio stream.
+ +
898  sample_data_.data(), kAdtsHeaderMinSize);
+
899  media::mp2t::AdtsHeader adts_header;
+
900  const uint8_t* frame_ptr = sample_data_.data();
+
901  if (!adts_header.Parse(frame_ptr, frame_size)) {
+
902  LOG(ERROR) << "Could not parse ADTS header";
+
903  return false;
+
904  }
+
905  size_t header_size = adts_header.GetAdtsHeaderSize(frame_ptr,
+
906  frame_size);
+
907  media_sample_->set_data(frame_ptr + header_size,
+
908  frame_size - header_size);
+
909  if (!is_initialized_) {
+
910  for (uint32_t i = 0; i < stream_infos_.size(); i++) {
+
911  if (stream_infos_[i]->stream_type() == media::kStreamAudio &&
+
912  stream_infos_[i]->codec_string().empty()) {
+
913  AudioStreamInfo* audio_stream_info =
+
914  reinterpret_cast<AudioStreamInfo*>(stream_infos_[i].get());
+
915  if (audio_stream_info->extra_data().empty()) {
+
916  // Set AudioStreamInfo fields using information from the ADTS
+
917  // header.
+
918  audio_stream_info->set_sampling_frequency(
+
919  adts_header.GetSamplingFrequency());
+
920  std::vector<uint8_t> audio_specific_config;
+
921  if (!adts_header.GetAudioSpecificConfig(&audio_specific_config)) {
+
922  LOG(ERROR) << "Could not compute AACaudiospecificconfig";
+
923  return false;
+
924  }
+
925  audio_stream_info->set_extra_data(audio_specific_config);
+
926  audio_stream_info->set_codec_string(
+ +
928  kCodecAAC, adts_header.GetObjectType()));
+
929  } else {
+
930  // Set AudioStreamInfo fields using information from the
+
931  // AACAudioSpecificConfig record.
+
932  mp4::AACAudioSpecificConfig aac_config;
+
933  if (!aac_config.Parse(stream_infos_[i]->extra_data())) {
+
934  LOG(ERROR) << "Could not parse AACAudioSpecificconfig";
+
935  return false;
+
936  }
+
937  audio_stream_info->set_sampling_frequency(aac_config.frequency());
+
938  audio_stream_info->set_codec_string(
+ +
940  kCodecAAC, aac_config.audio_object_type()));
+
941  }
+
942  }
+
943  }
+
944  }
+
945  }
+
946  }
+
947 
+
948  if (!is_initialized_) {
+
949  bool all_streams_have_config = true;
+
950  // Check if all collected stream infos have extra_data set.
+
951  for (uint32_t i = 0; i < stream_infos_.size(); i++) {
+
952  if (stream_infos_[i]->codec_string().empty()) {
+
953  all_streams_have_config = false;
+
954  break;
+
955  }
+
956  }
+
957  if (all_streams_have_config) {
+
958  init_cb_.Run(stream_infos_);
+
959  is_initialized_ = true;
+
960  }
+
961  }
+
962 
+
963  DCHECK_GT(media_sample_->data_size(), 0UL);
+
964  std::string key = base::UintToString(current_program_id_).append(":")
+
965  .append(base::UintToString(prev_pes_stream_id_));
+
966  std::map<std::string, uint32_t>::iterator it =
+
967  program_demux_stream_map_.find(key);
+
968  if (it == program_demux_stream_map_.end()) {
+
969  // TODO(ramjic): Log error message here and in other error cases through
+
970  // this method.
+
971  return false;
+
972  }
+
973  DemuxStreamIdMediaSample demux_stream_media_sample;
+
974  demux_stream_media_sample.parsed_audio_or_video_stream_id =
+
975  prev_pes_stream_id_;
+
976  demux_stream_media_sample.demux_stream_id = (*it).second;
+
977  demux_stream_media_sample.media_sample = media_sample_;
+
978  // Check if sample can be emitted.
+
979  if (!is_initialized_) {
+
980  media_sample_queue_.push_back(demux_stream_media_sample);
+
981  } else {
+
982  // flush the sample queue and emit all queued samples.
+
983  while (!media_sample_queue_.empty()) {
+
984  if (!EmitPendingSamples())
+
985  return false;
+
986  }
+
987  // Emit current sample.
+
988  if (!EmitSample(prev_pes_stream_id_, (*it).second, media_sample_, false))
+
989  return false;
+
990  }
+
991  return true;
+
992 }
+
993 
+
994 bool WvmMediaParser::EmitSample(uint32_t parsed_audio_or_video_stream_id,
+
995  uint32_t stream_id,
+
996  scoped_refptr<MediaSample>& new_sample,
+
997  bool isLastSample) {
+
998  DCHECK(new_sample);
+
999  if (isLastSample) {
+
1000  if ((parsed_audio_or_video_stream_id & kPesStreamIdVideoMask) ==
+
1001  kPesStreamIdVideo) {
+
1002  new_sample->set_duration(prev_media_sample_data_.video_sample_duration);
+
1003  } else if ((parsed_audio_or_video_stream_id & kPesStreamIdAudioMask) ==
+
1004  kPesStreamIdAudio) {
+
1005  new_sample->set_duration(prev_media_sample_data_.audio_sample_duration);
+
1006  }
+
1007  if (!new_sample_cb_.Run(stream_id, new_sample)) {
+
1008  LOG(ERROR) << "Failed to process the last sample.";
+
1009  return false;
+
1010  }
+
1011  return true;
+
1012  }
+
1013 
+
1014  // Cannot emit current sample. Compute duration first and then,
+
1015  // emit previous sample.
+
1016  if ((parsed_audio_or_video_stream_id & kPesStreamIdVideoMask) ==
+
1017  kPesStreamIdVideo) {
+
1018  if (prev_media_sample_data_.video_sample == NULL) {
+
1019  prev_media_sample_data_.video_sample = new_sample;
+
1020  prev_media_sample_data_.video_stream_id = stream_id;
+
1021  return true;
+
1022  }
+
1023  prev_media_sample_data_.video_sample->set_duration(
+
1024  new_sample->dts() - prev_media_sample_data_.video_sample->dts());
+
1025  prev_media_sample_data_.video_sample_duration =
+
1026  prev_media_sample_data_.video_sample->duration();
+
1027  if (!new_sample_cb_.Run(prev_media_sample_data_.video_stream_id,
+
1028  prev_media_sample_data_.video_sample)) {
+
1029  LOG(ERROR) << "Failed to process the video sample.";
+
1030  return false;
+
1031  }
+
1032  prev_media_sample_data_.video_sample = new_sample;
+
1033  prev_media_sample_data_.video_stream_id = stream_id;
+
1034  } else if ((parsed_audio_or_video_stream_id & kPesStreamIdAudioMask) ==
+
1035  kPesStreamIdAudio) {
+
1036  if (prev_media_sample_data_.audio_sample == NULL) {
+
1037  prev_media_sample_data_.audio_sample = new_sample;
+
1038  prev_media_sample_data_.audio_stream_id = stream_id;
+
1039  return true;
+
1040  }
+
1041  prev_media_sample_data_.audio_sample->set_duration(
+
1042  new_sample->dts() - prev_media_sample_data_.audio_sample->dts());
+
1043  prev_media_sample_data_.audio_sample_duration =
+
1044  prev_media_sample_data_.audio_sample->duration();
+
1045  if (!new_sample_cb_.Run(prev_media_sample_data_.audio_stream_id,
+
1046  prev_media_sample_data_.audio_sample)) {
+
1047  LOG(ERROR) << "Failed to process the audio sample.";
+
1048  return false;
+
1049  }
+
1050  prev_media_sample_data_.audio_sample = new_sample;
+
1051  prev_media_sample_data_.audio_stream_id = stream_id;
+
1052  }
+
1053  return true;
+
1054 }
+
1055 
+
1056 bool WvmMediaParser::GetAssetKey(const uint32_t asset_id,
+
1057  EncryptionKey* encryption_key) {
+
1058  DCHECK(decryption_key_source_);
+
1059  Status status = decryption_key_source_->FetchKeys(asset_id);
+
1060  if (!status.ok()) {
+
1061  LOG(ERROR) << "Fetch Key(s) failed for AssetID = " << asset_id
+
1062  << ", error = " << status;
+
1063  return false;
+
1064  }
+
1065 
+
1066  status = decryption_key_source_->GetKey(KeySource::TRACK_TYPE_HD,
+
1067  encryption_key);
+
1068  if (!status.ok()) {
+
1069  LOG(ERROR) << "Fetch Key(s) failed for AssetID = " << asset_id
+
1070  << ", error = " << status;
+
1071  return false;
+
1072  }
+
1073 
+
1074  return true;
+
1075 }
+
1076 
+
1077 bool WvmMediaParser::ProcessEcm() {
+
1078  // An error will be returned later if the samples need to be decrypted.
+
1079  if (!decryption_key_source_)
+
1080  return true;
+
1081 
+
1082  if (current_program_id_ > 0) {
+
1083  return true;
+
1084  }
+
1085  if (ecm_.size() != kEcmSizeBytes) {
+
1086  LOG(ERROR) << "Unexpected ECM size = " << ecm_.size()
+
1087  << ", expected size = " << kEcmSizeBytes;
+
1088  return false;
+
1089  }
+
1090  const uint8_t* ecm_data = ecm_.data();
+
1091  DCHECK(ecm_data);
+
1092  ecm_data += sizeof(uint32_t); // old version field - skip.
+
1093  ecm_data += sizeof(uint32_t); // clear lead - skip.
+
1094  ecm_data += sizeof(uint32_t); // system id(includes ECM version) - skip.
+
1095  uint32_t asset_id = ntohlFromBuffer(ecm_data);
+
1096  if (asset_id == 0) {
+
1097  LOG(ERROR) << "AssetID in ECM is not valid.";
+
1098  return false;
+
1099  }
+
1100  ecm_data += sizeof(uint32_t); // asset_id.
+
1101  EncryptionKey encryption_key;
+
1102  if (!GetAssetKey(asset_id, &encryption_key)) {
+
1103  return false;
+
1104  }
+
1105  if (encryption_key.key.size() < kAssetKeySizeBytes) {
+
1106  LOG(ERROR) << "Asset Key size of " << encryption_key.key.size()
+
1107  << " for AssetID = " << asset_id
+
1108  << " is less than minimum asset key size.";
+
1109  return false;
+
1110  }
+
1111  // Legacy WVM content may have asset keys > 16 bytes.
+
1112  // Use only the first 16 bytes of the asset key to get
+
1113  // the content key.
+
1114  std::vector<uint8_t> asset_key(
+
1115  encryption_key.key.begin(),
+
1116  encryption_key.key.begin() + kAssetKeySizeBytes);
+
1117  // WVM format always uses all zero IV.
+
1118  std::vector<uint8_t> zero_iv(kInitializationVectorSizeBytes, 0);
+
1119  AesCbcDecryptor asset_decryptor(kCtsPadding, AesCryptor::kUseConstantIv);
+
1120  if (!asset_decryptor.InitializeWithIv(asset_key, zero_iv)) {
+
1121  LOG(ERROR) << "Failed to initialize asset_decryptor.";
+
1122  return false;
+
1123  }
+
1124 
+
1125  const size_t content_key_buffer_size =
+
1126  kEcmFlagsSizeBytes + kEcmContentKeySizeBytes +
+
1127  kEcmPaddingSizeBytes; // flags + contentKey + padding.
+
1128  std::vector<uint8_t> content_key_buffer(content_key_buffer_size);
+
1129  CHECK(asset_decryptor.Crypt(ecm_data, content_key_buffer_size,
+
1130  content_key_buffer.data()));
+
1131 
+
1132  std::vector<uint8_t> decrypted_content_key_vec(
+
1133  content_key_buffer.begin() + 4,
+
1134  content_key_buffer.begin() + 20);
+
1135  scoped_ptr<AesCbcDecryptor> content_decryptor(
+
1136  new AesCbcDecryptor(kCtsPadding, AesCryptor::kUseConstantIv));
+
1137  if (!content_decryptor->InitializeWithIv(decrypted_content_key_vec,
+
1138  zero_iv)) {
+
1139  LOG(ERROR) << "Failed to initialize content decryptor.";
+
1140  return false;
+
1141  }
+
1142 
+
1143  content_decryptor_ = content_decryptor.Pass();
+
1144  return true;
+
1145 }
+
1146 
+
1147 DemuxStreamIdMediaSample::DemuxStreamIdMediaSample() :
+
1148  demux_stream_id(0),
+
1149  parsed_audio_or_video_stream_id(0) {}
+
1150 
+
1151 DemuxStreamIdMediaSample::~DemuxStreamIdMediaSample() {}
+
1152 
+
1153 PrevSampleData::PrevSampleData() {
+
1154  Reset();
+
1155 }
+
1156 
+
1157 PrevSampleData::~PrevSampleData() {}
+
1158 
+
1159 void PrevSampleData::Reset() {
+
1160  audio_sample = NULL;
+
1161  video_sample = NULL;
+
1162  audio_stream_id = 0;
+
1163  video_stream_id = 0;
+
1164  audio_sample_duration = 0;
+
1165  video_sample_duration = 0;
+
1166 }
+
1167 
+
1168 } // namespace wvm
+
1169 } // namespace media
+
1170 } // namespace edash_packager
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:31
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 7b261c5ac8..f56f7ca638 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 70928691a8..c943efd8ab 100644 --- a/docs/dd/d3b/mp4_2segmenter_8h_source.html +++ b/docs/dd/d3b/mp4_2segmenter_8h_source.html @@ -221,7 +221,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d42/encryptor_8h_source.html b/docs/dd/d42/encryptor_8h_source.html index 35a79476cb..e8648cf208 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 8a27559f46..dc1bc5757c 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 4b5f24b769..e27ccc9298 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 a6ef380b6e..66fcf43862 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/d48/classedash__packager_1_1media_1_1mp2t_1_1TsMuxer.html b/docs/dd/d48/classedash__packager_1_1media_1_1mp2t_1_1TsMuxer.html index c065b5685c..2bc3cd41c5 100644 --- a/docs/dd/d48/classedash__packager_1_1media_1_1mp2t_1_1TsMuxer.html +++ b/docs/dd/d48/classedash__packager_1_1media_1_1mp2t_1_1TsMuxer.html @@ -178,7 +178,7 @@ FourCC protection_scheme 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 a10ad6f8ee..d76aa4b313 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 69a6eeb9c8..4d59f25a11 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/d52/structedash__packager_1_1media_1_1mp4_1_1AudioRollRecoveryEntry.html b/docs/dd/d52/structedash__packager_1_1media_1_1mp4_1_1AudioRollRecoveryEntry.html new file mode 100644 index 0000000000..29cbe9bb43 --- /dev/null +++ b/docs/dd/d52/structedash__packager_1_1media_1_1mp4_1_1AudioRollRecoveryEntry.html @@ -0,0 +1,128 @@ + + + + + + +DASH Media Packaging SDK: edash_packager::media::mp4::AudioRollRecoveryEntry Struct Reference + + + + + + + + + +
+
+ + + + + + +
+
DASH Media Packaging SDK +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
edash_packager::media::mp4::AudioRollRecoveryEntry Struct Reference
+
+
+ + + + + + +

+Public Member Functions

+bool ReadWrite (BoxBuffer *buffer)
 
+uint32_t ComputeSize () const
 
+ + + +

+Public Attributes

+int16_t roll_distance
 
+

Detailed Description

+
+

Definition at line 490 of file box_definitions.h.

+

The documentation for this struct was generated from the following files: +
+ + + + diff --git a/docs/dd/d54/widevine__encryption__flags_8h_source.html b/docs/dd/d54/widevine__encryption__flags_8h_source.html index bd9c0841d7..6a62792173 100644 --- a/docs/dd/d54/widevine__encryption__flags_8h_source.html +++ b/docs/dd/d54/widevine__encryption__flags_8h_source.html @@ -125,7 +125,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 41863172d7..797118fb8a 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 a906c3ba07..3cd929d9cd 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 8910483935..78a4380827 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 1c097650b0..9d43bafaa6 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 @@ -177,7 +177,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 89e43c2111..d094c9942c 100644 --- a/docs/dd/d79/classedash__packager_1_1media_1_1AesCtrEncryptor.html +++ b/docs/dd/d79/classedash__packager_1_1media_1_1AesCtrEncryptor.html @@ -163,7 +163,7 @@ AES_KEY * mutable_aes_key< diff --git a/docs/dd/d7d/structedash__packager_1_1media_1_1mp4_1_1TextSampleEntry.html b/docs/dd/d7d/structedash__packager_1_1media_1_1mp4_1_1TextSampleEntry.html index edd65ec55c..f90fa009ff 100644 --- a/docs/dd/d7d/structedash__packager_1_1media_1_1mp4_1_1TextSampleEntry.html +++ b/docs/dd/d7d/structedash__packager_1_1media_1_1mp4_1_1TextSampleEntry.html @@ -145,7 +145,7 @@ Additional Inherited Members

Detailed Description

-

Definition at line 360 of file box_definitions.h.

+

Definition at line 369 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 1568 of file box_definitions.cc.

+

Definition at line 1816 of file box_definitions.cc.

@@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/dd/d7f/classedash__packager_1_1media_1_1DecoderConfiguration-members.html b/docs/dd/d7f/classedash__packager_1_1media_1_1DecoderConfiguration-members.html index 96740c1c09..79c2007019 100644 --- a/docs/dd/d7f/classedash__packager_1_1media_1_1DecoderConfiguration-members.html +++ b/docs/dd/d7f/classedash__packager_1_1media_1_1DecoderConfiguration-members.html @@ -107,7 +107,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d80/media__sample_8h_source.html b/docs/dd/d80/media__sample_8h_source.html index da773b92d2..c42ea7f006 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 03f45331d5..9a61aeb937 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 5a72bed644..a51deaefa1 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 33c6876110..5207c487c6 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/d88/pes__packet__generator_8h_source.html b/docs/dd/d88/pes__packet__generator_8h_source.html index a9bdafa1bc..0fa9a99200 100644 --- a/docs/dd/d88/pes__packet__generator_8h_source.html +++ b/docs/dd/d88/pes__packet__generator_8h_source.html @@ -177,7 +177,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 65de020a8b..b1abb8a91b 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 348ac6c1ba..d27697f8b4 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 @@ -102,12 +102,12 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); encryption_key() const (defined in edash_packager::media::mp4::EncryptingFragmenter)edash_packager::media::mp4::EncryptingFragmenterinlineprotected encryptor() (defined in edash_packager::media::mp4::EncryptingFragmenter)edash_packager::media::mp4::EncryptingFragmenterinlineprotected FinalizeFragment() overrideedash_packager::media::mp4::EncryptingFragmentervirtual - FinalizeFragmentForEncryption() overrideedash_packager::media::mp4::KeyRotationFragmenterprotectedvirtual + FinalizeFragmentForEncryption()edash_packager::media::mp4::EncryptingFragmenterprotectedvirtual first_sap_time() const (defined in edash_packager::media::mp4::Fragmenter)edash_packager::media::mp4::Fragmenterinline fragment_duration() const (defined in edash_packager::media::mp4::Fragmenter)edash_packager::media::mp4::Fragmenterinline fragment_finalized() const (defined in edash_packager::media::mp4::Fragmenter)edash_packager::media::mp4::Fragmenterinline fragment_initialized() const (defined in edash_packager::media::mp4::Fragmenter)edash_packager::media::mp4::Fragmenterinline - Fragmenter(TrackFragment *traf)edash_packager::media::mp4::Fragmenter + Fragmenter(scoped_refptr< StreamInfo > info, TrackFragment *traf)edash_packager::media::mp4::Fragmenter GenerateSegmentReference(SegmentReference *reference)edash_packager::media::mp4::Fragmenter InitializeFragment(int64_t first_sample_dts) overrideedash_packager::media::mp4::EncryptingFragmentervirtual KeyRotationFragmenter(MovieFragment *moof, scoped_refptr< StreamInfo > info, TrackFragment *traf, KeySource *encryption_key_source, KeySource::TrackType track_type, int64_t crypto_period_duration, int64_t clear_time, FourCC protection_scheme, uint8_t crypt_byte_block, uint8_t skip_byte_block, MuxerListener *muxer_listener)edash_packager::media::mp4::KeyRotationFragmenter @@ -123,7 +123,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); 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 40a515cb80..8f995affd5 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/d98/structedash__packager_1_1media_1_1H264Sps-members.html b/docs/dd/d98/structedash__packager_1_1media_1_1H264Sps-members.html index c7ce036881..b015cf53e1 100644 --- a/docs/dd/d98/structedash__packager_1_1media_1_1H264Sps-members.html +++ b/docs/dd/d98/structedash__packager_1_1media_1_1H264Sps-members.html @@ -142,7 +142,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d98/ts__packet__writer__util_8h_source.html b/docs/dd/d98/ts__packet__writer__util_8h_source.html index c1c066a416..9d6f1a6d0a 100644 --- a/docs/dd/d98/ts__packet__writer__util_8h_source.html +++ b/docs/dd/d98/ts__packet__writer__util_8h_source.html @@ -127,7 +127,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); 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 19b3eae51c..5ce1a67c28 100644 --- a/docs/dd/d99/classedash__packager_1_1media_1_1WebMMediaParser.html +++ b/docs/dd/d99/classedash__packager_1_1media_1_1WebMMediaParser.html @@ -256,7 +256,7 @@ track_id, const scoped_refptr
diff --git a/docs/dd/d9a/audio__timestamp__helper_8h_source.html b/docs/dd/d9a/audio__timestamp__helper_8h_source.html index 0fb8ce4e8b..7c7812ceae 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 362860b44e..64e99c49e6 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 703 of file box_definitions.h.

+

Definition at line 734 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 2349 of file box_definitions.cc.

+

Definition at line 2445 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 ae55261514..8390981c8a 100644 --- a/docs/dd/da6/structedash__packager_1_1media_1_1mp4_1_1SegmentType.html +++ b/docs/dd/da6/structedash__packager_1_1media_1_1mp4_1_1SegmentType.html @@ -177,7 +177,7 @@ std::vector< FourCC > < diff --git a/docs/dd/da8/classedash__packager_1_1media_1_1RsaRequestSigner.html b/docs/dd/da8/classedash__packager_1_1media_1_1RsaRequestSigner.html index 228cd3a0c1..0b43b40414 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 83387cc4ad..aa29a8f6e3 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 @@ -179,7 +179,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 be5c86d507..46ac32fbf0 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 648 of file box_definitions.h.

+

Definition at line 514 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 4efe546f28..fba334e95f 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 88e03991f5..998206f746 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/db7/classedash__packager_1_1media_1_1mp2t_1_1EsParserH265.html b/docs/dd/db7/classedash__packager_1_1media_1_1mp2t_1_1EsParserH265.html index dd3d6dbce7..b1f46940e1 100644 --- a/docs/dd/db7/classedash__packager_1_1media_1_1mp2t_1_1EsParserH265.html +++ b/docs/dd/db7/classedash__packager_1_1media_1_1mp2t_1_1EsParserH265.html @@ -161,7 +161,7 @@ const
diff --git a/docs/dd/dbc/buffer__reader_8cc_source.html b/docs/dd/dbc/buffer__reader_8cc_source.html index 5ad5321ee4..3c3824be79 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 f6d3cf2d3f..7fac43c089 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 @@ -117,7 +117,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 374cac1b41..d9aa33958f 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 525 of file box_definitions.h.

+

Definition at line 597 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 1735 of file box_definitions.cc.

+

Definition at line 1983 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 890919a5c7..e2d42f6073 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 010ef47f3c..7d562539db 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 f422a141f4..6e2fd89fa6 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 @@ -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 5c9058f68c..d8473138db 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/dd2/buffer__writer_8h_source.html b/docs/dd/dd2/buffer__writer_8h_source.html index 79eab991b0..dc93be0fb1 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 7decb06be9..8e8df6008c 100644 --- a/docs/dd/dd3/buffer__writer_8cc_source.html +++ b/docs/dd/dd3/buffer__writer_8cc_source.html @@ -187,7 +187,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/dd8/mock__muxer__listener_8cc_source.html b/docs/dd/dd8/mock__muxer__listener_8cc_source.html index 4d18d27616..26e03c9c33 100644 --- a/docs/dd/dd8/mock__muxer__listener_8cc_source.html +++ b/docs/dd/dd8/mock__muxer__listener_8cc_source.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/ddb/classedash__packager_1_1media_1_1mp4_1_1VideoSliceHeaderParser-members.html b/docs/dd/ddb/classedash__packager_1_1media_1_1mp4_1_1VideoSliceHeaderParser-members.html index c916166845..166a4a6adb 100644 --- a/docs/dd/ddb/classedash__packager_1_1media_1_1mp4_1_1VideoSliceHeaderParser-members.html +++ b/docs/dd/ddb/classedash__packager_1_1media_1_1mp4_1_1VideoSliceHeaderParser-members.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/de7/xml__node_8h_source.html b/docs/dd/de7/xml__node_8h_source.html index 43bab3e2bf..7a7ab5df5d 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 513d67e7a5..e019982b9f 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 6a2124c63c..5cca9a4e23 100644 --- a/docs/dd/dee/box__definitions_8cc_source.html +++ b/docs/dd/dee/box__definitions_8cc_source.html @@ -1010,1789 +1010,1888 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
921  sizeof(uint32_t) * sample_number.size();
922 }
923 
-
924 SampleTable::SampleTable() {}
-
925 SampleTable::~SampleTable() {}
-
926 FourCC SampleTable::BoxType() const { return FOURCC_stbl; }
-
927 
-
928 bool SampleTable::ReadWriteInternal(BoxBuffer* buffer) {
-
929  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
930  buffer->PrepareChildren() &&
-
931  buffer->ReadWriteChild(&description) &&
-
932  buffer->ReadWriteChild(&decoding_time_to_sample) &&
-
933  buffer->TryReadWriteChild(&composition_time_to_sample) &&
-
934  buffer->ReadWriteChild(&sample_to_chunk));
-
935 
-
936  if (buffer->Reading()) {
-
937  BoxReader* reader = buffer->reader();
-
938  DCHECK(reader);
-
939 
-
940  // Either SampleSize or CompactSampleSize must present.
-
941  if (reader->ChildExist(&sample_size)) {
-
942  RCHECK(reader->ReadChild(&sample_size));
-
943  } else {
-
944  CompactSampleSize compact_sample_size;
-
945  RCHECK(reader->ReadChild(&compact_sample_size));
-
946  sample_size.sample_size = 0;
-
947  sample_size.sample_count = compact_sample_size.sizes.size();
-
948  sample_size.sizes.swap(compact_sample_size.sizes);
-
949  }
-
950 
-
951  // Either ChunkOffset or ChunkLargeOffset must present.
-
952  if (reader->ChildExist(&chunk_large_offset)) {
-
953  RCHECK(reader->ReadChild(&chunk_large_offset));
-
954  } else {
-
955  ChunkOffset chunk_offset;
-
956  RCHECK(reader->ReadChild(&chunk_offset));
-
957  chunk_large_offset.offsets.swap(chunk_offset.offsets);
-
958  }
-
959  } else {
-
960  RCHECK(buffer->ReadWriteChild(&sample_size) &&
-
961  buffer->ReadWriteChild(&chunk_large_offset));
-
962  }
-
963  RCHECK(buffer->TryReadWriteChild(&sync_sample));
-
964  return true;
-
965 }
-
966 
-
967 uint32_t SampleTable::ComputeSizeInternal() {
-
968  return HeaderSize() + description.ComputeSize() +
-
969  decoding_time_to_sample.ComputeSize() +
-
970  composition_time_to_sample.ComputeSize() +
-
971  sample_to_chunk.ComputeSize() + sample_size.ComputeSize() +
-
972  chunk_large_offset.ComputeSize() + sync_sample.ComputeSize();
-
973 }
-
974 
-
975 EditList::EditList() {}
-
976 EditList::~EditList() {}
-
977 FourCC EditList::BoxType() const { return FOURCC_elst; }
-
978 
-
979 bool EditList::ReadWriteInternal(BoxBuffer* buffer) {
-
980  uint32_t count = edits.size();
-
981  RCHECK(ReadWriteHeaderInternal(buffer) && buffer->ReadWriteUInt32(&count));
-
982  edits.resize(count);
-
983 
-
984  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
-
985  for (uint32_t i = 0; i < count; ++i) {
-
986  RCHECK(
-
987  buffer->ReadWriteUInt64NBytes(&edits[i].segment_duration, num_bytes) &&
-
988  buffer->ReadWriteInt64NBytes(&edits[i].media_time, num_bytes) &&
-
989  buffer->ReadWriteInt16(&edits[i].media_rate_integer) &&
-
990  buffer->ReadWriteInt16(&edits[i].media_rate_fraction));
-
991  }
-
992  return true;
-
993 }
-
994 
-
995 uint32_t EditList::ComputeSizeInternal() {
-
996  // EditList box is optional. Skip it if it is empty.
-
997  if (edits.empty())
-
998  return 0;
-
999 
-
1000  version = 0;
-
1001  for (uint32_t i = 0; i < edits.size(); ++i) {
-
1002  if (!IsFitIn32Bits(edits[i].segment_duration, edits[i].media_time)) {
-
1003  version = 1;
-
1004  break;
-
1005  }
-
1006  }
-
1007  return HeaderSize() + sizeof(uint32_t) +
-
1008  (sizeof(uint32_t) * (1 + version) * 2 + sizeof(int16_t) * 2) *
-
1009  edits.size();
-
1010 }
-
1011 
-
1012 Edit::Edit() {}
-
1013 Edit::~Edit() {}
-
1014 FourCC Edit::BoxType() const { return FOURCC_edts; }
-
1015 
-
1016 bool Edit::ReadWriteInternal(BoxBuffer* buffer) {
-
1017  return ReadWriteHeaderInternal(buffer) &&
-
1018  buffer->PrepareChildren() &&
-
1019  buffer->ReadWriteChild(&list);
-
1020 }
-
1021 
-
1022 uint32_t Edit::ComputeSizeInternal() {
-
1023  // Edit box is optional. Skip it if it is empty.
-
1024  if (list.edits.empty())
-
1025  return 0;
-
1026  return HeaderSize() + list.ComputeSize();
-
1027 }
-
1028 
-
1029 HandlerReference::HandlerReference() : handler_type(FOURCC_NULL) {}
-
1030 HandlerReference::~HandlerReference() {}
-
1031 FourCC HandlerReference::BoxType() const { return FOURCC_hdlr; }
-
1032 
-
1033 bool HandlerReference::ReadWriteInternal(BoxBuffer* buffer) {
-
1034  std::vector<uint8_t> handler_name;
-
1035  if (!buffer->Reading()) {
-
1036  switch (handler_type) {
-
1037  case FOURCC_vide:
-
1038  handler_name.assign(kVideoHandlerName,
-
1039  kVideoHandlerName + arraysize(kVideoHandlerName));
-
1040  break;
-
1041  case FOURCC_soun:
-
1042  handler_name.assign(kAudioHandlerName,
-
1043  kAudioHandlerName + arraysize(kAudioHandlerName));
-
1044  break;
-
1045  case FOURCC_text:
-
1046  handler_name.assign(kTextHandlerName,
-
1047  kTextHandlerName + arraysize(kTextHandlerName));
-
1048  break;
-
1049  case FOURCC_ID32:
-
1050  break;
-
1051  default:
-
1052  NOTIMPLEMENTED();
-
1053  return false;
-
1054  }
-
1055  }
-
1056  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
1057  buffer->IgnoreBytes(4) && // predefined.
-
1058  buffer->ReadWriteFourCC(&handler_type));
-
1059  if (!buffer->Reading()) {
-
1060  RCHECK(buffer->IgnoreBytes(12) && // reserved.
-
1061  buffer->ReadWriteVector(&handler_name, handler_name.size()));
-
1062  }
-
1063  return true;
-
1064 }
-
1065 
-
1066 uint32_t HandlerReference::ComputeSizeInternal() {
-
1067  uint32_t box_size = HeaderSize() + kFourCCSize + 16; // 16 bytes Reserved
-
1068  switch (handler_type) {
-
1069  case FOURCC_vide:
-
1070  box_size += sizeof(kVideoHandlerName);
-
1071  break;
-
1072  case FOURCC_soun:
-
1073  box_size += sizeof(kAudioHandlerName);
-
1074  break;
-
1075  case FOURCC_text:
-
1076  box_size += sizeof(kTextHandlerName);
-
1077  break;
-
1078  case FOURCC_ID32:
-
1079  break;
-
1080  default:
-
1081  NOTIMPLEMENTED();
-
1082  }
-
1083  return box_size;
-
1084 }
+
924 CencSampleEncryptionInfoEntry::CencSampleEncryptionInfoEntry()
+
925  : is_protected(0),
+
926  per_sample_iv_size(0),
+
927  crypt_byte_block(0),
+
928  skip_byte_block(0) {}
+
929 CencSampleEncryptionInfoEntry::~CencSampleEncryptionInfoEntry() {};
+
930 
+
931 bool CencSampleEncryptionInfoEntry::ReadWrite(BoxBuffer* buffer) {
+
932  if (!buffer->Reading()) {
+
933  if (key_id.size() != kCencKeyIdSize) {
+
934  LOG(WARNING) << "CENC defines key id length of " << kCencKeyIdSize
+
935  << " bytes; got " << key_id.size()
+
936  << ". Resized accordingly.";
+
937  key_id.resize(kCencKeyIdSize);
+
938  }
+
939  RCHECK(crypt_byte_block < 16 && skip_byte_block < 16);
+
940  }
+
941 
+
942  RCHECK(buffer->IgnoreBytes(1)); // reserved.
+
943 
+
944  uint8_t pattern = crypt_byte_block << 4 | skip_byte_block;
+
945  RCHECK(buffer->ReadWriteUInt8(&pattern));
+
946  crypt_byte_block = pattern >> 4;
+
947  skip_byte_block = pattern & 0x0F;
+
948 
+
949  RCHECK(buffer->ReadWriteUInt8(&is_protected) &&
+
950  buffer->ReadWriteUInt8(&per_sample_iv_size) &&
+
951  buffer->ReadWriteVector(&key_id, kCencKeyIdSize));
+
952 
+
953  if (is_protected == 1) {
+
954  if (per_sample_iv_size == 0) { // For constant iv.
+
955  uint8_t constant_iv_size = constant_iv.size();
+
956  RCHECK(buffer->ReadWriteUInt8(&constant_iv_size));
+
957  RCHECK(constant_iv_size == 8 || constant_iv_size == 16);
+
958  RCHECK(buffer->ReadWriteVector(&constant_iv, constant_iv_size));
+
959  } else {
+
960  RCHECK(per_sample_iv_size == 8 || per_sample_iv_size == 16);
+
961  DCHECK(constant_iv.empty());
+
962  }
+
963  } else {
+
964  // Expect |is_protected| to be 0, i.e. not protected. Other values of
+
965  // |is_protected| is not supported.
+
966  RCHECK(is_protected == 0);
+
967  RCHECK(per_sample_iv_size == 0);
+
968  }
+
969  return true;
+
970 }
+
971 
+
972 uint32_t CencSampleEncryptionInfoEntry::ComputeSize() const {
+
973  return sizeof(uint32_t) + kCencKeyIdSize +
+
974  (constant_iv.empty() ? 0 : (sizeof(uint8_t) + constant_iv.size()));
+
975 }
+
976 
+
977 AudioRollRecoveryEntry::AudioRollRecoveryEntry(): roll_distance(0) {}
+
978 AudioRollRecoveryEntry::~AudioRollRecoveryEntry() {}
+
979 
+
980 bool AudioRollRecoveryEntry::ReadWrite(BoxBuffer* buffer) {
+
981  RCHECK(buffer->ReadWriteInt16(&roll_distance));
+
982  return true;
+
983 }
+
984 
+
985 uint32_t AudioRollRecoveryEntry::ComputeSize() const {
+
986  return sizeof(roll_distance);
+
987 }
+
988 
+
989 SampleGroupDescription::SampleGroupDescription() : grouping_type(0) {}
+
990 SampleGroupDescription::~SampleGroupDescription() {}
+
991 FourCC SampleGroupDescription::BoxType() const { return FOURCC_sgpd; }
+
992 
+
993 bool SampleGroupDescription::ReadWriteInternal(BoxBuffer* buffer) {
+
994  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
995  buffer->ReadWriteUInt32(&grouping_type));
+
996 
+
997  switch (grouping_type) {
+
998  case FOURCC_seig:
+
999  return ReadWriteEntries(buffer, &cenc_sample_encryption_info_entries);
+
1000  case FOURCC_roll:
+
1001  return ReadWriteEntries(buffer, &audio_roll_recovery_entries);
+
1002  default:
+
1003  DCHECK(buffer->Reading());
+
1004  DLOG(WARNING) << "Sample group '" << grouping_type
+
1005  << "' is not supported.";
+
1006  return true;
+
1007  }
+
1008 }
+
1009 
+
1010 template <typename T>
+
1011 bool SampleGroupDescription::ReadWriteEntries(BoxBuffer* buffer,
+
1012  std::vector<T>* entries) {
+
1013  uint32_t default_length = 0;
+
1014  if (!buffer->Reading()) {
+
1015  DCHECK(!entries->empty());
+
1016  default_length = (*entries)[0].ComputeSize();
+
1017  DCHECK_NE(default_length, 0u);
+
1018  }
+
1019  if (version == 1)
+
1020  RCHECK(buffer->ReadWriteUInt32(&default_length));
+
1021  if (version >= 2) {
+
1022  NOTIMPLEMENTED() << "Unsupported SampleGroupDescriptionBox 'sgpd' version "
+
1023  << static_cast<int>(version);
+
1024  return false;
+
1025  }
+
1026 
+
1027  uint32_t count = entries->size();
+
1028  RCHECK(buffer->ReadWriteUInt32(&count));
+
1029  RCHECK(count != 0);
+
1030  entries->resize(count);
+
1031 
+
1032  for (T& entry : *entries) {
+
1033  if (version == 1) {
+
1034  uint32_t description_length = default_length;
+
1035  if (buffer->Reading() && default_length == 0)
+
1036  RCHECK(buffer->ReadWriteUInt32(&description_length));
+
1037  RCHECK(entry.ReadWrite(buffer));
+
1038  RCHECK(entry.ComputeSize() == description_length);
+
1039  } else {
+
1040  RCHECK(entry.ReadWrite(buffer));
+
1041  }
+
1042  }
+
1043  return true;
+
1044 }
+
1045 
+
1046 uint32_t SampleGroupDescription::ComputeSizeInternal() {
+
1047  // Version 0 is obsoleted, so always generate version 1 box.
+
1048  version = 1;
+
1049  size_t entries_size = 0;
+
1050  switch (grouping_type) {
+
1051  case FOURCC_seig:
+
1052  for (const auto& entry : cenc_sample_encryption_info_entries)
+
1053  entries_size += entry.ComputeSize();
+
1054  break;
+
1055  case FOURCC_roll:
+
1056  for (const auto& entry : audio_roll_recovery_entries)
+
1057  entries_size += entry.ComputeSize();
+
1058  break;
+
1059  }
+
1060  // This box is optional. Skip it if it is not used.
+
1061  if (entries_size == 0)
+
1062  return 0;
+
1063  return HeaderSize() + sizeof(grouping_type) +
+
1064  (version == 1 ? sizeof(uint32_t) : 0) + sizeof(uint32_t) +
+
1065  entries_size;
+
1066 }
+
1067 
+
1068 SampleToGroup::SampleToGroup() : grouping_type(0), grouping_type_parameter(0) {}
+
1069 SampleToGroup::~SampleToGroup() {}
+
1070 FourCC SampleToGroup::BoxType() const { return FOURCC_sbgp; }
+
1071 
+
1072 bool SampleToGroup::ReadWriteInternal(BoxBuffer* buffer) {
+
1073  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
1074  buffer->ReadWriteUInt32(&grouping_type));
+
1075  if (version == 1)
+
1076  RCHECK(buffer->ReadWriteUInt32(&grouping_type_parameter));
+
1077 
+
1078  if (grouping_type != FOURCC_seig && grouping_type != FOURCC_roll) {
+
1079  DCHECK(buffer->Reading());
+
1080  DLOG(WARNING) << "Sample group "
+
1081  << FourCCToString(static_cast<FourCC>(grouping_type))
+
1082  << " is not supported.";
+
1083  return true;
+
1084  }
1085 
-
1086 bool Language::ReadWrite(BoxBuffer* buffer) {
-
1087  if (buffer->Reading()) {
-
1088  // Read language codes into temp first then use BitReader to read the
-
1089  // values. ISO-639-2/T language code: unsigned int(5)[3] language (2 bytes).
-
1090  std::vector<uint8_t> temp;
-
1091  RCHECK(buffer->ReadWriteVector(&temp, 2));
-
1092 
-
1093  BitReader bit_reader(&temp[0], 2);
-
1094  bit_reader.SkipBits(1);
-
1095  char language[3];
-
1096  for (int i = 0; i < 3; ++i) {
-
1097  CHECK(bit_reader.ReadBits(5, &language[i]));
-
1098  language[i] += 0x60;
-
1099  }
-
1100  code.assign(language, 3);
-
1101  } else {
-
1102  // Set up default language if it is not set.
-
1103  const char kUndefinedLanguage[] = "und";
-
1104  if (code.empty())
-
1105  code = kUndefinedLanguage;
-
1106  DCHECK_EQ(code.size(), 3u);
-
1107 
-
1108  // Lang format: bit(1) pad, unsigned int(5)[3] language.
-
1109  uint16_t lang = 0;
-
1110  for (int i = 0; i < 3; ++i)
-
1111  lang |= (code[i] - 0x60) << ((2 - i) * 5);
-
1112  RCHECK(buffer->ReadWriteUInt16(&lang));
-
1113  }
-
1114  return true;
-
1115 }
+
1086  uint32_t count = entries.size();
+
1087  RCHECK(buffer->ReadWriteUInt32(&count));
+
1088  entries.resize(count);
+
1089  for (uint32_t i = 0; i < count; ++i) {
+
1090  RCHECK(buffer->ReadWriteUInt32(&entries[i].sample_count) &&
+
1091  buffer->ReadWriteUInt32(&entries[i].group_description_index));
+
1092  }
+
1093  return true;
+
1094 }
+
1095 
+
1096 uint32_t SampleToGroup::ComputeSizeInternal() {
+
1097  // This box is optional. Skip it if it is not used.
+
1098  if (entries.empty())
+
1099  return 0;
+
1100  return HeaderSize() + sizeof(grouping_type) +
+
1101  (version == 1 ? sizeof(grouping_type_parameter) : 0) +
+
1102  sizeof(uint32_t) + entries.size() * sizeof(entries[0]);
+
1103 }
+
1104 
+
1105 SampleTable::SampleTable() {}
+
1106 SampleTable::~SampleTable() {}
+
1107 FourCC SampleTable::BoxType() const { return FOURCC_stbl; }
+
1108 
+
1109 bool SampleTable::ReadWriteInternal(BoxBuffer* buffer) {
+
1110  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
1111  buffer->PrepareChildren() &&
+
1112  buffer->ReadWriteChild(&description) &&
+
1113  buffer->ReadWriteChild(&decoding_time_to_sample) &&
+
1114  buffer->TryReadWriteChild(&composition_time_to_sample) &&
+
1115  buffer->ReadWriteChild(&sample_to_chunk));
1116 
-
1117 uint32_t Language::ComputeSize() const {
-
1118  // ISO-639-2/T language code: unsigned int(5)[3] language (2 bytes).
-
1119  return 2;
-
1120 }
-
1121 
-
1122 bool PrivFrame::ReadWrite(BoxBuffer* buffer) {
-
1123  FourCC fourcc = FOURCC_PRIV;
-
1124  RCHECK(buffer->ReadWriteFourCC(&fourcc));
-
1125  if (fourcc != FOURCC_PRIV) {
-
1126  VLOG(1) << "Skip unrecognized id3 frame during read: "
-
1127  << FourCCToString(fourcc);
-
1128  return true;
-
1129  }
-
1130 
-
1131  uint32_t frame_size = owner.size() + 1 + value.size();
-
1132  // size should be encoded as synchsafe integer, which is not support here.
-
1133  // We don't expect frame_size to be larger than 0x7F. Synchsafe integers less
-
1134  // than 0x7F is encoded in the same way as normal integer.
-
1135  DCHECK_LT(frame_size, 0x7Fu);
-
1136  uint16_t flags = 0;
-
1137  RCHECK(buffer->ReadWriteUInt32(&frame_size) &&
-
1138  buffer->ReadWriteUInt16(&flags));
-
1139 
-
1140  if (buffer->Reading()) {
-
1141  std::string str;
-
1142  RCHECK(buffer->ReadWriteString(&str, frame_size));
-
1143  // |owner| is null terminated.
-
1144  size_t pos = str.find('\0');
-
1145  RCHECK(pos < str.size());
-
1146  owner = str.substr(0, pos);
-
1147  value = str.substr(pos + 1);
+
1117  if (buffer->Reading()) {
+
1118  BoxReader* reader = buffer->reader();
+
1119  DCHECK(reader);
+
1120 
+
1121  // Either SampleSize or CompactSampleSize must present.
+
1122  if (reader->ChildExist(&sample_size)) {
+
1123  RCHECK(reader->ReadChild(&sample_size));
+
1124  } else {
+
1125  CompactSampleSize compact_sample_size;
+
1126  RCHECK(reader->ReadChild(&compact_sample_size));
+
1127  sample_size.sample_size = 0;
+
1128  sample_size.sample_count = compact_sample_size.sizes.size();
+
1129  sample_size.sizes.swap(compact_sample_size.sizes);
+
1130  }
+
1131 
+
1132  // Either ChunkOffset or ChunkLargeOffset must present.
+
1133  if (reader->ChildExist(&chunk_large_offset)) {
+
1134  RCHECK(reader->ReadChild(&chunk_large_offset));
+
1135  } else {
+
1136  ChunkOffset chunk_offset;
+
1137  RCHECK(reader->ReadChild(&chunk_offset));
+
1138  chunk_large_offset.offsets.swap(chunk_offset.offsets);
+
1139  }
+
1140  } else {
+
1141  RCHECK(buffer->ReadWriteChild(&sample_size) &&
+
1142  buffer->ReadWriteChild(&chunk_large_offset));
+
1143  }
+
1144  RCHECK(buffer->TryReadWriteChild(&sync_sample));
+
1145  if (buffer->Reading()) {
+
1146  RCHECK(buffer->reader()->TryReadChildren(&sample_group_descriptions) &&
+
1147  buffer->reader()->TryReadChildren(&sample_to_groups));
1148  } else {
-
1149  uint8_t byte = 0; // Null terminating byte between owner and value.
-
1150  RCHECK(buffer->ReadWriteString(&owner, owner.size()) &&
-
1151  buffer->ReadWriteUInt8(&byte) &&
-
1152  buffer->ReadWriteString(&value, value.size()));
+
1149  for (auto& sample_group_description : sample_group_descriptions)
+
1150  RCHECK(buffer->ReadWriteChild(&sample_group_description));
+
1151  for (auto& sample_to_group : sample_to_groups)
+
1152  RCHECK(buffer->ReadWriteChild(&sample_to_group));
1153  }
1154  return true;
1155 }
1156 
-
1157 uint32_t PrivFrame::ComputeSize() const {
-
1158  if (owner.empty() && value.empty())
-
1159  return 0;
-
1160  const uint32_t kFourCCSize = 4;
-
1161  return kFourCCSize + sizeof(uint32_t) + sizeof(uint16_t) + owner.size() + 1 +
-
1162  value.size();
-
1163 }
-
1164 
-
1165 ID3v2::ID3v2() {}
-
1166 ID3v2::~ID3v2() {}
-
1167 
-
1168 FourCC ID3v2::BoxType() const { return FOURCC_ID32; }
-
1169 
-
1170 bool ID3v2::ReadWriteInternal(BoxBuffer* buffer) {
-
1171  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
1172  language.ReadWrite(buffer));
-
1173 
-
1174  // Read/Write ID3v2 header
-
1175  std::string id3v2_identifier = kID3v2Identifier;
-
1176  uint16_t version = kID3v2Version;
-
1177  // We only support PrivateFrame in ID3.
-
1178  uint32_t data_size = private_frame.ComputeSize();
-
1179  // size should be encoded as synchsafe integer, which is not support here.
-
1180  // We don't expect data_size to be larger than 0x7F. Synchsafe integers less
-
1181  // than 0x7F is encoded in the same way as normal integer.
-
1182  DCHECK_LT(data_size, 0x7Fu);
-
1183  uint8_t flags = 0;
-
1184  RCHECK(buffer->ReadWriteString(&id3v2_identifier, id3v2_identifier.size()) &&
-
1185  buffer->ReadWriteUInt16(&version) &&
-
1186  buffer->ReadWriteUInt8(&flags) &&
-
1187  buffer->ReadWriteUInt32(&data_size));
-
1188 
-
1189  RCHECK(private_frame.ReadWrite(buffer));
-
1190  return true;
-
1191 }
-
1192 
-
1193 uint32_t ID3v2::ComputeSizeInternal() {
-
1194  uint32_t private_frame_size = private_frame.ComputeSize();
-
1195  // Skip ID3v2 box generation if there is no private frame.
-
1196  return private_frame_size == 0 ? 0 : HeaderSize() + language.ComputeSize() +
-
1197  kID3v2HeaderSize +
-
1198  private_frame_size;
-
1199 }
-
1200 
-
1201 Metadata::Metadata() {}
-
1202 Metadata::~Metadata() {}
-
1203 
-
1204 FourCC Metadata::BoxType() const {
-
1205  return FOURCC_meta;
+
1157 uint32_t SampleTable::ComputeSizeInternal() {
+
1158  uint32_t box_size =
+
1159  HeaderSize() + description.ComputeSize() +
+
1160  decoding_time_to_sample.ComputeSize() +
+
1161  composition_time_to_sample.ComputeSize() + sample_to_chunk.ComputeSize() +
+
1162  sample_size.ComputeSize() + chunk_large_offset.ComputeSize() +
+
1163  sync_sample.ComputeSize();
+
1164  for (auto& sample_group_description : sample_group_descriptions)
+
1165  box_size += sample_group_description.ComputeSize();
+
1166  for (auto& sample_to_group : sample_to_groups)
+
1167  box_size += sample_to_group.ComputeSize();
+
1168  return box_size;
+
1169 }
+
1170 
+
1171 EditList::EditList() {}
+
1172 EditList::~EditList() {}
+
1173 FourCC EditList::BoxType() const { return FOURCC_elst; }
+
1174 
+
1175 bool EditList::ReadWriteInternal(BoxBuffer* buffer) {
+
1176  uint32_t count = edits.size();
+
1177  RCHECK(ReadWriteHeaderInternal(buffer) && buffer->ReadWriteUInt32(&count));
+
1178  edits.resize(count);
+
1179 
+
1180  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
+
1181  for (uint32_t i = 0; i < count; ++i) {
+
1182  RCHECK(
+
1183  buffer->ReadWriteUInt64NBytes(&edits[i].segment_duration, num_bytes) &&
+
1184  buffer->ReadWriteInt64NBytes(&edits[i].media_time, num_bytes) &&
+
1185  buffer->ReadWriteInt16(&edits[i].media_rate_integer) &&
+
1186  buffer->ReadWriteInt16(&edits[i].media_rate_fraction));
+
1187  }
+
1188  return true;
+
1189 }
+
1190 
+
1191 uint32_t EditList::ComputeSizeInternal() {
+
1192  // EditList box is optional. Skip it if it is empty.
+
1193  if (edits.empty())
+
1194  return 0;
+
1195 
+
1196  version = 0;
+
1197  for (uint32_t i = 0; i < edits.size(); ++i) {
+
1198  if (!IsFitIn32Bits(edits[i].segment_duration, edits[i].media_time)) {
+
1199  version = 1;
+
1200  break;
+
1201  }
+
1202  }
+
1203  return HeaderSize() + sizeof(uint32_t) +
+
1204  (sizeof(uint32_t) * (1 + version) * 2 + sizeof(int16_t) * 2) *
+
1205  edits.size();
1206 }
1207 
-
1208 bool Metadata::ReadWriteInternal(BoxBuffer* buffer) {
-
1209  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
1210  buffer->PrepareChildren() &&
-
1211  buffer->ReadWriteChild(&handler) &&
-
1212  buffer->TryReadWriteChild(&id3v2));
-
1213  return true;
-
1214 }
-
1215 
-
1216 uint32_t Metadata::ComputeSizeInternal() {
-
1217  uint32_t id3v2_size = id3v2.ComputeSize();
-
1218  // Skip metadata box generation if there is no metadata box.
-
1219  return id3v2_size == 0 ? 0
-
1220  : HeaderSize() + handler.ComputeSize() + id3v2_size;
-
1221 }
-
1222 
-
1223 CodecConfigurationRecord::CodecConfigurationRecord() : box_type(FOURCC_NULL) {}
-
1224 CodecConfigurationRecord::~CodecConfigurationRecord() {}
- -
1226  // CodecConfigurationRecord should be parsed according to format recovered in
-
1227  // VideoSampleEntry. |box_type| is determined dynamically there.
-
1228  return box_type;
-
1229 }
-
1230 
-
1231 bool CodecConfigurationRecord::ReadWriteInternal(BoxBuffer* buffer) {
-
1232  RCHECK(ReadWriteHeaderInternal(buffer));
-
1233  if (buffer->Reading()) {
-
1234  RCHECK(buffer->ReadWriteVector(&data, buffer->BytesLeft()));
-
1235  } else {
-
1236  RCHECK(buffer->ReadWriteVector(&data, data.size()));
-
1237  }
-
1238  return true;
-
1239 }
-
1240 
-
1241 uint32_t CodecConfigurationRecord::ComputeSizeInternal() {
-
1242  if (data.empty())
-
1243  return 0;
-
1244  return HeaderSize() + data.size();
-
1245 }
-
1246 
-
1247 PixelAspectRatio::PixelAspectRatio() : h_spacing(0), v_spacing(0) {}
-
1248 PixelAspectRatio::~PixelAspectRatio() {}
-
1249 FourCC PixelAspectRatio::BoxType() const { return FOURCC_pasp; }
-
1250 
-
1251 bool PixelAspectRatio::ReadWriteInternal(BoxBuffer* buffer) {
-
1252  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
1253  buffer->ReadWriteUInt32(&h_spacing) &&
-
1254  buffer->ReadWriteUInt32(&v_spacing));
-
1255  return true;
-
1256 }
-
1257 
-
1258 uint32_t PixelAspectRatio::ComputeSizeInternal() {
-
1259  // This box is optional. Skip it if it is not initialized.
-
1260  if (h_spacing == 0 && v_spacing == 0)
-
1261  return 0;
-
1262  // Both values must be positive.
-
1263  DCHECK(h_spacing != 0 && v_spacing != 0);
-
1264  return HeaderSize() + sizeof(h_spacing) + sizeof(v_spacing);
-
1265 }
-
1266 
-
1267 VideoSampleEntry::VideoSampleEntry()
-
1268  : format(FOURCC_NULL), data_reference_index(1), width(0), height(0) {}
-
1269 
-
1270 VideoSampleEntry::~VideoSampleEntry() {}
- -
1272  if (format == FOURCC_NULL) {
-
1273  LOG(ERROR) << "VideoSampleEntry should be parsed according to the "
-
1274  << "handler type recovered in its Media ancestor.";
-
1275  }
-
1276  return format;
-
1277 }
-
1278 
-
1279 bool VideoSampleEntry::ReadWriteInternal(BoxBuffer* buffer) {
-
1280  std::vector<uint8_t> compressor_name;
-
1281  if (buffer->Reading()) {
-
1282  DCHECK(buffer->reader());
-
1283  format = buffer->reader()->type();
-
1284  } else {
-
1285  RCHECK(ReadWriteHeaderInternal(buffer));
-
1286 
-
1287  const FourCC actual_format = GetActualFormat();
-
1288  switch (actual_format) {
-
1289  case FOURCC_avc1:
-
1290  compressor_name.assign(
-
1291  kAvcCompressorName,
-
1292  kAvcCompressorName + arraysize(kAvcCompressorName));
-
1293  break;
-
1294  case FOURCC_hev1:
-
1295  case FOURCC_hvc1:
-
1296  compressor_name.assign(
-
1297  kHevcCompressorName,
-
1298  kHevcCompressorName + arraysize(kHevcCompressorName));
-
1299  break;
-
1300  case FOURCC_vp08:
-
1301  case FOURCC_vp09:
-
1302  case FOURCC_vp10:
-
1303  compressor_name.assign(
-
1304  kVpcCompressorName,
-
1305  kVpcCompressorName + arraysize(kVpcCompressorName));
-
1306  break;
-
1307  default:
-
1308  LOG(ERROR) << FourCCToString(actual_format) << " is not supported.";
-
1309  return false;
-
1310  }
-
1311  compressor_name.resize(kCompressorNameSize);
-
1312  }
-
1313 
-
1314  uint32_t video_resolution = kVideoResolution;
-
1315  uint16_t video_frame_count = kVideoFrameCount;
-
1316  uint16_t video_depth = kVideoDepth;
-
1317  int16_t predefined = -1;
-
1318  RCHECK(buffer->IgnoreBytes(6) && // reserved.
-
1319  buffer->ReadWriteUInt16(&data_reference_index) &&
-
1320  buffer->IgnoreBytes(16) && // predefined 0.
-
1321  buffer->ReadWriteUInt16(&width) &&
-
1322  buffer->ReadWriteUInt16(&height) &&
-
1323  buffer->ReadWriteUInt32(&video_resolution) &&
-
1324  buffer->ReadWriteUInt32(&video_resolution) &&
-
1325  buffer->IgnoreBytes(4) && // reserved.
-
1326  buffer->ReadWriteUInt16(&video_frame_count) &&
-
1327  buffer->ReadWriteVector(&compressor_name, kCompressorNameSize) &&
-
1328  buffer->ReadWriteUInt16(&video_depth) &&
-
1329  buffer->ReadWriteInt16(&predefined));
-
1330 
-
1331  RCHECK(buffer->PrepareChildren());
-
1332 
-
1333  if (format == FOURCC_encv)
-
1334  RCHECK(buffer->ReadWriteChild(&sinf));
+
1208 Edit::Edit() {}
+
1209 Edit::~Edit() {}
+
1210 FourCC Edit::BoxType() const { return FOURCC_edts; }
+
1211 
+
1212 bool Edit::ReadWriteInternal(BoxBuffer* buffer) {
+
1213  return ReadWriteHeaderInternal(buffer) &&
+
1214  buffer->PrepareChildren() &&
+
1215  buffer->ReadWriteChild(&list);
+
1216 }
+
1217 
+
1218 uint32_t Edit::ComputeSizeInternal() {
+
1219  // Edit box is optional. Skip it if it is empty.
+
1220  if (list.edits.empty())
+
1221  return 0;
+
1222  return HeaderSize() + list.ComputeSize();
+
1223 }
+
1224 
+
1225 HandlerReference::HandlerReference() : handler_type(FOURCC_NULL) {}
+
1226 HandlerReference::~HandlerReference() {}
+
1227 FourCC HandlerReference::BoxType() const { return FOURCC_hdlr; }
+
1228 
+
1229 bool HandlerReference::ReadWriteInternal(BoxBuffer* buffer) {
+
1230  std::vector<uint8_t> handler_name;
+
1231  if (!buffer->Reading()) {
+
1232  switch (handler_type) {
+
1233  case FOURCC_vide:
+
1234  handler_name.assign(kVideoHandlerName,
+
1235  kVideoHandlerName + arraysize(kVideoHandlerName));
+
1236  break;
+
1237  case FOURCC_soun:
+
1238  handler_name.assign(kAudioHandlerName,
+
1239  kAudioHandlerName + arraysize(kAudioHandlerName));
+
1240  break;
+
1241  case FOURCC_text:
+
1242  handler_name.assign(kTextHandlerName,
+
1243  kTextHandlerName + arraysize(kTextHandlerName));
+
1244  break;
+
1245  case FOURCC_ID32:
+
1246  break;
+
1247  default:
+
1248  NOTIMPLEMENTED();
+
1249  return false;
+
1250  }
+
1251  }
+
1252  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
1253  buffer->IgnoreBytes(4) && // predefined.
+
1254  buffer->ReadWriteFourCC(&handler_type));
+
1255  if (!buffer->Reading()) {
+
1256  RCHECK(buffer->IgnoreBytes(12) && // reserved.
+
1257  buffer->ReadWriteVector(&handler_name, handler_name.size()));
+
1258  }
+
1259  return true;
+
1260 }
+
1261 
+
1262 uint32_t HandlerReference::ComputeSizeInternal() {
+
1263  uint32_t box_size = HeaderSize() + kFourCCSize + 16; // 16 bytes Reserved
+
1264  switch (handler_type) {
+
1265  case FOURCC_vide:
+
1266  box_size += sizeof(kVideoHandlerName);
+
1267  break;
+
1268  case FOURCC_soun:
+
1269  box_size += sizeof(kAudioHandlerName);
+
1270  break;
+
1271  case FOURCC_text:
+
1272  box_size += sizeof(kTextHandlerName);
+
1273  break;
+
1274  case FOURCC_ID32:
+
1275  break;
+
1276  default:
+
1277  NOTIMPLEMENTED();
+
1278  }
+
1279  return box_size;
+
1280 }
+
1281 
+
1282 bool Language::ReadWrite(BoxBuffer* buffer) {
+
1283  if (buffer->Reading()) {
+
1284  // Read language codes into temp first then use BitReader to read the
+
1285  // values. ISO-639-2/T language code: unsigned int(5)[3] language (2 bytes).
+
1286  std::vector<uint8_t> temp;
+
1287  RCHECK(buffer->ReadWriteVector(&temp, 2));
+
1288 
+
1289  BitReader bit_reader(&temp[0], 2);
+
1290  bit_reader.SkipBits(1);
+
1291  char language[3];
+
1292  for (int i = 0; i < 3; ++i) {
+
1293  CHECK(bit_reader.ReadBits(5, &language[i]));
+
1294  language[i] += 0x60;
+
1295  }
+
1296  code.assign(language, 3);
+
1297  } else {
+
1298  // Set up default language if it is not set.
+
1299  const char kUndefinedLanguage[] = "und";
+
1300  if (code.empty())
+
1301  code = kUndefinedLanguage;
+
1302  DCHECK_EQ(code.size(), 3u);
+
1303 
+
1304  // Lang format: bit(1) pad, unsigned int(5)[3] language.
+
1305  uint16_t lang = 0;
+
1306  for (int i = 0; i < 3; ++i)
+
1307  lang |= (code[i] - 0x60) << ((2 - i) * 5);
+
1308  RCHECK(buffer->ReadWriteUInt16(&lang));
+
1309  }
+
1310  return true;
+
1311 }
+
1312 
+
1313 uint32_t Language::ComputeSize() const {
+
1314  // ISO-639-2/T language code: unsigned int(5)[3] language (2 bytes).
+
1315  return 2;
+
1316 }
+
1317 
+
1318 bool PrivFrame::ReadWrite(BoxBuffer* buffer) {
+
1319  FourCC fourcc = FOURCC_PRIV;
+
1320  RCHECK(buffer->ReadWriteFourCC(&fourcc));
+
1321  if (fourcc != FOURCC_PRIV) {
+
1322  VLOG(1) << "Skip unrecognized id3 frame during read: "
+
1323  << FourCCToString(fourcc);
+
1324  return true;
+
1325  }
+
1326 
+
1327  uint32_t frame_size = owner.size() + 1 + value.size();
+
1328  // size should be encoded as synchsafe integer, which is not support here.
+
1329  // We don't expect frame_size to be larger than 0x7F. Synchsafe integers less
+
1330  // than 0x7F is encoded in the same way as normal integer.
+
1331  DCHECK_LT(frame_size, 0x7Fu);
+
1332  uint16_t flags = 0;
+
1333  RCHECK(buffer->ReadWriteUInt32(&frame_size) &&
+
1334  buffer->ReadWriteUInt16(&flags));
1335 
-
1336  const FourCC actual_format = GetActualFormat();
-
1337  switch (actual_format) {
-
1338  case FOURCC_avc1:
-
1339  codec_config_record.box_type = FOURCC_avcC;
-
1340  break;
-
1341  case FOURCC_hev1:
-
1342  case FOURCC_hvc1:
-
1343  codec_config_record.box_type = FOURCC_hvcC;
-
1344  break;
-
1345  case FOURCC_vp08:
-
1346  case FOURCC_vp09:
-
1347  case FOURCC_vp10:
-
1348  codec_config_record.box_type = FOURCC_vpcC;
-
1349  break;
-
1350  default:
-
1351  LOG(ERROR) << FourCCToString(actual_format) << " is not supported.";
-
1352  return false;
-
1353  }
-
1354  RCHECK(buffer->ReadWriteChild(&codec_config_record));
-
1355  RCHECK(buffer->TryReadWriteChild(&pixel_aspect));
-
1356  return true;
-
1357 }
-
1358 
-
1359 uint32_t VideoSampleEntry::ComputeSizeInternal() {
-
1360  return HeaderSize() + sizeof(data_reference_index) + sizeof(width) +
-
1361  sizeof(height) + sizeof(kVideoResolution) * 2 +
-
1362  sizeof(kVideoFrameCount) + sizeof(kVideoDepth) +
-
1363  pixel_aspect.ComputeSize() + sinf.ComputeSize() +
-
1364  codec_config_record.ComputeSize() + kCompressorNameSize + 6 + 4 + 16 +
-
1365  2; // 6 + 4 bytes reserved, 16 + 2 bytes predefined.
-
1366 }
-
1367 
-
1368 ElementaryStreamDescriptor::ElementaryStreamDescriptor() {}
-
1369 ElementaryStreamDescriptor::~ElementaryStreamDescriptor() {}
-
1370 FourCC ElementaryStreamDescriptor::BoxType() const { return FOURCC_esds; }
-
1371 
-
1372 bool ElementaryStreamDescriptor::ReadWriteInternal(BoxBuffer* buffer) {
-
1373  RCHECK(ReadWriteHeaderInternal(buffer));
-
1374  if (buffer->Reading()) {
-
1375  std::vector<uint8_t> data;
-
1376  RCHECK(buffer->ReadWriteVector(&data, buffer->BytesLeft()));
-
1377  RCHECK(es_descriptor.Parse(data));
-
1378  if (es_descriptor.IsAAC()) {
-
1379  RCHECK(aac_audio_specific_config.Parse(
-
1380  es_descriptor.decoder_specific_info()));
-
1381  }
-
1382  } else {
-
1383  DCHECK(buffer->writer());
-
1384  es_descriptor.Write(buffer->writer());
-
1385  }
+
1336  if (buffer->Reading()) {
+
1337  std::string str;
+
1338  RCHECK(buffer->ReadWriteString(&str, frame_size));
+
1339  // |owner| is null terminated.
+
1340  size_t pos = str.find('\0');
+
1341  RCHECK(pos < str.size());
+
1342  owner = str.substr(0, pos);
+
1343  value = str.substr(pos + 1);
+
1344  } else {
+
1345  uint8_t byte = 0; // Null terminating byte between owner and value.
+
1346  RCHECK(buffer->ReadWriteString(&owner, owner.size()) &&
+
1347  buffer->ReadWriteUInt8(&byte) &&
+
1348  buffer->ReadWriteString(&value, value.size()));
+
1349  }
+
1350  return true;
+
1351 }
+
1352 
+
1353 uint32_t PrivFrame::ComputeSize() const {
+
1354  if (owner.empty() && value.empty())
+
1355  return 0;
+
1356  const uint32_t kFourCCSize = 4;
+
1357  return kFourCCSize + sizeof(uint32_t) + sizeof(uint16_t) + owner.size() + 1 +
+
1358  value.size();
+
1359 }
+
1360 
+
1361 ID3v2::ID3v2() {}
+
1362 ID3v2::~ID3v2() {}
+
1363 
+
1364 FourCC ID3v2::BoxType() const { return FOURCC_ID32; }
+
1365 
+
1366 bool ID3v2::ReadWriteInternal(BoxBuffer* buffer) {
+
1367  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
1368  language.ReadWrite(buffer));
+
1369 
+
1370  // Read/Write ID3v2 header
+
1371  std::string id3v2_identifier = kID3v2Identifier;
+
1372  uint16_t version = kID3v2Version;
+
1373  // We only support PrivateFrame in ID3.
+
1374  uint32_t data_size = private_frame.ComputeSize();
+
1375  // size should be encoded as synchsafe integer, which is not support here.
+
1376  // We don't expect data_size to be larger than 0x7F. Synchsafe integers less
+
1377  // than 0x7F is encoded in the same way as normal integer.
+
1378  DCHECK_LT(data_size, 0x7Fu);
+
1379  uint8_t flags = 0;
+
1380  RCHECK(buffer->ReadWriteString(&id3v2_identifier, id3v2_identifier.size()) &&
+
1381  buffer->ReadWriteUInt16(&version) &&
+
1382  buffer->ReadWriteUInt8(&flags) &&
+
1383  buffer->ReadWriteUInt32(&data_size));
+
1384 
+
1385  RCHECK(private_frame.ReadWrite(buffer));
1386  return true;
1387 }
1388 
-
1389 uint32_t ElementaryStreamDescriptor::ComputeSizeInternal() {
-
1390  // This box is optional. Skip it if not initialized.
-
1391  if (es_descriptor.object_type() == kForbidden)
-
1392  return 0;
-
1393  return HeaderSize() + es_descriptor.ComputeSize();
-
1394 }
-
1395 
-
1396 DTSSpecific::DTSSpecific()
-
1397  : sampling_frequency(0),
-
1398  max_bitrate(0),
-
1399  avg_bitrate(0),
-
1400  pcm_sample_depth(0) {}
-
1401 DTSSpecific::~DTSSpecific() {}
-
1402 FourCC DTSSpecific::BoxType() const { return FOURCC_ddts; }
+
1389 uint32_t ID3v2::ComputeSizeInternal() {
+
1390  uint32_t private_frame_size = private_frame.ComputeSize();
+
1391  // Skip ID3v2 box generation if there is no private frame.
+
1392  return private_frame_size == 0 ? 0 : HeaderSize() + language.ComputeSize() +
+
1393  kID3v2HeaderSize +
+
1394  private_frame_size;
+
1395 }
+
1396 
+
1397 Metadata::Metadata() {}
+
1398 Metadata::~Metadata() {}
+
1399 
+
1400 FourCC Metadata::BoxType() const {
+
1401  return FOURCC_meta;
+
1402 }
1403 
-
1404 bool DTSSpecific::ReadWriteInternal(BoxBuffer* buffer) {
-
1405  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
1406  buffer->ReadWriteUInt32(&sampling_frequency) &&
-
1407  buffer->ReadWriteUInt32(&max_bitrate) &&
-
1408  buffer->ReadWriteUInt32(&avg_bitrate) &&
-
1409  buffer->ReadWriteUInt8(&pcm_sample_depth));
-
1410 
-
1411  if (buffer->Reading()) {
-
1412  RCHECK(buffer->ReadWriteVector(&extra_data, buffer->BytesLeft()));
-
1413  } else {
-
1414  if (extra_data.empty()) {
-
1415  extra_data.assign(kDdtsExtraData,
-
1416  kDdtsExtraData + sizeof(kDdtsExtraData));
-
1417  }
-
1418  RCHECK(buffer->ReadWriteVector(&extra_data, extra_data.size()));
-
1419  }
-
1420  return true;
-
1421 }
-
1422 
-
1423 uint32_t DTSSpecific::ComputeSizeInternal() {
-
1424  // This box is optional. Skip it if not initialized.
-
1425  if (sampling_frequency == 0)
-
1426  return 0;
-
1427  return HeaderSize() + sizeof(sampling_frequency) + sizeof(max_bitrate) +
-
1428  sizeof(avg_bitrate) + sizeof(pcm_sample_depth) +
-
1429  sizeof(kDdtsExtraData);
-
1430 }
-
1431 
-
1432 AC3Specific::AC3Specific() {}
-
1433 AC3Specific::~AC3Specific() {}
-
1434 
-
1435 FourCC AC3Specific::BoxType() const { return FOURCC_dac3; }
+
1404 bool Metadata::ReadWriteInternal(BoxBuffer* buffer) {
+
1405  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
1406  buffer->PrepareChildren() &&
+
1407  buffer->ReadWriteChild(&handler) &&
+
1408  buffer->TryReadWriteChild(&id3v2));
+
1409  return true;
+
1410 }
+
1411 
+
1412 uint32_t Metadata::ComputeSizeInternal() {
+
1413  uint32_t id3v2_size = id3v2.ComputeSize();
+
1414  // Skip metadata box generation if there is no metadata box.
+
1415  return id3v2_size == 0 ? 0
+
1416  : HeaderSize() + handler.ComputeSize() + id3v2_size;
+
1417 }
+
1418 
+
1419 CodecConfigurationRecord::CodecConfigurationRecord() : box_type(FOURCC_NULL) {}
+
1420 CodecConfigurationRecord::~CodecConfigurationRecord() {}
+ +
1422  // CodecConfigurationRecord should be parsed according to format recovered in
+
1423  // VideoSampleEntry. |box_type| is determined dynamically there.
+
1424  return box_type;
+
1425 }
+
1426 
+
1427 bool CodecConfigurationRecord::ReadWriteInternal(BoxBuffer* buffer) {
+
1428  RCHECK(ReadWriteHeaderInternal(buffer));
+
1429  if (buffer->Reading()) {
+
1430  RCHECK(buffer->ReadWriteVector(&data, buffer->BytesLeft()));
+
1431  } else {
+
1432  RCHECK(buffer->ReadWriteVector(&data, data.size()));
+
1433  }
+
1434  return true;
+
1435 }
1436 
-
1437 bool AC3Specific::ReadWriteInternal(BoxBuffer* buffer) {
-
1438  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
1439  buffer->ReadWriteVector(
-
1440  &data, buffer->Reading() ? buffer->BytesLeft() : data.size()));
-
1441  return true;
-
1442 }
-
1443 
-
1444 uint32_t AC3Specific::ComputeSizeInternal() {
-
1445  // This box is optional. Skip it if not initialized.
-
1446  if (data.empty())
-
1447  return 0;
-
1448  return HeaderSize() + data.size();
-
1449 }
-
1450 
-
1451 EC3Specific::EC3Specific() {}
-
1452 EC3Specific::~EC3Specific() {}
+
1437 uint32_t CodecConfigurationRecord::ComputeSizeInternal() {
+
1438  if (data.empty())
+
1439  return 0;
+
1440  return HeaderSize() + data.size();
+
1441 }
+
1442 
+
1443 PixelAspectRatio::PixelAspectRatio() : h_spacing(0), v_spacing(0) {}
+
1444 PixelAspectRatio::~PixelAspectRatio() {}
+
1445 FourCC PixelAspectRatio::BoxType() const { return FOURCC_pasp; }
+
1446 
+
1447 bool PixelAspectRatio::ReadWriteInternal(BoxBuffer* buffer) {
+
1448  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
1449  buffer->ReadWriteUInt32(&h_spacing) &&
+
1450  buffer->ReadWriteUInt32(&v_spacing));
+
1451  return true;
+
1452 }
1453 
-
1454 FourCC EC3Specific::BoxType() const { return FOURCC_dec3; }
-
1455 
-
1456 bool EC3Specific::ReadWriteInternal(BoxBuffer* buffer) {
-
1457  RCHECK(ReadWriteHeaderInternal(buffer));
-
1458  uint32_t size = buffer->Reading() ? buffer->BytesLeft() : data.size();
-
1459  RCHECK(buffer->ReadWriteVector(&data, size));
-
1460  return true;
+
1454 uint32_t PixelAspectRatio::ComputeSizeInternal() {
+
1455  // This box is optional. Skip it if it is not initialized.
+
1456  if (h_spacing == 0 && v_spacing == 0)
+
1457  return 0;
+
1458  // Both values must be positive.
+
1459  DCHECK(h_spacing != 0 && v_spacing != 0);
+
1460  return HeaderSize() + sizeof(h_spacing) + sizeof(v_spacing);
1461 }
1462 
-
1463 uint32_t EC3Specific::ComputeSizeInternal() {
-
1464  // This box is optional. Skip it if not initialized.
-
1465  if (data.empty())
-
1466  return 0;
-
1467  return HeaderSize() + data.size();
-
1468 }
-
1469 
-
1470 AudioSampleEntry::AudioSampleEntry()
-
1471  : format(FOURCC_NULL),
-
1472  data_reference_index(1),
-
1473  channelcount(2),
-
1474  samplesize(16),
-
1475  samplerate(0) {}
-
1476 
-
1477 AudioSampleEntry::~AudioSampleEntry() {}
-
1478 
- -
1480  if (format == FOURCC_NULL) {
-
1481  LOG(ERROR) << "AudioSampleEntry should be parsed according to the "
-
1482  << "handler type recovered in its Media ancestor.";
-
1483  }
-
1484  return format;
-
1485 }
-
1486 
-
1487 bool AudioSampleEntry::ReadWriteInternal(BoxBuffer* buffer) {
-
1488  if (buffer->Reading()) {
-
1489  DCHECK(buffer->reader());
-
1490  format = buffer->reader()->type();
-
1491  } else {
-
1492  RCHECK(ReadWriteHeaderInternal(buffer));
-
1493  }
-
1494 
-
1495  // Convert from integer to 16.16 fixed point for writing.
-
1496  samplerate <<= 16;
-
1497  RCHECK(buffer->IgnoreBytes(6) && // reserved.
-
1498  buffer->ReadWriteUInt16(&data_reference_index) &&
-
1499  buffer->IgnoreBytes(8) && // reserved.
-
1500  buffer->ReadWriteUInt16(&channelcount) &&
-
1501  buffer->ReadWriteUInt16(&samplesize) &&
-
1502  buffer->IgnoreBytes(4) && // predefined.
-
1503  buffer->ReadWriteUInt32(&samplerate));
-
1504  // Convert from 16.16 fixed point to integer.
-
1505  samplerate >>= 16;
-
1506 
-
1507  RCHECK(buffer->PrepareChildren());
-
1508  if (format == FOURCC_enca)
-
1509  RCHECK(buffer->ReadWriteChild(&sinf));
-
1510 
-
1511  RCHECK(buffer->TryReadWriteChild(&esds));
-
1512  RCHECK(buffer->TryReadWriteChild(&ddts));
-
1513  RCHECK(buffer->TryReadWriteChild(&dac3));
-
1514  RCHECK(buffer->TryReadWriteChild(&dec3));
-
1515  return true;
-
1516 }
-
1517 
-
1518 uint32_t AudioSampleEntry::ComputeSizeInternal() {
-
1519  return HeaderSize() + sizeof(data_reference_index) + sizeof(channelcount) +
-
1520  sizeof(samplesize) + sizeof(samplerate) + sinf.ComputeSize() +
-
1521  esds.ComputeSize() + ddts.ComputeSize() + dac3.ComputeSize() +
-
1522  dec3.ComputeSize() +
-
1523  6 + 8 + // 6 + 8 bytes reserved.
-
1524  4; // 4 bytes predefined.
-
1525 }
+
1463 VideoSampleEntry::VideoSampleEntry()
+
1464  : format(FOURCC_NULL), data_reference_index(1), width(0), height(0) {}
+
1465 
+
1466 VideoSampleEntry::~VideoSampleEntry() {}
+ +
1468  if (format == FOURCC_NULL) {
+
1469  LOG(ERROR) << "VideoSampleEntry should be parsed according to the "
+
1470  << "handler type recovered in its Media ancestor.";
+
1471  }
+
1472  return format;
+
1473 }
+
1474 
+
1475 bool VideoSampleEntry::ReadWriteInternal(BoxBuffer* buffer) {
+
1476  std::vector<uint8_t> compressor_name;
+
1477  if (buffer->Reading()) {
+
1478  DCHECK(buffer->reader());
+
1479  format = buffer->reader()->type();
+
1480  } else {
+
1481  RCHECK(ReadWriteHeaderInternal(buffer));
+
1482 
+
1483  const FourCC actual_format = GetActualFormat();
+
1484  switch (actual_format) {
+
1485  case FOURCC_avc1:
+
1486  compressor_name.assign(
+
1487  kAvcCompressorName,
+
1488  kAvcCompressorName + arraysize(kAvcCompressorName));
+
1489  break;
+
1490  case FOURCC_hev1:
+
1491  case FOURCC_hvc1:
+
1492  compressor_name.assign(
+
1493  kHevcCompressorName,
+
1494  kHevcCompressorName + arraysize(kHevcCompressorName));
+
1495  break;
+
1496  case FOURCC_vp08:
+
1497  case FOURCC_vp09:
+
1498  case FOURCC_vp10:
+
1499  compressor_name.assign(
+
1500  kVpcCompressorName,
+
1501  kVpcCompressorName + arraysize(kVpcCompressorName));
+
1502  break;
+
1503  default:
+
1504  LOG(ERROR) << FourCCToString(actual_format) << " is not supported.";
+
1505  return false;
+
1506  }
+
1507  compressor_name.resize(kCompressorNameSize);
+
1508  }
+
1509 
+
1510  uint32_t video_resolution = kVideoResolution;
+
1511  uint16_t video_frame_count = kVideoFrameCount;
+
1512  uint16_t video_depth = kVideoDepth;
+
1513  int16_t predefined = -1;
+
1514  RCHECK(buffer->IgnoreBytes(6) && // reserved.
+
1515  buffer->ReadWriteUInt16(&data_reference_index) &&
+
1516  buffer->IgnoreBytes(16) && // predefined 0.
+
1517  buffer->ReadWriteUInt16(&width) &&
+
1518  buffer->ReadWriteUInt16(&height) &&
+
1519  buffer->ReadWriteUInt32(&video_resolution) &&
+
1520  buffer->ReadWriteUInt32(&video_resolution) &&
+
1521  buffer->IgnoreBytes(4) && // reserved.
+
1522  buffer->ReadWriteUInt16(&video_frame_count) &&
+
1523  buffer->ReadWriteVector(&compressor_name, kCompressorNameSize) &&
+
1524  buffer->ReadWriteUInt16(&video_depth) &&
+
1525  buffer->ReadWriteInt16(&predefined));
1526 
-
1527 WebVTTConfigurationBox::WebVTTConfigurationBox() {}
-
1528 WebVTTConfigurationBox::~WebVTTConfigurationBox() {}
-
1529 
- -
1531  return FOURCC_vttC;
-
1532 }
-
1533 
-
1534 bool WebVTTConfigurationBox::ReadWriteInternal(BoxBuffer* buffer) {
-
1535  RCHECK(ReadWriteHeaderInternal(buffer));
-
1536  return buffer->ReadWriteString(
-
1537  &config,
-
1538  buffer->Reading() ? buffer->BytesLeft() : config.size());
-
1539 }
-
1540 
-
1541 uint32_t WebVTTConfigurationBox::ComputeSizeInternal() {
-
1542  return HeaderSize() + config.size();
-
1543 }
-
1544 
-
1545 WebVTTSourceLabelBox::WebVTTSourceLabelBox() {}
-
1546 WebVTTSourceLabelBox::~WebVTTSourceLabelBox() {}
-
1547 
- -
1549  return FOURCC_vlab;
-
1550 }
-
1551 
-
1552 bool WebVTTSourceLabelBox::ReadWriteInternal(BoxBuffer* buffer) {
-
1553  RCHECK(ReadWriteHeaderInternal(buffer));
-
1554  return buffer->ReadWriteString(&source_label, buffer->Reading()
-
1555  ? buffer->BytesLeft()
-
1556  : source_label.size());
-
1557 }
-
1558 
-
1559 uint32_t WebVTTSourceLabelBox::ComputeSizeInternal() {
-
1560  if (source_label.empty())
-
1561  return 0;
-
1562  return HeaderSize() + source_label.size();
-
1563 }
-
1564 
-
1565 TextSampleEntry::TextSampleEntry() : format(FOURCC_NULL) {}
-
1566 TextSampleEntry::~TextSampleEntry() {}
+
1527  RCHECK(buffer->PrepareChildren());
+
1528 
+
1529  if (format == FOURCC_encv)
+
1530  RCHECK(buffer->ReadWriteChild(&sinf));
+
1531 
+
1532  const FourCC actual_format = GetActualFormat();
+
1533  switch (actual_format) {
+
1534  case FOURCC_avc1:
+
1535  codec_config_record.box_type = FOURCC_avcC;
+
1536  break;
+
1537  case FOURCC_hev1:
+
1538  case FOURCC_hvc1:
+
1539  codec_config_record.box_type = FOURCC_hvcC;
+
1540  break;
+
1541  case FOURCC_vp08:
+
1542  case FOURCC_vp09:
+
1543  case FOURCC_vp10:
+
1544  codec_config_record.box_type = FOURCC_vpcC;
+
1545  break;
+
1546  default:
+
1547  LOG(ERROR) << FourCCToString(actual_format) << " is not supported.";
+
1548  return false;
+
1549  }
+
1550  RCHECK(buffer->ReadWriteChild(&codec_config_record));
+
1551  RCHECK(buffer->TryReadWriteChild(&pixel_aspect));
+
1552  return true;
+
1553 }
+
1554 
+
1555 uint32_t VideoSampleEntry::ComputeSizeInternal() {
+
1556  return HeaderSize() + sizeof(data_reference_index) + sizeof(width) +
+
1557  sizeof(height) + sizeof(kVideoResolution) * 2 +
+
1558  sizeof(kVideoFrameCount) + sizeof(kVideoDepth) +
+
1559  pixel_aspect.ComputeSize() + sinf.ComputeSize() +
+
1560  codec_config_record.ComputeSize() + kCompressorNameSize + 6 + 4 + 16 +
+
1561  2; // 6 + 4 bytes reserved, 16 + 2 bytes predefined.
+
1562 }
+
1563 
+
1564 ElementaryStreamDescriptor::ElementaryStreamDescriptor() {}
+
1565 ElementaryStreamDescriptor::~ElementaryStreamDescriptor() {}
+
1566 FourCC ElementaryStreamDescriptor::BoxType() const { return FOURCC_esds; }
1567 
- -
1569  if (format == FOURCC_NULL) {
-
1570  LOG(ERROR) << "TextSampleEntry should be parsed according to the "
-
1571  << "handler type recovered in its Media ancestor.";
-
1572  }
-
1573  return format;
-
1574 }
-
1575 
-
1576 bool TextSampleEntry::ReadWriteInternal(BoxBuffer* buffer) {
-
1577  if (buffer->Reading()) {
-
1578  DCHECK(buffer->reader());
-
1579  format = buffer->reader()->type();
-
1580  } else {
-
1581  RCHECK(ReadWriteHeaderInternal(buffer));
-
1582  }
-
1583  RCHECK(buffer->IgnoreBytes(6) && // reserved for SampleEntry.
-
1584  buffer->ReadWriteUInt16(&data_reference_index));
-
1585 
-
1586  if (format == FOURCC_wvtt) {
-
1587  // TODO(rkuroiwa): Handle the optional MPEG4BitRateBox.
-
1588  RCHECK(buffer->PrepareChildren() &&
-
1589  buffer->ReadWriteChild(&config) &&
-
1590  buffer->ReadWriteChild(&label));
-
1591  }
-
1592  return true;
-
1593 }
-
1594 
-
1595 uint32_t TextSampleEntry::ComputeSizeInternal() {
-
1596  // 6 for the (anonymous) reserved bytes for SampleEntry class.
-
1597  return HeaderSize() + 6 + sizeof(data_reference_index) +
-
1598  config.ComputeSize() + label.ComputeSize();
-
1599 }
-
1600 
-
1601 MediaHeader::MediaHeader()
-
1602  : creation_time(0), modification_time(0), timescale(0), duration(0) {}
-
1603 MediaHeader::~MediaHeader() {}
-
1604 FourCC MediaHeader::BoxType() const { return FOURCC_mdhd; }
-
1605 
-
1606 bool MediaHeader::ReadWriteInternal(BoxBuffer* buffer) {
-
1607  RCHECK(ReadWriteHeaderInternal(buffer));
-
1608 
-
1609  uint8_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
-
1610  RCHECK(buffer->ReadWriteUInt64NBytes(&creation_time, num_bytes) &&
-
1611  buffer->ReadWriteUInt64NBytes(&modification_time, num_bytes) &&
-
1612  buffer->ReadWriteUInt32(&timescale) &&
-
1613  buffer->ReadWriteUInt64NBytes(&duration, num_bytes) &&
-
1614  language.ReadWrite(buffer) &&
-
1615  buffer->IgnoreBytes(2)); // predefined.
+
1568 bool ElementaryStreamDescriptor::ReadWriteInternal(BoxBuffer* buffer) {
+
1569  RCHECK(ReadWriteHeaderInternal(buffer));
+
1570  if (buffer->Reading()) {
+
1571  std::vector<uint8_t> data;
+
1572  RCHECK(buffer->ReadWriteVector(&data, buffer->BytesLeft()));
+
1573  RCHECK(es_descriptor.Parse(data));
+
1574  if (es_descriptor.IsAAC()) {
+
1575  RCHECK(aac_audio_specific_config.Parse(
+
1576  es_descriptor.decoder_specific_info()));
+
1577  }
+
1578  } else {
+
1579  DCHECK(buffer->writer());
+
1580  es_descriptor.Write(buffer->writer());
+
1581  }
+
1582  return true;
+
1583 }
+
1584 
+
1585 uint32_t ElementaryStreamDescriptor::ComputeSizeInternal() {
+
1586  // This box is optional. Skip it if not initialized.
+
1587  if (es_descriptor.object_type() == kForbidden)
+
1588  return 0;
+
1589  return HeaderSize() + es_descriptor.ComputeSize();
+
1590 }
+
1591 
+
1592 DTSSpecific::DTSSpecific()
+
1593  : sampling_frequency(0),
+
1594  max_bitrate(0),
+
1595  avg_bitrate(0),
+
1596  pcm_sample_depth(0) {}
+
1597 DTSSpecific::~DTSSpecific() {}
+
1598 FourCC DTSSpecific::BoxType() const { return FOURCC_ddts; }
+
1599 
+
1600 bool DTSSpecific::ReadWriteInternal(BoxBuffer* buffer) {
+
1601  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
1602  buffer->ReadWriteUInt32(&sampling_frequency) &&
+
1603  buffer->ReadWriteUInt32(&max_bitrate) &&
+
1604  buffer->ReadWriteUInt32(&avg_bitrate) &&
+
1605  buffer->ReadWriteUInt8(&pcm_sample_depth));
+
1606 
+
1607  if (buffer->Reading()) {
+
1608  RCHECK(buffer->ReadWriteVector(&extra_data, buffer->BytesLeft()));
+
1609  } else {
+
1610  if (extra_data.empty()) {
+
1611  extra_data.assign(kDdtsExtraData,
+
1612  kDdtsExtraData + sizeof(kDdtsExtraData));
+
1613  }
+
1614  RCHECK(buffer->ReadWriteVector(&extra_data, extra_data.size()));
+
1615  }
1616  return true;
1617 }
1618 
-
1619 uint32_t MediaHeader::ComputeSizeInternal() {
-
1620  version = IsFitIn32Bits(creation_time, modification_time, duration) ? 0 : 1;
-
1621  return HeaderSize() + sizeof(timescale) +
-
1622  sizeof(uint32_t) * (1 + version) * 3 + language.ComputeSize() +
-
1623  2; // 2 bytes predefined.
-
1624 }
-
1625 
-
1626 VideoMediaHeader::VideoMediaHeader()
-
1627  : graphicsmode(0), opcolor_red(0), opcolor_green(0), opcolor_blue(0) {
-
1628  const uint32_t kVideoMediaHeaderFlags = 1;
-
1629  flags = kVideoMediaHeaderFlags;
-
1630 }
-
1631 VideoMediaHeader::~VideoMediaHeader() {}
-
1632 FourCC VideoMediaHeader::BoxType() const { return FOURCC_vmhd; }
-
1633 bool VideoMediaHeader::ReadWriteInternal(BoxBuffer* buffer) {
-
1634  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
1635  buffer->ReadWriteUInt16(&graphicsmode) &&
-
1636  buffer->ReadWriteUInt16(&opcolor_red) &&
-
1637  buffer->ReadWriteUInt16(&opcolor_green) &&
-
1638  buffer->ReadWriteUInt16(&opcolor_blue));
-
1639  return true;
-
1640 }
-
1641 
-
1642 uint32_t VideoMediaHeader::ComputeSizeInternal() {
-
1643  return HeaderSize() + sizeof(graphicsmode) + sizeof(opcolor_red) +
-
1644  sizeof(opcolor_green) + sizeof(opcolor_blue);
+
1619 uint32_t DTSSpecific::ComputeSizeInternal() {
+
1620  // This box is optional. Skip it if not initialized.
+
1621  if (sampling_frequency == 0)
+
1622  return 0;
+
1623  return HeaderSize() + sizeof(sampling_frequency) + sizeof(max_bitrate) +
+
1624  sizeof(avg_bitrate) + sizeof(pcm_sample_depth) +
+
1625  sizeof(kDdtsExtraData);
+
1626 }
+
1627 
+
1628 AC3Specific::AC3Specific() {}
+
1629 AC3Specific::~AC3Specific() {}
+
1630 
+
1631 FourCC AC3Specific::BoxType() const { return FOURCC_dac3; }
+
1632 
+
1633 bool AC3Specific::ReadWriteInternal(BoxBuffer* buffer) {
+
1634  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
1635  buffer->ReadWriteVector(
+
1636  &data, buffer->Reading() ? buffer->BytesLeft() : data.size()));
+
1637  return true;
+
1638 }
+
1639 
+
1640 uint32_t AC3Specific::ComputeSizeInternal() {
+
1641  // This box is optional. Skip it if not initialized.
+
1642  if (data.empty())
+
1643  return 0;
+
1644  return HeaderSize() + data.size();
1645 }
1646 
-
1647 SoundMediaHeader::SoundMediaHeader() : balance(0) {}
-
1648 SoundMediaHeader::~SoundMediaHeader() {}
-
1649 FourCC SoundMediaHeader::BoxType() const { return FOURCC_smhd; }
-
1650 bool SoundMediaHeader::ReadWriteInternal(BoxBuffer* buffer) {
-
1651  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
1652  buffer->ReadWriteUInt16(&balance) &&
-
1653  buffer->IgnoreBytes(2)); // reserved.
-
1654  return true;
-
1655 }
-
1656 
-
1657 uint32_t SoundMediaHeader::ComputeSizeInternal() {
-
1658  return HeaderSize() + sizeof(balance) + sizeof(uint16_t);
-
1659 }
-
1660 
-
1661 SubtitleMediaHeader::SubtitleMediaHeader() {}
-
1662 SubtitleMediaHeader::~SubtitleMediaHeader() {}
-
1663 
-
1664 FourCC SubtitleMediaHeader::BoxType() const { return FOURCC_sthd; }
+
1647 EC3Specific::EC3Specific() {}
+
1648 EC3Specific::~EC3Specific() {}
+
1649 
+
1650 FourCC EC3Specific::BoxType() const { return FOURCC_dec3; }
+
1651 
+
1652 bool EC3Specific::ReadWriteInternal(BoxBuffer* buffer) {
+
1653  RCHECK(ReadWriteHeaderInternal(buffer));
+
1654  uint32_t size = buffer->Reading() ? buffer->BytesLeft() : data.size();
+
1655  RCHECK(buffer->ReadWriteVector(&data, size));
+
1656  return true;
+
1657 }
+
1658 
+
1659 uint32_t EC3Specific::ComputeSizeInternal() {
+
1660  // This box is optional. Skip it if not initialized.
+
1661  if (data.empty())
+
1662  return 0;
+
1663  return HeaderSize() + data.size();
+
1664 }
1665 
-
1666 bool SubtitleMediaHeader::ReadWriteInternal(BoxBuffer* buffer) {
-
1667  return ReadWriteHeaderInternal(buffer);
-
1668 }
-
1669 
-
1670 uint32_t SubtitleMediaHeader::ComputeSizeInternal() {
-
1671  return HeaderSize();
-
1672 }
-
1673 
-
1674 DataEntryUrl::DataEntryUrl() {
-
1675  const uint32_t kDataEntryUrlFlags = 1;
-
1676  flags = kDataEntryUrlFlags;
-
1677 }
-
1678 DataEntryUrl::~DataEntryUrl() {}
-
1679 FourCC DataEntryUrl::BoxType() const { return FOURCC_url; }
-
1680 bool DataEntryUrl::ReadWriteInternal(BoxBuffer* buffer) {
-
1681  RCHECK(ReadWriteHeaderInternal(buffer));
-
1682  if (buffer->Reading()) {
-
1683  RCHECK(buffer->ReadWriteVector(&location, buffer->BytesLeft()));
-
1684  } else {
-
1685  RCHECK(buffer->ReadWriteVector(&location, location.size()));
-
1686  }
-
1687  return true;
-
1688 }
-
1689 
-
1690 uint32_t DataEntryUrl::ComputeSizeInternal() {
-
1691  return HeaderSize() + location.size();
-
1692 }
-
1693 
-
1694 DataReference::DataReference() {
-
1695  // Default 1 entry.
-
1696  data_entry.resize(1);
-
1697 }
-
1698 DataReference::~DataReference() {}
-
1699 FourCC DataReference::BoxType() const { return FOURCC_dref; }
-
1700 bool DataReference::ReadWriteInternal(BoxBuffer* buffer) {
-
1701  uint32_t entry_count = data_entry.size();
-
1702  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
1703  buffer->ReadWriteUInt32(&entry_count));
-
1704  data_entry.resize(entry_count);
-
1705  RCHECK(buffer->PrepareChildren());
-
1706  for (uint32_t i = 0; i < entry_count; ++i)
-
1707  RCHECK(buffer->ReadWriteChild(&data_entry[i]));
-
1708  return true;
-
1709 }
-
1710 
-
1711 uint32_t DataReference::ComputeSizeInternal() {
-
1712  uint32_t count = data_entry.size();
-
1713  uint32_t box_size = HeaderSize() + sizeof(count);
-
1714  for (uint32_t i = 0; i < count; ++i)
-
1715  box_size += data_entry[i].ComputeSize();
-
1716  return box_size;
-
1717 }
-
1718 
-
1719 DataInformation::DataInformation() {}
-
1720 DataInformation::~DataInformation() {}
-
1721 FourCC DataInformation::BoxType() const { return FOURCC_dinf; }
-
1722 
-
1723 bool DataInformation::ReadWriteInternal(BoxBuffer* buffer) {
-
1724  return ReadWriteHeaderInternal(buffer) &&
-
1725  buffer->PrepareChildren() &&
-
1726  buffer->ReadWriteChild(&dref);
-
1727 }
-
1728 
-
1729 uint32_t DataInformation::ComputeSizeInternal() {
-
1730  return HeaderSize() + dref.ComputeSize();
-
1731 }
-
1732 
-
1733 MediaInformation::MediaInformation() {}
-
1734 MediaInformation::~MediaInformation() {}
-
1735 FourCC MediaInformation::BoxType() const { return FOURCC_minf; }
-
1736 
-
1737 bool MediaInformation::ReadWriteInternal(BoxBuffer* buffer) {
-
1738  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
1739  buffer->PrepareChildren() &&
-
1740  buffer->ReadWriteChild(&dinf) &&
-
1741  buffer->ReadWriteChild(&sample_table));
-
1742  switch (sample_table.description.type) {
-
1743  case kVideo:
-
1744  RCHECK(buffer->ReadWriteChild(&vmhd));
-
1745  break;
-
1746  case kAudio:
-
1747  RCHECK(buffer->ReadWriteChild(&smhd));
-
1748  break;
-
1749  case kText:
-
1750  RCHECK(buffer->TryReadWriteChild(&sthd));
-
1751  break;
-
1752  default:
-
1753  NOTIMPLEMENTED();
-
1754  }
-
1755  // Hint is not supported for now.
-
1756  return true;
-
1757 }
-
1758 
-
1759 uint32_t MediaInformation::ComputeSizeInternal() {
-
1760  uint32_t box_size =
-
1761  HeaderSize() + dinf.ComputeSize() + sample_table.ComputeSize();
-
1762  switch (sample_table.description.type) {
-
1763  case kVideo:
-
1764  box_size += vmhd.ComputeSize();
-
1765  break;
-
1766  case kAudio:
-
1767  box_size += smhd.ComputeSize();
-
1768  break;
-
1769  case kText:
-
1770  box_size += sthd.ComputeSize();
-
1771  break;
-
1772  default:
-
1773  NOTIMPLEMENTED();
-
1774  }
-
1775  return box_size;
-
1776 }
+
1666 OpusSpecific::OpusSpecific() : preskip(0) {}
+
1667 OpusSpecific::~OpusSpecific() {}
+
1668 
+
1669 FourCC OpusSpecific::BoxType() const { return FOURCC_dOps; }
+
1670 
+
1671 bool OpusSpecific::ReadWriteInternal(BoxBuffer* buffer) {
+
1672  RCHECK(ReadWriteHeaderInternal(buffer));
+
1673  if (buffer->Reading()) {
+
1674  std::vector<uint8_t> data;
+
1675  const int kMinOpusSpecificBoxDataSize = 11;
+
1676  RCHECK(buffer->BytesLeft() >= kMinOpusSpecificBoxDataSize);
+
1677  RCHECK(buffer->ReadWriteVector(&data, buffer->BytesLeft()));
+
1678  preskip = data[2] + (data[3] << 8);
+
1679 
+
1680  // https://tools.ietf.org/html/draft-ietf-codec-oggopus-06#section-5
+
1681  BufferWriter writer;
+
1682  writer.AppendInt(FOURCC_Opus);
+
1683  writer.AppendInt(FOURCC_Head);
+
1684  // The version must always be 1.
+
1685  const uint8_t kOpusIdentificationHeaderVersion = 1;
+
1686  data[0] = kOpusIdentificationHeaderVersion;
+
1687  writer.AppendVector(data);
+
1688  writer.SwapBuffer(&opus_identification_header);
+
1689  } else {
+
1690  // https://tools.ietf.org/html/draft-ietf-codec-oggopus-06#section-5
+
1691  // The first 8 bytes is "magic signature".
+
1692  const size_t kOpusMagicSignatureSize = 8u;
+
1693  DCHECK_GT(opus_identification_header.size(), kOpusMagicSignatureSize);
+
1694  // https://www.opus-codec.org/docs/opus_in_isobmff.html
+
1695  // The version field shall be set to 0.
+
1696  const uint8_t kOpusSpecificBoxVersion = 0;
+
1697  buffer->writer()->AppendInt(kOpusSpecificBoxVersion);
+
1698  buffer->writer()->AppendArray(
+
1699  &opus_identification_header[kOpusMagicSignatureSize + 1],
+
1700  opus_identification_header.size() - kOpusMagicSignatureSize - 1);
+
1701  }
+
1702  return true;
+
1703 }
+
1704 
+
1705 uint32_t OpusSpecific::ComputeSizeInternal() {
+
1706  // This box is optional. Skip it if not initialized.
+
1707  if (opus_identification_header.empty())
+
1708  return 0;
+
1709  // https://tools.ietf.org/html/draft-ietf-codec-oggopus-06#section-5
+
1710  // The first 8 bytes is "magic signature".
+
1711  const size_t kOpusMagicSignatureSize = 8u;
+
1712  DCHECK_GT(opus_identification_header.size(), kOpusMagicSignatureSize);
+
1713  return HeaderSize() + opus_identification_header.size() -
+
1714  kOpusMagicSignatureSize;
+
1715 }
+
1716 
+
1717 AudioSampleEntry::AudioSampleEntry()
+
1718  : format(FOURCC_NULL),
+
1719  data_reference_index(1),
+
1720  channelcount(2),
+
1721  samplesize(16),
+
1722  samplerate(0) {}
+
1723 
+
1724 AudioSampleEntry::~AudioSampleEntry() {}
+
1725 
+ +
1727  if (format == FOURCC_NULL) {
+
1728  LOG(ERROR) << "AudioSampleEntry should be parsed according to the "
+
1729  << "handler type recovered in its Media ancestor.";
+
1730  }
+
1731  return format;
+
1732 }
+
1733 
+
1734 bool AudioSampleEntry::ReadWriteInternal(BoxBuffer* buffer) {
+
1735  if (buffer->Reading()) {
+
1736  DCHECK(buffer->reader());
+
1737  format = buffer->reader()->type();
+
1738  } else {
+
1739  RCHECK(ReadWriteHeaderInternal(buffer));
+
1740  }
+
1741 
+
1742  // Convert from integer to 16.16 fixed point for writing.
+
1743  samplerate <<= 16;
+
1744  RCHECK(buffer->IgnoreBytes(6) && // reserved.
+
1745  buffer->ReadWriteUInt16(&data_reference_index) &&
+
1746  buffer->IgnoreBytes(8) && // reserved.
+
1747  buffer->ReadWriteUInt16(&channelcount) &&
+
1748  buffer->ReadWriteUInt16(&samplesize) &&
+
1749  buffer->IgnoreBytes(4) && // predefined.
+
1750  buffer->ReadWriteUInt32(&samplerate));
+
1751  // Convert from 16.16 fixed point to integer.
+
1752  samplerate >>= 16;
+
1753 
+
1754  RCHECK(buffer->PrepareChildren());
+
1755  if (format == FOURCC_enca)
+
1756  RCHECK(buffer->ReadWriteChild(&sinf));
+
1757 
+
1758  RCHECK(buffer->TryReadWriteChild(&esds));
+
1759  RCHECK(buffer->TryReadWriteChild(&ddts));
+
1760  RCHECK(buffer->TryReadWriteChild(&dac3));
+
1761  RCHECK(buffer->TryReadWriteChild(&dec3));
+
1762  RCHECK(buffer->TryReadWriteChild(&dops));
+
1763  return true;
+
1764 }
+
1765 
+
1766 uint32_t AudioSampleEntry::ComputeSizeInternal() {
+
1767  return HeaderSize() + sizeof(data_reference_index) + sizeof(channelcount) +
+
1768  sizeof(samplesize) + sizeof(samplerate) + sinf.ComputeSize() +
+
1769  esds.ComputeSize() + ddts.ComputeSize() + dac3.ComputeSize() +
+
1770  dec3.ComputeSize() + dops.ComputeSize() +
+
1771  6 + 8 + // 6 + 8 bytes reserved.
+
1772  4; // 4 bytes predefined.
+
1773 }
+
1774 
+
1775 WebVTTConfigurationBox::WebVTTConfigurationBox() {}
+
1776 WebVTTConfigurationBox::~WebVTTConfigurationBox() {}
1777 
-
1778 Media::Media() {}
-
1779 Media::~Media() {}
-
1780 FourCC Media::BoxType() const { return FOURCC_mdia; }
+ +
1779  return FOURCC_vttC;
+
1780 }
1781 
-
1782 bool Media::ReadWriteInternal(BoxBuffer* buffer) {
-
1783  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
1784  buffer->PrepareChildren() &&
-
1785  buffer->ReadWriteChild(&header));
-
1786  if (buffer->Reading()) {
-
1787  RCHECK(buffer->ReadWriteChild(&handler));
-
1788  // Maddeningly, the HandlerReference box specifies how to parse the
-
1789  // SampleDescription box, making the latter the only box (of those that we
-
1790  // support) which cannot be parsed correctly on its own (or even with
-
1791  // information from its strict ancestor tree). We thus copy the handler type
-
1792  // to the sample description box *before* parsing it to provide this
-
1793  // information while parsing.
-
1794  information.sample_table.description.type =
-
1795  FourCCToTrackType(handler.handler_type);
-
1796  } else {
-
1797  handler.handler_type =
-
1798  TrackTypeToFourCC(information.sample_table.description.type);
-
1799  RCHECK(handler.handler_type != FOURCC_NULL);
-
1800  RCHECK(buffer->ReadWriteChild(&handler));
-
1801  }
-
1802  RCHECK(buffer->ReadWriteChild(&information));
-
1803  return true;
-
1804 }
-
1805 
-
1806 uint32_t Media::ComputeSizeInternal() {
-
1807  handler.handler_type =
-
1808  TrackTypeToFourCC(information.sample_table.description.type);
-
1809  return HeaderSize() + header.ComputeSize() + handler.ComputeSize() +
-
1810  information.ComputeSize();
+
1782 bool WebVTTConfigurationBox::ReadWriteInternal(BoxBuffer* buffer) {
+
1783  RCHECK(ReadWriteHeaderInternal(buffer));
+
1784  return buffer->ReadWriteString(
+
1785  &config,
+
1786  buffer->Reading() ? buffer->BytesLeft() : config.size());
+
1787 }
+
1788 
+
1789 uint32_t WebVTTConfigurationBox::ComputeSizeInternal() {
+
1790  return HeaderSize() + config.size();
+
1791 }
+
1792 
+
1793 WebVTTSourceLabelBox::WebVTTSourceLabelBox() {}
+
1794 WebVTTSourceLabelBox::~WebVTTSourceLabelBox() {}
+
1795 
+ +
1797  return FOURCC_vlab;
+
1798 }
+
1799 
+
1800 bool WebVTTSourceLabelBox::ReadWriteInternal(BoxBuffer* buffer) {
+
1801  RCHECK(ReadWriteHeaderInternal(buffer));
+
1802  return buffer->ReadWriteString(&source_label, buffer->Reading()
+
1803  ? buffer->BytesLeft()
+
1804  : source_label.size());
+
1805 }
+
1806 
+
1807 uint32_t WebVTTSourceLabelBox::ComputeSizeInternal() {
+
1808  if (source_label.empty())
+
1809  return 0;
+
1810  return HeaderSize() + source_label.size();
1811 }
1812 
-
1813 Track::Track() {}
-
1814 Track::~Track() {}
-
1815 FourCC Track::BoxType() const { return FOURCC_trak; }
-
1816 
-
1817 bool Track::ReadWriteInternal(BoxBuffer* buffer) {
-
1818  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
1819  buffer->PrepareChildren() &&
-
1820  buffer->ReadWriteChild(&header) &&
-
1821  buffer->ReadWriteChild(&media) &&
-
1822  buffer->TryReadWriteChild(&edit) &&
-
1823  buffer->TryReadWriteChild(&sample_encryption));
-
1824  return true;
-
1825 }
-
1826 
-
1827 uint32_t Track::ComputeSizeInternal() {
-
1828  return HeaderSize() + header.ComputeSize() + media.ComputeSize() +
-
1829  edit.ComputeSize();
-
1830 }
-
1831 
-
1832 MovieExtendsHeader::MovieExtendsHeader() : fragment_duration(0) {}
-
1833 MovieExtendsHeader::~MovieExtendsHeader() {}
-
1834 FourCC MovieExtendsHeader::BoxType() const { return FOURCC_mehd; }
-
1835 
-
1836 bool MovieExtendsHeader::ReadWriteInternal(BoxBuffer* buffer) {
-
1837  RCHECK(ReadWriteHeaderInternal(buffer));
-
1838  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
-
1839  RCHECK(buffer->ReadWriteUInt64NBytes(&fragment_duration, num_bytes));
+
1813 TextSampleEntry::TextSampleEntry() : format(FOURCC_NULL) {}
+
1814 TextSampleEntry::~TextSampleEntry() {}
+
1815 
+ +
1817  if (format == FOURCC_NULL) {
+
1818  LOG(ERROR) << "TextSampleEntry should be parsed according to the "
+
1819  << "handler type recovered in its Media ancestor.";
+
1820  }
+
1821  return format;
+
1822 }
+
1823 
+
1824 bool TextSampleEntry::ReadWriteInternal(BoxBuffer* buffer) {
+
1825  if (buffer->Reading()) {
+
1826  DCHECK(buffer->reader());
+
1827  format = buffer->reader()->type();
+
1828  } else {
+
1829  RCHECK(ReadWriteHeaderInternal(buffer));
+
1830  }
+
1831  RCHECK(buffer->IgnoreBytes(6) && // reserved for SampleEntry.
+
1832  buffer->ReadWriteUInt16(&data_reference_index));
+
1833 
+
1834  if (format == FOURCC_wvtt) {
+
1835  // TODO(rkuroiwa): Handle the optional MPEG4BitRateBox.
+
1836  RCHECK(buffer->PrepareChildren() &&
+
1837  buffer->ReadWriteChild(&config) &&
+
1838  buffer->ReadWriteChild(&label));
+
1839  }
1840  return true;
1841 }
1842 
-
1843 uint32_t MovieExtendsHeader::ComputeSizeInternal() {
-
1844  // This box is optional. Skip it if it is not used.
-
1845  if (fragment_duration == 0)
-
1846  return 0;
-
1847  version = IsFitIn32Bits(fragment_duration) ? 0 : 1;
-
1848  return HeaderSize() + sizeof(uint32_t) * (1 + version);
-
1849 }
-
1850 
-
1851 TrackExtends::TrackExtends()
-
1852  : track_id(0),
-
1853  default_sample_description_index(0),
-
1854  default_sample_duration(0),
-
1855  default_sample_size(0),
-
1856  default_sample_flags(0) {}
-
1857 TrackExtends::~TrackExtends() {}
-
1858 FourCC TrackExtends::BoxType() const { return FOURCC_trex; }
-
1859 
-
1860 bool TrackExtends::ReadWriteInternal(BoxBuffer* buffer) {
-
1861  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
1862  buffer->ReadWriteUInt32(&track_id) &&
-
1863  buffer->ReadWriteUInt32(&default_sample_description_index) &&
-
1864  buffer->ReadWriteUInt32(&default_sample_duration) &&
-
1865  buffer->ReadWriteUInt32(&default_sample_size) &&
-
1866  buffer->ReadWriteUInt32(&default_sample_flags));
-
1867  return true;
-
1868 }
-
1869 
-
1870 uint32_t TrackExtends::ComputeSizeInternal() {
-
1871  return HeaderSize() + sizeof(track_id) +
-
1872  sizeof(default_sample_description_index) +
-
1873  sizeof(default_sample_duration) + sizeof(default_sample_size) +
-
1874  sizeof(default_sample_flags);
-
1875 }
-
1876 
-
1877 MovieExtends::MovieExtends() {}
-
1878 MovieExtends::~MovieExtends() {}
-
1879 FourCC MovieExtends::BoxType() const { return FOURCC_mvex; }
-
1880 
-
1881 bool MovieExtends::ReadWriteInternal(BoxBuffer* buffer) {
-
1882  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
1883  buffer->PrepareChildren() &&
-
1884  buffer->TryReadWriteChild(&header));
-
1885  if (buffer->Reading()) {
-
1886  DCHECK(buffer->reader());
-
1887  RCHECK(buffer->reader()->ReadChildren(&tracks));
-
1888  } else {
-
1889  for (uint32_t i = 0; i < tracks.size(); ++i)
-
1890  RCHECK(buffer->ReadWriteChild(&tracks[i]));
-
1891  }
-
1892  return true;
+
1843 uint32_t TextSampleEntry::ComputeSizeInternal() {
+
1844  // 6 for the (anonymous) reserved bytes for SampleEntry class.
+
1845  return HeaderSize() + 6 + sizeof(data_reference_index) +
+
1846  config.ComputeSize() + label.ComputeSize();
+
1847 }
+
1848 
+
1849 MediaHeader::MediaHeader()
+
1850  : creation_time(0), modification_time(0), timescale(0), duration(0) {}
+
1851 MediaHeader::~MediaHeader() {}
+
1852 FourCC MediaHeader::BoxType() const { return FOURCC_mdhd; }
+
1853 
+
1854 bool MediaHeader::ReadWriteInternal(BoxBuffer* buffer) {
+
1855  RCHECK(ReadWriteHeaderInternal(buffer));
+
1856 
+
1857  uint8_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
+
1858  RCHECK(buffer->ReadWriteUInt64NBytes(&creation_time, num_bytes) &&
+
1859  buffer->ReadWriteUInt64NBytes(&modification_time, num_bytes) &&
+
1860  buffer->ReadWriteUInt32(&timescale) &&
+
1861  buffer->ReadWriteUInt64NBytes(&duration, num_bytes) &&
+
1862  language.ReadWrite(buffer) &&
+
1863  buffer->IgnoreBytes(2)); // predefined.
+
1864  return true;
+
1865 }
+
1866 
+
1867 uint32_t MediaHeader::ComputeSizeInternal() {
+
1868  version = IsFitIn32Bits(creation_time, modification_time, duration) ? 0 : 1;
+
1869  return HeaderSize() + sizeof(timescale) +
+
1870  sizeof(uint32_t) * (1 + version) * 3 + language.ComputeSize() +
+
1871  2; // 2 bytes predefined.
+
1872 }
+
1873 
+
1874 VideoMediaHeader::VideoMediaHeader()
+
1875  : graphicsmode(0), opcolor_red(0), opcolor_green(0), opcolor_blue(0) {
+
1876  const uint32_t kVideoMediaHeaderFlags = 1;
+
1877  flags = kVideoMediaHeaderFlags;
+
1878 }
+
1879 VideoMediaHeader::~VideoMediaHeader() {}
+
1880 FourCC VideoMediaHeader::BoxType() const { return FOURCC_vmhd; }
+
1881 bool VideoMediaHeader::ReadWriteInternal(BoxBuffer* buffer) {
+
1882  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
1883  buffer->ReadWriteUInt16(&graphicsmode) &&
+
1884  buffer->ReadWriteUInt16(&opcolor_red) &&
+
1885  buffer->ReadWriteUInt16(&opcolor_green) &&
+
1886  buffer->ReadWriteUInt16(&opcolor_blue));
+
1887  return true;
+
1888 }
+
1889 
+
1890 uint32_t VideoMediaHeader::ComputeSizeInternal() {
+
1891  return HeaderSize() + sizeof(graphicsmode) + sizeof(opcolor_red) +
+
1892  sizeof(opcolor_green) + sizeof(opcolor_blue);
1893 }
1894 
-
1895 uint32_t MovieExtends::ComputeSizeInternal() {
-
1896  // This box is optional. Skip it if it does not contain any track.
-
1897  if (tracks.size() == 0)
-
1898  return 0;
-
1899  uint32_t box_size = HeaderSize() + header.ComputeSize();
-
1900  for (uint32_t i = 0; i < tracks.size(); ++i)
-
1901  box_size += tracks[i].ComputeSize();
-
1902  return box_size;
+
1895 SoundMediaHeader::SoundMediaHeader() : balance(0) {}
+
1896 SoundMediaHeader::~SoundMediaHeader() {}
+
1897 FourCC SoundMediaHeader::BoxType() const { return FOURCC_smhd; }
+
1898 bool SoundMediaHeader::ReadWriteInternal(BoxBuffer* buffer) {
+
1899  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
1900  buffer->ReadWriteUInt16(&balance) &&
+
1901  buffer->IgnoreBytes(2)); // reserved.
+
1902  return true;
1903 }
1904 
-
1905 Movie::Movie() {}
-
1906 Movie::~Movie() {}
-
1907 FourCC Movie::BoxType() const { return FOURCC_moov; }
+
1905 uint32_t SoundMediaHeader::ComputeSizeInternal() {
+
1906  return HeaderSize() + sizeof(balance) + sizeof(uint16_t);
+
1907 }
1908 
-
1909 bool Movie::ReadWriteInternal(BoxBuffer* buffer) {
-
1910  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
1911  buffer->PrepareChildren() &&
-
1912  buffer->ReadWriteChild(&header) &&
-
1913  buffer->TryReadWriteChild(&metadata) &&
-
1914  buffer->TryReadWriteChild(&extends));
-
1915  if (buffer->Reading()) {
-
1916  BoxReader* reader = buffer->reader();
-
1917  DCHECK(reader);
-
1918  RCHECK(reader->ReadChildren(&tracks) &&
-
1919  reader->TryReadChildren(&pssh));
-
1920  } else {
-
1921  for (uint32_t i = 0; i < tracks.size(); ++i)
-
1922  RCHECK(buffer->ReadWriteChild(&tracks[i]));
-
1923  for (uint32_t i = 0; i < pssh.size(); ++i)
-
1924  RCHECK(buffer->ReadWriteChild(&pssh[i]));
-
1925  }
-
1926  return true;
-
1927 }
-
1928 
-
1929 uint32_t Movie::ComputeSizeInternal() {
-
1930  uint32_t box_size = HeaderSize() + header.ComputeSize() +
-
1931  metadata.ComputeSize() + extends.ComputeSize();
-
1932  for (uint32_t i = 0; i < tracks.size(); ++i)
-
1933  box_size += tracks[i].ComputeSize();
-
1934  for (uint32_t i = 0; i < pssh.size(); ++i)
-
1935  box_size += pssh[i].ComputeSize();
-
1936  return box_size;
-
1937 }
-
1938 
-
1939 TrackFragmentDecodeTime::TrackFragmentDecodeTime() : decode_time(0) {}
-
1940 TrackFragmentDecodeTime::~TrackFragmentDecodeTime() {}
-
1941 FourCC TrackFragmentDecodeTime::BoxType() const { return FOURCC_tfdt; }
-
1942 
-
1943 bool TrackFragmentDecodeTime::ReadWriteInternal(BoxBuffer* buffer) {
-
1944  RCHECK(ReadWriteHeaderInternal(buffer));
-
1945  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
-
1946  RCHECK(buffer->ReadWriteUInt64NBytes(&decode_time, num_bytes));
-
1947  return true;
-
1948 }
-
1949 
-
1950 uint32_t TrackFragmentDecodeTime::ComputeSizeInternal() {
-
1951  version = IsFitIn32Bits(decode_time) ? 0 : 1;
-
1952  return HeaderSize() + sizeof(uint32_t) * (1 + version);
-
1953 }
-
1954 
-
1955 MovieFragmentHeader::MovieFragmentHeader() : sequence_number(0) {}
-
1956 MovieFragmentHeader::~MovieFragmentHeader() {}
-
1957 FourCC MovieFragmentHeader::BoxType() const { return FOURCC_mfhd; }
+
1909 SubtitleMediaHeader::SubtitleMediaHeader() {}
+
1910 SubtitleMediaHeader::~SubtitleMediaHeader() {}
+
1911 
+
1912 FourCC SubtitleMediaHeader::BoxType() const { return FOURCC_sthd; }
+
1913 
+
1914 bool SubtitleMediaHeader::ReadWriteInternal(BoxBuffer* buffer) {
+
1915  return ReadWriteHeaderInternal(buffer);
+
1916 }
+
1917 
+
1918 uint32_t SubtitleMediaHeader::ComputeSizeInternal() {
+
1919  return HeaderSize();
+
1920 }
+
1921 
+
1922 DataEntryUrl::DataEntryUrl() {
+
1923  const uint32_t kDataEntryUrlFlags = 1;
+
1924  flags = kDataEntryUrlFlags;
+
1925 }
+
1926 DataEntryUrl::~DataEntryUrl() {}
+
1927 FourCC DataEntryUrl::BoxType() const { return FOURCC_url; }
+
1928 bool DataEntryUrl::ReadWriteInternal(BoxBuffer* buffer) {
+
1929  RCHECK(ReadWriteHeaderInternal(buffer));
+
1930  if (buffer->Reading()) {
+
1931  RCHECK(buffer->ReadWriteVector(&location, buffer->BytesLeft()));
+
1932  } else {
+
1933  RCHECK(buffer->ReadWriteVector(&location, location.size()));
+
1934  }
+
1935  return true;
+
1936 }
+
1937 
+
1938 uint32_t DataEntryUrl::ComputeSizeInternal() {
+
1939  return HeaderSize() + location.size();
+
1940 }
+
1941 
+
1942 DataReference::DataReference() {
+
1943  // Default 1 entry.
+
1944  data_entry.resize(1);
+
1945 }
+
1946 DataReference::~DataReference() {}
+
1947 FourCC DataReference::BoxType() const { return FOURCC_dref; }
+
1948 bool DataReference::ReadWriteInternal(BoxBuffer* buffer) {
+
1949  uint32_t entry_count = data_entry.size();
+
1950  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
1951  buffer->ReadWriteUInt32(&entry_count));
+
1952  data_entry.resize(entry_count);
+
1953  RCHECK(buffer->PrepareChildren());
+
1954  for (uint32_t i = 0; i < entry_count; ++i)
+
1955  RCHECK(buffer->ReadWriteChild(&data_entry[i]));
+
1956  return true;
+
1957 }
1958 
-
1959 bool MovieFragmentHeader::ReadWriteInternal(BoxBuffer* buffer) {
-
1960  return ReadWriteHeaderInternal(buffer) &&
-
1961  buffer->ReadWriteUInt32(&sequence_number);
-
1962 }
-
1963 
-
1964 uint32_t MovieFragmentHeader::ComputeSizeInternal() {
-
1965  return HeaderSize() + sizeof(sequence_number);
-
1966 }
-
1967 
-
1968 TrackFragmentHeader::TrackFragmentHeader()
-
1969  : track_id(0),
-
1970  sample_description_index(0),
-
1971  default_sample_duration(0),
-
1972  default_sample_size(0),
-
1973  default_sample_flags(0) {}
-
1974 
-
1975 TrackFragmentHeader::~TrackFragmentHeader() {}
-
1976 FourCC TrackFragmentHeader::BoxType() const { return FOURCC_tfhd; }
-
1977 
-
1978 bool TrackFragmentHeader::ReadWriteInternal(BoxBuffer* buffer) {
-
1979  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
1980  buffer->ReadWriteUInt32(&track_id));
-
1981 
-
1982  if (flags & kBaseDataOffsetPresentMask) {
-
1983  // MSE requires 'default-base-is-moof' to be set and
-
1984  // 'base-data-offset-present' not to be set. We omit these checks as some
-
1985  // valid files in the wild don't follow these rules, though they use moof as
-
1986  // base.
-
1987  uint64_t base_data_offset;
-
1988  RCHECK(buffer->ReadWriteUInt64(&base_data_offset));
-
1989  DLOG(WARNING) << "base-data-offset-present is not expected. Assumes "
-
1990  "default-base-is-moof.";
-
1991  }
-
1992 
-
1993  if (flags & kSampleDescriptionIndexPresentMask) {
-
1994  RCHECK(buffer->ReadWriteUInt32(&sample_description_index));
-
1995  } else if (buffer->Reading()) {
-
1996  sample_description_index = 0;
-
1997  }
-
1998 
-
1999  if (flags & kDefaultSampleDurationPresentMask) {
-
2000  RCHECK(buffer->ReadWriteUInt32(&default_sample_duration));
-
2001  } else if (buffer->Reading()) {
-
2002  default_sample_duration = 0;
-
2003  }
-
2004 
-
2005  if (flags & kDefaultSampleSizePresentMask) {
-
2006  RCHECK(buffer->ReadWriteUInt32(&default_sample_size));
-
2007  } else if (buffer->Reading()) {
-
2008  default_sample_size = 0;
-
2009  }
-
2010 
-
2011  if (flags & kDefaultSampleFlagsPresentMask)
-
2012  RCHECK(buffer->ReadWriteUInt32(&default_sample_flags));
-
2013  return true;
-
2014 }
-
2015 
-
2016 uint32_t TrackFragmentHeader::ComputeSizeInternal() {
-
2017  uint32_t box_size = HeaderSize() + sizeof(track_id);
-
2018  if (flags & kSampleDescriptionIndexPresentMask)
-
2019  box_size += sizeof(sample_description_index);
-
2020  if (flags & kDefaultSampleDurationPresentMask)
-
2021  box_size += sizeof(default_sample_duration);
-
2022  if (flags & kDefaultSampleSizePresentMask)
-
2023  box_size += sizeof(default_sample_size);
-
2024  if (flags & kDefaultSampleFlagsPresentMask)
-
2025  box_size += sizeof(default_sample_flags);
-
2026  return box_size;
-
2027 }
-
2028 
-
2029 TrackFragmentRun::TrackFragmentRun() : sample_count(0), data_offset(0) {}
-
2030 TrackFragmentRun::~TrackFragmentRun() {}
-
2031 FourCC TrackFragmentRun::BoxType() const { return FOURCC_trun; }
-
2032 
-
2033 bool TrackFragmentRun::ReadWriteInternal(BoxBuffer* buffer) {
-
2034  if (!buffer->Reading()) {
-
2035  // Determine whether version 0 or version 1 should be used.
-
2036  // Use version 0 if possible, use version 1 if there is a negative
-
2037  // sample_offset value.
-
2038  version = 0;
-
2039  if (flags & kSampleCompTimeOffsetsPresentMask) {
-
2040  for (uint32_t i = 0; i < sample_count; ++i) {
-
2041  if (sample_composition_time_offsets[i] < 0) {
-
2042  version = 1;
-
2043  break;
-
2044  }
-
2045  }
-
2046  }
-
2047  }
-
2048 
-
2049  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
2050  buffer->ReadWriteUInt32(&sample_count));
-
2051 
-
2052  bool data_offset_present = (flags & kDataOffsetPresentMask) != 0;
-
2053  bool first_sample_flags_present = (flags & kFirstSampleFlagsPresentMask) != 0;
-
2054  bool sample_duration_present = (flags & kSampleDurationPresentMask) != 0;
-
2055  bool sample_size_present = (flags & kSampleSizePresentMask) != 0;
-
2056  bool sample_flags_present = (flags & kSampleFlagsPresentMask) != 0;
-
2057  bool sample_composition_time_offsets_present =
-
2058  (flags & kSampleCompTimeOffsetsPresentMask) != 0;
-
2059 
-
2060  if (data_offset_present) {
-
2061  RCHECK(buffer->ReadWriteUInt32(&data_offset));
-
2062  } else {
-
2063  // NOTE: If the data-offset is not present, then the data for this run
-
2064  // starts immediately after the data of the previous run, or at the
-
2065  // base-data-offset defined by the track fragment header if this is the
-
2066  // first run in a track fragment. If the data-offset is present, it is
-
2067  // relative to the base-data-offset established in the track fragment
-
2068  // header.
-
2069  NOTIMPLEMENTED();
-
2070  }
-
2071 
-
2072  uint32_t first_sample_flags;
-
2073 
-
2074  if (buffer->Reading()) {
-
2075  if (first_sample_flags_present)
-
2076  RCHECK(buffer->ReadWriteUInt32(&first_sample_flags));
-
2077 
-
2078  if (sample_duration_present)
-
2079  sample_durations.resize(sample_count);
-
2080  if (sample_size_present)
-
2081  sample_sizes.resize(sample_count);
-
2082  if (sample_flags_present)
-
2083  sample_flags.resize(sample_count);
-
2084  if (sample_composition_time_offsets_present)
-
2085  sample_composition_time_offsets.resize(sample_count);
-
2086  } else {
-
2087  if (first_sample_flags_present) {
-
2088  first_sample_flags = sample_flags[0];
-
2089  DCHECK(sample_flags.size() == 1);
-
2090  RCHECK(buffer->ReadWriteUInt32(&first_sample_flags));
-
2091  }
-
2092 
-
2093  if (sample_duration_present)
-
2094  DCHECK(sample_durations.size() == sample_count);
-
2095  if (sample_size_present)
-
2096  DCHECK(sample_sizes.size() == sample_count);
-
2097  if (sample_flags_present)
-
2098  DCHECK(sample_flags.size() == sample_count);
-
2099  if (sample_composition_time_offsets_present)
-
2100  DCHECK(sample_composition_time_offsets.size() == sample_count);
-
2101  }
-
2102 
-
2103  for (uint32_t i = 0; i < sample_count; ++i) {
-
2104  if (sample_duration_present)
-
2105  RCHECK(buffer->ReadWriteUInt32(&sample_durations[i]));
-
2106  if (sample_size_present)
-
2107  RCHECK(buffer->ReadWriteUInt32(&sample_sizes[i]));
-
2108  if (sample_flags_present)
-
2109  RCHECK(buffer->ReadWriteUInt32(&sample_flags[i]));
-
2110 
-
2111  if (sample_composition_time_offsets_present) {
-
2112  if (version == 0) {
-
2113  uint32_t sample_offset = sample_composition_time_offsets[i];
-
2114  RCHECK(buffer->ReadWriteUInt32(&sample_offset));
-
2115  sample_composition_time_offsets[i] = sample_offset;
-
2116  } else {
-
2117  int32_t sample_offset = sample_composition_time_offsets[i];
-
2118  RCHECK(buffer->ReadWriteInt32(&sample_offset));
-
2119  sample_composition_time_offsets[i] = sample_offset;
-
2120  }
-
2121  }
-
2122  }
-
2123 
-
2124  if (buffer->Reading()) {
-
2125  if (first_sample_flags_present) {
-
2126  if (sample_flags.size() == 0) {
-
2127  sample_flags.push_back(first_sample_flags);
-
2128  } else {
-
2129  sample_flags[0] = first_sample_flags;
-
2130  }
-
2131  }
-
2132  }
-
2133  return true;
-
2134 }
-
2135 
-
2136 uint32_t TrackFragmentRun::ComputeSizeInternal() {
-
2137  uint32_t box_size = HeaderSize() + sizeof(sample_count);
-
2138  if (flags & kDataOffsetPresentMask)
-
2139  box_size += sizeof(data_offset);
-
2140  if (flags & kFirstSampleFlagsPresentMask)
-
2141  box_size += sizeof(uint32_t);
-
2142  uint32_t fields = (flags & kSampleDurationPresentMask ? 1 : 0) +
-
2143  (flags & kSampleSizePresentMask ? 1 : 0) +
-
2144  (flags & kSampleFlagsPresentMask ? 1 : 0) +
-
2145  (flags & kSampleCompTimeOffsetsPresentMask ? 1 : 0);
-
2146  box_size += fields * sizeof(uint32_t) * sample_count;
-
2147  return box_size;
-
2148 }
-
2149 
-
2150 SampleToGroup::SampleToGroup() : grouping_type(0), grouping_type_parameter(0) {}
-
2151 SampleToGroup::~SampleToGroup() {}
-
2152 FourCC SampleToGroup::BoxType() const { return FOURCC_sbgp; }
-
2153 
-
2154 bool SampleToGroup::ReadWriteInternal(BoxBuffer* buffer) {
-
2155  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
2156  buffer->ReadWriteUInt32(&grouping_type));
-
2157  if (version == 1)
-
2158  RCHECK(buffer->ReadWriteUInt32(&grouping_type_parameter));
-
2159 
-
2160  if (grouping_type != FOURCC_seig) {
-
2161  DCHECK(buffer->Reading());
-
2162  DLOG(WARNING) << "Sample group "
-
2163  << FourCCToString(static_cast<FourCC>(grouping_type))
-
2164  << " is not supported.";
-
2165  return true;
-
2166  }
-
2167 
-
2168  uint32_t count = entries.size();
-
2169  RCHECK(buffer->ReadWriteUInt32(&count));
-
2170  entries.resize(count);
-
2171  for (uint32_t i = 0; i < count; ++i) {
-
2172  RCHECK(buffer->ReadWriteUInt32(&entries[i].sample_count) &&
-
2173  buffer->ReadWriteUInt32(&entries[i].group_description_index));
-
2174  }
-
2175  return true;
-
2176 }
-
2177 
-
2178 uint32_t SampleToGroup::ComputeSizeInternal() {
-
2179  // This box is optional. Skip it if it is not used.
-
2180  if (entries.empty())
-
2181  return 0;
-
2182  return HeaderSize() + sizeof(grouping_type) +
-
2183  (version == 1 ? sizeof(grouping_type_parameter) : 0) +
-
2184  sizeof(uint32_t) + entries.size() * sizeof(entries[0]);
+
1959 uint32_t DataReference::ComputeSizeInternal() {
+
1960  uint32_t count = data_entry.size();
+
1961  uint32_t box_size = HeaderSize() + sizeof(count);
+
1962  for (uint32_t i = 0; i < count; ++i)
+
1963  box_size += data_entry[i].ComputeSize();
+
1964  return box_size;
+
1965 }
+
1966 
+
1967 DataInformation::DataInformation() {}
+
1968 DataInformation::~DataInformation() {}
+
1969 FourCC DataInformation::BoxType() const { return FOURCC_dinf; }
+
1970 
+
1971 bool DataInformation::ReadWriteInternal(BoxBuffer* buffer) {
+
1972  return ReadWriteHeaderInternal(buffer) &&
+
1973  buffer->PrepareChildren() &&
+
1974  buffer->ReadWriteChild(&dref);
+
1975 }
+
1976 
+
1977 uint32_t DataInformation::ComputeSizeInternal() {
+
1978  return HeaderSize() + dref.ComputeSize();
+
1979 }
+
1980 
+
1981 MediaInformation::MediaInformation() {}
+
1982 MediaInformation::~MediaInformation() {}
+
1983 FourCC MediaInformation::BoxType() const { return FOURCC_minf; }
+
1984 
+
1985 bool MediaInformation::ReadWriteInternal(BoxBuffer* buffer) {
+
1986  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
1987  buffer->PrepareChildren() &&
+
1988  buffer->ReadWriteChild(&dinf) &&
+
1989  buffer->ReadWriteChild(&sample_table));
+
1990  switch (sample_table.description.type) {
+
1991  case kVideo:
+
1992  RCHECK(buffer->ReadWriteChild(&vmhd));
+
1993  break;
+
1994  case kAudio:
+
1995  RCHECK(buffer->ReadWriteChild(&smhd));
+
1996  break;
+
1997  case kText:
+
1998  RCHECK(buffer->TryReadWriteChild(&sthd));
+
1999  break;
+
2000  default:
+
2001  NOTIMPLEMENTED();
+
2002  }
+
2003  // Hint is not supported for now.
+
2004  return true;
+
2005 }
+
2006 
+
2007 uint32_t MediaInformation::ComputeSizeInternal() {
+
2008  uint32_t box_size =
+
2009  HeaderSize() + dinf.ComputeSize() + sample_table.ComputeSize();
+
2010  switch (sample_table.description.type) {
+
2011  case kVideo:
+
2012  box_size += vmhd.ComputeSize();
+
2013  break;
+
2014  case kAudio:
+
2015  box_size += smhd.ComputeSize();
+
2016  break;
+
2017  case kText:
+
2018  box_size += sthd.ComputeSize();
+
2019  break;
+
2020  default:
+
2021  NOTIMPLEMENTED();
+
2022  }
+
2023  return box_size;
+
2024 }
+
2025 
+
2026 Media::Media() {}
+
2027 Media::~Media() {}
+
2028 FourCC Media::BoxType() const { return FOURCC_mdia; }
+
2029 
+
2030 bool Media::ReadWriteInternal(BoxBuffer* buffer) {
+
2031  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
2032  buffer->PrepareChildren() &&
+
2033  buffer->ReadWriteChild(&header));
+
2034  if (buffer->Reading()) {
+
2035  RCHECK(buffer->ReadWriteChild(&handler));
+
2036  // Maddeningly, the HandlerReference box specifies how to parse the
+
2037  // SampleDescription box, making the latter the only box (of those that we
+
2038  // support) which cannot be parsed correctly on its own (or even with
+
2039  // information from its strict ancestor tree). We thus copy the handler type
+
2040  // to the sample description box *before* parsing it to provide this
+
2041  // information while parsing.
+
2042  information.sample_table.description.type =
+
2043  FourCCToTrackType(handler.handler_type);
+
2044  } else {
+
2045  handler.handler_type =
+
2046  TrackTypeToFourCC(information.sample_table.description.type);
+
2047  RCHECK(handler.handler_type != FOURCC_NULL);
+
2048  RCHECK(buffer->ReadWriteChild(&handler));
+
2049  }
+
2050  RCHECK(buffer->ReadWriteChild(&information));
+
2051  return true;
+
2052 }
+
2053 
+
2054 uint32_t Media::ComputeSizeInternal() {
+
2055  handler.handler_type =
+
2056  TrackTypeToFourCC(information.sample_table.description.type);
+
2057  return HeaderSize() + header.ComputeSize() + handler.ComputeSize() +
+
2058  information.ComputeSize();
+
2059 }
+
2060 
+
2061 Track::Track() {}
+
2062 Track::~Track() {}
+
2063 FourCC Track::BoxType() const { return FOURCC_trak; }
+
2064 
+
2065 bool Track::ReadWriteInternal(BoxBuffer* buffer) {
+
2066  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
2067  buffer->PrepareChildren() &&
+
2068  buffer->ReadWriteChild(&header) &&
+
2069  buffer->ReadWriteChild(&media) &&
+
2070  buffer->TryReadWriteChild(&edit) &&
+
2071  buffer->TryReadWriteChild(&sample_encryption));
+
2072  return true;
+
2073 }
+
2074 
+
2075 uint32_t Track::ComputeSizeInternal() {
+
2076  return HeaderSize() + header.ComputeSize() + media.ComputeSize() +
+
2077  edit.ComputeSize();
+
2078 }
+
2079 
+
2080 MovieExtendsHeader::MovieExtendsHeader() : fragment_duration(0) {}
+
2081 MovieExtendsHeader::~MovieExtendsHeader() {}
+
2082 FourCC MovieExtendsHeader::BoxType() const { return FOURCC_mehd; }
+
2083 
+
2084 bool MovieExtendsHeader::ReadWriteInternal(BoxBuffer* buffer) {
+
2085  RCHECK(ReadWriteHeaderInternal(buffer));
+
2086  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
+
2087  RCHECK(buffer->ReadWriteUInt64NBytes(&fragment_duration, num_bytes));
+
2088  return true;
+
2089 }
+
2090 
+
2091 uint32_t MovieExtendsHeader::ComputeSizeInternal() {
+
2092  // This box is optional. Skip it if it is not used.
+
2093  if (fragment_duration == 0)
+
2094  return 0;
+
2095  version = IsFitIn32Bits(fragment_duration) ? 0 : 1;
+
2096  return HeaderSize() + sizeof(uint32_t) * (1 + version);
+
2097 }
+
2098 
+
2099 TrackExtends::TrackExtends()
+
2100  : track_id(0),
+
2101  default_sample_description_index(0),
+
2102  default_sample_duration(0),
+
2103  default_sample_size(0),
+
2104  default_sample_flags(0) {}
+
2105 TrackExtends::~TrackExtends() {}
+
2106 FourCC TrackExtends::BoxType() const { return FOURCC_trex; }
+
2107 
+
2108 bool TrackExtends::ReadWriteInternal(BoxBuffer* buffer) {
+
2109  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
2110  buffer->ReadWriteUInt32(&track_id) &&
+
2111  buffer->ReadWriteUInt32(&default_sample_description_index) &&
+
2112  buffer->ReadWriteUInt32(&default_sample_duration) &&
+
2113  buffer->ReadWriteUInt32(&default_sample_size) &&
+
2114  buffer->ReadWriteUInt32(&default_sample_flags));
+
2115  return true;
+
2116 }
+
2117 
+
2118 uint32_t TrackExtends::ComputeSizeInternal() {
+
2119  return HeaderSize() + sizeof(track_id) +
+
2120  sizeof(default_sample_description_index) +
+
2121  sizeof(default_sample_duration) + sizeof(default_sample_size) +
+
2122  sizeof(default_sample_flags);
+
2123 }
+
2124 
+
2125 MovieExtends::MovieExtends() {}
+
2126 MovieExtends::~MovieExtends() {}
+
2127 FourCC MovieExtends::BoxType() const { return FOURCC_mvex; }
+
2128 
+
2129 bool MovieExtends::ReadWriteInternal(BoxBuffer* buffer) {
+
2130  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
2131  buffer->PrepareChildren() &&
+
2132  buffer->TryReadWriteChild(&header));
+
2133  if (buffer->Reading()) {
+
2134  DCHECK(buffer->reader());
+
2135  RCHECK(buffer->reader()->ReadChildren(&tracks));
+
2136  } else {
+
2137  for (uint32_t i = 0; i < tracks.size(); ++i)
+
2138  RCHECK(buffer->ReadWriteChild(&tracks[i]));
+
2139  }
+
2140  return true;
+
2141 }
+
2142 
+
2143 uint32_t MovieExtends::ComputeSizeInternal() {
+
2144  // This box is optional. Skip it if it does not contain any track.
+
2145  if (tracks.size() == 0)
+
2146  return 0;
+
2147  uint32_t box_size = HeaderSize() + header.ComputeSize();
+
2148  for (uint32_t i = 0; i < tracks.size(); ++i)
+
2149  box_size += tracks[i].ComputeSize();
+
2150  return box_size;
+
2151 }
+
2152 
+
2153 Movie::Movie() {}
+
2154 Movie::~Movie() {}
+
2155 FourCC Movie::BoxType() const { return FOURCC_moov; }
+
2156 
+
2157 bool Movie::ReadWriteInternal(BoxBuffer* buffer) {
+
2158  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
2159  buffer->PrepareChildren() &&
+
2160  buffer->ReadWriteChild(&header) &&
+
2161  buffer->TryReadWriteChild(&metadata) &&
+
2162  buffer->TryReadWriteChild(&extends));
+
2163  if (buffer->Reading()) {
+
2164  BoxReader* reader = buffer->reader();
+
2165  DCHECK(reader);
+
2166  RCHECK(reader->ReadChildren(&tracks) &&
+
2167  reader->TryReadChildren(&pssh));
+
2168  } else {
+
2169  for (uint32_t i = 0; i < tracks.size(); ++i)
+
2170  RCHECK(buffer->ReadWriteChild(&tracks[i]));
+
2171  for (uint32_t i = 0; i < pssh.size(); ++i)
+
2172  RCHECK(buffer->ReadWriteChild(&pssh[i]));
+
2173  }
+
2174  return true;
+
2175 }
+
2176 
+
2177 uint32_t Movie::ComputeSizeInternal() {
+
2178  uint32_t box_size = HeaderSize() + header.ComputeSize() +
+
2179  metadata.ComputeSize() + extends.ComputeSize();
+
2180  for (uint32_t i = 0; i < tracks.size(); ++i)
+
2181  box_size += tracks[i].ComputeSize();
+
2182  for (uint32_t i = 0; i < pssh.size(); ++i)
+
2183  box_size += pssh[i].ComputeSize();
+
2184  return box_size;
2185 }
2186 
-
2187 CencSampleEncryptionInfoEntry::CencSampleEncryptionInfoEntry()
-
2188  : is_protected(0),
-
2189  per_sample_iv_size(0),
-
2190  crypt_byte_block(0),
-
2191  skip_byte_block(0) {}
-
2192 CencSampleEncryptionInfoEntry::~CencSampleEncryptionInfoEntry() {};
-
2193 
-
2194 SampleGroupDescription::SampleGroupDescription() : grouping_type(0) {}
-
2195 SampleGroupDescription::~SampleGroupDescription() {}
-
2196 FourCC SampleGroupDescription::BoxType() const { return FOURCC_sgpd; }
+
2187 TrackFragmentDecodeTime::TrackFragmentDecodeTime() : decode_time(0) {}
+
2188 TrackFragmentDecodeTime::~TrackFragmentDecodeTime() {}
+
2189 FourCC TrackFragmentDecodeTime::BoxType() const { return FOURCC_tfdt; }
+
2190 
+
2191 bool TrackFragmentDecodeTime::ReadWriteInternal(BoxBuffer* buffer) {
+
2192  RCHECK(ReadWriteHeaderInternal(buffer));
+
2193  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
+
2194  RCHECK(buffer->ReadWriteUInt64NBytes(&decode_time, num_bytes));
+
2195  return true;
+
2196 }
2197 
-
2198 bool SampleGroupDescription::ReadWriteInternal(BoxBuffer* buffer) {
-
2199  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
2200  buffer->ReadWriteUInt32(&grouping_type));
-
2201 
-
2202  if (grouping_type != FOURCC_seig) {
-
2203  DCHECK(buffer->Reading());
-
2204  DLOG(WARNING) << "Sample group '" << grouping_type << "' is not supported.";
-
2205  return true;
-
2206  }
-
2207 
-
2208  const size_t kEntrySize = sizeof(uint32_t) + kCencKeyIdSize;
-
2209  uint32_t default_length = 0;
-
2210  if (version == 1) {
-
2211  if (buffer->Reading()) {
-
2212  RCHECK(buffer->ReadWriteUInt32(&default_length));
-
2213  RCHECK(default_length == 0 || default_length >= kEntrySize);
-
2214  } else {
-
2215  default_length = kEntrySize;
-
2216  RCHECK(buffer->ReadWriteUInt32(&default_length));
-
2217  }
-
2218  }
-
2219 
-
2220  uint32_t count = entries.size();
-
2221  RCHECK(buffer->ReadWriteUInt32(&count));
-
2222  entries.resize(count);
-
2223  for (uint32_t i = 0; i < count; ++i) {
-
2224  if (version == 1) {
-
2225  if (buffer->Reading() && default_length == 0) {
-
2226  uint32_t description_length = 0;
-
2227  RCHECK(buffer->ReadWriteUInt32(&description_length));
-
2228  RCHECK(description_length >= kEntrySize);
-
2229  }
-
2230  }
-
2231 
-
2232  if (!buffer->Reading()) {
-
2233  if (entries[i].key_id.size() != kCencKeyIdSize) {
-
2234  LOG(WARNING) << "CENC defines key id length of " << kCencKeyIdSize
-
2235  << " bytes; got " << entries[i].key_id.size()
-
2236  << ". Resized accordingly.";
-
2237  entries[i].key_id.resize(kCencKeyIdSize);
-
2238  }
-
2239  RCHECK(entries[i].crypt_byte_block < 16 &&
-
2240  entries[i].skip_byte_block < 16);
-
2241  }
-
2242 
-
2243  RCHECK(buffer->IgnoreBytes(1)); // reserved.
-
2244 
-
2245  uint8_t pattern =
-
2246  entries[i].crypt_byte_block << 4 | entries[i].skip_byte_block;
-
2247  RCHECK(buffer->ReadWriteUInt8(&pattern));
-
2248  entries[i].crypt_byte_block = pattern >> 4;
-
2249  entries[i].skip_byte_block = pattern & 0x0F;
-
2250 
-
2251  RCHECK(buffer->ReadWriteUInt8(&entries[i].is_protected) &&
-
2252  buffer->ReadWriteUInt8(&entries[i].per_sample_iv_size) &&
-
2253  buffer->ReadWriteVector(&entries[i].key_id, kCencKeyIdSize));
-
2254 
-
2255  if (entries[i].is_protected == 1) {
-
2256  if (entries[i].per_sample_iv_size == 0) { // For constant iv.
-
2257  uint8_t constant_iv_size = entries[i].constant_iv.size();
-
2258  RCHECK(buffer->ReadWriteUInt8(&constant_iv_size));
-
2259  RCHECK(constant_iv_size == 8 || constant_iv_size == 16);
-
2260  RCHECK(
-
2261  buffer->ReadWriteVector(&entries[i].constant_iv, constant_iv_size));
-
2262  } else {
-
2263  RCHECK(entries[i].per_sample_iv_size == 8 ||
-
2264  entries[i].per_sample_iv_size == 16);
-
2265  RCHECK(entries[i].constant_iv.empty());
-
2266  }
-
2267  } else {
-
2268  // Expect |is_protected| to be 0, i.e. not protected. Other values of
-
2269  // |is_protected| is not supported.
-
2270  RCHECK(entries[i].is_protected == 0);
-
2271  RCHECK(entries[i].per_sample_iv_size == 0);
-
2272  }
-
2273 
-
2274  }
-
2275  return true;
-
2276 }
-
2277 
-
2278 uint32_t SampleGroupDescription::ComputeSizeInternal() {
-
2279  // Version 0 is obsoleted, so always generate version 1 box.
-
2280  version = 1;
-
2281  // This box is optional. Skip it if it is not used.
-
2282  if (entries.empty())
-
2283  return 0;
-
2284  size_t entries_size = 0;
-
2285  for (const auto& entry : entries) {
-
2286  entries_size += sizeof(uint32_t) + kCencKeyIdSize +
-
2287  (entry.constant_iv.empty()
-
2288  ? 0
-
2289  : (sizeof(uint8_t) + entry.constant_iv.size()));
-
2290  }
-
2291  return HeaderSize() + sizeof(grouping_type) +
-
2292  (version == 1 ? sizeof(uint32_t) : 0) + sizeof(uint32_t) +
-
2293  entries_size;
-
2294 }
-
2295 
-
2296 TrackFragment::TrackFragment() : decode_time_absent(false) {}
-
2297 TrackFragment::~TrackFragment() {}
-
2298 FourCC TrackFragment::BoxType() const { return FOURCC_traf; }
+
2198 uint32_t TrackFragmentDecodeTime::ComputeSizeInternal() {
+
2199  version = IsFitIn32Bits(decode_time) ? 0 : 1;
+
2200  return HeaderSize() + sizeof(uint32_t) * (1 + version);
+
2201 }
+
2202 
+
2203 MovieFragmentHeader::MovieFragmentHeader() : sequence_number(0) {}
+
2204 MovieFragmentHeader::~MovieFragmentHeader() {}
+
2205 FourCC MovieFragmentHeader::BoxType() const { return FOURCC_mfhd; }
+
2206 
+
2207 bool MovieFragmentHeader::ReadWriteInternal(BoxBuffer* buffer) {
+
2208  return ReadWriteHeaderInternal(buffer) &&
+
2209  buffer->ReadWriteUInt32(&sequence_number);
+
2210 }
+
2211 
+
2212 uint32_t MovieFragmentHeader::ComputeSizeInternal() {
+
2213  return HeaderSize() + sizeof(sequence_number);
+
2214 }
+
2215 
+
2216 TrackFragmentHeader::TrackFragmentHeader()
+
2217  : track_id(0),
+
2218  sample_description_index(0),
+
2219  default_sample_duration(0),
+
2220  default_sample_size(0),
+
2221  default_sample_flags(0) {}
+
2222 
+
2223 TrackFragmentHeader::~TrackFragmentHeader() {}
+
2224 FourCC TrackFragmentHeader::BoxType() const { return FOURCC_tfhd; }
+
2225 
+
2226 bool TrackFragmentHeader::ReadWriteInternal(BoxBuffer* buffer) {
+
2227  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
2228  buffer->ReadWriteUInt32(&track_id));
+
2229 
+
2230  if (flags & kBaseDataOffsetPresentMask) {
+
2231  // MSE requires 'default-base-is-moof' to be set and
+
2232  // 'base-data-offset-present' not to be set. We omit these checks as some
+
2233  // valid files in the wild don't follow these rules, though they use moof as
+
2234  // base.
+
2235  uint64_t base_data_offset;
+
2236  RCHECK(buffer->ReadWriteUInt64(&base_data_offset));
+
2237  DLOG(WARNING) << "base-data-offset-present is not expected. Assumes "
+
2238  "default-base-is-moof.";
+
2239  }
+
2240 
+
2241  if (flags & kSampleDescriptionIndexPresentMask) {
+
2242  RCHECK(buffer->ReadWriteUInt32(&sample_description_index));
+
2243  } else if (buffer->Reading()) {
+
2244  sample_description_index = 0;
+
2245  }
+
2246 
+
2247  if (flags & kDefaultSampleDurationPresentMask) {
+
2248  RCHECK(buffer->ReadWriteUInt32(&default_sample_duration));
+
2249  } else if (buffer->Reading()) {
+
2250  default_sample_duration = 0;
+
2251  }
+
2252 
+
2253  if (flags & kDefaultSampleSizePresentMask) {
+
2254  RCHECK(buffer->ReadWriteUInt32(&default_sample_size));
+
2255  } else if (buffer->Reading()) {
+
2256  default_sample_size = 0;
+
2257  }
+
2258 
+
2259  if (flags & kDefaultSampleFlagsPresentMask)
+
2260  RCHECK(buffer->ReadWriteUInt32(&default_sample_flags));
+
2261  return true;
+
2262 }
+
2263 
+
2264 uint32_t TrackFragmentHeader::ComputeSizeInternal() {
+
2265  uint32_t box_size = HeaderSize() + sizeof(track_id);
+
2266  if (flags & kSampleDescriptionIndexPresentMask)
+
2267  box_size += sizeof(sample_description_index);
+
2268  if (flags & kDefaultSampleDurationPresentMask)
+
2269  box_size += sizeof(default_sample_duration);
+
2270  if (flags & kDefaultSampleSizePresentMask)
+
2271  box_size += sizeof(default_sample_size);
+
2272  if (flags & kDefaultSampleFlagsPresentMask)
+
2273  box_size += sizeof(default_sample_flags);
+
2274  return box_size;
+
2275 }
+
2276 
+
2277 TrackFragmentRun::TrackFragmentRun() : sample_count(0), data_offset(0) {}
+
2278 TrackFragmentRun::~TrackFragmentRun() {}
+
2279 FourCC TrackFragmentRun::BoxType() const { return FOURCC_trun; }
+
2280 
+
2281 bool TrackFragmentRun::ReadWriteInternal(BoxBuffer* buffer) {
+
2282  if (!buffer->Reading()) {
+
2283  // Determine whether version 0 or version 1 should be used.
+
2284  // Use version 0 if possible, use version 1 if there is a negative
+
2285  // sample_offset value.
+
2286  version = 0;
+
2287  if (flags & kSampleCompTimeOffsetsPresentMask) {
+
2288  for (uint32_t i = 0; i < sample_count; ++i) {
+
2289  if (sample_composition_time_offsets[i] < 0) {
+
2290  version = 1;
+
2291  break;
+
2292  }
+
2293  }
+
2294  }
+
2295  }
+
2296 
+
2297  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
2298  buffer->ReadWriteUInt32(&sample_count));
2299 
-
2300 bool TrackFragment::ReadWriteInternal(BoxBuffer* buffer) {
-
2301  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
2302  buffer->PrepareChildren() &&
-
2303  buffer->ReadWriteChild(&header));
-
2304  if (buffer->Reading()) {
-
2305  DCHECK(buffer->reader());
-
2306  decode_time_absent = !buffer->reader()->ChildExist(&decode_time);
-
2307  if (!decode_time_absent)
-
2308  RCHECK(buffer->ReadWriteChild(&decode_time));
-
2309  RCHECK(buffer->reader()->TryReadChildren(&runs));
-
2310 
-
2311  // There could be multiple SampleGroupDescription and SampleToGroup boxes
-
2312  // with different grouping types. For common encryption, the relevant
-
2313  // grouping type is 'seig'. Continue reading until 'seig' is found, or
-
2314  // until running out of child boxes.
-
2315  while (sample_to_group.grouping_type != FOURCC_seig &&
-
2316  buffer->reader()->ChildExist(&sample_to_group)) {
-
2317  RCHECK(buffer->reader()->ReadChild(&sample_to_group));
-
2318  }
-
2319  while (sample_group_description.grouping_type != FOURCC_seig &&
-
2320  buffer->reader()->ChildExist(&sample_group_description)) {
-
2321  RCHECK(buffer->reader()->ReadChild(&sample_group_description));
-
2322  }
-
2323  } else {
-
2324  if (!decode_time_absent)
-
2325  RCHECK(buffer->ReadWriteChild(&decode_time));
-
2326  for (uint32_t i = 0; i < runs.size(); ++i)
-
2327  RCHECK(buffer->ReadWriteChild(&runs[i]));
-
2328  RCHECK(buffer->TryReadWriteChild(&sample_to_group) &&
-
2329  buffer->TryReadWriteChild(&sample_group_description));
-
2330  }
-
2331  return buffer->TryReadWriteChild(&auxiliary_size) &&
-
2332  buffer->TryReadWriteChild(&auxiliary_offset) &&
-
2333  buffer->TryReadWriteChild(&sample_encryption);
-
2334 }
-
2335 
-
2336 uint32_t TrackFragment::ComputeSizeInternal() {
-
2337  uint32_t box_size =
-
2338  HeaderSize() + header.ComputeSize() + decode_time.ComputeSize() +
-
2339  sample_to_group.ComputeSize() + sample_group_description.ComputeSize() +
-
2340  auxiliary_size.ComputeSize() + auxiliary_offset.ComputeSize() +
-
2341  sample_encryption.ComputeSize();
-
2342  for (uint32_t i = 0; i < runs.size(); ++i)
-
2343  box_size += runs[i].ComputeSize();
-
2344  return box_size;
-
2345 }
-
2346 
-
2347 MovieFragment::MovieFragment() {}
-
2348 MovieFragment::~MovieFragment() {}
-
2349 FourCC MovieFragment::BoxType() const { return FOURCC_moof; }
+
2300  bool data_offset_present = (flags & kDataOffsetPresentMask) != 0;
+
2301  bool first_sample_flags_present = (flags & kFirstSampleFlagsPresentMask) != 0;
+
2302  bool sample_duration_present = (flags & kSampleDurationPresentMask) != 0;
+
2303  bool sample_size_present = (flags & kSampleSizePresentMask) != 0;
+
2304  bool sample_flags_present = (flags & kSampleFlagsPresentMask) != 0;
+
2305  bool sample_composition_time_offsets_present =
+
2306  (flags & kSampleCompTimeOffsetsPresentMask) != 0;
+
2307 
+
2308  if (data_offset_present) {
+
2309  RCHECK(buffer->ReadWriteUInt32(&data_offset));
+
2310  } else {
+
2311  // NOTE: If the data-offset is not present, then the data for this run
+
2312  // starts immediately after the data of the previous run, or at the
+
2313  // base-data-offset defined by the track fragment header if this is the
+
2314  // first run in a track fragment. If the data-offset is present, it is
+
2315  // relative to the base-data-offset established in the track fragment
+
2316  // header.
+
2317  NOTIMPLEMENTED();
+
2318  }
+
2319 
+
2320  uint32_t first_sample_flags;
+
2321 
+
2322  if (buffer->Reading()) {
+
2323  if (first_sample_flags_present)
+
2324  RCHECK(buffer->ReadWriteUInt32(&first_sample_flags));
+
2325 
+
2326  if (sample_duration_present)
+
2327  sample_durations.resize(sample_count);
+
2328  if (sample_size_present)
+
2329  sample_sizes.resize(sample_count);
+
2330  if (sample_flags_present)
+
2331  sample_flags.resize(sample_count);
+
2332  if (sample_composition_time_offsets_present)
+
2333  sample_composition_time_offsets.resize(sample_count);
+
2334  } else {
+
2335  if (first_sample_flags_present) {
+
2336  first_sample_flags = sample_flags[0];
+
2337  DCHECK(sample_flags.size() == 1);
+
2338  RCHECK(buffer->ReadWriteUInt32(&first_sample_flags));
+
2339  }
+
2340 
+
2341  if (sample_duration_present)
+
2342  DCHECK(sample_durations.size() == sample_count);
+
2343  if (sample_size_present)
+
2344  DCHECK(sample_sizes.size() == sample_count);
+
2345  if (sample_flags_present)
+
2346  DCHECK(sample_flags.size() == sample_count);
+
2347  if (sample_composition_time_offsets_present)
+
2348  DCHECK(sample_composition_time_offsets.size() == sample_count);
+
2349  }
2350 
-
2351 bool MovieFragment::ReadWriteInternal(BoxBuffer* buffer) {
-
2352  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
2353  buffer->PrepareChildren() &&
-
2354  buffer->ReadWriteChild(&header));
-
2355  if (buffer->Reading()) {
-
2356  BoxReader* reader = buffer->reader();
-
2357  DCHECK(reader);
-
2358  RCHECK(reader->ReadChildren(&tracks) &&
-
2359  reader->TryReadChildren(&pssh));
-
2360  } else {
-
2361  for (uint32_t i = 0; i < tracks.size(); ++i)
-
2362  RCHECK(buffer->ReadWriteChild(&tracks[i]));
-
2363  for (uint32_t i = 0; i < pssh.size(); ++i)
-
2364  RCHECK(buffer->ReadWriteChild(&pssh[i]));
-
2365  }
-
2366  return true;
-
2367 }
-
2368 
-
2369 uint32_t MovieFragment::ComputeSizeInternal() {
-
2370  uint32_t box_size = HeaderSize() + header.ComputeSize();
-
2371  for (uint32_t i = 0; i < tracks.size(); ++i)
-
2372  box_size += tracks[i].ComputeSize();
-
2373  for (uint32_t i = 0; i < pssh.size(); ++i)
-
2374  box_size += pssh[i].ComputeSize();
-
2375  return box_size;
-
2376 }
-
2377 
-
2378 SegmentIndex::SegmentIndex()
-
2379  : reference_id(0),
-
2380  timescale(0),
-
2381  earliest_presentation_time(0),
-
2382  first_offset(0) {}
-
2383 SegmentIndex::~SegmentIndex() {}
-
2384 FourCC SegmentIndex::BoxType() const { return FOURCC_sidx; }
-
2385 
-
2386 bool SegmentIndex::ReadWriteInternal(BoxBuffer* buffer) {
-
2387  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
2388  buffer->ReadWriteUInt32(&reference_id) &&
-
2389  buffer->ReadWriteUInt32(&timescale));
-
2390 
-
2391  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
-
2392  RCHECK(
-
2393  buffer->ReadWriteUInt64NBytes(&earliest_presentation_time, num_bytes) &&
-
2394  buffer->ReadWriteUInt64NBytes(&first_offset, num_bytes));
-
2395 
-
2396  uint16_t reference_count = references.size();
-
2397  RCHECK(buffer->IgnoreBytes(2) && // reserved.
-
2398  buffer->ReadWriteUInt16(&reference_count));
-
2399  references.resize(reference_count);
-
2400 
-
2401  uint32_t reference_type_size;
-
2402  uint32_t sap;
-
2403  for (uint32_t i = 0; i < reference_count; ++i) {
-
2404  if (!buffer->Reading()) {
-
2405  reference_type_size = references[i].referenced_size;
-
2406  if (references[i].reference_type)
-
2407  reference_type_size |= (1 << 31);
-
2408  sap = (references[i].sap_type << 28) | references[i].sap_delta_time;
-
2409  if (references[i].starts_with_sap)
-
2410  sap |= (1 << 31);
-
2411  }
-
2412  RCHECK(buffer->ReadWriteUInt32(&reference_type_size) &&
-
2413  buffer->ReadWriteUInt32(&references[i].subsegment_duration) &&
-
2414  buffer->ReadWriteUInt32(&sap));
-
2415  if (buffer->Reading()) {
-
2416  references[i].reference_type = (reference_type_size >> 31) ? true : false;
-
2417  references[i].referenced_size = reference_type_size & ~(1 << 31);
-
2418  references[i].starts_with_sap = (sap >> 31) ? true : false;
-
2419  references[i].sap_type =
-
2420  static_cast<SegmentReference::SAPType>((sap >> 28) & 0x07);
-
2421  references[i].sap_delta_time = sap & ~(0xF << 28);
-
2422  }
+
2351  for (uint32_t i = 0; i < sample_count; ++i) {
+
2352  if (sample_duration_present)
+
2353  RCHECK(buffer->ReadWriteUInt32(&sample_durations[i]));
+
2354  if (sample_size_present)
+
2355  RCHECK(buffer->ReadWriteUInt32(&sample_sizes[i]));
+
2356  if (sample_flags_present)
+
2357  RCHECK(buffer->ReadWriteUInt32(&sample_flags[i]));
+
2358 
+
2359  if (sample_composition_time_offsets_present) {
+
2360  if (version == 0) {
+
2361  uint32_t sample_offset = sample_composition_time_offsets[i];
+
2362  RCHECK(buffer->ReadWriteUInt32(&sample_offset));
+
2363  sample_composition_time_offsets[i] = sample_offset;
+
2364  } else {
+
2365  int32_t sample_offset = sample_composition_time_offsets[i];
+
2366  RCHECK(buffer->ReadWriteInt32(&sample_offset));
+
2367  sample_composition_time_offsets[i] = sample_offset;
+
2368  }
+
2369  }
+
2370  }
+
2371 
+
2372  if (buffer->Reading()) {
+
2373  if (first_sample_flags_present) {
+
2374  if (sample_flags.size() == 0) {
+
2375  sample_flags.push_back(first_sample_flags);
+
2376  } else {
+
2377  sample_flags[0] = first_sample_flags;
+
2378  }
+
2379  }
+
2380  }
+
2381  return true;
+
2382 }
+
2383 
+
2384 uint32_t TrackFragmentRun::ComputeSizeInternal() {
+
2385  uint32_t box_size = HeaderSize() + sizeof(sample_count);
+
2386  if (flags & kDataOffsetPresentMask)
+
2387  box_size += sizeof(data_offset);
+
2388  if (flags & kFirstSampleFlagsPresentMask)
+
2389  box_size += sizeof(uint32_t);
+
2390  uint32_t fields = (flags & kSampleDurationPresentMask ? 1 : 0) +
+
2391  (flags & kSampleSizePresentMask ? 1 : 0) +
+
2392  (flags & kSampleFlagsPresentMask ? 1 : 0) +
+
2393  (flags & kSampleCompTimeOffsetsPresentMask ? 1 : 0);
+
2394  box_size += fields * sizeof(uint32_t) * sample_count;
+
2395  return box_size;
+
2396 }
+
2397 
+
2398 TrackFragment::TrackFragment() : decode_time_absent(false) {}
+
2399 TrackFragment::~TrackFragment() {}
+
2400 FourCC TrackFragment::BoxType() const { return FOURCC_traf; }
+
2401 
+
2402 bool TrackFragment::ReadWriteInternal(BoxBuffer* buffer) {
+
2403  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
2404  buffer->PrepareChildren() &&
+
2405  buffer->ReadWriteChild(&header));
+
2406  if (buffer->Reading()) {
+
2407  DCHECK(buffer->reader());
+
2408  decode_time_absent = !buffer->reader()->ChildExist(&decode_time);
+
2409  if (!decode_time_absent)
+
2410  RCHECK(buffer->ReadWriteChild(&decode_time));
+
2411  RCHECK(buffer->reader()->TryReadChildren(&runs) &&
+
2412  buffer->reader()->TryReadChildren(&sample_group_descriptions) &&
+
2413  buffer->reader()->TryReadChildren(&sample_to_groups));
+
2414  } else {
+
2415  if (!decode_time_absent)
+
2416  RCHECK(buffer->ReadWriteChild(&decode_time));
+
2417  for (uint32_t i = 0; i < runs.size(); ++i)
+
2418  RCHECK(buffer->ReadWriteChild(&runs[i]));
+
2419  for (uint32_t i = 0; i < sample_to_groups.size(); ++i)
+
2420  RCHECK(buffer->ReadWriteChild(&sample_to_groups[i]));
+
2421  for (uint32_t i = 0; i < sample_group_descriptions.size(); ++i)
+
2422  RCHECK(buffer->ReadWriteChild(&sample_group_descriptions[i]));
2423  }
-
2424  return true;
-
2425 }
-
2426 
-
2427 uint32_t SegmentIndex::ComputeSizeInternal() {
-
2428  version = IsFitIn32Bits(earliest_presentation_time, first_offset) ? 0 : 1;
-
2429  return HeaderSize() + sizeof(reference_id) + sizeof(timescale) +
-
2430  sizeof(uint32_t) * (1 + version) * 2 + 2 * sizeof(uint16_t) +
-
2431  3 * sizeof(uint32_t) * references.size();
-
2432 }
-
2433 
-
2434 MediaData::MediaData() : data_size(0) {}
-
2435 MediaData::~MediaData() {}
-
2436 FourCC MediaData::BoxType() const { return FOURCC_mdat; }
-
2437 
-
2438 bool MediaData::ReadWriteInternal(BoxBuffer* buffer) {
-
2439  NOTIMPLEMENTED() << "Actual data is parsed and written separately.";
-
2440  return false;
+
2424  return buffer->TryReadWriteChild(&auxiliary_size) &&
+
2425  buffer->TryReadWriteChild(&auxiliary_offset) &&
+
2426  buffer->TryReadWriteChild(&sample_encryption);
+
2427 }
+
2428 
+
2429 uint32_t TrackFragment::ComputeSizeInternal() {
+
2430  uint32_t box_size =
+
2431  HeaderSize() + header.ComputeSize() + decode_time.ComputeSize() +
+
2432  auxiliary_size.ComputeSize() + auxiliary_offset.ComputeSize() +
+
2433  sample_encryption.ComputeSize();
+
2434  for (uint32_t i = 0; i < runs.size(); ++i)
+
2435  box_size += runs[i].ComputeSize();
+
2436  for (uint32_t i = 0; i < sample_group_descriptions.size(); ++i)
+
2437  box_size += sample_group_descriptions[i].ComputeSize();
+
2438  for (uint32_t i = 0; i < sample_to_groups.size(); ++i)
+
2439  box_size += sample_to_groups[i].ComputeSize();
+
2440  return box_size;
2441 }
2442 
-
2443 uint32_t MediaData::ComputeSizeInternal() {
-
2444  return HeaderSize() + data_size;
-
2445 }
+
2443 MovieFragment::MovieFragment() {}
+
2444 MovieFragment::~MovieFragment() {}
+
2445 FourCC MovieFragment::BoxType() const { return FOURCC_moof; }
2446 
-
2447 CueSourceIDBox::CueSourceIDBox() : source_id(kCueSourceIdNotSet) {}
-
2448 CueSourceIDBox::~CueSourceIDBox() {}
-
2449 
-
2450 FourCC CueSourceIDBox::BoxType() const { return FOURCC_vsid; }
-
2451 
-
2452 bool CueSourceIDBox::ReadWriteInternal(BoxBuffer* buffer) {
-
2453  RCHECK(ReadWriteHeaderInternal(buffer) && buffer->ReadWriteInt32(&source_id));
-
2454  return true;
-
2455 }
-
2456 
-
2457 uint32_t CueSourceIDBox::ComputeSizeInternal() {
-
2458  if (source_id == kCueSourceIdNotSet)
-
2459  return 0;
-
2460  return HeaderSize() + sizeof(source_id);
-
2461 }
-
2462 
-
2463 CueTimeBox::CueTimeBox() {}
-
2464 CueTimeBox::~CueTimeBox() {}
-
2465 
-
2466 FourCC CueTimeBox::BoxType() const {
-
2467  return FOURCC_ctim;
-
2468 }
-
2469 
-
2470 bool CueTimeBox::ReadWriteInternal(BoxBuffer* buffer) {
-
2471  RCHECK(ReadWriteHeaderInternal(buffer));
-
2472  return buffer->ReadWriteString(
-
2473  &cue_current_time,
-
2474  buffer->Reading() ? buffer->BytesLeft() : cue_current_time.size());
-
2475 }
-
2476 
-
2477 uint32_t CueTimeBox::ComputeSizeInternal() {
-
2478  if (cue_current_time.empty())
-
2479  return 0;
-
2480  return HeaderSize() + cue_current_time.size();
-
2481 }
-
2482 
-
2483 CueIDBox::CueIDBox() {}
-
2484 CueIDBox::~CueIDBox() {}
-
2485 
-
2486 FourCC CueIDBox::BoxType() const {
-
2487  return FOURCC_iden;
-
2488 }
-
2489 
-
2490 bool CueIDBox::ReadWriteInternal(BoxBuffer* buffer) {
-
2491  RCHECK(ReadWriteHeaderInternal(buffer));
-
2492  return buffer->ReadWriteString(
-
2493  &cue_id, buffer->Reading() ? buffer->BytesLeft() : cue_id.size());
-
2494 }
-
2495 
-
2496 uint32_t CueIDBox::ComputeSizeInternal() {
-
2497  if (cue_id.empty())
-
2498  return 0;
-
2499  return HeaderSize() + cue_id.size();
-
2500 }
-
2501 
-
2502 CueSettingsBox::CueSettingsBox() {}
-
2503 CueSettingsBox::~CueSettingsBox() {}
-
2504 
-
2505 FourCC CueSettingsBox::BoxType() const {
-
2506  return FOURCC_sttg;
-
2507 }
-
2508 
-
2509 bool CueSettingsBox::ReadWriteInternal(BoxBuffer* buffer) {
-
2510  RCHECK(ReadWriteHeaderInternal(buffer));
-
2511  return buffer->ReadWriteString(
-
2512  &settings, buffer->Reading() ? buffer->BytesLeft() : settings.size());
-
2513 }
-
2514 
-
2515 uint32_t CueSettingsBox::ComputeSizeInternal() {
-
2516  if (settings.empty())
-
2517  return 0;
-
2518  return HeaderSize() + settings.size();
-
2519 }
-
2520 
-
2521 CuePayloadBox::CuePayloadBox() {}
-
2522 CuePayloadBox::~CuePayloadBox() {}
-
2523 
-
2524 FourCC CuePayloadBox::BoxType() const {
-
2525  return FOURCC_payl;
-
2526 }
-
2527 
-
2528 bool CuePayloadBox::ReadWriteInternal(BoxBuffer* buffer) {
-
2529  RCHECK(ReadWriteHeaderInternal(buffer));
-
2530  return buffer->ReadWriteString(
-
2531  &cue_text, buffer->Reading() ? buffer->BytesLeft() : cue_text.size());
-
2532 }
+
2447 bool MovieFragment::ReadWriteInternal(BoxBuffer* buffer) {
+
2448  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
2449  buffer->PrepareChildren() &&
+
2450  buffer->ReadWriteChild(&header));
+
2451  if (buffer->Reading()) {
+
2452  BoxReader* reader = buffer->reader();
+
2453  DCHECK(reader);
+
2454  RCHECK(reader->ReadChildren(&tracks) &&
+
2455  reader->TryReadChildren(&pssh));
+
2456  } else {
+
2457  for (uint32_t i = 0; i < tracks.size(); ++i)
+
2458  RCHECK(buffer->ReadWriteChild(&tracks[i]));
+
2459  for (uint32_t i = 0; i < pssh.size(); ++i)
+
2460  RCHECK(buffer->ReadWriteChild(&pssh[i]));
+
2461  }
+
2462  return true;
+
2463 }
+
2464 
+
2465 uint32_t MovieFragment::ComputeSizeInternal() {
+
2466  uint32_t box_size = HeaderSize() + header.ComputeSize();
+
2467  for (uint32_t i = 0; i < tracks.size(); ++i)
+
2468  box_size += tracks[i].ComputeSize();
+
2469  for (uint32_t i = 0; i < pssh.size(); ++i)
+
2470  box_size += pssh[i].ComputeSize();
+
2471  return box_size;
+
2472 }
+
2473 
+
2474 SegmentIndex::SegmentIndex()
+
2475  : reference_id(0),
+
2476  timescale(0),
+
2477  earliest_presentation_time(0),
+
2478  first_offset(0) {}
+
2479 SegmentIndex::~SegmentIndex() {}
+
2480 FourCC SegmentIndex::BoxType() const { return FOURCC_sidx; }
+
2481 
+
2482 bool SegmentIndex::ReadWriteInternal(BoxBuffer* buffer) {
+
2483  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
2484  buffer->ReadWriteUInt32(&reference_id) &&
+
2485  buffer->ReadWriteUInt32(&timescale));
+
2486 
+
2487  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
+
2488  RCHECK(
+
2489  buffer->ReadWriteUInt64NBytes(&earliest_presentation_time, num_bytes) &&
+
2490  buffer->ReadWriteUInt64NBytes(&first_offset, num_bytes));
+
2491 
+
2492  uint16_t reference_count = references.size();
+
2493  RCHECK(buffer->IgnoreBytes(2) && // reserved.
+
2494  buffer->ReadWriteUInt16(&reference_count));
+
2495  references.resize(reference_count);
+
2496 
+
2497  uint32_t reference_type_size;
+
2498  uint32_t sap;
+
2499  for (uint32_t i = 0; i < reference_count; ++i) {
+
2500  if (!buffer->Reading()) {
+
2501  reference_type_size = references[i].referenced_size;
+
2502  if (references[i].reference_type)
+
2503  reference_type_size |= (1 << 31);
+
2504  sap = (references[i].sap_type << 28) | references[i].sap_delta_time;
+
2505  if (references[i].starts_with_sap)
+
2506  sap |= (1 << 31);
+
2507  }
+
2508  RCHECK(buffer->ReadWriteUInt32(&reference_type_size) &&
+
2509  buffer->ReadWriteUInt32(&references[i].subsegment_duration) &&
+
2510  buffer->ReadWriteUInt32(&sap));
+
2511  if (buffer->Reading()) {
+
2512  references[i].reference_type = (reference_type_size >> 31) ? true : false;
+
2513  references[i].referenced_size = reference_type_size & ~(1 << 31);
+
2514  references[i].starts_with_sap = (sap >> 31) ? true : false;
+
2515  references[i].sap_type =
+
2516  static_cast<SegmentReference::SAPType>((sap >> 28) & 0x07);
+
2517  references[i].sap_delta_time = sap & ~(0xF << 28);
+
2518  }
+
2519  }
+
2520  return true;
+
2521 }
+
2522 
+
2523 uint32_t SegmentIndex::ComputeSizeInternal() {
+
2524  version = IsFitIn32Bits(earliest_presentation_time, first_offset) ? 0 : 1;
+
2525  return HeaderSize() + sizeof(reference_id) + sizeof(timescale) +
+
2526  sizeof(uint32_t) * (1 + version) * 2 + 2 * sizeof(uint16_t) +
+
2527  3 * sizeof(uint32_t) * references.size();
+
2528 }
+
2529 
+
2530 MediaData::MediaData() : data_size(0) {}
+
2531 MediaData::~MediaData() {}
+
2532 FourCC MediaData::BoxType() const { return FOURCC_mdat; }
2533 
-
2534 uint32_t CuePayloadBox::ComputeSizeInternal() {
-
2535  return HeaderSize() + cue_text.size();
-
2536 }
-
2537 
-
2538 VTTEmptyCueBox::VTTEmptyCueBox() {}
-
2539 VTTEmptyCueBox::~VTTEmptyCueBox() {}
-
2540 
-
2541 FourCC VTTEmptyCueBox::BoxType() const {
-
2542  return FOURCC_vtte;
-
2543 }
-
2544 
-
2545 bool VTTEmptyCueBox::ReadWriteInternal(BoxBuffer* buffer) {
-
2546  return ReadWriteHeaderInternal(buffer);
-
2547 }
-
2548 
-
2549 uint32_t VTTEmptyCueBox::ComputeSizeInternal() {
-
2550  return HeaderSize();
+
2534 bool MediaData::ReadWriteInternal(BoxBuffer* buffer) {
+
2535  NOTIMPLEMENTED() << "Actual data is parsed and written separately.";
+
2536  return false;
+
2537 }
+
2538 
+
2539 uint32_t MediaData::ComputeSizeInternal() {
+
2540  return HeaderSize() + data_size;
+
2541 }
+
2542 
+
2543 CueSourceIDBox::CueSourceIDBox() : source_id(kCueSourceIdNotSet) {}
+
2544 CueSourceIDBox::~CueSourceIDBox() {}
+
2545 
+
2546 FourCC CueSourceIDBox::BoxType() const { return FOURCC_vsid; }
+
2547 
+
2548 bool CueSourceIDBox::ReadWriteInternal(BoxBuffer* buffer) {
+
2549  RCHECK(ReadWriteHeaderInternal(buffer) && buffer->ReadWriteInt32(&source_id));
+
2550  return true;
2551 }
2552 
-
2553 VTTAdditionalTextBox::VTTAdditionalTextBox() {}
-
2554 VTTAdditionalTextBox::~VTTAdditionalTextBox() {}
-
2555 
- -
2557  return FOURCC_vtta;
-
2558 }
-
2559 
-
2560 bool VTTAdditionalTextBox::ReadWriteInternal(BoxBuffer* buffer) {
-
2561  RCHECK(ReadWriteHeaderInternal(buffer));
-
2562  return buffer->ReadWriteString(
-
2563  &cue_additional_text,
-
2564  buffer->Reading() ? buffer->BytesLeft() : cue_additional_text.size());
-
2565 }
-
2566 
-
2567 uint32_t VTTAdditionalTextBox::ComputeSizeInternal() {
-
2568  return HeaderSize() + cue_additional_text.size();
-
2569 }
-
2570 
-
2571 VTTCueBox::VTTCueBox() {}
-
2572 VTTCueBox::~VTTCueBox() {}
-
2573 
-
2574 FourCC VTTCueBox::BoxType() const {
-
2575  return FOURCC_vttc;
-
2576 }
-
2577 
-
2578 bool VTTCueBox::ReadWriteInternal(BoxBuffer* buffer) {
-
2579  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
2580  buffer->PrepareChildren() &&
-
2581  buffer->ReadWriteChild(&cue_source_id) &&
-
2582  buffer->ReadWriteChild(&cue_id) &&
-
2583  buffer->ReadWriteChild(&cue_time) &&
-
2584  buffer->ReadWriteChild(&cue_settings) &&
-
2585  buffer->ReadWriteChild(&cue_payload));
-
2586  return true;
-
2587 }
-
2588 
-
2589 uint32_t VTTCueBox::ComputeSizeInternal() {
-
2590  return HeaderSize() + cue_source_id.ComputeSize() + cue_id.ComputeSize() +
-
2591  cue_time.ComputeSize() + cue_settings.ComputeSize() +
-
2592  cue_payload.ComputeSize();
-
2593 }
-
2594 
-
2595 } // namespace mp4
-
2596 } // namespace media
-
2597 } // namespace edash_packager
- -
FourCC BoxType() const override
+
2553 uint32_t CueSourceIDBox::ComputeSizeInternal() {
+
2554  if (source_id == kCueSourceIdNotSet)
+
2555  return 0;
+
2556  return HeaderSize() + sizeof(source_id);
+
2557 }
+
2558 
+
2559 CueTimeBox::CueTimeBox() {}
+
2560 CueTimeBox::~CueTimeBox() {}
+
2561 
+
2562 FourCC CueTimeBox::BoxType() const {
+
2563  return FOURCC_ctim;
+
2564 }
+
2565 
+
2566 bool CueTimeBox::ReadWriteInternal(BoxBuffer* buffer) {
+
2567  RCHECK(ReadWriteHeaderInternal(buffer));
+
2568  return buffer->ReadWriteString(
+
2569  &cue_current_time,
+
2570  buffer->Reading() ? buffer->BytesLeft() : cue_current_time.size());
+
2571 }
+
2572 
+
2573 uint32_t CueTimeBox::ComputeSizeInternal() {
+
2574  if (cue_current_time.empty())
+
2575  return 0;
+
2576  return HeaderSize() + cue_current_time.size();
+
2577 }
+
2578 
+
2579 CueIDBox::CueIDBox() {}
+
2580 CueIDBox::~CueIDBox() {}
+
2581 
+
2582 FourCC CueIDBox::BoxType() const {
+
2583  return FOURCC_iden;
+
2584 }
+
2585 
+
2586 bool CueIDBox::ReadWriteInternal(BoxBuffer* buffer) {
+
2587  RCHECK(ReadWriteHeaderInternal(buffer));
+
2588  return buffer->ReadWriteString(
+
2589  &cue_id, buffer->Reading() ? buffer->BytesLeft() : cue_id.size());
+
2590 }
+
2591 
+
2592 uint32_t CueIDBox::ComputeSizeInternal() {
+
2593  if (cue_id.empty())
+
2594  return 0;
+
2595  return HeaderSize() + cue_id.size();
+
2596 }
+
2597 
+
2598 CueSettingsBox::CueSettingsBox() {}
+
2599 CueSettingsBox::~CueSettingsBox() {}
+
2600 
+
2601 FourCC CueSettingsBox::BoxType() const {
+
2602  return FOURCC_sttg;
+
2603 }
+
2604 
+
2605 bool CueSettingsBox::ReadWriteInternal(BoxBuffer* buffer) {
+
2606  RCHECK(ReadWriteHeaderInternal(buffer));
+
2607  return buffer->ReadWriteString(
+
2608  &settings, buffer->Reading() ? buffer->BytesLeft() : settings.size());
+
2609 }
+
2610 
+
2611 uint32_t CueSettingsBox::ComputeSizeInternal() {
+
2612  if (settings.empty())
+
2613  return 0;
+
2614  return HeaderSize() + settings.size();
+
2615 }
+
2616 
+
2617 CuePayloadBox::CuePayloadBox() {}
+
2618 CuePayloadBox::~CuePayloadBox() {}
+
2619 
+
2620 FourCC CuePayloadBox::BoxType() const {
+
2621  return FOURCC_payl;
+
2622 }
+
2623 
+
2624 bool CuePayloadBox::ReadWriteInternal(BoxBuffer* buffer) {
+
2625  RCHECK(ReadWriteHeaderInternal(buffer));
+
2626  return buffer->ReadWriteString(
+
2627  &cue_text, buffer->Reading() ? buffer->BytesLeft() : cue_text.size());
+
2628 }
+
2629 
+
2630 uint32_t CuePayloadBox::ComputeSizeInternal() {
+
2631  return HeaderSize() + cue_text.size();
+
2632 }
+
2633 
+
2634 VTTEmptyCueBox::VTTEmptyCueBox() {}
+
2635 VTTEmptyCueBox::~VTTEmptyCueBox() {}
+
2636 
+
2637 FourCC VTTEmptyCueBox::BoxType() const {
+
2638  return FOURCC_vtte;
+
2639 }
+
2640 
+
2641 bool VTTEmptyCueBox::ReadWriteInternal(BoxBuffer* buffer) {
+
2642  return ReadWriteHeaderInternal(buffer);
+
2643 }
+
2644 
+
2645 uint32_t VTTEmptyCueBox::ComputeSizeInternal() {
+
2646  return HeaderSize();
+
2647 }
+
2648 
+
2649 VTTAdditionalTextBox::VTTAdditionalTextBox() {}
+
2650 VTTAdditionalTextBox::~VTTAdditionalTextBox() {}
+
2651 
+ +
2653  return FOURCC_vtta;
+
2654 }
+
2655 
+
2656 bool VTTAdditionalTextBox::ReadWriteInternal(BoxBuffer* buffer) {
+
2657  RCHECK(ReadWriteHeaderInternal(buffer));
+
2658  return buffer->ReadWriteString(
+
2659  &cue_additional_text,
+
2660  buffer->Reading() ? buffer->BytesLeft() : cue_additional_text.size());
+
2661 }
+
2662 
+
2663 uint32_t VTTAdditionalTextBox::ComputeSizeInternal() {
+
2664  return HeaderSize() + cue_additional_text.size();
+
2665 }
+
2666 
+
2667 VTTCueBox::VTTCueBox() {}
+
2668 VTTCueBox::~VTTCueBox() {}
+
2669 
+
2670 FourCC VTTCueBox::BoxType() const {
+
2671  return FOURCC_vttc;
+
2672 }
+
2673 
+
2674 bool VTTCueBox::ReadWriteInternal(BoxBuffer* buffer) {
+
2675  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
2676  buffer->PrepareChildren() &&
+
2677  buffer->ReadWriteChild(&cue_source_id) &&
+
2678  buffer->ReadWriteChild(&cue_id) &&
+
2679  buffer->ReadWriteChild(&cue_time) &&
+
2680  buffer->ReadWriteChild(&cue_settings) &&
+
2681  buffer->ReadWriteChild(&cue_payload));
+
2682  return true;
+
2683 }
+
2684 
+
2685 uint32_t VTTCueBox::ComputeSizeInternal() {
+
2686  return HeaderSize() + cue_source_id.ComputeSize() + cue_id.ComputeSize() +
+
2687  cue_time.ComputeSize() + cue_settings.ComputeSize() +
+
2688  cue_payload.ComputeSize();
+
2689 }
+
2690 
+
2691 } // namespace mp4
+
2692 } // namespace media
+
2693 } // 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:61
- +
bool ReadWriteHeaderInternal(BoxBuffer *buffer) final
Definition: box.cc:80
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
- + - + - + - - - - + + + + - +
virtual bool Parse(const std::vector< uint8_t > &data)
- +
virtual uint32_t HeaderSize() const
Definition: box.cc:55
- +
void Write(BufferWriter *writer)
Definition: box.cc:25
- +
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)
- - - + + +
uint32_t HeaderSize() const final
Definition: box.cc:75
+ 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 b5ff83529a..385c89b1c9 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 13ae6da246..8cfc052ad1 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 00463f7cd0..8b5f9b2bed 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 @@ -111,7 +111,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 1a0c52a88f..ccef37ca1d 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 760 of file box_definitions.h.

+

Definition at line 791 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 2486 of file box_definitions.cc.

+

Definition at line 2582 of file box_definitions.cc.

@@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/de/d0b/structedash__packager_1_1media_1_1H265ReferencePictureSet.html b/docs/de/d0b/structedash__packager_1_1media_1_1H265ReferencePictureSet.html index 27e9071d5f..d46b5a75b3 100644 --- a/docs/de/d0b/structedash__packager_1_1media_1_1H265ReferencePictureSet.html +++ b/docs/de/d0b/structedash__packager_1_1media_1_1H265ReferencePictureSet.html @@ -127,7 +127,7 @@ int num_delta_pocs diff --git a/docs/de/d0f/local__file_8h_source.html b/docs/de/d0f/local__file_8h_source.html index cf2a1cffc1..e04478343f 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 eae1e10d6a..71821c1bee 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/d13/ts__writer_8cc_source.html b/docs/de/d13/ts__writer_8cc_source.html index a161447f3e..4a00cb3831 100644 --- a/docs/de/d13/ts__writer_8cc_source.html +++ b/docs/de/d13/ts__writer_8cc_source.html @@ -367,7 +367,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 e8dc9c76b3..467f102634 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 007169ce95..dfdcd3ba95 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 b9fcafdeab..e1da3cfa4d 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 03144af498..3aef04f97a 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/d1a/classedash__packager_1_1media_1_1mp2t_1_1PesPacketGenerator.html b/docs/de/d1a/classedash__packager_1_1media_1_1mp2t_1_1PesPacketGenerator.html index 245522be8f..1fe3d5d886 100644 --- a/docs/de/d1a/classedash__packager_1_1media_1_1mp2t_1_1PesPacketGenerator.html +++ b/docs/de/d1a/classedash__packager_1_1media_1_1mp2t_1_1PesPacketGenerator.html @@ -306,7 +306,7 @@ class PesPacketGeneratorTe 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 db15e31f51..f5a63543d5 100644 --- a/docs/de/d1e/mp4_2single__segment__segmenter_8cc_source.html +++ b/docs/de/d1e/mp4_2single__segment__segmenter_8cc_source.html @@ -335,7 +335,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 cb7b96132c..5fc83ac53e 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/d22/aes__pattern__cryptor_8cc_source.html b/docs/de/d22/aes__pattern__cryptor_8cc_source.html index ba065aed4b..6c03067587 100644 --- a/docs/de/d22/aes__pattern__cryptor_8cc_source.html +++ b/docs/de/d22/aes__pattern__cryptor_8cc_source.html @@ -181,7 +181,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d34/offset__byte__queue_8h_source.html b/docs/de/d34/offset__byte__queue_8h_source.html index 67f7545e52..b90c606570 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/h26x__byte__to__unit__stream__converter_8cc_source.html b/docs/de/d3c/h26x__byte__to__unit__stream__converter_8cc_source.html index cc19fff798..7728a6bead 100644 --- a/docs/de/d3c/h26x__byte__to__unit__stream__converter_8cc_source.html +++ b/docs/de/d3c/h26x__byte__to__unit__stream__converter_8cc_source.html @@ -162,7 +162,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 c6babefb89..7a34117771 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 c2e0789f30..d0ac580dfd 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 012149e755..f723589cd8 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 @@ -197,7 +197,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 db3996064a..d8a2100ac2 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 b605d7df1d..f01332e14c 100644 --- a/docs/de/d4a/muxer__listener__internal_8h_source.html +++ b/docs/de/d4a/muxer__listener__internal_8h_source.html @@ -145,7 +145,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 f64e4216ae..89bcab1523 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 b46426dc8f..7d1cfad94d 100644 --- a/docs/de/d57/structedash__packager_1_1media_1_1MuxerOptions.html +++ b/docs/de/d57/structedash__packager_1_1media_1_1MuxerOptions.html @@ -309,7 +309,7 @@ std::string  diff --git a/docs/de/d59/classedash__packager_1_1media_1_1mp2t_1_1AacProgramMapTableWriter.html b/docs/de/d59/classedash__packager_1_1media_1_1mp2t_1_1AacProgramMapTableWriter.html index 73f8858ee1..2334e4e005 100644 --- a/docs/de/d59/classedash__packager_1_1media_1_1mp2t_1_1AacProgramMapTableWriter.html +++ b/docs/de/d59/classedash__packager_1_1media_1_1mp2t_1_1AacProgramMapTableWriter.html @@ -226,7 +226,7 @@ static const uint8_t kElem 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 f672263d99..2a0d947cc6 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 846cbb5c6d..f4b2d42cd7 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 b37a701419..d43fc05bf8 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 bd53d47ec8..d0dc31e874 100644 --- a/docs/de/d5c/mpd__flags_8h_source.html +++ b/docs/de/d5c/mpd__flags_8h_source.html @@ -114,7 +114,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 e68e0cc6ce..80adef77f8 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 298800068e..c580a63236 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 @@ -182,7 +182,7 @@ FourCC protection_scheme diff --git a/docs/de/d6e/language__utils_8h_source.html b/docs/de/d6e/language__utils_8h_source.html index 4881db9701..07298788f7 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 a0f6e1e31d..4ac889955d 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 59fdef63ce..bcbd9d3f1c 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 @@ -111,7 +111,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 dda8721d26..2ca33dec2f 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 9e6814eada..beea76e927 100644 --- a/docs/de/d7b/mp4__media__parser_8h_source.html +++ b/docs/de/d7b/mp4__media__parser_8h_source.html @@ -194,19 +194,19 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
114 #endif // MEDIA_FORMATS_MP4_MP4_MEDIA_PARSER_H_
-
bool LoadMoov(const std::string &file_path)
+
bool LoadMoov(const std::string &file_path)
base::Callback< bool(uint32_t track_id, const scoped_refptr< MediaSample > &media_sample)> NewSampleCB
Definition: media_parser.h:44
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:31
base::Callback< void(const std::vector< scoped_refptr< StreamInfo > > &stream_info)> InitCB
Definition: media_parser.h:35
-
bool Flush() override WARN_UNUSED_RESULT
-
void Init(const InitCB &init_cb, const NewSampleCB &new_sample_cb, KeySource *decryption_key_source) override
-
bool Parse(const uint8_t *buf, int size) override WARN_UNUSED_RESULT
+
bool Flush() override WARN_UNUSED_RESULT
+
void Init(const InitCB &init_cb, const NewSampleCB &new_sample_cb, KeySource *decryption_key_source) override
+
bool Parse(const uint8_t *buf, int size) override WARN_UNUSED_RESULT
Class for reading MP4 boxes.
Definition: box_reader.h:24
diff --git a/docs/de/d83/box__definitions__comparison_8h_source.html b/docs/de/d83/box__definitions__comparison_8h_source.html index d8e858f480..05b3b18b32 100644 --- a/docs/de/d83/box__definitions__comparison_8h_source.html +++ b/docs/de/d83/box__definitions__comparison_8h_source.html @@ -245,343 +245,354 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
156  return lhs.sample_number == rhs.sample_number;
157 }
158 
-
159 inline bool operator==(const SampleTable& lhs, const SampleTable& rhs) {
-
160  return lhs.description == rhs.description &&
-
161  lhs.decoding_time_to_sample == rhs.decoding_time_to_sample &&
-
162  lhs.composition_time_to_sample == rhs.composition_time_to_sample &&
-
163  lhs.sample_to_chunk == rhs.sample_to_chunk &&
-
164  lhs.sample_size == rhs.sample_size &&
-
165  lhs.chunk_large_offset == rhs.chunk_large_offset &&
-
166  lhs.sync_sample == rhs.sync_sample;
+
159 inline bool operator==(const CencSampleEncryptionInfoEntry& lhs,
+
160  const CencSampleEncryptionInfoEntry& rhs) {
+
161  return lhs.is_protected == rhs.is_protected &&
+
162  lhs.per_sample_iv_size == rhs.per_sample_iv_size &&
+
163  lhs.key_id == rhs.key_id &&
+
164  lhs.crypt_byte_block == rhs.crypt_byte_block &&
+
165  lhs.skip_byte_block == rhs.skip_byte_block &&
+
166  lhs.constant_iv == rhs.constant_iv;
167 }
168 
-
169 inline bool operator==(const EditListEntry& lhs, const EditListEntry& rhs) {
-
170  return lhs.segment_duration == rhs.segment_duration &&
-
171  lhs.media_time == rhs.media_time &&
-
172  lhs.media_rate_integer == rhs.media_rate_integer &&
-
173  lhs.media_rate_fraction == rhs.media_rate_fraction;
-
174 }
-
175 
-
176 inline bool operator==(const EditList& lhs, const EditList& rhs) {
-
177  return lhs.edits == rhs.edits;
-
178 }
-
179 
-
180 inline bool operator==(const Edit& lhs, const Edit& rhs) {
-
181  return lhs.list == rhs.list;
-
182 }
-
183 
-
184 inline bool operator==(const HandlerReference& lhs,
-
185  const HandlerReference& rhs) {
-
186  return lhs.handler_type == rhs.handler_type;
-
187 }
-
188 
-
189 inline bool operator==(const Language& lhs,
-
190  const Language& rhs) {
-
191  return lhs.code == rhs.code;
-
192 }
-
193 
-
194 inline bool operator==(const PrivFrame& lhs, const PrivFrame& rhs) {
-
195  return lhs.owner == rhs.owner && lhs.value == rhs.value;
-
196 }
-
197 
-
198 inline bool operator==(const ID3v2& lhs, const ID3v2& rhs) {
-
199  return lhs.language == rhs.language && lhs.private_frame == rhs.private_frame;
-
200 }
-
201 
-
202 inline bool operator==(const Metadata& lhs, const Metadata& rhs) {
-
203  return lhs.handler == rhs.handler && lhs.id3v2 == rhs.id3v2;
-
204 }
-
205 
-
206 inline bool operator==(const CodecConfigurationRecord& lhs,
-
207  const CodecConfigurationRecord& rhs) {
-
208  return lhs.data == rhs.data;
-
209 }
-
210 
-
211 inline bool operator==(const PixelAspectRatio& lhs,
-
212  const PixelAspectRatio& rhs) {
-
213  return lhs.h_spacing == rhs.h_spacing && lhs.v_spacing == rhs.v_spacing;
-
214 }
-
215 
-
216 inline bool operator==(const VideoSampleEntry& lhs,
-
217  const VideoSampleEntry& rhs) {
-
218  return lhs.format == rhs.format &&
-
219  lhs.data_reference_index == rhs.data_reference_index &&
-
220  lhs.width == rhs.width && lhs.height == rhs.height &&
-
221  lhs.pixel_aspect == rhs.pixel_aspect && lhs.sinf == rhs.sinf &&
-
222  lhs.codec_config_record == rhs.codec_config_record;
-
223 }
-
224 
-
225 inline bool operator==(const ESDescriptor& lhs, const ESDescriptor& rhs) {
-
226  return lhs.esid() == rhs.esid() && lhs.object_type() == rhs.object_type() &&
-
227  lhs.max_bitrate() == rhs.max_bitrate() &&
-
228  lhs.avg_bitrate() == rhs.avg_bitrate() &&
-
229  lhs.decoder_specific_info() == rhs.decoder_specific_info();
+
169 inline bool operator==(const AudioRollRecoveryEntry& lhs,
+
170  const AudioRollRecoveryEntry& rhs) {
+
171  return lhs.roll_distance == rhs.roll_distance;
+
172 }
+
173 
+
174 inline bool operator==(const SampleGroupDescription& lhs,
+
175  const SampleGroupDescription& rhs) {
+
176  return lhs.grouping_type == rhs.grouping_type &&
+
177  lhs.cenc_sample_encryption_info_entries ==
+
178  rhs.cenc_sample_encryption_info_entries &&
+
179  lhs.audio_roll_recovery_entries == rhs.audio_roll_recovery_entries;
+
180 }
+
181 
+
182 inline bool operator==(const SampleToGroupEntry& lhs,
+
183  const SampleToGroupEntry& rhs) {
+
184  return lhs.sample_count == rhs.sample_count &&
+
185  lhs.group_description_index == rhs.group_description_index;
+
186 }
+
187 
+
188 inline bool operator==(const SampleToGroup& lhs,
+
189  const SampleToGroup& rhs) {
+
190  return lhs.grouping_type == rhs.grouping_type &&
+
191  lhs.grouping_type_parameter == rhs.grouping_type_parameter &&
+
192  lhs.entries == rhs.entries;
+
193 }
+
194 
+
195 inline bool operator==(const SampleTable& lhs, const SampleTable& rhs) {
+
196  return lhs.description == rhs.description &&
+
197  lhs.decoding_time_to_sample == rhs.decoding_time_to_sample &&
+
198  lhs.composition_time_to_sample == rhs.composition_time_to_sample &&
+
199  lhs.sample_to_chunk == rhs.sample_to_chunk &&
+
200  lhs.sample_size == rhs.sample_size &&
+
201  lhs.chunk_large_offset == rhs.chunk_large_offset &&
+
202  lhs.sync_sample == rhs.sync_sample &&
+
203  lhs.sample_group_descriptions == rhs.sample_group_descriptions &&
+
204  lhs.sample_to_groups == rhs.sample_to_groups;
+
205 }
+
206 
+
207 inline bool operator==(const EditListEntry& lhs, const EditListEntry& rhs) {
+
208  return lhs.segment_duration == rhs.segment_duration &&
+
209  lhs.media_time == rhs.media_time &&
+
210  lhs.media_rate_integer == rhs.media_rate_integer &&
+
211  lhs.media_rate_fraction == rhs.media_rate_fraction;
+
212 }
+
213 
+
214 inline bool operator==(const EditList& lhs, const EditList& rhs) {
+
215  return lhs.edits == rhs.edits;
+
216 }
+
217 
+
218 inline bool operator==(const Edit& lhs, const Edit& rhs) {
+
219  return lhs.list == rhs.list;
+
220 }
+
221 
+
222 inline bool operator==(const HandlerReference& lhs,
+
223  const HandlerReference& rhs) {
+
224  return lhs.handler_type == rhs.handler_type;
+
225 }
+
226 
+
227 inline bool operator==(const Language& lhs,
+
228  const Language& rhs) {
+
229  return lhs.code == rhs.code;
230 }
231 
-
232 inline bool operator==(const ElementaryStreamDescriptor& lhs,
-
233  const ElementaryStreamDescriptor& rhs) {
-
234  return lhs.es_descriptor == rhs.es_descriptor;
-
235 }
-
236 
-
237 inline bool operator==(const DTSSpecific& lhs,
-
238  const DTSSpecific& rhs) {
-
239  return lhs.sampling_frequency == rhs.sampling_frequency &&
-
240  lhs.max_bitrate == rhs.max_bitrate &&
-
241  lhs.avg_bitrate == rhs.avg_bitrate &&
-
242  lhs.pcm_sample_depth == rhs.pcm_sample_depth &&
-
243  lhs.extra_data == rhs.extra_data;
-
244 }
-
245 
-
246 inline bool operator==(const AC3Specific& lhs,
-
247  const AC3Specific& rhs) {
-
248  return lhs.data == rhs.data;
-
249 }
-
250 
-
251 inline bool operator==(const EC3Specific& lhs,
-
252  const EC3Specific& rhs) {
-
253  return lhs.data == rhs.data;
-
254 }
-
255 
-
256 inline bool operator==(const AudioSampleEntry& lhs,
-
257  const AudioSampleEntry& rhs) {
-
258  return lhs.format == rhs.format &&
-
259  lhs.data_reference_index == rhs.data_reference_index &&
-
260  lhs.channelcount == rhs.channelcount &&
-
261  lhs.samplesize == rhs.samplesize && lhs.samplerate == rhs.samplerate &&
-
262  lhs.sinf == rhs.sinf && lhs.esds == rhs.esds && lhs.ddts == rhs.ddts &&
-
263  lhs.dac3 == rhs.dac3 && lhs.dec3 == rhs.dec3;
-
264 }
-
265 
-
266 inline bool operator==(const WebVTTConfigurationBox& lhs,
-
267  const WebVTTConfigurationBox& rhs) {
-
268  return lhs.config == rhs.config;
-
269 }
-
270 
-
271 inline bool operator==(const WebVTTSourceLabelBox& lhs,
-
272  const WebVTTSourceLabelBox& rhs) {
-
273  return lhs.source_label == rhs.source_label;
-
274 }
-
275 
-
276 inline bool operator==(const TextSampleEntry& lhs, const TextSampleEntry& rhs) {
-
277  return lhs.config == rhs.config && lhs.label == rhs.label;
-
278 }
-
279 
-
280 inline bool operator==(const MediaHeader& lhs, const MediaHeader& rhs) {
-
281  return lhs.creation_time == rhs.creation_time &&
-
282  lhs.modification_time == rhs.modification_time &&
-
283  lhs.timescale == rhs.timescale && lhs.duration == rhs.duration &&
-
284  lhs.language == rhs.language;
+
232 inline bool operator==(const PrivFrame& lhs, const PrivFrame& rhs) {
+
233  return lhs.owner == rhs.owner && lhs.value == rhs.value;
+
234 }
+
235 
+
236 inline bool operator==(const ID3v2& lhs, const ID3v2& rhs) {
+
237  return lhs.language == rhs.language && lhs.private_frame == rhs.private_frame;
+
238 }
+
239 
+
240 inline bool operator==(const Metadata& lhs, const Metadata& rhs) {
+
241  return lhs.handler == rhs.handler && lhs.id3v2 == rhs.id3v2;
+
242 }
+
243 
+
244 inline bool operator==(const CodecConfigurationRecord& lhs,
+
245  const CodecConfigurationRecord& rhs) {
+
246  return lhs.data == rhs.data;
+
247 }
+
248 
+
249 inline bool operator==(const PixelAspectRatio& lhs,
+
250  const PixelAspectRatio& rhs) {
+
251  return lhs.h_spacing == rhs.h_spacing && lhs.v_spacing == rhs.v_spacing;
+
252 }
+
253 
+
254 inline bool operator==(const VideoSampleEntry& lhs,
+
255  const VideoSampleEntry& rhs) {
+
256  return lhs.format == rhs.format &&
+
257  lhs.data_reference_index == rhs.data_reference_index &&
+
258  lhs.width == rhs.width && lhs.height == rhs.height &&
+
259  lhs.pixel_aspect == rhs.pixel_aspect && lhs.sinf == rhs.sinf &&
+
260  lhs.codec_config_record == rhs.codec_config_record;
+
261 }
+
262 
+
263 inline bool operator==(const ESDescriptor& lhs, const ESDescriptor& rhs) {
+
264  return lhs.esid() == rhs.esid() && lhs.object_type() == rhs.object_type() &&
+
265  lhs.max_bitrate() == rhs.max_bitrate() &&
+
266  lhs.avg_bitrate() == rhs.avg_bitrate() &&
+
267  lhs.decoder_specific_info() == rhs.decoder_specific_info();
+
268 }
+
269 
+
270 inline bool operator==(const ElementaryStreamDescriptor& lhs,
+
271  const ElementaryStreamDescriptor& rhs) {
+
272  return lhs.es_descriptor == rhs.es_descriptor;
+
273 }
+
274 
+
275 inline bool operator==(const DTSSpecific& lhs, const DTSSpecific& rhs) {
+
276  return lhs.sampling_frequency == rhs.sampling_frequency &&
+
277  lhs.max_bitrate == rhs.max_bitrate &&
+
278  lhs.avg_bitrate == rhs.avg_bitrate &&
+
279  lhs.pcm_sample_depth == rhs.pcm_sample_depth &&
+
280  lhs.extra_data == rhs.extra_data;
+
281 }
+
282 
+
283 inline bool operator==(const AC3Specific& lhs, const AC3Specific& rhs) {
+
284  return lhs.data == rhs.data;
285 }
286 
-
287 inline bool operator==(const VideoMediaHeader& lhs,
-
288  const VideoMediaHeader& rhs) {
-
289  return lhs.graphicsmode == rhs.graphicsmode &&
-
290  lhs.opcolor_red == rhs.opcolor_red &&
-
291  lhs.opcolor_green == rhs.opcolor_green &&
-
292  lhs.opcolor_blue == rhs.opcolor_blue;
-
293 }
-
294 
-
295 inline bool operator==(const SoundMediaHeader& lhs,
-
296  const SoundMediaHeader& rhs) {
-
297  return lhs.balance == rhs.balance;
-
298 }
-
299 
-
300 inline bool operator==(const SubtitleMediaHeader& lhs,
-
301  const SubtitleMediaHeader& rhs) {
-
302  return true;
-
303 }
-
304 
-
305 inline bool operator==(const DataEntryUrl& lhs, const DataEntryUrl& rhs) {
-
306  return lhs.flags == rhs.flags && lhs.location == rhs.location;
-
307 }
-
308 
-
309 inline bool operator==(const DataReference& lhs, const DataReference& rhs) {
-
310  return lhs.data_entry == rhs.data_entry;
-
311 }
-
312 
-
313 inline bool operator==(const DataInformation& lhs, const DataInformation& rhs) {
-
314  return lhs.dref == rhs.dref;
-
315 }
-
316 
-
317 inline bool operator==(const MediaInformation& lhs,
-
318  const MediaInformation& rhs) {
-
319  return lhs.dinf == rhs.dinf && lhs.sample_table == rhs.sample_table &&
-
320  lhs.vmhd == rhs.vmhd && lhs.smhd == rhs.smhd;
-
321 }
-
322 
-
323 inline bool operator==(const Media& lhs, const Media& rhs) {
-
324  return lhs.header == rhs.header && lhs.handler == rhs.handler &&
-
325  lhs.information == rhs.information;
-
326 }
-
327 
-
328 inline bool operator==(const Track& lhs, const Track& rhs) {
-
329  return lhs.header == rhs.header && lhs.media == rhs.media &&
-
330  lhs.edit == rhs.edit && lhs.sample_encryption == rhs.sample_encryption;
-
331 }
-
332 
-
333 inline bool operator==(const MovieExtendsHeader& lhs,
-
334  const MovieExtendsHeader& rhs) {
-
335  return lhs.fragment_duration == rhs.fragment_duration;
-
336 }
-
337 
-
338 inline bool operator==(const TrackExtends& lhs, const TrackExtends& rhs) {
-
339  return lhs.track_id == rhs.track_id &&
-
340  lhs.default_sample_description_index ==
-
341  rhs.default_sample_description_index &&
-
342  lhs.default_sample_duration == rhs.default_sample_duration &&
-
343  lhs.default_sample_size == rhs.default_sample_size &&
-
344  lhs.default_sample_flags == rhs.default_sample_flags;
-
345 }
-
346 
-
347 inline bool operator==(const MovieExtends& lhs, const MovieExtends& rhs) {
-
348  return lhs.header == rhs.header && lhs.tracks == rhs.tracks;
-
349 }
-
350 
-
351 inline bool operator==(const Movie& lhs, const Movie& rhs) {
-
352  return lhs.header == rhs.header && lhs.extends == rhs.extends &&
-
353  lhs.tracks == rhs.tracks && lhs.pssh == rhs.pssh;
-
354 }
-
355 
-
356 inline bool operator==(const TrackFragmentDecodeTime& lhs,
-
357  const TrackFragmentDecodeTime& rhs) {
-
358  return lhs.decode_time == rhs.decode_time;
-
359 }
-
360 
-
361 inline bool operator==(const MovieFragmentHeader& lhs,
-
362  const MovieFragmentHeader& rhs) {
-
363  return lhs.sequence_number == rhs.sequence_number;
-
364 }
-
365 
-
366 inline bool operator==(const TrackFragmentHeader& lhs,
-
367  const TrackFragmentHeader& rhs) {
-
368  return lhs.flags == rhs.flags && lhs.track_id == rhs.track_id &&
-
369  lhs.sample_description_index == rhs.sample_description_index &&
-
370  lhs.default_sample_duration == rhs.default_sample_duration &&
-
371  lhs.default_sample_size == rhs.default_sample_size &&
-
372  lhs.default_sample_flags == rhs.default_sample_flags;
-
373 }
-
374 
-
375 inline bool operator==(const TrackFragmentRun& lhs,
-
376  const TrackFragmentRun& rhs) {
-
377  return lhs.flags == rhs.flags && lhs.sample_count == rhs.sample_count &&
-
378  lhs.data_offset == rhs.data_offset &&
-
379  lhs.sample_flags == rhs.sample_flags &&
-
380  lhs.sample_sizes == rhs.sample_sizes &&
-
381  lhs.sample_durations == rhs.sample_durations &&
-
382  lhs.sample_composition_time_offsets ==
-
383  rhs.sample_composition_time_offsets;
-
384 }
-
385 
-
386 inline bool operator==(const SampleToGroupEntry& lhs,
-
387  const SampleToGroupEntry& rhs) {
-
388  return lhs.sample_count == rhs.sample_count &&
-
389  lhs.group_description_index == rhs.group_description_index;
-
390 }
-
391 
-
392 inline bool operator==(const SampleToGroup& lhs,
-
393  const SampleToGroup& rhs) {
-
394  return lhs.grouping_type == rhs.grouping_type &&
-
395  lhs.grouping_type_parameter == rhs.grouping_type_parameter &&
-
396  lhs.entries == rhs.entries;
-
397 }
-
398 
-
399 inline bool operator==(const CencSampleEncryptionInfoEntry& lhs,
-
400  const CencSampleEncryptionInfoEntry& rhs) {
-
401  return lhs.is_protected == rhs.is_protected &&
-
402  lhs.per_sample_iv_size == rhs.per_sample_iv_size &&
-
403  lhs.key_id == rhs.key_id &&
-
404  lhs.crypt_byte_block == rhs.crypt_byte_block &&
-
405  lhs.skip_byte_block == rhs.skip_byte_block &&
-
406  lhs.constant_iv == rhs.constant_iv;
-
407 }
-
408 
-
409 inline bool operator==(const SampleGroupDescription& lhs,
-
410  const SampleGroupDescription& rhs) {
-
411  return lhs.grouping_type == rhs.grouping_type &&
-
412  lhs.entries == rhs.entries;
+
287 inline bool operator==(const EC3Specific& lhs, const EC3Specific& rhs) {
+
288  return lhs.data == rhs.data;
+
289 }
+
290 
+
291 inline bool operator==(const OpusSpecific& lhs, const OpusSpecific& rhs) {
+
292  return lhs.opus_identification_header == rhs.opus_identification_header &&
+
293  lhs.preskip == rhs.preskip;
+
294 }
+
295 
+
296 inline bool operator==(const AudioSampleEntry& lhs,
+
297  const AudioSampleEntry& rhs) {
+
298  return lhs.format == rhs.format &&
+
299  lhs.data_reference_index == rhs.data_reference_index &&
+
300  lhs.channelcount == rhs.channelcount &&
+
301  lhs.samplesize == rhs.samplesize && lhs.samplerate == rhs.samplerate &&
+
302  lhs.sinf == rhs.sinf && lhs.esds == rhs.esds && lhs.ddts == rhs.ddts &&
+
303  lhs.dac3 == rhs.dac3 && lhs.dec3 == rhs.dec3 && lhs.dops == rhs.dops;
+
304 }
+
305 
+
306 inline bool operator==(const WebVTTConfigurationBox& lhs,
+
307  const WebVTTConfigurationBox& rhs) {
+
308  return lhs.config == rhs.config;
+
309 }
+
310 
+
311 inline bool operator==(const WebVTTSourceLabelBox& lhs,
+
312  const WebVTTSourceLabelBox& rhs) {
+
313  return lhs.source_label == rhs.source_label;
+
314 }
+
315 
+
316 inline bool operator==(const TextSampleEntry& lhs, const TextSampleEntry& rhs) {
+
317  return lhs.config == rhs.config && lhs.label == rhs.label;
+
318 }
+
319 
+
320 inline bool operator==(const MediaHeader& lhs, const MediaHeader& rhs) {
+
321  return lhs.creation_time == rhs.creation_time &&
+
322  lhs.modification_time == rhs.modification_time &&
+
323  lhs.timescale == rhs.timescale && lhs.duration == rhs.duration &&
+
324  lhs.language == rhs.language;
+
325 }
+
326 
+
327 inline bool operator==(const VideoMediaHeader& lhs,
+
328  const VideoMediaHeader& rhs) {
+
329  return lhs.graphicsmode == rhs.graphicsmode &&
+
330  lhs.opcolor_red == rhs.opcolor_red &&
+
331  lhs.opcolor_green == rhs.opcolor_green &&
+
332  lhs.opcolor_blue == rhs.opcolor_blue;
+
333 }
+
334 
+
335 inline bool operator==(const SoundMediaHeader& lhs,
+
336  const SoundMediaHeader& rhs) {
+
337  return lhs.balance == rhs.balance;
+
338 }
+
339 
+
340 inline bool operator==(const SubtitleMediaHeader& lhs,
+
341  const SubtitleMediaHeader& rhs) {
+
342  return true;
+
343 }
+
344 
+
345 inline bool operator==(const DataEntryUrl& lhs, const DataEntryUrl& rhs) {
+
346  return lhs.flags == rhs.flags && lhs.location == rhs.location;
+
347 }
+
348 
+
349 inline bool operator==(const DataReference& lhs, const DataReference& rhs) {
+
350  return lhs.data_entry == rhs.data_entry;
+
351 }
+
352 
+
353 inline bool operator==(const DataInformation& lhs, const DataInformation& rhs) {
+
354  return lhs.dref == rhs.dref;
+
355 }
+
356 
+
357 inline bool operator==(const MediaInformation& lhs,
+
358  const MediaInformation& rhs) {
+
359  return lhs.dinf == rhs.dinf && lhs.sample_table == rhs.sample_table &&
+
360  lhs.vmhd == rhs.vmhd && lhs.smhd == rhs.smhd;
+
361 }
+
362 
+
363 inline bool operator==(const Media& lhs, const Media& rhs) {
+
364  return lhs.header == rhs.header && lhs.handler == rhs.handler &&
+
365  lhs.information == rhs.information;
+
366 }
+
367 
+
368 inline bool operator==(const Track& lhs, const Track& rhs) {
+
369  return lhs.header == rhs.header && lhs.media == rhs.media &&
+
370  lhs.edit == rhs.edit && lhs.sample_encryption == rhs.sample_encryption;
+
371 }
+
372 
+
373 inline bool operator==(const MovieExtendsHeader& lhs,
+
374  const MovieExtendsHeader& rhs) {
+
375  return lhs.fragment_duration == rhs.fragment_duration;
+
376 }
+
377 
+
378 inline bool operator==(const TrackExtends& lhs, const TrackExtends& rhs) {
+
379  return lhs.track_id == rhs.track_id &&
+
380  lhs.default_sample_description_index ==
+
381  rhs.default_sample_description_index &&
+
382  lhs.default_sample_duration == rhs.default_sample_duration &&
+
383  lhs.default_sample_size == rhs.default_sample_size &&
+
384  lhs.default_sample_flags == rhs.default_sample_flags;
+
385 }
+
386 
+
387 inline bool operator==(const MovieExtends& lhs, const MovieExtends& rhs) {
+
388  return lhs.header == rhs.header && lhs.tracks == rhs.tracks;
+
389 }
+
390 
+
391 inline bool operator==(const Movie& lhs, const Movie& rhs) {
+
392  return lhs.header == rhs.header && lhs.extends == rhs.extends &&
+
393  lhs.tracks == rhs.tracks && lhs.pssh == rhs.pssh;
+
394 }
+
395 
+
396 inline bool operator==(const TrackFragmentDecodeTime& lhs,
+
397  const TrackFragmentDecodeTime& rhs) {
+
398  return lhs.decode_time == rhs.decode_time;
+
399 }
+
400 
+
401 inline bool operator==(const MovieFragmentHeader& lhs,
+
402  const MovieFragmentHeader& rhs) {
+
403  return lhs.sequence_number == rhs.sequence_number;
+
404 }
+
405 
+
406 inline bool operator==(const TrackFragmentHeader& lhs,
+
407  const TrackFragmentHeader& rhs) {
+
408  return lhs.flags == rhs.flags && lhs.track_id == rhs.track_id &&
+
409  lhs.sample_description_index == rhs.sample_description_index &&
+
410  lhs.default_sample_duration == rhs.default_sample_duration &&
+
411  lhs.default_sample_size == rhs.default_sample_size &&
+
412  lhs.default_sample_flags == rhs.default_sample_flags;
413 }
414 
-
415 inline bool operator==(const TrackFragment& lhs, const TrackFragment& rhs) {
-
416  return lhs.header == rhs.header && lhs.runs == rhs.runs &&
-
417  lhs.decode_time == rhs.decode_time &&
-
418  lhs.auxiliary_offset == rhs.auxiliary_offset &&
-
419  lhs.auxiliary_size == rhs.auxiliary_size &&
-
420  lhs.sample_encryption == rhs.sample_encryption;
-
421 }
-
422 
-
423 inline bool operator==(const MovieFragment& lhs, const MovieFragment& rhs) {
-
424  return lhs.header == rhs.header && lhs.tracks == rhs.tracks &&
-
425  lhs.pssh == rhs.pssh;
-
426 }
-
427 
-
428 inline bool operator==(const SegmentReference& lhs,
-
429  const SegmentReference& rhs) {
-
430  return lhs.reference_type == rhs.reference_type &&
-
431  lhs.referenced_size == rhs.referenced_size &&
-
432  lhs.subsegment_duration == rhs.subsegment_duration &&
-
433  lhs.starts_with_sap == rhs.starts_with_sap &&
-
434  lhs.sap_type == rhs.sap_type &&
-
435  lhs.sap_delta_time == rhs.sap_delta_time;
-
436 }
-
437 
-
438 inline bool operator==(const SegmentIndex& lhs, const SegmentIndex& rhs) {
-
439  return lhs.reference_id == rhs.reference_id &&
-
440  lhs.timescale == rhs.timescale &&
-
441  lhs.earliest_presentation_time == rhs.earliest_presentation_time &&
-
442  lhs.first_offset == rhs.first_offset &&
-
443  lhs.references == rhs.references;
-
444 }
-
445 
-
446 inline bool operator==(const CueSourceIDBox& lhs,
-
447  const CueSourceIDBox& rhs) {
-
448  return lhs.source_id == rhs.source_id;
-
449 }
-
450 
-
451 inline bool operator==(const CueTimeBox& lhs,
-
452  const CueTimeBox& rhs) {
-
453  return lhs.cue_current_time == rhs.cue_current_time;
-
454 }
-
455 
-
456 inline bool operator==(const CueIDBox& lhs,
-
457  const CueIDBox& rhs) {
-
458  return lhs.cue_id == rhs.cue_id;
-
459 }
-
460 
-
461 inline bool operator==(const CueSettingsBox& lhs,
-
462  const CueSettingsBox& rhs) {
-
463  return lhs.settings == rhs.settings;
-
464 }
-
465 
-
466 inline bool operator==(const CuePayloadBox& lhs,
-
467  const CuePayloadBox& rhs) {
-
468  return lhs.cue_text == rhs.cue_text;
-
469 }
-
470 
-
471 inline bool operator==(const VTTEmptyCueBox& lhs, const VTTEmptyCueBox& rhs) {
-
472  return true;
-
473 }
-
474 
-
475 inline bool operator==(const VTTAdditionalTextBox& lhs,
-
476  const VTTAdditionalTextBox& rhs) {
-
477  return lhs.cue_additional_text == rhs.cue_additional_text;
-
478 }
-
479 
-
480 inline bool operator==(const VTTCueBox& lhs,
-
481  const VTTCueBox& rhs) {
-
482  return lhs.cue_source_id == rhs.cue_source_id && lhs.cue_id == rhs.cue_id &&
-
483  lhs.cue_time == rhs.cue_time && lhs.cue_settings == rhs.cue_settings &&
-
484  lhs.cue_payload == rhs.cue_payload;
-
485 }
-
486 
-
487 } // namespace mp4
-
488 } // namespace media
-
489 } // namespace edash_packager
+
415 inline bool operator==(const TrackFragmentRun& lhs,
+
416  const TrackFragmentRun& rhs) {
+
417  return lhs.flags == rhs.flags && lhs.sample_count == rhs.sample_count &&
+
418  lhs.data_offset == rhs.data_offset &&
+
419  lhs.sample_flags == rhs.sample_flags &&
+
420  lhs.sample_sizes == rhs.sample_sizes &&
+
421  lhs.sample_durations == rhs.sample_durations &&
+
422  lhs.sample_composition_time_offsets ==
+
423  rhs.sample_composition_time_offsets;
+
424 }
+
425 
+
426 inline bool operator==(const TrackFragment& lhs, const TrackFragment& rhs) {
+
427  return lhs.header == rhs.header && lhs.runs == rhs.runs &&
+
428  lhs.decode_time == rhs.decode_time &&
+
429  lhs.auxiliary_offset == rhs.auxiliary_offset &&
+
430  lhs.auxiliary_size == rhs.auxiliary_size &&
+
431  lhs.sample_encryption == rhs.sample_encryption;
+
432 }
+
433 
+
434 inline bool operator==(const MovieFragment& lhs, const MovieFragment& rhs) {
+
435  return lhs.header == rhs.header && lhs.tracks == rhs.tracks &&
+
436  lhs.pssh == rhs.pssh;
+
437 }
+
438 
+
439 inline bool operator==(const SegmentReference& lhs,
+
440  const SegmentReference& rhs) {
+
441  return lhs.reference_type == rhs.reference_type &&
+
442  lhs.referenced_size == rhs.referenced_size &&
+
443  lhs.subsegment_duration == rhs.subsegment_duration &&
+
444  lhs.starts_with_sap == rhs.starts_with_sap &&
+
445  lhs.sap_type == rhs.sap_type &&
+
446  lhs.sap_delta_time == rhs.sap_delta_time;
+
447 }
+
448 
+
449 inline bool operator==(const SegmentIndex& lhs, const SegmentIndex& rhs) {
+
450  return lhs.reference_id == rhs.reference_id &&
+
451  lhs.timescale == rhs.timescale &&
+
452  lhs.earliest_presentation_time == rhs.earliest_presentation_time &&
+
453  lhs.first_offset == rhs.first_offset &&
+
454  lhs.references == rhs.references;
+
455 }
+
456 
+
457 inline bool operator==(const CueSourceIDBox& lhs,
+
458  const CueSourceIDBox& rhs) {
+
459  return lhs.source_id == rhs.source_id;
+
460 }
+
461 
+
462 inline bool operator==(const CueTimeBox& lhs,
+
463  const CueTimeBox& rhs) {
+
464  return lhs.cue_current_time == rhs.cue_current_time;
+
465 }
+
466 
+
467 inline bool operator==(const CueIDBox& lhs,
+
468  const CueIDBox& rhs) {
+
469  return lhs.cue_id == rhs.cue_id;
+
470 }
+
471 
+
472 inline bool operator==(const CueSettingsBox& lhs,
+
473  const CueSettingsBox& rhs) {
+
474  return lhs.settings == rhs.settings;
+
475 }
+
476 
+
477 inline bool operator==(const CuePayloadBox& lhs,
+
478  const CuePayloadBox& rhs) {
+
479  return lhs.cue_text == rhs.cue_text;
+
480 }
+
481 
+
482 inline bool operator==(const VTTEmptyCueBox& lhs, const VTTEmptyCueBox& rhs) {
+
483  return true;
+
484 }
+
485 
+
486 inline bool operator==(const VTTAdditionalTextBox& lhs,
+
487  const VTTAdditionalTextBox& rhs) {
+
488  return lhs.cue_additional_text == rhs.cue_additional_text;
+
489 }
490 
-
491 #endif // MEDIA_FORMATS_MP4_BOX_DEFINITIONS_COMPARISON_H_
+
491 inline bool operator==(const VTTCueBox& lhs,
+
492  const VTTCueBox& rhs) {
+
493  return lhs.cue_source_id == rhs.cue_source_id && lhs.cue_id == rhs.cue_id &&
+
494  lhs.cue_time == rhs.cue_time && lhs.cue_settings == rhs.cue_settings &&
+
495  lhs.cue_payload == rhs.cue_payload;
+
496 }
+
497 
+
498 } // namespace mp4
+
499 } // namespace media
+
500 } // namespace edash_packager
+
501 
+
502 #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 0d055280a7..a150ea4452 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 f19e2b4129..5e714eacd6 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 ee486baa57..86fdcd2859 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 e358e48558..c0ecbd597b 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 7c85ac0a3a..91653835ca 100644 --- a/docs/de/d98/classedash__packager_1_1media_1_1WebMAudioClient.html +++ b/docs/de/d98/classedash__packager_1_1media_1_1WebMAudioClient.html @@ -114,8 +114,8 @@ Public Member Functions void Reset ()  Reset this object's state so it can process a new audio track element.
  -scoped_refptr< AudioStreamInfoGetAudioStreamInfo (int64_t track_num, const std::string &codec_id, const std::vector< uint8_t > &codec_private, const std::string &language, bool is_encrypted) -  +scoped_refptr< AudioStreamInfoGetAudioStreamInfo (int64_t track_num, const std::string &codec_id, const std::vector< uint8_t > &codec_private, int64_t seek_preroll, int64_t codec_delay, const std::string &language, bool is_encrypted) +  - Public Member Functions inherited from edash_packager::media::WebMParserClient virtual WebMParserClientOnListStart (int id) @@ -142,7 +142,7 @@ Additional Inherited Members

Definition at line 20 of file webm_audio_client.h.

Member Function Documentation

- +
@@ -164,6 +164,18 @@ Additional Inherited Members + + + + + + + + + + + + @@ -183,7 +195,19 @@ Additional Inherited Members
const std::vector< uint8_t > &  codec_private,
int64_t seek_preroll,
int64_t codec_delay,
-

Create an AudioStreamInfo with the data in |track_num|, |codec_id|, |codec_private|, |is_encrypted| and the fields parsed from the last audio track element this object was used to parse.

+

Create an AudioStreamInfo with the parameters specified.

+
Parameters
+ + + + + + + + +
track_numindicates the track number.
codec_idis the codec identifier.
codec_privatecontains codec specific data.
seek_prerollindicates seek preroll in nanoseconds. A negative value means that the value is not set; in this case, a default value of 0 is used.
codecdelay indicates codec delay in nanoseconds. A negative value means that the value is not set; in this case, a default value of 0 is used.
languageindicates the language for the track.
is_encryptedindicates whether the stream is encrypted.
+
+
Returns
An AudioStreamInfo scoped_refptr if successful.
An empty scoped_refptr if there was unexpected values in the provided parameters or audio track element fields.
@@ -199,7 +223,7 @@ An empty scoped_refptr if there was unexpected values in the provided parameters
diff --git a/docs/de/d9b/structedash__packager_1_1media_1_1H264Sps.html b/docs/de/d9b/structedash__packager_1_1media_1_1H264Sps.html index 8889e25c04..1b5c20bf7e 100644 --- a/docs/de/d9b/structedash__packager_1_1media_1_1H264Sps.html +++ b/docs/de/d9b/structedash__packager_1_1media_1_1H264Sps.html @@ -242,7 +242,7 @@ int chroma_array_type<
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 eac08a446d..4883da8d1c 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 d0a2a6b9b4..6049e65c3a 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/da5/classedash__packager_1_1media_1_1WebMParserClient.html b/docs/de/da5/classedash__packager_1_1media_1_1WebMParserClient.html index a900d07146..9c392d6d36 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 0253194fa5..8928b8378d 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 d08e39861a..e2f4eba860 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/es__parser__h26x_8cc_source.html b/docs/de/dab/es__parser__h26x_8cc_source.html index 5c84b9f206..7c52ab8d43 100644 --- a/docs/de/dab/es__parser__h26x_8cc_source.html +++ b/docs/de/dab/es__parser__h26x_8cc_source.html @@ -375,7 +375,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 facbacf9e2..ae20d35919 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 e8123422f7..d3c0ae6f5f 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 1a87508c49..1243c90110 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 cd0a6246f5..4324eb5957 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 0d1f875af7..7f142410f9 100644 --- a/docs/de/dc1/demuxer_8h_source.html +++ b/docs/de/dc1/demuxer_8h_source.html @@ -187,7 +187,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/dc4/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset.html b/docs/de/dc4/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset.html index c68520ac4e..3a87dc236c 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 @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/de/dcb/ts__segmenter_8h_source.html b/docs/de/dcb/ts__segmenter_8h_source.html index 49affefecb..fff66c5a8f 100644 --- a/docs/de/dcb/ts__segmenter_8h_source.html +++ b/docs/de/dcb/ts__segmenter_8h_source.html @@ -211,7 +211,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/dcc/mock__mpd__notifier_8cc_source.html b/docs/de/dcc/mock__mpd__notifier_8cc_source.html index 86422da662..388bd8f893 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 763341e9f7..6b49814648 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 23e80d170f..be5eb8c17a 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 @@ -117,7 +117,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 ca18001feb..054abe4274 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 f610a32475..31e07b4e32 100644 --- a/docs/de/dd6/muxer__listener__test__helper_8cc_source.html +++ b/docs/de/dd6/muxer__listener__test__helper_8cc_source.html @@ -221,7 +221,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 e5a7ccb139..5d193c0210 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 536 of file box_definitions.h.

+

Definition at line 608 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 1780 of file box_definitions.cc.

+

Definition at line 2028 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 a584b0ccb6..592866bf27 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 8318ff9555..81ffa8fbf6 100644 --- a/docs/de/dfa/muxer__listener_8h_source.html +++ b/docs/de/dfa/muxer__listener_8h_source.html @@ -170,7 +170,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 fa67af61fa..ae7751f2e2 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 77fcfc2f8e..aab8e3ee7d 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 @@ -109,7 +109,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 83bda9ebb4..dfe548c33a 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 bb56176ce0..2d7ce3c8e0 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 4418870b4f..991e893377 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 c6dedff2ed..a738086238 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 7eac2c8c72..d4bdb42c2f 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 9e60dab582..24b7f8c1bd 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 628 of file box_definitions.h.

+

Definition at line 700 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 2031 of file box_definitions.cc.

+

Definition at line 2279 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 9e1b139d9e..e8647e1676 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 17c83d9d32..cc4b6ba8e0 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 1f9584df5e..ca523ff260 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 a42d2ff940..07ff06c56b 100644 --- a/docs/df/d31/muxer__util_8cc_source.html +++ b/docs/df/d31/muxer__util_8cc_source.html @@ -264,7 +264,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 70fa37a9a2..9019fb8bb9 100644 --- a/docs/df/d32/audio__stream__info_8h_source.html +++ b/docs/df/d32/audio__stream__info_8h_source.html @@ -122,7 +122,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
33 
35 class AudioStreamInfo : public StreamInfo {
36  public:
-
38  AudioStreamInfo(int track_id,
+
38  AudioStreamInfo(int track_id,
39  uint32_t time_scale,
40  uint64_t duration,
41  AudioCodec codec,
@@ -131,63 +131,69 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
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_
+
47  uint64_t seek_preroll_ns,
+
48  uint64_t codec_delay_ns,
+
49  uint32_t max_bitrate,
+
50  uint32_t avg_bitrate,
+
51  const uint8_t* extra_data,
+
52  size_t extra_data_size,
+
53  bool is_encrypted);
+
54 
+
57  bool IsValidConfig() const override;
+
58  std::string ToString() const override;
+
60 
+
61  AudioCodec codec() const { return codec_; }
+
62  uint8_t sample_bits() const { return sample_bits_; }
+
63  uint8_t sample_bytes() const { return sample_bits_ / 8; }
+
64  uint8_t num_channels() const { return num_channels_; }
+
65  uint32_t sampling_frequency() const { return sampling_frequency_; }
+
66  uint32_t bytes_per_frame() const {
+
67  return static_cast<uint32_t>(num_channels_) * sample_bits_ / 8;
+
68  }
+
69  uint64_t seek_preroll_ns() const { return seek_preroll_ns_; }
+
70  uint64_t codec_delay_ns() const { return codec_delay_ns_; }
+
71  uint32_t max_bitrate() const { return max_bitrate_; }
+
72  uint32_t avg_bitrate() const { return avg_bitrate_; }
+
73 
+
74  void set_codec(AudioCodec codec) { codec_ = codec; }
+
75  void set_sampling_frequency(const uint32_t sampling_frequency) {
+
76  sampling_frequency_ = sampling_frequency;
+
77  }
+
78 
+
81  static std::string GetCodecString(AudioCodec codec,
+
82  uint8_t audio_object_type);
+
83 
+
84  private:
+
85  ~AudioStreamInfo() override;
+
86 
+
87  AudioCodec codec_;
+
88  uint8_t sample_bits_;
+
89  uint8_t num_channels_;
+
90  uint32_t sampling_frequency_;
+
91  uint64_t seek_preroll_ns_;
+
92  uint64_t codec_delay_ns_;
+
93  uint32_t max_bitrate_;
+
94  uint32_t avg_bitrate_;
+
95 
+
96  // Not using DISALLOW_COPY_AND_ASSIGN here intentionally to allow the compiler
+
97  // generated copy constructor and assignment operator. Since the extra data is
+
98  // typically small, the performance impact is minimal.
+
99 };
+
100 
+
101 } // namespace media
+
102 } // namespace edash_packager
+
103 
+
104 #endif // MEDIA_BASE_AUDIO_STREAM_INFO_H_
Holds audio stream information.
-
std::string ToString() const override
+
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, uint64_t seek_preroll_ns, uint64_t codec_delay_ns, 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 77c807dc43..229790554f 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 389ef2b2ad..ba11fe7f8d 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 eeab7a30eb..9cf88058d2 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 b70ed8b34e..d8bfaa61a7 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 a269c5c5e9..f85fb1bd1b 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 f5705fd541..16d3611717 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 d3e559f430..979f9b02c1 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 @@ -157,6 +157,9 @@ uint32_t samplerate EC3Specific dec3   + +OpusSpecific dops +  @@ -166,7 +169,7 @@ Additional Inherited Members

Additional Inherited Members

Detailed Description

-

Definition at line 329 of file box_definitions.h.

+

Definition at line 337 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 1479 of file box_definitions.cc.

+

Definition at line 1726 of file box_definitions.cc.

@@ -203,7 +206,7 @@ Additional Inherited Members diff --git a/docs/df/d6a/structedash__packager_1_1media_1_1mp4_1_1VideoSampleEntry.html b/docs/df/d6a/structedash__packager_1_1media_1_1mp4_1_1VideoSampleEntry.html index 9b153d107d..a5c2de1e45 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 1271 of file box_definitions.cc.

+

Definition at line 1467 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 9490196a6f..19ace8d7b8 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 e2c1d3aff1..333296fb9c 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 420 of file box_definitions.h.

+

Definition at line 429 of file box_definitions.h.

Member Function Documentation

@@ -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 96d052c6d6..d1c0fd2cf4 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 43917f1466..1e257639c6 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 592 of file box_definitions.h.

+

Definition at line 664 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 1957 of file box_definitions.cc.

+

Definition at line 2205 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 1023e3b619..8f153002f5 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 1759f1b501..80fc7152fc 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 6019e4c797..83ed681857 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/d8d/es__parser__h26x_8h_source.html b/docs/df/d8d/es__parser__h26x_8h_source.html index 32d654f20c..0f03192b4b 100644 --- a/docs/df/d8d/es__parser__h26x_8h_source.html +++ b/docs/df/d8d/es__parser__h26x_8h_source.html @@ -203,7 +203,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 abe80d190c..c1ef98d3fc 100644 --- a/docs/df/d96/xml__node_8cc_source.html +++ b/docs/df/d96/xml__node_8cc_source.html @@ -492,7 +492,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/da9/classedash__packager_1_1media_1_1mp4_1_1Fragmenter-members.html b/docs/df/da9/classedash__packager_1_1media_1_1mp4_1_1Fragmenter-members.html index a6e5a1d269..d38f8b7e72 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 @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); fragment_duration() const (defined in edash_packager::media::mp4::Fragmenter)edash_packager::media::mp4::Fragmenterinline fragment_finalized() const (defined in edash_packager::media::mp4::Fragmenter)edash_packager::media::mp4::Fragmenterinline fragment_initialized() const (defined in edash_packager::media::mp4::Fragmenter)edash_packager::media::mp4::Fragmenterinline - Fragmenter(TrackFragment *traf)edash_packager::media::mp4::Fragmenter + Fragmenter(scoped_refptr< StreamInfo > info, TrackFragment *traf)edash_packager::media::mp4::Fragmenter GenerateSegmentReference(SegmentReference *reference)edash_packager::media::mp4::Fragmenter InitializeFragment(int64_t first_sample_dts)edash_packager::media::mp4::Fragmentervirtual OptimizeSampleEntries(std::vector< T > *entries, T *default_value)edash_packager::media::mp4::Fragmenterprotected @@ -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 0345da681a..63702f7ab0 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 355 of file box_definitions.h.

+

Definition at line 364 of file box_definitions.h.

Member Function Documentation

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

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

-

Definition at line 1548 of file box_definitions.cc.

+

Definition at line 1796 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 5c2ecdf0b5..de840c0b92 100644 --- a/docs/df/dad/decrypt__config_8h_source.html +++ b/docs/df/dad/decrypt__config_8h_source.html @@ -168,7 +168,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 9ec677a52b..3711a29f7e 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 2586de025d..703e1c04d9 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 b5650bfbde..a1278cdf9d 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 75bbc26108..e974b5aa3f 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 44036e1a5a..6936b9e6bf 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 9f6e98fc53..e95f0f045b 100644 --- a/docs/df/dd2/mpd__utils_8h_source.html +++ b/docs/df/dd2/mpd__utils_8h_source.html @@ -174,7 +174,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 4a7abde174..c72c380870 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 08c68b812f..9e1fd6d502 100644 --- a/docs/df/ddc/webm_2segmenter_8h_source.html +++ b/docs/df/ddc/webm_2segmenter_8h_source.html @@ -250,7 +250,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/dde/classedash__packager_1_1media_1_1BufferWriter.html b/docs/df/dde/classedash__packager_1_1media_1_1BufferWriter.html index 5f9eb090e8..ec4b527c49 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 ab8dc8d7dc..04b86e69f0 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 4240f4fa37..d14b9dbb33 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 09f93afd78..6619741595 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/de6/classedash__packager_1_1media_1_1mp2t_1_1PesPacket-members.html b/docs/df/de6/classedash__packager_1_1media_1_1mp2t_1_1PesPacket-members.html index 5d917407e7..0219433b40 100644 --- a/docs/df/de6/classedash__packager_1_1media_1_1mp2t_1_1PesPacket-members.html +++ b/docs/df/de6/classedash__packager_1_1media_1_1mp2t_1_1PesPacket-members.html @@ -108,7 +108,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 1feab5e66b..409dc1cc07 100644 --- a/docs/df/de7/classedash__packager_1_1media_1_1MuxerListener.html +++ b/docs/df/de7/classedash__packager_1_1media_1_1MuxerListener.html @@ -441,7 +441,7 @@ Public Member Functions diff --git a/docs/df/de9/segment__info_8h_source.html b/docs/df/de9/segment__info_8h_source.html index 861d481aab..0649b9462d 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 e9f3ef09d1..3a42311471 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/df0/classedash__packager_1_1media_1_1mp2t_1_1TsSegmenter.html b/docs/df/df0/classedash__packager_1_1media_1_1mp2t_1_1TsSegmenter.html index 9ebce02c97..592d029974 100644 --- a/docs/df/df0/classedash__packager_1_1media_1_1mp2t_1_1TsSegmenter.html +++ b/docs/df/df0/classedash__packager_1_1media_1_1mp2t_1_1TsSegmenter.html @@ -256,7 +256,7 @@ void  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 916d4a37cf..a59ce1ce03 100644 --- a/docs/df/df4/classedash__packager_1_1media_1_1SeekHead.html +++ b/docs/df/df4/classedash__packager_1_1media_1_1SeekHead.html @@ -148,7 +148,7 @@ void set_tracks_pos (u diff --git a/docs/df/df8/classedash__packager_1_1media_1_1Nalu-members.html b/docs/df/df8/classedash__packager_1_1media_1_1Nalu-members.html index 0763eb5539..631c7f501b 100644 --- a/docs/df/df8/classedash__packager_1_1media_1_1Nalu-members.html +++ b/docs/df/df8/classedash__packager_1_1media_1_1Nalu-members.html @@ -157,7 +157,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/dfa/classedash__packager_1_1media_1_1RsaPublicKey-members.html b/docs/df/dfa/classedash__packager_1_1media_1_1RsaPublicKey-members.html index a13c2261fa..fc7a297951 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/df/dfd/classedash__packager_1_1media_1_1mp2t_1_1H264ProgramMapTableWriter.html b/docs/df/dfd/classedash__packager_1_1media_1_1mp2t_1_1H264ProgramMapTableWriter.html index f8c3ca48db..189556bd67 100644 --- a/docs/df/dfd/classedash__packager_1_1media_1_1mp2t_1_1H264ProgramMapTableWriter.html +++ b/docs/df/dfd/classedash__packager_1_1media_1_1mp2t_1_1H264ProgramMapTableWriter.html @@ -226,7 +226,7 @@ static const uint8_t kElem diff --git a/docs/dir_2618cd273dea54f184e42d7a562af818.html b/docs/dir_2618cd273dea54f184e42d7a562af818.html index d1864c846e..482acad4b0 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 073798d9fb..972a6289cf 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 b9a46f7d3a..cfc617d0cc 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 70331eb8f8..ea84197e1d 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 f2d8e1a2c0..91d4a008d9 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 3dbf15e5a1..3c3da0612d 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 a5e8715073..e1c38ca305 100644 --- a/docs/dir_5039d854a18988ed1f1dbebc120ffbf7.html +++ b/docs/dir_5039d854a18988ed1f1dbebc120ffbf7.html @@ -181,7 +181,7 @@ Files diff --git a/docs/dir_5eb2e460866db0ed29e32d64402e5c22.html b/docs/dir_5eb2e460866db0ed29e32d64402e5c22.html index bd3443055a..900115bec3 100644 --- a/docs/dir_5eb2e460866db0ed29e32d64402e5c22.html +++ b/docs/dir_5eb2e460866db0ed29e32d64402e5c22.html @@ -153,7 +153,7 @@ Files diff --git a/docs/dir_65f7acfa8cf3a5f1edc11faa2428b914.html b/docs/dir_65f7acfa8cf3a5f1edc11faa2428b914.html index 0520fb0bf2..c5c0c11415 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 fe8986e23e..d24e03fb47 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 ecb6ceed1f..65f46491d9 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 fe2ca2c97b..5d94de35b1 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 0ab285b9eb..2e7bc25b4e 100644 --- a/docs/dir_aa73376d632f252584a1c0dfbefab2c4.html +++ b/docs/dir_aa73376d632f252584a1c0dfbefab2c4.html @@ -117,7 +117,7 @@ Files diff --git a/docs/dir_c6ada2450b25ab5438a4dba6c9b890af.html b/docs/dir_c6ada2450b25ab5438a4dba6c9b890af.html index 0a9479666f..077ba3e7ab 100644 --- a/docs/dir_c6ada2450b25ab5438a4dba6c9b890af.html +++ b/docs/dir_c6ada2450b25ab5438a4dba6c9b890af.html @@ -245,7 +245,7 @@ Files diff --git a/docs/dir_d422163b96683743ed3963d4aac17747.html b/docs/dir_d422163b96683743ed3963d4aac17747.html index 480eb86e07..520c2da7f2 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 cc5ff9ce5f..9e15f00c4c 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 af4004c125..9222c8deaf 100644 --- a/docs/dir_f7dcbe7025bbacfc4b9a7dff6ad41d72.html +++ b/docs/dir_f7dcbe7025bbacfc4b9a7dff6ad41d72.html @@ -171,7 +171,7 @@ Files diff --git a/docs/files.html b/docs/files.html index a320ed3609..cdc65d74cf 100644 --- a/docs/files.html +++ b/docs/files.html @@ -428,7 +428,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions.html b/docs/functions.html index 0fcd9b0658..fccc1aa050 100644 --- a/docs/functions.html +++ b/docs/functions.html @@ -231,7 +231,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : edash_packager::media::mp4::AACAudioSpecificConfig
  • AudioStreamInfo() -: edash_packager::media::AudioStreamInfo +: edash_packager::media::AudioStreamInfo
  • AuxInfoNeedsToBeCached() : edash_packager::media::mp4::TrackRunIterator @@ -240,7 +240,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_b.html b/docs/functions_b.html index 3d60f911a0..8540548e19 100644 --- a/docs/functions_b.html +++ b/docs/functions_b.html @@ -180,6 +180,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , edash_packager::media::mp4::MovieFragment , edash_packager::media::mp4::MovieFragmentHeader , edash_packager::media::mp4::MovieHeader +, edash_packager::media::mp4::OpusSpecific , edash_packager::media::mp4::OriginalFormat , edash_packager::media::mp4::PixelAspectRatio , edash_packager::media::mp4::ProtectionSchemeInfo @@ -239,7 +240,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_c.html b/docs/functions_c.html index 643eb8d009..c503f16a6e 100644 --- a/docs/functions_c.html +++ b/docs/functions_c.html @@ -246,7 +246,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_d.html b/docs/functions_d.html index 2dc22f2f18..6a7299269d 100644 --- a/docs/functions_d.html +++ b/docs/functions_d.html @@ -162,7 +162,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_e.html b/docs/functions_e.html index 2c1e835c58..c069746c78 100644 --- a/docs/functions_e.html +++ b/docs/functions_e.html @@ -146,7 +146,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_enum.html b/docs/functions_enum.html index 636ead9e90..a373f1caef 100644 --- a/docs/functions_enum.html +++ b/docs/functions_enum.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_eval.html b/docs/functions_eval.html index 036eb202b6..75e0abaa79 100644 --- a/docs/functions_eval.html +++ b/docs/functions_eval.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_f.html b/docs/functions_f.html index 9fee1cfe17..2b732742af 100644 --- a/docs/functions_f.html +++ b/docs/functions_f.html @@ -143,7 +143,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • FinalizeFragmentForEncryption() : edash_packager::media::mp4::EncryptingFragmenter -, edash_packager::media::mp4::KeyRotationFragmenter
  • FinalizeSegment() : edash_packager::media::mp2t::TsWriter @@ -176,7 +175,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : edash_packager::media::MuxerOptions
  • Fragmenter() -: edash_packager::media::mp4::Fragmenter +: edash_packager::media::mp4::Fragmenter
  • frequency() : edash_packager::media::mp4::AACAudioSpecificConfig @@ -194,7 +193,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func.html b/docs/functions_func.html index 8a55061079..6df386dd9e 100644 --- a/docs/functions_func.html +++ b/docs/functions_func.html @@ -231,7 +231,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : edash_packager::media::mp4::AACAudioSpecificConfig
  • AudioStreamInfo() -: edash_packager::media::AudioStreamInfo +: edash_packager::media::AudioStreamInfo
  • AuxInfoNeedsToBeCached() : edash_packager::media::mp4::TrackRunIterator @@ -240,7 +240,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_b.html b/docs/functions_func_b.html index c0744e947e..b6bfb15246 100644 --- a/docs/functions_func_b.html +++ b/docs/functions_func_b.html @@ -177,6 +177,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , edash_packager::media::mp4::MovieFragment , edash_packager::media::mp4::MovieFragmentHeader , edash_packager::media::mp4::MovieHeader +, edash_packager::media::mp4::OpusSpecific , edash_packager::media::mp4::OriginalFormat , edash_packager::media::mp4::PixelAspectRatio , edash_packager::media::mp4::ProtectionSchemeInfo @@ -236,7 +237,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_c.html b/docs/functions_func_c.html index 8ab22edcb6..057eec6650 100644 --- a/docs/functions_func_c.html +++ b/docs/functions_func_c.html @@ -246,7 +246,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_d.html b/docs/functions_func_d.html index e8ad087e44..7cfe2a0de4 100644 --- a/docs/functions_func_d.html +++ b/docs/functions_func_d.html @@ -162,7 +162,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_e.html b/docs/functions_func_e.html index 88a0792968..59670b707e 100644 --- a/docs/functions_func_e.html +++ b/docs/functions_func_e.html @@ -146,7 +146,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_f.html b/docs/functions_func_f.html index 0f45109139..7f178e582f 100644 --- a/docs/functions_func_f.html +++ b/docs/functions_func_f.html @@ -143,7 +143,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • FinalizeFragmentForEncryption() : edash_packager::media::mp4::EncryptingFragmenter -, edash_packager::media::mp4::KeyRotationFragmenter
  • FinalizeSegment() : edash_packager::media::mp2t::TsWriter @@ -170,7 +169,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : edash_packager::AdaptationSet
  • Fragmenter() -: edash_packager::media::mp4::Fragmenter +: edash_packager::media::mp4::Fragmenter
  • frequency() : edash_packager::media::mp4::AACAudioSpecificConfig @@ -188,7 +187,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_g.html b/docs/functions_func_g.html index 248c45e65f..318b8bf700 100644 --- a/docs/functions_func_g.html +++ b/docs/functions_func_g.html @@ -150,7 +150,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : edash_packager::media::mp2t::AdtsHeader
  • GetAudioStreamInfo() -: edash_packager::media::WebMAudioClient +: edash_packager::media::WebMAudioClient
  • GetCodecString() : edash_packager::media::AudioStreamInfo @@ -259,7 +259,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_h.html b/docs/functions_func_h.html index 8471aba210..7be2a42ef5 100644 --- a/docs/functions_func_h.html +++ b/docs/functions_func_h.html @@ -154,7 +154,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_i.html b/docs/functions_func_i.html index e1d2367699..b0157e23b9 100644 --- a/docs/functions_func_i.html +++ b/docs/functions_func_i.html @@ -213,7 +213,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_k.html b/docs/functions_func_k.html index 68b04f3e62..bcec0ca19e 100644 --- a/docs/functions_func_k.html +++ b/docs/functions_func_k.html @@ -129,7 +129,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_l.html b/docs/functions_func_l.html index ca71660897..f177dc8b2a 100644 --- a/docs/functions_func_l.html +++ b/docs/functions_func_l.html @@ -135,7 +135,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_m.html b/docs/functions_func_m.html index bd0b192f6c..06eb40ee1f 100644 --- a/docs/functions_func_m.html +++ b/docs/functions_func_m.html @@ -147,7 +147,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_n.html b/docs/functions_func_n.html index e8c99638cd..c3637fb91f 100644 --- a/docs/functions_func_n.html +++ b/docs/functions_func_n.html @@ -172,7 +172,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_o.html b/docs/functions_func_o.html index d7c195bf9b..6fb7de77f2 100644 --- a/docs/functions_func_o.html +++ b/docs/functions_func_o.html @@ -187,7 +187,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_p.html b/docs/functions_func_p.html index 25698105cd..e053cba436 100644 --- a/docs/functions_func_p.html +++ b/docs/functions_func_p.html @@ -223,7 +223,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_r.html b/docs/functions_func_r.html index 26b31cad5f..07aae272cb 100644 --- a/docs/functions_func_r.html +++ b/docs/functions_func_r.html @@ -201,7 +201,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_s.html b/docs/functions_func_s.html index 6e51edc5ae..07dbc254ea 100644 --- a/docs/functions_func_s.html +++ b/docs/functions_func_s.html @@ -282,7 +282,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_t.html b/docs/functions_func_t.html index 313c8a2228..41a4d793b9 100644 --- a/docs/functions_func_t.html +++ b/docs/functions_func_t.html @@ -179,7 +179,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_u.html b/docs/functions_func_u.html index ebe59aa2ba..32ff97468b 100644 --- a/docs/functions_func_u.html +++ b/docs/functions_func_u.html @@ -143,7 +143,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_v.html b/docs/functions_func_v.html index 949d827972..d1279a2e20 100644 --- a/docs/functions_func_v.html +++ b/docs/functions_func_v.html @@ -135,7 +135,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_w.html b/docs/functions_func_w.html index 769007ad54..7147828a25 100644 --- a/docs/functions_func_w.html +++ b/docs/functions_func_w.html @@ -177,7 +177,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_x.html b/docs/functions_func_x.html index e31b37dd90..b39b3ab696 100644 --- a/docs/functions_func_x.html +++ b/docs/functions_func_x.html @@ -129,7 +129,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_~.html b/docs/functions_func_~.html index 965e28a3a3..5977ec2531 100644 --- a/docs/functions_func_~.html +++ b/docs/functions_func_~.html @@ -132,7 +132,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_g.html b/docs/functions_g.html index f99d9d1804..ac2b933979 100644 --- a/docs/functions_g.html +++ b/docs/functions_g.html @@ -150,7 +150,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : edash_packager::media::mp2t::AdtsHeader
  • GetAudioStreamInfo() -: edash_packager::media::WebMAudioClient +: edash_packager::media::WebMAudioClient
  • GetCodecString() : edash_packager::media::AudioStreamInfo @@ -259,7 +259,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_h.html b/docs/functions_h.html index 33b181a6c0..ca2f7aab77 100644 --- a/docs/functions_h.html +++ b/docs/functions_h.html @@ -160,7 +160,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_i.html b/docs/functions_i.html index 64c44a6961..b4cf2e1831 100644 --- a/docs/functions_i.html +++ b/docs/functions_i.html @@ -216,7 +216,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_k.html b/docs/functions_k.html index 65f55bc469..d54f17387b 100644 --- a/docs/functions_k.html +++ b/docs/functions_k.html @@ -150,7 +150,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_l.html b/docs/functions_l.html index 11c703f3ee..55ffe59461 100644 --- a/docs/functions_l.html +++ b/docs/functions_l.html @@ -135,7 +135,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_m.html b/docs/functions_m.html index a226dfdd39..bacac5f524 100644 --- a/docs/functions_m.html +++ b/docs/functions_m.html @@ -147,7 +147,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_n.html b/docs/functions_n.html index 3650ec131c..7316f3ae51 100644 --- a/docs/functions_n.html +++ b/docs/functions_n.html @@ -178,7 +178,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_o.html b/docs/functions_o.html index a7f4a89d2d..2f023b8049 100644 --- a/docs/functions_o.html +++ b/docs/functions_o.html @@ -190,7 +190,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_p.html b/docs/functions_p.html index 40e124aea8..7795d65ce0 100644 --- a/docs/functions_p.html +++ b/docs/functions_p.html @@ -232,7 +232,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_r.html b/docs/functions_r.html index 2bc03e2154..80ca9f6af4 100644 --- a/docs/functions_r.html +++ b/docs/functions_r.html @@ -201,7 +201,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_s.html b/docs/functions_s.html index c08611b272..68b6a6ba3b 100644 --- a/docs/functions_s.html +++ b/docs/functions_s.html @@ -297,7 +297,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_t.html b/docs/functions_t.html index 70302a0211..1ffe0fc2a7 100644 --- a/docs/functions_t.html +++ b/docs/functions_t.html @@ -182,7 +182,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_type.html b/docs/functions_type.html index b5f8521168..84daa14ac2 100644 --- a/docs/functions_type.html +++ b/docs/functions_type.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_u.html b/docs/functions_u.html index 21b4ac27fc..fd6abf1a8e 100644 --- a/docs/functions_u.html +++ b/docs/functions_u.html @@ -143,7 +143,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_v.html b/docs/functions_v.html index 1722550662..d80a1e7a65 100644 --- a/docs/functions_v.html +++ b/docs/functions_v.html @@ -135,7 +135,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_vars.html b/docs/functions_vars.html index fd698f5893..e33a80aed4 100644 --- a/docs/functions_vars.html +++ b/docs/functions_vars.html @@ -151,7 +151,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_w.html b/docs/functions_w.html index 97475735c1..f104986a82 100644 --- a/docs/functions_w.html +++ b/docs/functions_w.html @@ -177,7 +177,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_x.html b/docs/functions_x.html index 56930ff402..70b35d196d 100644 --- a/docs/functions_x.html +++ b/docs/functions_x.html @@ -129,7 +129,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_~.html b/docs/functions_~.html index 6a1dd9453d..1d91d5489d 100644 --- a/docs/functions_~.html +++ b/docs/functions_~.html @@ -132,7 +132,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/hierarchy.html b/docs/hierarchy.html index 026b9ee9d4..1b059b34b2 100644 --- a/docs/hierarchy.html +++ b/docs/hierarchy.html @@ -98,275 +98,277 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); ||oCedash_packager::media::AesCbcEncryptor ||\Cedash_packager::media::AesCtrEncryptor |\Cedash_packager::media::AesPatternCryptorImplements pattern-based encryption/decryption -oCedash_packager::media::AudioTimestampHelper -oCBandwidthEstimator -oCedash_packager::media::BitReaderA class to read bit streams -oCedash_packager::media::mp4::Box -|oCedash_packager::media::mp4::AC3Specific -|oCedash_packager::media::mp4::AudioSampleEntry -|oCedash_packager::media::mp4::CodecConfigurationRecord -|oCedash_packager::media::mp4::CueIDBox -|oCedash_packager::media::mp4::CuePayloadBox -|oCedash_packager::media::mp4::CueSettingsBox -|oCedash_packager::media::mp4::CueSourceIDBox -|oCedash_packager::media::mp4::CueTimeBox -|oCedash_packager::media::mp4::DataInformation -|oCedash_packager::media::mp4::DTSSpecific -|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::TextSampleEntry -|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 -|\Cedash_packager::media::mp4::WebVTTSourceLabelBox -oCedash_packager::media::mp4::BoxBuffer -oCedash_packager::media::BufferReader -|\Cedash_packager::media::mp4::BoxReaderClass for reading MP4 boxes -oCedash_packager::media::BufferWriter -oCedash_packager::media::ByteQueue -oCedash_packager::media::mp4::CencSampleEncryptionInfoEntry -oCedash_packager::media::mp4::ChunkInfo -oCedash_packager::media::mp4::ChunkInfoIterator -oCedash_packager::media::Cluster -oCedash_packager::media::ClusterBuilder -oCedash_packager::media::mp4::CompositionOffset -oCedash_packager::media::mp4::CompositionOffsetIterator -oCedash_packager::media::ContentEncoding -oCedash_packager::ContentProtectionElement -oCedash_packager::media::mp2t::ContinuityCounter -oCedash_packager::media::Cue -oCedash_packager::media::DecoderConfiguration -|oCedash_packager::media::AVCDecoderConfigurationClass for parsing AVC decoder configuration -|\Cedash_packager::media::HEVCDecoderConfigurationClass for parsing HEVC decoder configuration -oCedash_packager::media::mp4::DecodingTime -oCedash_packager::media::mp4::DecodingTimeIterator -oCedash_packager::media::DecryptConfig -oCedash_packager::media::DecryptorSourceDecryptorSource wraps KeySource and is responsible for decryptor management -oCedash_packager::media::Demuxer -oCedash_packager::media::wvm::DemuxStreamIdMediaSample -oCedash_packager::media::mp4::EditListEntry -oCedash_packager::Element -oCedash_packager::media::EncryptionKey -oCedash_packager::media::webm::Encryptor -oCedash_packager::media::mp4::ESDescriptor -oCedash_packager::media::mp2t::EsParser -|oCedash_packager::media::mp2t::EsParserAdts -|\Cedash_packager::media::mp2t::EsParserH26x -| oCedash_packager::media::mp2t::EsParserH264 -| \Cedash_packager::media::mp2t::EsParserH265 -oCedash_packager::media::FileDefine an abstract file interface -|oCedash_packager::media::LocalFileImplement LocalFile which deals with local storage -|oCedash_packager::media::MemoryFile -|oCedash_packager::media::ThreadedIoFileDeclaration of class which implements a thread-safe circular buffer -|\Cedash_packager::media::UdpFileImplements UdpFile, which receives UDP unicast and multicast streams -oCedash_packager::media::FileCloser -oCedash_packager::media::mp4::Fragmenter -|\Cedash_packager::media::mp4::EncryptingFragmenterEncryptingFragmenter generates MP4 fragments with sample encrypted -| \Cedash_packager::media::mp4::KeyRotationFragmenter -oCedash_packager::media::H264DecRefPicMarking -oCedash_packager::media::H264ModificationOfPicNum -oCedash_packager::media::H264Parser -oCedash_packager::media::H264Pps -oCedash_packager::media::H264SEIMessage -oCedash_packager::media::H264SEIRecoveryPoint -oCedash_packager::media::H264SliceHeader -oCedash_packager::media::H264Sps -oCedash_packager::media::H264WeightingFactors -oCedash_packager::media::H265Parser -oCedash_packager::media::H265Pps -oCedash_packager::media::H265ReferencePictureListModifications -oCedash_packager::media::H265ReferencePictureSet -oCedash_packager::media::H265SliceHeader -oCedash_packager::media::H265Sps -oCedash_packager::media::H265VuiParameters -oCedash_packager::media::H26xBitReader -oCedash_packager::media::H26xByteToUnitStreamConverterA base class that is used to convert H.26x byte streams to NAL unit streams -|oCedash_packager::media::H264ByteToUnitStreamConverter -|\Cedash_packager::media::H265ByteToUnitStreamConverter -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 -|oCedash_packager::media::FixedKeySourceA key source that uses fixed keys for encryption -|\Cedash_packager::media::WidevineKeySource -oCedash_packager::media::mp4::Language -oCedash_packager::media::LibcryptoThreadingConvenience class which initializes and terminates libcrypto threading -oCedash_packager::media::H265SliceHeader::LongTermPicsInfo -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::mp2t::TsMuxer -|oCedash_packager::media::mp4::MP4Muxer -|\Cedash_packager::media::webm::WebMMuxerImplements WebM Muxer -oCedash_packager::media::MuxerListener -|oCedash_packager::media::HlsNotifyMuxerListenerMuxerListener that uses HlsNotifier -|oCedash_packager::media::MockMuxerListener -|oCedash_packager::media::MpdNotifyMuxerListener -|\Cedash_packager::media::VodMediaInfoDumpMuxerListener -oCedash_packager::media::MuxerOptionsThis structure contains the list of configuration options for Muxer -oCedash_packager::media::Nalu -oCedash_packager::media::NalUnitToByteStreamConverter -oCedash_packager::media::NaluReader -oCedash_packager::media::OffsetByteQueue -oCedash_packager::media::OnMediaEndParameters -oCedash_packager::media::mp2t::PesPacketClass that carries PES packet information -oCedash_packager::media::mp2t::PesPacketGenerator -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::mp2t::ProgramMapTableWriter -|oCedash_packager::media::mp2t::AacProgramMapTableWriter -|\Cedash_packager::media::mp2t::H264ProgramMapTableWriter -oCedash_packager::media::ProgressListenerThis class listens to progress updates events -oCedash_packager::media::ProtectionSystemSpecificInfo -oCRefCountedThreadSafe -|oCedash_packager::media::MediaSampleClass to hold a media sample -|\Cedash_packager::media::StreamInfoAbstract class holds stream information -| oCedash_packager::media::AudioStreamInfoHolds audio stream information -| oCedash_packager::media::TextStreamInfo -| \Cedash_packager::media::VideoStreamInfoHolds video stream information -oCedash_packager::Representation -|\Cedash_packager::MockRepresentation -oCedash_packager::RepresentationStateChangeListener -oCedash_packager::media::RequestSignerAbstract class used for signature generation -|oCedash_packager::media::AesRequestSignerAesRequestSigner uses AES-CBC signing -|\Cedash_packager::media::RsaRequestSignerRsaRequestSigner uses RSA-PSS signing -oCedash_packager::media::RsaPrivateKeyRsa private key, used for message signing and decryption -oCedash_packager::media::RsaPublicKeyRsa public key, used for signature verification and encryption -oCedash_packager::media::mp4::SampleEncryptionEntry -oCedash_packager::media::mp4::SampleToGroupEntry -oCedash_packager::media::SeekHead -oCedash_packager::media::webm::Segmenter -|oCedash_packager::media::webm::MultiSegmentSegmenter -|\Cedash_packager::media::webm::SingleSegmentSegmenter -| \Cedash_packager::media::webm::TwoPassSingleSegmentSegmenter +oCedash_packager::media::mp4::AudioRollRecoveryEntry +oCedash_packager::media::AudioTimestampHelper +oCBandwidthEstimator +oCedash_packager::media::BitReaderA class to read bit streams +oCedash_packager::media::mp4::Box +|oCedash_packager::media::mp4::AC3Specific +|oCedash_packager::media::mp4::AudioSampleEntry +|oCedash_packager::media::mp4::CodecConfigurationRecord +|oCedash_packager::media::mp4::CueIDBox +|oCedash_packager::media::mp4::CuePayloadBox +|oCedash_packager::media::mp4::CueSettingsBox +|oCedash_packager::media::mp4::CueSourceIDBox +|oCedash_packager::media::mp4::CueTimeBox +|oCedash_packager::media::mp4::DataInformation +|oCedash_packager::media::mp4::DTSSpecific +|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::OpusSpecific +|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::TextSampleEntry +|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 +|\Cedash_packager::media::mp4::WebVTTSourceLabelBox +oCedash_packager::media::mp4::BoxBuffer +oCedash_packager::media::BufferReader +|\Cedash_packager::media::mp4::BoxReaderClass for reading MP4 boxes +oCedash_packager::media::BufferWriter +oCedash_packager::media::ByteQueue +oCedash_packager::media::mp4::CencSampleEncryptionInfoEntry +oCedash_packager::media::mp4::ChunkInfo +oCedash_packager::media::mp4::ChunkInfoIterator +oCedash_packager::media::Cluster +oCedash_packager::media::ClusterBuilder +oCedash_packager::media::mp4::CompositionOffset +oCedash_packager::media::mp4::CompositionOffsetIterator +oCedash_packager::media::ContentEncoding +oCedash_packager::ContentProtectionElement +oCedash_packager::media::mp2t::ContinuityCounter +oCedash_packager::media::Cue +oCedash_packager::media::DecoderConfiguration +|oCedash_packager::media::AVCDecoderConfigurationClass for parsing AVC decoder configuration +|\Cedash_packager::media::HEVCDecoderConfigurationClass for parsing HEVC decoder configuration +oCedash_packager::media::mp4::DecodingTime +oCedash_packager::media::mp4::DecodingTimeIterator +oCedash_packager::media::DecryptConfig +oCedash_packager::media::DecryptorSourceDecryptorSource wraps KeySource and is responsible for decryptor management +oCedash_packager::media::Demuxer +oCedash_packager::media::wvm::DemuxStreamIdMediaSample +oCedash_packager::media::mp4::EditListEntry +oCedash_packager::Element +oCedash_packager::media::EncryptionKey +oCedash_packager::media::webm::Encryptor +oCedash_packager::media::mp4::ESDescriptor +oCedash_packager::media::mp2t::EsParser +|oCedash_packager::media::mp2t::EsParserAdts +|\Cedash_packager::media::mp2t::EsParserH26x +| oCedash_packager::media::mp2t::EsParserH264 +| \Cedash_packager::media::mp2t::EsParserH265 +oCedash_packager::media::FileDefine an abstract file interface +|oCedash_packager::media::LocalFileImplement LocalFile which deals with local storage +|oCedash_packager::media::MemoryFile +|oCedash_packager::media::ThreadedIoFileDeclaration of class which implements a thread-safe circular buffer +|\Cedash_packager::media::UdpFileImplements UdpFile, which receives UDP unicast and multicast streams +oCedash_packager::media::FileCloser +oCedash_packager::media::mp4::Fragmenter +|\Cedash_packager::media::mp4::EncryptingFragmenterEncryptingFragmenter generates MP4 fragments with sample encrypted +| \Cedash_packager::media::mp4::KeyRotationFragmenter +oCedash_packager::media::H264DecRefPicMarking +oCedash_packager::media::H264ModificationOfPicNum +oCedash_packager::media::H264Parser +oCedash_packager::media::H264Pps +oCedash_packager::media::H264SEIMessage +oCedash_packager::media::H264SEIRecoveryPoint +oCedash_packager::media::H264SliceHeader +oCedash_packager::media::H264Sps +oCedash_packager::media::H264WeightingFactors +oCedash_packager::media::H265Parser +oCedash_packager::media::H265Pps +oCedash_packager::media::H265ReferencePictureListModifications +oCedash_packager::media::H265ReferencePictureSet +oCedash_packager::media::H265SliceHeader +oCedash_packager::media::H265Sps +oCedash_packager::media::H265VuiParameters +oCedash_packager::media::H26xBitReader +oCedash_packager::media::H26xByteToUnitStreamConverterA base class that is used to convert H.26x byte streams to NAL unit streams +|oCedash_packager::media::H264ByteToUnitStreamConverter +|\Cedash_packager::media::H265ByteToUnitStreamConverter +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 +|oCedash_packager::media::FixedKeySourceA key source that uses fixed keys for encryption +|\Cedash_packager::media::WidevineKeySource +oCedash_packager::media::mp4::Language +oCedash_packager::media::LibcryptoThreadingConvenience class which initializes and terminates libcrypto threading +oCedash_packager::media::H265SliceHeader::LongTermPicsInfo +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::mp2t::TsMuxer +|oCedash_packager::media::mp4::MP4Muxer +|\Cedash_packager::media::webm::WebMMuxerImplements WebM Muxer +oCedash_packager::media::MuxerListener +|oCedash_packager::media::HlsNotifyMuxerListenerMuxerListener that uses HlsNotifier +|oCedash_packager::media::MockMuxerListener +|oCedash_packager::media::MpdNotifyMuxerListener +|\Cedash_packager::media::VodMediaInfoDumpMuxerListener +oCedash_packager::media::MuxerOptionsThis structure contains the list of configuration options for Muxer +oCedash_packager::media::Nalu +oCedash_packager::media::NalUnitToByteStreamConverter +oCedash_packager::media::NaluReader +oCedash_packager::media::OffsetByteQueue +oCedash_packager::media::OnMediaEndParameters +oCedash_packager::media::mp2t::PesPacketClass that carries PES packet information +oCedash_packager::media::mp2t::PesPacketGenerator +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::mp2t::ProgramMapTableWriter +|oCedash_packager::media::mp2t::AacProgramMapTableWriter +|\Cedash_packager::media::mp2t::H264ProgramMapTableWriter +oCedash_packager::media::ProgressListenerThis class listens to progress updates events +oCedash_packager::media::ProtectionSystemSpecificInfo +oCRefCountedThreadSafe +|oCedash_packager::media::MediaSampleClass to hold a media sample +|\Cedash_packager::media::StreamInfoAbstract class holds stream information +| oCedash_packager::media::AudioStreamInfoHolds audio stream information +| oCedash_packager::media::TextStreamInfo +| \Cedash_packager::media::VideoStreamInfoHolds video stream information +oCedash_packager::Representation +|\Cedash_packager::MockRepresentation +oCedash_packager::RepresentationStateChangeListener +oCedash_packager::media::RequestSignerAbstract class used for signature generation +|oCedash_packager::media::AesRequestSignerAesRequestSigner uses AES-CBC signing +|\Cedash_packager::media::RsaRequestSignerRsaRequestSigner uses RSA-PSS signing +oCedash_packager::media::RsaPrivateKeyRsa private key, used for message signing and decryption +oCedash_packager::media::RsaPublicKeyRsa public key, used for signature verification and encryption +oCedash_packager::media::mp4::SampleEncryptionEntry +oCedash_packager::media::mp4::SampleToGroupEntry +oCedash_packager::media::SeekHead oCedash_packager::media::mp4::Segmenter |oCedash_packager::media::mp4::MultiSegmentSegmenter |\Cedash_packager::media::mp4::SingleSegmentSegmenter -oCedash_packager::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::mp2t::TsSegmenter -oCedash_packager::media::mp2t::TsWriter -oCedash_packager::media::mp4::VideoSliceHeaderParser -|oCedash_packager::media::mp4::H264VideoSliceHeaderParser -|\Cedash_packager::media::mp4::H265VideoSliceHeaderParser -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::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::mp2t::TsSegmenter +oCedash_packager::media::mp2t::TsWriter +oCedash_packager::media::mp4::VideoSliceHeaderParser +|oCedash_packager::media::mp4::H264VideoSliceHeaderParser +|\Cedash_packager::media::mp4::H265VideoSliceHeaderParser +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 ff077dfba4..6c8a6669f5 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 7fa69aab86..509be4a245 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 c45c05b2c0..68d38d4710 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 ad89e7d6a0..a6a6f80e69 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_0.js b/docs/search/all_0.js index 52eb404659..ffc599e20f 100644 --- a/docs/search/all_0.js +++ b/docs/search/all_0.js @@ -37,18 +37,19 @@ var searchData= ['aescryptor',['AesCryptor',['../d9/d60/classedash__packager_1_1media_1_1AesCryptor.html#afedfeff8fdfcc25f32f7381f8b7ccdcb',1,'edash_packager::media::AesCryptor']]], ['aescryptor',['AesCryptor',['../d9/d60/classedash__packager_1_1media_1_1AesCryptor.html',1,'edash_packager::media']]], ['aesctrencryptor',['AesCtrEncryptor',['../dd/d79/classedash__packager_1_1media_1_1AesCtrEncryptor.html',1,'edash_packager::media']]], - ['aesencryptor',['AesEncryptor',['../dc/d92/classedash__packager_1_1media_1_1AesEncryptor.html',1,'edash_packager::media']]], ['aesencryptor',['AesEncryptor',['../dc/d92/classedash__packager_1_1media_1_1AesEncryptor.html#acedca3368412a5f396ed8c66aa984d11',1,'edash_packager::media::AesEncryptor']]], - ['aespatterncryptor',['AesPatternCryptor',['../dc/d54/classedash__packager_1_1media_1_1AesPatternCryptor.html',1,'edash_packager::media']]], + ['aesencryptor',['AesEncryptor',['../dc/d92/classedash__packager_1_1media_1_1AesEncryptor.html',1,'edash_packager::media']]], ['aespatterncryptor',['AesPatternCryptor',['../dc/d54/classedash__packager_1_1media_1_1AesPatternCryptor.html#a4d86aaa1271e5069349e2949df871357',1,'edash_packager::media::AesPatternCryptor']]], + ['aespatterncryptor',['AesPatternCryptor',['../dc/d54/classedash__packager_1_1media_1_1AesPatternCryptor.html',1,'edash_packager::media']]], ['aesrequestsigner',['AesRequestSigner',['../d8/dcc/classedash__packager_1_1media_1_1AesRequestSigner.html',1,'edash_packager::media']]], ['appendint',['AppendInt',['../df/dde/classedash__packager_1_1media_1_1BufferWriter.html#afd1449487750c41331a2d91ac417f115',1,'edash_packager::media::BufferWriter']]], ['appendnbytes',['AppendNBytes',['../df/dde/classedash__packager_1_1media_1_1BufferWriter.html#ac929211fc97bc8ec880109775757bb81',1,'edash_packager::media::BufferWriter']]], ['audio_5fdescription',['audio_description',['../db/d26/classedash__packager_1_1media_1_1mp4_1_1TrackRunIterator.html#a2c58182a77817e4ed4a2860ae3be73df',1,'edash_packager::media::mp4::TrackRunIterator']]], ['audio_5fobject_5ftype',['audio_object_type',['../dc/dc6/classedash__packager_1_1media_1_1mp4_1_1AACAudioSpecificConfig.html#a12bcda441f7745bd70cb9b4fdfb4b9b5',1,'edash_packager::media::mp4::AACAudioSpecificConfig']]], + ['audiorollrecoveryentry',['AudioRollRecoveryEntry',['../dd/d52/structedash__packager_1_1media_1_1mp4_1_1AudioRollRecoveryEntry.html',1,'edash_packager::media::mp4']]], ['audiosampleentry',['AudioSampleEntry',['../df/d62/structedash__packager_1_1media_1_1mp4_1_1AudioSampleEntry.html',1,'edash_packager::media::mp4']]], - ['audiostreaminfo',['AudioStreamInfo',['../da/d27/classedash__packager_1_1media_1_1AudioStreamInfo.html#a3a75339290a004cc4b2dd232e4561ed8',1,'edash_packager::media::AudioStreamInfo']]], ['audiostreaminfo',['AudioStreamInfo',['../da/d27/classedash__packager_1_1media_1_1AudioStreamInfo.html',1,'edash_packager::media']]], + ['audiostreaminfo',['AudioStreamInfo',['../da/d27/classedash__packager_1_1media_1_1AudioStreamInfo.html#aaae3780aafebf76f852d43415e7e772a',1,'edash_packager::media::AudioStreamInfo']]], ['audiotimestamphelper',['AudioTimestampHelper',['../da/de4/classedash__packager_1_1media_1_1AudioTimestampHelper.html',1,'edash_packager::media']]], ['auxinfoneedstobecached',['AuxInfoNeedsToBeCached',['../db/d26/classedash__packager_1_1media_1_1mp4_1_1TrackRunIterator.html#a3538a0f31238843afd2dfb4e94587f03',1,'edash_packager::media::mp4::TrackRunIterator']]], ['avcdecoderconfiguration',['AVCDecoderConfiguration',['../d6/d49/classedash__packager_1_1media_1_1AVCDecoderConfiguration.html',1,'edash_packager::media']]] diff --git a/docs/search/all_1.js b/docs/search/all_1.js index 486b9d2f4c..0213e4410b 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()'],['../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()'],['../dd/d7d/structedash__packager_1_1media_1_1mp4_1_1TextSampleEntry.html#af6690728e3b081dc0cf11306fd1493af',1,'edash_packager::media::mp4::TextSampleEntry::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()'],['../d1/d8a/structedash__packager_1_1media_1_1mp4_1_1OpusSpecific.html#ab828e008127b14fdc1a28ae7e306eb75',1,'edash_packager::media::mp4::OpusSpecific::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()'],['../dd/d7d/structedash__packager_1_1media_1_1mp4_1_1TextSampleEntry.html#af6690728e3b081dc0cf11306fd1493af',1,'edash_packager::media::mp4::TextSampleEntry::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()'],['../d2/d26/structedash__packager_1_1media_1_1mp4_1_1SampleGroupDescription.html#a20836adec61bcbc891d08ffbc291ab4e',1,'edash_packager::media::mp4::SampleGroupDescription::BoxType()'],['../d1/d65/structedash__packager_1_1media_1_1mp4_1_1SampleToGroup.html#abf5ab6476c2530cf820cc4262c2eef41',1,'edash_packager::media::mp4::SampleToGroup::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()'],['../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 c48851c7a2..ff75f30265 100644 --- a/docs/search/all_10.js +++ b/docs/search/all_10.js @@ -27,8 +27,8 @@ var searchData= ['segment_5fduration',['segment_duration',['../de/d57/structedash__packager_1_1media_1_1MuxerOptions.html#ad6f281dfd832bd073f5fb5fc46342f9f',1,'edash_packager::media::MuxerOptions']]], ['segment_5fsap_5faligned',['segment_sap_aligned',['../de/d57/structedash__packager_1_1media_1_1MuxerOptions.html#af0403298bf08392bb3009061cd8de2b0',1,'edash_packager::media::MuxerOptions']]], ['segment_5ftemplate',['segment_template',['../de/d57/structedash__packager_1_1media_1_1MuxerOptions.html#a1303b2f8efb19af4728513ba2eeea2d1',1,'edash_packager::media::MuxerOptions']]], - ['segmenter',['Segmenter',['../dc/de1/classedash__packager_1_1media_1_1mp4_1_1Segmenter.html',1,'edash_packager::media::mp4']]], ['segmenter',['Segmenter',['../da/d14/classedash__packager_1_1media_1_1webm_1_1Segmenter.html',1,'edash_packager::media::webm']]], + ['segmenter',['Segmenter',['../dc/de1/classedash__packager_1_1media_1_1mp4_1_1Segmenter.html',1,'edash_packager::media::mp4']]], ['segmentindex',['SegmentIndex',['../d1/d81/structedash__packager_1_1media_1_1mp4_1_1SegmentIndex.html',1,'edash_packager::media::mp4']]], ['segmentinfo',['SegmentInfo',['../d9/d9b/structedash__packager_1_1SegmentInfo.html',1,'edash_packager']]], ['segmentreference',['SegmentReference',['../d4/dce/structedash__packager_1_1media_1_1mp4_1_1SegmentReference.html',1,'edash_packager::media::mp4']]], diff --git a/docs/search/all_5.js b/docs/search/all_5.js index 68a3b289db..b177791529 100644 --- a/docs/search/all_5.js +++ b/docs/search/all_5.js @@ -7,7 +7,7 @@ var searchData= ['filetype',['FileType',['../d1/dcd/structedash__packager_1_1media_1_1mp4_1_1FileType.html',1,'edash_packager::media::mp4']]], ['finalize',['Finalize',['../df/df0/classedash__packager_1_1media_1_1mp2t_1_1TsSegmenter.html#a480d6c01383303b53f3ca0a99e5a888e',1,'edash_packager::media::mp2t::TsSegmenter::Finalize()'],['../dc/de1/classedash__packager_1_1media_1_1mp4_1_1Segmenter.html#ad1136a3e7c2e796267fbd3879d108c2a',1,'edash_packager::media::mp4::Segmenter::Finalize()'],['../da/d14/classedash__packager_1_1media_1_1webm_1_1Segmenter.html#aaa092bb01c45c1d7ec84a8f370978bbb',1,'edash_packager::media::webm::Segmenter::Finalize()']]], ['finalizefragment',['FinalizeFragment',['../d8/d1e/classedash__packager_1_1media_1_1mp4_1_1EncryptingFragmenter.html#a7917221a0f5093ad6770926ee0ae0ce2',1,'edash_packager::media::mp4::EncryptingFragmenter::FinalizeFragment()'],['../db/dae/classedash__packager_1_1media_1_1mp4_1_1Fragmenter.html#a5f346308fec8fa24cf47cf7ffd21d741',1,'edash_packager::media::mp4::Fragmenter::FinalizeFragment()']]], - ['finalizefragmentforencryption',['FinalizeFragmentForEncryption',['../d8/d1e/classedash__packager_1_1media_1_1mp4_1_1EncryptingFragmenter.html#a0184deccbe7e99ea7a685cf0de2f9156',1,'edash_packager::media::mp4::EncryptingFragmenter::FinalizeFragmentForEncryption()'],['../dc/d8a/classedash__packager_1_1media_1_1mp4_1_1KeyRotationFragmenter.html#a9a89e103f4bcb483d882e5dc62060cdc',1,'edash_packager::media::mp4::KeyRotationFragmenter::FinalizeFragmentForEncryption()']]], + ['finalizefragmentforencryption',['FinalizeFragmentForEncryption',['../d8/d1e/classedash__packager_1_1media_1_1mp4_1_1EncryptingFragmenter.html#a0184deccbe7e99ea7a685cf0de2f9156',1,'edash_packager::media::mp4::EncryptingFragmenter']]], ['finalizesegment',['FinalizeSegment',['../d4/d26/classedash__packager_1_1media_1_1mp2t_1_1TsWriter.html#a34adca8447b1692556343774f3ef2777',1,'edash_packager::media::mp2t::TsWriter']]], ['fixedkeysource',['FixedKeySource',['../d0/d86/classedash__packager_1_1media_1_1FixedKeySource.html',1,'edash_packager::media']]], ['flush',['Flush',['../dc/d48/classedash__packager_1_1media_1_1MediaParser.html#a207f57f06d2ad88052ea7480a068ad1c',1,'edash_packager::media::MediaParser::Flush()'],['../de/d19/classedash__packager_1_1media_1_1File.html#ace9275a79c572614ee5d068a04c76392',1,'edash_packager::media::File::Flush()'],['../dd/d98/classedash__packager_1_1media_1_1LocalFile.html#a4ab0f69a137a370d49005a1c9f13259d',1,'edash_packager::media::LocalFile::Flush()'],['../d3/d81/classedash__packager_1_1media_1_1MemoryFile.html#a87c8553905d4dd7875de1d84156ff50b',1,'edash_packager::media::MemoryFile::Flush()'],['../dc/dfa/classedash__packager_1_1media_1_1ThreadedIoFile.html#a7d65b07dd7545b7c6d759884b736ad2d',1,'edash_packager::media::ThreadedIoFile::Flush()'],['../d8/dc7/classedash__packager_1_1media_1_1UdpFile.html#acde300494ef44cdbefac7dbf27b6707f',1,'edash_packager::media::UdpFile::Flush()'],['../dc/dab/classedash__packager_1_1media_1_1mp2t_1_1Mp2tMediaParser.html#a12cf8261396cfa4753967d7f0acb2587',1,'edash_packager::media::mp2t::Mp2tMediaParser::Flush()'],['../de/d1a/classedash__packager_1_1media_1_1mp2t_1_1PesPacketGenerator.html#a812e776f3064d22f60e742fb1f6aa700',1,'edash_packager::media::mp2t::PesPacketGenerator::Flush()'],['../d8/d0d/classedash__packager_1_1media_1_1mp4_1_1MP4MediaParser.html#a923b9bdc43e77a0f072c6e637f9af910',1,'edash_packager::media::mp4::MP4MediaParser::Flush()'],['../db/da0/classedash__packager_1_1media_1_1WebMClusterParser.html#a78a598c816a44067e01b08626e1a885a',1,'edash_packager::media::WebMClusterParser::Flush()'],['../dd/d99/classedash__packager_1_1media_1_1WebMMediaParser.html#a9636d22ec12e85f52f34b0b957b42911',1,'edash_packager::media::WebMMediaParser::Flush()'],['../d2/d51/classedash__packager_1_1media_1_1WebVttMediaParser.html#a258b3dda049d3ae4b03be8f91976dd9b',1,'edash_packager::media::WebVttMediaParser::Flush()'],['../d8/da0/classedash__packager_1_1media_1_1wvm_1_1WvmMediaParser.html#ada8310858959deec97adfa001658edf0',1,'edash_packager::media::wvm::WvmMediaParser::Flush()'],['../da/d49/classedash__packager_1_1DashIopMpdNotifier.html#a74080da948602a4deb88046e56eda79e',1,'edash_packager::DashIopMpdNotifier::Flush()'],['../da/d38/classedash__packager_1_1MpdNotifier.html#aaeba5920a9df8db366f8cf86d64e855c',1,'edash_packager::MpdNotifier::Flush()'],['../db/d56/classedash__packager_1_1SimpleMpdNotifier.html#a701f3e8f0260ce8300fb9e4b31558a8d',1,'edash_packager::SimpleMpdNotifier::Flush()']]], @@ -15,7 +15,7 @@ var searchData= ['fragment_5fduration',['fragment_duration',['../de/d57/structedash__packager_1_1media_1_1MuxerOptions.html#a1754599c00fdf4c474d3072abf71c1de',1,'edash_packager::media::MuxerOptions']]], ['fragment_5fsap_5faligned',['fragment_sap_aligned',['../de/d57/structedash__packager_1_1media_1_1MuxerOptions.html#ab70f1d41f9556fa793ec638762d1c584',1,'edash_packager::media::MuxerOptions']]], ['fragmenter',['Fragmenter',['../db/dae/classedash__packager_1_1media_1_1mp4_1_1Fragmenter.html',1,'edash_packager::media::mp4']]], - ['fragmenter',['Fragmenter',['../db/dae/classedash__packager_1_1media_1_1mp4_1_1Fragmenter.html#ae285aba21b3099fe0d5b9e5236583bc8',1,'edash_packager::media::mp4::Fragmenter']]], + ['fragmenter',['Fragmenter',['../db/dae/classedash__packager_1_1media_1_1mp4_1_1Fragmenter.html#a24a46b332d8ecb297d74df8b8a646158',1,'edash_packager::media::mp4::Fragmenter']]], ['frequency',['frequency',['../dc/dc6/classedash__packager_1_1media_1_1mp4_1_1AACAudioSpecificConfig.html#a67fdc1b4f5787341e27d07c814a01a08',1,'edash_packager::media::mp4::AACAudioSpecificConfig']]], ['frombmfftimescale',['FromBMFFTimescale',['../da/d14/classedash__packager_1_1media_1_1webm_1_1Segmenter.html#a377639e4fdce4ca03a07c97a210af720',1,'edash_packager::media::webm::Segmenter']]], ['frommetadata',['FromMetadata',['../d8/d6c/classedash__packager_1_1media_1_1MediaSample.html#a7181e8f5f86235581cba01be701e55b6',1,'edash_packager::media::MediaSample']]], diff --git a/docs/search/all_6.js b/docs/search/all_6.js index e3f1b8080c..807db09f94 100644 --- a/docs/search/all_6.js +++ b/docs/search/all_6.js @@ -8,7 +8,7 @@ var searchData= ['getadtsheadersize',['GetAdtsHeaderSize',['../db/d69/classedash__packager_1_1media_1_1mp2t_1_1AdtsHeader.html#a87affdf0dc61bedb13bafd76c3d5b484',1,'edash_packager::media::mp2t::AdtsHeader']]], ['getaudiodefaultduration',['GetAudioDefaultDuration',['../db/d23/classedash__packager_1_1media_1_1WebMTracksParser.html#a38388e04fa6eb5542a32ab83287002e3',1,'edash_packager::media::WebMTracksParser']]], ['getaudiospecificconfig',['GetAudioSpecificConfig',['../db/d69/classedash__packager_1_1media_1_1mp2t_1_1AdtsHeader.html#a65c36a606121daa90c44b44632b634ec',1,'edash_packager::media::mp2t::AdtsHeader']]], - ['getaudiostreaminfo',['GetAudioStreamInfo',['../de/d98/classedash__packager_1_1media_1_1WebMAudioClient.html#aa1adf8eaedbb721b663e67630e54e36a',1,'edash_packager::media::WebMAudioClient']]], + ['getaudiostreaminfo',['GetAudioStreamInfo',['../de/d98/classedash__packager_1_1media_1_1WebMAudioClient.html#a8fe05588ffbcf8882c3125cc3f0229a2',1,'edash_packager::media::WebMAudioClient']]], ['getcodecstring',['GetCodecString',['../da/d27/classedash__packager_1_1media_1_1AudioStreamInfo.html#aa62e486f463c867b8e2f41ebb4ecea34',1,'edash_packager::media::AudioStreamInfo::GetCodecString()'],['../d6/d49/classedash__packager_1_1media_1_1AVCDecoderConfiguration.html#ad03be6192998b36ef2364266e5604c19',1,'edash_packager::media::AVCDecoderConfiguration::GetCodecString() const '],['../d6/d49/classedash__packager_1_1media_1_1AVCDecoderConfiguration.html#a88c2e4c0fd4dd99f6a1b02649a6b5831',1,'edash_packager::media::AVCDecoderConfiguration::GetCodecString(uint8_t profile_indication, uint8_t profile_compatibility, uint8_t avc_level)'],['../d6/d5d/classedash__packager_1_1media_1_1HEVCDecoderConfiguration.html#abe707416639b9382c680647d6970eda5',1,'edash_packager::media::HEVCDecoderConfiguration::GetCodecString()'],['../d7/d85/classedash__packager_1_1media_1_1VPCodecConfiguration.html#a56c474703175b9a323ef24553da42704',1,'edash_packager::media::VPCodecConfiguration::GetCodecString()']]], ['getcontenttype',['GetContentType',['../db/d09/namespaceedash__packager.html#a7f479c5670e5c9f721772e0bd316bff9',1,'edash_packager']]], ['getcryptoperiodkey',['GetCryptoPeriodKey',['../d0/d86/classedash__packager_1_1media_1_1FixedKeySource.html#a109d8adf6eaf0e85d46358ffa9b5e2d8',1,'edash_packager::media::FixedKeySource::GetCryptoPeriodKey()'],['../d9/d8b/classedash__packager_1_1media_1_1KeySource.html#ad553c27e8575682eb408bef53d5f4e1c',1,'edash_packager::media::KeySource::GetCryptoPeriodKey()'],['../db/da4/classedash__packager_1_1media_1_1WidevineKeySource.html#a35023c0b18a2db012027d4cf22c7bf1b',1,'edash_packager::media::WidevineKeySource::GetCryptoPeriodKey()']]], diff --git a/docs/search/all_b.js b/docs/search/all_b.js index 288262da0c..4e9ee06df0 100644 --- a/docs/search/all_b.js +++ b/docs/search/all_b.js @@ -36,8 +36,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']]], ['mutable_5fdata',['mutable_data',['../d6/d3e/classedash__packager_1_1media_1_1mp2t_1_1PesPacket.html#a66a54190f1c23385d61351e843ec0b8a',1,'edash_packager::media::mp2t::PesPacket']]], ['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']]], diff --git a/docs/search/all_d.js b/docs/search/all_d.js index e17ad02e53..9d8cae1986 100644 --- a/docs/search/all_d.js +++ b/docs/search/all_d.js @@ -14,6 +14,7 @@ var searchData= ['open',['Open',['../de/d19/classedash__packager_1_1media_1_1File.html#a4dfd6f4d8f67d2ee1caff4f4e1717c70',1,'edash_packager::media::File::Open(const char *file_name, const char *mode)'],['../de/d19/classedash__packager_1_1media_1_1File.html#a0933ccd7df76fcf8fbcfe12c15dbf6c5',1,'edash_packager::media::File::Open()=0'],['../dd/d98/classedash__packager_1_1media_1_1LocalFile.html#a74829bb7ba2e219ab2d3137917c55271',1,'edash_packager::media::LocalFile::Open()'],['../d3/d81/classedash__packager_1_1media_1_1MemoryFile.html#aaabf1020efbc1e5e8bbb66f77c4bf1d6',1,'edash_packager::media::MemoryFile::Open()'],['../dc/dfa/classedash__packager_1_1media_1_1ThreadedIoFile.html#a5ad6384c116d61739667daa2a7a5613a',1,'edash_packager::media::ThreadedIoFile::Open()'],['../d8/dc7/classedash__packager_1_1media_1_1UdpFile.html#af759eb9caafd6220ede8c2584a706af0',1,'edash_packager::media::UdpFile::Open()'],['../d4/d8c/classedash__packager_1_1media_1_1MkvWriter.html#aad173b6f71e6c93e2dba2a61270f0843',1,'edash_packager::media::MkvWriter::Open()']]], ['openwithnobuffering',['OpenWithNoBuffering',['../de/d19/classedash__packager_1_1media_1_1File.html#a47194a7cd303640c2a8b689d18ef9701',1,'edash_packager::media::File']]], ['optimizesampleentries',['OptimizeSampleEntries',['../db/dae/classedash__packager_1_1media_1_1mp4_1_1Fragmenter.html#ae51bbd5482783890e9843fd3ca61f2bb',1,'edash_packager::media::mp4::Fragmenter']]], + ['opusspecific',['OpusSpecific',['../d1/d8a/structedash__packager_1_1media_1_1mp4_1_1OpusSpecific.html',1,'edash_packager::media::mp4']]], ['originalformat',['OriginalFormat',['../da/d4b/structedash__packager_1_1media_1_1mp4_1_1OriginalFormat.html',1,'edash_packager::media::mp4']]], ['output_5ffile_5fname',['output_file_name',['../de/d57/structedash__packager_1_1media_1_1MuxerOptions.html#addd401a47b287f3c18cbdc4bfa1a6963',1,'edash_packager::media::MuxerOptions']]], ['outputfilename',['OutputFileName',['../d2/d28/classedash__packager_1_1media_1_1SegmentTestBase.html#acaab54547b39b032c657e5fed3c3e9b3',1,'edash_packager::media::SegmentTestBase']]] diff --git a/docs/search/classes_0.js b/docs/search/classes_0.js index 1aae484140..bf859c7acd 100644 --- a/docs/search/classes_0.js +++ b/docs/search/classes_0.js @@ -13,6 +13,7 @@ var searchData= ['aesencryptor',['AesEncryptor',['../dc/d92/classedash__packager_1_1media_1_1AesEncryptor.html',1,'edash_packager::media']]], ['aespatterncryptor',['AesPatternCryptor',['../dc/d54/classedash__packager_1_1media_1_1AesPatternCryptor.html',1,'edash_packager::media']]], ['aesrequestsigner',['AesRequestSigner',['../d8/dcc/classedash__packager_1_1media_1_1AesRequestSigner.html',1,'edash_packager::media']]], + ['audiorollrecoveryentry',['AudioRollRecoveryEntry',['../dd/d52/structedash__packager_1_1media_1_1mp4_1_1AudioRollRecoveryEntry.html',1,'edash_packager::media::mp4']]], ['audiosampleentry',['AudioSampleEntry',['../df/d62/structedash__packager_1_1media_1_1mp4_1_1AudioSampleEntry.html',1,'edash_packager::media::mp4']]], ['audiostreaminfo',['AudioStreamInfo',['../da/d27/classedash__packager_1_1media_1_1AudioStreamInfo.html',1,'edash_packager::media']]], ['audiotimestamphelper',['AudioTimestampHelper',['../da/de4/classedash__packager_1_1media_1_1AudioTimestampHelper.html',1,'edash_packager::media']]], diff --git a/docs/search/classes_a.js b/docs/search/classes_a.js index 1dbf4d6b25..867d212d79 100644 --- a/docs/search/classes_a.js +++ b/docs/search/classes_a.js @@ -30,8 +30,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_c.js b/docs/search/classes_c.js index 9e47016939..0e10729275 100644 --- a/docs/search/classes_c.js +++ b/docs/search/classes_c.js @@ -2,5 +2,6 @@ var searchData= [ ['offsetbytequeue',['OffsetByteQueue',['../d1/d92/classedash__packager_1_1media_1_1OffsetByteQueue.html',1,'edash_packager::media']]], ['onmediaendparameters',['OnMediaEndParameters',['../d3/de7/structedash__packager_1_1media_1_1OnMediaEndParameters.html',1,'edash_packager::media']]], + ['opusspecific',['OpusSpecific',['../d1/d8a/structedash__packager_1_1media_1_1mp4_1_1OpusSpecific.html',1,'edash_packager::media::mp4']]], ['originalformat',['OriginalFormat',['../da/d4b/structedash__packager_1_1media_1_1mp4_1_1OriginalFormat.html',1,'edash_packager::media::mp4']]] ]; diff --git a/docs/search/classes_f.js b/docs/search/classes_f.js index 8b32369782..e44b5dbd13 100644 --- a/docs/search/classes_f.js +++ b/docs/search/classes_f.js @@ -14,8 +14,8 @@ var searchData= ['schemeinfo',['SchemeInfo',['../d2/d6f/structedash__packager_1_1media_1_1mp4_1_1SchemeInfo.html',1,'edash_packager::media::mp4']]], ['schemetype',['SchemeType',['../d4/dcc/structedash__packager_1_1media_1_1mp4_1_1SchemeType.html',1,'edash_packager::media::mp4']]], ['seekhead',['SeekHead',['../df/df4/classedash__packager_1_1media_1_1SeekHead.html',1,'edash_packager::media']]], - ['segmenter',['Segmenter',['../dc/de1/classedash__packager_1_1media_1_1mp4_1_1Segmenter.html',1,'edash_packager::media::mp4']]], ['segmenter',['Segmenter',['../da/d14/classedash__packager_1_1media_1_1webm_1_1Segmenter.html',1,'edash_packager::media::webm']]], + ['segmenter',['Segmenter',['../dc/de1/classedash__packager_1_1media_1_1mp4_1_1Segmenter.html',1,'edash_packager::media::mp4']]], ['segmentindex',['SegmentIndex',['../d1/d81/structedash__packager_1_1media_1_1mp4_1_1SegmentIndex.html',1,'edash_packager::media::mp4']]], ['segmentinfo',['SegmentInfo',['../d9/d9b/structedash__packager_1_1SegmentInfo.html',1,'edash_packager']]], ['segmentreference',['SegmentReference',['../d4/dce/structedash__packager_1_1media_1_1mp4_1_1SegmentReference.html',1,'edash_packager::media::mp4']]], diff --git a/docs/search/functions_0.js b/docs/search/functions_0.js index b019680eaf..c361feaea4 100644 --- a/docs/search/functions_0.js +++ b/docs/search/functions_0.js @@ -33,6 +33,6 @@ var searchData= ['appendnbytes',['AppendNBytes',['../df/dde/classedash__packager_1_1media_1_1BufferWriter.html#ac929211fc97bc8ec880109775757bb81',1,'edash_packager::media::BufferWriter']]], ['audio_5fdescription',['audio_description',['../db/d26/classedash__packager_1_1media_1_1mp4_1_1TrackRunIterator.html#a2c58182a77817e4ed4a2860ae3be73df',1,'edash_packager::media::mp4::TrackRunIterator']]], ['audio_5fobject_5ftype',['audio_object_type',['../dc/dc6/classedash__packager_1_1media_1_1mp4_1_1AACAudioSpecificConfig.html#a12bcda441f7745bd70cb9b4fdfb4b9b5',1,'edash_packager::media::mp4::AACAudioSpecificConfig']]], - ['audiostreaminfo',['AudioStreamInfo',['../da/d27/classedash__packager_1_1media_1_1AudioStreamInfo.html#a3a75339290a004cc4b2dd232e4561ed8',1,'edash_packager::media::AudioStreamInfo']]], + ['audiostreaminfo',['AudioStreamInfo',['../da/d27/classedash__packager_1_1media_1_1AudioStreamInfo.html#aaae3780aafebf76f852d43415e7e772a',1,'edash_packager::media::AudioStreamInfo']]], ['auxinfoneedstobecached',['AuxInfoNeedsToBeCached',['../db/d26/classedash__packager_1_1media_1_1mp4_1_1TrackRunIterator.html#a3538a0f31238843afd2dfb4e94587f03',1,'edash_packager::media::mp4::TrackRunIterator']]] ]; diff --git a/docs/search/functions_1.js b/docs/search/functions_1.js index 00116c24be..e760ee4cde 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()'],['../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()'],['../dd/d7d/structedash__packager_1_1media_1_1mp4_1_1TextSampleEntry.html#af6690728e3b081dc0cf11306fd1493af',1,'edash_packager::media::mp4::TextSampleEntry::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()'],['../d1/d8a/structedash__packager_1_1media_1_1mp4_1_1OpusSpecific.html#ab828e008127b14fdc1a28ae7e306eb75',1,'edash_packager::media::mp4::OpusSpecific::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()'],['../dd/d7d/structedash__packager_1_1media_1_1mp4_1_1TextSampleEntry.html#af6690728e3b081dc0cf11306fd1493af',1,'edash_packager::media::mp4::TextSampleEntry::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()'],['../d2/d26/structedash__packager_1_1media_1_1mp4_1_1SampleGroupDescription.html#a20836adec61bcbc891d08ffbc291ab4e',1,'edash_packager::media::mp4::SampleGroupDescription::BoxType()'],['../d1/d65/structedash__packager_1_1media_1_1mp4_1_1SampleToGroup.html#abf5ab6476c2530cf820cc4262c2eef41',1,'edash_packager::media::mp4::SampleToGroup::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()'],['../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']]], diff --git a/docs/search/functions_5.js b/docs/search/functions_5.js index 3770cedec7..bb4c7c54d5 100644 --- a/docs/search/functions_5.js +++ b/docs/search/functions_5.js @@ -4,11 +4,11 @@ var searchData= ['file_5fname',['file_name',['../de/d19/classedash__packager_1_1media_1_1File.html#ad736ca7bb8da1cec749f51275a87872c',1,'edash_packager::media::File']]], ['finalize',['Finalize',['../df/df0/classedash__packager_1_1media_1_1mp2t_1_1TsSegmenter.html#a480d6c01383303b53f3ca0a99e5a888e',1,'edash_packager::media::mp2t::TsSegmenter::Finalize()'],['../dc/de1/classedash__packager_1_1media_1_1mp4_1_1Segmenter.html#ad1136a3e7c2e796267fbd3879d108c2a',1,'edash_packager::media::mp4::Segmenter::Finalize()'],['../da/d14/classedash__packager_1_1media_1_1webm_1_1Segmenter.html#aaa092bb01c45c1d7ec84a8f370978bbb',1,'edash_packager::media::webm::Segmenter::Finalize()']]], ['finalizefragment',['FinalizeFragment',['../d8/d1e/classedash__packager_1_1media_1_1mp4_1_1EncryptingFragmenter.html#a7917221a0f5093ad6770926ee0ae0ce2',1,'edash_packager::media::mp4::EncryptingFragmenter::FinalizeFragment()'],['../db/dae/classedash__packager_1_1media_1_1mp4_1_1Fragmenter.html#a5f346308fec8fa24cf47cf7ffd21d741',1,'edash_packager::media::mp4::Fragmenter::FinalizeFragment()']]], - ['finalizefragmentforencryption',['FinalizeFragmentForEncryption',['../d8/d1e/classedash__packager_1_1media_1_1mp4_1_1EncryptingFragmenter.html#a0184deccbe7e99ea7a685cf0de2f9156',1,'edash_packager::media::mp4::EncryptingFragmenter::FinalizeFragmentForEncryption()'],['../dc/d8a/classedash__packager_1_1media_1_1mp4_1_1KeyRotationFragmenter.html#a9a89e103f4bcb483d882e5dc62060cdc',1,'edash_packager::media::mp4::KeyRotationFragmenter::FinalizeFragmentForEncryption()']]], + ['finalizefragmentforencryption',['FinalizeFragmentForEncryption',['../d8/d1e/classedash__packager_1_1media_1_1mp4_1_1EncryptingFragmenter.html#a0184deccbe7e99ea7a685cf0de2f9156',1,'edash_packager::media::mp4::EncryptingFragmenter']]], ['finalizesegment',['FinalizeSegment',['../d4/d26/classedash__packager_1_1media_1_1mp2t_1_1TsWriter.html#a34adca8447b1692556343774f3ef2777',1,'edash_packager::media::mp2t::TsWriter']]], ['flush',['Flush',['../dc/d48/classedash__packager_1_1media_1_1MediaParser.html#a207f57f06d2ad88052ea7480a068ad1c',1,'edash_packager::media::MediaParser::Flush()'],['../de/d19/classedash__packager_1_1media_1_1File.html#ace9275a79c572614ee5d068a04c76392',1,'edash_packager::media::File::Flush()'],['../dd/d98/classedash__packager_1_1media_1_1LocalFile.html#a4ab0f69a137a370d49005a1c9f13259d',1,'edash_packager::media::LocalFile::Flush()'],['../d3/d81/classedash__packager_1_1media_1_1MemoryFile.html#a87c8553905d4dd7875de1d84156ff50b',1,'edash_packager::media::MemoryFile::Flush()'],['../dc/dfa/classedash__packager_1_1media_1_1ThreadedIoFile.html#a7d65b07dd7545b7c6d759884b736ad2d',1,'edash_packager::media::ThreadedIoFile::Flush()'],['../d8/dc7/classedash__packager_1_1media_1_1UdpFile.html#acde300494ef44cdbefac7dbf27b6707f',1,'edash_packager::media::UdpFile::Flush()'],['../dc/dab/classedash__packager_1_1media_1_1mp2t_1_1Mp2tMediaParser.html#a12cf8261396cfa4753967d7f0acb2587',1,'edash_packager::media::mp2t::Mp2tMediaParser::Flush()'],['../de/d1a/classedash__packager_1_1media_1_1mp2t_1_1PesPacketGenerator.html#a812e776f3064d22f60e742fb1f6aa700',1,'edash_packager::media::mp2t::PesPacketGenerator::Flush()'],['../d8/d0d/classedash__packager_1_1media_1_1mp4_1_1MP4MediaParser.html#a923b9bdc43e77a0f072c6e637f9af910',1,'edash_packager::media::mp4::MP4MediaParser::Flush()'],['../db/da0/classedash__packager_1_1media_1_1WebMClusterParser.html#a78a598c816a44067e01b08626e1a885a',1,'edash_packager::media::WebMClusterParser::Flush()'],['../dd/d99/classedash__packager_1_1media_1_1WebMMediaParser.html#a9636d22ec12e85f52f34b0b957b42911',1,'edash_packager::media::WebMMediaParser::Flush()'],['../d2/d51/classedash__packager_1_1media_1_1WebVttMediaParser.html#a258b3dda049d3ae4b03be8f91976dd9b',1,'edash_packager::media::WebVttMediaParser::Flush()'],['../d8/da0/classedash__packager_1_1media_1_1wvm_1_1WvmMediaParser.html#ada8310858959deec97adfa001658edf0',1,'edash_packager::media::wvm::WvmMediaParser::Flush()'],['../da/d49/classedash__packager_1_1DashIopMpdNotifier.html#a74080da948602a4deb88046e56eda79e',1,'edash_packager::DashIopMpdNotifier::Flush()'],['../da/d38/classedash__packager_1_1MpdNotifier.html#aaeba5920a9df8db366f8cf86d64e855c',1,'edash_packager::MpdNotifier::Flush()'],['../db/d56/classedash__packager_1_1SimpleMpdNotifier.html#a701f3e8f0260ce8300fb9e4b31558a8d',1,'edash_packager::SimpleMpdNotifier::Flush()']]], ['forcesetsegmentalignment',['ForceSetSegmentAlignment',['../db/de4/classedash__packager_1_1AdaptationSet.html#a949526c833122b9a1ca40b9990224990',1,'edash_packager::AdaptationSet']]], - ['fragmenter',['Fragmenter',['../db/dae/classedash__packager_1_1media_1_1mp4_1_1Fragmenter.html#ae285aba21b3099fe0d5b9e5236583bc8',1,'edash_packager::media::mp4::Fragmenter']]], + ['fragmenter',['Fragmenter',['../db/dae/classedash__packager_1_1media_1_1mp4_1_1Fragmenter.html#a24a46b332d8ecb297d74df8b8a646158',1,'edash_packager::media::mp4::Fragmenter']]], ['frequency',['frequency',['../dc/dc6/classedash__packager_1_1media_1_1mp4_1_1AACAudioSpecificConfig.html#a67fdc1b4f5787341e27d07c814a01a08',1,'edash_packager::media::mp4::AACAudioSpecificConfig']]], ['frombmfftimescale',['FromBMFFTimescale',['../da/d14/classedash__packager_1_1media_1_1webm_1_1Segmenter.html#a377639e4fdce4ca03a07c97a210af720',1,'edash_packager::media::webm::Segmenter']]], ['frommetadata',['FromMetadata',['../d8/d6c/classedash__packager_1_1media_1_1MediaSample.html#a7181e8f5f86235581cba01be701e55b6',1,'edash_packager::media::MediaSample']]], diff --git a/docs/search/functions_6.js b/docs/search/functions_6.js index e3f1b8080c..807db09f94 100644 --- a/docs/search/functions_6.js +++ b/docs/search/functions_6.js @@ -8,7 +8,7 @@ var searchData= ['getadtsheadersize',['GetAdtsHeaderSize',['../db/d69/classedash__packager_1_1media_1_1mp2t_1_1AdtsHeader.html#a87affdf0dc61bedb13bafd76c3d5b484',1,'edash_packager::media::mp2t::AdtsHeader']]], ['getaudiodefaultduration',['GetAudioDefaultDuration',['../db/d23/classedash__packager_1_1media_1_1WebMTracksParser.html#a38388e04fa6eb5542a32ab83287002e3',1,'edash_packager::media::WebMTracksParser']]], ['getaudiospecificconfig',['GetAudioSpecificConfig',['../db/d69/classedash__packager_1_1media_1_1mp2t_1_1AdtsHeader.html#a65c36a606121daa90c44b44632b634ec',1,'edash_packager::media::mp2t::AdtsHeader']]], - ['getaudiostreaminfo',['GetAudioStreamInfo',['../de/d98/classedash__packager_1_1media_1_1WebMAudioClient.html#aa1adf8eaedbb721b663e67630e54e36a',1,'edash_packager::media::WebMAudioClient']]], + ['getaudiostreaminfo',['GetAudioStreamInfo',['../de/d98/classedash__packager_1_1media_1_1WebMAudioClient.html#a8fe05588ffbcf8882c3125cc3f0229a2',1,'edash_packager::media::WebMAudioClient']]], ['getcodecstring',['GetCodecString',['../da/d27/classedash__packager_1_1media_1_1AudioStreamInfo.html#aa62e486f463c867b8e2f41ebb4ecea34',1,'edash_packager::media::AudioStreamInfo::GetCodecString()'],['../d6/d49/classedash__packager_1_1media_1_1AVCDecoderConfiguration.html#ad03be6192998b36ef2364266e5604c19',1,'edash_packager::media::AVCDecoderConfiguration::GetCodecString() const '],['../d6/d49/classedash__packager_1_1media_1_1AVCDecoderConfiguration.html#a88c2e4c0fd4dd99f6a1b02649a6b5831',1,'edash_packager::media::AVCDecoderConfiguration::GetCodecString(uint8_t profile_indication, uint8_t profile_compatibility, uint8_t avc_level)'],['../d6/d5d/classedash__packager_1_1media_1_1HEVCDecoderConfiguration.html#abe707416639b9382c680647d6970eda5',1,'edash_packager::media::HEVCDecoderConfiguration::GetCodecString()'],['../d7/d85/classedash__packager_1_1media_1_1VPCodecConfiguration.html#a56c474703175b9a323ef24553da42704',1,'edash_packager::media::VPCodecConfiguration::GetCodecString()']]], ['getcontenttype',['GetContentType',['../db/d09/namespaceedash__packager.html#a7f479c5670e5c9f721772e0bd316bff9',1,'edash_packager']]], ['getcryptoperiodkey',['GetCryptoPeriodKey',['../d0/d86/classedash__packager_1_1media_1_1FixedKeySource.html#a109d8adf6eaf0e85d46358ffa9b5e2d8',1,'edash_packager::media::FixedKeySource::GetCryptoPeriodKey()'],['../d9/d8b/classedash__packager_1_1media_1_1KeySource.html#ad553c27e8575682eb408bef53d5f4e1c',1,'edash_packager::media::KeySource::GetCryptoPeriodKey()'],['../db/da4/classedash__packager_1_1media_1_1WidevineKeySource.html#a35023c0b18a2db012027d4cf22c7bf1b',1,'edash_packager::media::WidevineKeySource::GetCryptoPeriodKey()']]],