diff --git a/docs/annotated.html b/docs/annotated.html index d5f616abb4..e192979347 100644 --- a/docs/annotated.html +++ b/docs/annotated.html @@ -253,21 +253,22 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); ||oCH264SEIRecoveryPoint ||oCH264SEIMessage ||oCH264Parser -||oCCluster -||oCClusterBuilder -||oCOpusPacket -||oCTracksBuilder -||oCWebMAudioClientHelper class used to parse an Audio element inside a TrackEntry element -||oCWebMClusterParser -||oCContentEncoding -||oCWebMContentEncodingsClientParser for WebM ContentEncodings element -||oCWebMInfoParserParser for WebM Info element -||oCWebMMediaParser -||oCWebMParserClient -||oCWebMListParser -||oCWebMTracksParserParser for WebM Tracks element -||oCWebMVideoClientHelper class used to parse a Video element inside a TrackEntry element -||\CWebMWebVTTParser +||oCVPCodecConfigurationClass for parsing or writing VP codec configuration data +||oCCluster +||oCClusterBuilder +||oCOpusPacket +||oCTracksBuilder +||oCWebMAudioClientHelper class used to parse an Audio element inside a TrackEntry element +||oCWebMClusterParser +||oCContentEncoding +||oCWebMContentEncodingsClientParser for WebM ContentEncodings element +||oCWebMInfoParserParser for WebM Info element +||oCWebMMediaParser +||oCWebMParserClient +||oCWebMListParser +||oCWebMTracksParserParser for WebM Tracks element +||oCWebMVideoClientHelper class used to parse a Video element inside a TrackEntry element +||\CWebMWebVTTParser |oNxml ||oCXmlDeleter ||oCScopedXmlPtrScoped_ptr for libxml2 resources @@ -298,7 +299,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/classes.html b/docs/classes.html index 7d3ffc6951..ac3ba962f0 100644 --- a/docs/classes.html +++ b/docs/classes.html @@ -127,32 +127,32 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); ByteQueue (edash_packager::media)   FileType (edash_packager::media::mp4)   MovieFragment (edash_packager::media::mp4)   SampleToGroupEntry (edash_packager::media::mp4)   VideoStreamInfoParameters (edash_packager::media)   
  C  
Fragmenter (edash_packager::media::mp4)   MovieFragmentHeader (edash_packager::media::mp4)   SchemeInfo (edash_packager::media::mp4)   VodMediaInfoDumpMuxerListener (edash_packager::media)    -FrameCENCInfo (edash_packager::media::mp4)   MovieHeader (edash_packager::media::mp4)   SchemeType (edash_packager::media::mp4)   
  W  
+FrameCENCInfo (edash_packager::media::mp4)   MovieHeader (edash_packager::media::mp4)   SchemeType (edash_packager::media::mp4)   VPCodecConfiguration (edash_packager::media)    +CencSampleEncryptionInfoEntry (edash_packager::media::mp4)   FullBox (edash_packager::media::mp4)   Mp2tMediaParser (edash_packager::media::mp2t)   ScopedXmlPtr (edash_packager::xml)   
  W  
-CencSampleEncryptionInfoEntry (edash_packager::media::mp4)   FullBox (edash_packager::media::mp4)   Mp2tMediaParser (edash_packager::media::mp2t)   ScopedXmlPtr (edash_packager::xml)    ChunkInfo (edash_packager::media::mp4)   
  H  
-MP4MediaParser (edash_packager::media::mp4)   Segmenter (edash_packager::media::mp4)   WebMAudioClient (edash_packager::media)    -ChunkInfoIterator (edash_packager::media::mp4)   MP4Muxer (edash_packager::media::mp4)   SegmentIndex (edash_packager::media::mp4)   WebMClusterParser (edash_packager::media)    -ChunkLargeOffset (edash_packager::media::mp4)   H264BitReader (edash_packager::media)   MpdBuilder (edash_packager)   SegmentInfo (edash_packager)   WebMContentEncodingsClient (edash_packager::media)    -ChunkOffset (edash_packager::media::mp4)   H264ByteToUnitStreamConverter (edash_packager::media)   MpdNotifier (edash_packager)   SegmentReference (edash_packager::media::mp4)   WebMInfoParser (edash_packager::media)    -ClosureThread (edash_packager::media)   H264DecRefPicMarking (edash_packager::media)   MpdNotifierFactory (edash_packager)   SegmentType (edash_packager::media::mp4)   WebMListParser (edash_packager::media)    -Cluster (edash_packager::media)   H264ModificationOfPicNum (edash_packager::media)   MpdNotifyMuxerListener (edash_packager::media)   SimpleMpdNotifier (edash_packager)   WebMMediaParser (edash_packager::media)    -ClusterBuilder (edash_packager::media)   H264NALU (edash_packager::media)   MpdOptions (edash_packager)   SingleSegmentSegmenter (edash_packager::media::mp4)   WebMParserClient (edash_packager::media)    -CodecConfigurationRecord (edash_packager::media::mp4)   H264Parser (edash_packager::media)   MpdWriter (edash_packager)   SoundMediaHeader (edash_packager::media::mp4)   WebMTracksParser (edash_packager::media)    -CompactSampleSize (edash_packager::media::mp4)   H264PPS (edash_packager::media)   MultiSegmentSegmenter (edash_packager::media::mp4)   Status (edash_packager::media)   WebMVideoClient (edash_packager::media)    -CompositionOffset (edash_packager::media::mp4)   H264SEIMessage (edash_packager::media)   Muxer (edash_packager::media)   StreamDescriptor (edash_packager::media)   WebMWebVTTParser (edash_packager::media)    -CompositionOffsetIterator (edash_packager::media::mp4)   H264SEIRecoveryPoint (edash_packager::media)   MuxerListener (edash_packager::media)   StreamDescriptorCompareFn (edash_packager::media)   WidevineKeySource (edash_packager::media)    -CompositionTimeToSample (edash_packager::media::mp4)   H264SliceHeader (edash_packager::media)   MuxerOptions (edash_packager::media)   StreamInfo (edash_packager::media)   WvmMediaParser (edash_packager::media::wvm)    +MP4MediaParser (edash_packager::media::mp4)   Segmenter (edash_packager::media::mp4)    +ChunkInfoIterator (edash_packager::media::mp4)   MP4Muxer (edash_packager::media::mp4)   SegmentIndex (edash_packager::media::mp4)   WebMAudioClient (edash_packager::media)    +ChunkLargeOffset (edash_packager::media::mp4)   H264BitReader (edash_packager::media)   MpdBuilder (edash_packager)   SegmentInfo (edash_packager)   WebMClusterParser (edash_packager::media)    +ChunkOffset (edash_packager::media::mp4)   H264ByteToUnitStreamConverter (edash_packager::media)   MpdNotifier (edash_packager)   SegmentReference (edash_packager::media::mp4)   WebMContentEncodingsClient (edash_packager::media)    +ClosureThread (edash_packager::media)   H264DecRefPicMarking (edash_packager::media)   MpdNotifierFactory (edash_packager)   SegmentType (edash_packager::media::mp4)   WebMInfoParser (edash_packager::media)    +Cluster (edash_packager::media)   H264ModificationOfPicNum (edash_packager::media)   MpdNotifyMuxerListener (edash_packager::media)   SimpleMpdNotifier (edash_packager)   WebMListParser (edash_packager::media)    +ClusterBuilder (edash_packager::media)   H264NALU (edash_packager::media)   MpdOptions (edash_packager)   SingleSegmentSegmenter (edash_packager::media::mp4)   WebMMediaParser (edash_packager::media)    +CodecConfigurationRecord (edash_packager::media::mp4)   H264Parser (edash_packager::media)   MpdWriter (edash_packager)   SoundMediaHeader (edash_packager::media::mp4)   WebMParserClient (edash_packager::media)    +CompactSampleSize (edash_packager::media::mp4)   H264PPS (edash_packager::media)   MultiSegmentSegmenter (edash_packager::media::mp4)   Status (edash_packager::media)   WebMTracksParser (edash_packager::media)    +CompositionOffset (edash_packager::media::mp4)   H264SEIMessage (edash_packager::media)   Muxer (edash_packager::media)   StreamDescriptor (edash_packager::media)   WebMVideoClient (edash_packager::media)    +CompositionOffsetIterator (edash_packager::media::mp4)   H264SEIRecoveryPoint (edash_packager::media)   MuxerListener (edash_packager::media)   StreamDescriptorCompareFn (edash_packager::media)   WebMWebVTTParser (edash_packager::media)    +CompositionTimeToSample (edash_packager::media::mp4)   H264SliceHeader (edash_packager::media)   MuxerOptions (edash_packager::media)   StreamInfo (edash_packager::media)   WidevineKeySource (edash_packager::media)    ContentEncoding (edash_packager::media)   H264SPS (edash_packager::media)   
  O  
-SubsampleEntry (edash_packager::media)   
  X  
+SubsampleEntry (edash_packager::media)   WvmMediaParser (edash_packager::media::wvm)    +ContentProtectionElement (edash_packager)   H264WeightingFactors (edash_packager::media)   SyncSample (edash_packager::media::mp4)   
  X  
-ContentProtectionElement (edash_packager)   H264WeightingFactors (edash_packager::media)   SyncSample (edash_packager::media::mp4)   
  D  
-HandlerReference (edash_packager::media::mp4)   OffsetByteQueue (edash_packager::media)   SyncSampleIterator (edash_packager::media::mp4)   XmlDeleter (edash_packager::xml)    +HandlerReference (edash_packager::media::mp4)   OffsetByteQueue (edash_packager::media)   SyncSampleIterator (edash_packager::media::mp4)    HttpKeyFetcher (edash_packager::media)   OnMediaEndParameters (edash_packager::media)   
  T  
-XmlNode (edash_packager::xml)    +XmlDeleter (edash_packager::xml)    DashIopMpdNotifier (edash_packager)   
  I  
-OpusPacket (edash_packager::media)    +OpusPacket (edash_packager::media)   XmlNode (edash_packager::xml)    DataEntryUrl (edash_packager::media::mp4)   OriginalFormat (edash_packager::media::mp4)   TextTrack (edash_packager::media)    DataInformation (edash_packager::media::mp4)   IoCache (edash_packager::media)   
  P  
TextTrackConfig (edash_packager::media)    @@ -164,7 +164,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/d0/d06/mpd__flags_8cc_source.html b/docs/d0/d06/mpd__flags_8cc_source.html index 19eb5efa78..480a150632 100644 --- a/docs/d0/d06/mpd__flags_8cc_source.html +++ b/docs/d0/d06/mpd__flags_8cc_source.html @@ -148,7 +148,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d08/structedash__packager_1_1media_1_1mp4_1_1CodecConfigurationRecord-members.html b/docs/d0/d08/structedash__packager_1_1media_1_1mp4_1_1CodecConfigurationRecord-members.html index dc63b72ece..91284ac963 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 @@ -108,7 +108,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 78baa35863..281033717b 100644 --- a/docs/d0/d0e/muxer__options_8h_source.html +++ b/docs/d0/d0e/muxer__options_8h_source.html @@ -146,7 +146,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 f8ecb5eb6a..6e89d0d72b 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 @@ -104,7 +104,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 426142d60e..5b5eabf8ca 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 @@ -113,7 +113,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 c0be79ad66..3db2205fb9 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 97d6bf37c7..775faf6c9b 100644 --- a/docs/d0/d28/classedash__packager_1_1media_1_1mp4_1_1MultiSegmentSegmenter-members.html +++ b/docs/d0/d28/classedash__packager_1_1media_1_1mp4_1_1MultiSegmentSegmenter-members.html @@ -118,7 +118,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d30/mock__mpd__notifier_8h_source.html b/docs/d0/d30/mock__mpd__notifier_8h_source.html index 8ab377e3b3..0f07901869 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 c84b77f769..2c28c59fea 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 8ac5974c27..b61607af26 100644 --- a/docs/d0/d35/es__descriptor_8cc_source.html +++ b/docs/d0/d35/es__descriptor_8cc_source.html @@ -282,7 +282,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 1d0eab48dc..1acac041e6 100644 --- a/docs/d0/d3a/classedash__packager_1_1xml_1_1RepresentationBaseXmlNode-members.html +++ b/docs/d0/d3a/classedash__packager_1_1xml_1_1RepresentationBaseXmlNode-members.html @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d3a/webm__constants_8h_source.html b/docs/d0/d3a/webm__constants_8h_source.html index 0d91843846..5380e28a4b 100644 --- a/docs/d0/d3a/webm__constants_8h_source.html +++ b/docs/d0/d3a/webm__constants_8h_source.html @@ -313,7 +313,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d42/widevine__encryption__flags_8cc_source.html b/docs/d0/d42/widevine__encryption__flags_8cc_source.html index 74242489a2..454406b7e3 100644 --- a/docs/d0/d42/widevine__encryption__flags_8cc_source.html +++ b/docs/d0/d42/widevine__encryption__flags_8cc_source.html @@ -243,7 +243,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d43/structedash__packager_1_1media_1_1H264SPS-members.html b/docs/d0/d43/structedash__packager_1_1media_1_1H264SPS-members.html index 620c97e50a..3d5ecfcb5f 100644 --- a/docs/d0/d43/structedash__packager_1_1media_1_1H264SPS-members.html +++ b/docs/d0/d43/structedash__packager_1_1media_1_1H264SPS-members.html @@ -142,7 +142,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d46/fourccs_8h_source.html b/docs/d0/d46/fourccs_8h_source.html index f84bf57cc7..7670fca48a 100644 --- a/docs/d0/d46/fourccs_8h_source.html +++ b/docs/d0/d46/fourccs_8h_source.html @@ -181,28 +181,32 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
92  FOURCC_UUID = 0x75756964,
93  FOURCC_VIDE = 0x76696465,
94  FOURCC_VMHD = 0x766d6864,
-
95  FOURCC_WIDE = 0x77696465,
-
96 };
-
97 
-
98 const inline std::string FourCCToString(FourCC fourcc) {
-
99  char buf[5];
-
100  buf[0] = (fourcc >> 24) & 0xff;
-
101  buf[1] = (fourcc >> 16) & 0xff;
-
102  buf[2] = (fourcc >> 8) & 0xff;
-
103  buf[3] = (fourcc) & 0xff;
-
104  buf[4] = 0;
-
105  return std::string(buf);
-
106 }
-
107 
-
108 } // namespace mp4
-
109 } // namespace media
-
110 } // namespace edash_packager
+
95  FOURCC_VP08 = 0x76703038,
+
96  FOURCC_VP09 = 0x76703039,
+
97  FOURCC_VP10 = 0x76703130,
+
98  FOURCC_VPCC = 0x76706343,
+
99  FOURCC_WIDE = 0x77696465,
+
100 };
+
101 
+
102 const inline std::string FourCCToString(FourCC fourcc) {
+
103  char buf[5];
+
104  buf[0] = (fourcc >> 24) & 0xff;
+
105  buf[1] = (fourcc >> 16) & 0xff;
+
106  buf[2] = (fourcc >> 8) & 0xff;
+
107  buf[3] = (fourcc) & 0xff;
+
108  buf[4] = 0;
+
109  return std::string(buf);
+
110 }
111 
-
112 #endif // MEDIA_FORMATS_MP4_FOURCCS_H_
+
112 } // namespace mp4
+
113 } // namespace media
+
114 } // namespace edash_packager
+
115 
+
116 #endif // MEDIA_FORMATS_MP4_FOURCCS_H_
diff --git a/docs/d0/d49/vod__media__info__dump__muxer__listener_8cc_source.html b/docs/d0/d49/vod__media__info__dump__muxer__listener_8cc_source.html index a6034bcf88..52d98743fb 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 @@ -227,7 +227,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 57ae0d938a..5b7525847b 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 @@ -113,7 +113,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 cf7d241b33..3d3739447d 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/d66/structedash__packager_1_1media_1_1mp4_1_1PixelAspectRatioBox-members.html b/docs/d0/d66/structedash__packager_1_1media_1_1mp4_1_1PixelAspectRatioBox-members.html index c047e20abf..c9567929c4 100644 --- a/docs/d0/d66/structedash__packager_1_1media_1_1mp4_1_1PixelAspectRatioBox-members.html +++ b/docs/d0/d66/structedash__packager_1_1media_1_1mp4_1_1PixelAspectRatioBox-members.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); 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 0ef682446d..a069f61059 100644 --- a/docs/d0/d7d/classedash__packager_1_1media_1_1H264Parser-members.html +++ b/docs/d0/d7d/classedash__packager_1_1media_1_1H264Parser-members.html @@ -114,7 +114,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d7d/decryptor__source_8h_source.html b/docs/d0/d7d/decryptor__source_8h_source.html index 210b561871..ce66d9a7dc 100644 --- a/docs/d0/d7d/decryptor__source_8h_source.html +++ b/docs/d0/d7d/decryptor__source_8h_source.html @@ -125,7 +125,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d86/structedash__packager_1_1media_1_1EncryptionKey.html b/docs/d0/d86/structedash__packager_1_1media_1_1EncryptionKey.html index ddde774fc0..74d0d9dd01 100644 --- a/docs/d0/d86/structedash__packager_1_1media_1_1EncryptionKey.html +++ b/docs/d0/d86/structedash__packager_1_1media_1_1EncryptionKey.html @@ -119,7 +119,7 @@ std::vector< uint8_t >  diff --git a/docs/d0/d92/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentDecodeTime.html b/docs/d0/d92/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentDecodeTime.html index 05d7273598..bc257f834d 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 @@ -169,7 +169,7 @@ Additional Inherited Members

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

-

Definition at line 1441 of file box_definitions.cc.

+

Definition at line 1469 of file box_definitions.cc.

@@ -180,7 +180,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 0a03737ffc..45709609cc 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 @@ -113,7 +113,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 c535e8fb03..eea9918470 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/da4/classedash__packager_1_1media_1_1WebMVideoClient-members.html b/docs/d0/da4/classedash__packager_1_1media_1_1WebMVideoClient-members.html index 6d41bee414..2311f328f5 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 90d17e6829..0f8e8d10ea 100644 --- a/docs/d0/da6/stream__descriptor_8cc_source.html +++ b/docs/d0/da6/stream__descriptor_8cc_source.html @@ -229,7 +229,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 c102d64ef1..ceddbca601 100644 --- a/docs/d0/da9/classedash__packager_1_1MockRepresentation.html +++ b/docs/d0/da9/classedash__packager_1_1MockRepresentation.html @@ -146,7 +146,7 @@ Public Member Functions 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 95d1e3b95c..ad0cb3dd2c 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/dd1/classedash__packager_1_1SimpleMpdNotifier-members.html b/docs/d0/dd1/classedash__packager_1_1SimpleMpdNotifier-members.html index 2e92c28cf0..bad07e8134 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 3c2a5c4eef..1ce7b48aca 100644 --- a/docs/d0/dd4/structedash__packager_1_1media_1_1SubsampleEntry-members.html +++ b/docs/d0/dd4/structedash__packager_1_1media_1_1SubsampleEntry-members.html @@ -98,7 +98,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/dd6/webm__crypto__helpers_8cc_source.html b/docs/d0/dd6/webm__crypto__helpers_8cc_source.html index 9656f57f2d..703ef000e2 100644 --- a/docs/d0/dd6/webm__crypto__helpers_8cc_source.html +++ b/docs/d0/dd6/webm__crypto__helpers_8cc_source.html @@ -157,7 +157,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/ddc/structedash__packager_1_1media_1_1FileCloser.html b/docs/d0/ddc/structedash__packager_1_1media_1_1FileCloser.html index 5c6905103c..d52df37226 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 d90549bbb6..d2ed31223c 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 @@ -114,7 +114,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 1f70f01f82..116772d4f7 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 @@ -111,7 +111,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 fd4d76f4bc..1d75d5fdcd 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/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 b097f58518..e8858aeee1 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/df3/packager__util_8cc_source.html b/docs/d0/df3/packager__util_8cc_source.html index aeca744f2d..21375ed90f 100644 --- a/docs/d0/df3/packager__util_8cc_source.html +++ b/docs/d0/df3/packager__util_8cc_source.html @@ -315,7 +315,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 f7251dbb94..3a89cec46f 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 @@ -108,7 +108,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 da74bbb839..50855929f6 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 3f1bdd05ac..997a9492b5 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 @@ -119,7 +119,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d08/segmenter_8cc_source.html b/docs/d1/d08/segmenter_8cc_source.html index 0f5ce1a5e3..1d3c4b2668 100644 --- a/docs/d1/d08/segmenter_8cc_source.html +++ b/docs/d1/d08/segmenter_8cc_source.html @@ -544,7 +544,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 72cd407c41..92fcfb7f04 100644 --- a/docs/d1/d13/status_8h_source.html +++ b/docs/d1/d13/status_8h_source.html @@ -240,7 +240,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 ccf384ac60..0f0b79c9df 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/d1d/muxer__flags_8cc_source.html b/docs/d1/d1d/muxer__flags_8cc_source.html index d0dde94f56..36cc5b85a5 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 1ae398ef15..79275285c1 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 c1cec62d61..848a0dc2dd 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 c1e193470a..93bdcf5863 100644 --- a/docs/d1/d28/classedash__packager_1_1media_1_1mp4_1_1SyncSampleIterator-members.html +++ b/docs/d1/d28/classedash__packager_1_1media_1_1mp4_1_1SyncSampleIterator-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d2a/structedash__packager_1_1media_1_1mp4_1_1TrackExtends-members.html b/docs/d1/d2a/structedash__packager_1_1media_1_1mp4_1_1TrackExtends-members.html index e99efedac7..d07b07640d 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 @@ -115,7 +115,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 b831bc7083..64a3e7b984 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 @@ -164,7 +164,7 @@ Additional Inherited Members

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

-

Definition at line 896 of file box_definitions.cc.

+

Definition at line 898 of file box_definitions.cc.

@@ -175,7 +175,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 40df4bb9d1..3661332092 100644 --- a/docs/d1/d37/es__parser__h264_8h_source.html +++ b/docs/d1/d37/es__parser__h264_8h_source.html @@ -200,7 +200,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d38/classedash__packager_1_1MockRepresentation-members.html b/docs/d1/d38/classedash__packager_1_1MockRepresentation-members.html index 550c3eef29..f0dcc8d439 100644 --- a/docs/d1/d38/classedash__packager_1_1MockRepresentation-members.html +++ b/docs/d1/d38/classedash__packager_1_1MockRepresentation-members.html @@ -111,7 +111,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 a5423eb97c..577bd40326 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 6c5b5b172f..9ab5241424 100644 --- a/docs/d1/d45/decoding__time__iterator_8cc_source.html +++ b/docs/d1/d45/decoding__time__iterator_8cc_source.html @@ -168,7 +168,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d48/text__track__config_8h_source.html b/docs/d1/d48/text__track__config_8h_source.html index 04714e42f7..44d70b2892 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 3cf80f9fd3..6bdfc02620 100644 --- a/docs/d1/d4b/classedash__packager_1_1media_1_1mp2t_1_1TsPacket.html +++ b/docs/d1/d4b/classedash__packager_1_1media_1_1mp2t_1_1TsPacket.html @@ -145,7 +145,7 @@ static const int kPacketSi diff --git a/docs/d1/d4d/h264__bit__reader_8cc_source.html b/docs/d1/d4d/h264__bit__reader_8cc_source.html index 6aea6db1c9..3365b86f3e 100644 --- a/docs/d1/d4d/h264__bit__reader_8cc_source.html +++ b/docs/d1/d4d/h264__bit__reader_8cc_source.html @@ -205,7 +205,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d5d/structedash__packager_1_1MpdOptions.html b/docs/d1/d5d/structedash__packager_1_1MpdOptions.html index 9677e96e33..357d3c5b00 100644 --- a/docs/d1/d5d/structedash__packager_1_1MpdOptions.html +++ b/docs/d1/d5d/structedash__packager_1_1MpdOptions.html @@ -127,7 +127,7 @@ double suggested_presentat 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 9b0a5b6574..fdb605f1cf 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 @@ -175,7 +175,7 @@ Additional Inherited Members

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

-

Definition at line 1669 of file box_definitions.cc.

+

Definition at line 1697 of file box_definitions.cc.

@@ -186,7 +186,7 @@ Additional Inherited Members diff --git a/docs/d1/d72/language__utils_8cc_source.html b/docs/d1/d72/language__utils_8cc_source.html index 3315c062af..b91be30e60 100644 --- a/docs/d1/d72/language__utils_8cc_source.html +++ b/docs/d1/d72/language__utils_8cc_source.html @@ -206,7 +206,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d72/structedash__packager_1_1media_1_1mp4_1_1AudioSampleEntry-members.html b/docs/d1/d72/structedash__packager_1_1media_1_1mp4_1_1AudioSampleEntry-members.html index 189ed9acd3..02a7dbbb5f 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 @@ -114,7 +114,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 50d4b79f4c..1552c19da6 100644 --- a/docs/d1/d74/mp2t__media__parser_8cc_source.html +++ b/docs/d1/d74/mp2t__media__parser_8cc_source.html @@ -528,7 +528,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d76/structedash__packager_1_1media_1_1mp4_1_1SampleToChunk-members.html b/docs/d1/d76/structedash__packager_1_1media_1_1mp4_1_1SampleToChunk-members.html index 240c6a663c..c4008196ad 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 @@ -111,7 +111,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 2db5b486a9..2c36fb5dcb 100644 --- a/docs/d1/d78/classedash__packager_1_1media_1_1mp4_1_1MP4Muxer.html +++ b/docs/d1/d78/classedash__packager_1_1media_1_1mp4_1_1MP4Muxer.html @@ -176,7 +176,7 @@ base::Clock * clock () diff --git a/docs/d1/d7d/webm__video__client_8cc_source.html b/docs/d1/d7d/webm__video__client_8cc_source.html index 26aa33513d..17d72dcbd9 100644 --- a/docs/d1/d7d/webm__video__client_8cc_source.html +++ b/docs/d1/d7d/webm__video__client_8cc_source.html @@ -94,186 +94,198 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
5 #include "packager/media/formats/webm/webm_video_client.h"
6 
7 #include "packager/base/logging.h"
-
8 #include "packager/media/formats/webm/webm_constants.h"
-
9 
-
10 namespace {
+
8 #include "packager/base/stl_util.h"
+
9 #include "packager/media/filters/vp_codec_configuration.h"
+
10 #include "packager/media/formats/webm/webm_constants.h"
11 
-
12 // Timestamps are represented in double in WebM. Convert to uint64_t in us.
-
13 const uint32_t kWebMTimeScale = 1000000u;
-
14 
-
15 int64_t GetGreatestCommonDivisor(int64_t a, int64_t b) {
-
16  while (b) {
-
17  int64_t temp = b;
-
18  b = a % b;
-
19  a = temp;
-
20  }
-
21  return a;
-
22 }
-
23 
-
24 } // namespace
+
12 namespace {
+
13 
+
14 // Timestamps are represented in double in WebM. Convert to uint64_t in us.
+
15 const uint32_t kWebMTimeScale = 1000000u;
+
16 
+
17 int64_t GetGreatestCommonDivisor(int64_t a, int64_t b) {
+
18  while (b) {
+
19  int64_t temp = b;
+
20  b = a % b;
+
21  a = temp;
+
22  }
+
23  return a;
+
24 }
25 
-
26 namespace edash_packager {
-
27 namespace media {
-
28 
-
29 WebMVideoClient::WebMVideoClient() {
-
30  Reset();
-
31 }
-
32 
-
33 WebMVideoClient::~WebMVideoClient() {
-
34 }
-
35 
- -
37  pixel_width_ = -1;
-
38  pixel_height_ = -1;
-
39  crop_bottom_ = -1;
-
40  crop_top_ = -1;
-
41  crop_left_ = -1;
-
42  crop_right_ = -1;
-
43  display_width_ = -1;
-
44  display_height_ = -1;
-
45  display_unit_ = -1;
-
46  alpha_mode_ = -1;
-
47 }
-
48 
-
49 scoped_refptr<VideoStreamInfo> WebMVideoClient::GetVideoStreamInfo(
-
50  int64_t track_num,
-
51  const std::string& codec_id,
-
52  const std::vector<uint8_t>& codec_private,
-
53  bool is_encrypted) {
-
54  VideoCodec video_codec = kUnknownVideoCodec;
-
55  if (codec_id == "V_VP8") {
-
56  video_codec = kCodecVP8;
-
57  } else if (codec_id == "V_VP9") {
-
58  video_codec = kCodecVP9;
-
59  } else {
-
60  LOG(ERROR) << "Unsupported video codec_id " << codec_id;
-
61  return scoped_refptr<VideoStreamInfo>();
-
62  }
-
63 
-
64  if (pixel_width_ <= 0 || pixel_height_ <= 0)
+
26 } // namespace
+
27 
+
28 namespace edash_packager {
+
29 namespace media {
+
30 
+
31 WebMVideoClient::WebMVideoClient() {
+
32  Reset();
+
33 }
+
34 
+
35 WebMVideoClient::~WebMVideoClient() {
+
36 }
+
37 
+ +
39  pixel_width_ = -1;
+
40  pixel_height_ = -1;
+
41  crop_bottom_ = -1;
+
42  crop_top_ = -1;
+
43  crop_left_ = -1;
+
44  crop_right_ = -1;
+
45  display_width_ = -1;
+
46  display_height_ = -1;
+
47  display_unit_ = -1;
+
48  alpha_mode_ = -1;
+
49 }
+
50 
+
51 scoped_refptr<VideoStreamInfo> WebMVideoClient::GetVideoStreamInfo(
+
52  int64_t track_num,
+
53  const std::string& codec_id,
+
54  const std::vector<uint8_t>& codec_private,
+
55  bool is_encrypted) {
+
56  VideoCodec video_codec = kUnknownVideoCodec;
+
57  if (codec_id == "V_VP8") {
+
58  video_codec = kCodecVP8;
+
59  } else if (codec_id == "V_VP9") {
+
60  video_codec = kCodecVP9;
+
61  } else if (codec_id == "V_VP10") {
+
62  video_codec = kCodecVP10;
+
63  } else {
+
64  LOG(ERROR) << "Unsupported video codec_id " << codec_id;
65  return scoped_refptr<VideoStreamInfo>();
-
66 
-
67  // Set crop and display unit defaults if these elements are not present.
-
68  if (crop_bottom_ == -1)
-
69  crop_bottom_ = 0;
+
66  }
+
67 
+
68  if (pixel_width_ <= 0 || pixel_height_ <= 0)
+
69  return scoped_refptr<VideoStreamInfo>();
70 
-
71  if (crop_top_ == -1)
-
72  crop_top_ = 0;
-
73 
-
74  if (crop_left_ == -1)
-
75  crop_left_ = 0;
-
76 
-
77  if (crop_right_ == -1)
-
78  crop_right_ = 0;
-
79 
-
80  if (display_unit_ == -1)
-
81  display_unit_ = 0;
-
82 
-
83  uint16_t width_after_crop = pixel_width_ - (crop_left_ + crop_right_);
-
84  uint16_t height_after_crop = pixel_height_ - (crop_top_ + crop_bottom_);
-
85 
-
86  if (display_unit_ == 0) {
-
87  if (display_width_ <= 0)
-
88  display_width_ = width_after_crop;
-
89  if (display_height_ <= 0)
-
90  display_height_ = height_after_crop;
-
91  } else if (display_unit_ == 3) {
-
92  if (display_width_ <= 0 || display_height_ <= 0)
-
93  return scoped_refptr<VideoStreamInfo>();
-
94  } else {
-
95  LOG(ERROR) << "Unsupported display unit type " << display_unit_;
-
96  return scoped_refptr<VideoStreamInfo>();
-
97  }
-
98  // Calculate sample aspect ratio.
-
99  int64_t sar_x = display_width_ * height_after_crop;
-
100  int64_t sar_y = display_height_ * width_after_crop;
-
101  int64_t gcd = GetGreatestCommonDivisor(sar_x, sar_y);
-
102  sar_x /= gcd;
-
103  sar_y /= gcd;
-
104 
-
105  const uint8_t* extra_data = NULL;
-
106  size_t extra_data_size = 0;
-
107  if (codec_private.size() > 0) {
-
108  extra_data = &codec_private[0];
-
109  extra_data_size = codec_private.size();
-
110  }
-
111 
-
112  // TODO(kqyang): Generate codec string.
-
113  std::string codec_string;
-
114 
-
115  return scoped_refptr<VideoStreamInfo>(new VideoStreamInfo(
-
116  track_num, kWebMTimeScale, 0, video_codec, codec_string, std::string(),
-
117  width_after_crop, height_after_crop, sar_x, sar_y, 0, 0, extra_data,
-
118  extra_data_size, is_encrypted));
-
119 }
-
120 
-
121 bool WebMVideoClient::OnUInt(int id, int64_t val) {
-
122  int64_t* dst = NULL;
-
123 
-
124  switch (id) {
-
125  case kWebMIdPixelWidth:
-
126  dst = &pixel_width_;
-
127  break;
-
128  case kWebMIdPixelHeight:
-
129  dst = &pixel_height_;
-
130  break;
-
131  case kWebMIdPixelCropTop:
-
132  dst = &crop_top_;
-
133  break;
-
134  case kWebMIdPixelCropBottom:
-
135  dst = &crop_bottom_;
+
71  // Set crop and display unit defaults if these elements are not present.
+
72  if (crop_bottom_ == -1)
+
73  crop_bottom_ = 0;
+
74 
+
75  if (crop_top_ == -1)
+
76  crop_top_ = 0;
+
77 
+
78  if (crop_left_ == -1)
+
79  crop_left_ = 0;
+
80 
+
81  if (crop_right_ == -1)
+
82  crop_right_ = 0;
+
83 
+
84  if (display_unit_ == -1)
+
85  display_unit_ = 0;
+
86 
+
87  uint16_t width_after_crop = pixel_width_ - (crop_left_ + crop_right_);
+
88  uint16_t height_after_crop = pixel_height_ - (crop_top_ + crop_bottom_);
+
89 
+
90  if (display_unit_ == 0) {
+
91  if (display_width_ <= 0)
+
92  display_width_ = width_after_crop;
+
93  if (display_height_ <= 0)
+
94  display_height_ = height_after_crop;
+
95  } else if (display_unit_ == 3) {
+
96  if (display_width_ <= 0 || display_height_ <= 0)
+
97  return scoped_refptr<VideoStreamInfo>();
+
98  } else {
+
99  LOG(ERROR) << "Unsupported display unit type " << display_unit_;
+
100  return scoped_refptr<VideoStreamInfo>();
+
101  }
+
102  // Calculate sample aspect ratio.
+
103  int64_t sar_x = display_width_ * height_after_crop;
+
104  int64_t sar_y = display_height_ * width_after_crop;
+
105  int64_t gcd = GetGreatestCommonDivisor(sar_x, sar_y);
+
106  sar_x /= gcd;
+
107  sar_y /= gcd;
+
108 
+
109  // TODO(kqyang): Fill in the values for vp codec configuration.
+
110  const uint8_t profile = 0;
+
111  const uint8_t level = 0;
+
112  const uint8_t bit_depth = 8;
+
113  const uint8_t color_space = 0;
+
114  const uint8_t chroma_subsampling = 0;
+
115  const uint8_t transfer_function = 0;
+
116  const bool video_full_range_flag = false;
+
117  VPCodecConfiguration vp_config(profile, level, bit_depth, color_space,
+
118  chroma_subsampling, transfer_function,
+
119  video_full_range_flag, codec_private);
+
120  std::vector<uint8_t> extra_data;
+
121  vp_config.Write(&extra_data);
+
122 
+
123  return scoped_refptr<VideoStreamInfo>(new VideoStreamInfo(
+
124  track_num, kWebMTimeScale, 0, video_codec,
+
125  vp_config.GetCodecString(video_codec), std::string(), width_after_crop,
+
126  height_after_crop, sar_x, sar_y, 0, 0, vector_as_array(&extra_data),
+
127  extra_data.size(), is_encrypted));
+
128 }
+
129 
+
130 bool WebMVideoClient::OnUInt(int id, int64_t val) {
+
131  int64_t* dst = NULL;
+
132 
+
133  switch (id) {
+
134  case kWebMIdPixelWidth:
+
135  dst = &pixel_width_;
136  break;
-
137  case kWebMIdPixelCropLeft:
-
138  dst = &crop_left_;
+
137  case kWebMIdPixelHeight:
+
138  dst = &pixel_height_;
139  break;
-
140  case kWebMIdPixelCropRight:
-
141  dst = &crop_right_;
+
140  case kWebMIdPixelCropTop:
+
141  dst = &crop_top_;
142  break;
-
143  case kWebMIdDisplayWidth:
-
144  dst = &display_width_;
+
143  case kWebMIdPixelCropBottom:
+
144  dst = &crop_bottom_;
145  break;
-
146  case kWebMIdDisplayHeight:
-
147  dst = &display_height_;
+
146  case kWebMIdPixelCropLeft:
+
147  dst = &crop_left_;
148  break;
-
149  case kWebMIdDisplayUnit:
-
150  dst = &display_unit_;
+
149  case kWebMIdPixelCropRight:
+
150  dst = &crop_right_;
151  break;
-
152  case kWebMIdAlphaMode:
-
153  dst = &alpha_mode_;
+
152  case kWebMIdDisplayWidth:
+
153  dst = &display_width_;
154  break;
-
155  default:
-
156  return true;
-
157  }
-
158 
-
159  if (*dst != -1) {
-
160  LOG(ERROR) << "Multiple values for id " << std::hex << id << " specified ("
-
161  << *dst << " and " << val << ")";
-
162  return false;
-
163  }
-
164 
-
165  *dst = val;
-
166  return true;
-
167 }
-
168 
-
169 bool WebMVideoClient::OnBinary(int id, const uint8_t* data, int size) {
-
170  // Accept binary fields we don't care about for now.
-
171  return true;
-
172 }
+
155  case kWebMIdDisplayHeight:
+
156  dst = &display_height_;
+
157  break;
+
158  case kWebMIdDisplayUnit:
+
159  dst = &display_unit_;
+
160  break;
+
161  case kWebMIdAlphaMode:
+
162  dst = &alpha_mode_;
+
163  break;
+
164  default:
+
165  return true;
+
166  }
+
167 
+
168  if (*dst != -1) {
+
169  LOG(ERROR) << "Multiple values for id " << std::hex << id << " specified ("
+
170  << *dst << " and " << val << ")";
+
171  return false;
+
172  }
173 
-
174 bool WebMVideoClient::OnFloat(int id, double val) {
-
175  // Accept float fields we don't care about for now.
-
176  return true;
-
177 }
-
178 
-
179 } // namespace media
-
180 } // namespace edash_packager
-
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.
-
Holds video stream information.
+
174  *dst = val;
+
175  return true;
+
176 }
+
177 
+
178 bool WebMVideoClient::OnBinary(int id, const uint8_t* data, int size) {
+
179  // Accept binary fields we don't care about for now.
+
180  return true;
+
181 }
+
182 
+
183 bool WebMVideoClient::OnFloat(int id, double val) {
+
184  // Accept float fields we don't care about for now.
+
185  return true;
+
186 }
+
187 
+
188 } // namespace media
+
189 } // namespace edash_packager
+
void Write(std::vector< uint8_t > *data) const
+
scoped_refptr< VideoStreamInfo > GetVideoStreamInfo(int64_t track_num, const std::string &codec_id, const std::vector< uint8_t > &codec_private, bool is_encrypted)
+
std::string GetCodecString(VideoCodec codec) const
+
void Reset()
Reset this object's state so it can process a new video track element.
+
Holds video stream information.
+
Class for parsing or writing VP codec configuration data.
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 c840c1a658..2d994e8173 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 @@ -101,7 +101,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 708b39d461..36e478ef07 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 @@ -181,7 +181,7 @@ Additional Inherited Members

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

-

Definition at line 1893 of file box_definitions.cc.

+

Definition at line 1921 of file box_definitions.cc.

@@ -192,7 +192,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 698744f76d..cddbcaf7cf 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 0d89f7953c..7ae69acef2 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/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 aa5e8bb85d..c4d18892cb 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 @@ -111,7 +111,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 a68f777e16..f4d5b3f9e0 100644 --- a/docs/d1/d8e/webm__audio__client_8cc_source.html +++ b/docs/d1/d8e/webm__audio__client_8cc_source.html @@ -211,7 +211,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d92/classedash__packager_1_1media_1_1OffsetByteQueue.html b/docs/d1/d92/classedash__packager_1_1media_1_1OffsetByteQueue.html index 8f48989eb8..3bc39d0ba6 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 c8a304ffdf..f5b16b9073 100644 --- a/docs/d1/d9d/tracks__builder_8h_source.html +++ b/docs/d1/d9d/tracks__builder_8h_source.html @@ -210,7 +210,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/dc3/classedash__packager_1_1media_1_1LocalFile-members.html b/docs/d1/dc3/classedash__packager_1_1media_1_1LocalFile-members.html index 36fe146e7d..cbe7079fee 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 @@ -114,7 +114,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/dc8/structedash__packager_1_1media_1_1mp4_1_1PixelAspectRatioBox.html b/docs/d1/dc8/structedash__packager_1_1media_1_1mp4_1_1PixelAspectRatioBox.html index cc48ff910b..2a126e7dd4 100644 --- a/docs/d1/dc8/structedash__packager_1_1media_1_1mp4_1_1PixelAspectRatioBox.html +++ b/docs/d1/dc8/structedash__packager_1_1media_1_1mp4_1_1PixelAspectRatioBox.html @@ -164,7 +164,7 @@ Additional Inherited Members

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

-

Definition at line 914 of file box_definitions.cc.

+

Definition at line 916 of file box_definitions.cc.

@@ -175,7 +175,7 @@ Additional Inherited Members diff --git a/docs/d1/dcb/encrypting__fragmenter_8h_source.html b/docs/d1/dcb/encrypting__fragmenter_8h_source.html index 9a85580bb6..2b0e5ecb86 100644 --- a/docs/d1/dcb/encrypting__fragmenter_8h_source.html +++ b/docs/d1/dcb/encrypting__fragmenter_8h_source.html @@ -171,7 +171,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); 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 8fff909209..cf1e163b98 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 @@ -170,7 +170,7 @@ Additional Inherited Members

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

-

Definition at line 86 of file box_definitions.cc.

+

Definition at line 88 of file box_definitions.cc.

@@ -181,7 +181,7 @@ Additional Inherited Members diff --git a/docs/d1/dd0/structedash__packager_1_1media_1_1mp4_1_1SampleToGroup-members.html b/docs/d1/dd0/structedash__packager_1_1media_1_1mp4_1_1SampleToGroup-members.html index 18dc7ee7eb..0204c46447 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 @@ -113,7 +113,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 113631f76a..7afd59d125 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/de2/composition__offset__iterator_8cc_source.html b/docs/d1/de2/composition__offset__iterator_8cc_source.html index 003a840da0..cbb48495e1 100644 --- a/docs/d1/de2/composition__offset__iterator_8cc_source.html +++ b/docs/d1/de2/composition__offset__iterator_8cc_source.html @@ -159,7 +159,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/df0/aes__encryptor_8h_source.html b/docs/d1/df0/aes__encryptor_8h_source.html index ba477779a5..d31d59e1bb 100644 --- a/docs/d1/df0/aes__encryptor_8h_source.html +++ b/docs/d1/df0/aes__encryptor_8h_source.html @@ -305,7 +305,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/df1/multi__segment__segmenter_8cc_source.html b/docs/d1/df1/multi__segment__segmenter_8cc_source.html index 222d857df9..d23ebdba5c 100644 --- a/docs/d1/df1/multi__segment__segmenter_8cc_source.html +++ b/docs/d1/df1/multi__segment__segmenter_8cc_source.html @@ -303,7 +303,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 17a9b6deb0..d787757e2f 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 556f7c8a9c..b771843ca3 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/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 f46f2de1a2..55b6b9eafc 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 @@ -110,7 +110,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 995f1fab5c..f188bff26e 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 0c59b08d0a..bd0287b90e 100644 --- a/docs/d2/d23/threaded__io__file_8cc_source.html +++ b/docs/d2/d23/threaded__io__file_8cc_source.html @@ -272,7 +272,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 7a5dbcfcb7..2b159157fe 100644 --- a/docs/d2/d24/packager__util_8h_source.html +++ b/docs/d2/d24/packager__util_8h_source.html @@ -143,7 +143,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 071333dba4..fb55cc3e39 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 @@ -173,7 +173,7 @@ Additional Inherited Members

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

-

Definition at line 1750 of file box_definitions.cc.

+

Definition at line 1778 of file box_definitions.cc.

@@ -184,7 +184,7 @@ Additional Inherited Members 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 bb9155bd84..f5844ed135 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 @@ -115,7 +115,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 2585f590d9..0ad5bf81e5 100644 --- a/docs/d2/d30/tracks__builder_8cc_source.html +++ b/docs/d2/d30/tracks__builder_8cc_source.html @@ -487,7 +487,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d48/classedash__packager_1_1media_1_1mp2t_1_1AdtsHeader-members.html b/docs/d2/d48/classedash__packager_1_1media_1_1mp2t_1_1AdtsHeader-members.html index b51745f9aa..a72a5756f8 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 f49eca93cc..2043527c37 100644 --- a/docs/d2/d4b/structedash__packager_1_1media_1_1FileCloser-members.html +++ b/docs/d2/d4b/structedash__packager_1_1media_1_1FileCloser-members.html @@ -97,7 +97,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d4d/file_8h_source.html b/docs/d2/d4d/file_8h_source.html index f1cfadc68b..2c64fd9d6b 100644 --- a/docs/d2/d4d/file_8h_source.html +++ b/docs/d2/d4d/file_8h_source.html @@ -181,7 +181,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 df6b5e6703..e538164e18 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/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize.html b/docs/d2/d51/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize.html index 930bdd9bb9..6613c2ecf8 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 @@ -175,7 +175,7 @@ Additional Inherited Members

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

-

Definition at line 188 of file box_definitions.cc.

+

Definition at line 190 of file box_definitions.cc.

@@ -186,7 +186,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 86434637c8..56a311aa1b 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 551cdc5878..b327a04473 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 @@ -114,7 +114,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 60778cca77..7fae99f083 100644 --- a/docs/d2/d62/simple__mpd__notifier_8h_source.html +++ b/docs/d2/d62/simple__mpd__notifier_8h_source.html @@ -188,7 +188,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d6f/classBandwidthEstimator.html b/docs/d2/d6f/classBandwidthEstimator.html index a160e050c6..37ae08ebb6 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 d80820318c..430b814b2d 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 @@ -161,7 +161,7 @@ Additional Inherited Members

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

-

Definition at line 275 of file box_definitions.cc.

+

Definition at line 277 of file box_definitions.cc.

@@ -172,7 +172,7 @@ Additional Inherited Members diff --git a/docs/d2/d7b/simple__mpd__notifier_8cc_source.html b/docs/d2/d7b/simple__mpd__notifier_8cc_source.html index 5f4a1195b3..30d338d67e 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 7133030d35..6ec32b95ac 100644 --- a/docs/d2/d7e/aac__audio__specific__config_8h_source.html +++ b/docs/d2/d7e/aac__audio__specific__config_8h_source.html @@ -166,7 +166,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d90/classedash__packager_1_1media_1_1Status.html b/docs/d2/d90/classedash__packager_1_1media_1_1Status.html index ca8d34e514..2fa55c6212 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 606c7ceeb2..721f91ea72 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 197f074223..673f96a663 100644 --- a/docs/d2/d98/avc__decoder__configuration_8h_source.html +++ b/docs/d2/d98/avc__decoder__configuration_8h_source.html @@ -154,7 +154,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/da6/threaded__io__file_8h_source.html b/docs/d2/da6/threaded__io__file_8h_source.html index 211f089660..6096cf0e04 100644 --- a/docs/d2/da6/threaded__io__file_8h_source.html +++ b/docs/d2/da6/threaded__io__file_8h_source.html @@ -169,7 +169,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 a898f7aa2b..52d4d5414c 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 new file mode 100644 index 0000000000..952beda2cc --- /dev/null +++ b/docs/d2/dda/vp__codec__configuration_8cc_source.html @@ -0,0 +1,225 @@ + + + + + + +DASH Media Packaging SDK: media/filters/vp_codec_configuration.cc Source File + + + + + + + + + +
+
+ + + + + + +
+
DASH Media Packaging SDK +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
vp_codec_configuration.cc
+
+
+
1 // Copyright 2015 Google Inc. All rights reserved.
+
2 //
+
3 // Use of this source code is governed by a BSD-style
+
4 // license that can be found in the LICENSE file or at
+
5 // https://developers.google.com/open-source/licenses/bsd
+
6 
+
7 #include "packager/media/filters/vp_codec_configuration.h"
+
8 
+
9 #include "packager/base/strings/string_number_conversions.h"
+
10 #include "packager/base/strings/string_util.h"
+
11 #include "packager/media/base/bit_reader.h"
+
12 #include "packager/media/base/buffer_writer.h"
+
13 #include "packager/base/strings/stringprintf.h"
+
14 #include "packager/media/formats/mp4/rcheck.h"
+
15 
+
16 namespace edash_packager {
+
17 namespace media {
+
18 namespace {
+
19 
+
20 std::string VPCodecAsString(VideoCodec codec) {
+
21  switch (codec) {
+
22  case kCodecVP8:
+
23  return "vp08";
+
24  case kCodecVP9:
+
25  return "vp09";
+
26  case kCodecVP10:
+
27  return "vp10";
+
28  default:
+
29  LOG(WARNING) << "Unknown VP codec: " << codec;
+
30  return std::string();
+
31  }
+
32 }
+
33 
+
34 } // namespace
+
35 
+
36 VPCodecConfiguration::VPCodecConfiguration()
+
37  : profile_(0),
+
38  level_(0),
+
39  bit_depth_(0),
+
40  color_space_(0),
+
41  chroma_subsampling_(0),
+
42  transfer_function_(0),
+
43  video_full_range_flag_(false) {}
+
44 
+
45 VPCodecConfiguration::VPCodecConfiguration(
+
46  uint8_t profile,
+
47  uint8_t level,
+
48  uint8_t bit_depth,
+
49  uint8_t color_space,
+
50  uint8_t chroma_subsampling,
+
51  uint8_t transfer_function,
+
52  bool video_full_range_flag,
+
53  const std::vector<uint8_t>& codec_initialization_data)
+
54  : profile_(profile),
+
55  level_(level),
+
56  bit_depth_(bit_depth),
+
57  color_space_(color_space),
+
58  chroma_subsampling_(chroma_subsampling),
+
59  transfer_function_(transfer_function),
+
60  video_full_range_flag_(video_full_range_flag),
+
61  codec_initialization_data_(codec_initialization_data) {}
+
62 
+
63 VPCodecConfiguration::~VPCodecConfiguration(){};
+
64 
+
65 bool VPCodecConfiguration::Parse(const std::vector<uint8_t>& data) {
+
66  BitReader reader(vector_as_array(&data), data.size());
+
67  RCHECK(reader.ReadBits(8, &profile_));
+
68  RCHECK(reader.ReadBits(8, &level_));
+
69  RCHECK(reader.ReadBits(4, &bit_depth_));
+
70  RCHECK(reader.ReadBits(4, &color_space_));
+
71  RCHECK(reader.ReadBits(4, &chroma_subsampling_));
+
72  RCHECK(reader.ReadBits(3, &transfer_function_));
+
73  RCHECK(reader.ReadBits(1, &video_full_range_flag_));
+
74  uint16_t codec_initialization_data_size = 0;
+
75  RCHECK(reader.ReadBits(16, &codec_initialization_data_size));
+
76  RCHECK(reader.bits_available() >= codec_initialization_data_size * 8);
+
77  const size_t kHeaderSize = 6u; // Size of bytes read so far.
+
78  codec_initialization_data_.assign(
+
79  data.begin() + kHeaderSize,
+
80  data.begin() + kHeaderSize + codec_initialization_data_size);
+
81  return true;
+
82 }
+
83 
+
84 void VPCodecConfiguration::Write(std::vector<uint8_t>* data) const {
+
85  BufferWriter writer;
+
86  writer.AppendInt(profile_);
+
87  writer.AppendInt(level_);
+
88  uint8_t bit_depth_color_space = (bit_depth_ << 4) | color_space_;
+
89  writer.AppendInt(bit_depth_color_space);
+
90  uint8_t chroma = (chroma_subsampling_ << 4) | (transfer_function_ << 1) |
+
91  (video_full_range_flag_ ? 1 : 0);
+
92  writer.AppendInt(chroma);
+
93  uint16_t codec_initialization_data_size = codec_initialization_data_.size();
+
94  writer.AppendInt(codec_initialization_data_size);
+
95  writer.AppendVector(codec_initialization_data_);
+
96  writer.SwapBuffer(data);
+
97 }
+
98 
+
99 std::string VPCodecConfiguration::GetCodecString(VideoCodec codec) const {
+
100  const std::string fields[] = {
+
101  base::IntToString(profile_),
+
102  base::IntToString(level_),
+
103  base::IntToString(bit_depth_),
+
104  base::IntToString(color_space_),
+
105  base::IntToString(chroma_subsampling_),
+
106  base::IntToString(transfer_function_),
+
107  (video_full_range_flag_ ? "01" : "00"),
+
108  };
+
109 
+
110  std::string codec_string = VPCodecAsString(codec);
+
111  for (const std::string& field : fields) {
+
112  // Make sure every field is at least 2-chars wide. The space will be
+
113  // replaced with '0' afterwards.
+
114  base::StringAppendF(&codec_string, ".%2s", field.c_str());
+
115  }
+
116  base::ReplaceChars(codec_string, " ", "0", &codec_string);
+
117  return codec_string;
+
118 }
+
119 
+
120 } // namespace media
+
121 } // namespace edash_packager
+
void Write(std::vector< uint8_t > *data) const
+ +
A class to read bit streams.
Definition: bit_reader.h:17
+
std::string GetCodecString(VideoCodec codec) const
+
bool Parse(const std::vector< uint8_t > &data)
+ +
+ + + + diff --git a/docs/d2/de6/packager__main_8cc_source.html b/docs/d2/de6/packager__main_8cc_source.html index 2d7f0c4056..4d343457fa 100644 --- a/docs/d2/de6/packager__main_8cc_source.html +++ b/docs/d2/de6/packager__main_8cc_source.html @@ -438,7 +438,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 0686ca34c1..c76c1a2abf 100644 --- a/docs/d2/deb/es__parser_8h_source.html +++ b/docs/d2/deb/es__parser_8h_source.html @@ -145,7 +145,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/df3/structedash__packager_1_1media_1_1mp4_1_1Edit-members.html b/docs/d2/df3/structedash__packager_1_1media_1_1mp4_1_1Edit-members.html index a45fcb384e..a75903a6e4 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 @@ -107,7 +107,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/dfa/classedash__packager_1_1RepresentationStateChangeListener.html b/docs/d2/dfa/classedash__packager_1_1RepresentationStateChangeListener.html index 4e63b3f266..dac1f64994 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 44d0b9a3fa..2d72b10de2 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 c53489b63d..ce730b4f9c 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/d04/classedash__packager_1_1media_1_1WebMAudioClient-members.html b/docs/d3/d04/classedash__packager_1_1media_1_1WebMAudioClient-members.html index bf980650c9..bd65cc56f8 100644 --- a/docs/d3/d04/classedash__packager_1_1media_1_1WebMAudioClient-members.html +++ b/docs/d3/d04/classedash__packager_1_1media_1_1WebMAudioClient-members.html @@ -107,7 +107,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d0e/classedash__packager_1_1media_1_1MpdNotifyMuxerListener.html b/docs/d3/d0e/classedash__packager_1_1media_1_1MpdNotifyMuxerListener.html index 691d1dde23..732119f321 100644 --- a/docs/d3/d0e/classedash__packager_1_1media_1_1MpdNotifyMuxerListener.html +++ b/docs/d3/d0e/classedash__packager_1_1media_1_1MpdNotifyMuxerListener.html @@ -234,7 +234,7 @@ Additional Inherited Members diff --git a/docs/d3/d15/udp__file__win_8cc_source.html b/docs/d3/d15/udp__file__win_8cc_source.html index 904939a416..f50881b169 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 e474b70eb6..81cacaa9bd 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/d2c/structedash__packager_1_1media_1_1mp4_1_1TrackExtends.html b/docs/d3/d2c/structedash__packager_1_1media_1_1mp4_1_1TrackExtends.html index cdc2dcadfc..1c0f742415 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 @@ -181,7 +181,7 @@ Additional Inherited Members

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

-

Definition at line 1361 of file box_definitions.cc.

+

Definition at line 1389 of file box_definitions.cc.

@@ -192,7 +192,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 104889b56b..6a90cf82ad 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 @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d37/single__segment__segmenter_8cc_source.html b/docs/d3/d37/single__segment__segmenter_8cc_source.html index 4e46f900ea..6b781766f7 100644 --- a/docs/d3/d37/single__segment__segmenter_8cc_source.html +++ b/docs/d3/d37/single__segment__segmenter_8cc_source.html @@ -329,8 +329,8 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
static bool Delete(const char *file_name)
Definition: file.cc:138
virtual bool Open()=0
Internal open. Should not be used directly.
- - + +
bool GetIndexRange(size_t *offset, size_t *size) override
@@ -341,7 +341,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d3e/classedash__packager_1_1media_1_1HttpKeyFetcher.html b/docs/d3/d3e/classedash__packager_1_1media_1_1HttpKeyFetcher.html index 6c68509f6a..4580365139 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/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 346fbdaf51..90dac829ff 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 @@ -111,7 +111,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 81f7b64c9c..8d1703916c 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 b08dacc9be..93b6a19487 100644 --- a/docs/d3/d56/decrypt__config_8cc_source.html +++ b/docs/d3/d56/decrypt__config_8cc_source.html @@ -118,7 +118,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d62/rcheck_8h_source.html b/docs/d3/d62/rcheck_8h_source.html index 0c60a97da5..a6082d84d7 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/d69/classedash__packager_1_1media_1_1ClusterBuilder.html b/docs/d3/d69/classedash__packager_1_1media_1_1ClusterBuilder.html index 8fbd08edeb..904009dac4 100644 --- a/docs/d3/d69/classedash__packager_1_1media_1_1ClusterBuilder.html +++ b/docs/d3/d69/classedash__packager_1_1media_1_1ClusterBuilder.html @@ -125,7 +125,7 @@ scoped_ptr< diff --git a/docs/d3/d6b/classedash__packager_1_1media_1_1IoCache.html b/docs/d3/d6b/classedash__packager_1_1media_1_1IoCache.html index 6e567f9068..dc82c58652 100644 --- a/docs/d3/d6b/classedash__packager_1_1media_1_1IoCache.html +++ b/docs/d3/d6b/classedash__packager_1_1media_1_1IoCache.html @@ -297,7 +297,7 @@ void  diff --git a/docs/d3/d74/structedash__packager_1_1media_1_1mp4_1_1SampleDescription.html b/docs/d3/d74/structedash__packager_1_1media_1_1mp4_1_1SampleDescription.html index 533e00f9d5..9f4cbddb07 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 @@ -175,7 +175,7 @@ Additional Inherited Members

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

-

Definition at line 442 of file box_definitions.cc.

+

Definition at line 444 of file box_definitions.cc.

@@ -186,7 +186,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 429c853d2a..ad7cf6935e 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 21d98df68e..e4fa6a2d74 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 @@ -179,7 +179,7 @@ Additional Inherited Members

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

-

Definition at line 765 of file box_definitions.cc.

+

Definition at line 767 of file box_definitions.cc.

@@ -190,7 +190,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 9cb97113a3..9aa99966ad 100644 --- a/docs/d3/d80/muxer__util_8h_source.html +++ b/docs/d3/d80/muxer__util_8h_source.html @@ -120,7 +120,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d8a/classedash__packager_1_1RepresentationStateChangeListener-members.html b/docs/d3/d8a/classedash__packager_1_1RepresentationStateChangeListener-members.html index c81c293d2b..ac1298f05a 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 7e27200451..5a5918304a 100644 --- a/docs/d3/d8d/webm__audio__client_8h_source.html +++ b/docs/d3/d8d/webm__audio__client_8h_source.html @@ -142,7 +142,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d9b/structedash__packager_1_1media_1_1VideoStreamInfoParameters-members.html b/docs/d3/d9b/structedash__packager_1_1media_1_1VideoStreamInfoParameters-members.html index 9def75d8a2..213dde504f 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 06d3eb9e11..ae9fd6a1e6 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 @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/db6/cenc_8cc_source.html b/docs/d3/db6/cenc_8cc_source.html index 9fe8f9b21d..fb962e693f 100644 --- a/docs/d3/db6/cenc_8cc_source.html +++ b/docs/d3/db6/cenc_8cc_source.html @@ -183,7 +183,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 3b9db1004d..602ad76af7 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/structedash__packager_1_1media_1_1H264WeightingFactors.html b/docs/d3/dbc/structedash__packager_1_1media_1_1H264WeightingFactors.html index 031a4ff931..d608785d2c 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 a67d93dc04..04f258d147 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 @@ -169,7 +169,7 @@ Additional Inherited Members

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

-

Definition at line 871 of file box_definitions.cc.

+

Definition at line 873 of file box_definitions.cc.

@@ -180,7 +180,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 e80ff5a5ce..a3eddc96ee 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 a746a182a2..8e08aa77ee 100644 --- a/docs/d3/dbe/demuxer_8cc_source.html +++ b/docs/d3/dbe/demuxer_8cc_source.html @@ -106,202 +106,207 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
17 #include "packager/media/file/file.h"
18 #include "packager/media/formats/mp2t/mp2t_media_parser.h"
19 #include "packager/media/formats/mp4/mp4_media_parser.h"
-
20 #include "packager/media/formats/wvm/wvm_media_parser.h"
-
21 
-
22 namespace {
-
23 const size_t kInitBufSize = 0x10000; // 65KB, sufficient to determine the
-
24  // container and likely all init data.
-
25 const size_t kBufSize = 0x200000; // 2MB
-
26 }
-
27 
-
28 namespace edash_packager {
-
29 namespace media {
-
30 
-
31 Demuxer::Demuxer(const std::string& file_name)
-
32  : file_name_(file_name),
-
33  media_file_(NULL),
-
34  init_event_received_(false),
-
35  container_name_(CONTAINER_UNKNOWN),
-
36  buffer_(new uint8_t[kBufSize]),
-
37  cancelled_(false) {
-
38 }
-
39 
-
40 Demuxer::~Demuxer() {
-
41  if (media_file_)
-
42  media_file_->Close();
-
43  STLDeleteElements(&streams_);
-
44 }
-
45 
-
46 void Demuxer::SetKeySource(scoped_ptr<KeySource> key_source) {
-
47  key_source_ = key_source.Pass();
-
48 }
-
49 
- -
51  DCHECK(!media_file_);
-
52  DCHECK(!init_event_received_);
-
53 
-
54  LOG(INFO) << "Initialize Demuxer for file '" << file_name_ << "'.";
-
55 
-
56  media_file_ = File::Open(file_name_.c_str(), "r");
-
57  if (!media_file_) {
-
58  return Status(error::FILE_FAILURE,
-
59  "Cannot open file for reading " + file_name_);
-
60  }
-
61 
-
62  // Read enough bytes before detecting the container.
-
63  size_t bytes_read = 0;
-
64  while (bytes_read < kInitBufSize) {
-
65  int64_t read_result =
-
66  media_file_->Read(buffer_.get() + bytes_read, kInitBufSize);
-
67  if (read_result < 0)
-
68  return Status(error::FILE_FAILURE, "Cannot read file " + file_name_);
-
69  if (read_result == 0)
-
70  break;
-
71  bytes_read += read_result;
-
72  }
-
73  container_name_ = DetermineContainer(buffer_.get(), bytes_read);
-
74 
-
75  // Initialize media parser.
-
76  switch (container_name_) {
-
77  case CONTAINER_MOV:
-
78  parser_.reset(new mp4::MP4MediaParser());
-
79  break;
-
80  case CONTAINER_MPEG2TS:
-
81  parser_.reset(new mp2t::Mp2tMediaParser());
-
82  break;
-
83  case CONTAINER_MPEG2PS:
-
84  parser_.reset(new wvm::WvmMediaParser());
-
85  break;
-
86  default:
-
87  NOTIMPLEMENTED();
-
88  return Status(error::UNIMPLEMENTED, "Container not supported.");
-
89  }
-
90 
-
91  parser_->Init(base::Bind(&Demuxer::ParserInitEvent, base::Unretained(this)),
-
92  base::Bind(&Demuxer::NewSampleEvent, base::Unretained(this)),
-
93  key_source_.get());
+
20 #include "packager/media/formats/webm/webm_media_parser.h"
+
21 #include "packager/media/formats/wvm/wvm_media_parser.h"
+
22 
+
23 namespace {
+
24 const size_t kInitBufSize = 0x10000; // 65KB, sufficient to determine the
+
25  // container and likely all init data.
+
26 const size_t kBufSize = 0x200000; // 2MB
+
27 }
+
28 
+
29 namespace edash_packager {
+
30 namespace media {
+
31 
+
32 Demuxer::Demuxer(const std::string& file_name)
+
33  : file_name_(file_name),
+
34  media_file_(NULL),
+
35  init_event_received_(false),
+
36  container_name_(CONTAINER_UNKNOWN),
+
37  buffer_(new uint8_t[kBufSize]),
+
38  cancelled_(false) {
+
39 }
+
40 
+
41 Demuxer::~Demuxer() {
+
42  if (media_file_)
+
43  media_file_->Close();
+
44  STLDeleteElements(&streams_);
+
45 }
+
46 
+
47 void Demuxer::SetKeySource(scoped_ptr<KeySource> key_source) {
+
48  key_source_ = key_source.Pass();
+
49 }
+
50 
+ +
52  DCHECK(!media_file_);
+
53  DCHECK(!init_event_received_);
+
54 
+
55  LOG(INFO) << "Initialize Demuxer for file '" << file_name_ << "'.";
+
56 
+
57  media_file_ = File::Open(file_name_.c_str(), "r");
+
58  if (!media_file_) {
+
59  return Status(error::FILE_FAILURE,
+
60  "Cannot open file for reading " + file_name_);
+
61  }
+
62 
+
63  // Read enough bytes before detecting the container.
+
64  size_t bytes_read = 0;
+
65  while (bytes_read < kInitBufSize) {
+
66  int64_t read_result =
+
67  media_file_->Read(buffer_.get() + bytes_read, kInitBufSize);
+
68  if (read_result < 0)
+
69  return Status(error::FILE_FAILURE, "Cannot read file " + file_name_);
+
70  if (read_result == 0)
+
71  break;
+
72  bytes_read += read_result;
+
73  }
+
74  container_name_ = DetermineContainer(buffer_.get(), bytes_read);
+
75 
+
76  // Initialize media parser.
+
77  switch (container_name_) {
+
78  case CONTAINER_MOV:
+
79  parser_.reset(new mp4::MP4MediaParser());
+
80  break;
+
81  case CONTAINER_MPEG2TS:
+
82  parser_.reset(new mp2t::Mp2tMediaParser());
+
83  break;
+
84  case CONTAINER_MPEG2PS:
+
85  parser_.reset(new wvm::WvmMediaParser());
+
86  break;
+
87  case CONTAINER_WEBM:
+
88  parser_.reset(new WebMMediaParser());
+
89  break;
+
90  default:
+
91  NOTIMPLEMENTED();
+
92  return Status(error::UNIMPLEMENTED, "Container not supported.");
+
93  }
94 
-
95  // Handle trailing 'moov'.
-
96  if (container_name_ == CONTAINER_MOV)
-
97  static_cast<mp4::MP4MediaParser*>(parser_.get())->LoadMoov(file_name_);
+
95  parser_->Init(base::Bind(&Demuxer::ParserInitEvent, base::Unretained(this)),
+
96  base::Bind(&Demuxer::NewSampleEvent, base::Unretained(this)),
+
97  key_source_.get());
98 
-
99  if (!parser_->Parse(buffer_.get(), bytes_read)) {
-
100  init_parsing_status_ =
-
101  Status(error::PARSER_FAILURE, "Cannot parse media file " + file_name_);
-
102  }
-
103 
-
104  // Parse until init event received or on error.
-
105  while (!init_event_received_ && init_parsing_status_.ok())
-
106  init_parsing_status_ = Parse();
-
107  // Defer error reporting if init completed successfully.
-
108  return init_event_received_ ? Status::OK : init_parsing_status_;
-
109 }
-
110 
-
111 void Demuxer::ParserInitEvent(
-
112  const std::vector<scoped_refptr<StreamInfo> >& streams) {
-
113  init_event_received_ = true;
+
99  // Handle trailing 'moov'.
+
100  if (container_name_ == CONTAINER_MOV)
+
101  static_cast<mp4::MP4MediaParser*>(parser_.get())->LoadMoov(file_name_);
+
102 
+
103  if (!parser_->Parse(buffer_.get(), bytes_read)) {
+
104  init_parsing_status_ =
+
105  Status(error::PARSER_FAILURE, "Cannot parse media file " + file_name_);
+
106  }
+
107 
+
108  // Parse until init event received or on error.
+
109  while (!init_event_received_ && init_parsing_status_.ok())
+
110  init_parsing_status_ = Parse();
+
111  // Defer error reporting if init completed successfully.
+
112  return init_event_received_ ? Status::OK : init_parsing_status_;
+
113 }
114 
-
115  std::vector<scoped_refptr<StreamInfo> >::const_iterator it = streams.begin();
-
116  for (; it != streams.end(); ++it) {
-
117  streams_.push_back(new MediaStream(*it, this));
-
118  }
-
119 }
-
120 
-
121 bool Demuxer::NewSampleEvent(uint32_t track_id,
-
122  const scoped_refptr<MediaSample>& sample) {
-
123  std::vector<MediaStream*>::iterator it = streams_.begin();
-
124  for (; it != streams_.end(); ++it) {
-
125  if (track_id == (*it)->info()->track_id()) {
-
126  return (*it)->PushSample(sample).ok();
-
127  }
-
128  }
-
129  return false;
-
130 }
-
131 
- -
133  Status status;
-
134 
-
135  LOG(INFO) << "Demuxer::Run() on file '" << file_name_ << "'.";
-
136 
-
137  // Start the streams.
-
138  for (std::vector<MediaStream*>::iterator it = streams_.begin();
-
139  it != streams_.end();
-
140  ++it) {
-
141  status = (*it)->Start(MediaStream::kPush);
-
142  if (!status.ok())
-
143  return status;
-
144  }
-
145 
-
146  while (!cancelled_ && (status = Parse()).ok())
-
147  continue;
-
148 
-
149  if (cancelled_ && status.ok())
-
150  return Status(error::CANCELLED, "Demuxer run cancelled");
-
151 
-
152  if (status.error_code() == error::END_OF_STREAM) {
-
153  // Push EOS sample to muxer to indicate end of stream.
-
154  const scoped_refptr<MediaSample>& sample = MediaSample::CreateEOSBuffer();
-
155  for (std::vector<MediaStream*>::iterator it = streams_.begin();
-
156  it != streams_.end();
-
157  ++it) {
-
158  status = (*it)->PushSample(sample);
-
159  if (!status.ok())
-
160  return status;
-
161  }
-
162  }
-
163  return status;
-
164 }
-
165 
- -
167  DCHECK(media_file_);
-
168  DCHECK(parser_);
-
169  DCHECK(buffer_);
-
170 
-
171  // Return early and avoid call Parse(...) again if it has already failed at
-
172  // the initialization.
-
173  if (!init_parsing_status_.ok())
-
174  return init_parsing_status_;
-
175 
-
176  int64_t bytes_read = media_file_->Read(buffer_.get(), kBufSize);
-
177  if (bytes_read == 0) {
-
178  parser_->Flush();
-
179  return Status(error::END_OF_STREAM, "");
-
180  } else if (bytes_read < 0) {
-
181  return Status(error::FILE_FAILURE, "Cannot read file " + file_name_);
-
182  }
-
183 
-
184  return parser_->Parse(buffer_.get(), bytes_read)
-
185  ? Status::OK
-
186  : Status(error::PARSER_FAILURE,
-
187  "Cannot parse media file " + file_name_);
-
188 }
-
189 
- -
191  cancelled_ = true;
+
115 void Demuxer::ParserInitEvent(
+
116  const std::vector<scoped_refptr<StreamInfo> >& streams) {
+
117  init_event_received_ = true;
+
118 
+
119  std::vector<scoped_refptr<StreamInfo> >::const_iterator it = streams.begin();
+
120  for (; it != streams.end(); ++it) {
+
121  streams_.push_back(new MediaStream(*it, this));
+
122  }
+
123 }
+
124 
+
125 bool Demuxer::NewSampleEvent(uint32_t track_id,
+
126  const scoped_refptr<MediaSample>& sample) {
+
127  std::vector<MediaStream*>::iterator it = streams_.begin();
+
128  for (; it != streams_.end(); ++it) {
+
129  if (track_id == (*it)->info()->track_id()) {
+
130  return (*it)->PushSample(sample).ok();
+
131  }
+
132  }
+
133  return false;
+
134 }
+
135 
+ +
137  Status status;
+
138 
+
139  LOG(INFO) << "Demuxer::Run() on file '" << file_name_ << "'.";
+
140 
+
141  // Start the streams.
+
142  for (std::vector<MediaStream*>::iterator it = streams_.begin();
+
143  it != streams_.end();
+
144  ++it) {
+
145  status = (*it)->Start(MediaStream::kPush);
+
146  if (!status.ok())
+
147  return status;
+
148  }
+
149 
+
150  while (!cancelled_ && (status = Parse()).ok())
+
151  continue;
+
152 
+
153  if (cancelled_ && status.ok())
+
154  return Status(error::CANCELLED, "Demuxer run cancelled");
+
155 
+
156  if (status.error_code() == error::END_OF_STREAM) {
+
157  // Push EOS sample to muxer to indicate end of stream.
+
158  const scoped_refptr<MediaSample>& sample = MediaSample::CreateEOSBuffer();
+
159  for (std::vector<MediaStream*>::iterator it = streams_.begin();
+
160  it != streams_.end();
+
161  ++it) {
+
162  status = (*it)->PushSample(sample);
+
163  if (!status.ok())
+
164  return status;
+
165  }
+
166  }
+
167  return status;
+
168 }
+
169 
+ +
171  DCHECK(media_file_);
+
172  DCHECK(parser_);
+
173  DCHECK(buffer_);
+
174 
+
175  // Return early and avoid call Parse(...) again if it has already failed at
+
176  // the initialization.
+
177  if (!init_parsing_status_.ok())
+
178  return init_parsing_status_;
+
179 
+
180  int64_t bytes_read = media_file_->Read(buffer_.get(), kBufSize);
+
181  if (bytes_read == 0) {
+
182  parser_->Flush();
+
183  return Status(error::END_OF_STREAM, "");
+
184  } else if (bytes_read < 0) {
+
185  return Status(error::FILE_FAILURE, "Cannot read file " + file_name_);
+
186  }
+
187 
+
188  return parser_->Parse(buffer_.get(), bytes_read)
+
189  ? Status::OK
+
190  : Status(error::PARSER_FAILURE,
+
191  "Cannot parse media file " + file_name_);
192 }
193 
-
194 } // namespace media
-
195 } // namespace edash_packager
+ +
195  cancelled_ = true;
+
196 }
+
197 
+
198 } // namespace media
+
199 } // namespace edash_packager
- + -
void SetKeySource(scoped_ptr< KeySource > key_source)
Definition: demuxer.cc:46
- +
void SetKeySource(scoped_ptr< KeySource > key_source)
Definition: demuxer.cc:47
+
virtual int64_t Read(void *buffer, uint64_t length)=0
const std::vector< MediaStream * > & streams()
Definition: demuxer.h:66
virtual bool Open()=0
Internal open. Should not be used directly.
+
static scoped_refptr< MediaSample > CreateEOSBuffer()
Definition: media_sample.cc:75
- -
Status Parse()
Read from the source and send it to the parser.
Definition: demuxer.cc:166
+ +
Status Parse()
Read from the source and send it to the parser.
Definition: demuxer.cc:170
-
Demuxer(const std::string &file_name)
Definition: demuxer.cc:31
+
Demuxer(const std::string &file_name)
Definition: demuxer.cc:32
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 91e16c68dc..f6d79c3232 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 @@ -111,7 +111,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 2d59d32419..fe3a80267d 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 7a648a43fd..25f0a3d962 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 @@ -127,7 +127,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 a8e4337731..c77d72af0a 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 @@ -167,7 +167,7 @@ Additional Inherited Members

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

-

Definition at line 1315 of file box_definitions.cc.

+

Definition at line 1343 of file box_definitions.cc.

@@ -178,7 +178,7 @@ Additional Inherited Members 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 c43d23e683..9521598a00 100644 --- a/docs/d3/de7/structedash__packager_1_1media_1_1OnMediaEndParameters.html +++ b/docs/d3/de7/structedash__packager_1_1media_1_1OnMediaEndParameters.html @@ -130,7 +130,7 @@ uint64_t file_size diff --git a/docs/d3/df1/box__reader_8cc_source.html b/docs/d3/df1/box__reader_8cc_source.html index f2f4e1712a..9885f11604 100644 --- a/docs/d3/df1/box__reader_8cc_source.html +++ b/docs/d3/df1/box__reader_8cc_source.html @@ -295,7 +295,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 bc65f7696c..074edd235b 100644 --- a/docs/d3/dfa/classedash__packager_1_1MpdBuilder.html +++ b/docs/d3/dfa/classedash__packager_1_1MpdBuilder.html @@ -381,7 +381,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 9359b74f18..abddd4aa0d 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/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 dc6334afdf..6d48fad05d 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 @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d1d/classedash__packager_1_1media_1_1Muxer.html b/docs/d4/d1d/classedash__packager_1_1media_1_1Muxer.html index 6a47827efa..e022648536 100644 --- a/docs/d4/d1d/classedash__packager_1_1media_1_1Muxer.html +++ b/docs/d4/d1d/classedash__packager_1_1media_1_1Muxer.html @@ -330,7 +330,7 @@ class MediaStream diff --git a/docs/d4/d2e/classedash__packager_1_1media_1_1mp4_1_1FrameCENCInfo-members.html b/docs/d4/d2e/classedash__packager_1_1media_1_1mp4_1_1FrameCENCInfo-members.html index 49bde4705c..1288981d4e 100644 --- a/docs/d4/d2e/classedash__packager_1_1media_1_1mp4_1_1FrameCENCInfo-members.html +++ b/docs/d4/d2e/classedash__packager_1_1media_1_1mp4_1_1FrameCENCInfo-members.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d37/io__cache_8cc_source.html b/docs/d4/d37/io__cache_8cc_source.html index 238a7acec1..ab159b6f2c 100644 --- a/docs/d4/d37/io__cache_8cc_source.html +++ b/docs/d4/d37/io__cache_8cc_source.html @@ -253,7 +253,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d43/classedash__packager_1_1media_1_1KeyFetcher.html b/docs/d4/d43/classedash__packager_1_1media_1_1KeyFetcher.html index 0291f882a4..0f0333fbd3 100644 --- a/docs/d4/d43/classedash__packager_1_1media_1_1KeyFetcher.html +++ b/docs/d4/d43/classedash__packager_1_1media_1_1KeyFetcher.html @@ -177,7 +177,7 @@ Public Member Functions diff --git a/docs/d4/d55/classedash__packager_1_1media_1_1H264BitReader.html b/docs/d4/d55/classedash__packager_1_1media_1_1H264BitReader.html index 7fe695d1ff..f6a66339a7 100644 --- a/docs/d4/d55/classedash__packager_1_1media_1_1H264BitReader.html +++ b/docs/d4/d55/classedash__packager_1_1media_1_1H264BitReader.html @@ -122,7 +122,7 @@ size_t NumEmulationPrevent diff --git a/docs/d4/d67/structedash__packager_1_1media_1_1mp4_1_1MovieFragment-members.html b/docs/d4/d67/structedash__packager_1_1media_1_1mp4_1_1MovieFragment-members.html index 25605d4dee..b2f6e5769e 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 @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d71/structedash__packager_1_1xml_1_1ScopedXmlPtr-members.html b/docs/d4/d71/structedash__packager_1_1xml_1_1ScopedXmlPtr-members.html index 641ec52b81..d731805d0e 100644 --- a/docs/d4/d71/structedash__packager_1_1xml_1_1ScopedXmlPtr-members.html +++ b/docs/d4/d71/structedash__packager_1_1xml_1_1ScopedXmlPtr-members.html @@ -97,7 +97,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); 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 c72fd93bd2..57a1a92370 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 @@ -117,7 +117,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 7391e8db2b..ae2ef6445e 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 80163c702c..4bc69b90db 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 @@ -123,7 +123,7 @@ uint32_t data_size 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 ccf4acf248..831638c6e4 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 d2fc2b545b..0001ec00bf 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 256548ee89..79d2bf5830 100644 --- a/docs/d4/da1/classedash__packager_1_1media_1_1DecryptConfig.html +++ b/docs/d4/da1/classedash__packager_1_1media_1_1DecryptConfig.html @@ -183,7 +183,7 @@ static const size_t  diff --git a/docs/d4/da4/classedash__packager_1_1media_1_1AesCbcCtsEncryptor-members.html b/docs/d4/da4/classedash__packager_1_1media_1_1AesCbcCtsEncryptor-members.html index c11d7d8466..a8cb0b6716 100644 --- a/docs/d4/da4/classedash__packager_1_1media_1_1AesCbcCtsEncryptor-members.html +++ b/docs/d4/da4/classedash__packager_1_1media_1_1AesCbcCtsEncryptor-members.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/db2/cluster__builder_8h_source.html b/docs/d4/db2/cluster__builder_8h_source.html index 9a9d0dc8ec..8fa977248f 100644 --- a/docs/d4/db2/cluster__builder_8h_source.html +++ b/docs/d4/db2/cluster__builder_8h_source.html @@ -176,7 +176,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/dca/structedash__packager_1_1media_1_1H264SEIRecoveryPoint.html b/docs/d4/dca/structedash__packager_1_1media_1_1H264SEIRecoveryPoint.html index 7619ab2ba2..d337436347 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 24a779242d..ccbe5bafd1 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 3437013fc4..da5c51fb7c 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 @@ -172,7 +172,7 @@ Additional Inherited Members

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

-

Definition at line 223 of file box_definitions.cc.

+

Definition at line 225 of file box_definitions.cc.

@@ -183,7 +183,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 f6716be351..ac558ad3d6 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 9d3ab8693c..32aad312f0 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 @@ -143,7 +143,7 @@ uint64_t earliest_presenta diff --git a/docs/d4/dd3/bit__reader_8h_source.html b/docs/d4/dd3/bit__reader_8h_source.html index 24ede8adfa..e44157f29b 100644 --- a/docs/d4/dd3/bit__reader_8h_source.html +++ b/docs/d4/dd3/bit__reader_8h_source.html @@ -158,7 +158,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/dd4/segmenter_8h_source.html b/docs/d4/dd4/segmenter_8h_source.html index 890c0ed770..8551553be9 100644 --- a/docs/d4/dd4/segmenter_8h_source.html +++ b/docs/d4/dd4/segmenter_8h_source.html @@ -223,7 +223,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/dd9/structedash__packager_1_1media_1_1mp4_1_1TrackFragment.html b/docs/d4/dd9/structedash__packager_1_1media_1_1mp4_1_1TrackFragment.html index 93a3a033b7..ee70da1097 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 @@ -182,7 +182,7 @@ Additional Inherited Members

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

-

Definition at line 1803 of file box_definitions.cc.

+

Definition at line 1831 of file box_definitions.cc.

@@ -193,7 +193,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 8e0618bd27..223d529dbc 100644 --- a/docs/d4/dde/webvtt__util_8h_source.html +++ b/docs/d4/dde/webvtt__util_8h_source.html @@ -122,7 +122,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/de4/structedash__packager_1_1media_1_1SubsampleEntry.html b/docs/d4/de4/structedash__packager_1_1media_1_1SubsampleEntry.html index 1f8dccae4a..8b89eba88f 100644 --- a/docs/d4/de4/structedash__packager_1_1media_1_1SubsampleEntry.html +++ b/docs/d4/de4/structedash__packager_1_1media_1_1SubsampleEntry.html @@ -115,7 +115,7 @@ uint32_t cipher_bytes< diff --git a/docs/d4/de5/classedash__packager_1_1media_1_1mp4_1_1CompositionOffsetIterator.html b/docs/d4/de5/classedash__packager_1_1media_1_1mp4_1_1CompositionOffsetIterator.html index 9272f70e11..2e83b2583b 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 68221a55e6..330e6e4701 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 @@ -113,7 +113,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 f97ba446bd..05c8a201e4 100644 --- a/docs/d4/df5/request__signer_8cc_source.html +++ b/docs/d4/df5/request__signer_8cc_source.html @@ -176,7 +176,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/df9/structedash__packager_1_1MpdOptions-members.html b/docs/d4/df9/structedash__packager_1_1MpdOptions-members.html index 0fdb889d24..8e7b851f4d 100644 --- a/docs/d4/df9/structedash__packager_1_1MpdOptions-members.html +++ b/docs/d4/df9/structedash__packager_1_1MpdOptions-members.html @@ -103,7 +103,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 86762556dd..7cf1f6dd36 100644 --- a/docs/d4/dff/webm__media__parser_8cc_source.html +++ b/docs/d4/dff/webm__media__parser_8cc_source.html @@ -332,7 +332,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 8159f7f5ed..5ae35af42c 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 f168faade9..a14048e042 100644 --- a/docs/d5/d15/producer__consumer__queue_8h_source.html +++ b/docs/d5/d15/producer__consumer__queue_8h_source.html @@ -374,7 +374,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d18/structedash__packager_1_1media_1_1H264NALU-members.html b/docs/d5/d18/structedash__packager_1_1media_1_1H264NALU-members.html index d43f3c9bdf..b1b4d826fa 100644 --- a/docs/d5/d18/structedash__packager_1_1media_1_1H264NALU-members.html +++ b/docs/d5/d18/structedash__packager_1_1media_1_1H264NALU-members.html @@ -112,7 +112,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d1a/ts__section_8h_source.html b/docs/d5/d1a/ts__section_8h_source.html index 4463d412a0..7265814e3c 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 bf487d8054..a9dc43777e 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 @@ -114,7 +114,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 81aef0fd2f..ac27ba002e 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 369d4ad08f..d60dd700eb 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 2b6d0c9ff4..5abc819bb5 100644 --- a/docs/d5/d30/classedash__packager_1_1media_1_1H264ByteToUnitStreamConverter.html +++ b/docs/d5/d30/classedash__packager_1_1media_1_1H264ByteToUnitStreamConverter.html @@ -192,7 +192,7 @@ static const size_t kUnitS diff --git a/docs/d5/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 1ce6488b9e..aab9e53fae 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 9152b19dc6..baae4d8a38 100644 --- a/docs/d5/d4d/box_8cc_source.html +++ b/docs/d5/d4d/box_8cc_source.html @@ -167,7 +167,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 e0d1412e7c..cdae40892d 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 cb8e12a7a0..c03526672f 100644 --- a/docs/d5/d54/classedash__packager_1_1media_1_1mp4_1_1AACAudioSpecificConfig-members.html +++ b/docs/d5/d54/classedash__packager_1_1media_1_1mp4_1_1AACAudioSpecificConfig-members.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d62/classedash__packager_1_1media_1_1RsaPrivateKey.html b/docs/d5/d62/classedash__packager_1_1media_1_1RsaPrivateKey.html index a61a77a355..971e54f047 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 71aadcb1ff..42b61290ee 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 4dfa23d2bc..f2ac2f4808 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 @@ -111,7 +111,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 4d65dd2a6c..27fc9bea90 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 new file mode 100644 index 0000000000..69ee217dd5 --- /dev/null +++ b/docs/d5/d73/vp__codec__configuration_8h_source.html @@ -0,0 +1,165 @@ + + + + + + +DASH Media Packaging SDK: media/filters/vp_codec_configuration.h Source File + + + + + + + + + +
+
+ + + + + + +
+
DASH Media Packaging SDK +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
vp_codec_configuration.h
+
+
+
1 // Copyright 2015 Google Inc. All rights reserved.
+
2 //
+
3 // Use of this source code is governed by a BSD-style
+
4 // license that can be found in the LICENSE file or at
+
5 // https://developers.google.com/open-source/licenses/bsd
+
6 
+
7 #ifndef MEDIA_FILTERS_VP_CODEC_CONFIGURATION_H_
+
8 #define MEDIA_FILTERS_VP_CODEC_CONFIGURATION_H_
+
9 
+
10 #include <stdint.h>
+
11 #include <string>
+
12 #include <vector>
+
13 
+
14 #include "packager/base/macros.h"
+
15 #include "packager/media/base/video_stream_info.h"
+
16 
+
17 namespace edash_packager {
+
18 namespace media {
+
19 
+ +
22  public:
+ +
24  VPCodecConfiguration(uint8_t profile,
+
25  uint8_t level,
+
26  uint8_t bit_depth,
+
27  uint8_t color_space,
+
28  uint8_t chroma_subsampling,
+
29  uint8_t transfer_function,
+
30  bool video_full_range_flag,
+
31  const std::vector<uint8_t>& codec_initialization_data);
+ +
33 
+
36  bool Parse(const std::vector<uint8_t>& data);
+
37 
+
40  void Write(std::vector<uint8_t>* data) const;
+
41 
+
43  std::string GetCodecString(VideoCodec codec) const;
+
44 
+
45  uint8_t profile() const { return profile_; }
+
46  uint8_t level() const { return level_; }
+
47  uint8_t bit_depth() const { return bit_depth_; }
+
48  uint8_t color_space() const { return color_space_; }
+
49  uint8_t chroma_subsampling() const { return chroma_subsampling_; }
+
50  uint8_t transfer_function() const { return transfer_function_; }
+
51  bool video_full_range_flag() const { return video_full_range_flag_; }
+
52 
+
53  private:
+
54  uint8_t profile_;
+
55  uint8_t level_;
+
56  uint8_t bit_depth_;
+
57  uint8_t color_space_;
+
58  uint8_t chroma_subsampling_;
+
59  uint8_t transfer_function_;
+
60  bool video_full_range_flag_;
+
61  std::vector<uint8_t> codec_initialization_data_;
+
62 
+
63  DISALLOW_COPY_AND_ASSIGN(VPCodecConfiguration);
+
64 };
+
65 
+
66 } // namespace media
+
67 } // namespace edash_packager
+
68 
+
69 #endif // MEDIA_FILTERS_VP_CODEC_CONFIGURATION_H_
+
void Write(std::vector< uint8_t > *data) const
+
std::string GetCodecString(VideoCodec codec) const
+
bool Parse(const std::vector< uint8_t > &data)
+
Class for parsing or writing VP codec configuration data.
+
+ + + + diff --git a/docs/d5/d7a/structedash__packager_1_1Element.html b/docs/d5/d7a/structedash__packager_1_1Element.html index cc5882f689..08a4d087cb 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 888645d98d..5f2dfefabd 100644 --- a/docs/d5/d7b/box__definitions_8h_source.html +++ b/docs/d5/d7b/box__definitions_8h_source.html @@ -747,7 +747,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d89/widevine__key__source_8cc_source.html b/docs/d5/d89/widevine__key__source_8cc_source.html index 4edb9cece5..24693dde1c 100644 --- a/docs/d5/d89/widevine__key__source_8cc_source.html +++ b/docs/d5/d89/widevine__key__source_8cc_source.html @@ -649,7 +649,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 491953a4ff..9142a1b550 100644 --- a/docs/d5/d8f/webm__cluster__parser_8cc_source.html +++ b/docs/d5/d8f/webm__cluster__parser_8cc_source.html @@ -827,7 +827,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 56d3862227..882aaca126 100644 --- a/docs/d5/d91/es__parser__adts_8cc_source.html +++ b/docs/d5/d91/es__parser__adts_8cc_source.html @@ -374,7 +374,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 d28d993a04..b028e33924 100644 --- a/docs/d5/d9c/classedash__packager_1_1MpdNotifierFactory-members.html +++ b/docs/d5/d9c/classedash__packager_1_1MpdNotifierFactory-members.html @@ -99,7 +99,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/da4/aes__encryptor_8cc_source.html b/docs/d5/da4/aes__encryptor_8cc_source.html index 492536ecd5..b8bc997954 100644 --- a/docs/d5/da4/aes__encryptor_8cc_source.html +++ b/docs/d5/da4/aes__encryptor_8cc_source.html @@ -568,7 +568,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/db7/classedash__packager_1_1xml_1_1AdaptationSetXmlNode-members.html b/docs/d5/db7/classedash__packager_1_1xml_1_1AdaptationSetXmlNode-members.html index 9d39651d76..5fb3d0a26e 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 ebe9c4d8cb..73fcc36e8d 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 0cf9adf58e..8640767993 100644 --- a/docs/d5/dc1/webm__webvtt__parser_8cc_source.html +++ b/docs/d5/dc1/webm__webvtt__parser_8cc_source.html @@ -171,7 +171,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/dc8/classedash__packager_1_1media_1_1OpusPacket.html b/docs/d5/dc8/classedash__packager_1_1media_1_1OpusPacket.html index f0736efb9f..695412093b 100644 --- a/docs/d5/dc8/classedash__packager_1_1media_1_1OpusPacket.html +++ b/docs/d5/dc8/classedash__packager_1_1media_1_1OpusPacket.html @@ -119,7 +119,7 @@ double duration_ms () diff --git a/docs/d5/dce/classedash__packager_1_1media_1_1Demuxer.html b/docs/d5/dce/classedash__packager_1_1media_1_1Demuxer.html index fff424d98f..09177cb4b6 100644 --- a/docs/d5/dce/classedash__packager_1_1media_1_1Demuxer.html +++ b/docs/d5/dce/classedash__packager_1_1media_1_1Demuxer.html @@ -150,7 +150,7 @@ Public Member Functions -

Definition at line 31 of file demuxer.cc.

+

Definition at line 32 of file demuxer.cc.

@@ -169,7 +169,7 @@ Public Member Functions

Cancel a demuxing job in progress. Will cause Run to exit with an error status of type CANCELLED.

-

Definition at line 190 of file demuxer.cc.

+

Definition at line 194 of file demuxer.cc.

@@ -214,7 +214,7 @@ Public Member Functions

Initialize the Demuxer. Calling other public methods of this class without this method returning OK, results in an undefined behavior. This method primes the demuxer by parsing portions of the media file to extract stream information.

Returns
OK on success.
-

Definition at line 50 of file demuxer.cc.

+

Definition at line 51 of file demuxer.cc.

@@ -232,7 +232,7 @@ Public Member Functions

Drive the remuxing from demuxer side (push). Read the file and push the Data to Muxer until Eof.

-

Definition at line 132 of file demuxer.cc.

+

Definition at line 136 of file demuxer.cc.

@@ -257,7 +257,7 @@ Public Member Functions -

Definition at line 46 of file demuxer.cc.

+

Definition at line 47 of file demuxer.cc.

@@ -294,7 +294,7 @@ Public Member Functions diff --git a/docs/d5/dcf/rsa__key_8h_source.html b/docs/d5/dcf/rsa__key_8h_source.html index cf82bcb3da..446f522c07 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/dda/ts__section__psi_8h_source.html b/docs/d5/dda/ts__section__psi_8h_source.html index fee948a6ac..b262040d56 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/ddf/classedash__packager_1_1media_1_1mp4_1_1FrameCENCInfo.html b/docs/d5/ddf/classedash__packager_1_1media_1_1mp4_1_1FrameCENCInfo.html index 642e341f4a..5e58f65c2d 100644 --- a/docs/d5/ddf/classedash__packager_1_1media_1_1mp4_1_1FrameCENCInfo.html +++ b/docs/d5/ddf/classedash__packager_1_1media_1_1mp4_1_1FrameCENCInfo.html @@ -132,7 +132,7 @@ const std::vector
diff --git a/docs/d5/de0/bit__reader_8cc_source.html b/docs/d5/de0/bit__reader_8cc_source.html index 6db7c1c9ec..9d42f432bf 100644 --- a/docs/d5/de0/bit__reader_8cc_source.html +++ b/docs/d5/de0/bit__reader_8cc_source.html @@ -185,7 +185,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 0b706dbd55..cdb2bf0874 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 7f6ad25ded..7f281d9b35 100644 --- a/docs/d5/def/ts__section__pmt_8h_source.html +++ b/docs/d5/def/ts__section__pmt_8h_source.html @@ -133,7 +133,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/df8/classedash__packager_1_1media_1_1H264BitReader-members.html b/docs/d5/df8/classedash__packager_1_1media_1_1H264BitReader-members.html index eb87e976ca..17ffcb46a6 100644 --- a/docs/d5/df8/classedash__packager_1_1media_1_1H264BitReader-members.html +++ b/docs/d5/df8/classedash__packager_1_1media_1_1H264BitReader-members.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/dfc/file_8cc_source.html b/docs/d5/dfc/file_8cc_source.html index 73136c9a06..14959d9e60 100644 --- a/docs/d5/dfc/file_8cc_source.html +++ b/docs/d5/dfc/file_8cc_source.html @@ -280,7 +280,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 3af5d3913e..b3bee756a4 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 @@ -105,7 +105,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 3a82448ed4..24719c1ee1 100644 --- a/docs/d6/d06/classedash__packager_1_1media_1_1StreamInfo.html +++ b/docs/d6/d06/classedash__packager_1_1media_1_1StreamInfo.html @@ -228,7 +228,7 @@ class base::RefCountedThre diff --git a/docs/d6/d10/classedash__packager_1_1media_1_1VideoStreamInfo-members.html b/docs/d6/d10/classedash__packager_1_1media_1_1VideoStreamInfo-members.html index da33c0ffd0..f9b685bf1d 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 @@ -124,7 +124,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 bf57b82611..00291c27e7 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 @@ -107,7 +107,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 37118250e4..408d109aeb 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/d17/es__parser__h264_8cc_source.html b/docs/d6/d17/es__parser__h264_8cc_source.html index 5b4b1f0ae8..301761fec9 100644 --- a/docs/d6/d17/es__parser__h264_8cc_source.html +++ b/docs/d6/d17/es__parser__h264_8cc_source.html @@ -482,7 +482,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d19/structedash__packager_1_1media_1_1mp4_1_1SampleGroupDescription-members.html b/docs/d6/d19/structedash__packager_1_1media_1_1mp4_1_1SampleGroupDescription-members.html index 5f13a91448..b30de410b0 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 @@ -112,7 +112,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 a6404f90e6..e7ea421d10 100644 --- a/docs/d6/d1b/classedash__packager_1_1media_1_1ClosureThread-members.html +++ b/docs/d6/d1b/classedash__packager_1_1media_1_1ClosureThread-members.html @@ -99,7 +99,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d2e/mpd__notifier__util_8cc_source.html b/docs/d6/d2e/mpd__notifier__util_8cc_source.html index 3639b3834d..632debf208 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 c5c742c17c..a366c661c9 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 f70c5ddfe6..c241ccb03b 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 6b82ee4380..05c4ce229b 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 b7e84e840c..b322b88707 100644 --- a/docs/d6/d3b/chunk__info__iterator_8cc_source.html +++ b/docs/d6/d3b/chunk__info__iterator_8cc_source.html @@ -171,7 +171,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d41/encrypting__fragmenter_8cc_source.html b/docs/d6/d41/encrypting__fragmenter_8cc_source.html index 16a5649b48..0a36a21d42 100644 --- a/docs/d6/d41/encrypting__fragmenter_8cc_source.html +++ b/docs/d6/d41/encrypting__fragmenter_8cc_source.html @@ -276,7 +276,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d48/structedash__packager_1_1media_1_1mp4_1_1DataEntryUrl-members.html b/docs/d6/d48/structedash__packager_1_1media_1_1mp4_1_1DataEntryUrl-members.html index 0b9f0ce388..7323bd0c05 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 @@ -111,7 +111,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 687c48291b..fbd2318d8f 100644 --- a/docs/d6/d49/classedash__packager_1_1media_1_1AVCDecoderConfiguration.html +++ b/docs/d6/d49/classedash__packager_1_1media_1_1AVCDecoderConfiguration.html @@ -233,7 +233,7 @@ Static Public Member Functions diff --git a/docs/d6/d59/structedash__packager_1_1media_1_1mp4_1_1DataInformation.html b/docs/d6/d59/structedash__packager_1_1media_1_1mp4_1_1DataInformation.html index 161e180a75..9c79445270 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 @@ -161,7 +161,7 @@ Additional Inherited Members

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

-

Definition at line 1239 of file box_definitions.cc.

+

Definition at line 1267 of file box_definitions.cc.

@@ -172,7 +172,7 @@ Additional Inherited Members 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 d5d78f19f6..f94d3227b7 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/d6c/structedash__packager_1_1media_1_1mp4_1_1DataEntryUrl.html b/docs/d6/d6c/structedash__packager_1_1media_1_1mp4_1_1DataEntryUrl.html index 45ca20b30d..a908c601c2 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 @@ -169,7 +169,7 @@ Additional Inherited Members

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

-

Definition at line 1199 of file box_definitions.cc.

+

Definition at line 1227 of file box_definitions.cc.

@@ -180,7 +180,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 d3fc1ec681..f20b4637f0 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 af5ebeb42d..a76e159d8d 100644 --- a/docs/d6/d71/scoped__xml__ptr_8h_source.html +++ b/docs/d6/d71/scoped__xml__ptr_8h_source.html @@ -136,7 +136,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); 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 0112a11a52..883ebd90b6 100644 --- a/docs/d6/d77/dash__iop__mpd__notifier_8h_source.html +++ b/docs/d6/d77/dash__iop__mpd__notifier_8h_source.html @@ -217,7 +217,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 62395e282b..4d83fa6f3f 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 @@ -167,7 +167,7 @@ uint32_t flagsReimplemented from edash_packager::media::mp4::ChunkLargeOffset.

-

Definition at line 654 of file box_definitions.cc.

+

Definition at line 656 of file box_definitions.cc.

@@ -178,7 +178,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 8a51045b87..b2dffdc4a8 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 11e4ce1737..35d4d9e14a 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 15f73ca9cd..fe794fe873 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 873a58b517..09472e9e63 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/d8b/structedash__packager_1_1media_1_1mp4_1_1MovieExtends.html b/docs/d6/d8b/structedash__packager_1_1media_1_1mp4_1_1MovieExtends.html index a64a719e55..53c22588e5 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 @@ -164,7 +164,7 @@ Additional Inherited Members

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

-

Definition at line 1387 of file box_definitions.cc.

+

Definition at line 1415 of file box_definitions.cc.

@@ -175,7 +175,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 3f8a6c2a95..3bbea7e933 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 @@ -181,7 +181,7 @@ virtual FourCC BoxType 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 ec2c61d595..f9740f07c6 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 @@ -113,7 +113,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 d8f38d71c5..f6981081ad 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 @@ -114,7 +114,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 8f482a4228..1c434f9c4b 100644 --- a/docs/d6/d9b/h264__parser_8h_source.html +++ b/docs/d6/d9b/h264__parser_8h_source.html @@ -516,7 +516,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d9c/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPes-members.html b/docs/d6/d9c/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPes-members.html index eb6f7a67b2..3ad1ffda1e 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 dc78efe02b..65acf318c1 100644 --- a/docs/d6/da0/ts__section__pat_8h_source.html +++ b/docs/d6/da0/ts__section__pat_8h_source.html @@ -135,7 +135,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/da2/classedash__packager_1_1media_1_1AesCbcCtsEncryptor.html b/docs/d6/da2/classedash__packager_1_1media_1_1AesCbcCtsEncryptor.html index be377bb94e..92b2b4a750 100644 --- a/docs/d6/da2/classedash__packager_1_1media_1_1AesCbcCtsEncryptor.html +++ b/docs/d6/da2/classedash__packager_1_1media_1_1AesCbcCtsEncryptor.html @@ -258,7 +258,7 @@ const std::vector< uint8_t > &  diff --git a/docs/d6/da3/classedash__packager_1_1media_1_1H264Parser.html b/docs/d6/da3/classedash__packager_1_1media_1_1H264Parser.html index a8b40d0feb..1e7e0349de 100644 --- a/docs/d6/da3/classedash__packager_1_1media_1_1H264Parser.html +++ b/docs/d6/da3/classedash__packager_1_1media_1_1H264Parser.html @@ -154,7 +154,7 @@ static bool FindStartCode< diff --git a/docs/d6/da3/mpd__builder_8h_source.html b/docs/d6/da3/mpd__builder_8h_source.html index 6588ed320f..bad311e9dc 100644 --- a/docs/d6/da3/mpd__builder_8h_source.html +++ b/docs/d6/da3/mpd__builder_8h_source.html @@ -512,7 +512,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 fc87f45235..1bfe6b637c 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 c5a64e5664..5a43a2bed5 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 @@ -119,7 +119,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 7e0e67e140..8df47fc84d 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/dc2/classedash__packager_1_1media_1_1TextTrackConfig-members.html b/docs/d6/dc2/classedash__packager_1_1media_1_1TextTrackConfig-members.html index cb9e4519ad..d03c13971b 100644 --- a/docs/d6/dc2/classedash__packager_1_1media_1_1TextTrackConfig-members.html +++ b/docs/d6/dc2/classedash__packager_1_1media_1_1TextTrackConfig-members.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/dc4/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor.html b/docs/d6/dc4/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor.html index 39b03a66fb..2dc4f04880 100644 --- a/docs/d6/dc4/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor.html +++ b/docs/d6/dc4/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor.html @@ -208,7 +208,7 @@ const std::vector< uint8_t > &  diff --git a/docs/d6/dd6/classedash__packager_1_1media_1_1WebMListParser.html b/docs/d6/dd6/classedash__packager_1_1media_1_1WebMListParser.html index ab62a04333..08cd43e9d5 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/de6/classedash__packager_1_1media_1_1KeyFetcher-members.html b/docs/d6/de6/classedash__packager_1_1media_1_1KeyFetcher-members.html index aea829f374..86127f1011 100644 --- a/docs/d6/de6/classedash__packager_1_1media_1_1KeyFetcher-members.html +++ b/docs/d6/de6/classedash__packager_1_1media_1_1KeyFetcher-members.html @@ -99,7 +99,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/de7/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor-members.html b/docs/d6/de7/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor-members.html index f4862c8c54..927ab473f7 100644 --- a/docs/d6/de7/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor-members.html +++ b/docs/d6/de7/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/de8/local__file_8cc_source.html b/docs/d6/de8/local__file_8cc_source.html index 66486e1ae2..026ab087f3 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 60c5f1332f..2133b9528a 100644 --- a/docs/d6/de8/network__util_8h_source.html +++ b/docs/d6/de8/network__util_8h_source.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/dec/structedash__packager_1_1media_1_1mp4_1_1Movie.html b/docs/d6/dec/structedash__packager_1_1media_1_1mp4_1_1Movie.html index ec12f3990f..281aeb8d39 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 @@ -171,7 +171,7 @@ Additional Inherited Members

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

-

Definition at line 1421 of file box_definitions.cc.

+

Definition at line 1449 of file box_definitions.cc.

@@ -182,7 +182,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 ab124534e6..47f596cd6e 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 792547851f..e0808fb43e 100644 --- a/docs/d6/def/sync__sample__iterator_8cc_source.html +++ b/docs/d6/def/sync__sample__iterator_8cc_source.html @@ -140,7 +140,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 2e65a9e439..033ecd75df 100644 --- a/docs/d6/df9/classedash__packager_1_1media_1_1mp4_1_1MP4MediaParser-members.html +++ b/docs/d6/df9/classedash__packager_1_1media_1_1mp4_1_1MP4MediaParser-members.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d0b/muxer__listener__test__helper_8h_source.html b/docs/d7/d0b/muxer__listener__test__helper_8h_source.html index 6e5f32e07d..c0e68bb780 100644 --- a/docs/d7/d0b/muxer__listener__test__helper_8h_source.html +++ b/docs/d7/d0b/muxer__listener__test__helper_8h_source.html @@ -196,7 +196,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d0d/structedash__packager_1_1media_1_1mp4_1_1DataReference.html b/docs/d7/d0d/structedash__packager_1_1media_1_1mp4_1_1DataReference.html index 7f96d7df49..28db97f508 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 @@ -169,7 +169,7 @@ Additional Inherited Members

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

-

Definition at line 1221 of file box_definitions.cc.

+

Definition at line 1249 of file box_definitions.cc.

@@ -180,7 +180,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 046720544c..17a929a3b5 100644 --- a/docs/d7/d12/media__parser_8h_source.html +++ b/docs/d7/d12/media__parser_8h_source.html @@ -149,7 +149,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d15/classedash__packager_1_1Representation.html b/docs/d7/d15/classedash__packager_1_1Representation.html index 38ac79a7e6..1be07cdf62 100644 --- a/docs/d7/d15/classedash__packager_1_1Representation.html +++ b/docs/d7/d15/classedash__packager_1_1Representation.html @@ -426,7 +426,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 60886bb967..d0a46cbbb1 100644 --- a/docs/d7/d15/mpd__notifier_8h_source.html +++ b/docs/d7/d15/mpd__notifier_8h_source.html @@ -169,7 +169,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d1c/structedash__packager_1_1media_1_1mp4_1_1DecodingTime.html b/docs/d7/d1c/structedash__packager_1_1media_1_1mp4_1_1DecodingTime.html index fe58940001..b06b40ed0a 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 @@ -112,7 +112,7 @@ uint32_t sample_delta< diff --git a/docs/d7/d22/libcrypto__threading_8h_source.html b/docs/d7/d22/libcrypto__threading_8h_source.html index ca2445dd15..c7d4a5f918 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 aa3d90d808..5b99de3c0c 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 40619f5448..20ace2e39f 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 @@ -110,7 +110,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 12034cee5d..ed51937b39 100644 --- a/docs/d7/d3a/classedash__packager_1_1media_1_1VideoStreamInfo.html +++ b/docs/d7/d3a/classedash__packager_1_1media_1_1VideoStreamInfo.html @@ -192,7 +192,7 @@ void set_language (con

Detailed Description

Holds video stream information.

-

Definition at line 28 of file video_stream_info.h.

+

Definition at line 29 of file video_stream_info.h.

Constructor & Destructor Documentation

@@ -304,7 +304,7 @@ void set_language (con -

Definition at line 44 of file video_stream_info.cc.

+

Definition at line 46 of file video_stream_info.cc.

@@ -333,7 +333,7 @@ void set_language (con

Implements edash_packager::media::StreamInfo.

-

Definition at line 79 of file video_stream_info.cc.

+

Definition at line 81 of file video_stream_info.cc.

@@ -360,7 +360,7 @@ void set_language (con

Returns the pixel height.

Returns
0 if unknown.
-

Definition at line 63 of file video_stream_info.h.

+

Definition at line 64 of file video_stream_info.h.

@@ -387,7 +387,7 @@ void set_language (con

Returns the pixel width.

Returns
0 if unknown.
-

Definition at line 60 of file video_stream_info.h.

+

Definition at line 61 of file video_stream_info.h.

@@ -415,7 +415,7 @@ void set_language (con

Reimplemented from edash_packager::media::StreamInfo.

-

Definition at line 86 of file video_stream_info.cc.

+

Definition at line 88 of file video_stream_info.cc.

@@ -426,7 +426,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 7ff47dccab..ae9716b12b 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/d44/classedash__packager_1_1MockMpdNotifier.html b/docs/d7/d44/classedash__packager_1_1MockMpdNotifier.html index 09a3e4d2ed..93d7a6316e 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/d4f/structedash__packager_1_1media_1_1mp4_1_1Edit.html b/docs/d7/d4f/structedash__packager_1_1media_1_1mp4_1_1Edit.html index 9fdab0000d..b2f438a56d 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 @@ -161,7 +161,7 @@ Additional Inherited Members

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

-

Definition at line 823 of file box_definitions.cc.

+

Definition at line 825 of file box_definitions.cc.

@@ -172,7 +172,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 3f8baae2a2..ab6c987008 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 @@ -119,7 +119,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 8841d6784d..814801c1b9 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 c6eff985d8..1ab0c737df 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 @@ -116,7 +116,7 @@ std::vector< uint8_t >  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 d699e95140..af8c898bc9 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 @@ -102,7 +102,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 a42ffc25a9..20e5c60341 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 145c544666..05aca1deca 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 85d3bbf042..abe491f23c 100644 --- a/docs/d7/d82/classedash__packager_1_1MpdBuilder-members.html +++ b/docs/d7/d82/classedash__packager_1_1MpdBuilder-members.html @@ -108,7 +108,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 new file mode 100644 index 0000000000..f48317f8e0 --- /dev/null +++ b/docs/d7/d85/classedash__packager_1_1media_1_1VPCodecConfiguration.html @@ -0,0 +1,215 @@ + + + + + + +DASH Media Packaging SDK: edash_packager::media::VPCodecConfiguration Class Reference + + + + + + + + + +
+
+ + + + + + +
+
DASH Media Packaging SDK +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
edash_packager::media::VPCodecConfiguration Class Reference
+
+
+ +

Class for parsing or writing VP codec configuration data. + More...

+ +

#include <vp_codec_configuration.h>

+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

VPCodecConfiguration (uint8_t profile, uint8_t level, uint8_t bit_depth, uint8_t color_space, uint8_t chroma_subsampling, uint8_t transfer_function, bool video_full_range_flag, const std::vector< uint8_t > &codec_initialization_data)
 
bool Parse (const std::vector< uint8_t > &data)
 
void Write (std::vector< uint8_t > *data) const
 
std::string GetCodecString (VideoCodec codec) const
 
+uint8_t profile () const
 
+uint8_t level () const
 
+uint8_t bit_depth () const
 
+uint8_t color_space () const
 
+uint8_t chroma_subsampling () const
 
+uint8_t transfer_function () const
 
+bool video_full_range_flag () const
 
+

Detailed Description

+

Class for parsing or writing VP codec configuration data.

+ +

Definition at line 21 of file vp_codec_configuration.h.

+

Member Function Documentation

+ +
+
+ + + + + + + + +
std::string edash_packager::media::VPCodecConfiguration::GetCodecString (VideoCodec codec) const
+
+
Returns
The codec string.
+ +

Definition at line 99 of file vp_codec_configuration.cc.

+ +
+
+ +
+
+ + + + + + + + +
bool edash_packager::media::VPCodecConfiguration::Parse (const std::vector< uint8_t > & data)
+
+

Parses input to extract VP codec configuration data.

+
Returns
false if there is parsing errors.
+ +

Definition at line 65 of file vp_codec_configuration.cc.

+ +
+
+ +
+
+ + + + + + + + +
void edash_packager::media::VPCodecConfiguration::Write (std::vector< uint8_t > * data) const
+
+
Parameters
+ + +
datashould not be null. Writes VP codec configuration data to buffer.
+
+
+ +

Definition at line 84 of file vp_codec_configuration.cc.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/docs/d7/d87/video__stream__info_8h_source.html b/docs/d7/d87/video__stream__info_8h_source.html index e7d48799c3..6668cc8f11 100644 --- a/docs/d7/d87/video__stream__info_8h_source.html +++ b/docs/d7/d87/video__stream__info_8h_source.html @@ -110,81 +110,82 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
21  kCodecTheora,
22  kCodecVP8,
23  kCodecVP9,
-
24  kNumVideoCodec
-
25 };
-
26 
-
28 class VideoStreamInfo : public StreamInfo {
-
29  public:
-
33  VideoStreamInfo(int track_id,
-
34  uint32_t time_scale,
-
35  uint64_t duration,
-
36  VideoCodec codec,
-
37  const std::string& codec_string,
-
38  const std::string& language,
-
39  uint16_t width,
-
40  uint16_t height,
-
41  uint32_t pixel_width,
-
42  uint32_t pixel_height,
-
43  int16_t trick_play_rate,
-
44  uint8_t nalu_length_size,
-
45  const uint8_t* extra_data,
-
46  size_t extra_data_size,
-
47  bool is_encrypted);
-
48 
-
51  bool IsValidConfig() const override;
-
52  std::string ToString() const override;
-
54 
-
55  VideoCodec codec() const { return codec_; }
-
56  uint16_t width() const { return width_; }
-
57  uint16_t height() const { return height_; }
-
60  uint32_t pixel_width() const { return pixel_width_; }
-
63  uint32_t pixel_height() const { return pixel_height_; }
-
64  uint8_t nalu_length_size() const { return nalu_length_size_; }
-
65  int16_t trick_play_rate() const { return trick_play_rate_; }
-
66 
-
67  void set_width(uint32_t width) { width_ = width; }
-
68  void set_height(uint32_t height) { height_ = height; }
-
69  void set_pixel_width(uint32_t pixel_width) { pixel_width_ = pixel_width; }
-
70  void set_pixel_height(uint32_t pixel_height) { pixel_height_ = pixel_height; }
-
71 
-
72  private:
-
73  ~VideoStreamInfo() override;
-
74 
-
75  VideoCodec codec_;
-
76  uint16_t width_;
-
77  uint16_t height_;
-
78 
-
79  // pixel_width_:pixel_height_ is the sample aspect ratio.
-
80  // 0 means unknown.
-
81  uint32_t pixel_width_;
-
82  uint32_t pixel_height_;
-
83  int16_t trick_play_rate_; // Non-zero for trick-play streams.
-
84 
-
85  // Specifies the normalized size of the NAL unit length field. Can be 1, 2 or
-
86  // 4 bytes, or 0 if the size if unknown or the stream is not a AVC stream
-
87  // (H.264).
-
88  uint8_t nalu_length_size_;
-
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_VIDEO_STREAM_INFO_H_
- -
std::string ToString() const override
+
24  kCodecVP10,
+
25  kNumVideoCodec
+
26 };
+
27 
+
29 class VideoStreamInfo : public StreamInfo {
+
30  public:
+
34  VideoStreamInfo(int track_id,
+
35  uint32_t time_scale,
+
36  uint64_t duration,
+
37  VideoCodec codec,
+
38  const std::string& codec_string,
+
39  const std::string& language,
+
40  uint16_t width,
+
41  uint16_t height,
+
42  uint32_t pixel_width,
+
43  uint32_t pixel_height,
+
44  int16_t trick_play_rate,
+
45  uint8_t nalu_length_size,
+
46  const uint8_t* extra_data,
+
47  size_t extra_data_size,
+
48  bool is_encrypted);
+
49 
+
52  bool IsValidConfig() const override;
+
53  std::string ToString() const override;
+
55 
+
56  VideoCodec codec() const { return codec_; }
+
57  uint16_t width() const { return width_; }
+
58  uint16_t height() const { return height_; }
+
61  uint32_t pixel_width() const { return pixel_width_; }
+
64  uint32_t pixel_height() const { return pixel_height_; }
+
65  uint8_t nalu_length_size() const { return nalu_length_size_; }
+
66  int16_t trick_play_rate() const { return trick_play_rate_; }
+
67 
+
68  void set_width(uint32_t width) { width_ = width; }
+
69  void set_height(uint32_t height) { height_ = height; }
+
70  void set_pixel_width(uint32_t pixel_width) { pixel_width_ = pixel_width; }
+
71  void set_pixel_height(uint32_t pixel_height) { pixel_height_ = pixel_height; }
+
72 
+
73  private:
+
74  ~VideoStreamInfo() override;
+
75 
+
76  VideoCodec codec_;
+
77  uint16_t width_;
+
78  uint16_t height_;
+
79 
+
80  // pixel_width_:pixel_height_ is the sample aspect ratio.
+
81  // 0 means unknown.
+
82  uint32_t pixel_width_;
+
83  uint32_t pixel_height_;
+
84  int16_t trick_play_rate_; // Non-zero for trick-play streams.
+
85 
+
86  // Specifies the normalized size of the NAL unit length field. Can be 1, 2 or
+
87  // 4 bytes, or 0 if the size if unknown or the stream is not a AVC stream
+
88  // (H.264).
+
89  uint8_t nalu_length_size_;
+
90 
+
91  // Not using DISALLOW_COPY_AND_ASSIGN here intentionally to allow the compiler
+
92  // generated copy constructor and assignment operator. Since the extra data is
+
93  // typically small, the performance impact is minimal.
+
94 };
+
95 
+
96 } // namespace media
+
97 } // namespace edash_packager
+
98 
+
99 #endif // MEDIA_BASE_VIDEO_STREAM_INFO_H_
+ +
std::string ToString() const override
Abstract class holds stream information.
Definition: stream_info.h:26
- -
Holds video stream information.
- -
VideoStreamInfo(int track_id, uint32_t time_scale, uint64_t duration, VideoCodec codec, const std::string &codec_string, const std::string &language, uint16_t width, uint16_t height, uint32_t pixel_width, uint32_t pixel_height, int16_t trick_play_rate, uint8_t nalu_length_size, const uint8_t *extra_data, size_t extra_data_size, bool is_encrypted)
+ +
Holds video stream information.
+ +
VideoStreamInfo(int track_id, uint32_t time_scale, uint64_t duration, VideoCodec codec, const std::string &codec_string, const std::string &language, uint16_t width, uint16_t height, uint32_t pixel_width, uint32_t pixel_height, int16_t trick_play_rate, uint8_t nalu_length_size, const uint8_t *extra_data, size_t extra_data_size, bool is_encrypted)
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 b96bfa9a72..05e011a18a 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 @@ -268,7 +268,7 @@ class BoxBuffer diff --git a/docs/d7/d9d/progress__listener_8h_source.html b/docs/d7/d9d/progress__listener_8h_source.html index a737afa017..7ea7e0edb2 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 f1b01ca97d..d078da0d9b 100644 --- a/docs/d7/da4/track__run__iterator_8h_source.html +++ b/docs/d7/da4/track__run__iterator_8h_source.html @@ -197,7 +197,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); 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 88e29c2fd5..d9779f364e 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 @@ -175,7 +175,7 @@ Additional Inherited Members

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

-

Definition at line 577 of file box_definitions.cc.

+

Definition at line 579 of file box_definitions.cc.

@@ -186,7 +186,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 0c6c6de455..6b141e3c47 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 3e78e40923..022b057ba8 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 148de3927d..21f64d7e6e 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/dd0/mpd__notifier__util_8h_source.html b/docs/d7/dd0/mpd__notifier__util_8h_source.html index 398f325995..e16011f00e 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/dd4/request__signer_8h_source.html b/docs/d7/dd4/request__signer_8h_source.html index a2dff83ed1..bd021fc5db 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 1e65574574..d07bdd2ec7 100644 --- a/docs/d7/dd6/key__source_8cc_source.html +++ b/docs/d7/dd6/key__source_8cc_source.html @@ -296,7 +296,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/de3/structedash__packager_1_1xml_1_1XmlDeleter.html b/docs/d7/de3/structedash__packager_1_1xml_1_1XmlDeleter.html index 29da0a0e2d..2ef8b6a90b 100644 --- a/docs/d7/de3/structedash__packager_1_1xml_1_1XmlDeleter.html +++ b/docs/d7/de3/structedash__packager_1_1xml_1_1XmlDeleter.html @@ -127,7 +127,7 @@ void operator() (xmlCh diff --git a/docs/d7/dec/h264__byte__to__unit__stream__converter_8h_source.html b/docs/d7/dec/h264__byte__to__unit__stream__converter_8h_source.html index 05e53e06f2..4fc96cb48e 100644 --- a/docs/d7/dec/h264__byte__to__unit__stream__converter_8h_source.html +++ b/docs/d7/dec/h264__byte__to__unit__stream__converter_8h_source.html @@ -139,7 +139,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/dec/structedash__packager_1_1media_1_1mp4_1_1MediaHeader.html b/docs/d7/dec/structedash__packager_1_1media_1_1mp4_1_1MediaHeader.html index a49bd9802d..717b8866c5 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 @@ -181,7 +181,7 @@ Additional Inherited Members

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

-

Definition at line 1138 of file box_definitions.cc.

+

Definition at line 1166 of file box_definitions.cc.

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

Implements edash_packager::media::MediaParser.

-

Definition at line 75 of file mp4_media_parser.cc.

+

Definition at line 89 of file mp4_media_parser.cc.

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

Implements edash_packager::media::MediaParser.

-

Definition at line 54 of file mp4_media_parser.cc.

+

Definition at line 68 of file mp4_media_parser.cc.

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

Definition at line 115 of file mp4_media_parser.cc.

+

Definition at line 129 of file mp4_media_parser.cc.

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

Implements edash_packager::media::MediaParser.

-

Definition at line 81 of file mp4_media_parser.cc.

+

Definition at line 95 of file mp4_media_parser.cc.

@@ -284,7 +284,7 @@ track_id, const scoped_refptr
diff --git a/docs/d8/d0d/media__sample_8cc_source.html b/docs/d8/d0d/media__sample_8cc_source.html index 2c8e52c2c8..9c255246c7 100644 --- a/docs/d8/d0d/media__sample_8cc_source.html +++ b/docs/d8/d0d/media__sample_8cc_source.html @@ -189,7 +189,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 a5b0f730f9..4ba8ea1ffa 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 d0bec879ce..c35978cf06 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 @@ -370,7 +370,7 @@ void set_encryption_key diff --git a/docs/d8/d21/structedash__packager_1_1media_1_1mp4_1_1ChunkInfo.html b/docs/d8/d21/structedash__packager_1_1media_1_1mp4_1_1ChunkInfo.html index 1ee8057d2b..11b7718c33 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 @@ -115,7 +115,7 @@ uint32_t sample_descriptio 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 4cafeefe8a..d2d25bf035 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 f964c1932d..d36d6112f5 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 9f44b4261e..3c053e0166 100644 --- a/docs/d8/d26/structedash__packager_1_1media_1_1mp4_1_1SegmentType-members.html +++ b/docs/d8/d26/structedash__packager_1_1media_1_1mp4_1_1SegmentType-members.html @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d2e/classedash__packager_1_1media_1_1ByteQueue.html b/docs/d8/d2e/classedash__packager_1_1media_1_1ByteQueue.html index 4a9444565f..dc0b52854f 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 9566f7e3ac..f7a210c832 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 @@ -112,7 +112,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 14e27ed153..eeaa95ee09 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 020ad4efb5..eff775b470 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 @@ -112,7 +112,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 93efffdfe4..c39cc4e764 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 @@ -169,7 +169,7 @@ Additional Inherited Members

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

-

Definition at line 794 of file box_definitions.cc.

+

Definition at line 796 of file box_definitions.cc.

@@ -180,7 +180,7 @@ Additional Inherited Members diff --git a/docs/d8/d6a/classedash__packager_1_1media_1_1AudioStreamInfo-members.html b/docs/d8/d6a/classedash__packager_1_1media_1_1AudioStreamInfo-members.html index 0ce6affae0..2125410c04 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 @@ -121,7 +121,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d6c/classedash__packager_1_1media_1_1MediaSample.html b/docs/d8/d6c/classedash__packager_1_1media_1_1MediaSample.html index 2574f06c7b..da50e4fb23 100644 --- a/docs/d8/d6c/classedash__packager_1_1media_1_1MediaSample.html +++ b/docs/d8/d6c/classedash__packager_1_1media_1_1MediaSample.html @@ -356,7 +356,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 972a11fd97..dcdcca7bcd 100644 --- a/docs/d8/d6f/classedash__packager_1_1MockAdaptationSet-members.html +++ b/docs/d8/d6f/classedash__packager_1_1MockAdaptationSet-members.html @@ -125,7 +125,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 bb6f74614d..88c25ebb99 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 @@ -114,7 +114,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 35a6e63c21..d99fd7ed4a 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 be67a7411d..52e83ee2e0 100644 --- a/docs/d8/d74/classedash__packager_1_1Representation-members.html +++ b/docs/d8/d74/classedash__packager_1_1Representation-members.html @@ -107,7 +107,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 50667e9574..42d727f46a 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 @@ -109,7 +109,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 7fd023fa88..f1659b9f7b 100644 --- a/docs/d8/d78/classedash__packager_1_1MockAdaptationSet.html +++ b/docs/d8/d78/classedash__packager_1_1MockAdaptationSet.html @@ -180,7 +180,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 2052fd4e0a..b0718f7e5c 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 139747da3b..873205eb78 100644 --- a/docs/d8/d82/classedash__packager_1_1media_1_1MpdNotifyMuxerListener-members.html +++ b/docs/d8/d82/classedash__packager_1_1media_1_1MpdNotifyMuxerListener-members.html @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d8e/classedash__packager_1_1media_1_1mp2t_1_1TsSection.html b/docs/d8/d8e/classedash__packager_1_1media_1_1mp2t_1_1TsSection.html index e6d0865f21..0879f094a7 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 45196ba7a9..47ed59858a 100644 --- a/docs/d8/d94/adts__constants_8cc_source.html +++ b/docs/d8/d94/adts__constants_8cc_source.html @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d97/structedash__packager_1_1ContentProtectionElement-members.html b/docs/d8/d97/structedash__packager_1_1ContentProtectionElement-members.html index abcb30b7ec..b01f817d84 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 2767b7a822..08c96af9bf 100644 --- a/docs/d8/d9a/fragmenter_8cc_source.html +++ b/docs/d8/d9a/fragmenter_8cc_source.html @@ -249,7 +249,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d9c/webm__tracks__parser_8cc_source.html b/docs/d8/d9c/webm__tracks__parser_8cc_source.html index fc67c0c35b..5b8a3a1d9e 100644 --- a/docs/d8/d9c/webm__tracks__parser_8cc_source.html +++ b/docs/d8/d9c/webm__tracks__parser_8cc_source.html @@ -429,9 +429,9 @@ 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< VideoStreamInfo > GetVideoStreamInfo(int64_t track_num, const std::string &codec_id, const std::vector< uint8_t > &codec_private, 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.
+
void Reset()
Reset this object's state so it can process a new video track element.
int Parse(const uint8_t *buf, int size)
Definition: webm_parser.cc:719
int64_t GetAudioDefaultDuration(const double timecode_scale_in_us) const
@@ -440,7 +440,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d9f/udp__file_8h_source.html b/docs/d8/d9f/udp__file_8h_source.html index 6a1412128d..5d37e5a294 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 4e31e0a773..6430ef0f51 100644 --- a/docs/d8/da0/classedash__packager_1_1media_1_1wvm_1_1WvmMediaParser.html +++ b/docs/d8/da0/classedash__packager_1_1media_1_1wvm_1_1WvmMediaParser.html @@ -255,7 +255,7 @@ track_id, const scoped_refptr
diff --git a/docs/d8/da1/classedash__packager_1_1media_1_1WidevineKeySource-members.html b/docs/d8/da1/classedash__packager_1_1media_1_1WidevineKeySource-members.html index d71c30f726..02d5c75084 100644 --- a/docs/d8/da1/classedash__packager_1_1media_1_1WidevineKeySource-members.html +++ b/docs/d8/da1/classedash__packager_1_1media_1_1WidevineKeySource-members.html @@ -122,7 +122,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/da6/structedash__packager_1_1media_1_1mp4_1_1SoundMediaHeader-members.html b/docs/d8/da6/structedash__packager_1_1media_1_1mp4_1_1SoundMediaHeader-members.html index fe6efe6c97..fa9e9e603a 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 @@ -111,7 +111,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 5e951d658e..530ca9c38c 100644 --- a/docs/d8/daa/stream__info_8h_source.html +++ b/docs/d8/daa/stream__info_8h_source.html @@ -185,7 +185,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/db0/structedash__packager_1_1media_1_1H264SPS.html b/docs/d8/db0/structedash__packager_1_1media_1_1H264SPS.html index 4a373cc00e..9c6dd4ef86 100644 --- a/docs/d8/db0/structedash__packager_1_1media_1_1H264SPS.html +++ b/docs/d8/db0/structedash__packager_1_1media_1_1H264SPS.html @@ -242,7 +242,7 @@ int chroma_array_type< diff --git a/docs/d8/dbb/structedash__packager_1_1media_1_1wvm_1_1PrevSampleData-members.html b/docs/d8/dbb/structedash__packager_1_1media_1_1wvm_1_1PrevSampleData-members.html index d7b77dcf0f..d2ca17330d 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 faf677c7ff..ab1b3e46f6 100644 --- a/docs/d8/dc7/classedash__packager_1_1media_1_1UdpFile.html +++ b/docs/d8/dc7/classedash__packager_1_1media_1_1UdpFile.html @@ -457,7 +457,7 @@ Additional Inherited Members diff --git a/docs/d8/dca/classedash__packager_1_1media_1_1AesCbcPkcs5Decryptor-members.html b/docs/d8/dca/classedash__packager_1_1media_1_1AesCbcPkcs5Decryptor-members.html index 079a4b7a48..9aed862ba9 100644 --- a/docs/d8/dca/classedash__packager_1_1media_1_1AesCbcPkcs5Decryptor-members.html +++ b/docs/d8/dca/classedash__packager_1_1media_1_1AesCbcPkcs5Decryptor-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/dcc/classedash__packager_1_1media_1_1AesRequestSigner.html b/docs/d8/dcc/classedash__packager_1_1media_1_1AesRequestSigner.html index b9375885a7..728089ee89 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 cb0f6f84b3..4f76c00f7c 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/de6/webm__crypto__helpers_8h_source.html b/docs/d8/de6/webm__crypto__helpers_8h_source.html index f54141543c..176310e9d5 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/df1/classedash__packager_1_1MpdWriter-members.html b/docs/d8/df1/classedash__packager_1_1MpdWriter-members.html index 3fecd06a7c..77695232b4 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/df3/structedash__packager_1_1xml_1_1ScopedXmlPtr.html b/docs/d8/df3/structedash__packager_1_1xml_1_1ScopedXmlPtr.html index 8577022031..5b587a60f4 100644 --- a/docs/d8/df3/structedash__packager_1_1xml_1_1ScopedXmlPtr.html +++ b/docs/d8/df3/structedash__packager_1_1xml_1_1ScopedXmlPtr.html @@ -119,7 +119,7 @@ struct edash_packager::xml::ScopedXmlPtr< XmlType > diff --git a/docs/d9/d08/mock__mpd__builder_8h_source.html b/docs/d9/d08/mock__mpd__builder_8h_source.html index a1c00566ef..1b47f21365 100644 --- a/docs/d9/d08/mock__mpd__builder_8h_source.html +++ b/docs/d9/d08/mock__mpd__builder_8h_source.html @@ -177,7 +177,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 05ba711192..3248cba493 100644 --- a/docs/d9/d15/key__rotation__fragmenter_8cc_source.html +++ b/docs/d9/d15/key__rotation__fragmenter_8cc_source.html @@ -228,7 +228,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d17/classedash__packager_1_1DashIopMpdNotifier-members.html b/docs/d9/d17/classedash__packager_1_1DashIopMpdNotifier-members.html index c8ffd5ce88..554282e4e0 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 f9948c8ded..4377a804ff 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 @@ -169,7 +169,7 @@ Additional Inherited Members

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

-

Definition at line 712 of file box_definitions.cc.

+

Definition at line 714 of file box_definitions.cc.

@@ -180,7 +180,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 53354ea167..ef4e13f1af 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/webm__content__encodings_8h_source.html b/docs/d9/d3b/webm__content__encodings_8h_source.html index 8a1f95b641..0b21a87d52 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 b3ac70d50b..6a01d2776c 100644 --- a/docs/d9/d46/classedash__packager_1_1media_1_1BufferReader.html +++ b/docs/d9/d46/classedash__packager_1_1media_1_1BufferReader.html @@ -273,7 +273,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 ca8b4a10c3..aa980368cf 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 @@ -209,7 +209,7 @@ Additional Inherited Members

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

-

Definition at line 1509 of file box_definitions.cc.

+

Definition at line 1537 of file box_definitions.cc.

@@ -220,7 +220,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 21042df6ef..cdf1970ea8 100644 --- a/docs/d9/d5b/structedash__packager_1_1SegmentInfo-members.html +++ b/docs/d9/d5b/structedash__packager_1_1SegmentInfo-members.html @@ -99,7 +99,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d65/classedash__packager_1_1media_1_1TextTrack-members.html b/docs/d9/d65/classedash__packager_1_1media_1_1TextTrack-members.html index 07338c2c7f..ef3431a875 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 459de6be9a..ae4975b603 100644 --- a/docs/d9/d76/structedash__packager_1_1media_1_1H264ModificationOfPicNum.html +++ b/docs/d9/d76/structedash__packager_1_1media_1_1H264ModificationOfPicNum.html @@ -119,7 +119,7 @@ union { diff --git a/docs/d9/d7b/structedash__packager_1_1media_1_1wvm_1_1PrevSampleData.html b/docs/d9/d7b/structedash__packager_1_1media_1_1wvm_1_1PrevSampleData.html index b01930ca51..ce24b603f8 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 ac26856203..09b0677b37 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 9a86edc390..b0789da468 100644 --- a/docs/d9/d8b/classedash__packager_1_1media_1_1KeySource.html +++ b/docs/d9/d8b/classedash__packager_1_1media_1_1KeySource.html @@ -582,7 +582,7 @@ Static Protected Member Functions diff --git a/docs/d9/d90/text__track_8h_source.html b/docs/d9/d90/text__track_8h_source.html index 53914299b6..e7f15dadfa 100644 --- a/docs/d9/d90/text__track_8h_source.html +++ b/docs/d9/d90/text__track_8h_source.html @@ -134,7 +134,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d91/h264__bit__reader_8h_source.html b/docs/d9/d91/h264__bit__reader_8h_source.html index bc29447844..b5704b2b72 100644 --- a/docs/d9/d91/h264__bit__reader_8h_source.html +++ b/docs/d9/d91/h264__bit__reader_8h_source.html @@ -170,7 +170,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d93/media__stream_8h_source.html b/docs/d9/d93/media__stream_8h_source.html index 106105b76d..dfe48725ab 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 4b9f44cefd..87efe77bff 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 9e13dba5e8..797e4b4a2c 100644 --- a/docs/d9/d99/classedash__packager_1_1media_1_1DecryptConfig-members.html +++ b/docs/d9/d99/classedash__packager_1_1media_1_1DecryptConfig-members.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d9b/structedash__packager_1_1SegmentInfo.html b/docs/d9/d9b/structedash__packager_1_1SegmentInfo.html index 8fed37aca6..fee3e75192 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 5aa1349d0c..d2f2e12407 100644 --- a/docs/d9/da4/stream__descriptor_8h_source.html +++ b/docs/d9/da4/stream__descriptor_8h_source.html @@ -138,7 +138,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 577244b6f8..da793009bd 100644 --- a/docs/d9/db4/classedash__packager_1_1media_1_1VodMediaInfoDumpMuxerListener.html +++ b/docs/d9/db4/classedash__packager_1_1media_1_1VodMediaInfoDumpMuxerListener.html @@ -201,7 +201,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 1821efdea4..4e621bab0c 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 fb8a2bcd51..e12e3d24ea 100644 --- a/docs/d9/db9/muxer_8cc_source.html +++ b/docs/d9/db9/muxer_8cc_source.html @@ -214,7 +214,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/dc8/webm__constants_8cc_source.html b/docs/d9/dc8/webm__constants_8cc_source.html index e3d59a0251..c884b3e1c9 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 b20dc0c68b..231d2cd9b3 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 @@ -172,7 +172,7 @@ Additional Inherited Members

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

-

Definition at line 1021 of file box_definitions.cc.

+

Definition at line 1049 of file box_definitions.cc.

@@ -183,7 +183,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 0d9202d1f9..fd338ff0fc 100644 --- a/docs/d9/dcc/webm__video__client_8h_source.html +++ b/docs/d9/dcc/webm__video__client_8h_source.html @@ -144,12 +144,12 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
63 #endif // MEDIA_FORMATS_WEBM_WEBM_VIDEO_CLIENT_H_
Helper class used to parse a Video element inside a TrackEntry element.
-
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.
+
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.
diff --git a/docs/d9/de3/muxer__listener__internal_8cc_source.html b/docs/d9/de3/muxer__listener__internal_8cc_source.html index faca706ef2..1e0c9d7a3b 100644 --- a/docs/d9/de3/muxer__listener__internal_8cc_source.html +++ b/docs/d9/de3/muxer__listener__internal_8cc_source.html @@ -326,7 +326,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/dec/classedash__packager_1_1media_1_1RequestSigner-members.html b/docs/d9/dec/classedash__packager_1_1media_1_1RequestSigner-members.html index c84ea4ac32..1e767792b3 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 cedcb5edd4..55a2823fe0 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/d02/structedash__packager_1_1media_1_1H264WeightingFactors-members.html b/docs/da/d02/structedash__packager_1_1media_1_1H264WeightingFactors-members.html index e3d73fdd7b..7f25fa53bc 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 b053eab26e..788e734aa4 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 @@ -111,7 +111,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 ec17194fc8..dcc443fa7f 100644 --- a/docs/da/d04/audio__stream__info_8cc_source.html +++ b/docs/da/d04/audio__stream__info_8cc_source.html @@ -210,7 +210,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); 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 a001d15e7d..d25a9052c2 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 @@ -111,7 +111,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 6c6963b7b7..d94dc94e0a 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 @@ -169,7 +169,7 @@ Additional Inherited Members

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

-

Definition at line 1332 of file box_definitions.cc.

+

Definition at line 1360 of file box_definitions.cc.

@@ -180,7 +180,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 2e1238b610..7798bf87c1 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 f6c89e772e..eb3f12d1ac 100644 --- a/docs/da/d22/key__rotation__fragmenter_8h_source.html +++ b/docs/da/d22/key__rotation__fragmenter_8h_source.html @@ -154,7 +154,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 29874fb9b8..a16ca5a4b1 100644 --- a/docs/da/d27/classedash__packager_1_1media_1_1AudioStreamInfo.html +++ b/docs/da/d27/classedash__packager_1_1media_1_1AudioStreamInfo.html @@ -298,7 +298,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 8d3ef750f1..b896c1f5c7 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 @@ -175,7 +175,7 @@ Additional Inherited Members

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

-

Definition at line 132 of file box_definitions.cc.

+

Definition at line 134 of file box_definitions.cc.

@@ -186,7 +186,7 @@ Additional Inherited Members 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 98f063ea22..4f373808a1 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 30a2aa7a51..72d747fa7a 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 f01dd98401..7197f237e6 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/d47/structedash__packager_1_1media_1_1H264PPS-members.html b/docs/da/d47/structedash__packager_1_1media_1_1H264PPS-members.html index 441e522788..4359e6b579 100644 --- a/docs/da/d47/structedash__packager_1_1media_1_1H264PPS-members.html +++ b/docs/da/d47/structedash__packager_1_1media_1_1H264PPS-members.html @@ -117,7 +117,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d49/classedash__packager_1_1DashIopMpdNotifier.html b/docs/da/d49/classedash__packager_1_1DashIopMpdNotifier.html index 49979102a2..e69931bd77 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 4a66ee51d6..ac03238c2c 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 @@ -161,7 +161,7 @@ Additional Inherited Members

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

-

Definition at line 207 of file box_definitions.cc.

+

Definition at line 209 of file box_definitions.cc.

@@ -172,7 +172,7 @@ Additional Inherited Members diff --git a/docs/da/d54/structedash__packager_1_1media_1_1mp4_1_1CompositionTimeToSample.html b/docs/da/d54/structedash__packager_1_1media_1_1mp4_1_1CompositionTimeToSample.html index 1e9c5ecd6f..8b6fc869ac 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 @@ -169,7 +169,7 @@ Additional Inherited Members

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

-

Definition at line 516 of file box_definitions.cc.

+

Definition at line 518 of file box_definitions.cc.

@@ -180,7 +180,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 275fd2b0ce..26f29844b7 100644 --- a/docs/da/d5c/widevine__key__source_8h_source.html +++ b/docs/da/d5c/widevine__key__source_8h_source.html @@ -217,7 +217,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d60/structedash__packager_1_1media_1_1EncryptionKey-members.html b/docs/da/d60/structedash__packager_1_1media_1_1EncryptionKey-members.html index 669b975a88..618344b3df 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 db0cfffa1e..e1b26cea85 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 201045beb3..565c245622 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/d7a/classedash__packager_1_1media_1_1AVCDecoderConfiguration-members.html b/docs/da/d7a/classedash__packager_1_1media_1_1AVCDecoderConfiguration-members.html index 8bab609bfe..fd1ca07678 100644 --- a/docs/da/d7a/classedash__packager_1_1media_1_1AVCDecoderConfiguration-members.html +++ b/docs/da/d7a/classedash__packager_1_1media_1_1AVCDecoderConfiguration-members.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d7a/fixed__key__encryption__flags_8h_source.html b/docs/da/d7a/fixed__key__encryption__flags_8h_source.html index f7ae65a17f..a050a38948 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 b48261facd..a510e3dd22 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/d81/structedash__packager_1_1media_1_1mp4_1_1ChunkLargeOffset.html b/docs/da/d81/structedash__packager_1_1media_1_1mp4_1_1ChunkLargeOffset.html index 92067bb64f..05999360a3 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 @@ -172,7 +172,7 @@ Additional Inherited Members

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

-

Definition at line 688 of file box_definitions.cc.

+

Definition at line 690 of file box_definitions.cc.

@@ -183,7 +183,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 31332f831c..b2cf3e816e 100644 --- a/docs/da/d88/mp4__muxer_8cc_source.html +++ b/docs/da/d88/mp4__muxer_8cc_source.html @@ -111,292 +111,313 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
22 #include "packager/media/formats/mp4/multi_segment_segmenter.h"
23 #include "packager/media/formats/mp4/single_segment_segmenter.h"
24 
-
25 namespace {
-
26 // Sets the range start and end value from offset and size.
-
27 // |start| and |end| are for byte-range-spec specified in RFC2616.
-
28 void SetStartAndEndFromOffsetAndSize(size_t offset,
-
29  size_t size,
-
30  uint32_t* start,
-
31  uint32_t* end) {
-
32  DCHECK(start && end);
-
33  *start = static_cast<uint32_t>(offset);
-
34  // Note that ranges are inclusive. So we need - 1.
-
35  *end = *start + static_cast<uint32_t>(size) - 1;
-
36 }
-
37 } // namespace
-
38 
-
39 namespace edash_packager {
-
40 namespace media {
-
41 namespace mp4 {
+
25 namespace edash_packager {
+
26 namespace media {
+
27 namespace mp4 {
+
28 
+
29 namespace {
+
30 
+
31 // Sets the range start and end value from offset and size.
+
32 // |start| and |end| are for byte-range-spec specified in RFC2616.
+
33 void SetStartAndEndFromOffsetAndSize(size_t offset,
+
34  size_t size,
+
35  uint32_t* start,
+
36  uint32_t* end) {
+
37  DCHECK(start && end);
+
38  *start = static_cast<uint32_t>(offset);
+
39  // Note that ranges are inclusive. So we need - 1.
+
40  *end = *start + static_cast<uint32_t>(size) - 1;
+
41 }
42 
-
43 MP4Muxer::MP4Muxer(const MuxerOptions& options) : Muxer(options) {}
-
44 MP4Muxer::~MP4Muxer() {}
-
45 
-
46 Status MP4Muxer::Initialize() {
-
47  DCHECK(!streams().empty());
-
48 
-
49  scoped_ptr<FileType> ftyp(new FileType);
-
50  scoped_ptr<Movie> moov(new Movie);
-
51 
-
52  ftyp->major_brand = FOURCC_DASH;
-
53  ftyp->compatible_brands.push_back(FOURCC_ISO6);
-
54  ftyp->compatible_brands.push_back(FOURCC_MP41);
-
55  if (streams().size() == 1 &&
-
56  streams()[0]->info()->stream_type() == kStreamVideo)
-
57  ftyp->compatible_brands.push_back(FOURCC_AVC1);
-
58 
-
59  moov->header.creation_time = IsoTimeNow();
-
60  moov->header.modification_time = IsoTimeNow();
-
61  moov->header.next_track_id = streams().size() + 1;
+
43 FourCC CodecToFourCC(VideoCodec codec) {
+
44  switch (codec) {
+
45  case kCodecH264:
+
46  return FOURCC_AVC1;
+
47  case kCodecVP8:
+
48  return FOURCC_VP08;
+
49  case kCodecVP9:
+
50  return FOURCC_VP09;
+
51  case kCodecVP10:
+
52  return FOURCC_VP10;
+
53  default:
+
54  return FOURCC_NULL;
+
55  }
+
56 }
+
57 
+
58 } // namespace
+
59 
+
60 MP4Muxer::MP4Muxer(const MuxerOptions& options) : Muxer(options) {}
+
61 MP4Muxer::~MP4Muxer() {}
62 
-
63  moov->tracks.resize(streams().size());
-
64  moov->extends.tracks.resize(streams().size());
+
63 Status MP4Muxer::Initialize() {
+
64  DCHECK(!streams().empty());
65 
-
66  // Initialize tracks.
-
67  for (uint32_t i = 0; i < streams().size(); ++i) {
-
68  Track& trak = moov->tracks[i];
-
69  trak.header.track_id = i + 1;
-
70 
-
71  TrackExtends& trex = moov->extends.tracks[i];
-
72  trex.track_id = trak.header.track_id;
-
73  trex.default_sample_description_index = 1;
-
74 
-
75  switch (streams()[i]->info()->stream_type()) {
-
76  case kStreamVideo:
-
77  GenerateVideoTrak(
-
78  static_cast<VideoStreamInfo*>(streams()[i]->info().get()),
-
79  &trak,
-
80  i + 1);
-
81  break;
-
82  case kStreamAudio:
-
83  GenerateAudioTrak(
-
84  static_cast<AudioStreamInfo*>(streams()[i]->info().get()),
-
85  &trak,
-
86  i + 1);
-
87  break;
-
88  default:
-
89  NOTIMPLEMENTED() << "Not implemented for stream type: "
-
90  << streams()[i]->info()->stream_type();
-
91  }
-
92  }
-
93 
-
94  if (options().single_segment) {
-
95  segmenter_.reset(
-
96  new SingleSegmentSegmenter(options(), ftyp.Pass(), moov.Pass()));
-
97  } else {
-
98  segmenter_.reset(
-
99  new MultiSegmentSegmenter(options(), ftyp.Pass(), moov.Pass()));
-
100  }
-
101 
-
102  Status segmenter_initialized =
-
103  segmenter_->Initialize(streams(),
-
104  muxer_listener(),
-
105  progress_listener(),
-
106  encryption_key_source(),
-
107  max_sd_pixels(),
-
108  clear_lead_in_seconds(),
-
109  crypto_period_duration_in_seconds());
-
110 
-
111  if (!segmenter_initialized.ok())
-
112  return segmenter_initialized;
-
113 
-
114  FireOnMediaStartEvent();
-
115  return Status::OK;
-
116 }
-
117 
-
118 Status MP4Muxer::Finalize() {
-
119  DCHECK(segmenter_);
-
120  Status segmenter_finalized = segmenter_->Finalize();
-
121 
-
122  if (!segmenter_finalized.ok())
-
123  return segmenter_finalized;
-
124 
-
125  FireOnMediaEndEvent();
-
126  LOG(INFO) << "MP4 file '" << options().output_file_name << "' finalized.";
-
127  return Status::OK;
-
128 }
-
129 
-
130 Status MP4Muxer::DoAddSample(const MediaStream* stream,
-
131  scoped_refptr<MediaSample> sample) {
-
132  DCHECK(segmenter_);
-
133  return segmenter_->AddSample(stream, sample);
-
134 }
-
135 
-
136 void MP4Muxer::InitializeTrak(const StreamInfo* info, Track* trak) {
-
137  int64_t now = IsoTimeNow();
-
138  trak->header.creation_time = now;
-
139  trak->header.modification_time = now;
-
140  trak->header.duration = 0;
-
141  trak->media.header.creation_time = now;
-
142  trak->media.header.modification_time = now;
-
143  trak->media.header.timescale = info->time_scale();
-
144  trak->media.header.duration = 0;
-
145  if (!info->language().empty()) {
-
146  const size_t language_size = arraysize(trak->media.header.language) - 1;
-
147  if (info->language().size() != language_size) {
-
148  LOG(WARNING) << "'" << info->language() << "' is not a valid ISO-639-2 "
-
149  << "language code, ignoring.";
-
150  } else {
-
151  memcpy(trak->media.header.language, info->language().c_str(),
-
152  language_size + 1);
-
153  }
-
154  }
+
66  scoped_ptr<FileType> ftyp(new FileType);
+
67  scoped_ptr<Movie> moov(new Movie);
+
68 
+
69  ftyp->major_brand = FOURCC_DASH;
+
70  ftyp->compatible_brands.push_back(FOURCC_ISO6);
+
71  ftyp->compatible_brands.push_back(FOURCC_MP41);
+
72  if (streams().size() == 1 &&
+
73  streams()[0]->info()->stream_type() == kStreamVideo) {
+
74  const FourCC codec_fourcc = CodecToFourCC(
+
75  static_cast<VideoStreamInfo*>(streams()[0]->info().get())->codec());
+
76  if (codec_fourcc != FOURCC_NULL)
+
77  ftyp->compatible_brands.push_back(codec_fourcc);
+
78  }
+
79 
+
80  moov->header.creation_time = IsoTimeNow();
+
81  moov->header.modification_time = IsoTimeNow();
+
82  moov->header.next_track_id = streams().size() + 1;
+
83 
+
84  moov->tracks.resize(streams().size());
+
85  moov->extends.tracks.resize(streams().size());
+
86 
+
87  // Initialize tracks.
+
88  for (uint32_t i = 0; i < streams().size(); ++i) {
+
89  Track& trak = moov->tracks[i];
+
90  trak.header.track_id = i + 1;
+
91 
+
92  TrackExtends& trex = moov->extends.tracks[i];
+
93  trex.track_id = trak.header.track_id;
+
94  trex.default_sample_description_index = 1;
+
95 
+
96  switch (streams()[i]->info()->stream_type()) {
+
97  case kStreamVideo:
+
98  GenerateVideoTrak(
+
99  static_cast<VideoStreamInfo*>(streams()[i]->info().get()),
+
100  &trak,
+
101  i + 1);
+
102  break;
+
103  case kStreamAudio:
+
104  GenerateAudioTrak(
+
105  static_cast<AudioStreamInfo*>(streams()[i]->info().get()),
+
106  &trak,
+
107  i + 1);
+
108  break;
+
109  default:
+
110  NOTIMPLEMENTED() << "Not implemented for stream type: "
+
111  << streams()[i]->info()->stream_type();
+
112  }
+
113  }
+
114 
+
115  if (options().single_segment) {
+
116  segmenter_.reset(
+
117  new SingleSegmentSegmenter(options(), ftyp.Pass(), moov.Pass()));
+
118  } else {
+
119  segmenter_.reset(
+
120  new MultiSegmentSegmenter(options(), ftyp.Pass(), moov.Pass()));
+
121  }
+
122 
+
123  Status segmenter_initialized =
+
124  segmenter_->Initialize(streams(),
+
125  muxer_listener(),
+
126  progress_listener(),
+
127  encryption_key_source(),
+
128  max_sd_pixels(),
+
129  clear_lead_in_seconds(),
+
130  crypto_period_duration_in_seconds());
+
131 
+
132  if (!segmenter_initialized.ok())
+
133  return segmenter_initialized;
+
134 
+
135  FireOnMediaStartEvent();
+
136  return Status::OK;
+
137 }
+
138 
+
139 Status MP4Muxer::Finalize() {
+
140  DCHECK(segmenter_);
+
141  Status segmenter_finalized = segmenter_->Finalize();
+
142 
+
143  if (!segmenter_finalized.ok())
+
144  return segmenter_finalized;
+
145 
+
146  FireOnMediaEndEvent();
+
147  LOG(INFO) << "MP4 file '" << options().output_file_name << "' finalized.";
+
148  return Status::OK;
+
149 }
+
150 
+
151 Status MP4Muxer::DoAddSample(const MediaStream* stream,
+
152  scoped_refptr<MediaSample> sample) {
+
153  DCHECK(segmenter_);
+
154  return segmenter_->AddSample(stream, sample);
155 }
156 
-
157 void MP4Muxer::GenerateVideoTrak(const VideoStreamInfo* video_info,
-
158  Track* trak,
-
159  uint32_t track_id) {
-
160  InitializeTrak(video_info, trak);
-
161 
-
162  // width and height specify the track's visual presentation size as
-
163  // fixed-point 16.16 values.
-
164  uint32_t pixel_width = video_info->pixel_width();
-
165  uint32_t pixel_height = video_info->pixel_height();
-
166  if (pixel_width == 0 || pixel_height == 0) {
-
167  LOG(WARNING) << "pixel width/height are not set. Assuming 1:1.";
-
168  pixel_width = 1;
-
169  pixel_height = 1;
-
170  }
-
171  const double sample_aspect_ratio =
-
172  static_cast<double>(pixel_width) / pixel_height;
-
173  trak->header.width = video_info->width() * sample_aspect_ratio * 0x10000;
-
174  trak->header.height = video_info->height() * 0x10000;
-
175 
-
176  trak->media.handler.type = kVideo;
+
157 void MP4Muxer::InitializeTrak(const StreamInfo* info, Track* trak) {
+
158  int64_t now = IsoTimeNow();
+
159  trak->header.creation_time = now;
+
160  trak->header.modification_time = now;
+
161  trak->header.duration = 0;
+
162  trak->media.header.creation_time = now;
+
163  trak->media.header.modification_time = now;
+
164  trak->media.header.timescale = info->time_scale();
+
165  trak->media.header.duration = 0;
+
166  if (!info->language().empty()) {
+
167  const size_t language_size = arraysize(trak->media.header.language) - 1;
+
168  if (info->language().size() != language_size) {
+
169  LOG(WARNING) << "'" << info->language() << "' is not a valid ISO-639-2 "
+
170  << "language code, ignoring.";
+
171  } else {
+
172  memcpy(trak->media.header.language, info->language().c_str(),
+
173  language_size + 1);
+
174  }
+
175  }
+
176 }
177 
-
178  VideoSampleEntry video;
-
179  video.format = FOURCC_AVC1;
-
180  video.width = video_info->width();
-
181  video.height = video_info->height();
-
182  video.codec_config_record.data = video_info->extra_data();
-
183  if (pixel_width != 1 || pixel_height != 1) {
-
184  video.pixel_aspect.h_spacing = pixel_width;
-
185  video.pixel_aspect.v_spacing = pixel_height;
-
186  }
-
187 
-
188  SampleDescription& sample_description =
-
189  trak->media.information.sample_table.description;
-
190  sample_description.type = kVideo;
-
191  sample_description.video_entries.push_back(video);
-
192 }
-
193 
-
194 void MP4Muxer::GenerateAudioTrak(const AudioStreamInfo* audio_info,
-
195  Track* trak,
-
196  uint32_t track_id) {
-
197  InitializeTrak(audio_info, trak);
+
178 void MP4Muxer::GenerateVideoTrak(const VideoStreamInfo* video_info,
+
179  Track* trak,
+
180  uint32_t track_id) {
+
181  InitializeTrak(video_info, trak);
+
182 
+
183  // width and height specify the track's visual presentation size as
+
184  // fixed-point 16.16 values.
+
185  uint32_t pixel_width = video_info->pixel_width();
+
186  uint32_t pixel_height = video_info->pixel_height();
+
187  if (pixel_width == 0 || pixel_height == 0) {
+
188  LOG(WARNING) << "pixel width/height are not set. Assuming 1:1.";
+
189  pixel_width = 1;
+
190  pixel_height = 1;
+
191  }
+
192  const double sample_aspect_ratio =
+
193  static_cast<double>(pixel_width) / pixel_height;
+
194  trak->header.width = video_info->width() * sample_aspect_ratio * 0x10000;
+
195  trak->header.height = video_info->height() * 0x10000;
+
196 
+
197  trak->media.handler.type = kVideo;
198 
-
199  trak->header.volume = 0x100;
-
200  trak->media.handler.type = kAudio;
-
201 
-
202  AudioSampleEntry audio;
-
203  audio.format = FOURCC_MP4A;
-
204  audio.channelcount = audio_info->num_channels();
-
205  audio.samplesize = audio_info->sample_bits();
-
206  audio.samplerate = audio_info->sampling_frequency();
-
207 
-
208  if (kCodecAAC) {
-
209  audio.esds.es_descriptor.set_object_type(kISO_14496_3); // MPEG4 AAC.
-
210  } else {
-
211  // Do we need to support other types?
-
212  NOTIMPLEMENTED();
-
213  }
-
214  audio.esds.es_descriptor.set_esid(track_id);
-
215  audio.esds.es_descriptor.set_decoder_specific_info(audio_info->extra_data());
-
216 
-
217  SampleDescription& sample_description =
-
218  trak->media.information.sample_table.description;
-
219  sample_description.type = kAudio;
-
220  sample_description.audio_entries.push_back(audio);
-
221 }
+
199  VideoSampleEntry video;
+
200  video.format = CodecToFourCC(video_info->codec());
+
201  video.width = video_info->width();
+
202  video.height = video_info->height();
+
203  video.codec_config_record.data = video_info->extra_data();
+
204  if (pixel_width != 1 || pixel_height != 1) {
+
205  video.pixel_aspect.h_spacing = pixel_width;
+
206  video.pixel_aspect.v_spacing = pixel_height;
+
207  }
+
208 
+
209  SampleDescription& sample_description =
+
210  trak->media.information.sample_table.description;
+
211  sample_description.type = kVideo;
+
212  sample_description.video_entries.push_back(video);
+
213 }
+
214 
+
215 void MP4Muxer::GenerateAudioTrak(const AudioStreamInfo* audio_info,
+
216  Track* trak,
+
217  uint32_t track_id) {
+
218  InitializeTrak(audio_info, trak);
+
219 
+
220  trak->header.volume = 0x100;
+
221  trak->media.handler.type = kAudio;
222 
-
223 bool MP4Muxer::GetInitRangeStartAndEnd(uint32_t* start, uint32_t* end) {
-
224  DCHECK(start && end);
-
225  size_t range_offset = 0;
-
226  size_t range_size = 0;
-
227  const bool has_range = segmenter_->GetInitRange(&range_offset, &range_size);
+
223  AudioSampleEntry audio;
+
224  audio.format = FOURCC_MP4A;
+
225  audio.channelcount = audio_info->num_channels();
+
226  audio.samplesize = audio_info->sample_bits();
+
227  audio.samplerate = audio_info->sampling_frequency();
228 
-
229  if (!has_range)
-
230  return false;
-
231 
-
232  SetStartAndEndFromOffsetAndSize(range_offset, range_size, start, end);
-
233  return true;
-
234 }
-
235 
-
236 bool MP4Muxer::GetIndexRangeStartAndEnd(uint32_t* start, uint32_t* end) {
-
237  DCHECK(start && end);
-
238  size_t range_offset = 0;
-
239  size_t range_size = 0;
-
240  const bool has_range = segmenter_->GetIndexRange(&range_offset, &range_size);
-
241 
-
242  if (!has_range)
-
243  return false;
-
244 
-
245  SetStartAndEndFromOffsetAndSize(range_offset, range_size, start, end);
-
246  return true;
-
247 }
-
248 
-
249 void MP4Muxer::FireOnMediaStartEvent() {
-
250  if (!muxer_listener())
-
251  return;
+
229  if (kCodecAAC) {
+
230  audio.esds.es_descriptor.set_object_type(kISO_14496_3); // MPEG4 AAC.
+
231  } else {
+
232  // Do we need to support other types?
+
233  NOTIMPLEMENTED();
+
234  }
+
235  audio.esds.es_descriptor.set_esid(track_id);
+
236  audio.esds.es_descriptor.set_decoder_specific_info(audio_info->extra_data());
+
237 
+
238  SampleDescription& sample_description =
+
239  trak->media.information.sample_table.description;
+
240  sample_description.type = kAudio;
+
241  sample_description.audio_entries.push_back(audio);
+
242 }
+
243 
+
244 bool MP4Muxer::GetInitRangeStartAndEnd(uint32_t* start, uint32_t* end) {
+
245  DCHECK(start && end);
+
246  size_t range_offset = 0;
+
247  size_t range_size = 0;
+
248  const bool has_range = segmenter_->GetInitRange(&range_offset, &range_size);
+
249 
+
250  if (!has_range)
+
251  return false;
252 
-
253  if (streams().size() > 1) {
-
254  LOG(ERROR) << "MuxerListener cannot take more than 1 stream.";
-
255  return;
-
256  }
-
257  DCHECK(!streams().empty()) << "Media started without a stream.";
-
258 
-
259  const uint32_t timescale = segmenter_->GetReferenceTimeScale();
-
260  muxer_listener()->OnMediaStart(options(),
-
261  *streams().front()->info(),
-
262  timescale,
-
263  MuxerListener::kContainerMp4);
-
264 }
+
253  SetStartAndEndFromOffsetAndSize(range_offset, range_size, start, end);
+
254  return true;
+
255 }
+
256 
+
257 bool MP4Muxer::GetIndexRangeStartAndEnd(uint32_t* start, uint32_t* end) {
+
258  DCHECK(start && end);
+
259  size_t range_offset = 0;
+
260  size_t range_size = 0;
+
261  const bool has_range = segmenter_->GetIndexRange(&range_offset, &range_size);
+
262 
+
263  if (!has_range)
+
264  return false;
265 
-
266 void MP4Muxer::FireOnMediaEndEvent() {
-
267  if (!muxer_listener())
-
268  return;
+
266  SetStartAndEndFromOffsetAndSize(range_offset, range_size, start, end);
+
267  return true;
+
268 }
269 
-
270  uint32_t init_range_start = 0;
-
271  uint32_t init_range_end = 0;
-
272  const bool has_init_range =
-
273  GetInitRangeStartAndEnd(&init_range_start, &init_range_end);
-
274 
-
275  uint32_t index_range_start = 0;
-
276  uint32_t index_range_end = 0;
-
277  const bool has_index_range =
-
278  GetIndexRangeStartAndEnd(&index_range_start, &index_range_end);
+
270 void MP4Muxer::FireOnMediaStartEvent() {
+
271  if (!muxer_listener())
+
272  return;
+
273 
+
274  if (streams().size() > 1) {
+
275  LOG(ERROR) << "MuxerListener cannot take more than 1 stream.";
+
276  return;
+
277  }
+
278  DCHECK(!streams().empty()) << "Media started without a stream.";
279 
-
280  const float duration_seconds = static_cast<float>(segmenter_->GetDuration());
-
281 
-
282  const int64_t file_size =
-
283  File::GetFileSize(options().output_file_name.c_str());
-
284  if (file_size <= 0) {
-
285  LOG(ERROR) << "Invalid file size: " << file_size;
-
286  return;
-
287  }
-
288 
-
289  muxer_listener()->OnMediaEnd(has_init_range,
-
290  init_range_start,
-
291  init_range_end,
-
292  has_index_range,
-
293  index_range_start,
-
294  index_range_end,
-
295  duration_seconds,
-
296  file_size);
-
297 }
-
298 
-
299 uint64_t MP4Muxer::IsoTimeNow() {
-
300  // Time in seconds from Jan. 1, 1904 to epoch time, i.e. Jan. 1, 1970.
-
301  const uint64_t kIsomTimeOffset = 2082844800l;
-
302  return kIsomTimeOffset +
-
303  (clock() ? clock()->Now() : base::Time::Now()).ToDoubleT();
-
304 }
-
305 
-
306 } // namespace mp4
-
307 } // namespace media
-
308 } // namespace edash_packager
+
280  const uint32_t timescale = segmenter_->GetReferenceTimeScale();
+
281  muxer_listener()->OnMediaStart(options(),
+
282  *streams().front()->info(),
+
283  timescale,
+
284  MuxerListener::kContainerMp4);
+
285 }
+
286 
+
287 void MP4Muxer::FireOnMediaEndEvent() {
+
288  if (!muxer_listener())
+
289  return;
+
290 
+
291  uint32_t init_range_start = 0;
+
292  uint32_t init_range_end = 0;
+
293  const bool has_init_range =
+
294  GetInitRangeStartAndEnd(&init_range_start, &init_range_end);
+
295 
+
296  uint32_t index_range_start = 0;
+
297  uint32_t index_range_end = 0;
+
298  const bool has_index_range =
+
299  GetIndexRangeStartAndEnd(&index_range_start, &index_range_end);
+
300 
+
301  const float duration_seconds = static_cast<float>(segmenter_->GetDuration());
+
302 
+
303  const int64_t file_size =
+
304  File::GetFileSize(options().output_file_name.c_str());
+
305  if (file_size <= 0) {
+
306  LOG(ERROR) << "Invalid file size: " << file_size;
+
307  return;
+
308  }
+
309 
+
310  muxer_listener()->OnMediaEnd(has_init_range,
+
311  init_range_start,
+
312  init_range_end,
+
313  has_index_range,
+
314  index_range_start,
+
315  index_range_end,
+
316  duration_seconds,
+
317  file_size);
+
318 }
+
319 
+
320 uint64_t MP4Muxer::IsoTimeNow() {
+
321  // Time in seconds from Jan. 1, 1904 to epoch time, i.e. Jan. 1, 1970.
+
322  const uint64_t kIsomTimeOffset = 2082844800l;
+
323  return kIsomTimeOffset +
+
324  (clock() ? clock()->Now() : base::Time::Now()).ToDoubleT();
+
325 }
+
326 
+
327 } // namespace mp4
+
328 } // namespace media
+
329 } // namespace edash_packager
-
MP4Muxer(const MuxerOptions &options)
Create a MP4Muxer object from MuxerOptions.
Definition: mp4_muxer.cc:43
+
MP4Muxer(const MuxerOptions &options)
Create a MP4Muxer object from MuxerOptions.
Definition: mp4_muxer.cc:60
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
@@ -404,7 +425,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 56cd69fa30..5fef07eca1 100644 --- a/docs/da/d8e/container__names_8cc_source.html +++ b/docs/da/d8e/container__names_8cc_source.html @@ -1763,7 +1763,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 599a2eff30..1712b85729 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 @@ -169,7 +169,7 @@ Additional Inherited Members

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

-

Definition at line 1178 of file box_definitions.cc.

+

Definition at line 1206 of file box_definitions.cc.

@@ -180,7 +180,7 @@ Additional Inherited Members diff --git a/docs/da/dc3/status_8cc_source.html b/docs/da/dc3/status_8cc_source.html index 9c677ebc11..d1d4b9e777 100644 --- a/docs/da/dc3/status_8cc_source.html +++ b/docs/da/dc3/status_8cc_source.html @@ -167,7 +167,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 67d82ec7dc..4117664dd5 100644 --- a/docs/da/dcb/es__descriptor_8h_source.html +++ b/docs/da/dcb/es__descriptor_8h_source.html @@ -172,7 +172,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 0346ea78e8..370aa17014 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 0875060cef..9ec5bcaaaa 100644 --- a/docs/da/dd1/fragmenter_8h_source.html +++ b/docs/da/dd1/fragmenter_8h_source.html @@ -198,7 +198,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/de2/mock__mpd__builder_8cc_source.html b/docs/da/de2/mock__mpd__builder_8cc_source.html index 904cbd05cd..51a323eae9 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 c09bbe00b9..0702911eba 100644 --- a/docs/da/de4/classedash__packager_1_1media_1_1AudioTimestampHelper.html +++ b/docs/da/de4/classedash__packager_1_1media_1_1AudioTimestampHelper.html @@ -131,7 +131,7 @@ int64_t GetFramesToTarget< diff --git a/docs/da/dfe/structedash__packager_1_1media_1_1mp4_1_1CompositionOffset.html b/docs/da/dfe/structedash__packager_1_1media_1_1mp4_1_1CompositionOffset.html index af33568014..b62f9f1ed8 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 @@ -112,7 +112,7 @@ int64_t sample_offset< diff --git a/docs/db/d01/avc__decoder__configuration_8cc_source.html b/docs/db/d01/avc__decoder__configuration_8cc_source.html index e790fd1978..3f29064696 100644 --- a/docs/db/d01/avc__decoder__configuration_8cc_source.html +++ b/docs/db/d01/avc__decoder__configuration_8cc_source.html @@ -171,7 +171,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d01/classedash__packager_1_1media_1_1mp4_1_1SyncSampleIterator.html b/docs/db/d01/classedash__packager_1_1media_1_1mp4_1_1SyncSampleIterator.html index 4802525b68..1fd01b01c7 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 6a28ed6794..92d405f1b6 100644 --- a/docs/db/d09/namespaceedash__packager.html +++ b/docs/db/d09/namespaceedash__packager.html @@ -550,7 +550,7 @@ const char kEncryptedMp4Va diff --git a/docs/db/d11/classedash__packager_1_1media_1_1ContentEncoding-members.html b/docs/db/d11/classedash__packager_1_1media_1_1ContentEncoding-members.html index ce9740937f..f2c22f6129 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 b89a77d8f7..620e769fbc 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 @@ -111,7 +111,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 836e684552..88e3cc7f0b 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 c3610f47ed..e6f3d566db 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 d1590fec03..4e785593ef 100644 --- a/docs/db/d2e/classedash__packager_1_1MockMpdBuilder.html +++ b/docs/db/d2e/classedash__packager_1_1MockMpdBuilder.html @@ -149,7 +149,7 @@ Additional Inherited Members diff --git a/docs/db/d31/track__run__iterator_8cc_source.html b/docs/db/d31/track__run__iterator_8cc_source.html index cc50747739..26a6b54d8b 100644 --- a/docs/db/d31/track__run__iterator_8cc_source.html +++ b/docs/db/d31/track__run__iterator_8cc_source.html @@ -699,7 +699,7 @@ 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 b6df493c42..40005ed335 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 @@ -111,7 +111,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 31a4050a38..a3b5e1e7ff 100644 --- a/docs/db/d45/mpd__notify__muxer__listener_8h_source.html +++ b/docs/db/d45/mpd__notify__muxer__listener_8h_source.html @@ -186,7 +186,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d49/multi__segment__segmenter_8h_source.html b/docs/db/d49/multi__segment__segmenter_8h_source.html index 2998f9f212..566dddf75b 100644 --- a/docs/db/d49/multi__segment__segmenter_8h_source.html +++ b/docs/db/d49/multi__segment__segmenter_8h_source.html @@ -143,7 +143,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 2822c3d7ff..3b7adbdc4f 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 5e06de11ef..90156574d8 100644 --- a/docs/db/d51/mp2t__media__parser_8h_source.html +++ b/docs/db/d51/mp2t__media__parser_8h_source.html @@ -195,7 +195,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d56/classedash__packager_1_1SimpleMpdNotifier.html b/docs/db/d56/classedash__packager_1_1SimpleMpdNotifier.html index 4e2559c06e..68e8497d19 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/d60/mpd__options_8h_source.html b/docs/db/d60/mpd__options_8h_source.html index cecc833073..894a2d1044 100644 --- a/docs/db/d60/mpd__options_8h_source.html +++ b/docs/db/d60/mpd__options_8h_source.html @@ -124,7 +124,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 973c5b1317..80b9f70747 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/d69/classedash__packager_1_1media_1_1mp2t_1_1AdtsHeader.html b/docs/db/d69/classedash__packager_1_1media_1_1mp2t_1_1AdtsHeader.html index e701f53802..521d45c1c3 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/d6c/classedash__packager_1_1media_1_1mp4_1_1BoxReader.html b/docs/db/d6c/classedash__packager_1_1media_1_1mp4_1_1BoxReader.html index 3d9705f5fa..372eba8a39 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 @@ -494,7 +494,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 b4fdcb92bd..657f080b59 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 dcd4ac4325..1535b1d0a2 100644 --- a/docs/db/d79/structedash__packager_1_1media_1_1mp4_1_1EditListEntry-members.html +++ b/docs/db/d79/structedash__packager_1_1media_1_1mp4_1_1EditListEntry-members.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d7e/muxer__options_8cc_source.html b/docs/db/d7e/muxer__options_8cc_source.html index 203733ed74..c226b86fc3 100644 --- a/docs/db/d7e/muxer__options_8cc_source.html +++ b/docs/db/d7e/muxer__options_8cc_source.html @@ -113,7 +113,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 c9c5aa4506..35f60d8c7f 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 @@ -172,7 +172,7 @@ Additional Inherited Members

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

-

Definition at line 633 of file box_definitions.cc.

+

Definition at line 635 of file box_definitions.cc.

@@ -183,7 +183,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 1e3891f48a..c0461fc382 100644 --- a/docs/db/d8f/mp4__muxer_8h_source.html +++ b/docs/db/d8f/mp4__muxer_8h_source.html @@ -162,20 +162,20 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
76 } // namespace edash_packager
77 
78 #endif // MEDIA_FORMATS_MP4_MP4_MUXER_H_
-
MP4Muxer(const MuxerOptions &options)
Create a MP4Muxer object from MuxerOptions.
Definition: mp4_muxer.cc:43
+
MP4Muxer(const MuxerOptions &options)
Create a MP4Muxer object from MuxerOptions.
Definition: mp4_muxer.cc:60
Holds audio stream information.
Abstract class holds stream information.
Definition: stream_info.h:26
-
Holds video stream information.
+
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 f54830e178..1b99437b84 100644 --- a/docs/db/d96/wvm__media__parser_8h_source.html +++ b/docs/db/d96/wvm__media__parser_8h_source.html @@ -365,7 +365,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d97/classedash__packager_1_1media_1_1WebMContentEncodingsClient-members.html b/docs/db/d97/classedash__packager_1_1media_1_1WebMContentEncodingsClient-members.html index 92d8bb92f9..4eccfee24f 100644 --- a/docs/db/d97/classedash__packager_1_1media_1_1WebMContentEncodingsClient-members.html +++ b/docs/db/d97/classedash__packager_1_1media_1_1WebMContentEncodingsClient-members.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/da0/classedash__packager_1_1media_1_1WebMClusterParser.html b/docs/db/da0/classedash__packager_1_1media_1_1WebMClusterParser.html index 618533dbc5..26a968f0a3 100644 --- a/docs/db/da0/classedash__packager_1_1media_1_1WebMClusterParser.html +++ b/docs/db/da0/classedash__packager_1_1media_1_1WebMClusterParser.html @@ -272,7 +272,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 ad49bf663c..faaf0eecf2 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 8a950b76e0..83be6a21b0 100644 --- a/docs/db/da4/classedash__packager_1_1media_1_1WidevineKeySource.html +++ b/docs/db/da4/classedash__packager_1_1media_1_1WidevineKeySource.html @@ -559,7 +559,7 @@ static std::string  diff --git a/docs/db/da5/structedash__packager_1_1media_1_1mp4_1_1CencSampleEncryptionInfoEntry-members.html b/docs/db/da5/structedash__packager_1_1media_1_1mp4_1_1CencSampleEncryptionInfoEntry-members.html index be2bf80eb9..5354896b3e 100644 --- a/docs/db/da5/structedash__packager_1_1media_1_1mp4_1_1CencSampleEncryptionInfoEntry-members.html +++ b/docs/db/da5/structedash__packager_1_1media_1_1mp4_1_1CencSampleEncryptionInfoEntry-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/dae/classedash__packager_1_1media_1_1mp4_1_1Fragmenter.html b/docs/db/dae/classedash__packager_1_1media_1_1mp4_1_1Fragmenter.html index 48c704c445..b1e5725b6c 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 @@ -302,7 +302,7 @@ template<typename 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 82c6286224..bea0ec5846 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/dd2/chunk__info__iterator_8h_source.html b/docs/db/dd2/chunk__info__iterator_8h_source.html index cc562440c8..d584426459 100644 --- a/docs/db/dd2/chunk__info__iterator_8h_source.html +++ b/docs/db/dd2/chunk__info__iterator_8h_source.html @@ -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 0ceeef583d..f49726f1b5 100644 --- a/docs/db/dd9/sync__sample__iterator_8h_source.html +++ b/docs/db/dd9/sync__sample__iterator_8h_source.html @@ -140,7 +140,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 62727a072d..a4b4bdad3b 100644 --- a/docs/db/de4/classedash__packager_1_1AdaptationSet.html +++ b/docs/db/de4/classedash__packager_1_1AdaptationSet.html @@ -574,7 +574,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 6dd1421ccf..2cf1e2cbf9 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 7aa926613a..422a064a23 100644 --- a/docs/db/dec/audio__timestamp__helper_8cc_source.html +++ b/docs/db/dec/audio__timestamp__helper_8cc_source.html @@ -165,7 +165,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/ded/opus__packet__builder_8cc_source.html b/docs/db/ded/opus__packet__builder_8cc_source.html index 5ba8201b94..a1e0661ff8 100644 --- a/docs/db/ded/opus__packet__builder_8cc_source.html +++ b/docs/db/ded/opus__packet__builder_8cc_source.html @@ -182,7 +182,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/df2/classedash__packager_1_1media_1_1mp2t_1_1EsParser.html b/docs/db/df2/classedash__packager_1_1media_1_1mp2t_1_1EsParser.html index e8e578a928..89d4189c22 100644 --- a/docs/db/df2/classedash__packager_1_1media_1_1mp2t_1_1EsParser.html +++ b/docs/db/df2/classedash__packager_1_1media_1_1mp2t_1_1EsParser.html @@ -144,7 +144,7 @@ uint32_t pid () diff --git a/docs/db/df6/muxer_8h_source.html b/docs/db/df6/muxer_8h_source.html index e80d8f3a4b..49eb4d53cc 100644 --- a/docs/db/df6/muxer_8h_source.html +++ b/docs/db/df6/muxer_8h_source.html @@ -208,7 +208,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/df7/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPsi-members.html b/docs/db/df7/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPsi-members.html index 478353095f..f6724ff73a 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 605479bce5..f7cc57a32a 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 @@ -178,7 +178,7 @@ Additional Inherited Members

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

-

Definition at line 1162 of file box_definitions.cc.

+

Definition at line 1190 of file box_definitions.cc.

@@ -189,7 +189,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 508dcc26b0..6c6d358d3e 100644 --- a/docs/db/dfb/mpd__utils_8cc_source.html +++ b/docs/db/dfb/mpd__utils_8cc_source.html @@ -358,7 +358,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 a0465df850..9da702e43d 100644 --- a/docs/db/dfc/mpd__notify__muxer__listener_8cc_source.html +++ b/docs/db/dfc/mpd__notify__muxer__listener_8cc_source.html @@ -265,7 +265,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/dfe/classedash__packager_1_1media_1_1AesCbcPkcs5Decryptor.html b/docs/db/dfe/classedash__packager_1_1media_1_1AesCbcPkcs5Decryptor.html index 7413777a12..885488e897 100644 --- a/docs/db/dfe/classedash__packager_1_1media_1_1AesCbcPkcs5Decryptor.html +++ b/docs/db/dfe/classedash__packager_1_1media_1_1AesCbcPkcs5Decryptor.html @@ -209,7 +209,7 @@ const std::vector< uint8_t > &  diff --git a/docs/dc/d05/classedash__packager_1_1xml_1_1RepresentationXmlNode.html b/docs/dc/d05/classedash__packager_1_1xml_1_1RepresentationXmlNode.html index 71c13d4435..f924466390 100644 --- a/docs/dc/d05/classedash__packager_1_1xml_1_1RepresentationXmlNode.html +++ b/docs/dc/d05/classedash__packager_1_1xml_1_1RepresentationXmlNode.html @@ -286,7 +286,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 a6e8513dbb..82b47d0182 100644 --- a/docs/dc/d0c/classedash__packager_1_1media_1_1WebMVideoClient.html +++ b/docs/dc/d0c/classedash__packager_1_1media_1_1WebMVideoClient.html @@ -179,7 +179,7 @@ Additional Inherited Members
An empty scoped_refptr if there was unexpected values in the provided parameters or video track element fields.
-

Definition at line 49 of file webm_video_client.cc.

+

Definition at line 51 of file webm_video_client.cc.

@@ -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 93b7eda3c0..e9bcb3ce36 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 38990d1e08..6db3fcb705 100644 --- a/docs/dc/d19/box_8h_source.html +++ b/docs/dc/d19/box_8h_source.html @@ -158,7 +158,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 e8bbcf6e9e..3d7af65990 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 9c1cfa8f69..5fb6fc6b06 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 3317152020..79f980f433 100644 --- a/docs/dc/d2f/classedash__packager_1_1media_1_1KeySource-members.html +++ b/docs/dc/d2f/classedash__packager_1_1media_1_1KeySource-members.html @@ -117,7 +117,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d31/classedash__packager_1_1media_1_1ClusterBuilder-members.html b/docs/dc/d31/classedash__packager_1_1media_1_1ClusterBuilder-members.html index 73894ecf8e..c00270297c 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 76fc0ef0bc..20a60d02c8 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 0ec6f6d05a..f69973691b 100644 --- a/docs/dc/d3b/fixed__key__encryption__flags_8cc_source.html +++ b/docs/dc/d3b/fixed__key__encryption__flags_8cc_source.html @@ -153,7 +153,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d3c/webm__cluster__parser_8h_source.html b/docs/dc/d3c/webm__cluster__parser_8h_source.html index 5b367368b8..6fbc439e8c 100644 --- a/docs/dc/d3c/webm__cluster__parser_8h_source.html +++ b/docs/dc/d3c/webm__cluster__parser_8h_source.html @@ -312,7 +312,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 13ea7ed246..6949a6d875 100644 --- a/docs/dc/d3f/key__source_8h_source.html +++ b/docs/dc/d3f/key__source_8h_source.html @@ -189,7 +189,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d41/classedash__packager_1_1xml_1_1RepresentationXmlNode-members.html b/docs/dc/d41/classedash__packager_1_1xml_1_1RepresentationXmlNode-members.html index cce8c415c4..e5f0a933b1 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 599b263a07..b2b2b70b86 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 e710ca7dd4..b4c02c34d1 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 6f198c9b67..816abd72c3 100644 --- a/docs/dc/d48/classedash__packager_1_1media_1_1MediaParser.html +++ b/docs/dc/d48/classedash__packager_1_1media_1_1MediaParser.html @@ -296,7 +296,7 @@ Public Member Functions diff --git a/docs/dc/d52/decoding__time__iterator_8h_source.html b/docs/dc/d52/decoding__time__iterator_8h_source.html index 26352f4765..d6b1cb690c 100644 --- a/docs/dc/d52/decoding__time__iterator_8h_source.html +++ b/docs/dc/d52/decoding__time__iterator_8h_source.html @@ -147,7 +147,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d55/structedash__packager_1_1media_1_1H264SEIMessage-members.html b/docs/dc/d55/structedash__packager_1_1media_1_1H264SEIMessage-members.html index 517843ef7b..8342a5fad5 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 64ae0da85f..4a2a320e6b 100644 --- a/docs/dc/d58/webm__media__parser_8h_source.html +++ b/docs/dc/d58/webm__media__parser_8h_source.html @@ -177,7 +177,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d73/classedash__packager_1_1media_1_1RequestSigner.html b/docs/dc/d73/classedash__packager_1_1media_1_1RequestSigner.html index a79b465d8a..a3cdcf297e 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 701353bcd9..de0874004d 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 3e04b291d6..864564b5de 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 3ee8053217..443f6f1c98 100644 --- a/docs/dc/d7b/h264__parser_8cc_source.html +++ b/docs/dc/d7b/h264__parser_8cc_source.html @@ -1446,7 +1446,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d81/classedash__packager_1_1MpdWriter.html b/docs/dc/d81/classedash__packager_1_1MpdWriter.html index 20dbcf3ea9..720f9cb60e 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 94d967e213..e71a5e0cb4 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 @@ -299,7 +299,7 @@ void set_encryption_key diff --git a/docs/dc/dab/classedash__packager_1_1media_1_1mp2t_1_1Mp2tMediaParser.html b/docs/dc/dab/classedash__packager_1_1media_1_1mp2t_1_1Mp2tMediaParser.html index 30fd3653de..beb1bb2a60 100644 --- a/docs/dc/dab/classedash__packager_1_1media_1_1mp2t_1_1Mp2tMediaParser.html +++ b/docs/dc/dab/classedash__packager_1_1media_1_1mp2t_1_1Mp2tMediaParser.html @@ -255,7 +255,7 @@ track_id, const scoped_refptr
diff --git a/docs/dc/db7/structedash__packager_1_1media_1_1mp4_1_1DecodingTimeToSample.html b/docs/dc/db7/structedash__packager_1_1media_1_1mp4_1_1DecodingTimeToSample.html index 7fee62b901..1600c232f7 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 @@ -169,7 +169,7 @@ Additional Inherited Members

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

-

Definition at line 471 of file box_definitions.cc.

+

Definition at line 473 of file box_definitions.cc.

@@ -180,7 +180,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 0de8977b44..c2847b6c0d 100644 --- a/docs/dc/dbf/box__buffer_8h_source.html +++ b/docs/dc/dbf/box__buffer_8h_source.html @@ -275,7 +275,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 ebfb0da883..67b0242926 100644 --- a/docs/dc/dc6/classedash__packager_1_1media_1_1mp4_1_1AACAudioSpecificConfig.html +++ b/docs/dc/dc6/classedash__packager_1_1media_1_1mp4_1_1AACAudioSpecificConfig.html @@ -313,7 +313,7 @@ static const size_t  diff --git a/docs/dc/dc8/classedash__packager_1_1media_1_1WebMWebVTTParser.html b/docs/dc/dc8/classedash__packager_1_1media_1_1WebMWebVTTParser.html index c2d0edf95d..c1f7584f18 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 d49bfe949c..d920f76292 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 0bea99054c..e396639143 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 8b3078b978..e6bf29f1ff 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 b0a70304f7..902b3bbb6a 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 139082dbb2..d3b2dee4c3 100644 --- a/docs/dc/de1/classedash__packager_1_1media_1_1mp4_1_1Segmenter.html +++ b/docs/dc/de1/classedash__packager_1_1media_1_1mp4_1_1Segmenter.html @@ -423,7 +423,7 @@ void set_progress_target diff --git a/docs/dc/dec/ts__section__pmt_8cc_source.html b/docs/dc/dec/ts__section__pmt_8cc_source.html index 65db54bbe1..fb8b87df39 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 196e79081e..bf617654af 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 @@ -107,7 +107,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 fec511ef62..2fa9bb6bb9 100644 --- a/docs/dc/df1/classedash__packager_1_1media_1_1DecryptorSource.html +++ b/docs/dc/df1/classedash__packager_1_1media_1_1DecryptorSource.html @@ -158,7 +158,7 @@ Public Member Functions diff --git a/docs/dc/df8/closure__thread_8h_source.html b/docs/dc/df8/closure__thread_8h_source.html index 7339030f89..b53a1b32f4 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 60531cab0e..45cff89eb0 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 d9db55fb01..46b78b975f 100644 --- a/docs/dc/dfc/classedash__packager_1_1media_1_1Muxer-members.html +++ b/docs/dc/dfc/classedash__packager_1_1media_1_1Muxer-members.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d0e/classedash__packager_1_1media_1_1mp2t_1_1EsParserH264.html b/docs/dd/d0e/classedash__packager_1_1media_1_1mp2t_1_1EsParserH264.html index b82b62705e..70297003d3 100644 --- a/docs/dd/d0e/classedash__packager_1_1media_1_1mp2t_1_1EsParserH264.html +++ b/docs/dd/d0e/classedash__packager_1_1media_1_1mp2t_1_1EsParserH264.html @@ -149,7 +149,7 @@ const scoped_refptr
diff --git a/docs/dd/d0e/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPat.html b/docs/dd/d0e/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPat.html index bb90187364..a4f93a530e 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 3c3659ffa2..eb87b8578b 100644 --- a/docs/dd/d11/mpd__builder_8cc_source.html +++ b/docs/dd/d11/mpd__builder_8cc_source.html @@ -1422,7 +1422,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 64979fe811..990d32140c 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/d14/structedash__packager_1_1media_1_1mp4_1_1MovieHeader.html b/docs/dd/d14/structedash__packager_1_1media_1_1mp4_1_1MovieHeader.html index daba858239..1e5f72f7ff 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 @@ -187,7 +187,7 @@ Additional Inherited Members

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

-

Definition at line 339 of file box_definitions.cc.

+

Definition at line 341 of file box_definitions.cc.

@@ -198,7 +198,7 @@ Additional Inherited Members diff --git a/docs/dd/d15/structedash__packager_1_1media_1_1mp4_1_1TrackHeader.html b/docs/dd/d15/structedash__packager_1_1media_1_1mp4_1_1TrackHeader.html index 67aa123ce7..273a5a5ac9 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 @@ -202,7 +202,7 @@ Additional Inherited Members

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

-

Definition at line 391 of file box_definitions.cc.

+

Definition at line 393 of file box_definitions.cc.

@@ -213,7 +213,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 87158d65b0..d597202848 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 5d1822ccf4..a9ee37bf81 100644 --- a/docs/dd/d19/video__stream__info_8cc_source.html +++ b/docs/dd/d19/video__stream__info_8cc_source.html @@ -122,76 +122,78 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
33  return "VP8";
34  case kCodecVP9:
35  return "VP9";
-
36  default:
-
37  NOTIMPLEMENTED() << "Unknown Video Codec: " << video_codec;
-
38  return "UnknownVideoCodec";
-
39  }
-
40 }
-
41 
-
42 } // namespace
+
36  case kCodecVP10:
+
37  return "VP10";
+
38  default:
+
39  NOTIMPLEMENTED() << "Unknown Video Codec: " << video_codec;
+
40  return "UnknownVideoCodec";
+
41  }
+
42 }
43 
- -
45  uint32_t time_scale,
-
46  uint64_t duration,
-
47  VideoCodec codec,
-
48  const std::string& codec_string,
-
49  const std::string& language,
-
50  uint16_t width,
-
51  uint16_t height,
-
52  uint32_t pixel_width,
-
53  uint32_t pixel_height,
-
54  int16_t trick_play_rate,
-
55  uint8_t nalu_length_size,
-
56  const uint8_t* extra_data,
-
57  size_t extra_data_size,
-
58  bool is_encrypted)
-
59  : StreamInfo(kStreamVideo,
-
60  track_id,
-
61  time_scale,
-
62  duration,
-
63  codec_string,
-
64  language,
-
65  extra_data,
-
66  extra_data_size,
-
67  is_encrypted),
-
68  codec_(codec),
-
69  width_(width),
-
70  height_(height),
-
71  pixel_width_(pixel_width),
-
72  pixel_height_(pixel_height),
-
73  trick_play_rate_(trick_play_rate),
-
74  nalu_length_size_(nalu_length_size) {
-
75 }
-
76 
-
77 VideoStreamInfo::~VideoStreamInfo() {}
+
44 } // namespace
+
45 
+ +
47  uint32_t time_scale,
+
48  uint64_t duration,
+
49  VideoCodec codec,
+
50  const std::string& codec_string,
+
51  const std::string& language,
+
52  uint16_t width,
+
53  uint16_t height,
+
54  uint32_t pixel_width,
+
55  uint32_t pixel_height,
+
56  int16_t trick_play_rate,
+
57  uint8_t nalu_length_size,
+
58  const uint8_t* extra_data,
+
59  size_t extra_data_size,
+
60  bool is_encrypted)
+
61  : StreamInfo(kStreamVideo,
+
62  track_id,
+
63  time_scale,
+
64  duration,
+
65  codec_string,
+
66  language,
+
67  extra_data,
+
68  extra_data_size,
+
69  is_encrypted),
+
70  codec_(codec),
+
71  width_(width),
+
72  height_(height),
+
73  pixel_width_(pixel_width),
+
74  pixel_height_(pixel_height),
+
75  trick_play_rate_(trick_play_rate),
+
76  nalu_length_size_(nalu_length_size) {
+
77 }
78 
- -
80  return codec_ != kUnknownVideoCodec &&
-
81  width_ > 0 && width_ <= limits::kMaxDimension &&
-
82  height_ > 0 && height_ <= limits::kMaxDimension &&
-
83  (nalu_length_size_ <= 2 || nalu_length_size_ == 4);
-
84 }
-
85 
-
86 std::string VideoStreamInfo::ToString() const {
-
87  return base::StringPrintf(
-
88  "%s codec: %s\n width: %d\n height: %d\n pixel aspect ratio: %d:%d\n "
-
89  "trick_play_rate: %d\n nalu_length_size: %d\n",
-
90  StreamInfo::ToString().c_str(), VideoCodecToString(codec_).c_str(),
-
91  width_, height_, pixel_width_, pixel_height_, trick_play_rate_,
-
92  nalu_length_size_);
-
93 }
-
94 
-
95 } // namespace media
-
96 } // namespace edash_packager
-
std::string ToString() const override
+
79 VideoStreamInfo::~VideoStreamInfo() {}
+
80 
+ +
82  return codec_ != kUnknownVideoCodec &&
+
83  width_ > 0 && width_ <= limits::kMaxDimension &&
+
84  height_ > 0 && height_ <= limits::kMaxDimension &&
+
85  (nalu_length_size_ <= 2 || nalu_length_size_ == 4);
+
86 }
+
87 
+
88 std::string VideoStreamInfo::ToString() const {
+
89  return base::StringPrintf(
+
90  "%s codec: %s\n width: %d\n height: %d\n pixel aspect ratio: %d:%d\n "
+
91  "trick_play_rate: %d\n nalu_length_size: %d\n",
+
92  StreamInfo::ToString().c_str(), VideoCodecToString(codec_).c_str(),
+
93  width_, height_, pixel_width_, pixel_height_, trick_play_rate_,
+
94  nalu_length_size_);
+
95 }
+
96 
+
97 } // namespace media
+
98 } // namespace edash_packager
+
std::string ToString() const override
Abstract class holds stream information.
Definition: stream_info.h:26
- +
virtual std::string ToString() const
Definition: stream_info.cc:40
-
VideoStreamInfo(int track_id, uint32_t time_scale, uint64_t duration, VideoCodec codec, const std::string &codec_string, const std::string &language, uint16_t width, uint16_t height, uint32_t pixel_width, uint32_t pixel_height, int16_t trick_play_rate, uint8_t nalu_length_size, const uint8_t *extra_data, size_t extra_data_size, bool is_encrypted)
+
VideoStreamInfo(int track_id, uint32_t time_scale, uint64_t duration, VideoCodec codec, const std::string &codec_string, const std::string &language, uint16_t width, uint16_t height, uint32_t pixel_width, uint32_t pixel_height, int16_t trick_play_rate, uint8_t nalu_length_size, const uint8_t *extra_data, size_t extra_data_size, bool is_encrypted)
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 ac03525339..d071387bbd 100644 --- a/docs/dd/d1a/classedash__packager_1_1media_1_1H264ByteToUnitStreamConverter-members.html +++ b/docs/dd/d1a/classedash__packager_1_1media_1_1H264ByteToUnitStreamConverter-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d2b/classedash__packager_1_1media_1_1ClosureThread.html b/docs/dd/d2b/classedash__packager_1_1media_1_1ClosureThread.html index 574adf47c3..58878da9c5 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/d2c/single__segment__segmenter_8h_source.html b/docs/dd/d2c/single__segment__segmenter_8h_source.html index 31caa249ec..830ff0be70 100644 --- a/docs/dd/d2c/single__segment__segmenter_8h_source.html +++ b/docs/dd/d2c/single__segment__segmenter_8h_source.html @@ -140,7 +140,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d30/wvm__media__parser_8cc_source.html b/docs/dd/d30/wvm__media__parser_8cc_source.html index d5f0c6d71f..61111643f4 100644 --- a/docs/dd/d30/wvm__media__parser_8cc_source.html +++ b/docs/dd/d30/wvm__media__parser_8cc_source.html @@ -1258,7 +1258,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d36/classedash__packager_1_1media_1_1MediaSample-members.html b/docs/dd/d36/classedash__packager_1_1media_1_1MediaSample-members.html index 11ca513345..6980320f3b 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 @@ -119,7 +119,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d41/structedash__packager_1_1media_1_1H264NALU.html b/docs/dd/d41/structedash__packager_1_1media_1_1H264NALU.html index 61a8d01a97..05e34ebfbd 100644 --- a/docs/dd/d41/structedash__packager_1_1media_1_1H264NALU.html +++ b/docs/dd/d41/structedash__packager_1_1media_1_1H264NALU.html @@ -139,7 +139,7 @@ int nal_unit_type diff --git a/docs/dd/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 0fd16490cc..01c568ca90 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 a73c27f448..3460311409 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 5c5de58c85..1431647223 100644 --- a/docs/dd/d47/classedash__packager_1_1media_1_1WebMInfoParser.html +++ b/docs/dd/d47/classedash__packager_1_1media_1_1WebMInfoParser.html @@ -175,7 +175,7 @@ The number of bytes parsed on success. diff --git a/docs/dd/d4c/structedash__packager_1_1media_1_1mp4_1_1FullBox-members.html b/docs/dd/d4c/structedash__packager_1_1media_1_1mp4_1_1FullBox-members.html index 61e757e4b2..20fb8d92b4 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 @@ -108,7 +108,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 f1e9d872da..64fdfdef17 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 @@ -522,7 +522,7 @@ bool ReadWriteInt64 (i diff --git a/docs/dd/d54/widevine__encryption__flags_8h_source.html b/docs/dd/d54/widevine__encryption__flags_8h_source.html index 06f1d3ff49..6a0e96dda4 100644 --- a/docs/dd/d54/widevine__encryption__flags_8h_source.html +++ b/docs/dd/d54/widevine__encryption__flags_8h_source.html @@ -123,7 +123,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d67/h264__byte__to__unit__stream__converter_8cc_source.html b/docs/dd/d67/h264__byte__to__unit__stream__converter_8cc_source.html index c0fe732af1..4bd68a3402 100644 --- a/docs/dd/d67/h264__byte__to__unit__stream__converter_8cc_source.html +++ b/docs/dd/d67/h264__byte__to__unit__stream__converter_8cc_source.html @@ -226,7 +226,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d79/classedash__packager_1_1media_1_1AesCtrEncryptor.html b/docs/dd/d79/classedash__packager_1_1media_1_1AesCtrEncryptor.html index 4d05dca231..dc9d0f7a65 100644 --- a/docs/dd/d79/classedash__packager_1_1media_1_1AesCtrEncryptor.html +++ b/docs/dd/d79/classedash__packager_1_1media_1_1AesCtrEncryptor.html @@ -255,7 +255,7 @@ bool Encrypt (const st diff --git a/docs/dd/d80/media__sample_8h_source.html b/docs/dd/d80/media__sample_8h_source.html index 8737869f59..8d9cd6af19 100644 --- a/docs/dd/d80/media__sample_8h_source.html +++ b/docs/dd/d80/media__sample_8h_source.html @@ -245,7 +245,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 d71f08f7ac..d12d62c76a 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 60c84ad7c1..b722b74f46 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 @@ -131,7 +131,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 91bad41eaf..ec345edaaf 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 @@ -121,7 +121,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d96/classedash__packager_1_1media_1_1AesCbcCtsDecryptor.html b/docs/dd/d96/classedash__packager_1_1media_1_1AesCbcCtsDecryptor.html index be86c9e5b9..dd17f41927 100644 --- a/docs/dd/d96/classedash__packager_1_1media_1_1AesCbcCtsDecryptor.html +++ b/docs/dd/d96/classedash__packager_1_1media_1_1AesCbcCtsDecryptor.html @@ -252,7 +252,7 @@ const std::vector< uint8_t > &  diff --git a/docs/dd/d98/classedash__packager_1_1media_1_1LocalFile.html b/docs/dd/d98/classedash__packager_1_1media_1_1LocalFile.html index 2263637573..f3fea40948 100644 --- a/docs/dd/d98/classedash__packager_1_1media_1_1LocalFile.html +++ b/docs/dd/d98/classedash__packager_1_1media_1_1LocalFile.html @@ -496,7 +496,7 @@ bool  diff --git a/docs/dd/d99/classedash__packager_1_1media_1_1WebMMediaParser.html b/docs/dd/d99/classedash__packager_1_1media_1_1WebMMediaParser.html index 4a6aedae23..648b55151c 100644 --- a/docs/dd/d99/classedash__packager_1_1media_1_1WebMMediaParser.html +++ b/docs/dd/d99/classedash__packager_1_1media_1_1WebMMediaParser.html @@ -205,7 +205,7 @@ track_id, const scoped_refptr
diff --git a/docs/dd/d9a/audio__timestamp__helper_8h_source.html b/docs/dd/d9a/audio__timestamp__helper_8h_source.html index b67e2c45e3..20429bb8f2 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 d86d6b2b59..e4b93f904f 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 @@ -168,7 +168,7 @@ Additional Inherited Members

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

-

Definition at line 1835 of file box_definitions.cc.

+

Definition at line 1863 of file box_definitions.cc.

@@ -179,7 +179,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 77d8824ad4..a259b1a6e9 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 @@ -165,7 +165,7 @@ std::vector< FourCC > <

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

-

Definition at line 100 of file box_definitions.cc.

+

Definition at line 102 of file box_definitions.cc.

@@ -176,7 +176,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 9c9f68912f..2054845c67 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 580f166ec5..9e0b70552e 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 @@ -174,7 +174,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 cf6b9c8784..a6004c86de 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 @@ -120,7 +120,7 @@ uint32_t group_description 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 13eeb2d67d..656e79351d 100644 --- a/docs/dd/dad/classedash__packager_1_1media_1_1WebMParserClient-members.html +++ b/docs/dd/dad/classedash__packager_1_1media_1_1WebMParserClient-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/dbc/buffer__reader_8cc_source.html b/docs/dd/dbc/buffer__reader_8cc_source.html index 0c8ddcb709..94b92472f9 100644 --- a/docs/dd/dbc/buffer__reader_8cc_source.html +++ b/docs/dd/dbc/buffer__reader_8cc_source.html @@ -187,7 +187,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 15e005661c..9e93c4343f 100644 --- a/docs/dd/dbd/classedash__packager_1_1media_1_1AesCtrEncryptor-members.html +++ b/docs/dd/dbd/classedash__packager_1_1media_1_1AesCtrEncryptor-members.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/dbd/structedash__packager_1_1media_1_1mp4_1_1MediaInformation.html b/docs/dd/dbd/structedash__packager_1_1media_1_1mp4_1_1MediaInformation.html index 3dc30ba6a1..4749362aa2 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 @@ -170,7 +170,7 @@ Additional Inherited Members

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

-

Definition at line 1263 of file box_definitions.cc.

+

Definition at line 1291 of file box_definitions.cc.

@@ -181,7 +181,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 07cf4c66d1..73c90d972a 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 6118be83cf..58e8d1df9d 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 f888479266..85322a5c72 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 @@ -167,7 +167,7 @@ Additional Inherited Members

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

-

Definition at line 298 of file box_definitions.cc.

+

Definition at line 300 of file box_definitions.cc.

@@ -178,7 +178,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 4cb713a57e..8f4fbc60e4 100644 --- a/docs/dd/dcb/classedash__packager_1_1MpdNotifierFactory.html +++ b/docs/dd/dcb/classedash__packager_1_1MpdNotifierFactory.html @@ -112,7 +112,7 @@ virtual scoped_ptr< diff --git a/docs/dd/dcf/structedash__packager_1_1media_1_1H264PPS.html b/docs/dd/dcf/structedash__packager_1_1media_1_1H264PPS.html index d65e927e38..56be98f51e 100644 --- a/docs/dd/dcf/structedash__packager_1_1media_1_1H264PPS.html +++ b/docs/dd/dcf/structedash__packager_1_1media_1_1H264PPS.html @@ -167,7 +167,7 @@ int second_chroma_qp_index diff --git a/docs/dd/dd2/buffer__writer_8h_source.html b/docs/dd/dd2/buffer__writer_8h_source.html index 4101b4639b..2be595d76e 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 77de3871b4..ba996ef5c2 100644 --- a/docs/dd/dd3/buffer__writer_8cc_source.html +++ b/docs/dd/dd3/buffer__writer_8cc_source.html @@ -186,7 +186,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/dd7/classedash__packager_1_1media_1_1OpusPacket-members.html b/docs/dd/dd7/classedash__packager_1_1media_1_1OpusPacket-members.html index 368b988577..dec5e98e90 100644 --- a/docs/dd/dd7/classedash__packager_1_1media_1_1OpusPacket-members.html +++ b/docs/dd/dd7/classedash__packager_1_1media_1_1OpusPacket-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/de7/xml__node_8h_source.html b/docs/dd/de7/xml__node_8h_source.html index 77d69ab33a..59796c7bea 100644 --- a/docs/dd/de7/xml__node_8h_source.html +++ b/docs/dd/de7/xml__node_8h_source.html @@ -228,7 +228,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 cf723bd910..30c5a28338 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 916d6c4ab0..853fa8e240 100644 --- a/docs/dd/dee/box__definitions_8cc_source.html +++ b/docs/dd/dee/box__definitions_8cc_source.html @@ -125,2020 +125,2048 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
36 const uint16_t kVideoDepth = 0x0018;
37 
38 const uint32_t kCompressorNameSize = 32u;
-
39 
-
40 // Utility functions to check if the 64bit integers can fit in 32bit integer.
-
41 bool IsFitIn32Bits(uint64_t a) {
-
42  return a <= std::numeric_limits<uint32_t>::max();
-
43 }
-
44 
-
45 bool IsFitIn32Bits(int64_t a) {
-
46  return a <= std::numeric_limits<int32_t>::max() &&
-
47  a >= std::numeric_limits<int32_t>::min();
-
48 }
-
49 
-
50 template <typename T1, typename T2>
-
51 bool IsFitIn32Bits(T1 a1, T2 a2) {
-
52  return IsFitIn32Bits(a1) && IsFitIn32Bits(a2);
-
53 }
-
54 
-
55 template <typename T1, typename T2, typename T3>
-
56 bool IsFitIn32Bits(T1 a1, T2 a2, T3 a3) {
-
57  return IsFitIn32Bits(a1) && IsFitIn32Bits(a2) && IsFitIn32Bits(a3);
-
58 }
-
59 
-
60 } // namespace
+
39 const char kAvcCompressorName[] = "\012AVC Coding";
+
40 const char kVpcCompressorName[] = "\012VPC Coding";
+
41 
+
42 // Utility functions to check if the 64bit integers can fit in 32bit integer.
+
43 bool IsFitIn32Bits(uint64_t a) {
+
44  return a <= std::numeric_limits<uint32_t>::max();
+
45 }
+
46 
+
47 bool IsFitIn32Bits(int64_t a) {
+
48  return a <= std::numeric_limits<int32_t>::max() &&
+
49  a >= std::numeric_limits<int32_t>::min();
+
50 }
+
51 
+
52 template <typename T1, typename T2>
+
53 bool IsFitIn32Bits(T1 a1, T2 a2) {
+
54  return IsFitIn32Bits(a1) && IsFitIn32Bits(a2);
+
55 }
+
56 
+
57 template <typename T1, typename T2, typename T3>
+
58 bool IsFitIn32Bits(T1 a1, T2 a2, T3 a3) {
+
59  return IsFitIn32Bits(a1) && IsFitIn32Bits(a2) && IsFitIn32Bits(a3);
+
60 }
61 
-
62 namespace edash_packager {
-
63 namespace media {
-
64 namespace mp4 {
-
65 
-
66 FileType::FileType() : major_brand(FOURCC_NULL), minor_version(0) {}
-
67 FileType::~FileType() {}
-
68 FourCC FileType::BoxType() const { return FOURCC_FTYP; }
-
69 
- -
71  RCHECK(Box::ReadWrite(buffer) &&
-
72  buffer->ReadWriteFourCC(&major_brand) &&
-
73  buffer->ReadWriteUInt32(&minor_version));
-
74  size_t num_brands;
-
75  if (buffer->Reading()) {
-
76  num_brands = (buffer->Size() - buffer->Pos()) / sizeof(FourCC);
-
77  compatible_brands.resize(num_brands);
-
78  } else {
-
79  num_brands = compatible_brands.size();
-
80  }
-
81  for (size_t i = 0; i < num_brands; ++i)
-
82  RCHECK(buffer->ReadWriteFourCC(&compatible_brands[i]));
-
83  return true;
-
84 }
-
85 
- -
87  atom_size = kBoxSize + kFourCCSize + sizeof(minor_version) +
-
88  kFourCCSize * compatible_brands.size();
-
89  return atom_size;
-
90 }
-
91 
-
92 SegmentType::SegmentType() {}
-
93 SegmentType::~SegmentType() {}
-
94 FourCC SegmentType::BoxType() const { return FOURCC_STYP; }
-
95 
- -
97  return FileType::ReadWrite(buffer);
-
98 }
-
99 
- -
101  return FileType::ComputeSize();
-
102 }
-
103 
-
104 ProtectionSystemSpecificHeader::ProtectionSystemSpecificHeader() {}
-
105 ProtectionSystemSpecificHeader::~ProtectionSystemSpecificHeader() {}
-
106 FourCC ProtectionSystemSpecificHeader::BoxType() const { return FOURCC_PSSH; }
-
107 
- -
109  if (!buffer->Reading() && !raw_box.empty()) {
-
110  // Write the raw box directly.
-
111  buffer->writer()->AppendVector(raw_box);
-
112  return true;
-
113  }
-
114 
-
115  uint32_t size = data.size();
-
116  RCHECK(FullBox::ReadWrite(buffer) &&
-
117  buffer->ReadWriteVector(&system_id, 16) &&
-
118  buffer->ReadWriteUInt32(&size) &&
-
119  buffer->ReadWriteVector(&data, size));
-
120 
-
121  if (buffer->Reading()) {
-
122  // Copy the entire box, including the header, for passing to EME as
-
123  // initData.
-
124  DCHECK(raw_box.empty());
-
125  BoxReader* reader = buffer->reader();
-
126  DCHECK(reader);
-
127  raw_box.assign(reader->data(), reader->data() + reader->size());
-
128  }
-
129  return true;
-
130 }
-
131 
- -
133  if (!raw_box.empty()) {
-
134  atom_size = raw_box.size();
-
135  } else {
-
136  atom_size =
-
137  kFullBoxSize + system_id.size() + sizeof(uint32_t) + data.size();
-
138  }
-
139  return atom_size;
-
140 }
-
141 
-
142 SampleAuxiliaryInformationOffset::SampleAuxiliaryInformationOffset() {}
-
143 SampleAuxiliaryInformationOffset::~SampleAuxiliaryInformationOffset() {}
-
144 FourCC SampleAuxiliaryInformationOffset::BoxType() const { return FOURCC_SAIO; }
-
145 
- -
147  RCHECK(FullBox::ReadWrite(buffer));
-
148  if (flags & 1)
-
149  RCHECK(buffer->IgnoreBytes(8)); // aux_info_type and parameter.
-
150 
-
151  uint32_t count = offsets.size();
-
152  RCHECK(buffer->ReadWriteUInt32(&count));
-
153  offsets.resize(count);
-
154 
-
155  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
-
156  for (uint32_t i = 0; i < count; ++i)
-
157  RCHECK(buffer->ReadWriteUInt64NBytes(&offsets[i], num_bytes));
-
158  return true;
-
159 }
-
160 
- -
162  // This box is optional. Skip it if it is empty.
-
163  atom_size = 0;
-
164  if (offsets.size() != 0) {
-
165  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
-
166  atom_size = kFullBoxSize + sizeof(uint32_t) + num_bytes * offsets.size();
-
167  }
-
168  return atom_size;
-
169 }
-
170 
-
171 SampleAuxiliaryInformationSize::SampleAuxiliaryInformationSize()
-
172  : default_sample_info_size(0), sample_count(0) {}
-
173 SampleAuxiliaryInformationSize::~SampleAuxiliaryInformationSize() {}
-
174 FourCC SampleAuxiliaryInformationSize::BoxType() const { return FOURCC_SAIZ; }
-
175 
- -
177  RCHECK(FullBox::ReadWrite(buffer));
-
178  if (flags & 1)
-
179  RCHECK(buffer->IgnoreBytes(8));
-
180 
-
181  RCHECK(buffer->ReadWriteUInt8(&default_sample_info_size) &&
-
182  buffer->ReadWriteUInt32(&sample_count));
-
183  if (default_sample_info_size == 0)
-
184  RCHECK(buffer->ReadWriteVector(&sample_info_sizes, sample_count));
-
185  return true;
-
186 }
-
187 
- -
189  // This box is optional. Skip it if it is empty.
-
190  atom_size = 0;
-
191  if (sample_count != 0) {
-
192  atom_size = kFullBoxSize + sizeof(default_sample_info_size) +
-
193  sizeof(sample_count) +
-
194  (default_sample_info_size == 0 ? sample_info_sizes.size() : 0);
-
195  }
-
196  return atom_size;
-
197 }
-
198 
-
199 OriginalFormat::OriginalFormat() : format(FOURCC_NULL) {}
-
200 OriginalFormat::~OriginalFormat() {}
-
201 FourCC OriginalFormat::BoxType() const { return FOURCC_FRMA; }
-
202 
- -
204  return Box::ReadWrite(buffer) && buffer->ReadWriteFourCC(&format);
-
205 }
-
206 
- -
208  atom_size = kBoxSize + kFourCCSize;
-
209  return atom_size;
-
210 }
-
211 
-
212 SchemeType::SchemeType() : type(FOURCC_NULL), version(0) {}
-
213 SchemeType::~SchemeType() {}
-
214 FourCC SchemeType::BoxType() const { return FOURCC_SCHM; }
-
215 
- -
217  RCHECK(FullBox::ReadWrite(buffer) &&
-
218  buffer->ReadWriteFourCC(&type) &&
-
219  buffer->ReadWriteUInt32(&version));
-
220  return true;
-
221 }
-
222 
- -
224  atom_size = kFullBoxSize + kFourCCSize + sizeof(version);
-
225  return atom_size;
-
226 }
-
227 
-
228 TrackEncryption::TrackEncryption()
-
229  : is_encrypted(false), default_iv_size(0), default_kid(16, 0) {}
-
230 TrackEncryption::~TrackEncryption() {}
-
231 FourCC TrackEncryption::BoxType() const { return FOURCC_TENC; }
-
232 
- -
234  if (!buffer->Reading()) {
-
235  if (default_kid.size() != kCencKeyIdSize) {
-
236  LOG(WARNING) << "CENC defines key id length of " << kCencKeyIdSize
-
237  << " bytes; got " << default_kid.size()
-
238  << ". Resized accordingly.";
-
239  default_kid.resize(kCencKeyIdSize);
-
240  }
-
241  }
-
242 
-
243  uint8_t flag = is_encrypted ? 1 : 0;
-
244  RCHECK(FullBox::ReadWrite(buffer) &&
-
245  buffer->IgnoreBytes(2) && // reserved.
-
246  buffer->ReadWriteUInt8(&flag) &&
-
247  buffer->ReadWriteUInt8(&default_iv_size) &&
-
248  buffer->ReadWriteVector(&default_kid, kCencKeyIdSize));
-
249  if (buffer->Reading()) {
-
250  is_encrypted = (flag != 0);
-
251  if (is_encrypted) {
-
252  RCHECK(default_iv_size == 8 || default_iv_size == 16);
-
253  } else {
-
254  RCHECK(default_iv_size == 0);
-
255  }
-
256  }
-
257  return true;
-
258 }
-
259 
- -
261  atom_size = kFullBoxSize + sizeof(uint32_t) + kCencKeyIdSize;
-
262  return atom_size;
-
263 }
-
264 
-
265 SchemeInfo::SchemeInfo() {}
-
266 SchemeInfo::~SchemeInfo() {}
-
267 FourCC SchemeInfo::BoxType() const { return FOURCC_SCHI; }
-
268 
- -
270  RCHECK(Box::ReadWrite(buffer) && buffer->PrepareChildren() &&
-
271  buffer->ReadWriteChild(&track_encryption));
-
272  return true;
-
273 }
-
274 
- -
276  atom_size = kBoxSize + track_encryption.ComputeSize();
-
277  return atom_size;
-
278 }
-
279 
-
280 ProtectionSchemeInfo::ProtectionSchemeInfo() {}
-
281 ProtectionSchemeInfo::~ProtectionSchemeInfo() {}
-
282 FourCC ProtectionSchemeInfo::BoxType() const { return FOURCC_SINF; }
-
283 
- -
285  RCHECK(Box::ReadWrite(buffer) &&
-
286  buffer->PrepareChildren() &&
-
287  buffer->ReadWriteChild(&format) &&
-
288  buffer->ReadWriteChild(&type));
-
289  if (type.type == FOURCC_CENC)
-
290  RCHECK(buffer->ReadWriteChild(&info));
-
291  // Other protection schemes are silently ignored. Since the protection scheme
-
292  // type can't be determined until this box is opened, we return 'true' for
-
293  // non-CENC protection scheme types. It is the parent box's responsibility to
-
294  // ensure that this scheme type is a supported one.
-
295  return true;
-
296 }
-
297 
- -
299  // Skip sinf box if it is not initialized.
-
300  atom_size = 0;
-
301  if (format.format != FOURCC_NULL) {
-
302  atom_size = kBoxSize + format.ComputeSize() + type.ComputeSize() +
-
303  info.ComputeSize();
-
304  }
-
305  return atom_size;
-
306 }
-
307 
-
308 MovieHeader::MovieHeader()
-
309  : creation_time(0),
-
310  modification_time(0),
-
311  timescale(0),
-
312  duration(0),
-
313  rate(1 << 16),
-
314  volume(1 << 8),
-
315  next_track_id(0) {}
-
316 MovieHeader::~MovieHeader() {}
-
317 FourCC MovieHeader::BoxType() const { return FOURCC_MVHD; }
-
318 
- -
320  RCHECK(FullBox::ReadWrite(buffer));
-
321 
-
322  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
-
323  RCHECK(buffer->ReadWriteUInt64NBytes(&creation_time, num_bytes) &&
-
324  buffer->ReadWriteUInt64NBytes(&modification_time, num_bytes) &&
-
325  buffer->ReadWriteUInt32(&timescale) &&
-
326  buffer->ReadWriteUInt64NBytes(&duration, num_bytes));
-
327 
-
328  std::vector<uint8_t> matrix(kUnityMatrix,
-
329  kUnityMatrix + arraysize(kUnityMatrix));
-
330  RCHECK(buffer->ReadWriteInt32(&rate) &&
-
331  buffer->ReadWriteInt16(&volume) &&
-
332  buffer->IgnoreBytes(10) && // reserved
-
333  buffer->ReadWriteVector(&matrix, matrix.size()) &&
-
334  buffer->IgnoreBytes(24) && // predefined zero
-
335  buffer->ReadWriteUInt32(&next_track_id));
-
336  return true;
-
337 }
-
338 
- -
340  version = IsFitIn32Bits(creation_time, modification_time, duration) ? 0 : 1;
-
341  atom_size = kFullBoxSize + sizeof(uint32_t) * (1 + version) * 3 +
-
342  sizeof(timescale) + sizeof(rate) + sizeof(volume) +
-
343  sizeof(next_track_id) + sizeof(kUnityMatrix) + 10 +
-
344  24; // 10 bytes reserved, 24 bytes predefined.
-
345  return atom_size;
-
346 }
-
347 
-
348 TrackHeader::TrackHeader()
-
349  : creation_time(0),
-
350  modification_time(0),
-
351  track_id(0),
-
352  duration(0),
-
353  layer(0),
-
354  alternate_group(0),
-
355  volume(-1),
-
356  width(0),
-
357  height(0) {
-
358  flags = kTrackEnabled | kTrackInMovie;
-
359 }
-
360 TrackHeader::~TrackHeader() {}
-
361 FourCC TrackHeader::BoxType() const { return FOURCC_TKHD; }
-
362 
- -
364  RCHECK(FullBox::ReadWrite(buffer));
-
365 
-
366  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
-
367  RCHECK(buffer->ReadWriteUInt64NBytes(&creation_time, num_bytes) &&
-
368  buffer->ReadWriteUInt64NBytes(&modification_time, num_bytes) &&
-
369  buffer->ReadWriteUInt32(&track_id) &&
-
370  buffer->IgnoreBytes(4) && // reserved
-
371  buffer->ReadWriteUInt64NBytes(&duration, num_bytes));
-
372 
-
373  if (!buffer->Reading()) {
-
374  // Set default value for volume, if track is audio, 0x100 else 0.
-
375  if (volume == -1)
-
376  volume = (width != 0 && height != 0) ? 0 : 0x100;
-
377  }
-
378  std::vector<uint8_t> matrix(kUnityMatrix,
-
379  kUnityMatrix + arraysize(kUnityMatrix));
-
380  RCHECK(buffer->IgnoreBytes(8) && // reserved
-
381  buffer->ReadWriteInt16(&layer) &&
-
382  buffer->ReadWriteInt16(&alternate_group) &&
-
383  buffer->ReadWriteInt16(&volume) &&
-
384  buffer->IgnoreBytes(2) && // reserved
-
385  buffer->ReadWriteVector(&matrix, matrix.size()) &&
-
386  buffer->ReadWriteUInt32(&width) &&
-
387  buffer->ReadWriteUInt32(&height));
-
388  return true;
-
389 }
-
390 
- -
392  version = IsFitIn32Bits(creation_time, modification_time, duration) ? 0 : 1;
-
393  atom_size = kFullBoxSize + sizeof(track_id) +
-
394  sizeof(uint32_t) * (1 + version) * 3 + sizeof(layer) +
-
395  sizeof(alternate_group) + sizeof(volume) + sizeof(width) +
-
396  sizeof(height) + sizeof(kUnityMatrix) + 14; // 14 bytes reserved.
-
397  return atom_size;
-
398 }
-
399 
-
400 SampleDescription::SampleDescription() : type(kInvalid) {}
-
401 SampleDescription::~SampleDescription() {}
-
402 FourCC SampleDescription::BoxType() const { return FOURCC_STSD; }
-
403 
- -
405  uint32_t count = 0;
-
406  if (type == kVideo)
-
407  count = video_entries.size();
-
408  else
-
409  count = audio_entries.size();
-
410  RCHECK(FullBox::ReadWrite(buffer) &&
-
411  buffer->ReadWriteUInt32(&count));
-
412 
-
413  if (buffer->Reading()) {
-
414  BoxReader* reader = buffer->reader();
-
415  DCHECK(reader);
-
416  video_entries.clear();
-
417  audio_entries.clear();
-
418  // Note: this value is preset before scanning begins. See comments in the
-
419  // Parse(Media*) function.
-
420  if (type == kVideo) {
-
421  RCHECK(reader->ReadAllChildren(&video_entries));
-
422  RCHECK(video_entries.size() == count);
-
423  } else if (type == kAudio) {
-
424  RCHECK(reader->ReadAllChildren(&audio_entries));
-
425  RCHECK(audio_entries.size() == count);
-
426  }
-
427  } else {
-
428  DCHECK_LT(0u, count);
-
429  if (type == kVideo) {
-
430  for (uint32_t i = 0; i < count; ++i)
-
431  RCHECK(video_entries[i].ReadWrite(buffer));
-
432  } else if (type == kAudio) {
-
433  for (uint32_t i = 0; i < count; ++i)
-
434  RCHECK(audio_entries[i].ReadWrite(buffer));
-
435  } else {
-
436  NOTIMPLEMENTED();
-
437  }
-
438  }
-
439  return true;
-
440 }
-
441 
- -
443  atom_size = kFullBoxSize + sizeof(uint32_t);
-
444  if (type == kVideo) {
-
445  for (uint32_t i = 0; i < video_entries.size(); ++i)
-
446  atom_size += video_entries[i].ComputeSize();
-
447  } else if (type == kAudio) {
-
448  for (uint32_t i = 0; i < audio_entries.size(); ++i)
-
449  atom_size += audio_entries[i].ComputeSize();
-
450  }
-
451  return atom_size;
-
452 }
-
453 
-
454 DecodingTimeToSample::DecodingTimeToSample() {}
-
455 DecodingTimeToSample::~DecodingTimeToSample() {}
-
456 FourCC DecodingTimeToSample::BoxType() const { return FOURCC_STTS; }
-
457 
- -
459  uint32_t count = decoding_time.size();
-
460  RCHECK(FullBox::ReadWrite(buffer) &&
-
461  buffer->ReadWriteUInt32(&count));
-
462 
-
463  decoding_time.resize(count);
-
464  for (uint32_t i = 0; i < count; ++i) {
-
465  RCHECK(buffer->ReadWriteUInt32(&decoding_time[i].sample_count) &&
-
466  buffer->ReadWriteUInt32(&decoding_time[i].sample_delta));
-
467  }
-
468  return true;
-
469 }
-
470 
- -
472  atom_size = kFullBoxSize + sizeof(uint32_t) +
-
473  sizeof(DecodingTime) * decoding_time.size();
-
474  return atom_size;
-
475 }
-
476 
-
477 CompositionTimeToSample::CompositionTimeToSample() {}
-
478 CompositionTimeToSample::~CompositionTimeToSample() {}
-
479 FourCC CompositionTimeToSample::BoxType() const { return FOURCC_CTTS; }
-
480 
- -
482  uint32_t count = composition_offset.size();
-
483  if (!buffer->Reading()) {
-
484  // Determine whether version 0 or version 1 should be used.
-
485  // Use version 0 if possible, use version 1 if there is a negative
-
486  // sample_offset value.
-
487  version = 0;
-
488  for (uint32_t i = 0; i < count; ++i) {
-
489  if (composition_offset[i].sample_offset < 0) {
-
490  version = 1;
-
491  break;
-
492  }
-
493  }
-
494  }
-
495 
-
496  RCHECK(FullBox::ReadWrite(buffer) &&
-
497  buffer->ReadWriteUInt32(&count));
-
498 
-
499  composition_offset.resize(count);
-
500  for (uint32_t i = 0; i < count; ++i) {
-
501  RCHECK(buffer->ReadWriteUInt32(&composition_offset[i].sample_count));
-
502 
-
503  if (version == 0) {
-
504  uint32_t sample_offset = composition_offset[i].sample_offset;
-
505  RCHECK(buffer->ReadWriteUInt32(&sample_offset));
-
506  composition_offset[i].sample_offset = sample_offset;
-
507  } else {
-
508  int32_t sample_offset = composition_offset[i].sample_offset;
-
509  RCHECK(buffer->ReadWriteInt32(&sample_offset));
-
510  composition_offset[i].sample_offset = sample_offset;
-
511  }
-
512  }
-
513  return true;
-
514 }
-
515 
- -
517  // This box is optional. Skip it if it is empty.
-
518  atom_size = 0;
-
519  if (!composition_offset.empty()) {
-
520  // Structure CompositionOffset contains |sample_offset| (uint32_t) and
-
521  // |sample_offset| (int64_t). The actual size of |sample_offset| is
-
522  // 4 bytes (uint32_t for version 0 and int32_t for version 1).
-
523  const uint32_t kCompositionOffsetSize = sizeof(uint32_t) * 2;
-
524  atom_size = kFullBoxSize + sizeof(uint32_t) +
-
525  kCompositionOffsetSize * composition_offset.size();
-
526  }
-
527  return atom_size;
-
528 }
-
529 
-
530 SampleToChunk::SampleToChunk() {}
-
531 SampleToChunk::~SampleToChunk() {}
-
532 FourCC SampleToChunk::BoxType() const { return FOURCC_STSC; }
-
533 
- -
535  uint32_t count = chunk_info.size();
-
536  RCHECK(FullBox::ReadWrite(buffer) &&
-
537  buffer->ReadWriteUInt32(&count));
-
538 
-
539  chunk_info.resize(count);
-
540  for (uint32_t i = 0; i < count; ++i) {
-
541  RCHECK(buffer->ReadWriteUInt32(&chunk_info[i].first_chunk) &&
-
542  buffer->ReadWriteUInt32(&chunk_info[i].samples_per_chunk) &&
-
543  buffer->ReadWriteUInt32(&chunk_info[i].sample_description_index));
-
544  // first_chunk values are always increasing.
-
545  RCHECK(i == 0 ? chunk_info[i].first_chunk == 1
-
546  : chunk_info[i].first_chunk > chunk_info[i - 1].first_chunk);
-
547  }
-
548  return true;
-
549 }
-
550 
- -
552  atom_size =
-
553  kFullBoxSize + sizeof(uint32_t) + sizeof(ChunkInfo) * chunk_info.size();
-
554  return atom_size;
-
555 }
-
556 
-
557 SampleSize::SampleSize() : sample_size(0), sample_count(0) {}
-
558 SampleSize::~SampleSize() {}
-
559 FourCC SampleSize::BoxType() const { return FOURCC_STSZ; }
-
560 
- -
562  RCHECK(FullBox::ReadWrite(buffer) &&
-
563  buffer->ReadWriteUInt32(&sample_size) &&
-
564  buffer->ReadWriteUInt32(&sample_count));
-
565 
-
566  if (sample_size == 0) {
-
567  if (buffer->Reading())
-
568  sizes.resize(sample_count);
-
569  else
-
570  DCHECK(sample_count == sizes.size());
-
571  for (uint32_t i = 0; i < sample_count; ++i)
-
572  RCHECK(buffer->ReadWriteUInt32(&sizes[i]));
-
573  }
-
574  return true;
-
575 }
-
576 
- -
578  atom_size = kFullBoxSize + sizeof(sample_size) + sizeof(sample_count) +
-
579  (sample_size == 0 ? sizeof(uint32_t) * sizes.size() : 0);
-
580  return atom_size;
-
581 }
-
582 
-
583 CompactSampleSize::CompactSampleSize() : field_size(0) {}
-
584 CompactSampleSize::~CompactSampleSize() {}
-
585 FourCC CompactSampleSize::BoxType() const { return FOURCC_STZ2; }
-
586 
- -
588  uint32_t sample_count = sizes.size();
-
589  RCHECK(FullBox::ReadWrite(buffer) &&
-
590  buffer->IgnoreBytes(3) &&
-
591  buffer->ReadWriteUInt8(&field_size) &&
-
592  buffer->ReadWriteUInt32(&sample_count));
-
593 
-
594  // Reserve one more entry if field size is 4 bits.
-
595  sizes.resize(sample_count + (field_size == 4 ? 1 : 0), 0);
-
596  switch (field_size) {
-
597  case 4:
-
598  for (uint32_t i = 0; i < sample_count; i += 2) {
-
599  if (buffer->Reading()) {
-
600  uint8_t size = 0;
-
601  RCHECK(buffer->ReadWriteUInt8(&size));
-
602  sizes[i] = size >> 4;
-
603  sizes[i + 1] = size & 0x0F;
-
604  } else {
-
605  DCHECK_LT(sizes[i], 16u);
-
606  DCHECK_LT(sizes[i + 1], 16u);
-
607  uint8_t size = (sizes[i] << 4) | sizes[i + 1];
-
608  RCHECK(buffer->ReadWriteUInt8(&size));
-
609  }
-
610  }
-
611  break;
-
612  case 8:
-
613  for (uint32_t i = 0; i < sample_count; ++i) {
-
614  uint8_t size = sizes[i];
-
615  RCHECK(buffer->ReadWriteUInt8(&size));
-
616  sizes[i] = size;
-
617  }
-
618  break;
-
619  case 16:
-
620  for (uint32_t i = 0; i < sample_count; ++i) {
-
621  uint16_t size = sizes[i];
-
622  RCHECK(buffer->ReadWriteUInt16(&size));
-
623  sizes[i] = size;
-
624  }
-
625  break;
-
626  default:
-
627  RCHECK(false);
-
628  }
-
629  sizes.resize(sample_count);
-
630  return true;
-
631 }
-
632 
- -
634  atom_size = kFullBoxSize + sizeof(uint32_t) + sizeof(uint32_t) +
-
635  (field_size * sizes.size() + 7) / 8;
-
636  return atom_size;
-
637 }
-
638 
-
639 ChunkOffset::ChunkOffset() {}
-
640 ChunkOffset::~ChunkOffset() {}
-
641 FourCC ChunkOffset::BoxType() const { return FOURCC_STCO; }
-
642 
- -
644  uint32_t count = offsets.size();
-
645  RCHECK(FullBox::ReadWrite(buffer) &&
-
646  buffer->ReadWriteUInt32(&count));
-
647 
-
648  offsets.resize(count);
-
649  for (uint32_t i = 0; i < count; ++i)
-
650  RCHECK(buffer->ReadWriteUInt64NBytes(&offsets[i], sizeof(uint32_t)));
-
651  return true;
-
652 }
-
653 
- -
655  atom_size =
-
656  kFullBoxSize + sizeof(uint32_t) + sizeof(uint32_t) * offsets.size();
-
657  return atom_size;
-
658 }
-
659 
-
660 ChunkLargeOffset::ChunkLargeOffset() {}
-
661 ChunkLargeOffset::~ChunkLargeOffset() {}
-
662 FourCC ChunkLargeOffset::BoxType() const { return FOURCC_CO64; }
-
663 
- -
665  uint32_t count = offsets.size();
-
666 
-
667  if (!buffer->Reading()) {
-
668  // Switch to ChunkOffset box if it is able to fit in 32 bits offset.
-
669  if (count == 0 || IsFitIn32Bits(offsets[count - 1])) {
-
670  ChunkOffset stco;
-
671  stco.offsets.swap(offsets);
-
672  DCHECK(buffer->writer());
-
673  stco.Write(buffer->writer());
-
674  stco.offsets.swap(offsets);
-
675  return true;
-
676  }
-
677  }
-
678 
-
679  RCHECK(FullBox::ReadWrite(buffer) &&
-
680  buffer->ReadWriteUInt32(&count));
-
681 
-
682  offsets.resize(count);
-
683  for (uint32_t i = 0; i < count; ++i)
-
684  RCHECK(buffer->ReadWriteUInt64(&offsets[i]));
-
685  return true;
-
686 }
-
687 
- -
689  uint32_t count = offsets.size();
-
690  int use_large_offset =
-
691  (count > 0 && !IsFitIn32Bits(offsets[count - 1])) ? 1 : 0;
-
692  atom_size = kFullBoxSize + sizeof(count) +
-
693  sizeof(uint32_t) * (1 + use_large_offset) * offsets.size();
-
694  return atom_size;
-
695 }
-
696 
-
697 SyncSample::SyncSample() {}
-
698 SyncSample::~SyncSample() {}
-
699 FourCC SyncSample::BoxType() const { return FOURCC_STSS; }
-
700 
- -
702  uint32_t count = sample_number.size();
-
703  RCHECK(FullBox::ReadWrite(buffer) &&
-
704  buffer->ReadWriteUInt32(&count));
-
705 
-
706  sample_number.resize(count);
-
707  for (uint32_t i = 0; i < count; ++i)
-
708  RCHECK(buffer->ReadWriteUInt32(&sample_number[i]));
-
709  return true;
-
710 }
-
711 
- -
713  // Sync sample box is optional. Skip it if it is empty.
-
714  atom_size = 0;
-
715  if (!sample_number.empty()) {
-
716  atom_size = kFullBoxSize + sizeof(uint32_t) +
-
717  sizeof(uint32_t) * sample_number.size();
-
718  }
-
719  return atom_size;
-
720 }
-
721 
-
722 SampleTable::SampleTable() {}
-
723 SampleTable::~SampleTable() {}
-
724 FourCC SampleTable::BoxType() const { return FOURCC_STBL; }
-
725 
- -
727  RCHECK(Box::ReadWrite(buffer) &&
-
728  buffer->PrepareChildren() &&
-
729  buffer->ReadWriteChild(&description) &&
-
730  buffer->ReadWriteChild(&decoding_time_to_sample) &&
-
731  buffer->TryReadWriteChild(&composition_time_to_sample) &&
-
732  buffer->ReadWriteChild(&sample_to_chunk));
-
733 
-
734  if (buffer->Reading()) {
-
735  BoxReader* reader = buffer->reader();
-
736  DCHECK(reader);
-
737 
-
738  // Either SampleSize or CompactSampleSize must present.
-
739  if (reader->ChildExist(&sample_size)) {
-
740  RCHECK(reader->ReadChild(&sample_size));
-
741  } else {
-
742  CompactSampleSize compact_sample_size;
-
743  RCHECK(reader->ReadChild(&compact_sample_size));
-
744  sample_size.sample_size = 0;
-
745  sample_size.sample_count = compact_sample_size.sizes.size();
-
746  sample_size.sizes.swap(compact_sample_size.sizes);
-
747  }
-
748 
-
749  // Either ChunkOffset or ChunkLargeOffset must present.
-
750  if (reader->ChildExist(&chunk_large_offset)) {
-
751  RCHECK(reader->ReadChild(&chunk_large_offset));
-
752  } else {
-
753  ChunkOffset chunk_offset;
-
754  RCHECK(reader->ReadChild(&chunk_offset));
-
755  chunk_large_offset.offsets.swap(chunk_offset.offsets);
-
756  }
-
757  } else {
-
758  RCHECK(sample_size.ReadWrite(buffer) &&
-
759  chunk_large_offset.ReadWrite(buffer));
-
760  }
-
761  RCHECK(buffer->TryReadWriteChild(&sync_sample));
-
762  return true;
-
763 }
-
764 
- -
766  atom_size = kBoxSize + description.ComputeSize() +
-
767  decoding_time_to_sample.ComputeSize() +
-
768  composition_time_to_sample.ComputeSize() +
-
769  sample_to_chunk.ComputeSize() + sample_size.ComputeSize() +
-
770  chunk_large_offset.ComputeSize() + sync_sample.ComputeSize();
-
771  return atom_size;
-
772 }
-
773 
-
774 EditList::EditList() {}
-
775 EditList::~EditList() {}
-
776 FourCC EditList::BoxType() const { return FOURCC_ELST; }
-
777 
- -
779  uint32_t count = edits.size();
-
780  RCHECK(FullBox::ReadWrite(buffer) && buffer->ReadWriteUInt32(&count));
-
781  edits.resize(count);
-
782 
-
783  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
-
784  for (uint32_t i = 0; i < count; ++i) {
-
785  RCHECK(
-
786  buffer->ReadWriteUInt64NBytes(&edits[i].segment_duration, num_bytes) &&
-
787  buffer->ReadWriteInt64NBytes(&edits[i].media_time, num_bytes) &&
-
788  buffer->ReadWriteInt16(&edits[i].media_rate_integer) &&
-
789  buffer->ReadWriteInt16(&edits[i].media_rate_fraction));
-
790  }
-
791  return true;
-
792 }
-
793 
- -
795  // EditList box is optional. Skip it if it is empty.
-
796  atom_size = 0;
-
797  if (edits.empty())
-
798  return 0;
-
799 
-
800  version = 0;
-
801  for (uint32_t i = 0; i < edits.size(); ++i) {
-
802  if (!IsFitIn32Bits(edits[i].segment_duration, edits[i].media_time)) {
-
803  version = 1;
-
804  break;
-
805  }
-
806  }
-
807  atom_size = kFullBoxSize + sizeof(uint32_t) +
-
808  (sizeof(uint32_t) * (1 + version) * 2 + sizeof(int16_t) * 2) *
-
809  edits.size();
-
810  return atom_size;
-
811 }
-
812 
-
813 Edit::Edit() {}
-
814 Edit::~Edit() {}
-
815 FourCC Edit::BoxType() const { return FOURCC_EDTS; }
-
816 
-
817 bool Edit::ReadWrite(BoxBuffer* buffer) {
-
818  return Box::ReadWrite(buffer) &&
-
819  buffer->PrepareChildren() &&
-
820  buffer->ReadWriteChild(&list);
-
821 }
-
822 
-
823 uint32_t Edit::ComputeSize() {
-
824  // Edit box is optional. Skip it if it is empty.
-
825  atom_size = 0;
-
826  if (!list.edits.empty())
-
827  atom_size = kBoxSize + list.ComputeSize();
-
828  return atom_size;
-
829 }
-
830 
-
831 HandlerReference::HandlerReference() : type(kInvalid) {}
-
832 HandlerReference::~HandlerReference() {}
-
833 FourCC HandlerReference::BoxType() const { return FOURCC_HDLR; }
-
834 
- -
836  FourCC hdlr_type = FOURCC_NULL;
-
837  std::vector<uint8_t> handler_name;
-
838  if (!buffer->Reading()) {
-
839  if (type == kVideo) {
-
840  hdlr_type = FOURCC_VIDE;
-
841  handler_name.assign(kVideoHandlerName,
-
842  kVideoHandlerName + arraysize(kVideoHandlerName));
-
843  } else if (type == kAudio) {
-
844  hdlr_type = FOURCC_SOUN;
-
845  handler_name.assign(kAudioHandlerName,
-
846  kAudioHandlerName + arraysize(kAudioHandlerName));
-
847  } else {
-
848  NOTIMPLEMENTED();
-
849  return false;
-
850  }
-
851  }
-
852  RCHECK(FullBox::ReadWrite(buffer) &&
-
853  buffer->IgnoreBytes(4) && // predefined.
-
854  buffer->ReadWriteFourCC(&hdlr_type));
-
855  if (buffer->Reading()) {
-
856  // Note: for reading, remaining fields in box ignored.
-
857  if (hdlr_type == FOURCC_VIDE) {
-
858  type = kVideo;
-
859  } else if (hdlr_type == FOURCC_SOUN) {
-
860  type = kAudio;
-
861  } else {
-
862  type = kInvalid;
-
863  }
-
864  } else {
-
865  RCHECK(buffer->IgnoreBytes(12) && // reserved.
-
866  buffer->ReadWriteVector(&handler_name, handler_name.size()));
-
867  }
-
868  return true;
-
869 }
-
870 
- -
872  atom_size =
-
873  kFullBoxSize + kFourCCSize + 16 + // 16 bytes Reserved
-
874  (type == kVideo ? sizeof(kVideoHandlerName) : sizeof(kAudioHandlerName));
-
875  return atom_size;
-
876 }
-
877 
-
878 CodecConfigurationRecord::CodecConfigurationRecord() : box_type(FOURCC_NULL) {}
-
879 CodecConfigurationRecord::~CodecConfigurationRecord() {}
-
880 FourCC CodecConfigurationRecord::BoxType() const {
-
881  // CodecConfigurationRecord should be parsed according to format recovered in
-
882  // VideoSampleEntry. |box_type| is determined dynamically there.
-
883  return box_type;
-
884 }
-
885 
- -
887  RCHECK(Box::ReadWrite(buffer));
-
888  if (buffer->Reading()) {
-
889  RCHECK(buffer->ReadWriteVector(&data, buffer->Size() - buffer->Pos()));
-
890  } else {
-
891  RCHECK(buffer->ReadWriteVector(&data, data.size()));
-
892  }
-
893  return true;
-
894 }
-
895 
- -
897  atom_size = 0;
-
898  if (!data.empty())
-
899  atom_size = kBoxSize + data.size();
-
900  return atom_size;
-
901 }
-
902 
-
903 PixelAspectRatioBox::PixelAspectRatioBox() : h_spacing(0), v_spacing(0) {}
-
904 PixelAspectRatioBox::~PixelAspectRatioBox() {}
-
905 FourCC PixelAspectRatioBox::BoxType() const { return FOURCC_PASP; }
-
906 
- -
908  RCHECK(Box::ReadWrite(buffer) &&
-
909  buffer->ReadWriteUInt32(&h_spacing) &&
-
910  buffer->ReadWriteUInt32(&v_spacing));
-
911  return true;
-
912 }
-
913 
- -
915  // This box is optional. Skip it if it is not initialized.
-
916  atom_size = 0;
-
917  if (h_spacing != 0 || v_spacing != 0) {
-
918  // Both values must be positive.
-
919  DCHECK(h_spacing != 0 && v_spacing != 0);
-
920  atom_size = kBoxSize + sizeof(h_spacing) + sizeof(v_spacing);
-
921  }
-
922  return atom_size;
-
923 }
-
924 
-
925 VideoSampleEntry::VideoSampleEntry()
-
926  : format(FOURCC_NULL), data_reference_index(1), width(0), height(0) {}
-
927 
-
928 VideoSampleEntry::~VideoSampleEntry() {}
-
929 FourCC VideoSampleEntry::BoxType() const {
-
930  LOG(ERROR) << "VideoSampleEntry should be parsed according to the "
-
931  << "handler type recovered in its Media ancestor.";
-
932  return FOURCC_NULL;
-
933 }
-
934 
- -
936  if (buffer->Reading()) {
-
937  DCHECK(buffer->reader());
-
938  format = buffer->reader()->type();
-
939  } else {
-
940  RCHECK(buffer->ReadWriteUInt32(&atom_size) &&
-
941  buffer->ReadWriteFourCC(&format));
-
942  }
-
943 
-
944  uint32_t video_resolution = kVideoResolution;
-
945  uint16_t video_frame_count = kVideoFrameCount;
-
946  uint16_t video_depth = kVideoDepth;
-
947  int16_t predefined = -1;
-
948  RCHECK(buffer->IgnoreBytes(6) && // reserved.
-
949  buffer->ReadWriteUInt16(&data_reference_index) &&
-
950  buffer->IgnoreBytes(16) && // predefined 0.
-
951  buffer->ReadWriteUInt16(&width) &&
-
952  buffer->ReadWriteUInt16(&height) &&
-
953  buffer->ReadWriteUInt32(&video_resolution) &&
-
954  buffer->ReadWriteUInt32(&video_resolution) &&
-
955  buffer->IgnoreBytes(4) && // reserved.
-
956  buffer->ReadWriteUInt16(&video_frame_count) &&
-
957  buffer->IgnoreBytes(32) && // comparessor_name.
-
958  buffer->ReadWriteUInt16(&video_depth) &&
-
959  buffer->ReadWriteInt16(&predefined));
-
960 
-
961  RCHECK(buffer->PrepareChildren());
-
962 
-
963  if (format == FOURCC_ENCV) {
-
964  if (buffer->Reading()) {
-
965  // Continue scanning until a recognized protection scheme is found,
-
966  // or until we run out of protection schemes.
-
967  while (sinf.type.type != FOURCC_CENC) {
-
968  if (!buffer->ReadWriteChild(&sinf))
-
969  return false;
-
970  }
-
971  } else {
-
972  RCHECK(buffer->ReadWriteChild(&sinf));
-
973  }
-
974  }
-
975 
-
976  const FourCC actual_format = GetActualFormat();
-
977  switch (actual_format) {
-
978  case FOURCC_AVC1:
-
979  codec_config_record.box_type = FOURCC_AVCC;
-
980  break;
-
981  default:
-
982  LOG(ERROR) << FourCCToString(actual_format) << " is not supported.";
-
983  return false;
-
984  }
-
985  RCHECK(buffer->ReadWriteChild(&codec_config_record));
-
986  RCHECK(buffer->TryReadWriteChild(&pixel_aspect));
-
987  return true;
-
988 }
-
989 
- -
991  atom_size = kBoxSize + sizeof(data_reference_index) + sizeof(width) +
-
992  sizeof(height) + sizeof(kVideoResolution) * 2 +
-
993  sizeof(kVideoFrameCount) + sizeof(kVideoDepth) +
-
994  pixel_aspect.ComputeSize() + sinf.ComputeSize() +
-
995  codec_config_record.ComputeSize() + kCompressorNameSize +
-
996  6 + 4 + 16 + 2; // 6 + 4 bytes reserved, 16 + 2 bytes predefined.
-
997  return atom_size;
-
998 }
-
999 
-
1000 ElementaryStreamDescriptor::ElementaryStreamDescriptor() {}
-
1001 ElementaryStreamDescriptor::~ElementaryStreamDescriptor() {}
-
1002 FourCC ElementaryStreamDescriptor::BoxType() const { return FOURCC_ESDS; }
-
1003 
- -
1005  RCHECK(FullBox::ReadWrite(buffer));
-
1006  if (buffer->Reading()) {
-
1007  std::vector<uint8_t> data;
-
1008  RCHECK(buffer->ReadWriteVector(&data, buffer->Size() - buffer->Pos()));
-
1009  RCHECK(es_descriptor.Parse(data));
-
1010  if (es_descriptor.IsAAC()) {
-
1011  RCHECK(aac_audio_specific_config.Parse(
-
1012  es_descriptor.decoder_specific_info()));
-
1013  }
-
1014  } else {
-
1015  DCHECK(buffer->writer());
-
1016  es_descriptor.Write(buffer->writer());
-
1017  }
-
1018  return true;
-
1019 }
-
1020 
- -
1022  // This box is optional. Skip it if not initialized.
-
1023  atom_size = 0;
-
1024  if (es_descriptor.object_type() != kForbidden)
-
1025  atom_size = kFullBoxSize + es_descriptor.ComputeSize();
-
1026  return atom_size;
-
1027 }
-
1028 
-
1029 AudioSampleEntry::AudioSampleEntry()
-
1030  : format(FOURCC_NULL),
-
1031  data_reference_index(1),
-
1032  channelcount(2),
-
1033  samplesize(16),
-
1034  samplerate(0) {}
-
1035 
-
1036 AudioSampleEntry::~AudioSampleEntry() {}
-
1037 
-
1038 FourCC AudioSampleEntry::BoxType() const {
-
1039  LOG(ERROR) << "AudioSampleEntry should be parsed according to the "
-
1040  << "handler type recovered in its Media ancestor.";
-
1041  return FOURCC_NULL;
-
1042 }
-
1043 
- -
1045  if (buffer->Reading()) {
-
1046  DCHECK(buffer->reader());
-
1047  format = buffer->reader()->type();
-
1048  } else {
-
1049  RCHECK(buffer->ReadWriteUInt32(&atom_size) &&
-
1050  buffer->ReadWriteFourCC(&format));
-
1051  }
-
1052 
-
1053  // Convert from integer to 16.16 fixed point for writing.
-
1054  samplerate <<= 16;
-
1055  RCHECK(buffer->IgnoreBytes(6) && // reserved.
-
1056  buffer->ReadWriteUInt16(&data_reference_index) &&
-
1057  buffer->IgnoreBytes(8) && // reserved.
-
1058  buffer->ReadWriteUInt16(&channelcount) &&
-
1059  buffer->ReadWriteUInt16(&samplesize) &&
-
1060  buffer->IgnoreBytes(4) && // predefined.
-
1061  buffer->ReadWriteUInt32(&samplerate));
-
1062  // Convert from 16.16 fixed point to integer.
-
1063  samplerate >>= 16;
-
1064 
-
1065  RCHECK(buffer->PrepareChildren());
-
1066  if (format == FOURCC_ENCA) {
-
1067  if (buffer->Reading()) {
-
1068  // Continue scanning until a recognized protection scheme is found,
-
1069  // or until we run out of protection schemes.
-
1070  while (sinf.type.type != FOURCC_CENC) {
-
1071  if (!buffer->ReadWriteChild(&sinf))
-
1072  return false;
-
1073  }
-
1074  } else {
-
1075  RCHECK(buffer->ReadWriteChild(&sinf));
-
1076  }
-
1077  }
-
1078 
-
1079  // ESDS is not valid in case of EAC3.
-
1080  RCHECK(buffer->TryReadWriteChild(&esds));
-
1081  return true;
-
1082 }
-
1083 
- -
1085  atom_size = kBoxSize + sizeof(data_reference_index) + sizeof(channelcount) +
-
1086  sizeof(samplesize) + sizeof(samplerate) + sinf.ComputeSize() +
-
1087  esds.ComputeSize() + 6 + 8 + // 6 + 8 bytes reserved.
-
1088  4; // 4 bytes predefined.
-
1089  return atom_size;
-
1090 }
-
1091 
-
1092 MediaHeader::MediaHeader()
-
1093  : creation_time(0), modification_time(0), timescale(0), duration(0) {
-
1094  language[0] = 0;
-
1095 }
-
1096 MediaHeader::~MediaHeader() {}
-
1097 FourCC MediaHeader::BoxType() const { return FOURCC_MDHD; }
-
1098 
- -
1100  RCHECK(FullBox::ReadWrite(buffer));
-
1101 
-
1102  uint8_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
-
1103  RCHECK(buffer->ReadWriteUInt64NBytes(&creation_time, num_bytes) &&
-
1104  buffer->ReadWriteUInt64NBytes(&modification_time, num_bytes) &&
-
1105  buffer->ReadWriteUInt32(&timescale) &&
-
1106  buffer->ReadWriteUInt64NBytes(&duration, num_bytes));
-
1107 
-
1108  if (buffer->Reading()) {
-
1109  // Read language codes into temp first then use BitReader to read the
-
1110  // values. ISO-639-2/T language code: unsigned int(5)[3] language (2 bytes).
-
1111  std::vector<uint8_t> temp;
-
1112  RCHECK(buffer->ReadWriteVector(&temp, 2));
-
1113 
-
1114  BitReader bit_reader(&temp[0], 2);
-
1115  bit_reader.SkipBits(1);
-
1116  for (int i = 0; i < 3; ++i) {
-
1117  CHECK(bit_reader.ReadBits(5, &language[i]));
-
1118  language[i] += 0x60;
-
1119  }
-
1120  language[3] = '\0';
-
1121  } else {
-
1122  // Set up default language if it is not set.
-
1123  const char kUndefinedLanguage[] = "und";
-
1124  if (language[0] == 0)
-
1125  strcpy(language, kUndefinedLanguage);
+
62 } // namespace
+
63 
+
64 namespace edash_packager {
+
65 namespace media {
+
66 namespace mp4 {
+
67 
+
68 FileType::FileType() : major_brand(FOURCC_NULL), minor_version(0) {}
+
69 FileType::~FileType() {}
+
70 FourCC FileType::BoxType() const { return FOURCC_FTYP; }
+
71 
+ +
73  RCHECK(Box::ReadWrite(buffer) &&
+
74  buffer->ReadWriteFourCC(&major_brand) &&
+
75  buffer->ReadWriteUInt32(&minor_version));
+
76  size_t num_brands;
+
77  if (buffer->Reading()) {
+
78  num_brands = (buffer->Size() - buffer->Pos()) / sizeof(FourCC);
+
79  compatible_brands.resize(num_brands);
+
80  } else {
+
81  num_brands = compatible_brands.size();
+
82  }
+
83  for (size_t i = 0; i < num_brands; ++i)
+
84  RCHECK(buffer->ReadWriteFourCC(&compatible_brands[i]));
+
85  return true;
+
86 }
+
87 
+ +
89  atom_size = kBoxSize + kFourCCSize + sizeof(minor_version) +
+
90  kFourCCSize * compatible_brands.size();
+
91  return atom_size;
+
92 }
+
93 
+
94 SegmentType::SegmentType() {}
+
95 SegmentType::~SegmentType() {}
+
96 FourCC SegmentType::BoxType() const { return FOURCC_STYP; }
+
97 
+ +
99  return FileType::ReadWrite(buffer);
+
100 }
+
101 
+ +
103  return FileType::ComputeSize();
+
104 }
+
105 
+
106 ProtectionSystemSpecificHeader::ProtectionSystemSpecificHeader() {}
+
107 ProtectionSystemSpecificHeader::~ProtectionSystemSpecificHeader() {}
+
108 FourCC ProtectionSystemSpecificHeader::BoxType() const { return FOURCC_PSSH; }
+
109 
+ +
111  if (!buffer->Reading() && !raw_box.empty()) {
+
112  // Write the raw box directly.
+
113  buffer->writer()->AppendVector(raw_box);
+
114  return true;
+
115  }
+
116 
+
117  uint32_t size = data.size();
+
118  RCHECK(FullBox::ReadWrite(buffer) &&
+
119  buffer->ReadWriteVector(&system_id, 16) &&
+
120  buffer->ReadWriteUInt32(&size) &&
+
121  buffer->ReadWriteVector(&data, size));
+
122 
+
123  if (buffer->Reading()) {
+
124  // Copy the entire box, including the header, for passing to EME as
+
125  // initData.
+
126  DCHECK(raw_box.empty());
+
127  BoxReader* reader = buffer->reader();
+
128  DCHECK(reader);
+
129  raw_box.assign(reader->data(), reader->data() + reader->size());
+
130  }
+
131  return true;
+
132 }
+
133 
+ +
135  if (!raw_box.empty()) {
+
136  atom_size = raw_box.size();
+
137  } else {
+
138  atom_size =
+
139  kFullBoxSize + system_id.size() + sizeof(uint32_t) + data.size();
+
140  }
+
141  return atom_size;
+
142 }
+
143 
+
144 SampleAuxiliaryInformationOffset::SampleAuxiliaryInformationOffset() {}
+
145 SampleAuxiliaryInformationOffset::~SampleAuxiliaryInformationOffset() {}
+
146 FourCC SampleAuxiliaryInformationOffset::BoxType() const { return FOURCC_SAIO; }
+
147 
+ +
149  RCHECK(FullBox::ReadWrite(buffer));
+
150  if (flags & 1)
+
151  RCHECK(buffer->IgnoreBytes(8)); // aux_info_type and parameter.
+
152 
+
153  uint32_t count = offsets.size();
+
154  RCHECK(buffer->ReadWriteUInt32(&count));
+
155  offsets.resize(count);
+
156 
+
157  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
+
158  for (uint32_t i = 0; i < count; ++i)
+
159  RCHECK(buffer->ReadWriteUInt64NBytes(&offsets[i], num_bytes));
+
160  return true;
+
161 }
+
162 
+ +
164  // This box is optional. Skip it if it is empty.
+
165  atom_size = 0;
+
166  if (offsets.size() != 0) {
+
167  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
+
168  atom_size = kFullBoxSize + sizeof(uint32_t) + num_bytes * offsets.size();
+
169  }
+
170  return atom_size;
+
171 }
+
172 
+
173 SampleAuxiliaryInformationSize::SampleAuxiliaryInformationSize()
+
174  : default_sample_info_size(0), sample_count(0) {}
+
175 SampleAuxiliaryInformationSize::~SampleAuxiliaryInformationSize() {}
+
176 FourCC SampleAuxiliaryInformationSize::BoxType() const { return FOURCC_SAIZ; }
+
177 
+ +
179  RCHECK(FullBox::ReadWrite(buffer));
+
180  if (flags & 1)
+
181  RCHECK(buffer->IgnoreBytes(8));
+
182 
+
183  RCHECK(buffer->ReadWriteUInt8(&default_sample_info_size) &&
+
184  buffer->ReadWriteUInt32(&sample_count));
+
185  if (default_sample_info_size == 0)
+
186  RCHECK(buffer->ReadWriteVector(&sample_info_sizes, sample_count));
+
187  return true;
+
188 }
+
189 
+ +
191  // This box is optional. Skip it if it is empty.
+
192  atom_size = 0;
+
193  if (sample_count != 0) {
+
194  atom_size = kFullBoxSize + sizeof(default_sample_info_size) +
+
195  sizeof(sample_count) +
+
196  (default_sample_info_size == 0 ? sample_info_sizes.size() : 0);
+
197  }
+
198  return atom_size;
+
199 }
+
200 
+
201 OriginalFormat::OriginalFormat() : format(FOURCC_NULL) {}
+
202 OriginalFormat::~OriginalFormat() {}
+
203 FourCC OriginalFormat::BoxType() const { return FOURCC_FRMA; }
+
204 
+ +
206  return Box::ReadWrite(buffer) && buffer->ReadWriteFourCC(&format);
+
207 }
+
208 
+ +
210  atom_size = kBoxSize + kFourCCSize;
+
211  return atom_size;
+
212 }
+
213 
+
214 SchemeType::SchemeType() : type(FOURCC_NULL), version(0) {}
+
215 SchemeType::~SchemeType() {}
+
216 FourCC SchemeType::BoxType() const { return FOURCC_SCHM; }
+
217 
+ +
219  RCHECK(FullBox::ReadWrite(buffer) &&
+
220  buffer->ReadWriteFourCC(&type) &&
+
221  buffer->ReadWriteUInt32(&version));
+
222  return true;
+
223 }
+
224 
+ +
226  atom_size = kFullBoxSize + kFourCCSize + sizeof(version);
+
227  return atom_size;
+
228 }
+
229 
+
230 TrackEncryption::TrackEncryption()
+
231  : is_encrypted(false), default_iv_size(0), default_kid(16, 0) {}
+
232 TrackEncryption::~TrackEncryption() {}
+
233 FourCC TrackEncryption::BoxType() const { return FOURCC_TENC; }
+
234 
+ +
236  if (!buffer->Reading()) {
+
237  if (default_kid.size() != kCencKeyIdSize) {
+
238  LOG(WARNING) << "CENC defines key id length of " << kCencKeyIdSize
+
239  << " bytes; got " << default_kid.size()
+
240  << ". Resized accordingly.";
+
241  default_kid.resize(kCencKeyIdSize);
+
242  }
+
243  }
+
244 
+
245  uint8_t flag = is_encrypted ? 1 : 0;
+
246  RCHECK(FullBox::ReadWrite(buffer) &&
+
247  buffer->IgnoreBytes(2) && // reserved.
+
248  buffer->ReadWriteUInt8(&flag) &&
+
249  buffer->ReadWriteUInt8(&default_iv_size) &&
+
250  buffer->ReadWriteVector(&default_kid, kCencKeyIdSize));
+
251  if (buffer->Reading()) {
+
252  is_encrypted = (flag != 0);
+
253  if (is_encrypted) {
+
254  RCHECK(default_iv_size == 8 || default_iv_size == 16);
+
255  } else {
+
256  RCHECK(default_iv_size == 0);
+
257  }
+
258  }
+
259  return true;
+
260 }
+
261 
+ +
263  atom_size = kFullBoxSize + sizeof(uint32_t) + kCencKeyIdSize;
+
264  return atom_size;
+
265 }
+
266 
+
267 SchemeInfo::SchemeInfo() {}
+
268 SchemeInfo::~SchemeInfo() {}
+
269 FourCC SchemeInfo::BoxType() const { return FOURCC_SCHI; }
+
270 
+ +
272  RCHECK(Box::ReadWrite(buffer) && buffer->PrepareChildren() &&
+
273  buffer->ReadWriteChild(&track_encryption));
+
274  return true;
+
275 }
+
276 
+ +
278  atom_size = kBoxSize + track_encryption.ComputeSize();
+
279  return atom_size;
+
280 }
+
281 
+
282 ProtectionSchemeInfo::ProtectionSchemeInfo() {}
+
283 ProtectionSchemeInfo::~ProtectionSchemeInfo() {}
+
284 FourCC ProtectionSchemeInfo::BoxType() const { return FOURCC_SINF; }
+
285 
+ +
287  RCHECK(Box::ReadWrite(buffer) &&
+
288  buffer->PrepareChildren() &&
+
289  buffer->ReadWriteChild(&format) &&
+
290  buffer->ReadWriteChild(&type));
+
291  if (type.type == FOURCC_CENC)
+
292  RCHECK(buffer->ReadWriteChild(&info));
+
293  // Other protection schemes are silently ignored. Since the protection scheme
+
294  // type can't be determined until this box is opened, we return 'true' for
+
295  // non-CENC protection scheme types. It is the parent box's responsibility to
+
296  // ensure that this scheme type is a supported one.
+
297  return true;
+
298 }
+
299 
+ +
301  // Skip sinf box if it is not initialized.
+
302  atom_size = 0;
+
303  if (format.format != FOURCC_NULL) {
+
304  atom_size = kBoxSize + format.ComputeSize() + type.ComputeSize() +
+
305  info.ComputeSize();
+
306  }
+
307  return atom_size;
+
308 }
+
309 
+
310 MovieHeader::MovieHeader()
+
311  : creation_time(0),
+
312  modification_time(0),
+
313  timescale(0),
+
314  duration(0),
+
315  rate(1 << 16),
+
316  volume(1 << 8),
+
317  next_track_id(0) {}
+
318 MovieHeader::~MovieHeader() {}
+
319 FourCC MovieHeader::BoxType() const { return FOURCC_MVHD; }
+
320 
+ +
322  RCHECK(FullBox::ReadWrite(buffer));
+
323 
+
324  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
+
325  RCHECK(buffer->ReadWriteUInt64NBytes(&creation_time, num_bytes) &&
+
326  buffer->ReadWriteUInt64NBytes(&modification_time, num_bytes) &&
+
327  buffer->ReadWriteUInt32(&timescale) &&
+
328  buffer->ReadWriteUInt64NBytes(&duration, num_bytes));
+
329 
+
330  std::vector<uint8_t> matrix(kUnityMatrix,
+
331  kUnityMatrix + arraysize(kUnityMatrix));
+
332  RCHECK(buffer->ReadWriteInt32(&rate) &&
+
333  buffer->ReadWriteInt16(&volume) &&
+
334  buffer->IgnoreBytes(10) && // reserved
+
335  buffer->ReadWriteVector(&matrix, matrix.size()) &&
+
336  buffer->IgnoreBytes(24) && // predefined zero
+
337  buffer->ReadWriteUInt32(&next_track_id));
+
338  return true;
+
339 }
+
340 
+ +
342  version = IsFitIn32Bits(creation_time, modification_time, duration) ? 0 : 1;
+
343  atom_size = kFullBoxSize + sizeof(uint32_t) * (1 + version) * 3 +
+
344  sizeof(timescale) + sizeof(rate) + sizeof(volume) +
+
345  sizeof(next_track_id) + sizeof(kUnityMatrix) + 10 +
+
346  24; // 10 bytes reserved, 24 bytes predefined.
+
347  return atom_size;
+
348 }
+
349 
+
350 TrackHeader::TrackHeader()
+
351  : creation_time(0),
+
352  modification_time(0),
+
353  track_id(0),
+
354  duration(0),
+
355  layer(0),
+
356  alternate_group(0),
+
357  volume(-1),
+
358  width(0),
+
359  height(0) {
+
360  flags = kTrackEnabled | kTrackInMovie;
+
361 }
+
362 TrackHeader::~TrackHeader() {}
+
363 FourCC TrackHeader::BoxType() const { return FOURCC_TKHD; }
+
364 
+ +
366  RCHECK(FullBox::ReadWrite(buffer));
+
367 
+
368  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
+
369  RCHECK(buffer->ReadWriteUInt64NBytes(&creation_time, num_bytes) &&
+
370  buffer->ReadWriteUInt64NBytes(&modification_time, num_bytes) &&
+
371  buffer->ReadWriteUInt32(&track_id) &&
+
372  buffer->IgnoreBytes(4) && // reserved
+
373  buffer->ReadWriteUInt64NBytes(&duration, num_bytes));
+
374 
+
375  if (!buffer->Reading()) {
+
376  // Set default value for volume, if track is audio, 0x100 else 0.
+
377  if (volume == -1)
+
378  volume = (width != 0 && height != 0) ? 0 : 0x100;
+
379  }
+
380  std::vector<uint8_t> matrix(kUnityMatrix,
+
381  kUnityMatrix + arraysize(kUnityMatrix));
+
382  RCHECK(buffer->IgnoreBytes(8) && // reserved
+
383  buffer->ReadWriteInt16(&layer) &&
+
384  buffer->ReadWriteInt16(&alternate_group) &&
+
385  buffer->ReadWriteInt16(&volume) &&
+
386  buffer->IgnoreBytes(2) && // reserved
+
387  buffer->ReadWriteVector(&matrix, matrix.size()) &&
+
388  buffer->ReadWriteUInt32(&width) &&
+
389  buffer->ReadWriteUInt32(&height));
+
390  return true;
+
391 }
+
392 
+ +
394  version = IsFitIn32Bits(creation_time, modification_time, duration) ? 0 : 1;
+
395  atom_size = kFullBoxSize + sizeof(track_id) +
+
396  sizeof(uint32_t) * (1 + version) * 3 + sizeof(layer) +
+
397  sizeof(alternate_group) + sizeof(volume) + sizeof(width) +
+
398  sizeof(height) + sizeof(kUnityMatrix) + 14; // 14 bytes reserved.
+
399  return atom_size;
+
400 }
+
401 
+
402 SampleDescription::SampleDescription() : type(kInvalid) {}
+
403 SampleDescription::~SampleDescription() {}
+
404 FourCC SampleDescription::BoxType() const { return FOURCC_STSD; }
+
405 
+ +
407  uint32_t count = 0;
+
408  if (type == kVideo)
+
409  count = video_entries.size();
+
410  else
+
411  count = audio_entries.size();
+
412  RCHECK(FullBox::ReadWrite(buffer) &&
+
413  buffer->ReadWriteUInt32(&count));
+
414 
+
415  if (buffer->Reading()) {
+
416  BoxReader* reader = buffer->reader();
+
417  DCHECK(reader);
+
418  video_entries.clear();
+
419  audio_entries.clear();
+
420  // Note: this value is preset before scanning begins. See comments in the
+
421  // Parse(Media*) function.
+
422  if (type == kVideo) {
+
423  RCHECK(reader->ReadAllChildren(&video_entries));
+
424  RCHECK(video_entries.size() == count);
+
425  } else if (type == kAudio) {
+
426  RCHECK(reader->ReadAllChildren(&audio_entries));
+
427  RCHECK(audio_entries.size() == count);
+
428  }
+
429  } else {
+
430  DCHECK_LT(0u, count);
+
431  if (type == kVideo) {
+
432  for (uint32_t i = 0; i < count; ++i)
+
433  RCHECK(video_entries[i].ReadWrite(buffer));
+
434  } else if (type == kAudio) {
+
435  for (uint32_t i = 0; i < count; ++i)
+
436  RCHECK(audio_entries[i].ReadWrite(buffer));
+
437  } else {
+
438  NOTIMPLEMENTED();
+
439  }
+
440  }
+
441  return true;
+
442 }
+
443 
+ +
445  atom_size = kFullBoxSize + sizeof(uint32_t);
+
446  if (type == kVideo) {
+
447  for (uint32_t i = 0; i < video_entries.size(); ++i)
+
448  atom_size += video_entries[i].ComputeSize();
+
449  } else if (type == kAudio) {
+
450  for (uint32_t i = 0; i < audio_entries.size(); ++i)
+
451  atom_size += audio_entries[i].ComputeSize();
+
452  }
+
453  return atom_size;
+
454 }
+
455 
+
456 DecodingTimeToSample::DecodingTimeToSample() {}
+
457 DecodingTimeToSample::~DecodingTimeToSample() {}
+
458 FourCC DecodingTimeToSample::BoxType() const { return FOURCC_STTS; }
+
459 
+ +
461  uint32_t count = decoding_time.size();
+
462  RCHECK(FullBox::ReadWrite(buffer) &&
+
463  buffer->ReadWriteUInt32(&count));
+
464 
+
465  decoding_time.resize(count);
+
466  for (uint32_t i = 0; i < count; ++i) {
+
467  RCHECK(buffer->ReadWriteUInt32(&decoding_time[i].sample_count) &&
+
468  buffer->ReadWriteUInt32(&decoding_time[i].sample_delta));
+
469  }
+
470  return true;
+
471 }
+
472 
+ +
474  atom_size = kFullBoxSize + sizeof(uint32_t) +
+
475  sizeof(DecodingTime) * decoding_time.size();
+
476  return atom_size;
+
477 }
+
478 
+
479 CompositionTimeToSample::CompositionTimeToSample() {}
+
480 CompositionTimeToSample::~CompositionTimeToSample() {}
+
481 FourCC CompositionTimeToSample::BoxType() const { return FOURCC_CTTS; }
+
482 
+ +
484  uint32_t count = composition_offset.size();
+
485  if (!buffer->Reading()) {
+
486  // Determine whether version 0 or version 1 should be used.
+
487  // Use version 0 if possible, use version 1 if there is a negative
+
488  // sample_offset value.
+
489  version = 0;
+
490  for (uint32_t i = 0; i < count; ++i) {
+
491  if (composition_offset[i].sample_offset < 0) {
+
492  version = 1;
+
493  break;
+
494  }
+
495  }
+
496  }
+
497 
+
498  RCHECK(FullBox::ReadWrite(buffer) &&
+
499  buffer->ReadWriteUInt32(&count));
+
500 
+
501  composition_offset.resize(count);
+
502  for (uint32_t i = 0; i < count; ++i) {
+
503  RCHECK(buffer->ReadWriteUInt32(&composition_offset[i].sample_count));
+
504 
+
505  if (version == 0) {
+
506  uint32_t sample_offset = composition_offset[i].sample_offset;
+
507  RCHECK(buffer->ReadWriteUInt32(&sample_offset));
+
508  composition_offset[i].sample_offset = sample_offset;
+
509  } else {
+
510  int32_t sample_offset = composition_offset[i].sample_offset;
+
511  RCHECK(buffer->ReadWriteInt32(&sample_offset));
+
512  composition_offset[i].sample_offset = sample_offset;
+
513  }
+
514  }
+
515  return true;
+
516 }
+
517 
+ +
519  // This box is optional. Skip it if it is empty.
+
520  atom_size = 0;
+
521  if (!composition_offset.empty()) {
+
522  // Structure CompositionOffset contains |sample_offset| (uint32_t) and
+
523  // |sample_offset| (int64_t). The actual size of |sample_offset| is
+
524  // 4 bytes (uint32_t for version 0 and int32_t for version 1).
+
525  const uint32_t kCompositionOffsetSize = sizeof(uint32_t) * 2;
+
526  atom_size = kFullBoxSize + sizeof(uint32_t) +
+
527  kCompositionOffsetSize * composition_offset.size();
+
528  }
+
529  return atom_size;
+
530 }
+
531 
+
532 SampleToChunk::SampleToChunk() {}
+
533 SampleToChunk::~SampleToChunk() {}
+
534 FourCC SampleToChunk::BoxType() const { return FOURCC_STSC; }
+
535 
+ +
537  uint32_t count = chunk_info.size();
+
538  RCHECK(FullBox::ReadWrite(buffer) &&
+
539  buffer->ReadWriteUInt32(&count));
+
540 
+
541  chunk_info.resize(count);
+
542  for (uint32_t i = 0; i < count; ++i) {
+
543  RCHECK(buffer->ReadWriteUInt32(&chunk_info[i].first_chunk) &&
+
544  buffer->ReadWriteUInt32(&chunk_info[i].samples_per_chunk) &&
+
545  buffer->ReadWriteUInt32(&chunk_info[i].sample_description_index));
+
546  // first_chunk values are always increasing.
+
547  RCHECK(i == 0 ? chunk_info[i].first_chunk == 1
+
548  : chunk_info[i].first_chunk > chunk_info[i - 1].first_chunk);
+
549  }
+
550  return true;
+
551 }
+
552 
+ +
554  atom_size =
+
555  kFullBoxSize + sizeof(uint32_t) + sizeof(ChunkInfo) * chunk_info.size();
+
556  return atom_size;
+
557 }
+
558 
+
559 SampleSize::SampleSize() : sample_size(0), sample_count(0) {}
+
560 SampleSize::~SampleSize() {}
+
561 FourCC SampleSize::BoxType() const { return FOURCC_STSZ; }
+
562 
+ +
564  RCHECK(FullBox::ReadWrite(buffer) &&
+
565  buffer->ReadWriteUInt32(&sample_size) &&
+
566  buffer->ReadWriteUInt32(&sample_count));
+
567 
+
568  if (sample_size == 0) {
+
569  if (buffer->Reading())
+
570  sizes.resize(sample_count);
+
571  else
+
572  DCHECK(sample_count == sizes.size());
+
573  for (uint32_t i = 0; i < sample_count; ++i)
+
574  RCHECK(buffer->ReadWriteUInt32(&sizes[i]));
+
575  }
+
576  return true;
+
577 }
+
578 
+ +
580  atom_size = kFullBoxSize + sizeof(sample_size) + sizeof(sample_count) +
+
581  (sample_size == 0 ? sizeof(uint32_t) * sizes.size() : 0);
+
582  return atom_size;
+
583 }
+
584 
+
585 CompactSampleSize::CompactSampleSize() : field_size(0) {}
+
586 CompactSampleSize::~CompactSampleSize() {}
+
587 FourCC CompactSampleSize::BoxType() const { return FOURCC_STZ2; }
+
588 
+ +
590  uint32_t sample_count = sizes.size();
+
591  RCHECK(FullBox::ReadWrite(buffer) &&
+
592  buffer->IgnoreBytes(3) &&
+
593  buffer->ReadWriteUInt8(&field_size) &&
+
594  buffer->ReadWriteUInt32(&sample_count));
+
595 
+
596  // Reserve one more entry if field size is 4 bits.
+
597  sizes.resize(sample_count + (field_size == 4 ? 1 : 0), 0);
+
598  switch (field_size) {
+
599  case 4:
+
600  for (uint32_t i = 0; i < sample_count; i += 2) {
+
601  if (buffer->Reading()) {
+
602  uint8_t size = 0;
+
603  RCHECK(buffer->ReadWriteUInt8(&size));
+
604  sizes[i] = size >> 4;
+
605  sizes[i + 1] = size & 0x0F;
+
606  } else {
+
607  DCHECK_LT(sizes[i], 16u);
+
608  DCHECK_LT(sizes[i + 1], 16u);
+
609  uint8_t size = (sizes[i] << 4) | sizes[i + 1];
+
610  RCHECK(buffer->ReadWriteUInt8(&size));
+
611  }
+
612  }
+
613  break;
+
614  case 8:
+
615  for (uint32_t i = 0; i < sample_count; ++i) {
+
616  uint8_t size = sizes[i];
+
617  RCHECK(buffer->ReadWriteUInt8(&size));
+
618  sizes[i] = size;
+
619  }
+
620  break;
+
621  case 16:
+
622  for (uint32_t i = 0; i < sample_count; ++i) {
+
623  uint16_t size = sizes[i];
+
624  RCHECK(buffer->ReadWriteUInt16(&size));
+
625  sizes[i] = size;
+
626  }
+
627  break;
+
628  default:
+
629  RCHECK(false);
+
630  }
+
631  sizes.resize(sample_count);
+
632  return true;
+
633 }
+
634 
+ +
636  atom_size = kFullBoxSize + sizeof(uint32_t) + sizeof(uint32_t) +
+
637  (field_size * sizes.size() + 7) / 8;
+
638  return atom_size;
+
639 }
+
640 
+
641 ChunkOffset::ChunkOffset() {}
+
642 ChunkOffset::~ChunkOffset() {}
+
643 FourCC ChunkOffset::BoxType() const { return FOURCC_STCO; }
+
644 
+ +
646  uint32_t count = offsets.size();
+
647  RCHECK(FullBox::ReadWrite(buffer) &&
+
648  buffer->ReadWriteUInt32(&count));
+
649 
+
650  offsets.resize(count);
+
651  for (uint32_t i = 0; i < count; ++i)
+
652  RCHECK(buffer->ReadWriteUInt64NBytes(&offsets[i], sizeof(uint32_t)));
+
653  return true;
+
654 }
+
655 
+ +
657  atom_size =
+
658  kFullBoxSize + sizeof(uint32_t) + sizeof(uint32_t) * offsets.size();
+
659  return atom_size;
+
660 }
+
661 
+
662 ChunkLargeOffset::ChunkLargeOffset() {}
+
663 ChunkLargeOffset::~ChunkLargeOffset() {}
+
664 FourCC ChunkLargeOffset::BoxType() const { return FOURCC_CO64; }
+
665 
+ +
667  uint32_t count = offsets.size();
+
668 
+
669  if (!buffer->Reading()) {
+
670  // Switch to ChunkOffset box if it is able to fit in 32 bits offset.
+
671  if (count == 0 || IsFitIn32Bits(offsets[count - 1])) {
+
672  ChunkOffset stco;
+
673  stco.offsets.swap(offsets);
+
674  DCHECK(buffer->writer());
+
675  stco.Write(buffer->writer());
+
676  stco.offsets.swap(offsets);
+
677  return true;
+
678  }
+
679  }
+
680 
+
681  RCHECK(FullBox::ReadWrite(buffer) &&
+
682  buffer->ReadWriteUInt32(&count));
+
683 
+
684  offsets.resize(count);
+
685  for (uint32_t i = 0; i < count; ++i)
+
686  RCHECK(buffer->ReadWriteUInt64(&offsets[i]));
+
687  return true;
+
688 }
+
689 
+ +
691  uint32_t count = offsets.size();
+
692  int use_large_offset =
+
693  (count > 0 && !IsFitIn32Bits(offsets[count - 1])) ? 1 : 0;
+
694  atom_size = kFullBoxSize + sizeof(count) +
+
695  sizeof(uint32_t) * (1 + use_large_offset) * offsets.size();
+
696  return atom_size;
+
697 }
+
698 
+
699 SyncSample::SyncSample() {}
+
700 SyncSample::~SyncSample() {}
+
701 FourCC SyncSample::BoxType() const { return FOURCC_STSS; }
+
702 
+ +
704  uint32_t count = sample_number.size();
+
705  RCHECK(FullBox::ReadWrite(buffer) &&
+
706  buffer->ReadWriteUInt32(&count));
+
707 
+
708  sample_number.resize(count);
+
709  for (uint32_t i = 0; i < count; ++i)
+
710  RCHECK(buffer->ReadWriteUInt32(&sample_number[i]));
+
711  return true;
+
712 }
+
713 
+ +
715  // Sync sample box is optional. Skip it if it is empty.
+
716  atom_size = 0;
+
717  if (!sample_number.empty()) {
+
718  atom_size = kFullBoxSize + sizeof(uint32_t) +
+
719  sizeof(uint32_t) * sample_number.size();
+
720  }
+
721  return atom_size;
+
722 }
+
723 
+
724 SampleTable::SampleTable() {}
+
725 SampleTable::~SampleTable() {}
+
726 FourCC SampleTable::BoxType() const { return FOURCC_STBL; }
+
727 
+ +
729  RCHECK(Box::ReadWrite(buffer) &&
+
730  buffer->PrepareChildren() &&
+
731  buffer->ReadWriteChild(&description) &&
+
732  buffer->ReadWriteChild(&decoding_time_to_sample) &&
+
733  buffer->TryReadWriteChild(&composition_time_to_sample) &&
+
734  buffer->ReadWriteChild(&sample_to_chunk));
+
735 
+
736  if (buffer->Reading()) {
+
737  BoxReader* reader = buffer->reader();
+
738  DCHECK(reader);
+
739 
+
740  // Either SampleSize or CompactSampleSize must present.
+
741  if (reader->ChildExist(&sample_size)) {
+
742  RCHECK(reader->ReadChild(&sample_size));
+
743  } else {
+
744  CompactSampleSize compact_sample_size;
+
745  RCHECK(reader->ReadChild(&compact_sample_size));
+
746  sample_size.sample_size = 0;
+
747  sample_size.sample_count = compact_sample_size.sizes.size();
+
748  sample_size.sizes.swap(compact_sample_size.sizes);
+
749  }
+
750 
+
751  // Either ChunkOffset or ChunkLargeOffset must present.
+
752  if (reader->ChildExist(&chunk_large_offset)) {
+
753  RCHECK(reader->ReadChild(&chunk_large_offset));
+
754  } else {
+
755  ChunkOffset chunk_offset;
+
756  RCHECK(reader->ReadChild(&chunk_offset));
+
757  chunk_large_offset.offsets.swap(chunk_offset.offsets);
+
758  }
+
759  } else {
+
760  RCHECK(sample_size.ReadWrite(buffer) &&
+
761  chunk_large_offset.ReadWrite(buffer));
+
762  }
+
763  RCHECK(buffer->TryReadWriteChild(&sync_sample));
+
764  return true;
+
765 }
+
766 
+ +
768  atom_size = kBoxSize + description.ComputeSize() +
+
769  decoding_time_to_sample.ComputeSize() +
+
770  composition_time_to_sample.ComputeSize() +
+
771  sample_to_chunk.ComputeSize() + sample_size.ComputeSize() +
+
772  chunk_large_offset.ComputeSize() + sync_sample.ComputeSize();
+
773  return atom_size;
+
774 }
+
775 
+
776 EditList::EditList() {}
+
777 EditList::~EditList() {}
+
778 FourCC EditList::BoxType() const { return FOURCC_ELST; }
+
779 
+ +
781  uint32_t count = edits.size();
+
782  RCHECK(FullBox::ReadWrite(buffer) && buffer->ReadWriteUInt32(&count));
+
783  edits.resize(count);
+
784 
+
785  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
+
786  for (uint32_t i = 0; i < count; ++i) {
+
787  RCHECK(
+
788  buffer->ReadWriteUInt64NBytes(&edits[i].segment_duration, num_bytes) &&
+
789  buffer->ReadWriteInt64NBytes(&edits[i].media_time, num_bytes) &&
+
790  buffer->ReadWriteInt16(&edits[i].media_rate_integer) &&
+
791  buffer->ReadWriteInt16(&edits[i].media_rate_fraction));
+
792  }
+
793  return true;
+
794 }
+
795 
+ +
797  // EditList box is optional. Skip it if it is empty.
+
798  atom_size = 0;
+
799  if (edits.empty())
+
800  return 0;
+
801 
+
802  version = 0;
+
803  for (uint32_t i = 0; i < edits.size(); ++i) {
+
804  if (!IsFitIn32Bits(edits[i].segment_duration, edits[i].media_time)) {
+
805  version = 1;
+
806  break;
+
807  }
+
808  }
+
809  atom_size = kFullBoxSize + sizeof(uint32_t) +
+
810  (sizeof(uint32_t) * (1 + version) * 2 + sizeof(int16_t) * 2) *
+
811  edits.size();
+
812  return atom_size;
+
813 }
+
814 
+
815 Edit::Edit() {}
+
816 Edit::~Edit() {}
+
817 FourCC Edit::BoxType() const { return FOURCC_EDTS; }
+
818 
+
819 bool Edit::ReadWrite(BoxBuffer* buffer) {
+
820  return Box::ReadWrite(buffer) &&
+
821  buffer->PrepareChildren() &&
+
822  buffer->ReadWriteChild(&list);
+
823 }
+
824 
+
825 uint32_t Edit::ComputeSize() {
+
826  // Edit box is optional. Skip it if it is empty.
+
827  atom_size = 0;
+
828  if (!list.edits.empty())
+
829  atom_size = kBoxSize + list.ComputeSize();
+
830  return atom_size;
+
831 }
+
832 
+
833 HandlerReference::HandlerReference() : type(kInvalid) {}
+
834 HandlerReference::~HandlerReference() {}
+
835 FourCC HandlerReference::BoxType() const { return FOURCC_HDLR; }
+
836 
+ +
838  FourCC hdlr_type = FOURCC_NULL;
+
839  std::vector<uint8_t> handler_name;
+
840  if (!buffer->Reading()) {
+
841  if (type == kVideo) {
+
842  hdlr_type = FOURCC_VIDE;
+
843  handler_name.assign(kVideoHandlerName,
+
844  kVideoHandlerName + arraysize(kVideoHandlerName));
+
845  } else if (type == kAudio) {
+
846  hdlr_type = FOURCC_SOUN;
+
847  handler_name.assign(kAudioHandlerName,
+
848  kAudioHandlerName + arraysize(kAudioHandlerName));
+
849  } else {
+
850  NOTIMPLEMENTED();
+
851  return false;
+
852  }
+
853  }
+
854  RCHECK(FullBox::ReadWrite(buffer) &&
+
855  buffer->IgnoreBytes(4) && // predefined.
+
856  buffer->ReadWriteFourCC(&hdlr_type));
+
857  if (buffer->Reading()) {
+
858  // Note: for reading, remaining fields in box ignored.
+
859  if (hdlr_type == FOURCC_VIDE) {
+
860  type = kVideo;
+
861  } else if (hdlr_type == FOURCC_SOUN) {
+
862  type = kAudio;
+
863  } else {
+
864  type = kInvalid;
+
865  }
+
866  } else {
+
867  RCHECK(buffer->IgnoreBytes(12) && // reserved.
+
868  buffer->ReadWriteVector(&handler_name, handler_name.size()));
+
869  }
+
870  return true;
+
871 }
+
872 
+ +
874  atom_size =
+
875  kFullBoxSize + kFourCCSize + 16 + // 16 bytes Reserved
+
876  (type == kVideo ? sizeof(kVideoHandlerName) : sizeof(kAudioHandlerName));
+
877  return atom_size;
+
878 }
+
879 
+
880 CodecConfigurationRecord::CodecConfigurationRecord() : box_type(FOURCC_NULL) {}
+
881 CodecConfigurationRecord::~CodecConfigurationRecord() {}
+
882 FourCC CodecConfigurationRecord::BoxType() const {
+
883  // CodecConfigurationRecord should be parsed according to format recovered in
+
884  // VideoSampleEntry. |box_type| is determined dynamically there.
+
885  return box_type;
+
886 }
+
887 
+ +
889  RCHECK(Box::ReadWrite(buffer));
+
890  if (buffer->Reading()) {
+
891  RCHECK(buffer->ReadWriteVector(&data, buffer->Size() - buffer->Pos()));
+
892  } else {
+
893  RCHECK(buffer->ReadWriteVector(&data, data.size()));
+
894  }
+
895  return true;
+
896 }
+
897 
+ +
899  atom_size = 0;
+
900  if (!data.empty())
+
901  atom_size = kBoxSize + data.size();
+
902  return atom_size;
+
903 }
+
904 
+
905 PixelAspectRatioBox::PixelAspectRatioBox() : h_spacing(0), v_spacing(0) {}
+
906 PixelAspectRatioBox::~PixelAspectRatioBox() {}
+
907 FourCC PixelAspectRatioBox::BoxType() const { return FOURCC_PASP; }
+
908 
+ +
910  RCHECK(Box::ReadWrite(buffer) &&
+
911  buffer->ReadWriteUInt32(&h_spacing) &&
+
912  buffer->ReadWriteUInt32(&v_spacing));
+
913  return true;
+
914 }
+
915 
+ +
917  // This box is optional. Skip it if it is not initialized.
+
918  atom_size = 0;
+
919  if (h_spacing != 0 || v_spacing != 0) {
+
920  // Both values must be positive.
+
921  DCHECK(h_spacing != 0 && v_spacing != 0);
+
922  atom_size = kBoxSize + sizeof(h_spacing) + sizeof(v_spacing);
+
923  }
+
924  return atom_size;
+
925 }
+
926 
+
927 VideoSampleEntry::VideoSampleEntry()
+
928  : format(FOURCC_NULL), data_reference_index(1), width(0), height(0) {}
+
929 
+
930 VideoSampleEntry::~VideoSampleEntry() {}
+
931 FourCC VideoSampleEntry::BoxType() const {
+
932  LOG(ERROR) << "VideoSampleEntry should be parsed according to the "
+
933  << "handler type recovered in its Media ancestor.";
+
934  return FOURCC_NULL;
+
935 }
+
936 
+ +
938  std::vector<uint8_t> compressor_name;
+
939  if (buffer->Reading()) {
+
940  DCHECK(buffer->reader());
+
941  format = buffer->reader()->type();
+
942  } else {
+
943  RCHECK(buffer->ReadWriteUInt32(&atom_size) &&
+
944  buffer->ReadWriteFourCC(&format));
+
945 
+
946  const FourCC actual_format = GetActualFormat();
+
947  switch (actual_format) {
+
948  case FOURCC_AVC1:
+
949  compressor_name.assign(
+
950  kAvcCompressorName,
+
951  kAvcCompressorName + arraysize(kAvcCompressorName));
+
952  break;
+
953  case FOURCC_VP08:
+
954  case FOURCC_VP09:
+
955  case FOURCC_VP10:
+
956  compressor_name.assign(
+
957  kVpcCompressorName,
+
958  kVpcCompressorName + arraysize(kVpcCompressorName));
+
959  break;
+
960  default:
+
961  LOG(ERROR) << FourCCToString(actual_format) << " is not supported.";
+
962  return false;
+
963  }
+
964  compressor_name.resize(kCompressorNameSize);
+
965  }
+
966 
+
967  uint32_t video_resolution = kVideoResolution;
+
968  uint16_t video_frame_count = kVideoFrameCount;
+
969  uint16_t video_depth = kVideoDepth;
+
970  int16_t predefined = -1;
+
971  RCHECK(buffer->IgnoreBytes(6) && // reserved.
+
972  buffer->ReadWriteUInt16(&data_reference_index) &&
+
973  buffer->IgnoreBytes(16) && // predefined 0.
+
974  buffer->ReadWriteUInt16(&width) &&
+
975  buffer->ReadWriteUInt16(&height) &&
+
976  buffer->ReadWriteUInt32(&video_resolution) &&
+
977  buffer->ReadWriteUInt32(&video_resolution) &&
+
978  buffer->IgnoreBytes(4) && // reserved.
+
979  buffer->ReadWriteUInt16(&video_frame_count) &&
+
980  buffer->ReadWriteVector(&compressor_name, kCompressorNameSize) &&
+
981  buffer->ReadWriteUInt16(&video_depth) &&
+
982  buffer->ReadWriteInt16(&predefined));
+
983 
+
984  RCHECK(buffer->PrepareChildren());
+
985 
+
986  if (format == FOURCC_ENCV) {
+
987  if (buffer->Reading()) {
+
988  // Continue scanning until a recognized protection scheme is found,
+
989  // or until we run out of protection schemes.
+
990  while (sinf.type.type != FOURCC_CENC) {
+
991  if (!buffer->ReadWriteChild(&sinf))
+
992  return false;
+
993  }
+
994  } else {
+
995  RCHECK(buffer->ReadWriteChild(&sinf));
+
996  }
+
997  }
+
998 
+
999  const FourCC actual_format = GetActualFormat();
+
1000  switch (actual_format) {
+
1001  case FOURCC_AVC1:
+
1002  codec_config_record.box_type = FOURCC_AVCC;
+
1003  break;
+
1004  case FOURCC_VP08:
+
1005  case FOURCC_VP09:
+
1006  case FOURCC_VP10:
+
1007  codec_config_record.box_type = FOURCC_VPCC;
+
1008  break;
+
1009  default:
+
1010  LOG(ERROR) << FourCCToString(actual_format) << " is not supported.";
+
1011  return false;
+
1012  }
+
1013  RCHECK(buffer->ReadWriteChild(&codec_config_record));
+
1014  RCHECK(buffer->TryReadWriteChild(&pixel_aspect));
+
1015  return true;
+
1016 }
+
1017 
+ +
1019  atom_size = kBoxSize + sizeof(data_reference_index) + sizeof(width) +
+
1020  sizeof(height) + sizeof(kVideoResolution) * 2 +
+
1021  sizeof(kVideoFrameCount) + sizeof(kVideoDepth) +
+
1022  pixel_aspect.ComputeSize() + sinf.ComputeSize() +
+
1023  codec_config_record.ComputeSize() + kCompressorNameSize +
+
1024  6 + 4 + 16 + 2; // 6 + 4 bytes reserved, 16 + 2 bytes predefined.
+
1025  return atom_size;
+
1026 }
+
1027 
+
1028 ElementaryStreamDescriptor::ElementaryStreamDescriptor() {}
+
1029 ElementaryStreamDescriptor::~ElementaryStreamDescriptor() {}
+
1030 FourCC ElementaryStreamDescriptor::BoxType() const { return FOURCC_ESDS; }
+
1031 
+ +
1033  RCHECK(FullBox::ReadWrite(buffer));
+
1034  if (buffer->Reading()) {
+
1035  std::vector<uint8_t> data;
+
1036  RCHECK(buffer->ReadWriteVector(&data, buffer->Size() - buffer->Pos()));
+
1037  RCHECK(es_descriptor.Parse(data));
+
1038  if (es_descriptor.IsAAC()) {
+
1039  RCHECK(aac_audio_specific_config.Parse(
+
1040  es_descriptor.decoder_specific_info()));
+
1041  }
+
1042  } else {
+
1043  DCHECK(buffer->writer());
+
1044  es_descriptor.Write(buffer->writer());
+
1045  }
+
1046  return true;
+
1047 }
+
1048 
+ +
1050  // This box is optional. Skip it if not initialized.
+
1051  atom_size = 0;
+
1052  if (es_descriptor.object_type() != kForbidden)
+
1053  atom_size = kFullBoxSize + es_descriptor.ComputeSize();
+
1054  return atom_size;
+
1055 }
+
1056 
+
1057 AudioSampleEntry::AudioSampleEntry()
+
1058  : format(FOURCC_NULL),
+
1059  data_reference_index(1),
+
1060  channelcount(2),
+
1061  samplesize(16),
+
1062  samplerate(0) {}
+
1063 
+
1064 AudioSampleEntry::~AudioSampleEntry() {}
+
1065 
+
1066 FourCC AudioSampleEntry::BoxType() const {
+
1067  LOG(ERROR) << "AudioSampleEntry should be parsed according to the "
+
1068  << "handler type recovered in its Media ancestor.";
+
1069  return FOURCC_NULL;
+
1070 }
+
1071 
+ +
1073  if (buffer->Reading()) {
+
1074  DCHECK(buffer->reader());
+
1075  format = buffer->reader()->type();
+
1076  } else {
+
1077  RCHECK(buffer->ReadWriteUInt32(&atom_size) &&
+
1078  buffer->ReadWriteFourCC(&format));
+
1079  }
+
1080 
+
1081  // Convert from integer to 16.16 fixed point for writing.
+
1082  samplerate <<= 16;
+
1083  RCHECK(buffer->IgnoreBytes(6) && // reserved.
+
1084  buffer->ReadWriteUInt16(&data_reference_index) &&
+
1085  buffer->IgnoreBytes(8) && // reserved.
+
1086  buffer->ReadWriteUInt16(&channelcount) &&
+
1087  buffer->ReadWriteUInt16(&samplesize) &&
+
1088  buffer->IgnoreBytes(4) && // predefined.
+
1089  buffer->ReadWriteUInt32(&samplerate));
+
1090  // Convert from 16.16 fixed point to integer.
+
1091  samplerate >>= 16;
+
1092 
+
1093  RCHECK(buffer->PrepareChildren());
+
1094  if (format == FOURCC_ENCA) {
+
1095  if (buffer->Reading()) {
+
1096  // Continue scanning until a recognized protection scheme is found,
+
1097  // or until we run out of protection schemes.
+
1098  while (sinf.type.type != FOURCC_CENC) {
+
1099  if (!buffer->ReadWriteChild(&sinf))
+
1100  return false;
+
1101  }
+
1102  } else {
+
1103  RCHECK(buffer->ReadWriteChild(&sinf));
+
1104  }
+
1105  }
+
1106 
+
1107  // ESDS is not valid in case of EAC3.
+
1108  RCHECK(buffer->TryReadWriteChild(&esds));
+
1109  return true;
+
1110 }
+
1111 
+ +
1113  atom_size = kBoxSize + sizeof(data_reference_index) + sizeof(channelcount) +
+
1114  sizeof(samplesize) + sizeof(samplerate) + sinf.ComputeSize() +
+
1115  esds.ComputeSize() + 6 + 8 + // 6 + 8 bytes reserved.
+
1116  4; // 4 bytes predefined.
+
1117  return atom_size;
+
1118 }
+
1119 
+
1120 MediaHeader::MediaHeader()
+
1121  : creation_time(0), modification_time(0), timescale(0), duration(0) {
+
1122  language[0] = 0;
+
1123 }
+
1124 MediaHeader::~MediaHeader() {}
+
1125 FourCC MediaHeader::BoxType() const { return FOURCC_MDHD; }
1126 
-
1127  // Lang format: bit(1) pad, unsigned int(5)[3] language.
-
1128  uint16_t lang = 0;
-
1129  for (int i = 0; i < 3; ++i)
-
1130  lang |= (language[i] - 0x60) << ((2 - i) * 5);
-
1131  RCHECK(buffer->ReadWriteUInt16(&lang));
-
1132  }
-
1133 
-
1134  RCHECK(buffer->IgnoreBytes(2)); // predefined.
-
1135  return true;
-
1136 }
-
1137 
- -
1139  version = IsFitIn32Bits(creation_time, modification_time, duration) ? 0 : 1;
-
1140  atom_size = kFullBoxSize + sizeof(timescale) +
-
1141  sizeof(uint32_t) * (1 + version) * 3 + 2 + // 2 bytes language.
-
1142  2; // 2 bytes predefined.
-
1143  return atom_size;
-
1144 }
-
1145 
-
1146 VideoMediaHeader::VideoMediaHeader()
-
1147  : graphicsmode(0), opcolor_red(0), opcolor_green(0), opcolor_blue(0) {
-
1148  const uint32_t kVideoMediaHeaderFlags = 1;
-
1149  flags = kVideoMediaHeaderFlags;
-
1150 }
-
1151 VideoMediaHeader::~VideoMediaHeader() {}
-
1152 FourCC VideoMediaHeader::BoxType() const { return FOURCC_VMHD; }
- -
1154  RCHECK(FullBox::ReadWrite(buffer) &&
-
1155  buffer->ReadWriteUInt16(&graphicsmode) &&
-
1156  buffer->ReadWriteUInt16(&opcolor_red) &&
-
1157  buffer->ReadWriteUInt16(&opcolor_green) &&
-
1158  buffer->ReadWriteUInt16(&opcolor_blue));
-
1159  return true;
-
1160 }
+ +
1128  RCHECK(FullBox::ReadWrite(buffer));
+
1129 
+
1130  uint8_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
+
1131  RCHECK(buffer->ReadWriteUInt64NBytes(&creation_time, num_bytes) &&
+
1132  buffer->ReadWriteUInt64NBytes(&modification_time, num_bytes) &&
+
1133  buffer->ReadWriteUInt32(&timescale) &&
+
1134  buffer->ReadWriteUInt64NBytes(&duration, num_bytes));
+
1135 
+
1136  if (buffer->Reading()) {
+
1137  // Read language codes into temp first then use BitReader to read the
+
1138  // values. ISO-639-2/T language code: unsigned int(5)[3] language (2 bytes).
+
1139  std::vector<uint8_t> temp;
+
1140  RCHECK(buffer->ReadWriteVector(&temp, 2));
+
1141 
+
1142  BitReader bit_reader(&temp[0], 2);
+
1143  bit_reader.SkipBits(1);
+
1144  for (int i = 0; i < 3; ++i) {
+
1145  CHECK(bit_reader.ReadBits(5, &language[i]));
+
1146  language[i] += 0x60;
+
1147  }
+
1148  language[3] = '\0';
+
1149  } else {
+
1150  // Set up default language if it is not set.
+
1151  const char kUndefinedLanguage[] = "und";
+
1152  if (language[0] == 0)
+
1153  strcpy(language, kUndefinedLanguage);
+
1154 
+
1155  // Lang format: bit(1) pad, unsigned int(5)[3] language.
+
1156  uint16_t lang = 0;
+
1157  for (int i = 0; i < 3; ++i)
+
1158  lang |= (language[i] - 0x60) << ((2 - i) * 5);
+
1159  RCHECK(buffer->ReadWriteUInt16(&lang));
+
1160  }
1161 
- -
1163  atom_size = kFullBoxSize + sizeof(graphicsmode) + sizeof(opcolor_red) +
-
1164  sizeof(opcolor_green) + sizeof(opcolor_blue);
-
1165  return atom_size;
-
1166 }
-
1167 
-
1168 SoundMediaHeader::SoundMediaHeader() : balance(0) {}
-
1169 SoundMediaHeader::~SoundMediaHeader() {}
-
1170 FourCC SoundMediaHeader::BoxType() const { return FOURCC_SMHD; }
- -
1172  RCHECK(FullBox::ReadWrite(buffer) &&
-
1173  buffer->ReadWriteUInt16(&balance) &&
-
1174  buffer->IgnoreBytes(2)); // reserved.
-
1175  return true;
-
1176 }
-
1177 
- -
1179  atom_size = kFullBoxSize + sizeof(balance) + sizeof(uint16_t);
-
1180  return atom_size;
-
1181 }
-
1182 
-
1183 DataEntryUrl::DataEntryUrl() {
-
1184  const uint32_t kDataEntryUrlFlags = 1;
-
1185  flags = kDataEntryUrlFlags;
-
1186 }
-
1187 DataEntryUrl::~DataEntryUrl() {}
-
1188 FourCC DataEntryUrl::BoxType() const { return FOURCC_URL; }
- -
1190  RCHECK(FullBox::ReadWrite(buffer));
-
1191  if (buffer->Reading()) {
-
1192  RCHECK(buffer->ReadWriteVector(&location, buffer->Size() - buffer->Pos()));
-
1193  } else {
-
1194  RCHECK(buffer->ReadWriteVector(&location, location.size()));
-
1195  }
-
1196  return true;
-
1197 }
-
1198 
- -
1200  atom_size = kBoxSize + sizeof(flags) + location.size();
-
1201  return atom_size;
-
1202 }
-
1203 
-
1204 DataReference::DataReference() {
-
1205  // Default 1 entry.
-
1206  data_entry.resize(1);
-
1207 }
-
1208 DataReference::~DataReference() {}
-
1209 FourCC DataReference::BoxType() const { return FOURCC_DREF; }
- -
1211  uint32_t entry_count = data_entry.size();
-
1212  RCHECK(FullBox::ReadWrite(buffer) &&
-
1213  buffer->ReadWriteUInt32(&entry_count));
-
1214  data_entry.resize(entry_count);
-
1215  RCHECK(buffer->PrepareChildren());
-
1216  for (uint32_t i = 0; i < entry_count; ++i)
-
1217  RCHECK(buffer->ReadWriteChild(&data_entry[i]));
-
1218  return true;
-
1219 }
-
1220 
- -
1222  uint32_t count = data_entry.size();
-
1223  atom_size = kFullBoxSize + sizeof(count);
-
1224  for (uint32_t i = 0; i < count; ++i)
-
1225  atom_size += data_entry[i].ComputeSize();
-
1226  return atom_size;
-
1227 }
-
1228 
-
1229 DataInformation::DataInformation() {}
-
1230 DataInformation::~DataInformation() {}
-
1231 FourCC DataInformation::BoxType() const { return FOURCC_DINF; }
-
1232 
- -
1234  return Box::ReadWrite(buffer) &&
-
1235  buffer->PrepareChildren() &&
-
1236  buffer->ReadWriteChild(&dref);
-
1237 }
-
1238 
- -
1240  atom_size = kBoxSize + dref.ComputeSize();
-
1241  return atom_size;
-
1242 }
-
1243 
-
1244 MediaInformation::MediaInformation() {}
-
1245 MediaInformation::~MediaInformation() {}
-
1246 FourCC MediaInformation::BoxType() const { return FOURCC_MINF; }
-
1247 
- -
1249  RCHECK(Box::ReadWrite(buffer) &&
-
1250  buffer->PrepareChildren() &&
-
1251  buffer->ReadWriteChild(&dinf) &&
-
1252  buffer->ReadWriteChild(&sample_table));
-
1253  if (sample_table.description.type == kVideo)
-
1254  RCHECK(buffer->ReadWriteChild(&vmhd));
-
1255  else if (sample_table.description.type == kAudio)
-
1256  RCHECK(buffer->ReadWriteChild(&smhd));
-
1257  else
-
1258  NOTIMPLEMENTED();
-
1259  // Hint is not supported for now.
-
1260  return true;
-
1261 }
-
1262 
- -
1264  atom_size = kBoxSize + dinf.ComputeSize() + sample_table.ComputeSize();
-
1265  if (sample_table.description.type == kVideo)
-
1266  atom_size += vmhd.ComputeSize();
-
1267  else if (sample_table.description.type == kAudio)
-
1268  atom_size += smhd.ComputeSize();
+
1162  RCHECK(buffer->IgnoreBytes(2)); // predefined.
+
1163  return true;
+
1164 }
+
1165 
+ +
1167  version = IsFitIn32Bits(creation_time, modification_time, duration) ? 0 : 1;
+
1168  atom_size = kFullBoxSize + sizeof(timescale) +
+
1169  sizeof(uint32_t) * (1 + version) * 3 + 2 + // 2 bytes language.
+
1170  2; // 2 bytes predefined.
+
1171  return atom_size;
+
1172 }
+
1173 
+
1174 VideoMediaHeader::VideoMediaHeader()
+
1175  : graphicsmode(0), opcolor_red(0), opcolor_green(0), opcolor_blue(0) {
+
1176  const uint32_t kVideoMediaHeaderFlags = 1;
+
1177  flags = kVideoMediaHeaderFlags;
+
1178 }
+
1179 VideoMediaHeader::~VideoMediaHeader() {}
+
1180 FourCC VideoMediaHeader::BoxType() const { return FOURCC_VMHD; }
+ +
1182  RCHECK(FullBox::ReadWrite(buffer) &&
+
1183  buffer->ReadWriteUInt16(&graphicsmode) &&
+
1184  buffer->ReadWriteUInt16(&opcolor_red) &&
+
1185  buffer->ReadWriteUInt16(&opcolor_green) &&
+
1186  buffer->ReadWriteUInt16(&opcolor_blue));
+
1187  return true;
+
1188 }
+
1189 
+ +
1191  atom_size = kFullBoxSize + sizeof(graphicsmode) + sizeof(opcolor_red) +
+
1192  sizeof(opcolor_green) + sizeof(opcolor_blue);
+
1193  return atom_size;
+
1194 }
+
1195 
+
1196 SoundMediaHeader::SoundMediaHeader() : balance(0) {}
+
1197 SoundMediaHeader::~SoundMediaHeader() {}
+
1198 FourCC SoundMediaHeader::BoxType() const { return FOURCC_SMHD; }
+ +
1200  RCHECK(FullBox::ReadWrite(buffer) &&
+
1201  buffer->ReadWriteUInt16(&balance) &&
+
1202  buffer->IgnoreBytes(2)); // reserved.
+
1203  return true;
+
1204 }
+
1205 
+ +
1207  atom_size = kFullBoxSize + sizeof(balance) + sizeof(uint16_t);
+
1208  return atom_size;
+
1209 }
+
1210 
+
1211 DataEntryUrl::DataEntryUrl() {
+
1212  const uint32_t kDataEntryUrlFlags = 1;
+
1213  flags = kDataEntryUrlFlags;
+
1214 }
+
1215 DataEntryUrl::~DataEntryUrl() {}
+
1216 FourCC DataEntryUrl::BoxType() const { return FOURCC_URL; }
+ +
1218  RCHECK(FullBox::ReadWrite(buffer));
+
1219  if (buffer->Reading()) {
+
1220  RCHECK(buffer->ReadWriteVector(&location, buffer->Size() - buffer->Pos()));
+
1221  } else {
+
1222  RCHECK(buffer->ReadWriteVector(&location, location.size()));
+
1223  }
+
1224  return true;
+
1225 }
+
1226 
+ +
1228  atom_size = kBoxSize + sizeof(flags) + location.size();
+
1229  return atom_size;
+
1230 }
+
1231 
+
1232 DataReference::DataReference() {
+
1233  // Default 1 entry.
+
1234  data_entry.resize(1);
+
1235 }
+
1236 DataReference::~DataReference() {}
+
1237 FourCC DataReference::BoxType() const { return FOURCC_DREF; }
+ +
1239  uint32_t entry_count = data_entry.size();
+
1240  RCHECK(FullBox::ReadWrite(buffer) &&
+
1241  buffer->ReadWriteUInt32(&entry_count));
+
1242  data_entry.resize(entry_count);
+
1243  RCHECK(buffer->PrepareChildren());
+
1244  for (uint32_t i = 0; i < entry_count; ++i)
+
1245  RCHECK(buffer->ReadWriteChild(&data_entry[i]));
+
1246  return true;
+
1247 }
+
1248 
+ +
1250  uint32_t count = data_entry.size();
+
1251  atom_size = kFullBoxSize + sizeof(count);
+
1252  for (uint32_t i = 0; i < count; ++i)
+
1253  atom_size += data_entry[i].ComputeSize();
+
1254  return atom_size;
+
1255 }
+
1256 
+
1257 DataInformation::DataInformation() {}
+
1258 DataInformation::~DataInformation() {}
+
1259 FourCC DataInformation::BoxType() const { return FOURCC_DINF; }
+
1260 
+ +
1262  return Box::ReadWrite(buffer) &&
+
1263  buffer->PrepareChildren() &&
+
1264  buffer->ReadWriteChild(&dref);
+
1265 }
+
1266 
+ +
1268  atom_size = kBoxSize + dref.ComputeSize();
1269  return atom_size;
1270 }
1271 
-
1272 Media::Media() {}
-
1273 Media::~Media() {}
-
1274 FourCC Media::BoxType() const { return FOURCC_MDIA; }
+
1272 MediaInformation::MediaInformation() {}
+
1273 MediaInformation::~MediaInformation() {}
+
1274 FourCC MediaInformation::BoxType() const { return FOURCC_MINF; }
1275 
- +
1277  RCHECK(Box::ReadWrite(buffer) &&
1278  buffer->PrepareChildren() &&
-
1279  buffer->ReadWriteChild(&header) &&
-
1280  buffer->ReadWriteChild(&handler));
-
1281  if (buffer->Reading()) {
-
1282  // Maddeningly, the HandlerReference box specifies how to parse the
-
1283  // SampleDescription box, making the latter the only box (of those that we
-
1284  // support) which cannot be parsed correctly on its own (or even with
-
1285  // information from its strict ancestor tree). We thus copy the handler type
-
1286  // to the sample description box *before* parsing it to provide this
-
1287  // information while parsing.
-
1288  information.sample_table.description.type = handler.type;
-
1289  } else {
-
1290  DCHECK_EQ(information.sample_table.description.type, handler.type);
-
1291  }
-
1292  RCHECK(buffer->ReadWriteChild(&information));
-
1293  return true;
-
1294 }
-
1295 
- -
1297  atom_size = kBoxSize + header.ComputeSize() + handler.ComputeSize() +
-
1298  information.ComputeSize();
-
1299  return atom_size;
-
1300 }
-
1301 
-
1302 Track::Track() {}
-
1303 Track::~Track() {}
-
1304 FourCC Track::BoxType() const { return FOURCC_TRAK; }
-
1305 
- -
1307  RCHECK(Box::ReadWrite(buffer) &&
-
1308  buffer->PrepareChildren() &&
-
1309  buffer->ReadWriteChild(&header) &&
-
1310  buffer->ReadWriteChild(&media) &&
-
1311  buffer->TryReadWriteChild(&edit));
-
1312  return true;
-
1313 }
-
1314 
- -
1316  atom_size = kBoxSize + header.ComputeSize() + media.ComputeSize() +
-
1317  edit.ComputeSize();
-
1318  return atom_size;
-
1319 }
-
1320 
-
1321 MovieExtendsHeader::MovieExtendsHeader() : fragment_duration(0) {}
-
1322 MovieExtendsHeader::~MovieExtendsHeader() {}
-
1323 FourCC MovieExtendsHeader::BoxType() const { return FOURCC_MEHD; }
-
1324 
- -
1326  RCHECK(FullBox::ReadWrite(buffer));
-
1327  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
-
1328  RCHECK(buffer->ReadWriteUInt64NBytes(&fragment_duration, num_bytes));
-
1329  return true;
-
1330 }
-
1331 
- -
1333  atom_size = 0;
-
1334  // This box is optional. Skip it if it is not used.
-
1335  if (fragment_duration != 0) {
-
1336  version = IsFitIn32Bits(fragment_duration) ? 0 : 1;
-
1337  atom_size = kFullBoxSize + sizeof(uint32_t) * (1 + version);
-
1338  }
-
1339  return atom_size;
-
1340 }
-
1341 
-
1342 TrackExtends::TrackExtends()
-
1343  : track_id(0),
-
1344  default_sample_description_index(0),
-
1345  default_sample_duration(0),
-
1346  default_sample_size(0),
-
1347  default_sample_flags(0) {}
-
1348 TrackExtends::~TrackExtends() {}
-
1349 FourCC TrackExtends::BoxType() const { return FOURCC_TREX; }
-
1350 
- -
1352  RCHECK(FullBox::ReadWrite(buffer) &&
-
1353  buffer->ReadWriteUInt32(&track_id) &&
-
1354  buffer->ReadWriteUInt32(&default_sample_description_index) &&
-
1355  buffer->ReadWriteUInt32(&default_sample_duration) &&
-
1356  buffer->ReadWriteUInt32(&default_sample_size) &&
-
1357  buffer->ReadWriteUInt32(&default_sample_flags));
-
1358  return true;
-
1359 }
-
1360 
- -
1362  atom_size = kFullBoxSize + sizeof(track_id) +
-
1363  sizeof(default_sample_description_index) +
-
1364  sizeof(default_sample_duration) + sizeof(default_sample_size) +
-
1365  sizeof(default_sample_flags);
-
1366  return atom_size;
-
1367 }
-
1368 
-
1369 MovieExtends::MovieExtends() {}
-
1370 MovieExtends::~MovieExtends() {}
-
1371 FourCC MovieExtends::BoxType() const { return FOURCC_MVEX; }
-
1372 
- -
1374  RCHECK(Box::ReadWrite(buffer) &&
-
1375  buffer->PrepareChildren() &&
-
1376  buffer->TryReadWriteChild(&header));
-
1377  if (buffer->Reading()) {
-
1378  DCHECK(buffer->reader());
-
1379  RCHECK(buffer->reader()->ReadChildren(&tracks));
-
1380  } else {
-
1381  for (uint32_t i = 0; i < tracks.size(); ++i)
-
1382  RCHECK(tracks[i].ReadWrite(buffer));
-
1383  }
-
1384  return true;
-
1385 }
-
1386 
- -
1388  // This box is optional. Skip it if it does not contain any track.
-
1389  atom_size = 0;
-
1390  if (tracks.size() != 0) {
-
1391  atom_size = kBoxSize + header.ComputeSize();
-
1392  for (uint32_t i = 0; i < tracks.size(); ++i)
-
1393  atom_size += tracks[i].ComputeSize();
-
1394  }
-
1395  return atom_size;
-
1396 }
-
1397 
-
1398 Movie::Movie() {}
-
1399 Movie::~Movie() {}
-
1400 FourCC Movie::BoxType() const { return FOURCC_MOOV; }
-
1401 
- -
1403  RCHECK(Box::ReadWrite(buffer) &&
-
1404  buffer->PrepareChildren() &&
-
1405  buffer->ReadWriteChild(&header) &&
-
1406  buffer->TryReadWriteChild(&extends));
-
1407  if (buffer->Reading()) {
-
1408  BoxReader* reader = buffer->reader();
-
1409  DCHECK(reader);
-
1410  RCHECK(reader->ReadChildren(&tracks) &&
-
1411  reader->TryReadChildren(&pssh));
-
1412  } else {
-
1413  for (uint32_t i = 0; i < tracks.size(); ++i)
-
1414  RCHECK(tracks[i].ReadWrite(buffer));
-
1415  for (uint32_t i = 0; i < pssh.size(); ++i)
-
1416  RCHECK(pssh[i].ReadWrite(buffer));
-
1417  }
-
1418  return true;
-
1419 }
-
1420 
- -
1422  atom_size = kBoxSize + header.ComputeSize() + extends.ComputeSize();
-
1423  for (uint32_t i = 0; i < tracks.size(); ++i)
-
1424  atom_size += tracks[i].ComputeSize();
-
1425  for (uint32_t i = 0; i < pssh.size(); ++i)
-
1426  atom_size += pssh[i].ComputeSize();
-
1427  return atom_size;
-
1428 }
+
1279  buffer->ReadWriteChild(&dinf) &&
+
1280  buffer->ReadWriteChild(&sample_table));
+
1281  if (sample_table.description.type == kVideo)
+
1282  RCHECK(buffer->ReadWriteChild(&vmhd));
+
1283  else if (sample_table.description.type == kAudio)
+
1284  RCHECK(buffer->ReadWriteChild(&smhd));
+
1285  else
+
1286  NOTIMPLEMENTED();
+
1287  // Hint is not supported for now.
+
1288  return true;
+
1289 }
+
1290 
+ +
1292  atom_size = kBoxSize + dinf.ComputeSize() + sample_table.ComputeSize();
+
1293  if (sample_table.description.type == kVideo)
+
1294  atom_size += vmhd.ComputeSize();
+
1295  else if (sample_table.description.type == kAudio)
+
1296  atom_size += smhd.ComputeSize();
+
1297  return atom_size;
+
1298 }
+
1299 
+
1300 Media::Media() {}
+
1301 Media::~Media() {}
+
1302 FourCC Media::BoxType() const { return FOURCC_MDIA; }
+
1303 
+ +
1305  RCHECK(Box::ReadWrite(buffer) &&
+
1306  buffer->PrepareChildren() &&
+
1307  buffer->ReadWriteChild(&header) &&
+
1308  buffer->ReadWriteChild(&handler));
+
1309  if (buffer->Reading()) {
+
1310  // Maddeningly, the HandlerReference box specifies how to parse the
+
1311  // SampleDescription box, making the latter the only box (of those that we
+
1312  // support) which cannot be parsed correctly on its own (or even with
+
1313  // information from its strict ancestor tree). We thus copy the handler type
+
1314  // to the sample description box *before* parsing it to provide this
+
1315  // information while parsing.
+
1316  information.sample_table.description.type = handler.type;
+
1317  } else {
+
1318  DCHECK_EQ(information.sample_table.description.type, handler.type);
+
1319  }
+
1320  RCHECK(buffer->ReadWriteChild(&information));
+
1321  return true;
+
1322 }
+
1323 
+ +
1325  atom_size = kBoxSize + header.ComputeSize() + handler.ComputeSize() +
+
1326  information.ComputeSize();
+
1327  return atom_size;
+
1328 }
+
1329 
+
1330 Track::Track() {}
+
1331 Track::~Track() {}
+
1332 FourCC Track::BoxType() const { return FOURCC_TRAK; }
+
1333 
+ +
1335  RCHECK(Box::ReadWrite(buffer) &&
+
1336  buffer->PrepareChildren() &&
+
1337  buffer->ReadWriteChild(&header) &&
+
1338  buffer->ReadWriteChild(&media) &&
+
1339  buffer->TryReadWriteChild(&edit));
+
1340  return true;
+
1341 }
+
1342 
+ +
1344  atom_size = kBoxSize + header.ComputeSize() + media.ComputeSize() +
+
1345  edit.ComputeSize();
+
1346  return atom_size;
+
1347 }
+
1348 
+
1349 MovieExtendsHeader::MovieExtendsHeader() : fragment_duration(0) {}
+
1350 MovieExtendsHeader::~MovieExtendsHeader() {}
+
1351 FourCC MovieExtendsHeader::BoxType() const { return FOURCC_MEHD; }
+
1352 
+ +
1354  RCHECK(FullBox::ReadWrite(buffer));
+
1355  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
+
1356  RCHECK(buffer->ReadWriteUInt64NBytes(&fragment_duration, num_bytes));
+
1357  return true;
+
1358 }
+
1359 
+ +
1361  atom_size = 0;
+
1362  // This box is optional. Skip it if it is not used.
+
1363  if (fragment_duration != 0) {
+
1364  version = IsFitIn32Bits(fragment_duration) ? 0 : 1;
+
1365  atom_size = kFullBoxSize + sizeof(uint32_t) * (1 + version);
+
1366  }
+
1367  return atom_size;
+
1368 }
+
1369 
+
1370 TrackExtends::TrackExtends()
+
1371  : track_id(0),
+
1372  default_sample_description_index(0),
+
1373  default_sample_duration(0),
+
1374  default_sample_size(0),
+
1375  default_sample_flags(0) {}
+
1376 TrackExtends::~TrackExtends() {}
+
1377 FourCC TrackExtends::BoxType() const { return FOURCC_TREX; }
+
1378 
+ +
1380  RCHECK(FullBox::ReadWrite(buffer) &&
+
1381  buffer->ReadWriteUInt32(&track_id) &&
+
1382  buffer->ReadWriteUInt32(&default_sample_description_index) &&
+
1383  buffer->ReadWriteUInt32(&default_sample_duration) &&
+
1384  buffer->ReadWriteUInt32(&default_sample_size) &&
+
1385  buffer->ReadWriteUInt32(&default_sample_flags));
+
1386  return true;
+
1387 }
+
1388 
+ +
1390  atom_size = kFullBoxSize + sizeof(track_id) +
+
1391  sizeof(default_sample_description_index) +
+
1392  sizeof(default_sample_duration) + sizeof(default_sample_size) +
+
1393  sizeof(default_sample_flags);
+
1394  return atom_size;
+
1395 }
+
1396 
+
1397 MovieExtends::MovieExtends() {}
+
1398 MovieExtends::~MovieExtends() {}
+
1399 FourCC MovieExtends::BoxType() const { return FOURCC_MVEX; }
+
1400 
+ +
1402  RCHECK(Box::ReadWrite(buffer) &&
+
1403  buffer->PrepareChildren() &&
+
1404  buffer->TryReadWriteChild(&header));
+
1405  if (buffer->Reading()) {
+
1406  DCHECK(buffer->reader());
+
1407  RCHECK(buffer->reader()->ReadChildren(&tracks));
+
1408  } else {
+
1409  for (uint32_t i = 0; i < tracks.size(); ++i)
+
1410  RCHECK(tracks[i].ReadWrite(buffer));
+
1411  }
+
1412  return true;
+
1413 }
+
1414 
+ +
1416  // This box is optional. Skip it if it does not contain any track.
+
1417  atom_size = 0;
+
1418  if (tracks.size() != 0) {
+
1419  atom_size = kBoxSize + header.ComputeSize();
+
1420  for (uint32_t i = 0; i < tracks.size(); ++i)
+
1421  atom_size += tracks[i].ComputeSize();
+
1422  }
+
1423  return atom_size;
+
1424 }
+
1425 
+
1426 Movie::Movie() {}
+
1427 Movie::~Movie() {}
+
1428 FourCC Movie::BoxType() const { return FOURCC_MOOV; }
1429 
-
1430 TrackFragmentDecodeTime::TrackFragmentDecodeTime() : decode_time(0) {}
-
1431 TrackFragmentDecodeTime::~TrackFragmentDecodeTime() {}
-
1432 FourCC TrackFragmentDecodeTime::BoxType() const { return FOURCC_TFDT; }
-
1433 
- -
1435  RCHECK(FullBox::ReadWrite(buffer));
-
1436  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
-
1437  RCHECK(buffer->ReadWriteUInt64NBytes(&decode_time, num_bytes));
-
1438  return true;
-
1439 }
-
1440 
- -
1442  version = IsFitIn32Bits(decode_time) ? 0 : 1;
-
1443  atom_size = kFullBoxSize + sizeof(uint32_t) * (1 + version);
-
1444  return atom_size;
-
1445 }
-
1446 
-
1447 MovieFragmentHeader::MovieFragmentHeader() : sequence_number(0) {}
-
1448 MovieFragmentHeader::~MovieFragmentHeader() {}
-
1449 FourCC MovieFragmentHeader::BoxType() const { return FOURCC_MFHD; }
-
1450 
- -
1452  return FullBox::ReadWrite(buffer) &&
-
1453  buffer->ReadWriteUInt32(&sequence_number);
-
1454 }
-
1455 
- -
1457  atom_size = kFullBoxSize + sizeof(sequence_number);
-
1458  return atom_size;
-
1459 }
-
1460 
-
1461 TrackFragmentHeader::TrackFragmentHeader()
-
1462  : track_id(0),
-
1463  sample_description_index(0),
-
1464  default_sample_duration(0),
-
1465  default_sample_size(0),
-
1466  default_sample_flags(0) {}
-
1467 
-
1468 TrackFragmentHeader::~TrackFragmentHeader() {}
-
1469 FourCC TrackFragmentHeader::BoxType() const { return FOURCC_TFHD; }
-
1470 
- -
1472  RCHECK(FullBox::ReadWrite(buffer) &&
-
1473  buffer->ReadWriteUInt32(&track_id));
+ +
1431  RCHECK(Box::ReadWrite(buffer) &&
+
1432  buffer->PrepareChildren() &&
+
1433  buffer->ReadWriteChild(&header) &&
+
1434  buffer->TryReadWriteChild(&extends));
+
1435  if (buffer->Reading()) {
+
1436  BoxReader* reader = buffer->reader();
+
1437  DCHECK(reader);
+
1438  RCHECK(reader->ReadChildren(&tracks) &&
+
1439  reader->TryReadChildren(&pssh));
+
1440  } else {
+
1441  for (uint32_t i = 0; i < tracks.size(); ++i)
+
1442  RCHECK(tracks[i].ReadWrite(buffer));
+
1443  for (uint32_t i = 0; i < pssh.size(); ++i)
+
1444  RCHECK(pssh[i].ReadWrite(buffer));
+
1445  }
+
1446  return true;
+
1447 }
+
1448 
+ +
1450  atom_size = kBoxSize + header.ComputeSize() + extends.ComputeSize();
+
1451  for (uint32_t i = 0; i < tracks.size(); ++i)
+
1452  atom_size += tracks[i].ComputeSize();
+
1453  for (uint32_t i = 0; i < pssh.size(); ++i)
+
1454  atom_size += pssh[i].ComputeSize();
+
1455  return atom_size;
+
1456 }
+
1457 
+
1458 TrackFragmentDecodeTime::TrackFragmentDecodeTime() : decode_time(0) {}
+
1459 TrackFragmentDecodeTime::~TrackFragmentDecodeTime() {}
+
1460 FourCC TrackFragmentDecodeTime::BoxType() const { return FOURCC_TFDT; }
+
1461 
+ +
1463  RCHECK(FullBox::ReadWrite(buffer));
+
1464  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
+
1465  RCHECK(buffer->ReadWriteUInt64NBytes(&decode_time, num_bytes));
+
1466  return true;
+
1467 }
+
1468 
+ +
1470  version = IsFitIn32Bits(decode_time) ? 0 : 1;
+
1471  atom_size = kFullBoxSize + sizeof(uint32_t) * (1 + version);
+
1472  return atom_size;
+
1473 }
1474 
-
1475  if (flags & kBaseDataOffsetPresentMask) {
-
1476  // MSE requires 'default-base-is-moof' to be set and
-
1477  // 'base-data-offset-present' not to be set. We omit these checks as some
-
1478  // valid files in the wild don't follow these rules, though they use moof as
-
1479  // base.
-
1480  uint64_t base_data_offset;
-
1481  RCHECK(buffer->ReadWriteUInt64(&base_data_offset));
-
1482  DLOG(WARNING) << "base-data-offset-present is not expected. Assumes "
-
1483  "default-base-is-moof.";
-
1484  }
-
1485 
-
1486  if (flags & kSampleDescriptionIndexPresentMask) {
-
1487  RCHECK(buffer->ReadWriteUInt32(&sample_description_index));
-
1488  } else if (buffer->Reading()) {
-
1489  sample_description_index = 0;
-
1490  }
-
1491 
-
1492  if (flags & kDefaultSampleDurationPresentMask) {
-
1493  RCHECK(buffer->ReadWriteUInt32(&default_sample_duration));
-
1494  } else if (buffer->Reading()) {
-
1495  default_sample_duration = 0;
-
1496  }
-
1497 
-
1498  if (flags & kDefaultSampleSizePresentMask) {
-
1499  RCHECK(buffer->ReadWriteUInt32(&default_sample_size));
-
1500  } else if (buffer->Reading()) {
-
1501  default_sample_size = 0;
-
1502  }
-
1503 
-
1504  if (flags & kDefaultSampleFlagsPresentMask)
-
1505  RCHECK(buffer->ReadWriteUInt32(&default_sample_flags));
-
1506  return true;
-
1507 }
-
1508 
- -
1510  atom_size = kFullBoxSize + sizeof(track_id);
-
1511  if (flags & kSampleDescriptionIndexPresentMask)
-
1512  atom_size += sizeof(sample_description_index);
-
1513  if (flags & kDefaultSampleDurationPresentMask)
-
1514  atom_size += sizeof(default_sample_duration);
-
1515  if (flags & kDefaultSampleSizePresentMask)
-
1516  atom_size += sizeof(default_sample_size);
-
1517  if (flags & kDefaultSampleFlagsPresentMask)
-
1518  atom_size += sizeof(default_sample_flags);
-
1519  return atom_size;
-
1520 }
-
1521 
-
1522 TrackFragmentRun::TrackFragmentRun() : sample_count(0), data_offset(0) {}
-
1523 TrackFragmentRun::~TrackFragmentRun() {}
-
1524 FourCC TrackFragmentRun::BoxType() const { return FOURCC_TRUN; }
+
1475 MovieFragmentHeader::MovieFragmentHeader() : sequence_number(0) {}
+
1476 MovieFragmentHeader::~MovieFragmentHeader() {}
+
1477 FourCC MovieFragmentHeader::BoxType() const { return FOURCC_MFHD; }
+
1478 
+ +
1480  return FullBox::ReadWrite(buffer) &&
+
1481  buffer->ReadWriteUInt32(&sequence_number);
+
1482 }
+
1483 
+ +
1485  atom_size = kFullBoxSize + sizeof(sequence_number);
+
1486  return atom_size;
+
1487 }
+
1488 
+
1489 TrackFragmentHeader::TrackFragmentHeader()
+
1490  : track_id(0),
+
1491  sample_description_index(0),
+
1492  default_sample_duration(0),
+
1493  default_sample_size(0),
+
1494  default_sample_flags(0) {}
+
1495 
+
1496 TrackFragmentHeader::~TrackFragmentHeader() {}
+
1497 FourCC TrackFragmentHeader::BoxType() const { return FOURCC_TFHD; }
+
1498 
+ +
1500  RCHECK(FullBox::ReadWrite(buffer) &&
+
1501  buffer->ReadWriteUInt32(&track_id));
+
1502 
+
1503  if (flags & kBaseDataOffsetPresentMask) {
+
1504  // MSE requires 'default-base-is-moof' to be set and
+
1505  // 'base-data-offset-present' not to be set. We omit these checks as some
+
1506  // valid files in the wild don't follow these rules, though they use moof as
+
1507  // base.
+
1508  uint64_t base_data_offset;
+
1509  RCHECK(buffer->ReadWriteUInt64(&base_data_offset));
+
1510  DLOG(WARNING) << "base-data-offset-present is not expected. Assumes "
+
1511  "default-base-is-moof.";
+
1512  }
+
1513 
+
1514  if (flags & kSampleDescriptionIndexPresentMask) {
+
1515  RCHECK(buffer->ReadWriteUInt32(&sample_description_index));
+
1516  } else if (buffer->Reading()) {
+
1517  sample_description_index = 0;
+
1518  }
+
1519 
+
1520  if (flags & kDefaultSampleDurationPresentMask) {
+
1521  RCHECK(buffer->ReadWriteUInt32(&default_sample_duration));
+
1522  } else if (buffer->Reading()) {
+
1523  default_sample_duration = 0;
+
1524  }
1525 
- -
1527  if (!buffer->Reading()) {
-
1528  // Determine whether version 0 or version 1 should be used.
-
1529  // Use version 0 if possible, use version 1 if there is a negative
-
1530  // sample_offset value.
-
1531  version = 0;
-
1532  if (flags & kSampleCompTimeOffsetsPresentMask) {
-
1533  for (uint32_t i = 0; i < sample_count; ++i) {
-
1534  if (sample_composition_time_offsets[i] < 0) {
-
1535  version = 1;
-
1536  break;
-
1537  }
-
1538  }
-
1539  }
-
1540  }
-
1541 
-
1542  RCHECK(FullBox::ReadWrite(buffer) &&
-
1543  buffer->ReadWriteUInt32(&sample_count));
-
1544 
-
1545  bool data_offset_present = (flags & kDataOffsetPresentMask) != 0;
-
1546  bool first_sample_flags_present = (flags & kFirstSampleFlagsPresentMask) != 0;
-
1547  bool sample_duration_present = (flags & kSampleDurationPresentMask) != 0;
-
1548  bool sample_size_present = (flags & kSampleSizePresentMask) != 0;
-
1549  bool sample_flags_present = (flags & kSampleFlagsPresentMask) != 0;
-
1550  bool sample_composition_time_offsets_present =
-
1551  (flags & kSampleCompTimeOffsetsPresentMask) != 0;
-
1552 
-
1553  if (data_offset_present) {
-
1554  RCHECK(buffer->ReadWriteUInt32(&data_offset));
-
1555  } else {
-
1556  // NOTE: If the data-offset is not present, then the data for this run
-
1557  // starts immediately after the data of the previous run, or at the
-
1558  // base-data-offset defined by the track fragment header if this is the
-
1559  // first run in a track fragment. If the data-offset is present, it is
-
1560  // relative to the base-data-offset established in the track fragment
-
1561  // header.
-
1562  NOTIMPLEMENTED();
-
1563  }
-
1564 
-
1565  uint32_t first_sample_flags;
-
1566 
-
1567  if (buffer->Reading()) {
-
1568  if (first_sample_flags_present)
-
1569  RCHECK(buffer->ReadWriteUInt32(&first_sample_flags));
-
1570 
-
1571  if (sample_duration_present)
-
1572  sample_durations.resize(sample_count);
-
1573  if (sample_size_present)
-
1574  sample_sizes.resize(sample_count);
-
1575  if (sample_flags_present)
-
1576  sample_flags.resize(sample_count);
-
1577  if (sample_composition_time_offsets_present)
-
1578  sample_composition_time_offsets.resize(sample_count);
-
1579  } else {
-
1580  if (first_sample_flags_present) {
-
1581  first_sample_flags = sample_flags[0];
-
1582  DCHECK(sample_flags.size() == 1);
-
1583  RCHECK(buffer->ReadWriteUInt32(&first_sample_flags));
-
1584  }
-
1585 
-
1586  if (sample_duration_present)
-
1587  DCHECK(sample_durations.size() == sample_count);
-
1588  if (sample_size_present)
-
1589  DCHECK(sample_sizes.size() == sample_count);
-
1590  if (sample_flags_present)
-
1591  DCHECK(sample_flags.size() == sample_count);
-
1592  if (sample_composition_time_offsets_present)
-
1593  DCHECK(sample_composition_time_offsets.size() == sample_count);
-
1594  }
-
1595 
-
1596  for (uint32_t i = 0; i < sample_count; ++i) {
-
1597  if (sample_duration_present)
-
1598  RCHECK(buffer->ReadWriteUInt32(&sample_durations[i]));
-
1599  if (sample_size_present)
-
1600  RCHECK(buffer->ReadWriteUInt32(&sample_sizes[i]));
-
1601  if (sample_flags_present)
-
1602  RCHECK(buffer->ReadWriteUInt32(&sample_flags[i]));
-
1603 
-
1604  if (sample_composition_time_offsets_present) {
-
1605  if (version == 0) {
-
1606  uint32_t sample_offset = sample_composition_time_offsets[i];
-
1607  RCHECK(buffer->ReadWriteUInt32(&sample_offset));
-
1608  sample_composition_time_offsets[i] = sample_offset;
-
1609  } else {
-
1610  int32_t sample_offset = sample_composition_time_offsets[i];
-
1611  RCHECK(buffer->ReadWriteInt32(&sample_offset));
-
1612  sample_composition_time_offsets[i] = sample_offset;
-
1613  }
-
1614  }
-
1615  }
-
1616 
-
1617  if (buffer->Reading()) {
-
1618  if (first_sample_flags_present) {
-
1619  if (sample_flags.size() == 0) {
-
1620  sample_flags.push_back(first_sample_flags);
-
1621  } else {
-
1622  sample_flags[0] = first_sample_flags;
-
1623  }
-
1624  }
-
1625  }
-
1626  return true;
-
1627 }
-
1628 
- -
1630  atom_size = kFullBoxSize + sizeof(sample_count);
-
1631  if (flags & kDataOffsetPresentMask)
-
1632  atom_size += sizeof(data_offset);
-
1633  if (flags & kFirstSampleFlagsPresentMask)
-
1634  atom_size += sizeof(uint32_t);
-
1635  uint32_t fields = (flags & kSampleDurationPresentMask ? 1 : 0) +
-
1636  (flags & kSampleSizePresentMask ? 1 : 0) +
-
1637  (flags & kSampleFlagsPresentMask ? 1 : 0) +
-
1638  (flags & kSampleCompTimeOffsetsPresentMask ? 1 : 0);
-
1639  atom_size += fields * sizeof(uint32_t) * sample_count;
-
1640  return atom_size;
-
1641 }
-
1642 
-
1643 SampleToGroup::SampleToGroup() : grouping_type(0), grouping_type_parameter(0) {}
-
1644 SampleToGroup::~SampleToGroup() {}
-
1645 FourCC SampleToGroup::BoxType() const { return FOURCC_SBGP; }
-
1646 
- -
1648  RCHECK(FullBox::ReadWrite(buffer) &&
-
1649  buffer->ReadWriteUInt32(&grouping_type));
-
1650  if (version == 1)
-
1651  RCHECK(buffer->ReadWriteUInt32(&grouping_type_parameter));
-
1652 
-
1653  if (grouping_type != FOURCC_SEIG) {
-
1654  DCHECK(buffer->Reading());
-
1655  DLOG(WARNING) << "Sample group '" << grouping_type << "' is not supported.";
-
1656  return true;
-
1657  }
-
1658 
-
1659  uint32_t count = entries.size();
-
1660  RCHECK(buffer->ReadWriteUInt32(&count));
-
1661  entries.resize(count);
-
1662  for (uint32_t i = 0; i < count; ++i) {
-
1663  RCHECK(buffer->ReadWriteUInt32(&entries[i].sample_count) &&
-
1664  buffer->ReadWriteUInt32(&entries[i].group_description_index));
-
1665  }
-
1666  return true;
-
1667 }
-
1668 
- -
1670  // This box is optional. Skip it if it is not used.
-
1671  atom_size = 0;
-
1672  if (!entries.empty()) {
-
1673  atom_size = kFullBoxSize + sizeof(grouping_type) +
-
1674  (version == 1 ? sizeof(grouping_type_parameter) : 0) +
-
1675  sizeof(uint32_t) + entries.size() * sizeof(entries[0]);
-
1676  }
-
1677  return atom_size;
-
1678 }
-
1679 
-
1680 CencSampleEncryptionInfoEntry::CencSampleEncryptionInfoEntry()
-
1681  : is_encrypted(false), iv_size(0) {
-
1682 }
-
1683 CencSampleEncryptionInfoEntry::~CencSampleEncryptionInfoEntry() {};
-
1684 
-
1685 SampleGroupDescription::SampleGroupDescription() : grouping_type(0) {}
-
1686 SampleGroupDescription::~SampleGroupDescription() {}
-
1687 FourCC SampleGroupDescription::BoxType() const { return FOURCC_SGPD; }
-
1688 
- -
1690  RCHECK(FullBox::ReadWrite(buffer) &&
-
1691  buffer->ReadWriteUInt32(&grouping_type));
-
1692 
-
1693  if (grouping_type != FOURCC_SEIG) {
-
1694  DCHECK(buffer->Reading());
-
1695  DLOG(WARNING) << "Sample group '" << grouping_type << "' is not supported.";
-
1696  return true;
-
1697  }
-
1698 
-
1699  const size_t kEntrySize = sizeof(uint32_t) + kCencKeyIdSize;
-
1700  uint32_t default_length = 0;
-
1701  if (version == 1) {
-
1702  if (buffer->Reading()) {
-
1703  RCHECK(buffer->ReadWriteUInt32(&default_length));
-
1704  RCHECK(default_length == 0 || default_length >= kEntrySize);
-
1705  } else {
-
1706  default_length = kEntrySize;
-
1707  RCHECK(buffer->ReadWriteUInt32(&default_length));
-
1708  }
-
1709  }
-
1710 
-
1711  uint32_t count = entries.size();
-
1712  RCHECK(buffer->ReadWriteUInt32(&count));
-
1713  entries.resize(count);
-
1714  for (uint32_t i = 0; i < count; ++i) {
-
1715  if (version == 1) {
-
1716  if (buffer->Reading() && default_length == 0) {
-
1717  uint32_t description_length = 0;
-
1718  RCHECK(buffer->ReadWriteUInt32(&description_length));
-
1719  RCHECK(description_length >= kEntrySize);
-
1720  }
-
1721  }
-
1722 
-
1723  if (!buffer->Reading()) {
-
1724  if (entries[i].key_id.size() != kCencKeyIdSize) {
-
1725  LOG(WARNING) << "CENC defines key id length of " << kCencKeyIdSize
-
1726  << " bytes; got " << entries[i].key_id.size()
-
1727  << ". Resized accordingly.";
-
1728  entries[i].key_id.resize(kCencKeyIdSize);
-
1729  }
-
1730  }
-
1731 
-
1732  uint8_t flag = entries[i].is_encrypted ? 1 : 0;
-
1733  RCHECK(buffer->IgnoreBytes(2) && // reserved.
-
1734  buffer->ReadWriteUInt8(&flag) &&
-
1735  buffer->ReadWriteUInt8(&entries[i].iv_size) &&
-
1736  buffer->ReadWriteVector(&entries[i].key_id, kCencKeyIdSize));
-
1737 
-
1738  if (buffer->Reading()) {
-
1739  entries[i].is_encrypted = (flag != 0);
-
1740  if (entries[i].is_encrypted) {
-
1741  RCHECK(entries[i].iv_size == 8 || entries[i].iv_size == 16);
-
1742  } else {
-
1743  RCHECK(entries[i].iv_size == 0);
-
1744  }
-
1745  }
-
1746  }
-
1747  return true;
-
1748 }
-
1749 
- -
1751  // Version 0 is obsoleted, so always generate version 1 box.
-
1752  version = 1;
-
1753  // This box is optional. Skip it if it is not used.
-
1754  atom_size = 0;
-
1755  if (!entries.empty()) {
-
1756  const size_t kEntrySize = sizeof(uint32_t) + kCencKeyIdSize;
-
1757  atom_size = kFullBoxSize + sizeof(grouping_type) +
-
1758  (version == 1 ? sizeof(uint32_t) : 0) + sizeof(uint32_t) +
-
1759  entries.size() * kEntrySize;
-
1760  }
-
1761  return atom_size;
-
1762 }
-
1763 
-
1764 TrackFragment::TrackFragment() : decode_time_absent(false) {}
-
1765 TrackFragment::~TrackFragment() {}
-
1766 FourCC TrackFragment::BoxType() const { return FOURCC_TRAF; }
-
1767 
- -
1769  RCHECK(Box::ReadWrite(buffer) &&
-
1770  buffer->PrepareChildren() &&
-
1771  buffer->ReadWriteChild(&header));
-
1772  if (buffer->Reading()) {
-
1773  DCHECK(buffer->reader());
-
1774  decode_time_absent = !buffer->reader()->ChildExist(&decode_time);
-
1775  if (!decode_time_absent)
-
1776  RCHECK(buffer->ReadWriteChild(&decode_time));
-
1777  RCHECK(buffer->reader()->TryReadChildren(&runs));
-
1778 
-
1779  // There could be multiple SampleGroupDescription and SampleToGroup boxes
-
1780  // with different grouping types. For common encryption, the relevant
-
1781  // grouping type is 'seig'. Continue reading until 'seig' is found, or
-
1782  // until running out of child boxes.
-
1783  while (sample_to_group.grouping_type != FOURCC_SEIG &&
-
1784  buffer->reader()->ChildExist(&sample_to_group)) {
-
1785  RCHECK(buffer->reader()->ReadChild(&sample_to_group));
-
1786  }
-
1787  while (sample_group_description.grouping_type != FOURCC_SEIG &&
-
1788  buffer->reader()->ChildExist(&sample_group_description)) {
-
1789  RCHECK(buffer->reader()->ReadChild(&sample_group_description));
-
1790  }
-
1791  } else {
-
1792  if (!decode_time_absent)
-
1793  RCHECK(buffer->ReadWriteChild(&decode_time));
-
1794  for (uint32_t i = 0; i < runs.size(); ++i)
-
1795  RCHECK(runs[i].ReadWrite(buffer));
-
1796  RCHECK(buffer->TryReadWriteChild(&sample_to_group) &&
-
1797  buffer->TryReadWriteChild(&sample_group_description));
-
1798  }
-
1799  return buffer->TryReadWriteChild(&auxiliary_size) &&
-
1800  buffer->TryReadWriteChild(&auxiliary_offset);
-
1801 }
-
1802 
- -
1804  atom_size = kBoxSize + header.ComputeSize() + decode_time.ComputeSize() +
-
1805  sample_to_group.ComputeSize() +
-
1806  sample_group_description.ComputeSize() +
-
1807  auxiliary_size.ComputeSize() + auxiliary_offset.ComputeSize();
-
1808  for (uint32_t i = 0; i < runs.size(); ++i)
-
1809  atom_size += runs[i].ComputeSize();
-
1810  return atom_size;
-
1811 }
-
1812 
-
1813 MovieFragment::MovieFragment() {}
-
1814 MovieFragment::~MovieFragment() {}
-
1815 FourCC MovieFragment::BoxType() const { return FOURCC_MOOF; }
-
1816 
- -
1818  RCHECK(Box::ReadWrite(buffer) &&
-
1819  buffer->PrepareChildren() &&
-
1820  buffer->ReadWriteChild(&header));
-
1821  if (buffer->Reading()) {
-
1822  BoxReader* reader = buffer->reader();
-
1823  DCHECK(reader);
-
1824  RCHECK(reader->ReadChildren(&tracks) &&
-
1825  reader->TryReadChildren(&pssh));
-
1826  } else {
-
1827  for (uint32_t i = 0; i < tracks.size(); ++i)
-
1828  RCHECK(tracks[i].ReadWrite(buffer));
-
1829  for (uint32_t i = 0; i < pssh.size(); ++i)
-
1830  RCHECK(pssh[i].ReadWrite(buffer));
-
1831  }
-
1832  return true;
-
1833 }
-
1834 
- -
1836  atom_size = kBoxSize + header.ComputeSize();
-
1837  for (uint32_t i = 0; i < tracks.size(); ++i)
-
1838  atom_size += tracks[i].ComputeSize();
-
1839  for (uint32_t i = 0; i < pssh.size(); ++i)
-
1840  atom_size += pssh[i].ComputeSize();
-
1841  return atom_size;
-
1842 }
-
1843 
-
1844 SegmentIndex::SegmentIndex()
-
1845  : reference_id(0),
-
1846  timescale(0),
-
1847  earliest_presentation_time(0),
-
1848  first_offset(0) {}
-
1849 SegmentIndex::~SegmentIndex() {}
-
1850 FourCC SegmentIndex::BoxType() const { return FOURCC_SIDX; }
-
1851 
- -
1853  RCHECK(FullBox::ReadWrite(buffer) &&
-
1854  buffer->ReadWriteUInt32(&reference_id) &&
-
1855  buffer->ReadWriteUInt32(&timescale));
-
1856 
-
1857  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
-
1858  RCHECK(
-
1859  buffer->ReadWriteUInt64NBytes(&earliest_presentation_time, num_bytes) &&
-
1860  buffer->ReadWriteUInt64NBytes(&first_offset, num_bytes));
-
1861 
-
1862  uint16_t reference_count = references.size();
-
1863  RCHECK(buffer->IgnoreBytes(2) && // reserved.
-
1864  buffer->ReadWriteUInt16(&reference_count));
-
1865  references.resize(reference_count);
-
1866 
-
1867  uint32_t reference_type_size;
-
1868  uint32_t sap;
-
1869  for (uint32_t i = 0; i < reference_count; ++i) {
-
1870  if (!buffer->Reading()) {
-
1871  reference_type_size = references[i].referenced_size;
-
1872  if (references[i].reference_type)
-
1873  reference_type_size |= (1 << 31);
-
1874  sap = (references[i].sap_type << 28) | references[i].sap_delta_time;
-
1875  if (references[i].starts_with_sap)
-
1876  sap |= (1 << 31);
-
1877  }
-
1878  RCHECK(buffer->ReadWriteUInt32(&reference_type_size) &&
-
1879  buffer->ReadWriteUInt32(&references[i].subsegment_duration) &&
-
1880  buffer->ReadWriteUInt32(&sap));
-
1881  if (buffer->Reading()) {
-
1882  references[i].reference_type = (reference_type_size >> 31) ? true : false;
-
1883  references[i].referenced_size = reference_type_size & ~(1 << 31);
-
1884  references[i].starts_with_sap = (sap >> 31) ? true : false;
-
1885  references[i].sap_type =
-
1886  static_cast<SegmentReference::SAPType>((sap >> 28) & 0x07);
-
1887  references[i].sap_delta_time = sap & ~(0xF << 28);
-
1888  }
-
1889  }
-
1890  return true;
-
1891 }
-
1892 
- -
1894  version = IsFitIn32Bits(earliest_presentation_time, first_offset) ? 0 : 1;
-
1895  atom_size = kFullBoxSize + sizeof(reference_id) + sizeof(timescale) +
-
1896  sizeof(uint32_t) * (1 + version) * 2 + 2 * sizeof(uint16_t) +
-
1897  3 * sizeof(uint32_t) * references.size();
-
1898  return atom_size;
-
1899 }
-
1900 
-
1901 MediaData::MediaData() : data_size(0) {}
-
1902 MediaData::~MediaData() {}
-
1903 FourCC MediaData::BoxType() const { return FOURCC_MDAT; }
-
1904 
-
1905 void MediaData::Write(BufferWriter* buffer) {
-
1906  buffer->AppendInt(ComputeSize());
-
1907  buffer->AppendInt(static_cast<uint32_t>(BoxType()));
-
1908 }
-
1909 
-
1910 uint32_t MediaData::ComputeSize() {
-
1911  return kBoxSize + data_size;
-
1912 }
-
1913 
-
1914 } // namespace mp4
-
1915 } // namespace media
-
1916 } // namespace edash_packager
-
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
- +
1526  if (flags & kDefaultSampleSizePresentMask) {
+
1527  RCHECK(buffer->ReadWriteUInt32(&default_sample_size));
+
1528  } else if (buffer->Reading()) {
+
1529  default_sample_size = 0;
+
1530  }
+
1531 
+
1532  if (flags & kDefaultSampleFlagsPresentMask)
+
1533  RCHECK(buffer->ReadWriteUInt32(&default_sample_flags));
+
1534  return true;
+
1535 }
+
1536 
+ +
1538  atom_size = kFullBoxSize + sizeof(track_id);
+
1539  if (flags & kSampleDescriptionIndexPresentMask)
+
1540  atom_size += sizeof(sample_description_index);
+
1541  if (flags & kDefaultSampleDurationPresentMask)
+
1542  atom_size += sizeof(default_sample_duration);
+
1543  if (flags & kDefaultSampleSizePresentMask)
+
1544  atom_size += sizeof(default_sample_size);
+
1545  if (flags & kDefaultSampleFlagsPresentMask)
+
1546  atom_size += sizeof(default_sample_flags);
+
1547  return atom_size;
+
1548 }
+
1549 
+
1550 TrackFragmentRun::TrackFragmentRun() : sample_count(0), data_offset(0) {}
+
1551 TrackFragmentRun::~TrackFragmentRun() {}
+
1552 FourCC TrackFragmentRun::BoxType() const { return FOURCC_TRUN; }
+
1553 
+ +
1555  if (!buffer->Reading()) {
+
1556  // Determine whether version 0 or version 1 should be used.
+
1557  // Use version 0 if possible, use version 1 if there is a negative
+
1558  // sample_offset value.
+
1559  version = 0;
+
1560  if (flags & kSampleCompTimeOffsetsPresentMask) {
+
1561  for (uint32_t i = 0; i < sample_count; ++i) {
+
1562  if (sample_composition_time_offsets[i] < 0) {
+
1563  version = 1;
+
1564  break;
+
1565  }
+
1566  }
+
1567  }
+
1568  }
+
1569 
+
1570  RCHECK(FullBox::ReadWrite(buffer) &&
+
1571  buffer->ReadWriteUInt32(&sample_count));
+
1572 
+
1573  bool data_offset_present = (flags & kDataOffsetPresentMask) != 0;
+
1574  bool first_sample_flags_present = (flags & kFirstSampleFlagsPresentMask) != 0;
+
1575  bool sample_duration_present = (flags & kSampleDurationPresentMask) != 0;
+
1576  bool sample_size_present = (flags & kSampleSizePresentMask) != 0;
+
1577  bool sample_flags_present = (flags & kSampleFlagsPresentMask) != 0;
+
1578  bool sample_composition_time_offsets_present =
+
1579  (flags & kSampleCompTimeOffsetsPresentMask) != 0;
+
1580 
+
1581  if (data_offset_present) {
+
1582  RCHECK(buffer->ReadWriteUInt32(&data_offset));
+
1583  } else {
+
1584  // NOTE: If the data-offset is not present, then the data for this run
+
1585  // starts immediately after the data of the previous run, or at the
+
1586  // base-data-offset defined by the track fragment header if this is the
+
1587  // first run in a track fragment. If the data-offset is present, it is
+
1588  // relative to the base-data-offset established in the track fragment
+
1589  // header.
+
1590  NOTIMPLEMENTED();
+
1591  }
+
1592 
+
1593  uint32_t first_sample_flags;
+
1594 
+
1595  if (buffer->Reading()) {
+
1596  if (first_sample_flags_present)
+
1597  RCHECK(buffer->ReadWriteUInt32(&first_sample_flags));
+
1598 
+
1599  if (sample_duration_present)
+
1600  sample_durations.resize(sample_count);
+
1601  if (sample_size_present)
+
1602  sample_sizes.resize(sample_count);
+
1603  if (sample_flags_present)
+
1604  sample_flags.resize(sample_count);
+
1605  if (sample_composition_time_offsets_present)
+
1606  sample_composition_time_offsets.resize(sample_count);
+
1607  } else {
+
1608  if (first_sample_flags_present) {
+
1609  first_sample_flags = sample_flags[0];
+
1610  DCHECK(sample_flags.size() == 1);
+
1611  RCHECK(buffer->ReadWriteUInt32(&first_sample_flags));
+
1612  }
+
1613 
+
1614  if (sample_duration_present)
+
1615  DCHECK(sample_durations.size() == sample_count);
+
1616  if (sample_size_present)
+
1617  DCHECK(sample_sizes.size() == sample_count);
+
1618  if (sample_flags_present)
+
1619  DCHECK(sample_flags.size() == sample_count);
+
1620  if (sample_composition_time_offsets_present)
+
1621  DCHECK(sample_composition_time_offsets.size() == sample_count);
+
1622  }
+
1623 
+
1624  for (uint32_t i = 0; i < sample_count; ++i) {
+
1625  if (sample_duration_present)
+
1626  RCHECK(buffer->ReadWriteUInt32(&sample_durations[i]));
+
1627  if (sample_size_present)
+
1628  RCHECK(buffer->ReadWriteUInt32(&sample_sizes[i]));
+
1629  if (sample_flags_present)
+
1630  RCHECK(buffer->ReadWriteUInt32(&sample_flags[i]));
+
1631 
+
1632  if (sample_composition_time_offsets_present) {
+
1633  if (version == 0) {
+
1634  uint32_t sample_offset = sample_composition_time_offsets[i];
+
1635  RCHECK(buffer->ReadWriteUInt32(&sample_offset));
+
1636  sample_composition_time_offsets[i] = sample_offset;
+
1637  } else {
+
1638  int32_t sample_offset = sample_composition_time_offsets[i];
+
1639  RCHECK(buffer->ReadWriteInt32(&sample_offset));
+
1640  sample_composition_time_offsets[i] = sample_offset;
+
1641  }
+
1642  }
+
1643  }
+
1644 
+
1645  if (buffer->Reading()) {
+
1646  if (first_sample_flags_present) {
+
1647  if (sample_flags.size() == 0) {
+
1648  sample_flags.push_back(first_sample_flags);
+
1649  } else {
+
1650  sample_flags[0] = first_sample_flags;
+
1651  }
+
1652  }
+
1653  }
+
1654  return true;
+
1655 }
+
1656 
+ +
1658  atom_size = kFullBoxSize + sizeof(sample_count);
+
1659  if (flags & kDataOffsetPresentMask)
+
1660  atom_size += sizeof(data_offset);
+
1661  if (flags & kFirstSampleFlagsPresentMask)
+
1662  atom_size += sizeof(uint32_t);
+
1663  uint32_t fields = (flags & kSampleDurationPresentMask ? 1 : 0) +
+
1664  (flags & kSampleSizePresentMask ? 1 : 0) +
+
1665  (flags & kSampleFlagsPresentMask ? 1 : 0) +
+
1666  (flags & kSampleCompTimeOffsetsPresentMask ? 1 : 0);
+
1667  atom_size += fields * sizeof(uint32_t) * sample_count;
+
1668  return atom_size;
+
1669 }
+
1670 
+
1671 SampleToGroup::SampleToGroup() : grouping_type(0), grouping_type_parameter(0) {}
+
1672 SampleToGroup::~SampleToGroup() {}
+
1673 FourCC SampleToGroup::BoxType() const { return FOURCC_SBGP; }
+
1674 
+ +
1676  RCHECK(FullBox::ReadWrite(buffer) &&
+
1677  buffer->ReadWriteUInt32(&grouping_type));
+
1678  if (version == 1)
+
1679  RCHECK(buffer->ReadWriteUInt32(&grouping_type_parameter));
+
1680 
+
1681  if (grouping_type != FOURCC_SEIG) {
+
1682  DCHECK(buffer->Reading());
+
1683  DLOG(WARNING) << "Sample group '" << grouping_type << "' is not supported.";
+
1684  return true;
+
1685  }
+
1686 
+
1687  uint32_t count = entries.size();
+
1688  RCHECK(buffer->ReadWriteUInt32(&count));
+
1689  entries.resize(count);
+
1690  for (uint32_t i = 0; i < count; ++i) {
+
1691  RCHECK(buffer->ReadWriteUInt32(&entries[i].sample_count) &&
+
1692  buffer->ReadWriteUInt32(&entries[i].group_description_index));
+
1693  }
+
1694  return true;
+
1695 }
+
1696 
+ +
1698  // This box is optional. Skip it if it is not used.
+
1699  atom_size = 0;
+
1700  if (!entries.empty()) {
+
1701  atom_size = kFullBoxSize + sizeof(grouping_type) +
+
1702  (version == 1 ? sizeof(grouping_type_parameter) : 0) +
+
1703  sizeof(uint32_t) + entries.size() * sizeof(entries[0]);
+
1704  }
+
1705  return atom_size;
+
1706 }
+
1707 
+
1708 CencSampleEncryptionInfoEntry::CencSampleEncryptionInfoEntry()
+
1709  : is_encrypted(false), iv_size(0) {
+
1710 }
+
1711 CencSampleEncryptionInfoEntry::~CencSampleEncryptionInfoEntry() {};
+
1712 
+
1713 SampleGroupDescription::SampleGroupDescription() : grouping_type(0) {}
+
1714 SampleGroupDescription::~SampleGroupDescription() {}
+
1715 FourCC SampleGroupDescription::BoxType() const { return FOURCC_SGPD; }
+
1716 
+ +
1718  RCHECK(FullBox::ReadWrite(buffer) &&
+
1719  buffer->ReadWriteUInt32(&grouping_type));
+
1720 
+
1721  if (grouping_type != FOURCC_SEIG) {
+
1722  DCHECK(buffer->Reading());
+
1723  DLOG(WARNING) << "Sample group '" << grouping_type << "' is not supported.";
+
1724  return true;
+
1725  }
+
1726 
+
1727  const size_t kEntrySize = sizeof(uint32_t) + kCencKeyIdSize;
+
1728  uint32_t default_length = 0;
+
1729  if (version == 1) {
+
1730  if (buffer->Reading()) {
+
1731  RCHECK(buffer->ReadWriteUInt32(&default_length));
+
1732  RCHECK(default_length == 0 || default_length >= kEntrySize);
+
1733  } else {
+
1734  default_length = kEntrySize;
+
1735  RCHECK(buffer->ReadWriteUInt32(&default_length));
+
1736  }
+
1737  }
+
1738 
+
1739  uint32_t count = entries.size();
+
1740  RCHECK(buffer->ReadWriteUInt32(&count));
+
1741  entries.resize(count);
+
1742  for (uint32_t i = 0; i < count; ++i) {
+
1743  if (version == 1) {
+
1744  if (buffer->Reading() && default_length == 0) {
+
1745  uint32_t description_length = 0;
+
1746  RCHECK(buffer->ReadWriteUInt32(&description_length));
+
1747  RCHECK(description_length >= kEntrySize);
+
1748  }
+
1749  }
+
1750 
+
1751  if (!buffer->Reading()) {
+
1752  if (entries[i].key_id.size() != kCencKeyIdSize) {
+
1753  LOG(WARNING) << "CENC defines key id length of " << kCencKeyIdSize
+
1754  << " bytes; got " << entries[i].key_id.size()
+
1755  << ". Resized accordingly.";
+
1756  entries[i].key_id.resize(kCencKeyIdSize);
+
1757  }
+
1758  }
+
1759 
+
1760  uint8_t flag = entries[i].is_encrypted ? 1 : 0;
+
1761  RCHECK(buffer->IgnoreBytes(2) && // reserved.
+
1762  buffer->ReadWriteUInt8(&flag) &&
+
1763  buffer->ReadWriteUInt8(&entries[i].iv_size) &&
+
1764  buffer->ReadWriteVector(&entries[i].key_id, kCencKeyIdSize));
+
1765 
+
1766  if (buffer->Reading()) {
+
1767  entries[i].is_encrypted = (flag != 0);
+
1768  if (entries[i].is_encrypted) {
+
1769  RCHECK(entries[i].iv_size == 8 || entries[i].iv_size == 16);
+
1770  } else {
+
1771  RCHECK(entries[i].iv_size == 0);
+
1772  }
+
1773  }
+
1774  }
+
1775  return true;
+
1776 }
+
1777 
+ +
1779  // Version 0 is obsoleted, so always generate version 1 box.
+
1780  version = 1;
+
1781  // This box is optional. Skip it if it is not used.
+
1782  atom_size = 0;
+
1783  if (!entries.empty()) {
+
1784  const size_t kEntrySize = sizeof(uint32_t) + kCencKeyIdSize;
+
1785  atom_size = kFullBoxSize + sizeof(grouping_type) +
+
1786  (version == 1 ? sizeof(uint32_t) : 0) + sizeof(uint32_t) +
+
1787  entries.size() * kEntrySize;
+
1788  }
+
1789  return atom_size;
+
1790 }
+
1791 
+
1792 TrackFragment::TrackFragment() : decode_time_absent(false) {}
+
1793 TrackFragment::~TrackFragment() {}
+
1794 FourCC TrackFragment::BoxType() const { return FOURCC_TRAF; }
+
1795 
+ +
1797  RCHECK(Box::ReadWrite(buffer) &&
+
1798  buffer->PrepareChildren() &&
+
1799  buffer->ReadWriteChild(&header));
+
1800  if (buffer->Reading()) {
+
1801  DCHECK(buffer->reader());
+
1802  decode_time_absent = !buffer->reader()->ChildExist(&decode_time);
+
1803  if (!decode_time_absent)
+
1804  RCHECK(buffer->ReadWriteChild(&decode_time));
+
1805  RCHECK(buffer->reader()->TryReadChildren(&runs));
+
1806 
+
1807  // There could be multiple SampleGroupDescription and SampleToGroup boxes
+
1808  // with different grouping types. For common encryption, the relevant
+
1809  // grouping type is 'seig'. Continue reading until 'seig' is found, or
+
1810  // until running out of child boxes.
+
1811  while (sample_to_group.grouping_type != FOURCC_SEIG &&
+
1812  buffer->reader()->ChildExist(&sample_to_group)) {
+
1813  RCHECK(buffer->reader()->ReadChild(&sample_to_group));
+
1814  }
+
1815  while (sample_group_description.grouping_type != FOURCC_SEIG &&
+
1816  buffer->reader()->ChildExist(&sample_group_description)) {
+
1817  RCHECK(buffer->reader()->ReadChild(&sample_group_description));
+
1818  }
+
1819  } else {
+
1820  if (!decode_time_absent)
+
1821  RCHECK(buffer->ReadWriteChild(&decode_time));
+
1822  for (uint32_t i = 0; i < runs.size(); ++i)
+
1823  RCHECK(runs[i].ReadWrite(buffer));
+
1824  RCHECK(buffer->TryReadWriteChild(&sample_to_group) &&
+
1825  buffer->TryReadWriteChild(&sample_group_description));
+
1826  }
+
1827  return buffer->TryReadWriteChild(&auxiliary_size) &&
+
1828  buffer->TryReadWriteChild(&auxiliary_offset);
+
1829 }
+
1830 
+ +
1832  atom_size = kBoxSize + header.ComputeSize() + decode_time.ComputeSize() +
+
1833  sample_to_group.ComputeSize() +
+
1834  sample_group_description.ComputeSize() +
+
1835  auxiliary_size.ComputeSize() + auxiliary_offset.ComputeSize();
+
1836  for (uint32_t i = 0; i < runs.size(); ++i)
+
1837  atom_size += runs[i].ComputeSize();
+
1838  return atom_size;
+
1839 }
+
1840 
+
1841 MovieFragment::MovieFragment() {}
+
1842 MovieFragment::~MovieFragment() {}
+
1843 FourCC MovieFragment::BoxType() const { return FOURCC_MOOF; }
+
1844 
+ +
1846  RCHECK(Box::ReadWrite(buffer) &&
+
1847  buffer->PrepareChildren() &&
+
1848  buffer->ReadWriteChild(&header));
+
1849  if (buffer->Reading()) {
+
1850  BoxReader* reader = buffer->reader();
+
1851  DCHECK(reader);
+
1852  RCHECK(reader->ReadChildren(&tracks) &&
+
1853  reader->TryReadChildren(&pssh));
+
1854  } else {
+
1855  for (uint32_t i = 0; i < tracks.size(); ++i)
+
1856  RCHECK(tracks[i].ReadWrite(buffer));
+
1857  for (uint32_t i = 0; i < pssh.size(); ++i)
+
1858  RCHECK(pssh[i].ReadWrite(buffer));
+
1859  }
+
1860  return true;
+
1861 }
+
1862 
+ +
1864  atom_size = kBoxSize + header.ComputeSize();
+
1865  for (uint32_t i = 0; i < tracks.size(); ++i)
+
1866  atom_size += tracks[i].ComputeSize();
+
1867  for (uint32_t i = 0; i < pssh.size(); ++i)
+
1868  atom_size += pssh[i].ComputeSize();
+
1869  return atom_size;
+
1870 }
+
1871 
+
1872 SegmentIndex::SegmentIndex()
+
1873  : reference_id(0),
+
1874  timescale(0),
+
1875  earliest_presentation_time(0),
+
1876  first_offset(0) {}
+
1877 SegmentIndex::~SegmentIndex() {}
+
1878 FourCC SegmentIndex::BoxType() const { return FOURCC_SIDX; }
+
1879 
+ +
1881  RCHECK(FullBox::ReadWrite(buffer) &&
+
1882  buffer->ReadWriteUInt32(&reference_id) &&
+
1883  buffer->ReadWriteUInt32(&timescale));
+
1884 
+
1885  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
+
1886  RCHECK(
+
1887  buffer->ReadWriteUInt64NBytes(&earliest_presentation_time, num_bytes) &&
+
1888  buffer->ReadWriteUInt64NBytes(&first_offset, num_bytes));
+
1889 
+
1890  uint16_t reference_count = references.size();
+
1891  RCHECK(buffer->IgnoreBytes(2) && // reserved.
+
1892  buffer->ReadWriteUInt16(&reference_count));
+
1893  references.resize(reference_count);
+
1894 
+
1895  uint32_t reference_type_size;
+
1896  uint32_t sap;
+
1897  for (uint32_t i = 0; i < reference_count; ++i) {
+
1898  if (!buffer->Reading()) {
+
1899  reference_type_size = references[i].referenced_size;
+
1900  if (references[i].reference_type)
+
1901  reference_type_size |= (1 << 31);
+
1902  sap = (references[i].sap_type << 28) | references[i].sap_delta_time;
+
1903  if (references[i].starts_with_sap)
+
1904  sap |= (1 << 31);
+
1905  }
+
1906  RCHECK(buffer->ReadWriteUInt32(&reference_type_size) &&
+
1907  buffer->ReadWriteUInt32(&references[i].subsegment_duration) &&
+
1908  buffer->ReadWriteUInt32(&sap));
+
1909  if (buffer->Reading()) {
+
1910  references[i].reference_type = (reference_type_size >> 31) ? true : false;
+
1911  references[i].referenced_size = reference_type_size & ~(1 << 31);
+
1912  references[i].starts_with_sap = (sap >> 31) ? true : false;
+
1913  references[i].sap_type =
+
1914  static_cast<SegmentReference::SAPType>((sap >> 28) & 0x07);
+
1915  references[i].sap_delta_time = sap & ~(0xF << 28);
+
1916  }
+
1917  }
+
1918  return true;
+
1919 }
+
1920 
+ +
1922  version = IsFitIn32Bits(earliest_presentation_time, first_offset) ? 0 : 1;
+
1923  atom_size = kFullBoxSize + sizeof(reference_id) + sizeof(timescale) +
+
1924  sizeof(uint32_t) * (1 + version) * 2 + 2 * sizeof(uint16_t) +
+
1925  3 * sizeof(uint32_t) * references.size();
+
1926  return atom_size;
+
1927 }
+
1928 
+
1929 MediaData::MediaData() : data_size(0) {}
+
1930 MediaData::~MediaData() {}
+
1931 FourCC MediaData::BoxType() const { return FOURCC_MDAT; }
+
1932 
+
1933 void MediaData::Write(BufferWriter* buffer) {
+
1934  buffer->AppendInt(ComputeSize());
+
1935  buffer->AppendInt(static_cast<uint32_t>(BoxType()));
+
1936 }
+
1937 
+
1938 uint32_t MediaData::ComputeSize() {
+
1939  return kBoxSize + data_size;
+
1940 }
+
1941 
+
1942 } // namespace mp4
+
1943 } // namespace media
+
1944 } // namespace edash_packager
+
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+
bool ReadChildren(std::vector< T > *children) WARN_UNUSED_RESULT
Definition: box_reader.h:133
-
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
-
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
bool ReadChild(Box *child) WARN_UNUSED_RESULT
Definition: box_reader.cc:123
- - - - -
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+ + + + +
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
-
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
-
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
-
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
-
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
- -
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
-
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
-
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
-
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
-
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+ +
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
- +
virtual bool ReadWrite(BoxBuffer *buffer)
Read/write the mp4 box from/to BoxBuffer.
Definition: box.cc:36
- + -
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
-
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
-
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
- -
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
- -
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+ +
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+ +
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
-
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
- +
bool ChildExist(Box *child) WARN_UNUSED_RESULT
Definition: box_reader.cc:136
- -
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
-
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
-
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
- -
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
- - - -
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+ +
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+ +
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+ + + +
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
bool ReadWriteUInt64NBytes(uint64_t *v, size_t num_bytes)
Definition: box_buffer.h:107
-
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
- - +
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+ + - -
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
- - - - - -
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
-
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
- -
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+ +
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+ + + + + +
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+ +
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
Definition: box.cc:50
-
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
- -
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
-
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
- - +
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+ +
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+ + -
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
- -
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
- +
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+ +
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+
bool IgnoreBytes(size_t num_bytes)
Definition: box_buffer.h:167
A class to read bit streams.
Definition: bit_reader.h:17
-
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
- - - -
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
- -
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
-
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
- +
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+ + + +
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+ +
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+ - - - - -
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+ + + + +
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
-
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
- -
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
- +
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+ +
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+
bool ReadAllChildren(std::vector< T > *children) WARN_UNUSED_RESULT
Definition: box_reader.h:163
-
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
- - +
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+ +
void Write(BufferWriter *writer)
Definition: box.cc:25
- -
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
- - + +
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+ +
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(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
-
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
-
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
-
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
- - - -
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+ + + +
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
- -
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
-
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
- -
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
-
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
- + +
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+ +
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+
bool ReadWrite(BoxBuffer *buffer) override
Read/write the mp4 box from/to BoxBuffer.
+ 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 5f9a43f76c..c3717c46d4 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/dfa/structedash__packager_1_1media_1_1MuxerOptions-members.html b/docs/dd/dfa/structedash__packager_1_1media_1_1MuxerOptions-members.html index 958d0a1c51..df85cf3988 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 @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d0f/local__file_8h_source.html b/docs/de/d0f/local__file_8h_source.html index 7f320d6c18..6a51b5ea30 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/d10/cenc_8h_source.html b/docs/de/d10/cenc_8h_source.html index f43c937fab..c666684492 100644 --- a/docs/de/d10/cenc_8h_source.html +++ b/docs/de/d10/cenc_8h_source.html @@ -146,7 +146,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 d225c67bc9..bb89422030 100644 --- a/docs/de/d12/container__names_8h_source.html +++ b/docs/de/d12/container__names_8h_source.html @@ -150,7 +150,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 9bd9cc708f..3dee4b4401 100644 --- a/docs/de/d15/media__stream_8cc_source.html +++ b/docs/de/d15/media__stream_8cc_source.html @@ -206,11 +206,11 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); -
Status Parse()
Read from the source and send it to the parser.
Definition: demuxer.cc:166
+
Status Parse()
Read from the source and send it to the parser.
Definition: demuxer.cc:170
diff --git a/docs/de/d17/cluster__builder_8cc_source.html b/docs/de/d17/cluster__builder_8cc_source.html index cedd75bc19..dfeb9a3eac 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/d19/classedash__packager_1_1media_1_1File.html b/docs/de/d19/classedash__packager_1_1media_1_1File.html index 230940e8c4..f78127bbf9 100644 --- a/docs/de/d19/classedash__packager_1_1media_1_1File.html +++ b/docs/de/d19/classedash__packager_1_1media_1_1File.html @@ -662,7 +662,7 @@ class ThreadedIoFile 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 b7649938bc..ee8e469cfc 100644 --- a/docs/de/d1f/structedash__packager_1_1media_1_1StreamDescriptor.html +++ b/docs/de/d1f/structedash__packager_1_1media_1_1StreamDescriptor.html @@ -128,7 +128,7 @@ std::string language diff --git a/docs/de/d34/offset__byte__queue_8h_source.html b/docs/de/d34/offset__byte__queue_8h_source.html index 7e189bd17c..7fa6a8106f 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/d3e/buffer__reader_8h_source.html b/docs/de/d3e/buffer__reader_8h_source.html index 2d14f4c77f..6bef801b4c 100644 --- a/docs/de/d3e/buffer__reader_8h_source.html +++ b/docs/de/d3e/buffer__reader_8h_source.html @@ -161,7 +161,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 56049982de..aa3f83e355 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 @@ -175,7 +175,7 @@ Additional Inherited Members

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

-

Definition at line 260 of file box_definitions.cc.

+

Definition at line 262 of file box_definitions.cc.

@@ -186,7 +186,7 @@ Additional Inherited Members diff --git a/docs/de/d4a/muxer__listener__internal_8h_source.html b/docs/de/d4a/muxer__listener__internal_8h_source.html index 5527e784c5..6774e203c5 100644 --- a/docs/de/d4a/muxer__listener__internal_8h_source.html +++ b/docs/de/d4a/muxer__listener__internal_8h_source.html @@ -144,7 +144,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d4c/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPat-members.html b/docs/de/d4c/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPat-members.html index 16f8976c3f..88841bd137 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 85eb8c3d0f..bb6c786d81 100644 --- a/docs/de/d57/structedash__packager_1_1media_1_1MuxerOptions.html +++ b/docs/de/d57/structedash__packager_1_1media_1_1MuxerOptions.html @@ -271,7 +271,7 @@ std::string  diff --git a/docs/de/d59/classedash__packager_1_1media_1_1mp2t_1_1EsParserAdts.html b/docs/de/d59/classedash__packager_1_1media_1_1mp2t_1_1EsParserAdts.html index a981ba2d6a..47760c8053 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 c6d567289f..6e7d22b27c 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 @@ -111,7 +111,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 a390660ffa..bcea0d674a 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 7159cd3d80..b990ef9776 100644 --- a/docs/de/d5c/mpd__flags_8h_source.html +++ b/docs/de/d5c/mpd__flags_8h_source.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d68/structedash__packager_1_1media_1_1mp4_1_1Track-members.html b/docs/de/d68/structedash__packager_1_1media_1_1mp4_1_1Track-members.html index 55b716b554..950d98098c 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 @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d6e/language__utils_8h_source.html b/docs/de/d6e/language__utils_8h_source.html index 743dde7103..4df8ae88df 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 4e2b0e771b..1c07f52609 100644 --- a/docs/de/d70/http__key__fetcher_8cc_source.html +++ b/docs/de/d70/http__key__fetcher_8cc_source.html @@ -236,7 +236,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 e3db434f61..7bfac46184 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 4c2d00b2d9..0f0d198734 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 b64580354e..a29a59fb58 100644 --- a/docs/de/d7b/mp4__media__parser_8h_source.html +++ b/docs/de/d7b/mp4__media__parser_8h_source.html @@ -203,21 +203,21 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
123 #endif // MEDIA_FORMATS_MP4_MP4_MEDIA_PARSER_H_
-
bool Parse(const uint8_t *buf, int size) override
+
bool Parse(const uint8_t *buf, int size) override
- -
bool LoadMoov(const std::string &file_path)
+ +
bool LoadMoov(const std::string &file_path)
base::Callback< bool(uint32_t track_id, const scoped_refptr< MediaSample > &media_sample)> NewSampleCB
Definition: media_parser.h:43
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:29
base::Callback< void(const std::vector< scoped_refptr< StreamInfo > > &stream_info)> InitCB
Definition: media_parser.h:34
-
void Init(const InitCB &init_cb, const NewSampleCB &new_sample_cb, KeySource *decryption_key_source) override
+
void Init(const InitCB &init_cb, const NewSampleCB &new_sample_cb, KeySource *decryption_key_source) override
Class for reading MP4 boxes.
Definition: box_reader.h:24
diff --git a/docs/de/d83/box__definitions__comparison_8h_source.html b/docs/de/d83/box__definitions__comparison_8h_source.html index c52a96b5f9..acb302e2a2 100644 --- a/docs/de/d83/box__definitions__comparison_8h_source.html +++ b/docs/de/d83/box__definitions__comparison_8h_source.html @@ -457,7 +457,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d87/structedash__packager_1_1media_1_1mp4_1_1ChunkInfo-members.html b/docs/de/d87/structedash__packager_1_1media_1_1mp4_1_1ChunkInfo-members.html index 0e63390811..f2a16df98c 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 0bfeb4ef8b..ea603346dd 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 9d2f600464..61e275b938 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 9768a1aa05..ba5ac2d573 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 236a02d781..36b64740c2 100644 --- a/docs/de/d98/classedash__packager_1_1media_1_1WebMAudioClient.html +++ b/docs/de/d98/classedash__packager_1_1media_1_1WebMAudioClient.html @@ -199,7 +199,7 @@ An empty scoped_refptr if there was unexpected values in the provided parameters diff --git a/docs/de/d9d/classedash__packager_1_1media_1_1TracksBuilder-members.html b/docs/de/d9d/classedash__packager_1_1media_1_1TracksBuilder-members.html index 64e62153cd..9930f20cbe 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 1ef1311da8..acc6dc1e3e 100644 --- a/docs/de/d9e/classedash__packager_1_1media_1_1TextTrack.html +++ b/docs/de/d9e/classedash__packager_1_1media_1_1TextTrack.html @@ -109,7 +109,7 @@ virtual void addWebVTTCue< diff --git a/docs/de/da0/classedash__packager_1_1media_1_1AesCbcCtsDecryptor-members.html b/docs/de/da0/classedash__packager_1_1media_1_1AesCbcCtsDecryptor-members.html index 2047b4d231..ed43ad46b8 100644 --- a/docs/de/da0/classedash__packager_1_1media_1_1AesCbcCtsDecryptor-members.html +++ b/docs/de/da0/classedash__packager_1_1media_1_1AesCbcCtsDecryptor-members.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/da5/classedash__packager_1_1media_1_1WebMParserClient.html b/docs/de/da5/classedash__packager_1_1media_1_1WebMParserClient.html index 483b02b264..b083bc716a 100644 --- a/docs/de/da5/classedash__packager_1_1media_1_1WebMParserClient.html +++ b/docs/de/da5/classedash__packager_1_1media_1_1WebMParserClient.html @@ -150,7 +150,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 c3d195de5b..8f03dcf977 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 76499059db..97d043a1d3 100644 --- a/docs/de/da7/classedash__packager_1_1media_1_1AudioTimestampHelper-members.html +++ b/docs/de/da7/classedash__packager_1_1media_1_1AudioTimestampHelper-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/dab/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentRun-members.html b/docs/de/dab/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentRun-members.html index 487edc14a8..10081e88bb 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 @@ -123,7 +123,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 38b3c2cae9..827f604b04 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 ea98a4169c..53d1bf7aef 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 @@ -166,7 +166,7 @@ void set_decoder_specific_ 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 ede25e924f..79e72cad44 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 @@ -107,7 +107,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 da4c334f48..738969cfb7 100644 --- a/docs/de/dc1/demuxer_8h_source.html +++ b/docs/de/dc1/demuxer_8h_source.html @@ -157,21 +157,21 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
93 } // namespace edash_packager
94 
95 #endif // MEDIA_BASE_DEMUXER_H_
- +
MediaContainerName container_name()
Definition: demuxer.h:70
-
void SetKeySource(scoped_ptr< KeySource > key_source)
Definition: demuxer.cc:46
- +
void SetKeySource(scoped_ptr< KeySource > key_source)
Definition: demuxer.cc:47
+
Define an abstract file interface.
Definition: file.h:22
const std::vector< MediaStream * > & streams()
Definition: demuxer.h:66
- + -
Status Parse()
Read from the source and send it to the parser.
Definition: demuxer.cc:166
-
Demuxer(const std::string &file_name)
Definition: demuxer.cc:31
+
Status Parse()
Read from the source and send it to the parser.
Definition: demuxer.cc:170
+
Demuxer(const std::string &file_name)
Definition: demuxer.cc:32
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 65a680ee3d..4709125929 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 @@ -169,7 +169,7 @@ Additional Inherited Members

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

-

Definition at line 161 of file box_definitions.cc.

+

Definition at line 163 of file box_definitions.cc.

@@ -180,7 +180,7 @@ Additional Inherited Members diff --git a/docs/de/dcc/mock__mpd__notifier_8cc_source.html b/docs/de/dcc/mock__mpd__notifier_8cc_source.html index f95e4f1ec0..d5949fa62f 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 802f9cb788..e1624b4f6d 100644 --- a/docs/de/dcf/file__closer_8h_source.html +++ b/docs/de/dcf/file__closer_8h_source.html @@ -122,7 +122,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 1011e524a7..115a71ce07 100644 --- a/docs/de/dd4/classedash__packager_1_1media_1_1mp4_1_1MP4Muxer-members.html +++ b/docs/de/dd4/classedash__packager_1_1media_1_1mp4_1_1MP4Muxer-members.html @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/dd6/content__protection__element_8h_source.html b/docs/de/dd6/content__protection__element_8h_source.html index 183c3dd89a..d1d92f9037 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 3e2eb8784e..39f426b402 100644 --- a/docs/de/dd6/muxer__listener__test__helper_8cc_source.html +++ b/docs/de/dd6/muxer__listener__test__helper_8cc_source.html @@ -206,7 +206,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/de7/structedash__packager_1_1media_1_1mp4_1_1Media.html b/docs/de/de7/structedash__packager_1_1media_1_1mp4_1_1Media.html index 1c4d8e1422..bde4f8ee4f 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 @@ -167,7 +167,7 @@ Additional Inherited Members

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

-

Definition at line 1296 of file box_definitions.cc.

+

Definition at line 1324 of file box_definitions.cc.

@@ -178,7 +178,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 712fd611d4..862181fa38 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 579e5d3c54..385e5f9d8b 100644 --- a/docs/de/dfa/muxer__listener_8h_source.html +++ b/docs/de/dfa/muxer__listener_8h_source.html @@ -204,7 +204,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/dfb/structedash__packager_1_1media_1_1H264ModificationOfPicNum-members.html b/docs/de/dfb/structedash__packager_1_1media_1_1H264ModificationOfPicNum-members.html index 6ce00480c0..5fb569f531 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 dd8c881545..8d31daf3c5 100644 --- a/docs/de/dfc/classedash__packager_1_1media_1_1mp2t_1_1EsParserH264-members.html +++ b/docs/de/dfc/classedash__packager_1_1media_1_1mp2t_1_1EsParserH264-members.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/dfd/stream__info_8cc_source.html b/docs/de/dfd/stream__info_8cc_source.html index 48899ea7cb..fbc7b3e305 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 new file mode 100644 index 0000000000..e0e45ee5e7 --- /dev/null +++ b/docs/df/d0c/classedash__packager_1_1media_1_1VPCodecConfiguration-members.html @@ -0,0 +1,117 @@ + + + + + + +DASH Media Packaging SDK: Member List + + + + + + + + + +
+
+ + + + + + +
+
DASH Media Packaging SDK +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
edash_packager::media::VPCodecConfiguration Member List
+
+
+ +

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

+ + + + + + + + + + + + + + +
bit_depth() const (defined in edash_packager::media::VPCodecConfiguration)edash_packager::media::VPCodecConfigurationinline
chroma_subsampling() const (defined in edash_packager::media::VPCodecConfiguration)edash_packager::media::VPCodecConfigurationinline
color_space() const (defined in edash_packager::media::VPCodecConfiguration)edash_packager::media::VPCodecConfigurationinline
GetCodecString(VideoCodec codec) const edash_packager::media::VPCodecConfiguration
level() const (defined in edash_packager::media::VPCodecConfiguration)edash_packager::media::VPCodecConfigurationinline
Parse(const std::vector< uint8_t > &data)edash_packager::media::VPCodecConfiguration
profile() const (defined in edash_packager::media::VPCodecConfiguration)edash_packager::media::VPCodecConfigurationinline
transfer_function() const (defined in edash_packager::media::VPCodecConfiguration)edash_packager::media::VPCodecConfigurationinline
video_full_range_flag() const (defined in edash_packager::media::VPCodecConfiguration)edash_packager::media::VPCodecConfigurationinline
VPCodecConfiguration() (defined in edash_packager::media::VPCodecConfiguration)edash_packager::media::VPCodecConfiguration
VPCodecConfiguration(uint8_t profile, uint8_t level, uint8_t bit_depth, uint8_t color_space, uint8_t chroma_subsampling, uint8_t transfer_function, bool video_full_range_flag, const std::vector< uint8_t > &codec_initialization_data) (defined in edash_packager::media::VPCodecConfiguration)edash_packager::media::VPCodecConfiguration
Write(std::vector< uint8_t > *data) const edash_packager::media::VPCodecConfiguration
~VPCodecConfiguration() (defined in edash_packager::media::VPCodecConfiguration)edash_packager::media::VPCodecConfiguration
+ + + + diff --git a/docs/df/d1a/offset__byte__queue_8cc_source.html b/docs/df/d1a/offset__byte__queue_8cc_source.html index 4e30473530..14c47b06d7 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 daea98795f..e9ac16c31b 100644 --- a/docs/df/d1c/composition__offset__iterator_8h_source.html +++ b/docs/df/d1c/composition__offset__iterator_8h_source.html @@ -147,7 +147,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); 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 51138d1273..3e6832bbd4 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 f19a87dfdd..89e973ab8b 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 @@ -199,7 +199,7 @@ Additional Inherited Members

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

-

Definition at line 1629 of file box_definitions.cc.

+

Definition at line 1657 of file box_definitions.cc.

@@ -210,7 +210,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 74e40c7f83..d07ec36e90 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/d30/classedash__packager_1_1media_1_1ContentEncoding.html b/docs/df/d30/classedash__packager_1_1media_1_1ContentEncoding.html index 5314825dd5..b0031296f3 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 958dce53b1..1fc7c16b55 100644 --- a/docs/df/d31/muxer__util_8cc_source.html +++ b/docs/df/d31/muxer__util_8cc_source.html @@ -247,7 +247,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d32/audio__stream__info_8h_source.html b/docs/df/d32/audio__stream__info_8h_source.html index b2cf8a1195..2926859809 100644 --- a/docs/df/d32/audio__stream__info_8h_source.html +++ b/docs/df/d32/audio__stream__info_8h_source.html @@ -183,7 +183,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d3c/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentDecodeTime-members.html b/docs/df/d3c/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentDecodeTime-members.html index 96845a8c28..db62e2988c 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 @@ -111,7 +111,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 350ab4c940..ac2bedfabc 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 b2b67914c0..3fde052404 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/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 bfdce30b99..444fae48e7 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 e73c56b59d..c604e11e55 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 1a7d2ee59c..5428594cd0 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 @@ -182,7 +182,7 @@ Additional Inherited Members

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

-

Definition at line 1084 of file box_definitions.cc.

+

Definition at line 1112 of file box_definitions.cc.

@@ -193,7 +193,7 @@ Additional Inherited Members diff --git a/docs/df/d67/opus__packet__builder_8h_source.html b/docs/df/d67/opus__packet__builder_8h_source.html index 6c12f820d5..dfed9acea3 100644 --- a/docs/df/d67/opus__packet__builder_8h_source.html +++ b/docs/df/d67/opus__packet__builder_8h_source.html @@ -136,7 +136,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d6a/structedash__packager_1_1media_1_1mp4_1_1VideoSampleEntry.html b/docs/df/d6a/structedash__packager_1_1media_1_1mp4_1_1VideoSampleEntry.html index 5cce17060c..8f8b1facbb 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 @@ -182,7 +182,7 @@ Additional Inherited Members

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

-

Definition at line 990 of file box_definitions.cc.

+

Definition at line 1018 of file box_definitions.cc.

@@ -193,7 +193,7 @@ Additional Inherited Members 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 aa24e4d171..48ac6e5f99 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 @@ -169,7 +169,7 @@ Additional Inherited Members

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

-

Definition at line 551 of file box_definitions.cc.

+

Definition at line 553 of file box_definitions.cc.

@@ -180,7 +180,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 b67e776521..a715465f3e 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 c861e5abd1..3fd529e681 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 @@ -169,7 +169,7 @@ Additional Inherited Members

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

-

Definition at line 1456 of file box_definitions.cc.

+

Definition at line 1484 of file box_definitions.cc.

@@ -180,7 +180,7 @@ Additional Inherited Members diff --git a/docs/df/d96/xml__node_8cc_source.html b/docs/df/d96/xml__node_8cc_source.html index fd8d3020a7..6ec4472cb5 100644 --- a/docs/df/d96/xml__node_8cc_source.html +++ b/docs/df/d96/xml__node_8cc_source.html @@ -469,7 +469,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 05642c1ecc..f4ed965009 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 @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/dad/decrypt__config_8h_source.html b/docs/df/dad/decrypt__config_8h_source.html index b9d421a91c..105875fc0d 100644 --- a/docs/df/dad/decrypt__config_8h_source.html +++ b/docs/df/dad/decrypt__config_8h_source.html @@ -151,7 +151,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/db4/classedash__packager_1_1media_1_1BitReader.html b/docs/df/db4/classedash__packager_1_1media_1_1BitReader.html index 38e410261b..a436260354 100644 --- a/docs/df/db4/classedash__packager_1_1media_1_1BitReader.html +++ b/docs/df/db4/classedash__packager_1_1media_1_1BitReader.html @@ -251,7 +251,7 @@ template<typename T > 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 a4b1faad07..383b31c8d0 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 @@ -111,7 +111,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 c98687165c..4762e3b415 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 @@ -109,7 +109,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 e2a74ed6e6..1311b46ac7 100644 --- a/docs/df/dd2/classedash__packager_1_1MockMpdBuilder-members.html +++ b/docs/df/dd2/classedash__packager_1_1MockMpdBuilder-members.html @@ -111,7 +111,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 6edf949cb9..8f0636bf45 100644 --- a/docs/df/dd2/mpd__utils_8h_source.html +++ b/docs/df/dd2/mpd__utils_8h_source.html @@ -165,7 +165,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/dde/classedash__packager_1_1media_1_1BufferWriter.html b/docs/df/dde/classedash__packager_1_1media_1_1BufferWriter.html index 7a06d44837..ae1352b354 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 fcc13e219f..b960f93238 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 23cf63edc1..97e3f2a048 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 @@ -123,7 +123,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 388d28aa69..46b4cc94e8 100644 --- a/docs/df/de3/text__track__config_8cc_source.html +++ b/docs/df/de3/text__track__config_8cc_source.html @@ -122,7 +122,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/de7/classedash__packager_1_1media_1_1MuxerListener.html b/docs/df/de7/classedash__packager_1_1media_1_1MuxerListener.html index 012db48a61..195625bbc2 100644 --- a/docs/df/de7/classedash__packager_1_1media_1_1MuxerListener.html +++ b/docs/df/de7/classedash__packager_1_1media_1_1MuxerListener.html @@ -177,7 +177,7 @@ virtual void OnNewSegment< diff --git a/docs/df/de9/segment__info_8h_source.html b/docs/df/de9/segment__info_8h_source.html index ecb613c855..7923932a7d 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 995a608b9e..583e1e7513 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/dfa/classedash__packager_1_1media_1_1RsaPublicKey-members.html b/docs/df/dfa/classedash__packager_1_1media_1_1RsaPublicKey-members.html index b605eaece8..c1ee281c4d 100644 --- a/docs/df/dfa/classedash__packager_1_1media_1_1RsaPublicKey-members.html +++ b/docs/df/dfa/classedash__packager_1_1media_1_1RsaPublicKey-members.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dir_2618cd273dea54f184e42d7a562af818.html b/docs/dir_2618cd273dea54f184e42d7a562af818.html index ed9f85ead1..f32b305f79 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 f9c127acb0..be2796e6da 100644 --- a/docs/dir_279fd47bebb21302c25cfb685e84c359.html +++ b/docs/dir_279fd47bebb21302c25cfb685e84c359.html @@ -113,7 +113,7 @@ Files diff --git a/docs/dir_39dc0668bd5a501998f94e8b4e546c71.html b/docs/dir_39dc0668bd5a501998f94e8b4e546c71.html index fd0c341e81..70cb61c2cd 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 08c4fa86fc..3b7552da11 100644 --- a/docs/dir_3e9291fd7a18fdecc763294cb2628910.html +++ b/docs/dir_3e9291fd7a18fdecc763294cb2628910.html @@ -173,7 +173,7 @@ Files diff --git a/docs/dir_49627ef5ef0630f6cf11dd06344c4cf0.html b/docs/dir_49627ef5ef0630f6cf11dd06344c4cf0.html index 0c9d67e7f0..76c013401d 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 5e03d83bc9..88830e554d 100644 --- a/docs/dir_5039d854a18988ed1f1dbebc120ffbf7.html +++ b/docs/dir_5039d854a18988ed1f1dbebc120ffbf7.html @@ -149,7 +149,7 @@ Files diff --git a/docs/dir_5eb2e460866db0ed29e32d64402e5c22.html b/docs/dir_5eb2e460866db0ed29e32d64402e5c22.html index 866036e8a6..65a7de3238 100644 --- a/docs/dir_5eb2e460866db0ed29e32d64402e5c22.html +++ b/docs/dir_5eb2e460866db0ed29e32d64402e5c22.html @@ -101,13 +101,17 @@ Files   file  h264_parser.h [code]   +file  vp_codec_configuration.cc [code] +  +file  vp_codec_configuration.h [code] +  file  webvtt_util.h [code]   diff --git a/docs/dir_65f7acfa8cf3a5f1edc11faa2428b914.html b/docs/dir_65f7acfa8cf3a5f1edc11faa2428b914.html index 26de35d9f6..65ff049be9 100644 --- a/docs/dir_65f7acfa8cf3a5f1edc11faa2428b914.html +++ b/docs/dir_65f7acfa8cf3a5f1edc11faa2428b914.html @@ -99,7 +99,7 @@ Directories diff --git a/docs/dir_679a6f4e9fa092b388fc986148018f2a.html b/docs/dir_679a6f4e9fa092b388fc986148018f2a.html index 6e3a5d55ba..8e5e872073 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 00491ffce0..3fbd117572 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 3a97002e4b..f29e06d267 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 1a99da4fc1..c3e560fc5a 100644 --- a/docs/dir_aa73376d632f252584a1c0dfbefab2c4.html +++ b/docs/dir_aa73376d632f252584a1c0dfbefab2c4.html @@ -109,7 +109,7 @@ Files diff --git a/docs/dir_c6ada2450b25ab5438a4dba6c9b890af.html b/docs/dir_c6ada2450b25ab5438a4dba6c9b890af.html index 216f4f9792..b53c28b62e 100644 --- a/docs/dir_c6ada2450b25ab5438a4dba6c9b890af.html +++ b/docs/dir_c6ada2450b25ab5438a4dba6c9b890af.html @@ -213,7 +213,7 @@ Files diff --git a/docs/dir_d422163b96683743ed3963d4aac17747.html b/docs/dir_d422163b96683743ed3963d4aac17747.html index ba152911b9..116e730bb7 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 aa4151e07d..d33c7c3de4 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 7c304aa0f7..e5b3fe75f2 100644 --- a/docs/dir_f7dcbe7025bbacfc4b9a7dff6ad41d72.html +++ b/docs/dir_f7dcbe7025bbacfc4b9a7dff6ad41d72.html @@ -131,7 +131,7 @@ Files diff --git a/docs/files.html b/docs/files.html index bcad85186e..f6b4a20d32 100644 --- a/docs/files.html +++ b/docs/files.html @@ -204,7 +204,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); ||o*h264_byte_to_unit_stream_converter.h ||o*h264_parser.cc ||o*h264_parser.h -||\*webvtt_util.h +||o*vp_codec_configuration.cc +||o*vp_codec_configuration.h +||\*webvtt_util.h |\+formats | o+mp2t | |o*adts_header.cc @@ -345,7 +347,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions.html b/docs/functions.html index 27f6d5f03c..e0ba30b17a 100644 --- a/docs/functions.html +++ b/docs/functions.html @@ -213,7 +213,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_b.html b/docs/functions_b.html index 1b5c2a360d..bdab4b4052 100644 --- a/docs/functions_b.html +++ b/docs/functions_b.html @@ -155,7 +155,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_c.html b/docs/functions_c.html index 1bfc5b63fe..88bd27b250 100644 --- a/docs/functions_c.html +++ b/docs/functions_c.html @@ -254,7 +254,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_d.html b/docs/functions_d.html index 730494c61a..14f0517b72 100644 --- a/docs/functions_d.html +++ b/docs/functions_d.html @@ -149,7 +149,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_e.html b/docs/functions_e.html index bf73a110a7..baa060334f 100644 --- a/docs/functions_e.html +++ b/docs/functions_e.html @@ -136,7 +136,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_eval.html b/docs/functions_eval.html index 3847156104..1d0c26a3f2 100644 --- a/docs/functions_eval.html +++ b/docs/functions_eval.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_f.html b/docs/functions_f.html index 9b9a18aea4..2bd011c26b 100644 --- a/docs/functions_f.html +++ b/docs/functions_f.html @@ -174,7 +174,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func.html b/docs/functions_func.html index 3335fef452..2020e90e16 100644 --- a/docs/functions_func.html +++ b/docs/functions_func.html @@ -210,7 +210,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_b.html b/docs/functions_func_b.html index 9f650c5ffc..29144ecc63 100644 --- a/docs/functions_func_b.html +++ b/docs/functions_func_b.html @@ -152,7 +152,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_c.html b/docs/functions_func_c.html index 16cc5b4dbe..933945c042 100644 --- a/docs/functions_func_c.html +++ b/docs/functions_func_c.html @@ -254,7 +254,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_d.html b/docs/functions_func_d.html index 98138d8e16..9ca5738ff7 100644 --- a/docs/functions_func_d.html +++ b/docs/functions_func_d.html @@ -149,7 +149,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_e.html b/docs/functions_func_e.html index de69834c47..4dfe2bca58 100644 --- a/docs/functions_func_e.html +++ b/docs/functions_func_e.html @@ -136,7 +136,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_f.html b/docs/functions_func_f.html index 30b70c4cbf..7ee391e265 100644 --- a/docs/functions_func_f.html +++ b/docs/functions_func_f.html @@ -168,7 +168,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_g.html b/docs/functions_func_g.html index 8aa8226e9a..8a4cf74383 100644 --- a/docs/functions_func_g.html +++ b/docs/functions_func_g.html @@ -154,6 +154,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • GetCodecString() : edash_packager::media::AudioStreamInfo , edash_packager::media::AVCDecoderConfiguration +, edash_packager::media::VPCodecConfiguration
  • GetCryptoPeriodKey() : edash_packager::media::KeySource @@ -180,7 +181,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • GetKey() : edash_packager::media::KeySource -, edash_packager::media::WidevineKeySource +, edash_packager::media::WidevineKeySource
  • GetMaxClearOffset() : edash_packager::media::mp4::TrackRunIterator @@ -218,7 +219,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_h.html b/docs/functions_func_h.html index a04047230a..7da1adc97c 100644 --- a/docs/functions_func_h.html +++ b/docs/functions_func_h.html @@ -137,7 +137,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_i.html b/docs/functions_func_i.html index a077987d4e..b617cdf31c 100644 --- a/docs/functions_func_i.html +++ b/docs/functions_func_i.html @@ -189,7 +189,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_k.html b/docs/functions_func_k.html index 3b263b3b9a..865a6b86e4 100644 --- a/docs/functions_func_k.html +++ b/docs/functions_func_k.html @@ -128,7 +128,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_l.html b/docs/functions_func_l.html index 059822b215..a0381f5f46 100644 --- a/docs/functions_func_l.html +++ b/docs/functions_func_l.html @@ -134,7 +134,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_m.html b/docs/functions_func_m.html index 34bcc86e66..68986c0e49 100644 --- a/docs/functions_func_m.html +++ b/docs/functions_func_m.html @@ -143,7 +143,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_n.html b/docs/functions_func_n.html index ba03913604..2b31a2f8f0 100644 --- a/docs/functions_func_n.html +++ b/docs/functions_func_n.html @@ -153,7 +153,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_o.html b/docs/functions_func_o.html index 37a224096f..72230f6622 100644 --- a/docs/functions_func_o.html +++ b/docs/functions_func_o.html @@ -159,7 +159,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_p.html b/docs/functions_func_p.html index 3ea0ab2e1d..1e7bb56d2d 100644 --- a/docs/functions_func_p.html +++ b/docs/functions_func_p.html @@ -130,6 +130,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , edash_packager::media::mp4::AACAudioSpecificConfig , edash_packager::media::mp4::Box , edash_packager::media::mp4::MP4MediaParser +, edash_packager::media::VPCodecConfiguration , edash_packager::media::WebMClusterParser , edash_packager::media::WebMInfoParser , edash_packager::media::WebMListParser @@ -191,7 +192,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_r.html b/docs/functions_func_r.html index 20dd84d998..3750373aa6 100644 --- a/docs/functions_func_r.html +++ b/docs/functions_func_r.html @@ -245,7 +245,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_s.html b/docs/functions_func_s.html index 26ae277df5..11e21b3545 100644 --- a/docs/functions_func_s.html +++ b/docs/functions_func_s.html @@ -247,7 +247,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_t.html b/docs/functions_func_t.html index dc753e3595..0041f7be49 100644 --- a/docs/functions_func_t.html +++ b/docs/functions_func_t.html @@ -167,7 +167,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_u.html b/docs/functions_func_u.html index 6b360e9cc3..a9d0265177 100644 --- a/docs/functions_func_u.html +++ b/docs/functions_func_u.html @@ -145,7 +145,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_v.html b/docs/functions_func_v.html index 14aa4734ad..d7b8f6b36a 100644 --- a/docs/functions_func_v.html +++ b/docs/functions_func_v.html @@ -134,7 +134,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_w.html b/docs/functions_func_w.html index eac7e0a006..13ac52b008 100644 --- a/docs/functions_func_w.html +++ b/docs/functions_func_w.html @@ -137,6 +137,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , edash_packager::media::mp4::Box , edash_packager::media::ThreadedIoFile , edash_packager::media::UdpFile +, edash_packager::media::VPCodecConfiguration
  • WriteMpdToFile() : edash_packager::MpdBuilder @@ -151,7 +152,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_x.html b/docs/functions_func_x.html index d0b49fdacc..c19dc6b32c 100644 --- a/docs/functions_func_x.html +++ b/docs/functions_func_x.html @@ -128,7 +128,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_~.html b/docs/functions_func_~.html index 6519cdf3b0..2cd66ad115 100644 --- a/docs/functions_func_~.html +++ b/docs/functions_func_~.html @@ -131,7 +131,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_g.html b/docs/functions_g.html index 33f9f506a8..a309be2bd1 100644 --- a/docs/functions_g.html +++ b/docs/functions_g.html @@ -154,6 +154,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • GetCodecString() : edash_packager::media::AudioStreamInfo , edash_packager::media::AVCDecoderConfiguration +, edash_packager::media::VPCodecConfiguration
  • GetCryptoPeriodKey() : edash_packager::media::KeySource @@ -180,7 +181,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • GetKey() : edash_packager::media::KeySource -, edash_packager::media::WidevineKeySource +, edash_packager::media::WidevineKeySource
  • GetMaxClearOffset() : edash_packager::media::mp4::TrackRunIterator @@ -218,7 +219,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_h.html b/docs/functions_h.html index 74ad8498d4..7107b81cf6 100644 --- a/docs/functions_h.html +++ b/docs/functions_h.html @@ -137,7 +137,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_i.html b/docs/functions_i.html index 8348f2a9e0..d1910d347e 100644 --- a/docs/functions_i.html +++ b/docs/functions_i.html @@ -192,7 +192,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_k.html b/docs/functions_k.html index 0c16a7b05c..63ddbadf91 100644 --- a/docs/functions_k.html +++ b/docs/functions_k.html @@ -146,7 +146,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_l.html b/docs/functions_l.html index bd73e43b33..5d97cd9b98 100644 --- a/docs/functions_l.html +++ b/docs/functions_l.html @@ -134,7 +134,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_m.html b/docs/functions_m.html index 075336336b..fff86a8f06 100644 --- a/docs/functions_m.html +++ b/docs/functions_m.html @@ -143,7 +143,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_n.html b/docs/functions_n.html index 1f2a774d26..2856bd836c 100644 --- a/docs/functions_n.html +++ b/docs/functions_n.html @@ -159,7 +159,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_o.html b/docs/functions_o.html index 7ccd1414c6..13e47e3769 100644 --- a/docs/functions_o.html +++ b/docs/functions_o.html @@ -162,7 +162,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_p.html b/docs/functions_p.html index 0959bf5d29..2394219db8 100644 --- a/docs/functions_p.html +++ b/docs/functions_p.html @@ -130,6 +130,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , edash_packager::media::mp4::AACAudioSpecificConfig , edash_packager::media::mp4::Box , edash_packager::media::mp4::MP4MediaParser +, edash_packager::media::VPCodecConfiguration , edash_packager::media::WebMClusterParser , edash_packager::media::WebMInfoParser , edash_packager::media::WebMListParser @@ -191,7 +192,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_r.html b/docs/functions_r.html index 70b982e829..470b96a910 100644 --- a/docs/functions_r.html +++ b/docs/functions_r.html @@ -245,7 +245,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_s.html b/docs/functions_s.html index 4492cb0931..60a92f43d8 100644 --- a/docs/functions_s.html +++ b/docs/functions_s.html @@ -259,7 +259,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_t.html b/docs/functions_t.html index 7074fe2779..8d52a5745e 100644 --- a/docs/functions_t.html +++ b/docs/functions_t.html @@ -170,7 +170,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_type.html b/docs/functions_type.html index a615ebf2a1..7fc38ea2df 100644 --- a/docs/functions_type.html +++ b/docs/functions_type.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_u.html b/docs/functions_u.html index 7acd8f2776..6d5679fcd4 100644 --- a/docs/functions_u.html +++ b/docs/functions_u.html @@ -145,7 +145,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_v.html b/docs/functions_v.html index d9d10b4ba8..15e1170a1b 100644 --- a/docs/functions_v.html +++ b/docs/functions_v.html @@ -134,7 +134,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_vars.html b/docs/functions_vars.html index 7639e20198..694acdc17e 100644 --- a/docs/functions_vars.html +++ b/docs/functions_vars.html @@ -141,7 +141,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_w.html b/docs/functions_w.html index 1b417a72f1..616a43e25c 100644 --- a/docs/functions_w.html +++ b/docs/functions_w.html @@ -137,6 +137,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , edash_packager::media::mp4::Box , edash_packager::media::ThreadedIoFile , edash_packager::media::UdpFile +, edash_packager::media::VPCodecConfiguration
  • WriteMpdToFile() : edash_packager::MpdBuilder @@ -151,7 +152,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_x.html b/docs/functions_x.html index 79300144ad..19a7ae7834 100644 --- a/docs/functions_x.html +++ b/docs/functions_x.html @@ -128,7 +128,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_~.html b/docs/functions_~.html index 4d988505c6..77f18d667f 100644 --- a/docs/functions_~.html +++ b/docs/functions_~.html @@ -131,7 +131,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/hierarchy.html b/docs/hierarchy.html index 49861f9c60..2c23c1b024 100644 --- a/docs/hierarchy.html +++ b/docs/hierarchy.html @@ -276,26 +276,27 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); | oCedash_packager::media::mp2t::TsSectionPat | \Cedash_packager::media::mp2t::TsSectionPmt oCedash_packager::media::VideoStreamInfoParameters -oCedash_packager::media::WebMListParser -oCedash_packager::media::WebMParserClient -|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::VPCodecConfigurationClass for parsing or writing VP codec configuration data +oCedash_packager::media::WebMListParser +oCedash_packager::media::WebMParserClient +|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 790dc3e99e..cd74c715ea 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 d66f2e3af7..4373e401b0 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 8a5482eb01..dac6b08169 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 0baeb3c70e..85d366afc3 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_13.js b/docs/search/all_13.js index 2fc164779c..e2943ef8dd 100644 --- a/docs/search/all_13.js +++ b/docs/search/all_13.js @@ -10,5 +10,6 @@ var searchData= ['videostreaminfo',['VideoStreamInfo',['../d7/d3a/classedash__packager_1_1media_1_1VideoStreamInfo.html#a75ccfbc06b8458390e1672968eb9bd96',1,'edash_packager::media::VideoStreamInfo']]], ['videostreaminfo',['VideoStreamInfo',['../d7/d3a/classedash__packager_1_1media_1_1VideoStreamInfo.html',1,'edash_packager::media']]], ['videostreaminfoparameters',['VideoStreamInfoParameters',['../d2/dd9/structedash__packager_1_1media_1_1VideoStreamInfoParameters.html',1,'edash_packager::media']]], - ['vodmediainfodumpmuxerlistener',['VodMediaInfoDumpMuxerListener',['../d9/db4/classedash__packager_1_1media_1_1VodMediaInfoDumpMuxerListener.html',1,'edash_packager::media']]] + ['vodmediainfodumpmuxerlistener',['VodMediaInfoDumpMuxerListener',['../d9/db4/classedash__packager_1_1media_1_1VodMediaInfoDumpMuxerListener.html',1,'edash_packager::media']]], + ['vpcodecconfiguration',['VPCodecConfiguration',['../d7/d85/classedash__packager_1_1media_1_1VPCodecConfiguration.html',1,'edash_packager::media']]] ]; diff --git a/docs/search/all_14.js b/docs/search/all_14.js index a1c83c9958..9009634292 100644 --- a/docs/search/all_14.js +++ b/docs/search/all_14.js @@ -14,7 +14,7 @@ var searchData= ['webmwebvttparser',['WebMWebVTTParser',['../dc/dc8/classedash__packager_1_1media_1_1WebMWebVTTParser.html',1,'edash_packager::media']]], ['widevinekeysource',['WidevineKeySource',['../db/da4/classedash__packager_1_1media_1_1WidevineKeySource.html#a78ebb07ba8a23086ec81839b16472857',1,'edash_packager::media::WidevineKeySource']]], ['widevinekeysource',['WidevineKeySource',['../db/da4/classedash__packager_1_1media_1_1WidevineKeySource.html',1,'edash_packager::media']]], - ['write',['Write',['../de/d19/classedash__packager_1_1media_1_1File.html#ad82196743ff131dd81e8f806735eb818',1,'edash_packager::media::File::Write()'],['../d3/d6b/classedash__packager_1_1media_1_1IoCache.html#a4b7ee97ec07a6b2702ae4b58c9df4413',1,'edash_packager::media::IoCache::Write()'],['../dd/d98/classedash__packager_1_1media_1_1LocalFile.html#a3a1ae071948947e9885b8afd4e5eebb4',1,'edash_packager::media::LocalFile::Write()'],['../dc/dfa/classedash__packager_1_1media_1_1ThreadedIoFile.html#a7dc883b5751c9027adabfbb0b9edd876',1,'edash_packager::media::ThreadedIoFile::Write()'],['../d8/dc7/classedash__packager_1_1media_1_1UdpFile.html#adc71ee86f3926b7869e088f1f0bae0a4',1,'edash_packager::media::UdpFile::Write()'],['../d7/d8a/structedash__packager_1_1media_1_1mp4_1_1Box.html#aa7a756828b5514fcd3eaf16d86c413c0',1,'edash_packager::media::mp4::Box::Write()']]], + ['write',['Write',['../de/d19/classedash__packager_1_1media_1_1File.html#ad82196743ff131dd81e8f806735eb818',1,'edash_packager::media::File::Write()'],['../d3/d6b/classedash__packager_1_1media_1_1IoCache.html#a4b7ee97ec07a6b2702ae4b58c9df4413',1,'edash_packager::media::IoCache::Write()'],['../dd/d98/classedash__packager_1_1media_1_1LocalFile.html#a3a1ae071948947e9885b8afd4e5eebb4',1,'edash_packager::media::LocalFile::Write()'],['../dc/dfa/classedash__packager_1_1media_1_1ThreadedIoFile.html#a7dc883b5751c9027adabfbb0b9edd876',1,'edash_packager::media::ThreadedIoFile::Write()'],['../d8/dc7/classedash__packager_1_1media_1_1UdpFile.html#adc71ee86f3926b7869e088f1f0bae0a4',1,'edash_packager::media::UdpFile::Write()'],['../d7/d85/classedash__packager_1_1media_1_1VPCodecConfiguration.html#a295be0ed186f54b41da39522bc0d9699',1,'edash_packager::media::VPCodecConfiguration::Write()'],['../d7/d8a/structedash__packager_1_1media_1_1mp4_1_1Box.html#aa7a756828b5514fcd3eaf16d86c413c0',1,'edash_packager::media::mp4::Box::Write()']]], ['writempdtofile',['WriteMpdToFile',['../d3/dfa/classedash__packager_1_1MpdBuilder.html#a9efa414ddfaf48561f3085daada49ebc',1,'edash_packager::MpdBuilder::WriteMpdToFile()'],['../db/d09/namespaceedash__packager.html#a2ecf0fb529eaf5ab21310d309bb9f9e9',1,'edash_packager::WriteMpdToFile()']]], ['writer',['writer',['../dd/d4f/classedash__packager_1_1media_1_1mp4_1_1BoxBuffer.html#ac1c1d4d768f8f656f6ac2b5f4873b0a1',1,'edash_packager::media::mp4::BoxBuffer']]], ['writetofile',['WriteToFile',['../df/dde/classedash__packager_1_1media_1_1BufferWriter.html#aa83fe945386e5a75d3c377904fdddce2',1,'edash_packager::media::BufferWriter']]], diff --git a/docs/search/all_6.js b/docs/search/all_6.js index 5eae7f5f2e..dde6f28dc6 100644 --- a/docs/search/all_6.js +++ b/docs/search/all_6.js @@ -9,7 +9,7 @@ var searchData= ['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']]], ['getavcdecoderconfigurationrecord',['GetAVCDecoderConfigurationRecord',['../d5/d30/classedash__packager_1_1media_1_1H264ByteToUnitStreamConverter.html#a0f4d8f75700dc0674eb6eb9c7d6dd393',1,'edash_packager::media::H264ByteToUnitStreamConverter']]], - ['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)']]], + ['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)'],['../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',['../d9/d8b/classedash__packager_1_1media_1_1KeySource.html#a349381b866a37df15a931980636621ac',1,'edash_packager::media::KeySource::GetCryptoPeriodKey()'],['../db/da4/classedash__packager_1_1media_1_1WidevineKeySource.html#a35023c0b18a2db012027d4cf22c7bf1b',1,'edash_packager::media::WidevineKeySource::GetCryptoPeriodKey()']]], ['getdecryptconfig',['GetDecryptConfig',['../db/d26/classedash__packager_1_1media_1_1mp4_1_1TrackRunIterator.html#ae62fc9fe719f4432d4043ea2f43963c6',1,'edash_packager::media::mp4::TrackRunIterator']]], diff --git a/docs/search/all_e.js b/docs/search/all_e.js index dee8409599..b71a34ba6f 100644 --- a/docs/search/all_e.js +++ b/docs/search/all_e.js @@ -1,6 +1,6 @@ var searchData= [ - ['parse',['Parse',['../d5/dce/classedash__packager_1_1media_1_1Demuxer.html#adb6c35974c24809c715380a99ac7cc78',1,'edash_packager::media::Demuxer::Parse()'],['../dc/d48/classedash__packager_1_1media_1_1MediaParser.html#a6bc31ca2303d340a11a63a6f4bbb8b0a',1,'edash_packager::media::MediaParser::Parse()'],['../d6/d49/classedash__packager_1_1media_1_1AVCDecoderConfiguration.html#a8ac1cb50516b99f6ecafbdcb2705b1cc',1,'edash_packager::media::AVCDecoderConfiguration::Parse()'],['../db/d69/classedash__packager_1_1media_1_1mp2t_1_1AdtsHeader.html#a12f7811f1539361980a13517f948f9fb',1,'edash_packager::media::mp2t::AdtsHeader::Parse()'],['../dc/dab/classedash__packager_1_1media_1_1mp2t_1_1Mp2tMediaParser.html#a8e01eb8219dfd9a649ee5a153f9bbabb',1,'edash_packager::media::mp2t::Mp2tMediaParser::Parse()'],['../dc/dc6/classedash__packager_1_1media_1_1mp4_1_1AACAudioSpecificConfig.html#a90a58afc9e6b20b9a6909d54f94dafc9',1,'edash_packager::media::mp4::AACAudioSpecificConfig::Parse()'],['../d7/d8a/structedash__packager_1_1media_1_1mp4_1_1Box.html#a7b62a3983faafbea54a32486df60ed96',1,'edash_packager::media::mp4::Box::Parse()'],['../d8/d0d/classedash__packager_1_1media_1_1mp4_1_1MP4MediaParser.html#ade36e7fd4daf8c6a98c16b6a94bafd28',1,'edash_packager::media::mp4::MP4MediaParser::Parse()'],['../db/da0/classedash__packager_1_1media_1_1WebMClusterParser.html#a060661d4a0bfc01543fa025fb4b09a7d',1,'edash_packager::media::WebMClusterParser::Parse()'],['../dd/d47/classedash__packager_1_1media_1_1WebMInfoParser.html#ab2f2dd920214bf7942e374d4c9843243',1,'edash_packager::media::WebMInfoParser::Parse()'],['../dd/d99/classedash__packager_1_1media_1_1WebMMediaParser.html#a5a95d3879a9a96830fdcf4f866879143',1,'edash_packager::media::WebMMediaParser::Parse()'],['../d6/dd6/classedash__packager_1_1media_1_1WebMListParser.html#a5b3b0c8fd0423044d0090357428b8ee0',1,'edash_packager::media::WebMListParser::Parse()'],['../db/d23/classedash__packager_1_1media_1_1WebMTracksParser.html#a8719ba4bc187c32a73f133c0a67a19ab',1,'edash_packager::media::WebMTracksParser::Parse()'],['../dc/dc8/classedash__packager_1_1media_1_1WebMWebVTTParser.html#a979168b11e59b863de2d3ba3fbb60815',1,'edash_packager::media::WebMWebVTTParser::Parse()'],['../d8/da0/classedash__packager_1_1media_1_1wvm_1_1WvmMediaParser.html#af2a6c8b62df30b6515eee30389b271d7',1,'edash_packager::media::wvm::WvmMediaParser::Parse()']]], + ['parse',['Parse',['../d5/dce/classedash__packager_1_1media_1_1Demuxer.html#adb6c35974c24809c715380a99ac7cc78',1,'edash_packager::media::Demuxer::Parse()'],['../dc/d48/classedash__packager_1_1media_1_1MediaParser.html#a6bc31ca2303d340a11a63a6f4bbb8b0a',1,'edash_packager::media::MediaParser::Parse()'],['../d6/d49/classedash__packager_1_1media_1_1AVCDecoderConfiguration.html#a8ac1cb50516b99f6ecafbdcb2705b1cc',1,'edash_packager::media::AVCDecoderConfiguration::Parse()'],['../d7/d85/classedash__packager_1_1media_1_1VPCodecConfiguration.html#a3428d45e1b7c31fc6dd3bef0c8dc46c7',1,'edash_packager::media::VPCodecConfiguration::Parse()'],['../db/d69/classedash__packager_1_1media_1_1mp2t_1_1AdtsHeader.html#a12f7811f1539361980a13517f948f9fb',1,'edash_packager::media::mp2t::AdtsHeader::Parse()'],['../dc/dab/classedash__packager_1_1media_1_1mp2t_1_1Mp2tMediaParser.html#a8e01eb8219dfd9a649ee5a153f9bbabb',1,'edash_packager::media::mp2t::Mp2tMediaParser::Parse()'],['../dc/dc6/classedash__packager_1_1media_1_1mp4_1_1AACAudioSpecificConfig.html#a90a58afc9e6b20b9a6909d54f94dafc9',1,'edash_packager::media::mp4::AACAudioSpecificConfig::Parse()'],['../d7/d8a/structedash__packager_1_1media_1_1mp4_1_1Box.html#a7b62a3983faafbea54a32486df60ed96',1,'edash_packager::media::mp4::Box::Parse()'],['../d8/d0d/classedash__packager_1_1media_1_1mp4_1_1MP4MediaParser.html#ade36e7fd4daf8c6a98c16b6a94bafd28',1,'edash_packager::media::mp4::MP4MediaParser::Parse()'],['../db/da0/classedash__packager_1_1media_1_1WebMClusterParser.html#a060661d4a0bfc01543fa025fb4b09a7d',1,'edash_packager::media::WebMClusterParser::Parse()'],['../dd/d47/classedash__packager_1_1media_1_1WebMInfoParser.html#ab2f2dd920214bf7942e374d4c9843243',1,'edash_packager::media::WebMInfoParser::Parse()'],['../dd/d99/classedash__packager_1_1media_1_1WebMMediaParser.html#a5a95d3879a9a96830fdcf4f866879143',1,'edash_packager::media::WebMMediaParser::Parse()'],['../d6/dd6/classedash__packager_1_1media_1_1WebMListParser.html#a5b3b0c8fd0423044d0090357428b8ee0',1,'edash_packager::media::WebMListParser::Parse()'],['../db/d23/classedash__packager_1_1media_1_1WebMTracksParser.html#a8719ba4bc187c32a73f133c0a67a19ab',1,'edash_packager::media::WebMTracksParser::Parse()'],['../dc/dc8/classedash__packager_1_1media_1_1WebMWebVTTParser.html#a979168b11e59b863de2d3ba3fbb60815',1,'edash_packager::media::WebMWebVTTParser::Parse()'],['../d8/da0/classedash__packager_1_1media_1_1wvm_1_1WvmMediaParser.html#af2a6c8b62df30b6515eee30389b271d7',1,'edash_packager::media::wvm::WvmMediaParser::Parse()']]], ['passscopedptr',['PassScopedPtr',['../dd/d85/classedash__packager_1_1xml_1_1XmlNode.html#a07d40d8fe27a2d1c3470f16ef0df3864',1,'edash_packager::xml::XmlNode']]], ['peek',['Peek',['../d8/d2e/classedash__packager_1_1media_1_1ByteQueue.html#a8253df160751462f3b75290a7c525e56',1,'edash_packager::media::ByteQueue::Peek()'],['../d5/d02/classedash__packager_1_1media_1_1ProducerConsumerQueue.html#acf87e686e78d6cb962f39bb2acca7180',1,'edash_packager::media::ProducerConsumerQueue::Peek()']]], ['peekat',['PeekAt',['../d1/d92/classedash__packager_1_1media_1_1OffsetByteQueue.html#a32b06f514ebfd5aef820a9b91228a854',1,'edash_packager::media::OffsetByteQueue']]], diff --git a/docs/search/classes_11.js b/docs/search/classes_11.js index 80971773cd..b3d6c3b968 100644 --- a/docs/search/classes_11.js +++ b/docs/search/classes_11.js @@ -4,5 +4,6 @@ var searchData= ['videosampleentry',['VideoSampleEntry',['../df/d6a/structedash__packager_1_1media_1_1mp4_1_1VideoSampleEntry.html',1,'edash_packager::media::mp4']]], ['videostreaminfo',['VideoStreamInfo',['../d7/d3a/classedash__packager_1_1media_1_1VideoStreamInfo.html',1,'edash_packager::media']]], ['videostreaminfoparameters',['VideoStreamInfoParameters',['../d2/dd9/structedash__packager_1_1media_1_1VideoStreamInfoParameters.html',1,'edash_packager::media']]], - ['vodmediainfodumpmuxerlistener',['VodMediaInfoDumpMuxerListener',['../d9/db4/classedash__packager_1_1media_1_1VodMediaInfoDumpMuxerListener.html',1,'edash_packager::media']]] + ['vodmediainfodumpmuxerlistener',['VodMediaInfoDumpMuxerListener',['../d9/db4/classedash__packager_1_1media_1_1VodMediaInfoDumpMuxerListener.html',1,'edash_packager::media']]], + ['vpcodecconfiguration',['VPCodecConfiguration',['../d7/d85/classedash__packager_1_1media_1_1VPCodecConfiguration.html',1,'edash_packager::media']]] ]; diff --git a/docs/search/functions_14.js b/docs/search/functions_14.js index 0887efbfac..9a6cc4650f 100644 --- a/docs/search/functions_14.js +++ b/docs/search/functions_14.js @@ -3,7 +3,7 @@ var searchData= ['waituntilemptyorclosed',['WaitUntilEmptyOrClosed',['../d3/d6b/classedash__packager_1_1media_1_1IoCache.html#ace4946f4ecb34f84c4750d276404a3e5',1,'edash_packager::media::IoCache']]], ['webmlistparser',['WebMListParser',['../d6/dd6/classedash__packager_1_1media_1_1WebMListParser.html#ac259917babda572b9c37e92acdd2c00d',1,'edash_packager::media::WebMListParser']]], ['widevinekeysource',['WidevineKeySource',['../db/da4/classedash__packager_1_1media_1_1WidevineKeySource.html#a78ebb07ba8a23086ec81839b16472857',1,'edash_packager::media::WidevineKeySource']]], - ['write',['Write',['../de/d19/classedash__packager_1_1media_1_1File.html#ad82196743ff131dd81e8f806735eb818',1,'edash_packager::media::File::Write()'],['../d3/d6b/classedash__packager_1_1media_1_1IoCache.html#a4b7ee97ec07a6b2702ae4b58c9df4413',1,'edash_packager::media::IoCache::Write()'],['../dd/d98/classedash__packager_1_1media_1_1LocalFile.html#a3a1ae071948947e9885b8afd4e5eebb4',1,'edash_packager::media::LocalFile::Write()'],['../dc/dfa/classedash__packager_1_1media_1_1ThreadedIoFile.html#a7dc883b5751c9027adabfbb0b9edd876',1,'edash_packager::media::ThreadedIoFile::Write()'],['../d8/dc7/classedash__packager_1_1media_1_1UdpFile.html#adc71ee86f3926b7869e088f1f0bae0a4',1,'edash_packager::media::UdpFile::Write()'],['../d7/d8a/structedash__packager_1_1media_1_1mp4_1_1Box.html#aa7a756828b5514fcd3eaf16d86c413c0',1,'edash_packager::media::mp4::Box::Write()']]], + ['write',['Write',['../de/d19/classedash__packager_1_1media_1_1File.html#ad82196743ff131dd81e8f806735eb818',1,'edash_packager::media::File::Write()'],['../d3/d6b/classedash__packager_1_1media_1_1IoCache.html#a4b7ee97ec07a6b2702ae4b58c9df4413',1,'edash_packager::media::IoCache::Write()'],['../dd/d98/classedash__packager_1_1media_1_1LocalFile.html#a3a1ae071948947e9885b8afd4e5eebb4',1,'edash_packager::media::LocalFile::Write()'],['../dc/dfa/classedash__packager_1_1media_1_1ThreadedIoFile.html#a7dc883b5751c9027adabfbb0b9edd876',1,'edash_packager::media::ThreadedIoFile::Write()'],['../d8/dc7/classedash__packager_1_1media_1_1UdpFile.html#adc71ee86f3926b7869e088f1f0bae0a4',1,'edash_packager::media::UdpFile::Write()'],['../d7/d85/classedash__packager_1_1media_1_1VPCodecConfiguration.html#a295be0ed186f54b41da39522bc0d9699',1,'edash_packager::media::VPCodecConfiguration::Write()'],['../d7/d8a/structedash__packager_1_1media_1_1mp4_1_1Box.html#aa7a756828b5514fcd3eaf16d86c413c0',1,'edash_packager::media::mp4::Box::Write()']]], ['writempdtofile',['WriteMpdToFile',['../d3/dfa/classedash__packager_1_1MpdBuilder.html#a9efa414ddfaf48561f3085daada49ebc',1,'edash_packager::MpdBuilder::WriteMpdToFile()'],['../db/d09/namespaceedash__packager.html#a2ecf0fb529eaf5ab21310d309bb9f9e9',1,'edash_packager::WriteMpdToFile()']]], ['writer',['writer',['../dd/d4f/classedash__packager_1_1media_1_1mp4_1_1BoxBuffer.html#ac1c1d4d768f8f656f6ac2b5f4873b0a1',1,'edash_packager::media::mp4::BoxBuffer']]], ['writetofile',['WriteToFile',['../df/dde/classedash__packager_1_1media_1_1BufferWriter.html#aa83fe945386e5a75d3c377904fdddce2',1,'edash_packager::media::BufferWriter']]] diff --git a/docs/search/functions_6.js b/docs/search/functions_6.js index 5eae7f5f2e..dde6f28dc6 100644 --- a/docs/search/functions_6.js +++ b/docs/search/functions_6.js @@ -9,7 +9,7 @@ var searchData= ['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']]], ['getavcdecoderconfigurationrecord',['GetAVCDecoderConfigurationRecord',['../d5/d30/classedash__packager_1_1media_1_1H264ByteToUnitStreamConverter.html#a0f4d8f75700dc0674eb6eb9c7d6dd393',1,'edash_packager::media::H264ByteToUnitStreamConverter']]], - ['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)']]], + ['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)'],['../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',['../d9/d8b/classedash__packager_1_1media_1_1KeySource.html#a349381b866a37df15a931980636621ac',1,'edash_packager::media::KeySource::GetCryptoPeriodKey()'],['../db/da4/classedash__packager_1_1media_1_1WidevineKeySource.html#a35023c0b18a2db012027d4cf22c7bf1b',1,'edash_packager::media::WidevineKeySource::GetCryptoPeriodKey()']]], ['getdecryptconfig',['GetDecryptConfig',['../db/d26/classedash__packager_1_1media_1_1mp4_1_1TrackRunIterator.html#ae62fc9fe719f4432d4043ea2f43963c6',1,'edash_packager::media::mp4::TrackRunIterator']]], diff --git a/docs/search/functions_e.js b/docs/search/functions_e.js index fd213a8ade..9977204847 100644 --- a/docs/search/functions_e.js +++ b/docs/search/functions_e.js @@ -1,6 +1,6 @@ var searchData= [ - ['parse',['Parse',['../d5/dce/classedash__packager_1_1media_1_1Demuxer.html#adb6c35974c24809c715380a99ac7cc78',1,'edash_packager::media::Demuxer::Parse()'],['../dc/d48/classedash__packager_1_1media_1_1MediaParser.html#a6bc31ca2303d340a11a63a6f4bbb8b0a',1,'edash_packager::media::MediaParser::Parse()'],['../d6/d49/classedash__packager_1_1media_1_1AVCDecoderConfiguration.html#a8ac1cb50516b99f6ecafbdcb2705b1cc',1,'edash_packager::media::AVCDecoderConfiguration::Parse()'],['../db/d69/classedash__packager_1_1media_1_1mp2t_1_1AdtsHeader.html#a12f7811f1539361980a13517f948f9fb',1,'edash_packager::media::mp2t::AdtsHeader::Parse()'],['../dc/dab/classedash__packager_1_1media_1_1mp2t_1_1Mp2tMediaParser.html#a8e01eb8219dfd9a649ee5a153f9bbabb',1,'edash_packager::media::mp2t::Mp2tMediaParser::Parse()'],['../dc/dc6/classedash__packager_1_1media_1_1mp4_1_1AACAudioSpecificConfig.html#a90a58afc9e6b20b9a6909d54f94dafc9',1,'edash_packager::media::mp4::AACAudioSpecificConfig::Parse()'],['../d7/d8a/structedash__packager_1_1media_1_1mp4_1_1Box.html#a7b62a3983faafbea54a32486df60ed96',1,'edash_packager::media::mp4::Box::Parse()'],['../d8/d0d/classedash__packager_1_1media_1_1mp4_1_1MP4MediaParser.html#ade36e7fd4daf8c6a98c16b6a94bafd28',1,'edash_packager::media::mp4::MP4MediaParser::Parse()'],['../db/da0/classedash__packager_1_1media_1_1WebMClusterParser.html#a060661d4a0bfc01543fa025fb4b09a7d',1,'edash_packager::media::WebMClusterParser::Parse()'],['../dd/d47/classedash__packager_1_1media_1_1WebMInfoParser.html#ab2f2dd920214bf7942e374d4c9843243',1,'edash_packager::media::WebMInfoParser::Parse()'],['../dd/d99/classedash__packager_1_1media_1_1WebMMediaParser.html#a5a95d3879a9a96830fdcf4f866879143',1,'edash_packager::media::WebMMediaParser::Parse()'],['../d6/dd6/classedash__packager_1_1media_1_1WebMListParser.html#a5b3b0c8fd0423044d0090357428b8ee0',1,'edash_packager::media::WebMListParser::Parse()'],['../db/d23/classedash__packager_1_1media_1_1WebMTracksParser.html#a8719ba4bc187c32a73f133c0a67a19ab',1,'edash_packager::media::WebMTracksParser::Parse()'],['../dc/dc8/classedash__packager_1_1media_1_1WebMWebVTTParser.html#a979168b11e59b863de2d3ba3fbb60815',1,'edash_packager::media::WebMWebVTTParser::Parse()'],['../d8/da0/classedash__packager_1_1media_1_1wvm_1_1WvmMediaParser.html#af2a6c8b62df30b6515eee30389b271d7',1,'edash_packager::media::wvm::WvmMediaParser::Parse()']]], + ['parse',['Parse',['../d5/dce/classedash__packager_1_1media_1_1Demuxer.html#adb6c35974c24809c715380a99ac7cc78',1,'edash_packager::media::Demuxer::Parse()'],['../dc/d48/classedash__packager_1_1media_1_1MediaParser.html#a6bc31ca2303d340a11a63a6f4bbb8b0a',1,'edash_packager::media::MediaParser::Parse()'],['../d6/d49/classedash__packager_1_1media_1_1AVCDecoderConfiguration.html#a8ac1cb50516b99f6ecafbdcb2705b1cc',1,'edash_packager::media::AVCDecoderConfiguration::Parse()'],['../d7/d85/classedash__packager_1_1media_1_1VPCodecConfiguration.html#a3428d45e1b7c31fc6dd3bef0c8dc46c7',1,'edash_packager::media::VPCodecConfiguration::Parse()'],['../db/d69/classedash__packager_1_1media_1_1mp2t_1_1AdtsHeader.html#a12f7811f1539361980a13517f948f9fb',1,'edash_packager::media::mp2t::AdtsHeader::Parse()'],['../dc/dab/classedash__packager_1_1media_1_1mp2t_1_1Mp2tMediaParser.html#a8e01eb8219dfd9a649ee5a153f9bbabb',1,'edash_packager::media::mp2t::Mp2tMediaParser::Parse()'],['../dc/dc6/classedash__packager_1_1media_1_1mp4_1_1AACAudioSpecificConfig.html#a90a58afc9e6b20b9a6909d54f94dafc9',1,'edash_packager::media::mp4::AACAudioSpecificConfig::Parse()'],['../d7/d8a/structedash__packager_1_1media_1_1mp4_1_1Box.html#a7b62a3983faafbea54a32486df60ed96',1,'edash_packager::media::mp4::Box::Parse()'],['../d8/d0d/classedash__packager_1_1media_1_1mp4_1_1MP4MediaParser.html#ade36e7fd4daf8c6a98c16b6a94bafd28',1,'edash_packager::media::mp4::MP4MediaParser::Parse()'],['../db/da0/classedash__packager_1_1media_1_1WebMClusterParser.html#a060661d4a0bfc01543fa025fb4b09a7d',1,'edash_packager::media::WebMClusterParser::Parse()'],['../dd/d47/classedash__packager_1_1media_1_1WebMInfoParser.html#ab2f2dd920214bf7942e374d4c9843243',1,'edash_packager::media::WebMInfoParser::Parse()'],['../dd/d99/classedash__packager_1_1media_1_1WebMMediaParser.html#a5a95d3879a9a96830fdcf4f866879143',1,'edash_packager::media::WebMMediaParser::Parse()'],['../d6/dd6/classedash__packager_1_1media_1_1WebMListParser.html#a5b3b0c8fd0423044d0090357428b8ee0',1,'edash_packager::media::WebMListParser::Parse()'],['../db/d23/classedash__packager_1_1media_1_1WebMTracksParser.html#a8719ba4bc187c32a73f133c0a67a19ab',1,'edash_packager::media::WebMTracksParser::Parse()'],['../dc/dc8/classedash__packager_1_1media_1_1WebMWebVTTParser.html#a979168b11e59b863de2d3ba3fbb60815',1,'edash_packager::media::WebMWebVTTParser::Parse()'],['../d8/da0/classedash__packager_1_1media_1_1wvm_1_1WvmMediaParser.html#af2a6c8b62df30b6515eee30389b271d7',1,'edash_packager::media::wvm::WvmMediaParser::Parse()']]], ['passscopedptr',['PassScopedPtr',['../dd/d85/classedash__packager_1_1xml_1_1XmlNode.html#a07d40d8fe27a2d1c3470f16ef0df3864',1,'edash_packager::xml::XmlNode']]], ['peek',['Peek',['../d8/d2e/classedash__packager_1_1media_1_1ByteQueue.html#a8253df160751462f3b75290a7c525e56',1,'edash_packager::media::ByteQueue::Peek()'],['../d5/d02/classedash__packager_1_1media_1_1ProducerConsumerQueue.html#acf87e686e78d6cb962f39bb2acca7180',1,'edash_packager::media::ProducerConsumerQueue::Peek()']]], ['peekat',['PeekAt',['../d1/d92/classedash__packager_1_1media_1_1OffsetByteQueue.html#a32b06f514ebfd5aef820a9b91228a854',1,'edash_packager::media::OffsetByteQueue']]],