diff --git a/docs/annotated.html b/docs/annotated.html index 2a994f6702..614af547e5 100644 --- a/docs/annotated.html +++ b/docs/annotated.html @@ -274,28 +274,30 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); ||oCH264SEIMessage ||oCH264Parser ||oCHEVCDecoderConfigurationClass for parsing HEVC decoder configuration -||oCVPxFrameInfo +||oCVP8Parser ||oCVP9ParserClass to parse a vp9 bit stream ||oCVPCodecConfigurationClass for parsing or writing VP codec configuration data -||oCCluster -||oCClusterBuilder -||oCMkvWriterAn implementation of IMkvWriter using our File type -||oCOpusPacket -||oCSeekHead -||oCTracksBuilder -||oCWebMAudioClientHelper class used to parse an Audio element inside a TrackEntry element -||oCWebMClusterParser -||oCContentEncoding -||oCWebMContentEncodingsClientParser for WebM ContentEncodings element -||oCWebMInfoParserParser for WebM Info element -||oCWebMMediaParser -||oCWebMParserClient -||oCWebMListParser -||oCWebMTracksParserParser for WebM Tracks element -||oCWebMVideoClientHelper class used to parse a Video element inside a TrackEntry element -||oCWebMWebVTTParser -||oCCue -||\CWebVttMediaParser +||oCVPxFrameInfo +||oCVPxParser +||oCCluster +||oCClusterBuilder +||oCMkvWriterAn implementation of IMkvWriter using our File type +||oCOpusPacket +||oCSeekHead +||oCTracksBuilder +||oCWebMAudioClientHelper class used to parse an Audio element inside a TrackEntry element +||oCWebMClusterParser +||oCContentEncoding +||oCWebMContentEncodingsClientParser for WebM ContentEncodings element +||oCWebMInfoParserParser for WebM Info element +||oCWebMMediaParser +||oCWebMParserClient +||oCWebMListParser +||oCWebMTracksParserParser for WebM Tracks element +||oCWebMVideoClientHelper class used to parse a Video element inside a TrackEntry element +||oCWebMWebVTTParser +||oCCue +||\CWebVttMediaParser |oNxml ||oCXmlDeleter ||oCXmlNode @@ -325,7 +327,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/classes.html b/docs/classes.html index c885880cba..fe095ca879 100644 --- a/docs/classes.html +++ b/docs/classes.html @@ -89,86 +89,88 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
A | B | C | D | E | F | H | I | K | L | M | O | P | R | S | T | U | V | W | X
- - - - - - - - - - - - - + + + + + + + + - - + + + + + + + - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + +
  A  
-
DataInformation (edash_packager::media::mp4)   KeyRotationFragmenter (edash_packager::media::mp4)   ProtectionSystemSpecificHeader (edash_packager::media::mp4)   TrackFragmentDecodeTime (edash_packager::media::mp4)   
DataReference (edash_packager::media::mp4)   KeySource (edash_packager::media)   
  R  
-
TrackFragmentHeader (edash_packager::media::mp4)   
AACAudioSpecificConfig (edash_packager::media::mp4)   DecodingTime (edash_packager::media::mp4)   
  L  
-
TrackFragmentRun (edash_packager::media::mp4)   
AdaptationSet (edash_packager)   DecodingTimeIterator (edash_packager::media::mp4)   Representation (edash_packager)   TrackHeader (edash_packager::media::mp4)   
AdaptationSetXmlNode (edash_packager::xml)   DecodingTimeToSample (edash_packager::media::mp4)   LibcryptoThreading (edash_packager::media)   RepresentationBaseXmlNode (edash_packager::xml)   TrackRunIterator (edash_packager::media::mp4)   
AdtsHeader (edash_packager::media::mp2t)   DecryptConfig (edash_packager::media)   LocalFile (edash_packager::media)   RepresentationStateChangeListener (edash_packager)   TracksBuilder (edash_packager::media)   
AesCbcCtsDecryptor (edash_packager::media)   DecryptorSource (edash_packager::media)   
  M  
-
RepresentationXmlNode (edash_packager::xml)   TsPacket (edash_packager::media::mp2t)   
AesCbcCtsEncryptor (edash_packager::media)   Demuxer (edash_packager::media)   RequestSigner (edash_packager::media)   TsSection (edash_packager::media::mp2t)   
AesCbcPkcs5Decryptor (edash_packager::media)   DemuxStreamIdMediaSample (edash_packager::media::wvm)   Media (edash_packager::media::mp4)   RsaPrivateKey (edash_packager::media)   TsSectionPat (edash_packager::media::mp2t)   
AesCbcPkcs5Encryptor (edash_packager::media)   DTSSpecific (edash_packager::media::mp4)   MediaData (edash_packager::media::mp4)   RsaPublicKey (edash_packager::media)   TsSectionPes (edash_packager::media::mp2t)   
AesCtrEncryptor (edash_packager::media)   
  E  
-
MediaHeader (edash_packager::media::mp4)   RsaRequestSigner (edash_packager::media)   TsSectionPmt (edash_packager::media::mp2t)   
AesRequestSigner (edash_packager::media)   MediaInformation (edash_packager::media::mp4)   
  S  
-
TsSectionPsi (edash_packager::media::mp2t)   
AudioSampleEntry (edash_packager::media::mp4)   Edit (edash_packager::media::mp4)   MediaParser (edash_packager::media)   TwoPassSingleSegmentSegmenter (edash_packager::media::webm)   
AudioStreamInfo (edash_packager::media)   EditList (edash_packager::media::mp4)   MediaSample (edash_packager::media)   SampleAuxiliaryInformationOffset (edash_packager::media::mp4)   
  U  
+
DataReference (edash_packager::media::mp4)   KeySource (edash_packager::media)   RepresentationBaseXmlNode (edash_packager::xml)   TracksBuilder (edash_packager::media)   
DecodingTime (edash_packager::media::mp4)   
  L  
+
RepresentationStateChangeListener (edash_packager)   TsPacket (edash_packager::media::mp2t)   
AACAudioSpecificConfig (edash_packager::media::mp4)   DecodingTimeIterator (edash_packager::media::mp4)   RepresentationXmlNode (edash_packager::xml)   TsSection (edash_packager::media::mp2t)   
AdaptationSet (edash_packager)   DecodingTimeToSample (edash_packager::media::mp4)   LibcryptoThreading (edash_packager::media)   RequestSigner (edash_packager::media)   TsSectionPat (edash_packager::media::mp2t)   
AdaptationSetXmlNode (edash_packager::xml)   DecryptConfig (edash_packager::media)   LocalFile (edash_packager::media)   RsaPrivateKey (edash_packager::media)   TsSectionPes (edash_packager::media::mp2t)   
AdtsHeader (edash_packager::media::mp2t)   DecryptorSource (edash_packager::media)   
  M  
+
RsaPublicKey (edash_packager::media)   TsSectionPmt (edash_packager::media::mp2t)   
AesCbcCtsDecryptor (edash_packager::media)   Demuxer (edash_packager::media)   RsaRequestSigner (edash_packager::media)   TsSectionPsi (edash_packager::media::mp2t)   
AesCbcCtsEncryptor (edash_packager::media)   DemuxStreamIdMediaSample (edash_packager::media::wvm)   Media (edash_packager::media::mp4)   
  S  
+
TwoPassSingleSegmentSegmenter (edash_packager::media::webm)   
AesCbcPkcs5Decryptor (edash_packager::media)   DTSSpecific (edash_packager::media::mp4)   MediaData (edash_packager::media::mp4)   
  U  
AudioTimestampHelper (edash_packager::media)   EditListEntry (edash_packager::media::mp4)   MediaStream (edash_packager::media)   SampleAuxiliaryInformationSize (edash_packager::media::mp4)   
AVCDecoderConfiguration (edash_packager::media)   Element (edash_packager)   MkvWriter (edash_packager::media)   SampleDescription (edash_packager::media::mp4)   UdpFile (edash_packager::media)   
AesCbcPkcs5Encryptor (edash_packager::media)   
  E  
+
MediaHeader (edash_packager::media::mp4)   SampleAuxiliaryInformationOffset (edash_packager::media::mp4)   
AesCtrEncryptor (edash_packager::media)   MediaInformation (edash_packager::media::mp4)   SampleAuxiliaryInformationSize (edash_packager::media::mp4)   UdpFile (edash_packager::media)   
AesRequestSigner (edash_packager::media)   Edit (edash_packager::media::mp4)   MediaParser (edash_packager::media)   SampleDescription (edash_packager::media::mp4)   
  V  
+
AudioSampleEntry (edash_packager::media::mp4)   EditList (edash_packager::media::mp4)   MediaSample (edash_packager::media)   SampleGroupDescription (edash_packager::media::mp4)   
AudioStreamInfo (edash_packager::media)   EditListEntry (edash_packager::media::mp4)   MediaStream (edash_packager::media)   SampleSize (edash_packager::media::mp4)   VideoMediaHeader (edash_packager::media::mp4)   
AudioTimestampHelper (edash_packager::media)   Element (edash_packager)   MkvWriter (edash_packager::media)   SampleTable (edash_packager::media::mp4)   VideoSampleEntry (edash_packager::media::mp4)   
AVCDecoderConfiguration (edash_packager::media)   ElementaryStreamDescriptor (edash_packager::media::mp4)   MockAdaptationSet (edash_packager)   SampleToChunk (edash_packager::media::mp4)   VideoStreamInfo (edash_packager::media)   
  B  
-
ElementaryStreamDescriptor (edash_packager::media::mp4)   MockAdaptationSet (edash_packager)   SampleGroupDescription (edash_packager::media::mp4)   
  V  
-
EncryptingFragmenter (edash_packager::media::mp4)   MockMpdBuilder (edash_packager)   SampleSize (edash_packager::media::mp4)   
BandwidthEstimator   EncryptionKey (edash_packager::media)   MockMpdNotifier (edash_packager)   SampleTable (edash_packager::media::mp4)   VideoMediaHeader (edash_packager::media::mp4)   
BitReader (edash_packager::media)   ESDescriptor (edash_packager::media::mp4)   MockRepresentation (edash_packager)   SampleToChunk (edash_packager::media::mp4)   VideoSampleEntry (edash_packager::media::mp4)   
Box (edash_packager::media::mp4)   EsParser (edash_packager::media::mp2t)   Movie (edash_packager::media::mp4)   SampleToGroup (edash_packager::media::mp4)   VideoStreamInfo (edash_packager::media)   
BoxBuffer (edash_packager::media::mp4)   EsParserAdts (edash_packager::media::mp2t)   MovieExtends (edash_packager::media::mp4)   SampleToGroupEntry (edash_packager::media::mp4)   VideoStreamInfoParameters (edash_packager::media)   
BoxReader (edash_packager::media::mp4)   EsParserH264 (edash_packager::media::mp2t)   MovieExtendsHeader (edash_packager::media::mp4)   SchemeInfo (edash_packager::media::mp4)   VodMediaInfoDumpMuxerListener (edash_packager::media)   
BufferReader (edash_packager::media)   
  F  
-
MovieFragment (edash_packager::media::mp4)   SchemeType (edash_packager::media::mp4)   VP9Parser (edash_packager::media)   
BufferWriter (edash_packager::media)   MovieFragmentHeader (edash_packager::media::mp4)   SeekHead (edash_packager::media)   VPCodecConfiguration (edash_packager::media)   
ByteQueue (edash_packager::media)   File (edash_packager::media)   MovieHeader (edash_packager::media::mp4)   Segmenter (edash_packager::media::mp4)   VPxFrameInfo (edash_packager::media)   
EncryptingFragmenter (edash_packager::media::mp4)   MockMpdBuilder (edash_packager)   SampleToGroup (edash_packager::media::mp4)   VideoStreamInfoParameters (edash_packager::media)   
EncryptionKey (edash_packager::media)   MockMpdNotifier (edash_packager)   SampleToGroupEntry (edash_packager::media::mp4)   VodMediaInfoDumpMuxerListener (edash_packager::media)   
BandwidthEstimator   ESDescriptor (edash_packager::media::mp4)   MockRepresentation (edash_packager)   SchemeInfo (edash_packager::media::mp4)   VP8Parser (edash_packager::media)   
BitReader (edash_packager::media)   EsParser (edash_packager::media::mp2t)   Movie (edash_packager::media::mp4)   SchemeType (edash_packager::media::mp4)   VP9Parser (edash_packager::media)   
Box (edash_packager::media::mp4)   EsParserAdts (edash_packager::media::mp2t)   MovieExtends (edash_packager::media::mp4)   SeekHead (edash_packager::media)   VPCodecConfiguration (edash_packager::media)   
BoxBuffer (edash_packager::media::mp4)   EsParserH264 (edash_packager::media::mp2t)   MovieExtendsHeader (edash_packager::media::mp4)   Segmenter (edash_packager::media::webm)   VPxFrameInfo (edash_packager::media)   
BoxReader (edash_packager::media::mp4)   
  F  
+
MovieFragment (edash_packager::media::mp4)   Segmenter (edash_packager::media::mp4)   VPxParser (edash_packager::media)   
BufferReader (edash_packager::media)   MovieFragmentHeader (edash_packager::media::mp4)   SegmentIndex (edash_packager::media::mp4)   VTTAdditionalTextBox (edash_packager::media::mp4)   
BufferWriter (edash_packager::media)   File (edash_packager::media)   MovieHeader (edash_packager::media::mp4)   SegmentInfo (edash_packager)   VTTCueBox (edash_packager::media::mp4)   
ByteQueue (edash_packager::media)   FileCloser (edash_packager::media)   Mp2tMediaParser (edash_packager::media::mp2t)   SegmentReference (edash_packager::media::mp4)   VTTEmptyCueBox (edash_packager::media::mp4)   
  C  
-
FileCloser (edash_packager::media)   Mp2tMediaParser (edash_packager::media::mp2t)   Segmenter (edash_packager::media::webm)   VTTAdditionalTextBox (edash_packager::media::mp4)   
FileType (edash_packager::media::mp4)   MP4MediaParser (edash_packager::media::mp4)   SegmentIndex (edash_packager::media::mp4)   VTTCueBox (edash_packager::media::mp4)   
CencSampleEncryptionInfoEntry (edash_packager::media::mp4)   Fragmenter (edash_packager::media::mp4)   MP4Muxer (edash_packager::media::mp4)   SegmentInfo (edash_packager)   VTTEmptyCueBox (edash_packager::media::mp4)   
ChunkInfo (edash_packager::media::mp4)   FrameCENCInfo (edash_packager::media::mp4)   MpdBuilder (edash_packager)   SegmentReference (edash_packager::media::mp4)   
  W  
+
FileType (edash_packager::media::mp4)   MP4MediaParser (edash_packager::media::mp4)   SegmentType (edash_packager::media::mp4)   
  W  
ChunkInfoIterator (edash_packager::media::mp4)   FullBox (edash_packager::media::mp4)   MpdNotifier (edash_packager)   SegmentType (edash_packager::media::mp4)   
ChunkLargeOffset (edash_packager::media::mp4)   
  H  
-
MpdNotifierFactory (edash_packager)   SimpleMpdNotifier (edash_packager)   WebMAudioClient (edash_packager::media)   
ChunkOffset (edash_packager::media::mp4)   MpdNotifyMuxerListener (edash_packager::media)   SingleSegmentSegmenter (edash_packager::media::webm)   WebMClusterParser (edash_packager::media)   
ClosureThread (edash_packager::media)   H264BitReader (edash_packager::media)   MpdOptions (edash_packager)   SingleSegmentSegmenter (edash_packager::media::mp4)   WebMContentEncodingsClient (edash_packager::media)   
Cluster (edash_packager::media)   H264ByteToUnitStreamConverter (edash_packager::media)   MpdWriter (edash_packager)   SoundMediaHeader (edash_packager::media::mp4)   WebMInfoParser (edash_packager::media)   
ClusterBuilder (edash_packager::media)   H264DecRefPicMarking (edash_packager::media)   MultiSegmentSegmenter (edash_packager::media::webm)   Status (edash_packager::media)   WebMListParser (edash_packager::media)   
CodecConfigurationRecord (edash_packager::media::mp4)   H264ModificationOfPicNum (edash_packager::media)   MultiSegmentSegmenter (edash_packager::media::mp4)   StreamDescriptor (edash_packager::media)   WebMMediaParser (edash_packager::media)   
CompactSampleSize (edash_packager::media::mp4)   H264NALU (edash_packager::media)   Muxer (edash_packager::media)   StreamDescriptorCompareFn (edash_packager::media)   WebMMuxer (edash_packager::media::webm)   
CompositionOffset (edash_packager::media::mp4)   H264Parser (edash_packager::media)   MuxerListener (edash_packager::media)   StreamInfo (edash_packager::media)   WebMParserClient (edash_packager::media)   
CompositionOffsetIterator (edash_packager::media::mp4)   H264PPS (edash_packager::media)   MuxerOptions (edash_packager::media)   SubsampleEntry (edash_packager::media)   WebMTracksParser (edash_packager::media)   
CompositionTimeToSample (edash_packager::media::mp4)   H264SEIMessage (edash_packager::media)   
  O  
-
SubtitleMediaHeader (edash_packager::media::mp4)   WebMVideoClient (edash_packager::media)   
ContentEncoding (edash_packager::media)   H264SEIRecoveryPoint (edash_packager::media)   SyncSample (edash_packager::media::mp4)   WebMWebVTTParser (edash_packager::media)   
ContentProtectionElement (edash_packager)   H264SliceHeader (edash_packager::media)   OffsetByteQueue (edash_packager::media)   SyncSampleIterator (edash_packager::media::mp4)   WebVTTConfigurationBox (edash_packager::media::mp4)   
Cue (edash_packager::media)   H264SPS (edash_packager::media)   OnMediaEndParameters (edash_packager::media)   
  T  
-
WebVttMediaParser (edash_packager::media)   
CueIDBox (edash_packager::media::mp4)   H264WeightingFactors (edash_packager::media)   OpusPacket (edash_packager::media)   WebVTTSourceLabelBox (edash_packager::media::mp4)   
CuePayloadBox (edash_packager::media::mp4)   HandlerReference (edash_packager::media::mp4)   OriginalFormat (edash_packager::media::mp4)   TextStreamInfo (edash_packager::media)   WidevineKeySource (edash_packager::media)   
CueSettingsBox (edash_packager::media::mp4)   HEVCDecoderConfiguration (edash_packager::media)   
  P  
-
TextTrack (edash_packager::media)   WvmMediaParser (edash_packager::media::wvm)   
CueSourceIDBox (edash_packager::media::mp4)   HttpKeyFetcher (edash_packager::media)   TextTrackConfig (edash_packager::media)   WVTTSampleEntry (edash_packager::media::mp4)   
CueTimeBox (edash_packager::media::mp4)   
  I  
-
PixelAspectRatio (edash_packager::media::mp4)   ThreadedIoFile (edash_packager::media)   
  X  
+
Fragmenter (edash_packager::media::mp4)   MP4Muxer (edash_packager::media::mp4)   SimpleMpdNotifier (edash_packager)   
CencSampleEncryptionInfoEntry (edash_packager::media::mp4)   FrameCENCInfo (edash_packager::media::mp4)   MpdBuilder (edash_packager)   SingleSegmentSegmenter (edash_packager::media::mp4)   WebMAudioClient (edash_packager::media)   
ChunkInfo (edash_packager::media::mp4)   FullBox (edash_packager::media::mp4)   MpdNotifier (edash_packager)   SingleSegmentSegmenter (edash_packager::media::webm)   WebMClusterParser (edash_packager::media)   
ChunkInfoIterator (edash_packager::media::mp4)   
  H  
+
MpdNotifierFactory (edash_packager)   SoundMediaHeader (edash_packager::media::mp4)   WebMContentEncodingsClient (edash_packager::media)   
ChunkLargeOffset (edash_packager::media::mp4)   MpdNotifyMuxerListener (edash_packager::media)   Status (edash_packager::media)   WebMInfoParser (edash_packager::media)   
ChunkOffset (edash_packager::media::mp4)   H264BitReader (edash_packager::media)   MpdOptions (edash_packager)   StreamDescriptor (edash_packager::media)   WebMListParser (edash_packager::media)   
ClosureThread (edash_packager::media)   H264ByteToUnitStreamConverter (edash_packager::media)   MpdWriter (edash_packager)   StreamDescriptorCompareFn (edash_packager::media)   WebMMediaParser (edash_packager::media)   
Cluster (edash_packager::media)   H264DecRefPicMarking (edash_packager::media)   MultiSegmentSegmenter (edash_packager::media::webm)   StreamInfo (edash_packager::media)   WebMMuxer (edash_packager::media::webm)   
ClusterBuilder (edash_packager::media)   H264ModificationOfPicNum (edash_packager::media)   MultiSegmentSegmenter (edash_packager::media::mp4)   SubsampleEntry (edash_packager::media)   WebMParserClient (edash_packager::media)   
CodecConfigurationRecord (edash_packager::media::mp4)   H264NALU (edash_packager::media)   Muxer (edash_packager::media)   SubtitleMediaHeader (edash_packager::media::mp4)   WebMTracksParser (edash_packager::media)   
CompactSampleSize (edash_packager::media::mp4)   H264Parser (edash_packager::media)   MuxerListener (edash_packager::media)   SyncSample (edash_packager::media::mp4)   WebMVideoClient (edash_packager::media)   
CompositionOffset (edash_packager::media::mp4)   H264PPS (edash_packager::media)   MuxerOptions (edash_packager::media)   SyncSampleIterator (edash_packager::media::mp4)   WebMWebVTTParser (edash_packager::media)   
CompositionOffsetIterator (edash_packager::media::mp4)   H264SEIMessage (edash_packager::media)   
  O  
+
  T  
+
WebVTTConfigurationBox (edash_packager::media::mp4)   
CompositionTimeToSample (edash_packager::media::mp4)   H264SEIRecoveryPoint (edash_packager::media)   WebVttMediaParser (edash_packager::media)   
ContentEncoding (edash_packager::media)   H264SliceHeader (edash_packager::media)   OffsetByteQueue (edash_packager::media)   TextStreamInfo (edash_packager::media)   WebVTTSourceLabelBox (edash_packager::media::mp4)   
ContentProtectionElement (edash_packager)   H264SPS (edash_packager::media)   OnMediaEndParameters (edash_packager::media)   TextTrack (edash_packager::media)   WidevineKeySource (edash_packager::media)   
Cue (edash_packager::media)   H264WeightingFactors (edash_packager::media)   OpusPacket (edash_packager::media)   TextTrackConfig (edash_packager::media)   WvmMediaParser (edash_packager::media::wvm)   
CueIDBox (edash_packager::media::mp4)   HandlerReference (edash_packager::media::mp4)   OriginalFormat (edash_packager::media::mp4)   ThreadedIoFile (edash_packager::media)   WVTTSampleEntry (edash_packager::media::mp4)   
CuePayloadBox (edash_packager::media::mp4)   HEVCDecoderConfiguration (edash_packager::media)   
  P  
+
Track (edash_packager::media::mp4)   
  X  
CueSettingsBox (edash_packager::media::mp4)   HttpKeyFetcher (edash_packager::media)   TrackEncryption (edash_packager::media::mp4)   
CueSourceIDBox (edash_packager::media::mp4)   
  I  
+
PixelAspectRatio (edash_packager::media::mp4)   TrackExtends (edash_packager::media::mp4)   XmlDeleter (edash_packager::xml)   
CueTimeBox (edash_packager::media::mp4)   PrevSampleData (edash_packager::media::wvm)   TrackFragment (edash_packager::media::mp4)   XmlNode (edash_packager::xml)   
  D  
-
PrevSampleData (edash_packager::media::wvm)   Track (edash_packager::media::mp4)   
IoCache (edash_packager::media)   ProducerConsumerQueue (edash_packager::media)   TrackEncryption (edash_packager::media::mp4)   XmlDeleter (edash_packager::xml)   
DashIopMpdNotifier (edash_packager)   
  K  
-
ProgressListener (edash_packager::media)   TrackExtends (edash_packager::media::mp4)   XmlNode (edash_packager::xml)   
DataEntryUrl (edash_packager::media::mp4)   ProtectionSchemeInfo (edash_packager::media::mp4)   TrackFragment (edash_packager::media::mp4)   
KeyFetcher (edash_packager::media)   
IoCache (edash_packager::media)   ProducerConsumerQueue (edash_packager::media)   TrackFragmentDecodeTime (edash_packager::media::mp4)   
  K  
+
ProgressListener (edash_packager::media)   TrackFragmentHeader (edash_packager::media::mp4)   
DashIopMpdNotifier (edash_packager)   ProtectionSchemeInfo (edash_packager::media::mp4)   TrackFragmentRun (edash_packager::media::mp4)   
DataEntryUrl (edash_packager::media::mp4)   KeyFetcher (edash_packager::media)   ProtectionSystemSpecificHeader (edash_packager::media::mp4)   TrackHeader (edash_packager::media::mp4)   
DataInformation (edash_packager::media::mp4)   KeyRotationFragmenter (edash_packager::media::mp4)   
  R  
+
TrackRunIterator (edash_packager::media::mp4)   
Representation (edash_packager)   
A | B | C | D | E | F | H | I | K | L | M | O | P | R | S | T | U | V | W | X
diff --git a/docs/d0/d03/classedash__packager_1_1media_1_1webm_1_1SingleSegmentSegmenter.html b/docs/d0/d03/classedash__packager_1_1media_1_1webm_1_1SingleSegmentSegmenter.html index 18bd4b999b..233a0dc754 100644 --- a/docs/d0/d03/classedash__packager_1_1media_1_1webm_1_1SingleSegmentSegmenter.html +++ b/docs/d0/d03/classedash__packager_1_1media_1_1webm_1_1SingleSegmentSegmenter.html @@ -290,7 +290,7 @@ double cluster_length_sec< diff --git a/docs/d0/d06/mpd__flags_8cc_source.html b/docs/d0/d06/mpd__flags_8cc_source.html index 12fb76af7b..c513494ce1 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 90aa8c055f..bef2171d27 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 @@ -109,7 +109,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 0bd4add09f..e3b3b5b214 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 7f45eb170d..dfb2b246a7 100644 --- a/docs/d0/d0e/structedash__packager_1_1media_1_1StreamDescriptor-members.html +++ b/docs/d0/d0e/structedash__packager_1_1media_1_1StreamDescriptor-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d1a/structedash__packager_1_1media_1_1mp4_1_1ChunkOffset-members.html b/docs/d0/d1a/structedash__packager_1_1media_1_1mp4_1_1ChunkOffset-members.html index 4d1e6ee863..787eb2ac9e 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 @@ -114,7 +114,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 816953e1ca..56a25cba4a 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 4ce2a51cdb..5bb74b1ae2 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 6bb1ddec7d..cdba9fec25 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 77e7897dfa..3fec03c71a 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 e4e4d2fd95..12bd3fbb29 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_1media_1_1SeekHead-members.html b/docs/d0/d3a/classedash__packager_1_1media_1_1SeekHead-members.html index cde1b96175..d7eb203ca7 100644 --- a/docs/d0/d3a/classedash__packager_1_1media_1_1SeekHead-members.html +++ b/docs/d0/d3a/classedash__packager_1_1media_1_1SeekHead-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d3a/classedash__packager_1_1xml_1_1RepresentationBaseXmlNode-members.html b/docs/d0/d3a/classedash__packager_1_1xml_1_1RepresentationBaseXmlNode-members.html index b28e850ae5..5c20509aa8 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 494ccbb764..de5a285352 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 8f1790cb1e..e9c1b77311 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 8d1ab8d9fc..f0ecc3433e 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 cc3a9381e0..4bdd08948d 100644 --- a/docs/d0/d46/fourccs_8h_source.html +++ b/docs/d0/d46/fourccs_8h_source.html @@ -231,7 +231,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d49/vod__media__info__dump__muxer__listener_8cc_source.html b/docs/d0/d49/vod__media__info__dump__muxer__listener_8cc_source.html index 311feb29af..ecd2843327 100644 --- a/docs/d0/d49/vod__media__info__dump__muxer__listener_8cc_source.html +++ b/docs/d0/d49/vod__media__info__dump__muxer__listener_8cc_source.html @@ -234,7 +234,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d4a/structedash__packager_1_1media_1_1mp4_1_1SampleSize-members.html b/docs/d0/d4a/structedash__packager_1_1media_1_1mp4_1_1SampleSize-members.html index c700b66e93..7f8f89a2da 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 @@ -114,7 +114,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d4c/structedash__packager_1_1media_1_1mp4_1_1CueTimeBox-members.html b/docs/d0/d4c/structedash__packager_1_1media_1_1mp4_1_1CueTimeBox-members.html index 729ba23a13..6c6582bb33 100644 --- a/docs/d0/d4c/structedash__packager_1_1media_1_1mp4_1_1CueTimeBox-members.html +++ b/docs/d0/d4c/structedash__packager_1_1media_1_1mp4_1_1CueTimeBox-members.html @@ -108,7 +108,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 9d8a9e0c5d..51f89997ad 100644 --- a/docs/d0/d4e/libcrypto__threading_8cc_source.html +++ b/docs/d0/d4e/libcrypto__threading_8cc_source.html @@ -143,7 +143,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d5b/structedash__packager_1_1media_1_1mp4_1_1VTTAdditionalTextBox-members.html b/docs/d0/d5b/structedash__packager_1_1media_1_1mp4_1_1VTTAdditionalTextBox-members.html index de36d3eeb4..cfb4d478b4 100644 --- a/docs/d0/d5b/structedash__packager_1_1media_1_1mp4_1_1VTTAdditionalTextBox-members.html +++ b/docs/d0/d5b/structedash__packager_1_1media_1_1mp4_1_1VTTAdditionalTextBox-members.html @@ -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 b7c967e107..27096c3c54 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 eea17ea4f1..d94e373149 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 348bd123ae..15c05b52e9 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 f7711d1519..f5ecd1aaa5 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 @@ -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 c7535debcb..6fb37740dd 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 @@ -114,7 +114,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 3e9d249cbe..146b46ec7a 100644 --- a/docs/d0/d96/structedash__packager_1_1ContentProtectionElement.html +++ b/docs/d0/d96/structedash__packager_1_1ContentProtectionElement.html @@ -123,7 +123,7 @@ std::vector< diff --git a/docs/d0/d96/structedash__packager_1_1media_1_1mp4_1_1WebVTTSourceLabelBox-members.html b/docs/d0/d96/structedash__packager_1_1media_1_1mp4_1_1WebVTTSourceLabelBox-members.html index 932e7561ea..384a6d34f6 100644 --- a/docs/d0/d96/structedash__packager_1_1media_1_1mp4_1_1WebVTTSourceLabelBox-members.html +++ b/docs/d0/d96/structedash__packager_1_1media_1_1mp4_1_1WebVTTSourceLabelBox-members.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/da4/classedash__packager_1_1media_1_1WebMVideoClient-members.html b/docs/d0/da4/classedash__packager_1_1media_1_1WebMVideoClient-members.html index f78213825c..448efa248d 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 dec66f3e31..999b332941 100644 --- a/docs/d0/da6/stream__descriptor_8cc_source.html +++ b/docs/d0/da6/stream__descriptor_8cc_source.html @@ -243,7 +243,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/da9/classedash__packager_1_1MockRepresentation.html b/docs/d0/da9/classedash__packager_1_1MockRepresentation.html index 55f53c51c3..c79347341d 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/da9/classedash__packager_1_1media_1_1webm_1_1WebMMuxer-members.html b/docs/d0/da9/classedash__packager_1_1media_1_1webm_1_1WebMMuxer-members.html index da53591b4f..546113f632 100644 --- a/docs/d0/da9/classedash__packager_1_1media_1_1webm_1_1WebMMuxer-members.html +++ b/docs/d0/da9/classedash__packager_1_1media_1_1webm_1_1WebMMuxer-members.html @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/dae/classedash__packager_1_1media_1_1BufferWriter-members.html b/docs/d0/dae/classedash__packager_1_1media_1_1BufferWriter-members.html index 14b0dda34a..dbf536654f 100644 --- a/docs/d0/dae/classedash__packager_1_1media_1_1BufferWriter-members.html +++ b/docs/d0/dae/classedash__packager_1_1media_1_1BufferWriter-members.html @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/db7/structedash__packager_1_1media_1_1mp4_1_1DTSSpecific.html b/docs/d0/db7/structedash__packager_1_1media_1_1mp4_1_1DTSSpecific.html index e6df5cbd07..592cdec867 100644 --- a/docs/d0/db7/structedash__packager_1_1media_1_1mp4_1_1DTSSpecific.html +++ b/docs/d0/db7/structedash__packager_1_1media_1_1mp4_1_1DTSSpecific.html @@ -171,7 +171,7 @@ Additional Inherited Members diff --git a/docs/d0/dd1/classedash__packager_1_1SimpleMpdNotifier-members.html b/docs/d0/dd1/classedash__packager_1_1SimpleMpdNotifier-members.html index 83b1a45749..b18f979383 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 c882ec5997..c6f8a9500a 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 5a609d5160..b4786d0514 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 fa66a658a0..24a766afaa 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 e803b0c7af..b0d5efa70c 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 @@ -115,7 +115,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 9c18501467..ecc319a698 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 @@ -112,7 +112,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 a981dafc93..35fa7010d8 100644 --- a/docs/d0/de6/classedash__packager_1_1media_1_1TracksBuilder.html +++ b/docs/d0/de6/classedash__packager_1_1media_1_1TracksBuilder.html @@ -123,7 +123,7 @@ std::vector< uint8_t >  diff --git a/docs/d0/de8/structedash__packager_1_1media_1_1mp4_1_1VTTCueBox-members.html b/docs/d0/de8/structedash__packager_1_1media_1_1mp4_1_1VTTCueBox-members.html index fde1d8ce5f..3cd4806604 100644 --- a/docs/d0/de8/structedash__packager_1_1media_1_1mp4_1_1VTTCueBox-members.html +++ b/docs/d0/de8/structedash__packager_1_1media_1_1mp4_1_1VTTCueBox-members.html @@ -112,7 +112,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/dea/structedash__packager_1_1media_1_1mp4_1_1ProtectionSystemSpecificHeader-members.html b/docs/d0/dea/structedash__packager_1_1media_1_1mp4_1_1ProtectionSystemSpecificHeader-members.html index 9e324dba9c..89eda73105 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 @@ -114,7 +114,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 34cceada4b..05671b8441 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 34b27584fb..167fd3d85b 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 @@ -109,7 +109,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 2d6bf05d3c..15c54899e4 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 ced21c2d7c..96b1572ff0 100644 --- a/docs/d1/d02/classedash__packager_1_1media_1_1mp4_1_1BoxBuffer-members.html +++ b/docs/d1/d02/classedash__packager_1_1media_1_1mp4_1_1BoxBuffer-members.html @@ -121,7 +121,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d13/status_8h_source.html b/docs/d1/d13/status_8h_source.html index 2cbf570c2e..670533a4b2 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 65e2af6bc8..bfc7fd2bcf 100644 --- a/docs/d1/d16/structedash__packager_1_1xml_1_1XmlDeleter-members.html +++ b/docs/d1/d16/structedash__packager_1_1xml_1_1XmlDeleter-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d1c/two__pass__single__segment__segmenter_8cc_source.html b/docs/d1/d1c/two__pass__single__segment__segmenter_8cc_source.html index 328a477c69..ef112bf701 100644 --- a/docs/d1/d1c/two__pass__single__segment__segmenter_8cc_source.html +++ b/docs/d1/d1c/two__pass__single__segment__segmenter_8cc_source.html @@ -275,7 +275,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d1d/muxer__flags_8cc_source.html b/docs/d1/d1d/muxer__flags_8cc_source.html index 5078aedf4e..cf409f3dba 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 608009fc86..0a9c96438a 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 80762c9280..81be76b206 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 e161f89341..666ff38d4f 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 cbc11e4532..07b96e879a 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 @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d2f/webvtt__media__parser_8cc_source.html b/docs/d1/d2f/webvtt__media__parser_8cc_source.html index e78486c11f..2abcc92ccc 100644 --- a/docs/d1/d2f/webvtt__media__parser_8cc_source.html +++ b/docs/d1/d2f/webvtt__media__parser_8cc_source.html @@ -479,7 +479,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 357b2b7d5a..c3fc37775c 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 @@ -174,7 +174,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 d611773c78..e006e7fb50 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 66ff75e68d..795f904c18 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 4670a44534..bbba7bd571 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 0bd1b6966e..c41b251d05 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 1f3cf76729..098c016c8a 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 209b6f6686..58438704b0 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 ed62a0acdc..3f9cb9b31a 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 65a85ea8d9..bc0d61f347 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 64a3b54733..25c95e43ff 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 @@ -186,7 +186,7 @@ Additional Inherited Members diff --git a/docs/d1/d70/vp8__parser_8cc_source.html b/docs/d1/d70/vp8__parser_8cc_source.html new file mode 100644 index 0000000000..84230bda98 --- /dev/null +++ b/docs/d1/d70/vp8__parser_8cc_source.html @@ -0,0 +1,301 @@ + + + + + + +DASH Media Packaging SDK: media/filters/vp8_parser.cc Source File + + + + + + + + + +
+
+ + + + + + +
+
DASH Media Packaging SDK +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
vp8_parser.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/vp8_parser.h"
+
8 
+
9 #include "packager/base/logging.h"
+
10 #include "packager/media/base/bit_reader.h"
+
11 #include "packager/media/formats/mp4/rcheck.h"
+
12 
+
13 namespace edash_packager {
+
14 namespace media {
+
15 namespace {
+
16 
+
17 const uint32_t MB_FEATURE_TREE_PROBS = 3;
+
18 const uint32_t MAX_MB_SEGMENTS = 4;
+
19 const uint32_t MAX_REF_LF_DELTAS = 4;
+
20 const uint32_t MAX_MODE_LF_DELTAS = 4;
+
21 const uint32_t MB_LVL_MAX = 2;
+
22 const uint32_t MB_FEATURE_DATA_BITS[MB_LVL_MAX] = {7, 6};
+
23 
+
24 bool VerifySyncCode(const uint8_t* data) {
+
25  return data[0] == 0x9d && data[1] == 0x01 && data[2] == 0x2a;
+
26 }
+
27 
+
28 bool ReadSegmentation(BitReader* reader) {
+
29  bool enabled;
+
30  RCHECK(reader->ReadBits(1, &enabled));
+
31  if (!enabled)
+
32  return true;
+
33 
+
34  bool update_map;
+
35  RCHECK(reader->ReadBits(1, &update_map));
+
36  bool update_data;
+
37  RCHECK(reader->ReadBits(1, &update_data));
+
38 
+
39  if (update_data) {
+
40  RCHECK(reader->SkipBits(1)); // abs_delta
+
41  for (uint32_t i = 0; i < MAX_MB_SEGMENTS; ++i)
+
42  for (uint32_t j = 0; j < MB_LVL_MAX; ++j) {
+
43  RCHECK(reader->SkipBitsConditional(true, MB_FEATURE_DATA_BITS[j] + 1));
+
44  }
+
45  }
+
46  if (update_map) {
+
47  for (uint32_t i = 0; i < MB_FEATURE_TREE_PROBS; ++i)
+
48  RCHECK(reader->SkipBitsConditional(true, 8));
+
49  }
+
50  return true;
+
51 }
+
52 
+
53 bool ReadLoopFilter(BitReader* reader) {
+
54  RCHECK(reader->SkipBits(10)); // filter_type, filter_evel, sharness_level
+
55 
+
56  bool mode_ref_delta_enabled;
+
57  RCHECK(reader->ReadBits(1, &mode_ref_delta_enabled));
+
58  if (!mode_ref_delta_enabled)
+
59  return true;
+
60  bool mode_ref_delta_update;
+
61  RCHECK(reader->ReadBits(1, &mode_ref_delta_update));
+
62  if (!mode_ref_delta_update)
+
63  return true;
+
64 
+
65  for (uint32_t i = 0; i < MAX_REF_LF_DELTAS + MAX_MODE_LF_DELTAS; ++i)
+
66  RCHECK(reader->SkipBitsConditional(true, 6 + 1));
+
67  return true;
+
68 }
+
69 
+
70 bool ReadQuantization(BitReader* reader) {
+
71  uint32_t yac_index;
+
72  RCHECK(reader->ReadBits(7, &yac_index));
+
73  VLOG(4) << "yac_index: " << yac_index;
+
74  RCHECK(reader->SkipBitsConditional(true, 4 + 1)); // y dc delta
+
75  RCHECK(reader->SkipBitsConditional(true, 4 + 1)); // y2 dc delta
+
76  RCHECK(reader->SkipBitsConditional(true, 4 + 1)); // y2 ac delta
+
77  RCHECK(reader->SkipBitsConditional(true, 4 + 1)); // chroma dc delta
+
78  RCHECK(reader->SkipBitsConditional(true, 4 + 1)); // chroma ac delta
+
79  return true;
+
80 }
+
81 
+
82 bool ReadRefreshFrame(BitReader* reader) {
+
83  bool refresh_golden_frame;
+
84  RCHECK(reader->ReadBits(1, &refresh_golden_frame));
+
85  bool refresh_altref_frame;
+
86  RCHECK(reader->ReadBits(1, &refresh_altref_frame));
+
87  if (!refresh_golden_frame)
+
88  RCHECK(reader->SkipBits(2)); // buffer copy flag
+
89  if (!refresh_altref_frame)
+
90  RCHECK(reader->SkipBits(2)); // buffer copy flag
+
91  RCHECK(reader->SkipBits(2)); // sign bias flags
+
92  return true;
+
93 }
+
94 
+
95 } // namespace
+
96 
+
97 VP8Parser::VP8Parser() : width_(0), height_(0) {}
+
98 VP8Parser::~VP8Parser() {}
+
99 
+
100 bool VP8Parser::Parse(const uint8_t* data,
+
101  size_t data_size,
+
102  std::vector<VPxFrameInfo>* vpx_frames) {
+
103  DCHECK(data);
+
104  DCHECK(vpx_frames);
+
105 
+
106  BitReader reader(data, data_size);
+
107  // The following 3 bytes are read directly from |data|.
+
108  RCHECK(reader.SkipBytes(3));
+
109 
+
110  // One bit for frame type.
+
111  bool is_interframe = data[0] & 1;
+
112  // 3-bit version number with 2 bits for profile and the other bit reserved for
+
113  // future variants.
+
114  uint8_t profile = (data[0] >> 1) & 3;
+
115  // One bit for show frame flag.
+
116  // Then 19 bits (the remaining 3 bits in the first byte + next two bytes) for
+
117  // header size.
+
118  uint32_t header_size = (data[0] | (data[1] << 8) | (data[2] << 16)) >> 5;
+
119  RCHECK(header_size <= data_size);
+
120 
+
121  if (!is_interframe) {
+
122  // The following 7 bytes are read directly from |data|.
+
123  RCHECK(reader.SkipBytes(7));
+
124 
+
125  RCHECK(VerifySyncCode(&data[3]));
+
126 
+
127  // Bits 0b11000000 for data[7] and data[9] are scaling.
+
128  width_ = data[6] | ((data[7] & 0x3f) << 8);
+
129  height_ = data[8] | ((data[9] & 0x3f) << 8);
+
130 
+
131  RCHECK(reader.SkipBits(2)); // colorspace and pixel value clamping.
+
132  }
+
133 
+
134  RCHECK(ReadSegmentation(&reader));
+
135  RCHECK(ReadLoopFilter(&reader));
+
136  RCHECK(reader.SkipBits(2)); // partitions bits
+
137  RCHECK(ReadQuantization(&reader));
+
138 
+
139  if (is_interframe) {
+
140  RCHECK(ReadRefreshFrame(&reader));
+
141  RCHECK(reader.SkipBits(1)); // refresh_entropy_probs
+
142  RCHECK(reader.SkipBits(1)); // refresh last frame flag
+
143  } else {
+
144  RCHECK(reader.SkipBits(1)); // refresh_entropy_probs
+
145  }
+
146 
+
147  // The next field is entropy header (coef probability tree), which is encoded
+
148  // using bool entropy encoder, i.e. compressed. We don't consider it as part
+
149  // of uncompressed header.
+
150 
+
151  writable_codec_config()->set_profile(profile);
+
152  // VP8 uses an 8-bit YUV 4:2:0 format.
+
153  // http://tools.ietf.org/html/rfc6386 Section 2.
+
154  writable_codec_config()->set_bit_depth(8);
+
155  writable_codec_config()->set_chroma_subsampling(
+
156  VPCodecConfiguration::CHROMA_420_COLLOCATED_WITH_LUMA);
+
157  // VP8 uses YCrCb color space defined in ITU-R_BT.601.
+
158  // http://tools.ietf.org/html/rfc6386 Section 9.2.
+
159  writable_codec_config()->set_color_space(
+
160  VPCodecConfiguration::COLOR_SPACE_BT_601);
+
161 
+
162  VPxFrameInfo vpx_frame;
+
163  vpx_frame.frame_size = data_size;
+
164  vpx_frame.uncompressed_header_size =
+
165  vpx_frame.frame_size - reader.bits_available() / 8;
+
166  vpx_frame.is_keyframe = !is_interframe;
+
167  vpx_frame.width = width_;
+
168  vpx_frame.height = height_;
+
169 
+
170  vpx_frames->clear();
+
171  vpx_frames->push_back(vpx_frame);
+
172 
+
173  VLOG(3) << "\n frame_size: " << vpx_frame.frame_size
+
174  << "\n uncompressed_header_size: "
+
175  << vpx_frame.uncompressed_header_size
+
176  << "\n bits read: " << reader.bit_position()
+
177  << "\n header_size: " << header_size
+
178  << "\n width: " << vpx_frame.width
+
179  << "\n height: " << vpx_frame.height;
+
180  return true;
+
181 }
+
182 
+
183 bool VP8Parser::IsKeyframe(const uint8_t* data, size_t data_size) {
+
184  // Make sure the block is big enough for the minimal keyframe header size.
+
185  if (data_size < 10)
+
186  return false;
+
187 
+
188  // The LSb of the first byte must be a 0 for a keyframe.
+
189  if ((data[0] & 0x01) != 0)
+
190  return false;
+
191  return VerifySyncCode(&data[3]);
+
192 }
+
193 
+
194 } // namespace media
+
195 } // namespace edash_packager
+ +
static bool IsKeyframe(const uint8_t *data, size_t data_size)
Definition: vp8_parser.cc:183
+ + +
A class to read bit streams.
Definition: bit_reader.h:17
+
bool SkipBits(int num_bits)
Definition: bit_reader.cc:24
+
bool SkipBytes(int num_bytes)
Definition: bit_reader.cc:56
+
bool Parse(const uint8_t *data, size_t data_size, std::vector< VPxFrameInfo > *vpx_frames) override
Definition: vp8_parser.cc:100
+
+ + + + diff --git a/docs/d1/d72/language__utils_8cc_source.html b/docs/d1/d72/language__utils_8cc_source.html index d9c282b295..44abf1af78 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 6308ae6263..56e86453b4 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 @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d72/structedash__packager_1_1media_1_1mp4_1_1PixelAspectRatio-members.html b/docs/d1/d72/structedash__packager_1_1media_1_1mp4_1_1PixelAspectRatio-members.html index 3721624148..f29ee3c70e 100644 --- a/docs/d1/d72/structedash__packager_1_1media_1_1mp4_1_1PixelAspectRatio-members.html +++ b/docs/d1/d72/structedash__packager_1_1media_1_1mp4_1_1PixelAspectRatio-members.html @@ -109,7 +109,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 bf883bfc70..dbea96cbcb 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 96da9a26d8..f4174642ad 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 @@ -112,7 +112,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 71749554a2..2007e7fb7d 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 4c427cc35f..0a9dfb9a45 100644 --- a/docs/d1/d7d/webm__video__client_8cc_source.html +++ b/docs/d1/d7d/webm__video__client_8cc_source.html @@ -95,197 +95,178 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
6 
7 #include "packager/base/logging.h"
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 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
-
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 
-
68  if (pixel_width_ <= 0 || pixel_height_ <= 0)
-
69  return scoped_refptr<VideoStreamInfo>();
-
70 
-
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 kWebMIdPixelHeight:
-
138  dst = &pixel_height_;
-
139  break;
-
140  case kWebMIdPixelCropTop:
-
141  dst = &crop_top_;
-
142  break;
-
143  case kWebMIdPixelCropBottom:
-
144  dst = &crop_bottom_;
-
145  break;
-
146  case kWebMIdPixelCropLeft:
-
147  dst = &crop_left_;
-
148  break;
-
149  case kWebMIdPixelCropRight:
-
150  dst = &crop_right_;
-
151  break;
-
152  case kWebMIdDisplayWidth:
-
153  dst = &display_width_;
-
154  break;
-
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  *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.
+
9 #include "packager/media/formats/webm/webm_constants.h"
+
10 
+
11 namespace {
+
12 
+
13 // Timestamps are represented in double in WebM. Convert to uint64_t in us.
+
14 const uint32_t kWebMTimeScale = 1000000u;
+
15 
+
16 int64_t GetGreatestCommonDivisor(int64_t a, int64_t b) {
+
17  while (b) {
+
18  int64_t temp = b;
+
19  b = a % b;
+
20  a = temp;
+
21  }
+
22  return a;
+
23 }
+
24 
+
25 } // namespace
+
26 
+
27 namespace edash_packager {
+
28 namespace media {
+
29 
+
30 WebMVideoClient::WebMVideoClient() {
+
31  Reset();
+
32 }
+
33 
+
34 WebMVideoClient::~WebMVideoClient() {
+
35 }
+
36 
+ +
38  pixel_width_ = -1;
+
39  pixel_height_ = -1;
+
40  crop_bottom_ = -1;
+
41  crop_top_ = -1;
+
42  crop_left_ = -1;
+
43  crop_right_ = -1;
+
44  display_width_ = -1;
+
45  display_height_ = -1;
+
46  display_unit_ = -1;
+
47  alpha_mode_ = -1;
+
48 }
+
49 
+
50 scoped_refptr<VideoStreamInfo> WebMVideoClient::GetVideoStreamInfo(
+
51  int64_t track_num,
+
52  const std::string& codec_id,
+
53  const std::vector<uint8_t>& codec_private,
+
54  bool is_encrypted) {
+
55  VideoCodec video_codec = kUnknownVideoCodec;
+
56  if (codec_id == "V_VP8") {
+
57  video_codec = kCodecVP8;
+
58  } else if (codec_id == "V_VP9") {
+
59  video_codec = kCodecVP9;
+
60  } else if (codec_id == "V_VP10") {
+
61  video_codec = kCodecVP10;
+
62  } else {
+
63  LOG(ERROR) << "Unsupported video codec_id " << codec_id;
+
64  return scoped_refptr<VideoStreamInfo>();
+
65  }
+
66 
+
67  if (pixel_width_ <= 0 || pixel_height_ <= 0)
+
68  return scoped_refptr<VideoStreamInfo>();
+
69 
+
70  // Set crop and display unit defaults if these elements are not present.
+
71  if (crop_bottom_ == -1)
+
72  crop_bottom_ = 0;
+
73 
+
74  if (crop_top_ == -1)
+
75  crop_top_ = 0;
+
76 
+
77  if (crop_left_ == -1)
+
78  crop_left_ = 0;
+
79 
+
80  if (crop_right_ == -1)
+
81  crop_right_ = 0;
+
82 
+
83  if (display_unit_ == -1)
+
84  display_unit_ = 0;
+
85 
+
86  uint16_t width_after_crop = pixel_width_ - (crop_left_ + crop_right_);
+
87  uint16_t height_after_crop = pixel_height_ - (crop_top_ + crop_bottom_);
+
88 
+
89  if (display_unit_ == 0) {
+
90  if (display_width_ <= 0)
+
91  display_width_ = width_after_crop;
+
92  if (display_height_ <= 0)
+
93  display_height_ = height_after_crop;
+
94  } else if (display_unit_ == 3) {
+
95  if (display_width_ <= 0 || display_height_ <= 0)
+
96  return scoped_refptr<VideoStreamInfo>();
+
97  } else {
+
98  LOG(ERROR) << "Unsupported display unit type " << display_unit_;
+
99  return scoped_refptr<VideoStreamInfo>();
+
100  }
+
101  // Calculate sample aspect ratio.
+
102  int64_t sar_x = display_width_ * height_after_crop;
+
103  int64_t sar_y = display_height_ * width_after_crop;
+
104  int64_t gcd = GetGreatestCommonDivisor(sar_x, sar_y);
+
105  sar_x /= gcd;
+
106  sar_y /= gcd;
+
107 
+
108  return scoped_refptr<VideoStreamInfo>(new VideoStreamInfo(
+
109  track_num, kWebMTimeScale, 0, video_codec, std::string(), std::string(),
+
110  width_after_crop, height_after_crop, sar_x, sar_y, 0, 0, NULL, 0,
+
111  is_encrypted));
+
112 }
+
113 
+
114 bool WebMVideoClient::OnUInt(int id, int64_t val) {
+
115  int64_t* dst = NULL;
+
116 
+
117  switch (id) {
+
118  case kWebMIdPixelWidth:
+
119  dst = &pixel_width_;
+
120  break;
+
121  case kWebMIdPixelHeight:
+
122  dst = &pixel_height_;
+
123  break;
+
124  case kWebMIdPixelCropTop:
+
125  dst = &crop_top_;
+
126  break;
+
127  case kWebMIdPixelCropBottom:
+
128  dst = &crop_bottom_;
+
129  break;
+
130  case kWebMIdPixelCropLeft:
+
131  dst = &crop_left_;
+
132  break;
+
133  case kWebMIdPixelCropRight:
+
134  dst = &crop_right_;
+
135  break;
+
136  case kWebMIdDisplayWidth:
+
137  dst = &display_width_;
+
138  break;
+
139  case kWebMIdDisplayHeight:
+
140  dst = &display_height_;
+
141  break;
+
142  case kWebMIdDisplayUnit:
+
143  dst = &display_unit_;
+
144  break;
+
145  case kWebMIdAlphaMode:
+
146  dst = &alpha_mode_;
+
147  break;
+
148  default:
+
149  return true;
+
150  }
+
151 
+
152  if (*dst != -1) {
+
153  LOG(ERROR) << "Multiple values for id " << std::hex << id << " specified ("
+
154  << *dst << " and " << val << ")";
+
155  return false;
+
156  }
+
157 
+
158  *dst = val;
+
159  return true;
+
160 }
+
161 
+
162 bool WebMVideoClient::OnBinary(int id, const uint8_t* data, int size) {
+
163  // Accept binary fields we don't care about for now.
+
164  return true;
+
165 }
+
166 
+
167 bool WebMVideoClient::OnFloat(int id, double val) {
+
168  // Accept float fields we don't care about for now.
+
169  return true;
+
170 }
+
171 
+
172 } // namespace media
+
173 } // 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.
-
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 d352bca677..3244cba7fe 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 @@ -93,15 +93,18 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');

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

- - - - - + + + + + + + +
BitReader(const uint8_t *data, off_t size)edash_packager::media::BitReader
bits_available() const edash_packager::media::BitReader
ReadBits(int num_bits, T *out)edash_packager::media::BitReaderinline
SkipBits(int num_bits)edash_packager::media::BitReader
~BitReader() (defined in edash_packager::media::BitReader)edash_packager::media::BitReader
bit_position() const edash_packager::media::BitReaderinline
BitReader(const uint8_t *data, off_t size)edash_packager::media::BitReader
bits_available() const edash_packager::media::BitReaderinline
ReadBits(int num_bits, T *out)edash_packager::media::BitReaderinline
SkipBits(int num_bits)edash_packager::media::BitReader
SkipBitsConditional(bool condition, int num_bits)edash_packager::media::BitReaderinline
SkipBytes(int num_bytes)edash_packager::media::BitReader
~BitReader() (defined in edash_packager::media::BitReader)edash_packager::media::BitReader
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 c96a3127ed..547ba671b9 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 @@ -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 45ea04b172..f300bfc60e 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 8e53d61893..2ef278640a 100644 --- a/docs/d1/d86/classedash__packager_1_1media_1_1RsaPublicKey.html +++ b/docs/d1/d86/classedash__packager_1_1media_1_1RsaPublicKey.html @@ -218,7 +218,7 @@ Static Public Member Functions diff --git a/docs/d1/d86/structedash__packager_1_1media_1_1mp4_1_1SubtitleMediaHeader.html b/docs/d1/d86/structedash__packager_1_1media_1_1mp4_1_1SubtitleMediaHeader.html index 2d70538a04..c428311e15 100644 --- a/docs/d1/d86/structedash__packager_1_1media_1_1mp4_1_1SubtitleMediaHeader.html +++ b/docs/d1/d86/structedash__packager_1_1media_1_1mp4_1_1SubtitleMediaHeader.html @@ -173,7 +173,7 @@ uint32_t flags diff --git a/docs/d1/d8e/structedash__packager_1_1media_1_1mp4_1_1CompositionTimeToSample-members.html b/docs/d1/d8e/structedash__packager_1_1media_1_1mp4_1_1CompositionTimeToSample-members.html index 3f656ad54e..23228e7868 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 @@ -112,7 +112,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 003efa498f..b53806f4b9 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 37fb26e699..d38ce65847 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 05819d5ef7..c8725c1648 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 362e4d9277..44d6b54eb9 100644 --- a/docs/d1/dc3/classedash__packager_1_1media_1_1LocalFile-members.html +++ b/docs/d1/dc3/classedash__packager_1_1media_1_1LocalFile-members.html @@ -117,7 +117,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/dcb/encrypting__fragmenter_8h_source.html b/docs/d1/dcb/encrypting__fragmenter_8h_source.html index 4e16ca68f0..1d7eabb00b 100644 --- a/docs/d1/dcb/encrypting__fragmenter_8h_source.html +++ b/docs/d1/dcb/encrypting__fragmenter_8h_source.html @@ -96,82 +96,92 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
7 #ifndef MEDIA_FORMATS_MP4_ENCRYPTING_FRAGMENTER_H_
8 #define MEDIA_FORMATS_MP4_ENCRYPTING_FRAGMENTER_H_
9 
-
10 #include "packager/media/formats/mp4/fragmenter.h"
-
11 
-
12 namespace edash_packager {
-
13 namespace media {
-
14 
-
15 class AesCtrEncryptor;
-
16 struct EncryptionKey;
-
17 
-
18 namespace mp4 {
+
10 #include "packager/base/memory/scoped_ptr.h"
+
11 #include "packager/media/filters/vpx_parser.h"
+
12 #include "packager/media/formats/mp4/fragmenter.h"
+
13 
+
14 namespace edash_packager {
+
15 namespace media {
+
16 
+
17 class AesCtrEncryptor;
+
18 struct EncryptionKey;
19 
- -
22  public:
- -
30  scoped_ptr<EncryptionKey> encryption_key,
-
31  int64_t clear_time,
-
32  uint8_t nalu_length_size);
-
33 
-
34  ~EncryptingFragmenter() override;
-
35 
-
38  Status AddSample(scoped_refptr<MediaSample> sample) override;
-
39  Status InitializeFragment(int64_t first_sample_dts) override;
-
40  void FinalizeFragment() override;
-
42 
-
43  protected:
-
46  virtual Status PrepareFragmentForEncryption(bool enable_encryption);
-
48  virtual void FinalizeFragmentForEncryption();
-
49 
- -
54 
-
55  EncryptionKey* encryption_key() { return encryption_key_.get(); }
-
56  AesCtrEncryptor* encryptor() { return encryptor_.get(); }
-
57 
-
58  void set_encryption_key(scoped_ptr<EncryptionKey> encryption_key) {
-
59  encryption_key_ = encryption_key.Pass();
-
60  }
-
61 
-
62  private:
-
63  void EncryptBytes(uint8_t* data, uint32_t size);
-
64  Status EncryptSample(scoped_refptr<MediaSample> sample);
-
65 
-
66  // Should we enable subsample encryption?
-
67  bool IsSubsampleEncryptionRequired() { return nalu_length_size_ != 0; }
-
68 
-
69  scoped_ptr<EncryptionKey> encryption_key_;
-
70  scoped_ptr<AesCtrEncryptor> encryptor_;
-
71  // If this stream contains AVC, subsample encryption specifies that the size
-
72  // and type of NAL units remain unencrypted. This field specifies the size of
-
73  // the size field. Can be 1, 2 or 4 bytes.
-
74  const uint8_t nalu_length_size_;
-
75  int64_t clear_time_;
+
20 namespace mp4 {
+
21 
+ +
24  public:
+ +
35  scoped_ptr<EncryptionKey> encryption_key,
+
36  int64_t clear_time,
+
37  VideoCodec video_codec,
+
38  uint8_t nalu_length_size);
+
39 
+
40  ~EncryptingFragmenter() override;
+
41 
+
44  Status AddSample(scoped_refptr<MediaSample> sample) override;
+
45  Status InitializeFragment(int64_t first_sample_dts) override;
+
46  void FinalizeFragment() override;
+
48 
+
49  protected:
+
52  virtual Status PrepareFragmentForEncryption(bool enable_encryption);
+
54  virtual void FinalizeFragmentForEncryption();
+
55 
+ +
60 
+
61  EncryptionKey* encryption_key() { return encryption_key_.get(); }
+
62  AesCtrEncryptor* encryptor() { return encryptor_.get(); }
+
63 
+
64  void set_encryption_key(scoped_ptr<EncryptionKey> encryption_key) {
+
65  encryption_key_ = encryption_key.Pass();
+
66  }
+
67 
+
68  private:
+
69  void EncryptBytes(uint8_t* data, uint32_t size);
+
70  Status EncryptSample(scoped_refptr<MediaSample> sample);
+
71 
+
72  // Should we enable subsample encryption?
+
73  bool IsSubsampleEncryptionRequired() {
+
74  return vpx_parser_ || nalu_length_size_ != 0;
+
75  }
76 
-
77  DISALLOW_COPY_AND_ASSIGN(EncryptingFragmenter);
-
78 };
-
79 
-
80 } // namespace mp4
-
81 } // namespace media
-
82 } // namespace edash_packager
-
83 
-
84 #endif // MEDIA_FORMATS_MP4_ENCRYPTING_FRAGMENTER_H_
+
77  scoped_ptr<EncryptionKey> encryption_key_;
+
78  scoped_ptr<AesCtrEncryptor> encryptor_;
+
79  // For VP8/VP9, uncompressed_header should not be encrypted; for AVC/HEVC,
+
80  // the size and type NAL units should not be encrypted.
+
81  VideoCodec video_codec_;
+
82  // If this stream contains AVC, subsample encryption specifies that the size
+
83  // and type of NAL units remain unencrypted. This field specifies the size of
+
84  // the size field. Can be 1, 2 or 4 bytes.
+
85  const uint8_t nalu_length_size_;
+
86  int64_t clear_time_;
+
87 
+
88  scoped_ptr<VPxParser> vpx_parser_;
+
89 
+
90  DISALLOW_COPY_AND_ASSIGN(EncryptingFragmenter);
+
91 };
+
92 
+
93 } // namespace mp4
+
94 } // namespace media
+
95 } // namespace edash_packager
+
96 
+
97 #endif // MEDIA_FORMATS_MP4_ENCRYPTING_FRAGMENTER_H_
+
EncryptingFragmenter(TrackFragment *traf, scoped_ptr< EncryptionKey > encryption_key, int64_t clear_time, VideoCodec video_codec, uint8_t nalu_length_size)
- -
EncryptingFragmenter generates MP4 fragments with sample encrypted.
+ +
EncryptingFragmenter generates MP4 fragments with sample encrypted.
-
Status InitializeFragment(int64_t first_sample_dts) override
-
Status AddSample(scoped_refptr< MediaSample > sample) override
+
Status InitializeFragment(int64_t first_sample_dts) override
+
Status AddSample(scoped_refptr< MediaSample > sample) override
-
void FinalizeFragment() override
Finalize and optimize the fragment.
+
void FinalizeFragment() override
Finalize and optimize the fragment.
-
virtual Status PrepareFragmentForEncryption(bool enable_encryption)
-
EncryptingFragmenter(TrackFragment *traf, scoped_ptr< EncryptionKey > encryption_key, int64_t clear_time, uint8_t nalu_length_size)
-
virtual void FinalizeFragmentForEncryption()
Finalize current fragment for encryption.
+
virtual Status PrepareFragmentForEncryption(bool enable_encryption)
+
virtual void FinalizeFragmentForEncryption()
Finalize current fragment for encryption.
diff --git a/docs/d1/dcd/structedash__packager_1_1media_1_1mp4_1_1FileType.html b/docs/d1/dcd/structedash__packager_1_1media_1_1mp4_1_1FileType.html index 579fdc2a2d..a520c1ab80 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 @@ -180,7 +180,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 62d9d312de..b4a658e495 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 @@ -114,7 +114,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 10b51cb2d3..8c20654c2a 100644 --- a/docs/d1/dd5/classedash__packager_1_1xml_1_1RepresentationBaseXmlNode.html +++ b/docs/d1/dd5/classedash__packager_1_1xml_1_1RepresentationBaseXmlNode.html @@ -156,7 +156,7 @@ Protected Member Functions diff --git a/docs/d1/ddc/classedash__packager_1_1media_1_1VP9Parser-members.html b/docs/d1/ddc/classedash__packager_1_1media_1_1VP9Parser-members.html index 907f8b7392..995044f5cf 100644 --- a/docs/d1/ddc/classedash__packager_1_1media_1_1VP9Parser-members.html +++ b/docs/d1/ddc/classedash__packager_1_1media_1_1VP9Parser-members.html @@ -93,14 +93,18 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');

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

- - - - + + + + + + + +
codec_config()edash_packager::media::VP9Parserinline
Parse(const uint8_t *data, size_t data_size, std::vector< VPxFrameInfo > *vpx_frames)edash_packager::media::VP9Parser
VP9Parser() (defined in edash_packager::media::VP9Parser)edash_packager::media::VP9Parser
~VP9Parser() (defined in edash_packager::media::VP9Parser)edash_packager::media::VP9Parser
codec_config() const edash_packager::media::VPxParserinline
IsKeyframe(const uint8_t *data, size_t data_size)edash_packager::media::VP9Parserstatic
Parse(const uint8_t *data, size_t data_size, std::vector< VPxFrameInfo > *vpx_frames) overrideedash_packager::media::VP9Parservirtual
VP9Parser() (defined in edash_packager::media::VP9Parser)edash_packager::media::VP9Parser
VPxParser() (defined in edash_packager::media::VPxParser)edash_packager::media::VPxParserinline
writable_codec_config() (defined in edash_packager::media::VPxParser)edash_packager::media::VPxParserinlineprotected
~VP9Parser() override (defined in edash_packager::media::VP9Parser)edash_packager::media::VP9Parser
~VPxParser() (defined in edash_packager::media::VPxParser)edash_packager::media::VPxParserinlinevirtual
diff --git a/docs/d1/de2/composition__offset__iterator_8cc_source.html b/docs/d1/de2/composition__offset__iterator_8cc_source.html index 9c57441771..457cf825bf 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 169069db82..460ea694d1 100644 --- a/docs/d1/df0/aes__encryptor_8h_source.html +++ b/docs/d1/df0/aes__encryptor_8h_source.html @@ -305,7 +305,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/df2/structedash__packager_1_1media_1_1mp4_1_1CueSettingsBox.html b/docs/d1/df2/structedash__packager_1_1media_1_1mp4_1_1CueSettingsBox.html index 9417d3bd1d..82f37afad9 100644 --- a/docs/d1/df2/structedash__packager_1_1media_1_1mp4_1_1CueSettingsBox.html +++ b/docs/d1/df2/structedash__packager_1_1media_1_1mp4_1_1CueSettingsBox.html @@ -171,7 +171,7 @@ Additional Inherited Members diff --git a/docs/d1/dfc/structedash__packager_1_1media_1_1wvm_1_1DemuxStreamIdMediaSample-members.html b/docs/d1/dfc/structedash__packager_1_1media_1_1wvm_1_1DemuxStreamIdMediaSample-members.html index 615b1f5720..0b0e501e26 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 b01d5c273f..1135646fa5 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 2397187dae..af62a2f002 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 @@ -112,7 +112,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 6502c57745..5f98b1d30e 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 367ec326ff..16191ac54f 100644 --- a/docs/d2/d23/threaded__io__file_8cc_source.html +++ b/docs/d2/d23/threaded__io__file_8cc_source.html @@ -317,7 +317,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 c6cdc50fed..67d14d8ceb 100644 --- a/docs/d2/d24/packager__util_8h_source.html +++ b/docs/d2/d24/packager__util_8h_source.html @@ -142,7 +142,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d26/structedash__packager_1_1media_1_1mp4_1_1SampleGroupDescription.html b/docs/d2/d26/structedash__packager_1_1media_1_1mp4_1_1SampleGroupDescription.html index 8a79c74ed9..0dfcafe09a 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 @@ -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 e7f36fdd46..e6ead9b60e 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 @@ -116,7 +116,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 4955ddf4a5..b05396b0a2 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 f2798fcdf5..ea4e233f21 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 a730786654..14da371e43 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 ee153cd136..74469cde77 100644 --- a/docs/d2/d4d/file_8h_source.html +++ b/docs/d2/d4d/file_8h_source.html @@ -190,7 +190,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d50/structedash__packager_1_1media_1_1H264DecRefPicMarking.html b/docs/d2/d50/structedash__packager_1_1media_1_1H264DecRefPicMarking.html index f0e04e05f0..e3b3d0237f 100644 --- a/docs/d2/d50/structedash__packager_1_1media_1_1H264DecRefPicMarking.html +++ b/docs/d2/d50/structedash__packager_1_1media_1_1H264DecRefPicMarking.html @@ -121,7 +121,7 @@ int max_long_term_frame_id diff --git a/docs/d2/d51/classedash__packager_1_1media_1_1WebVttMediaParser.html b/docs/d2/d51/classedash__packager_1_1media_1_1WebVttMediaParser.html index a28d43bb01..7a46996427 100644 --- a/docs/d2/d51/classedash__packager_1_1media_1_1WebVttMediaParser.html +++ b/docs/d2/d51/classedash__packager_1_1media_1_1WebVttMediaParser.html @@ -255,7 +255,7 @@ track_id, const scoped_refptr
diff --git a/docs/d2/d51/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize.html b/docs/d2/d51/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize.html index 55fc45af2e..5b6e5b5536 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 @@ -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 c8b63840ab..d85356af4b 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 45da7db6bf..24f5b34100 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 @@ -115,7 +115,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 053399b50e..981c6595fa 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 8c27153fe7..c6f654f6ec 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 dfba62fc85..7625af2a87 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 @@ -171,7 +171,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 84bfd78728..0781877ced 100644 --- a/docs/d2/d7b/simple__mpd__notifier_8cc_source.html +++ b/docs/d2/d7b/simple__mpd__notifier_8cc_source.html @@ -242,7 +242,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d7e/aac__audio__specific__config_8h_source.html b/docs/d2/d7e/aac__audio__specific__config_8h_source.html index a8cf177527..53cd35001c 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 b1802a4a11..500f4d0130 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 534fd85100..7ced0fb82d 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 c7b62b3d34..f7359a403b 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 32b1ba6c6f..a7a523e795 100644 --- a/docs/d2/da6/threaded__io__file_8h_source.html +++ b/docs/d2/da6/threaded__io__file_8h_source.html @@ -171,7 +171,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/da8/mp4_2segmenter_8cc_source.html b/docs/d2/da8/mp4_2segmenter_8cc_source.html index 8a9ef5b913..7bd5f8bea6 100644 --- a/docs/d2/da8/mp4_2segmenter_8cc_source.html +++ b/docs/d2/da8/mp4_2segmenter_8cc_source.html @@ -178,344 +178,348 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
89  }
90 }
91 
-
92 uint8_t GetNaluLengthSize(const StreamInfo& stream_info) {
+
92 VideoCodec GetVideoCodec(const StreamInfo& stream_info) {
93  if (stream_info.stream_type() != kStreamVideo)
-
94  return 0;
+
94  return kUnknownVideoCodec;
95  const VideoStreamInfo& video_stream_info =
96  static_cast<const VideoStreamInfo&>(stream_info);
-
97  return video_stream_info.nalu_length_size();
+
97  return video_stream_info.codec();
98 }
99 
-
100 KeySource::TrackType GetTrackTypeForEncryption(const StreamInfo& stream_info,
-
101  uint32_t max_sd_pixels) {
-
102  if (stream_info.stream_type() == kStreamAudio)
-
103  return KeySource::TRACK_TYPE_AUDIO;
-
104 
-
105  DCHECK_EQ(kStreamVideo, stream_info.stream_type());
-
106  const VideoStreamInfo& video_stream_info =
-
107  static_cast<const VideoStreamInfo&>(stream_info);
-
108  uint32_t pixels = video_stream_info.width() * video_stream_info.height();
-
109  return (pixels > max_sd_pixels) ? KeySource::TRACK_TYPE_HD
-
110  : KeySource::TRACK_TYPE_SD;
-
111 }
+
100 uint8_t GetNaluLengthSize(const StreamInfo& stream_info) {
+
101  if (stream_info.stream_type() != kStreamVideo)
+
102  return 0;
+
103  const VideoStreamInfo& video_stream_info =
+
104  static_cast<const VideoStreamInfo&>(stream_info);
+
105  return video_stream_info.nalu_length_size();
+
106 }
+
107 
+
108 KeySource::TrackType GetTrackTypeForEncryption(const StreamInfo& stream_info,
+
109  uint32_t max_sd_pixels) {
+
110  if (stream_info.stream_type() == kStreamAudio)
+
111  return KeySource::TRACK_TYPE_AUDIO;
112 
-
113 } // namespace
-
114 
-
115 Segmenter::Segmenter(const MuxerOptions& options,
-
116  scoped_ptr<FileType> ftyp,
-
117  scoped_ptr<Movie> moov)
-
118  : options_(options),
-
119  ftyp_(ftyp.Pass()),
-
120  moov_(moov.Pass()),
-
121  moof_(new MovieFragment()),
-
122  fragment_buffer_(new BufferWriter()),
-
123  sidx_(new SegmentIndex()),
-
124  muxer_listener_(NULL),
-
125  progress_listener_(NULL),
-
126  progress_target_(0),
-
127  accumulated_progress_(0),
-
128  sample_duration_(0u) {}
-
129 
-
130 Segmenter::~Segmenter() { STLDeleteElements(&fragmenters_); }
-
131 
-
132 Status Segmenter::Initialize(const std::vector<MediaStream*>& streams,
-
133  MuxerListener* muxer_listener,
-
134  ProgressListener* progress_listener,
-
135  KeySource* encryption_key_source,
-
136  uint32_t max_sd_pixels,
-
137  double clear_lead_in_seconds,
-
138  double crypto_period_duration_in_seconds) {
-
139  DCHECK_LT(0u, streams.size());
-
140  muxer_listener_ = muxer_listener;
-
141  progress_listener_ = progress_listener;
-
142  moof_->header.sequence_number = 0;
-
143 
-
144  moof_->tracks.resize(streams.size());
-
145  segment_durations_.resize(streams.size());
-
146  fragmenters_.resize(streams.size());
-
147  const bool key_rotation_enabled = crypto_period_duration_in_seconds != 0;
-
148  const bool kInitialEncryptionInfo = true;
-
149 
-
150  for (uint32_t i = 0; i < streams.size(); ++i) {
-
151  stream_map_[streams[i]] = i;
-
152  moof_->tracks[i].header.track_id = i + 1;
-
153  if (streams[i]->info()->stream_type() == kStreamVideo) {
-
154  // Use the first video stream as the reference stream (which is 1-based).
-
155  if (sidx_->reference_id == 0)
-
156  sidx_->reference_id = i + 1;
-
157  }
-
158  if (!encryption_key_source) {
-
159  fragmenters_[i] = new Fragmenter(&moof_->tracks[i]);
-
160  continue;
-
161  }
-
162 
-
163  uint8_t nalu_length_size = GetNaluLengthSize(*streams[i]->info());
-
164  KeySource::TrackType track_type =
-
165  GetTrackTypeForEncryption(*streams[i]->info(), max_sd_pixels);
-
166  SampleDescription& description =
-
167  moov_->tracks[i].media.information.sample_table.description;
-
168 
-
169  if (key_rotation_enabled) {
-
170  // Fill encrypted sample entry with default key.
-
171  EncryptionKey encryption_key;
-
172  encryption_key.key_id.assign(
-
173  kKeyRotationDefaultKeyId,
-
174  kKeyRotationDefaultKeyId + arraysize(kKeyRotationDefaultKeyId));
-
175  GenerateEncryptedSampleEntry(encryption_key, clear_lead_in_seconds,
-
176  &description);
-
177  if (muxer_listener_) {
-
178  muxer_listener_->OnEncryptionInfoReady(
-
179  kInitialEncryptionInfo, encryption_key_source->UUID(),
-
180  encryption_key_source->SystemName(), encryption_key.key_id,
-
181  std::vector<uint8_t>());
-
182  }
-
183 
-
184  fragmenters_[i] = new KeyRotationFragmenter(
-
185  moof_.get(),
-
186  &moof_->tracks[i],
-
187  encryption_key_source,
-
188  track_type,
-
189  crypto_period_duration_in_seconds * streams[i]->info()->time_scale(),
-
190  clear_lead_in_seconds * streams[i]->info()->time_scale(),
-
191  nalu_length_size,
-
192  muxer_listener_);
-
193  continue;
-
194  }
-
195 
-
196  scoped_ptr<EncryptionKey> encryption_key(new EncryptionKey());
-
197  Status status =
-
198  encryption_key_source->GetKey(track_type, encryption_key.get());
-
199  if (!status.ok())
-
200  return status;
-
201 
-
202  GenerateEncryptedSampleEntry(*encryption_key, clear_lead_in_seconds,
-
203  &description);
-
204 
-
205  // One and only one pssh box is needed.
-
206  if (moov_->pssh.empty()) {
-
207  moov_->pssh.resize(1);
-
208  moov_->pssh[0].raw_box = encryption_key->pssh;
+
113  DCHECK_EQ(kStreamVideo, stream_info.stream_type());
+
114  const VideoStreamInfo& video_stream_info =
+
115  static_cast<const VideoStreamInfo&>(stream_info);
+
116  uint32_t pixels = video_stream_info.width() * video_stream_info.height();
+
117  return (pixels > max_sd_pixels) ? KeySource::TRACK_TYPE_HD
+
118  : KeySource::TRACK_TYPE_SD;
+
119 }
+
120 
+
121 } // namespace
+
122 
+
123 Segmenter::Segmenter(const MuxerOptions& options,
+
124  scoped_ptr<FileType> ftyp,
+
125  scoped_ptr<Movie> moov)
+
126  : options_(options),
+
127  ftyp_(ftyp.Pass()),
+
128  moov_(moov.Pass()),
+
129  moof_(new MovieFragment()),
+
130  fragment_buffer_(new BufferWriter()),
+
131  sidx_(new SegmentIndex()),
+
132  muxer_listener_(NULL),
+
133  progress_listener_(NULL),
+
134  progress_target_(0),
+
135  accumulated_progress_(0),
+
136  sample_duration_(0u) {}
+
137 
+
138 Segmenter::~Segmenter() { STLDeleteElements(&fragmenters_); }
+
139 
+
140 Status Segmenter::Initialize(const std::vector<MediaStream*>& streams,
+
141  MuxerListener* muxer_listener,
+
142  ProgressListener* progress_listener,
+
143  KeySource* encryption_key_source,
+
144  uint32_t max_sd_pixels,
+
145  double clear_lead_in_seconds,
+
146  double crypto_period_duration_in_seconds) {
+
147  DCHECK_LT(0u, streams.size());
+
148  muxer_listener_ = muxer_listener;
+
149  progress_listener_ = progress_listener;
+
150  moof_->header.sequence_number = 0;
+
151 
+
152  moof_->tracks.resize(streams.size());
+
153  segment_durations_.resize(streams.size());
+
154  fragmenters_.resize(streams.size());
+
155  const bool key_rotation_enabled = crypto_period_duration_in_seconds != 0;
+
156  const bool kInitialEncryptionInfo = true;
+
157 
+
158  for (uint32_t i = 0; i < streams.size(); ++i) {
+
159  stream_map_[streams[i]] = i;
+
160  moof_->tracks[i].header.track_id = i + 1;
+
161  if (streams[i]->info()->stream_type() == kStreamVideo) {
+
162  // Use the first video stream as the reference stream (which is 1-based).
+
163  if (sidx_->reference_id == 0)
+
164  sidx_->reference_id = i + 1;
+
165  }
+
166  if (!encryption_key_source) {
+
167  fragmenters_[i] = new Fragmenter(&moof_->tracks[i]);
+
168  continue;
+
169  }
+
170 
+
171  VideoCodec video_codec = GetVideoCodec(*streams[i]->info());
+
172  uint8_t nalu_length_size = GetNaluLengthSize(*streams[i]->info());
+
173  KeySource::TrackType track_type =
+
174  GetTrackTypeForEncryption(*streams[i]->info(), max_sd_pixels);
+
175  SampleDescription& description =
+
176  moov_->tracks[i].media.information.sample_table.description;
+
177 
+
178  if (key_rotation_enabled) {
+
179  // Fill encrypted sample entry with default key.
+
180  EncryptionKey encryption_key;
+
181  encryption_key.key_id.assign(
+
182  kKeyRotationDefaultKeyId,
+
183  kKeyRotationDefaultKeyId + arraysize(kKeyRotationDefaultKeyId));
+
184  GenerateEncryptedSampleEntry(encryption_key, clear_lead_in_seconds,
+
185  &description);
+
186  if (muxer_listener_) {
+
187  muxer_listener_->OnEncryptionInfoReady(
+
188  kInitialEncryptionInfo, encryption_key_source->UUID(),
+
189  encryption_key_source->SystemName(), encryption_key.key_id,
+
190  std::vector<uint8_t>());
+
191  }
+
192 
+
193  fragmenters_[i] = new KeyRotationFragmenter(
+
194  moof_.get(), &moof_->tracks[i], encryption_key_source, track_type,
+
195  crypto_period_duration_in_seconds * streams[i]->info()->time_scale(),
+
196  clear_lead_in_seconds * streams[i]->info()->time_scale(), video_codec,
+
197  nalu_length_size, muxer_listener_);
+
198  continue;
+
199  }
+
200 
+
201  scoped_ptr<EncryptionKey> encryption_key(new EncryptionKey());
+
202  Status status =
+
203  encryption_key_source->GetKey(track_type, encryption_key.get());
+
204  if (!status.ok())
+
205  return status;
+
206 
+
207  GenerateEncryptedSampleEntry(*encryption_key, clear_lead_in_seconds,
+
208  &description);
209 
-
210  // Also only one default key id.
-
211  if (muxer_listener_) {
-
212  muxer_listener_->OnEncryptionInfoReady(
-
213  kInitialEncryptionInfo,
-
214  encryption_key_source->UUID(), encryption_key_source->SystemName(),
-
215  encryption_key->key_id, encryption_key->pssh);
-
216  }
-
217  }
-
218 
-
219  fragmenters_[i] = new EncryptingFragmenter(
-
220  &moof_->tracks[i],
-
221  encryption_key.Pass(),
-
222  clear_lead_in_seconds * streams[i]->info()->time_scale(),
-
223  nalu_length_size);
-
224  }
-
225 
-
226  // Choose the first stream if there is no VIDEO.
-
227  if (sidx_->reference_id == 0)
-
228  sidx_->reference_id = 1;
-
229  sidx_->timescale = streams[GetReferenceStreamId()]->info()->time_scale();
-
230 
-
231  // Use media duration as progress target.
-
232  progress_target_ = streams[GetReferenceStreamId()]->info()->duration();
-
233 
-
234  // Use the reference stream's time scale as movie time scale.
-
235  moov_->header.timescale = sidx_->timescale;
-
236  moof_->header.sequence_number = 1;
-
237  return DoInitialize();
-
238 }
-
239 
- -
241  for (std::vector<Fragmenter*>::iterator it = fragmenters_.begin();
-
242  it != fragmenters_.end();
-
243  ++it) {
-
244  Status status = FinalizeFragment(true, *it);
-
245  if (!status.ok())
-
246  return status;
-
247  }
-
248 
-
249  // Set tracks and moov durations.
-
250  // Note that the updated moov box will be written to output file for VOD case
-
251  // only.
-
252  for (std::vector<Track>::iterator track = moov_->tracks.begin();
-
253  track != moov_->tracks.end();
-
254  ++track) {
-
255  track->header.duration = Rescale(track->media.header.duration,
-
256  track->media.header.timescale,
-
257  moov_->header.timescale);
-
258  if (track->header.duration > moov_->header.duration)
-
259  moov_->header.duration = track->header.duration;
-
260  }
-
261  moov_->extends.header.fragment_duration = moov_->header.duration;
-
262 
-
263  return DoFinalize();
-
264 }
-
265 
- -
267  scoped_refptr<MediaSample> sample) {
-
268  // Find the fragmenter for this stream.
-
269  DCHECK(stream);
-
270  DCHECK(stream_map_.find(stream) != stream_map_.end());
-
271  uint32_t stream_id = stream_map_[stream];
-
272  Fragmenter* fragmenter = fragmenters_[stream_id];
-
273 
-
274  // Set default sample duration if it has not been set yet.
-
275  if (moov_->extends.tracks[stream_id].default_sample_duration == 0) {
-
276  moov_->extends.tracks[stream_id].default_sample_duration =
-
277  sample->duration();
-
278  }
-
279 
-
280  if (fragmenter->fragment_finalized()) {
-
281  return Status(error::FRAGMENT_FINALIZED,
-
282  "Current fragment is finalized already.");
-
283  }
-
284 
-
285  bool finalize_fragment = false;
-
286  if (fragmenter->fragment_duration() >=
-
287  options_.fragment_duration * stream->info()->time_scale()) {
-
288  if (sample->is_key_frame() || !options_.fragment_sap_aligned) {
-
289  finalize_fragment = true;
-
290  }
-
291  }
-
292  bool finalize_segment = false;
-
293  if (segment_durations_[stream_id] >=
-
294  options_.segment_duration * stream->info()->time_scale()) {
-
295  if (sample->is_key_frame() || !options_.segment_sap_aligned) {
-
296  finalize_segment = true;
-
297  finalize_fragment = true;
-
298  }
-
299  }
-
300 
-
301  Status status;
-
302  if (finalize_fragment) {
-
303  status = FinalizeFragment(finalize_segment, fragmenter);
-
304  if (!status.ok())
-
305  return status;
-
306  }
-
307 
-
308  status = fragmenter->AddSample(sample);
-
309  if (!status.ok())
-
310  return status;
+
210  // One and only one pssh box is needed.
+
211  if (moov_->pssh.empty()) {
+
212  moov_->pssh.resize(1);
+
213  moov_->pssh[0].raw_box = encryption_key->pssh;
+
214 
+
215  // Also only one default key id.
+
216  if (muxer_listener_) {
+
217  muxer_listener_->OnEncryptionInfoReady(
+
218  kInitialEncryptionInfo,
+
219  encryption_key_source->UUID(), encryption_key_source->SystemName(),
+
220  encryption_key->key_id, encryption_key->pssh);
+
221  }
+
222  }
+
223 
+
224  fragmenters_[i] = new EncryptingFragmenter(
+
225  &moof_->tracks[i], encryption_key.Pass(),
+
226  clear_lead_in_seconds * streams[i]->info()->time_scale(), video_codec,
+
227  nalu_length_size);
+
228  }
+
229 
+
230  // Choose the first stream if there is no VIDEO.
+
231  if (sidx_->reference_id == 0)
+
232  sidx_->reference_id = 1;
+
233  sidx_->timescale = streams[GetReferenceStreamId()]->info()->time_scale();
+
234 
+
235  // Use media duration as progress target.
+
236  progress_target_ = streams[GetReferenceStreamId()]->info()->duration();
+
237 
+
238  // Use the reference stream's time scale as movie time scale.
+
239  moov_->header.timescale = sidx_->timescale;
+
240  moof_->header.sequence_number = 1;
+
241  return DoInitialize();
+
242 }
+
243 
+ +
245  for (std::vector<Fragmenter*>::iterator it = fragmenters_.begin();
+
246  it != fragmenters_.end();
+
247  ++it) {
+
248  Status status = FinalizeFragment(true, *it);
+
249  if (!status.ok())
+
250  return status;
+
251  }
+
252 
+
253  // Set tracks and moov durations.
+
254  // Note that the updated moov box will be written to output file for VOD case
+
255  // only.
+
256  for (std::vector<Track>::iterator track = moov_->tracks.begin();
+
257  track != moov_->tracks.end();
+
258  ++track) {
+
259  track->header.duration = Rescale(track->media.header.duration,
+
260  track->media.header.timescale,
+
261  moov_->header.timescale);
+
262  if (track->header.duration > moov_->header.duration)
+
263  moov_->header.duration = track->header.duration;
+
264  }
+
265  moov_->extends.header.fragment_duration = moov_->header.duration;
+
266 
+
267  return DoFinalize();
+
268 }
+
269 
+ +
271  scoped_refptr<MediaSample> sample) {
+
272  // Find the fragmenter for this stream.
+
273  DCHECK(stream);
+
274  DCHECK(stream_map_.find(stream) != stream_map_.end());
+
275  uint32_t stream_id = stream_map_[stream];
+
276  Fragmenter* fragmenter = fragmenters_[stream_id];
+
277 
+
278  // Set default sample duration if it has not been set yet.
+
279  if (moov_->extends.tracks[stream_id].default_sample_duration == 0) {
+
280  moov_->extends.tracks[stream_id].default_sample_duration =
+
281  sample->duration();
+
282  }
+
283 
+
284  if (fragmenter->fragment_finalized()) {
+
285  return Status(error::FRAGMENT_FINALIZED,
+
286  "Current fragment is finalized already.");
+
287  }
+
288 
+
289  bool finalize_fragment = false;
+
290  if (fragmenter->fragment_duration() >=
+
291  options_.fragment_duration * stream->info()->time_scale()) {
+
292  if (sample->is_key_frame() || !options_.fragment_sap_aligned) {
+
293  finalize_fragment = true;
+
294  }
+
295  }
+
296  bool finalize_segment = false;
+
297  if (segment_durations_[stream_id] >=
+
298  options_.segment_duration * stream->info()->time_scale()) {
+
299  if (sample->is_key_frame() || !options_.segment_sap_aligned) {
+
300  finalize_segment = true;
+
301  finalize_fragment = true;
+
302  }
+
303  }
+
304 
+
305  Status status;
+
306  if (finalize_fragment) {
+
307  status = FinalizeFragment(finalize_segment, fragmenter);
+
308  if (!status.ok())
+
309  return status;
+
310  }
311 
-
312  if (sample_duration_ == 0)
-
313  sample_duration_ = sample->duration();
-
314  moov_->tracks[stream_id].media.header.duration += sample->duration();
-
315  segment_durations_[stream_id] += sample->duration();
-
316  DCHECK_GE(segment_durations_[stream_id], fragmenter->fragment_duration());
-
317  return Status::OK;
-
318 }
-
319 
-
320 uint32_t Segmenter::GetReferenceTimeScale() const {
-
321  return moov_->header.timescale;
+
312  status = fragmenter->AddSample(sample);
+
313  if (!status.ok())
+
314  return status;
+
315 
+
316  if (sample_duration_ == 0)
+
317  sample_duration_ = sample->duration();
+
318  moov_->tracks[stream_id].media.header.duration += sample->duration();
+
319  segment_durations_[stream_id] += sample->duration();
+
320  DCHECK_GE(segment_durations_[stream_id], fragmenter->fragment_duration());
+
321  return Status::OK;
322 }
323 
-
324 double Segmenter::GetDuration() const {
-
325  if (moov_->header.timescale == 0) {
-
326  // Handling the case where this is not properly initialized.
-
327  return 0.0;
-
328  }
-
329 
-
330  return static_cast<double>(moov_->header.duration) / moov_->header.timescale;
-
331 }
-
332 
-
333 void Segmenter::UpdateProgress(uint64_t progress) {
-
334  accumulated_progress_ += progress;
-
335 
-
336  if (!progress_listener_) return;
-
337  if (progress_target_ == 0) return;
-
338  // It might happen that accumulated progress exceeds progress_target due to
-
339  // computation errors, e.g. rounding error. Cap it so it never reports > 100%
-
340  // progress.
-
341  if (accumulated_progress_ >= progress_target_) {
-
342  progress_listener_->OnProgress(1.0);
-
343  } else {
-
344  progress_listener_->OnProgress(static_cast<double>(accumulated_progress_) /
-
345  progress_target_);
-
346  }
-
347 }
-
348 
-
349 void Segmenter::SetComplete() {
-
350  if (!progress_listener_) return;
-
351  progress_listener_->OnProgress(1.0);
-
352 }
-
353 
-
354 Status Segmenter::FinalizeSegment() {
-
355  Status status = DoFinalizeSegment();
-
356 
-
357  // Reset segment information to initial state.
-
358  sidx_->references.clear();
-
359  std::vector<uint64_t>::iterator it = segment_durations_.begin();
-
360  for (; it != segment_durations_.end(); ++it)
-
361  *it = 0;
-
362 
-
363  return status;
-
364 }
-
365 
-
366 uint32_t Segmenter::GetReferenceStreamId() {
-
367  DCHECK(sidx_);
-
368  return sidx_->reference_id - 1;
-
369 }
-
370 
-
371 Status Segmenter::FinalizeFragment(bool finalize_segment,
-
372  Fragmenter* fragmenter) {
-
373  fragmenter->FinalizeFragment();
+
324 uint32_t Segmenter::GetReferenceTimeScale() const {
+
325  return moov_->header.timescale;
+
326 }
+
327 
+
328 double Segmenter::GetDuration() const {
+
329  if (moov_->header.timescale == 0) {
+
330  // Handling the case where this is not properly initialized.
+
331  return 0.0;
+
332  }
+
333 
+
334  return static_cast<double>(moov_->header.duration) / moov_->header.timescale;
+
335 }
+
336 
+
337 void Segmenter::UpdateProgress(uint64_t progress) {
+
338  accumulated_progress_ += progress;
+
339 
+
340  if (!progress_listener_) return;
+
341  if (progress_target_ == 0) return;
+
342  // It might happen that accumulated progress exceeds progress_target due to
+
343  // computation errors, e.g. rounding error. Cap it so it never reports > 100%
+
344  // progress.
+
345  if (accumulated_progress_ >= progress_target_) {
+
346  progress_listener_->OnProgress(1.0);
+
347  } else {
+
348  progress_listener_->OnProgress(static_cast<double>(accumulated_progress_) /
+
349  progress_target_);
+
350  }
+
351 }
+
352 
+
353 void Segmenter::SetComplete() {
+
354  if (!progress_listener_) return;
+
355  progress_listener_->OnProgress(1.0);
+
356 }
+
357 
+
358 Status Segmenter::FinalizeSegment() {
+
359  Status status = DoFinalizeSegment();
+
360 
+
361  // Reset segment information to initial state.
+
362  sidx_->references.clear();
+
363  std::vector<uint64_t>::iterator it = segment_durations_.begin();
+
364  for (; it != segment_durations_.end(); ++it)
+
365  *it = 0;
+
366 
+
367  return status;
+
368 }
+
369 
+
370 uint32_t Segmenter::GetReferenceStreamId() {
+
371  DCHECK(sidx_);
+
372  return sidx_->reference_id - 1;
+
373 }
374 
-
375  // Check if all tracks are ready for fragmentation.
-
376  for (std::vector<Fragmenter*>::iterator it = fragmenters_.begin();
-
377  it != fragmenters_.end();
-
378  ++it) {
-
379  if (!(*it)->fragment_finalized())
-
380  return Status::OK;
-
381  }
-
382 
-
383  MediaData mdat;
-
384  // Fill in data offsets. Data offset base is moof size + mdat box size.
-
385  // (mdat is still empty, mdat size is the same as mdat box size).
-
386  uint64_t base = moof_->ComputeSize() + mdat.ComputeSize();
-
387  for (size_t i = 0; i < moof_->tracks.size(); ++i) {
-
388  TrackFragment& traf = moof_->tracks[i];
-
389  Fragmenter* fragmenter = fragmenters_[i];
-
390  if (fragmenter->aux_data()->Size() > 0) {
-
391  traf.auxiliary_offset.offsets[0] += base;
-
392  base += fragmenter->aux_data()->Size();
-
393  }
-
394  traf.runs[0].data_offset += base;
-
395  base += fragmenter->data()->Size();
-
396  }
-
397 
-
398  // Generate segment reference.
-
399  sidx_->references.resize(sidx_->references.size() + 1);
-
400  fragmenters_[GetReferenceStreamId()]->GenerateSegmentReference(
-
401  &sidx_->references[sidx_->references.size() - 1]);
-
402  sidx_->references[sidx_->references.size() - 1].referenced_size = base;
-
403 
-
404  // Write the fragment to buffer.
-
405  moof_->Write(fragment_buffer_.get());
-
406 
-
407  for (size_t i = 0; i < moof_->tracks.size(); ++i) {
-
408  Fragmenter* fragmenter = fragmenters_[i];
-
409  mdat.data_size =
-
410  fragmenter->aux_data()->Size() + fragmenter->data()->Size();
-
411  mdat.WriteHeader(fragment_buffer_.get());
-
412  if (fragmenter->aux_data()->Size()) {
-
413  fragment_buffer_->AppendBuffer(*fragmenter->aux_data());
-
414  }
-
415  fragment_buffer_->AppendBuffer(*fragmenter->data());
-
416  }
-
417 
-
418  // Increase sequence_number for next fragment.
-
419  ++moof_->header.sequence_number;
-
420 
-
421  if (finalize_segment)
-
422  return FinalizeSegment();
-
423 
-
424  return Status::OK;
-
425 }
-
426 
-
427 } // namespace mp4
-
428 } // namespace media
-
429 } // namespace edash_packager
+
375 Status Segmenter::FinalizeFragment(bool finalize_segment,
+
376  Fragmenter* fragmenter) {
+
377  fragmenter->FinalizeFragment();
+
378 
+
379  // Check if all tracks are ready for fragmentation.
+
380  for (std::vector<Fragmenter*>::iterator it = fragmenters_.begin();
+
381  it != fragmenters_.end();
+
382  ++it) {
+
383  if (!(*it)->fragment_finalized())
+
384  return Status::OK;
+
385  }
+
386 
+
387  MediaData mdat;
+
388  // Fill in data offsets. Data offset base is moof size + mdat box size.
+
389  // (mdat is still empty, mdat size is the same as mdat box size).
+
390  uint64_t base = moof_->ComputeSize() + mdat.ComputeSize();
+
391  for (size_t i = 0; i < moof_->tracks.size(); ++i) {
+
392  TrackFragment& traf = moof_->tracks[i];
+
393  Fragmenter* fragmenter = fragmenters_[i];
+
394  if (fragmenter->aux_data()->Size() > 0) {
+
395  traf.auxiliary_offset.offsets[0] += base;
+
396  base += fragmenter->aux_data()->Size();
+
397  }
+
398  traf.runs[0].data_offset += base;
+
399  base += fragmenter->data()->Size();
+
400  }
+
401 
+
402  // Generate segment reference.
+
403  sidx_->references.resize(sidx_->references.size() + 1);
+
404  fragmenters_[GetReferenceStreamId()]->GenerateSegmentReference(
+
405  &sidx_->references[sidx_->references.size() - 1]);
+
406  sidx_->references[sidx_->references.size() - 1].referenced_size = base;
+
407 
+
408  // Write the fragment to buffer.
+
409  moof_->Write(fragment_buffer_.get());
+
410 
+
411  for (size_t i = 0; i < moof_->tracks.size(); ++i) {
+
412  Fragmenter* fragmenter = fragmenters_[i];
+
413  mdat.data_size =
+
414  fragmenter->aux_data()->Size() + fragmenter->data()->Size();
+
415  mdat.WriteHeader(fragment_buffer_.get());
+
416  if (fragmenter->aux_data()->Size()) {
+
417  fragment_buffer_->AppendBuffer(*fragmenter->aux_data());
+
418  }
+
419  fragment_buffer_->AppendBuffer(*fragmenter->data());
+
420  }
+
421 
+
422  // Increase sequence_number for next fragment.
+
423  ++moof_->header.sequence_number;
+
424 
+
425  if (finalize_segment)
+
426  return FinalizeSegment();
+
427 
+
428  return Status::OK;
+
429 }
+
430 
+
431 } // namespace mp4
+
432 } // namespace media
+
433 } // namespace edash_packager
virtual Status GetKey(TrackType track_type, EncryptionKey *key)
Definition: key_source.cc:46
@@ -524,7 +528,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
This class listens to progress updates events.
-
EncryptingFragmenter generates MP4 fragments with sample encrypted.
+
EncryptingFragmenter generates MP4 fragments with sample encrypted.
virtual Status AddSample(scoped_refptr< MediaSample > sample)
Definition: fragmenter.cc:36
@@ -543,7 +547,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/dae/webm__muxer_8cc_source.html b/docs/d2/dae/webm__muxer_8cc_source.html index 968772ae08..136c143be3 100644 --- a/docs/d2/dae/webm__muxer_8cc_source.html +++ b/docs/d2/dae/webm__muxer_8cc_source.html @@ -209,7 +209,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/dc5/structedash__packager_1_1media_1_1mp4_1_1CueSettingsBox-members.html b/docs/d2/dc5/structedash__packager_1_1media_1_1mp4_1_1CueSettingsBox-members.html index 6c7ef25099..3ac69b368b 100644 --- a/docs/d2/dc5/structedash__packager_1_1media_1_1mp4_1_1CueSettingsBox-members.html +++ b/docs/d2/dc5/structedash__packager_1_1media_1_1mp4_1_1CueSettingsBox-members.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/dd6/mkv__writer_8h_source.html b/docs/d2/dd6/mkv__writer_8h_source.html index 60b70bb29e..e923abc089 100644 --- a/docs/d2/dd6/mkv__writer_8h_source.html +++ b/docs/d2/dd6/mkv__writer_8h_source.html @@ -150,7 +150,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/dd9/structedash__packager_1_1media_1_1VideoStreamInfoParameters.html b/docs/d2/dd9/structedash__packager_1_1media_1_1VideoStreamInfoParameters.html index af8c00d784..e21758c66e 100644 --- a/docs/d2/dd9/structedash__packager_1_1media_1_1VideoStreamInfoParameters.html +++ b/docs/d2/dd9/structedash__packager_1_1media_1_1VideoStreamInfoParameters.html @@ -146,7 +146,7 @@ bool is_encrypted diff --git a/docs/d2/dda/vp__codec__configuration_8cc_source.html b/docs/d2/dda/vp__codec__configuration_8cc_source.html index 6a34d83c34..b2bb62fab8 100644 --- a/docs/d2/dda/vp__codec__configuration_8cc_source.html +++ b/docs/d2/dda/vp__codec__configuration_8cc_source.html @@ -217,7 +217,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/de6/packager__main_8cc_source.html b/docs/d2/de6/packager__main_8cc_source.html index e638fe7348..880759cb23 100644 --- a/docs/d2/de6/packager__main_8cc_source.html +++ b/docs/d2/de6/packager__main_8cc_source.html @@ -563,7 +563,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 3cecc48150..6c71972f76 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 e374fe664a..37828d45aa 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 @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/df8/structedash__packager_1_1media_1_1mp4_1_1CueSourceIDBox.html b/docs/d2/df8/structedash__packager_1_1media_1_1mp4_1_1CueSourceIDBox.html index 51beb3bfb7..8b159520ca 100644 --- a/docs/d2/df8/structedash__packager_1_1media_1_1mp4_1_1CueSourceIDBox.html +++ b/docs/d2/df8/structedash__packager_1_1media_1_1mp4_1_1CueSourceIDBox.html @@ -171,7 +171,7 @@ Additional Inherited Members diff --git a/docs/d2/dfa/classedash__packager_1_1RepresentationStateChangeListener.html b/docs/d2/dfa/classedash__packager_1_1RepresentationStateChangeListener.html index b5e1a83367..b906c341ae 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 697ac5fec0..841a1e6d4f 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 3eb882f761..ea4881d505 100644 --- a/docs/d2/dfd/classedash__packager_1_1media_1_1MediaStream.html +++ b/docs/d2/dfd/classedash__packager_1_1media_1_1MediaStream.html @@ -225,7 +225,7 @@ const scoped_refptr< diff --git a/docs/d3/d00/structedash__packager_1_1media_1_1VPxFrameInfo-members.html b/docs/d3/d00/structedash__packager_1_1media_1_1VPxFrameInfo-members.html index 440dc8cd9c..e2a8895479 100644 --- a/docs/d3/d00/structedash__packager_1_1media_1_1VPxFrameInfo-members.html +++ b/docs/d3/d00/structedash__packager_1_1media_1_1VPxFrameInfo-members.html @@ -95,13 +95,13 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); - +
frame_size (defined in edash_packager::media::VPxFrameInfo)edash_packager::media::VPxFrameInfo
height (defined in edash_packager::media::VPxFrameInfo)edash_packager::media::VPxFrameInfo
is_key_frame (defined in edash_packager::media::VPxFrameInfo)edash_packager::media::VPxFrameInfo
is_keyframe (defined in edash_packager::media::VPxFrameInfo)edash_packager::media::VPxFrameInfo
uncompressed_header_size (defined in edash_packager::media::VPxFrameInfo)edash_packager::media::VPxFrameInfo
width (defined in edash_packager::media::VPxFrameInfo)edash_packager::media::VPxFrameInfo
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 9d9d2078cc..fbb62ba204 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 8e521caef1..5034399f9f 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 6c37bfb3df..d2e268bf3b 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 1a1c0f268e..ba25e0d95e 100644 --- a/docs/d3/d19/io__cache_8h_source.html +++ b/docs/d3/d19/io__cache_8h_source.html @@ -162,7 +162,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d1c/structedash__packager_1_1media_1_1mp4_1_1VTTEmptyCueBox.html b/docs/d3/d1c/structedash__packager_1_1media_1_1mp4_1_1VTTEmptyCueBox.html index 2a3f35e97f..bfe0ccf1a2 100644 --- a/docs/d3/d1c/structedash__packager_1_1media_1_1mp4_1_1VTTEmptyCueBox.html +++ b/docs/d3/d1c/structedash__packager_1_1media_1_1mp4_1_1VTTEmptyCueBox.html @@ -164,7 +164,7 @@ Additional Inherited Members diff --git a/docs/d3/d2c/structedash__packager_1_1media_1_1mp4_1_1TrackExtends.html b/docs/d3/d2c/structedash__packager_1_1media_1_1mp4_1_1TrackExtends.html index 38bc50e4a1..27bf09c362 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 @@ -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 40f2dfd42e..15b7f6d721 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 @@ -114,7 +114,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 262939fe43..6ce324b79a 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 86dce78956..9d8d495f20 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 @@ -112,7 +112,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 e5e4feb5d0..9732b5daa0 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 733d39aac8..ef0c283559 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 8d4cb75052..f75b804a33 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 0e4fc91a1e..1bfd66679a 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 94f30b0c3f..d819d0da00 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 a4335ae35e..9a56b0aeea 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 @@ -189,7 +189,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 359ef7b2c8..aec3448f3c 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 d531cb0081..86eba02538 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 @@ -189,7 +189,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 6b821b3a93..7e11322b47 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 ec1444976d..4ec0acbdef 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 11a12b32c1..6a9af7b902 100644 --- a/docs/d3/d8d/webm__audio__client_8h_source.html +++ b/docs/d3/d8d/webm__audio__client_8h_source.html @@ -142,7 +142,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d8e/classedash__packager_1_1media_1_1webm_1_1TwoPassSingleSegmentSegmenter-members.html b/docs/d3/d8e/classedash__packager_1_1media_1_1webm_1_1TwoPassSingleSegmentSegmenter-members.html index 19127418ed..a58e4f4e66 100644 --- a/docs/d3/d8e/classedash__packager_1_1media_1_1webm_1_1TwoPassSingleSegmentSegmenter-members.html +++ b/docs/d3/d8e/classedash__packager_1_1media_1_1webm_1_1TwoPassSingleSegmentSegmenter-members.html @@ -129,7 +129,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d9b/structedash__packager_1_1media_1_1VideoStreamInfoParameters-members.html b/docs/d3/d9b/structedash__packager_1_1media_1_1VideoStreamInfoParameters-members.html index 7b03b2887e..9a918234cb 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 a6e1c8e802..0fd276d5f4 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 a6c69fc0f8..09d4028f13 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 c3f3fc19b6..62a8353889 100644 --- a/docs/d3/db6/webm__parser_8cc_source.html +++ b/docs/d3/db6/webm__parser_8cc_source.html @@ -1068,7 +1068,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/dbc/seek__head_8cc_source.html b/docs/d3/dbc/seek__head_8cc_source.html index 8b4f635c93..1f17ade8b3 100644 --- a/docs/d3/dbc/seek__head_8cc_source.html +++ b/docs/d3/dbc/seek__head_8cc_source.html @@ -215,7 +215,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/dbc/structedash__packager_1_1media_1_1H264WeightingFactors.html b/docs/d3/dbc/structedash__packager_1_1media_1_1H264WeightingFactors.html index 642ea68a73..d342351d18 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 7484f497e0..fbb266166c 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 @@ -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 3fea6e93f1..5889f9f1f1 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 890b1d4756..7ad25866ae 100644 --- a/docs/d3/dbe/demuxer_8cc_source.html +++ b/docs/d3/dbe/demuxer_8cc_source.html @@ -311,7 +311,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/dc0/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset-members.html b/docs/d3/dc0/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset-members.html index 59eb93b9b8..6d643e9a42 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 @@ -112,7 +112,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 042902f8ae..a7f6380b40 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 0645c8dfa3..5fbc643f80 100644 --- a/docs/d3/dd0/classedash__packager_1_1media_1_1mp4_1_1BoxReader-members.html +++ b/docs/d3/dd0/classedash__packager_1_1media_1_1mp4_1_1BoxReader-members.html @@ -128,7 +128,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/de1/structedash__packager_1_1media_1_1mp4_1_1Track.html b/docs/d3/de1/structedash__packager_1_1media_1_1mp4_1_1Track.html index b588f7456e..0994f73b3d 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 @@ -177,7 +177,7 @@ Additional Inherited Members diff --git a/docs/d3/de4/seek__head_8h_source.html b/docs/d3/de4/seek__head_8h_source.html index aa62edfc93..4c159fd15b 100644 --- a/docs/d3/de4/seek__head_8h_source.html +++ b/docs/d3/de4/seek__head_8h_source.html @@ -140,7 +140,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/de7/structedash__packager_1_1media_1_1OnMediaEndParameters.html b/docs/d3/de7/structedash__packager_1_1media_1_1OnMediaEndParameters.html index a6bded0ee3..1e54f03d14 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 c7c246b425..a2a1875a9c 100644 --- a/docs/d3/df1/box__reader_8cc_source.html +++ b/docs/d3/df1/box__reader_8cc_source.html @@ -296,7 +296,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/dfa/classedash__packager_1_1MpdBuilder.html b/docs/d3/dfa/classedash__packager_1_1MpdBuilder.html index 373ac0360c..b17b95b2da 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 452bd046ca..2924cffa75 100644 --- a/docs/d3/dfa/structedash__packager_1_1media_1_1H264SliceHeader-members.html +++ b/docs/d3/dfa/structedash__packager_1_1media_1_1H264SliceHeader-members.html @@ -154,7 +154,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d00/mp4_2multi__segment__segmenter_8cc_source.html b/docs/d4/d00/mp4_2multi__segment__segmenter_8cc_source.html index 84fe40a7bc..6ea4d2214e 100644 --- a/docs/d4/d00/mp4_2multi__segment__segmenter_8cc_source.html +++ b/docs/d4/d00/mp4_2multi__segment__segmenter_8cc_source.html @@ -293,17 +293,17 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
bool GetIndexRange(size_t *offset, size_t *size) override
-
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:333
+
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:337
void Write(BufferWriter *writer)
Definition: box.cc:25
-
void SetComplete()
Set progress to 100%.
Definition: segmenter.cc:349
+
void SetComplete()
Set progress to 100%.
Definition: segmenter.cc:353
bool GetInitRange(size_t *offset, size_t *size) override
virtual void OnSampleDurationReady(uint32_t sample_duration)=0
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 00a262efcf..eaf5c3fce0 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 @@ -110,7 +110,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 ec939e0e0b..3b56ef7d7a 100644 --- a/docs/d4/d1d/classedash__packager_1_1media_1_1Muxer.html +++ b/docs/d4/d1d/classedash__packager_1_1media_1_1Muxer.html @@ -331,7 +331,7 @@ class MediaStream diff --git a/docs/d4/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 2046c5947f..d3ca67b277 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 036b318a38..b97c335112 100644 --- a/docs/d4/d37/io__cache_8cc_source.html +++ b/docs/d4/d37/io__cache_8cc_source.html @@ -253,7 +253,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d3d/structedash__packager_1_1media_1_1mp4_1_1PixelAspectRatio.html b/docs/d4/d3d/structedash__packager_1_1media_1_1mp4_1_1PixelAspectRatio.html index c2aca47584..34448a8dd4 100644 --- a/docs/d4/d3d/structedash__packager_1_1media_1_1mp4_1_1PixelAspectRatio.html +++ b/docs/d4/d3d/structedash__packager_1_1media_1_1mp4_1_1PixelAspectRatio.html @@ -174,7 +174,7 @@ Additional Inherited Members diff --git a/docs/d4/d43/classedash__packager_1_1media_1_1KeyFetcher.html b/docs/d4/d43/classedash__packager_1_1media_1_1KeyFetcher.html index 29f6ed0980..314d4a9152 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 96ff5bc22b..061537f9b7 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 338dc6ca15..8ae275b047 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 @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d72/classedash__packager_1_1media_1_1webm_1_1SingleSegmentSegmenter-members.html b/docs/d4/d72/classedash__packager_1_1media_1_1webm_1_1SingleSegmentSegmenter-members.html index 0ee441ec37..7fff92234d 100644 --- a/docs/d4/d72/classedash__packager_1_1media_1_1webm_1_1SingleSegmentSegmenter-members.html +++ b/docs/d4/d72/classedash__packager_1_1media_1_1webm_1_1SingleSegmentSegmenter-members.html @@ -127,7 +127,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d8c/classedash__packager_1_1media_1_1MkvWriter.html b/docs/d4/d8c/classedash__packager_1_1media_1_1MkvWriter.html index 81ba78a468..643de2d509 100644 --- a/docs/d4/d8c/classedash__packager_1_1media_1_1MkvWriter.html +++ b/docs/d4/d8c/classedash__packager_1_1media_1_1MkvWriter.html @@ -372,7 +372,7 @@ Public Member Functions diff --git a/docs/d4/d8f/structedash__packager_1_1media_1_1mp4_1_1MovieHeader-members.html b/docs/d4/d8f/structedash__packager_1_1media_1_1mp4_1_1MovieHeader-members.html index e7ab7f9f72..88b0cbeaf8 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 @@ -118,7 +118,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 9547b95854..1b3e6950ad 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 d1e55340c3..c2ad793418 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 @@ -171,7 +171,7 @@ Additional Inherited Members diff --git a/docs/d4/d93/structedash__packager_1_1media_1_1H264SEIMessage.html b/docs/d4/d93/structedash__packager_1_1media_1_1H264SEIMessage.html index 5a0c74f6f2..ea1271ab32 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 1c86041866..405b337a9f 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 f114ab4c0f..34a5f16f58 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 7a47f16356..546bd34eed 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 2b34abddaf..ffcfa87e47 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 3065acef22..130dc0d509 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 be180c7510..b54d7bfc9d 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 3817a71a1d..71d930db47 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 @@ -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 93697e359d..fc0dcda8b2 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 0a4bbacda5..7c30a74da5 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 c64a986c49..f7c6b1db05 100644 --- a/docs/d4/dd3/bit__reader_8h_source.html +++ b/docs/d4/dd3/bit__reader_8h_source.html @@ -118,47 +118,67 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
42 
49  bool SkipBits(int num_bits);
50 
-
52  int bits_available() const;
-
53 
-
54  private:
-
55  // Help function used by ReadBits to avoid inlining the bit reading logic.
-
56  bool ReadBitsInternal(int num_bits, uint64_t* out);
-
57 
-
58  // Advance to the next byte, loading it into curr_byte_.
-
59  // If the num_remaining_bits_in_curr_byte_ is 0 after this function returns,
-
60  // the stream has reached the end.
-
61  void UpdateCurrByte();
-
62 
-
63  // Pointer to the next unread (not in curr_byte_) byte in the stream.
-
64  const uint8_t* data_;
-
65 
-
66  // Bytes left in the stream (without the curr_byte_).
-
67  off_t bytes_left_;
-
68 
-
69  // Contents of the current byte; first unread bit starting at position
-
70  // 8 - num_remaining_bits_in_curr_byte_ from MSB.
-
71  uint8_t curr_byte_;
-
72 
-
73  // Number of bits remaining in curr_byte_
-
74  int num_remaining_bits_in_curr_byte_;
-
75 
-
76  private:
-
77  DISALLOW_COPY_AND_ASSIGN(BitReader);
-
78 };
+
60  bool SkipBitsConditional(bool condition, int num_bits) {
+
61  bool condition_read = true;
+
62  if (!ReadBits(1, &condition_read))
+
63  return false;
+
64  return condition_read == condition ? SkipBits(num_bits) : true;
+
65  }
+
66 
+
73  bool SkipBytes(int num_bytes);
+
74 
+
76  int bits_available() const {
+
77  return 8 * bytes_left_ + num_remaining_bits_in_curr_byte_;
+
78  }
79 
-
80 } // namespace media
-
81 } // namespace edash_packager
+
81  int bit_position() const { return 8 * initial_size_ - bits_available(); }
82 
-
83 #endif // MEDIA_BASE_BIT_READER_H_
+
83  private:
+
84  // Help function used by ReadBits to avoid inlining the bit reading logic.
+
85  bool ReadBitsInternal(int num_bits, uint64_t* out);
+
86 
+
87  // Advance to the next byte, loading it into curr_byte_.
+
88  // If the num_remaining_bits_in_curr_byte_ is 0 after this function returns,
+
89  // the stream has reached the end.
+
90  void UpdateCurrByte();
+
91 
+
92  // Pointer to the next unread (not in curr_byte_) byte in the stream.
+
93  const uint8_t* data_;
+
94 
+
95  // Initial size of the input data.
+
96  // TODO(kqyang): Use size_t instead of off_t instead.
+
97  off_t initial_size_;
+
98 
+
99  // Bytes left in the stream (without the curr_byte_).
+
100  off_t bytes_left_;
+
101 
+
102  // Contents of the current byte; first unread bit starting at position
+
103  // 8 - num_remaining_bits_in_curr_byte_ from MSB.
+
104  uint8_t curr_byte_;
+
105 
+
106  // Number of bits remaining in curr_byte_
+
107  int num_remaining_bits_in_curr_byte_;
+
108 
+
109  private:
+
110  DISALLOW_COPY_AND_ASSIGN(BitReader);
+
111 };
+
112 
+
113 } // namespace media
+
114 } // namespace edash_packager
+
115 
+
116 #endif // MEDIA_BASE_BIT_READER_H_
BitReader(const uint8_t *data, off_t size)
Definition: bit_reader.cc:12
bool ReadBits(int num_bits, T *out)
Definition: bit_reader.h:35
- + +
A class to read bit streams.
Definition: bit_reader.h:17
-
bool SkipBits(int num_bits)
Definition: bit_reader.cc:21
+
bool SkipBits(int num_bits)
Definition: bit_reader.cc:24
+
bool SkipBitsConditional(bool condition, int num_bits)
Definition: bit_reader.h:60
+
bool SkipBytes(int num_bytes)
Definition: bit_reader.cc:56
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 d82119240a..1c22aa02ad 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 @@ -192,7 +192,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 2f79388a92..138f2bef34 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 2a04d7aef3..769d208a3d 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 d79f0dce4f..fe408264ad 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 413a08e849..45ee870fc5 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 @@ -114,7 +114,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 eb76a84360..28604ce2a7 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 f3db6ebe47..3974370458 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 6db16b5471..be200b3c61 100644 --- a/docs/d4/dff/webm__media__parser_8cc_source.html +++ b/docs/d4/dff/webm__media__parser_8cc_source.html @@ -270,63 +270,59 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
181  double timecode_scale_in_us = info_parser.timecode_scale() / 1000.0;
182  int64_t duration_in_us = info_parser.duration() * timecode_scale_in_us;
183 
-
184  std::vector<scoped_refptr<StreamInfo>> streams;
-
185  AudioCodec audio_codec = kCodecOpus;
-
186  if (tracks_parser.audio_stream_info()) {
-
187  streams.push_back(tracks_parser.audio_stream_info());
-
188  streams.back()->set_duration(duration_in_us);
-
189  if (streams.back()->is_encrypted())
-
190  OnEncryptedMediaInitData(tracks_parser.audio_encryption_key_id());
-
191  audio_codec = tracks_parser.audio_stream_info()->codec();
-
192  } else {
-
193  VLOG(1) << "No audio track info found.";
-
194  }
-
195 
-
196  if (tracks_parser.video_stream_info()) {
-
197  streams.push_back(tracks_parser.video_stream_info());
-
198  streams.back()->set_duration(duration_in_us);
-
199  if (streams.back()->is_encrypted())
-
200  OnEncryptedMediaInitData(tracks_parser.video_encryption_key_id());
-
201  } else {
-
202  VLOG(1) << "No video track info found.";
-
203  }
-
204 
-
205  init_cb_.Run(streams);
-
206 
-
207  cluster_parser_.reset(new WebMClusterParser(
-
208  info_parser.timecode_scale(), tracks_parser.audio_track_num(),
-
209  tracks_parser.GetAudioDefaultDuration(timecode_scale_in_us),
-
210  tracks_parser.video_track_num(),
-
211  tracks_parser.GetVideoDefaultDuration(timecode_scale_in_us),
-
212  tracks_parser.text_tracks(), tracks_parser.ignored_tracks(),
-
213  tracks_parser.audio_encryption_key_id(),
-
214  tracks_parser.video_encryption_key_id(), audio_codec, new_sample_cb_));
-
215 
-
216  return bytes_parsed;
-
217 }
+
184  scoped_refptr<AudioStreamInfo> audio_stream_info =
+
185  tracks_parser.audio_stream_info();
+
186  if (audio_stream_info) {
+
187  audio_stream_info->set_duration(duration_in_us);
+
188  if (audio_stream_info->is_encrypted())
+
189  OnEncryptedMediaInitData(tracks_parser.audio_encryption_key_id());
+
190  } else {
+
191  VLOG(1) << "No audio track info found.";
+
192  }
+
193 
+
194  scoped_refptr<VideoStreamInfo> video_stream_info =
+
195  tracks_parser.video_stream_info();
+
196  if (video_stream_info) {
+
197  video_stream_info->set_duration(duration_in_us);
+
198  if (video_stream_info->is_encrypted())
+
199  OnEncryptedMediaInitData(tracks_parser.video_encryption_key_id());
+
200  } else {
+
201  VLOG(1) << "No video track info found.";
+
202  }
+
203 
+
204  cluster_parser_.reset(new WebMClusterParser(
+
205  info_parser.timecode_scale(), audio_stream_info, video_stream_info,
+
206  tracks_parser.GetAudioDefaultDuration(timecode_scale_in_us),
+
207  tracks_parser.GetVideoDefaultDuration(timecode_scale_in_us),
+
208  tracks_parser.text_tracks(), tracks_parser.ignored_tracks(),
+
209  tracks_parser.audio_encryption_key_id(),
+
210  tracks_parser.video_encryption_key_id(), new_sample_cb_, init_cb_));
+
211 
+
212  return bytes_parsed;
+
213 }
+
214 
+
215 int WebMMediaParser::ParseCluster(const uint8_t* data, int size) {
+
216  if (!cluster_parser_)
+
217  return -1;
218 
-
219 int WebMMediaParser::ParseCluster(const uint8_t* data, int size) {
-
220  if (!cluster_parser_)
-
221  return -1;
+
219  int bytes_parsed = cluster_parser_->Parse(data, size);
+
220  if (bytes_parsed < 0)
+
221  return bytes_parsed;
222 
-
223  int bytes_parsed = cluster_parser_->Parse(data, size);
-
224  if (bytes_parsed < 0)
-
225  return bytes_parsed;
-
226 
-
227  bool cluster_ended = cluster_parser_->cluster_ended();
-
228  if (cluster_ended) {
-
229  ChangeState(kParsingHeaders);
-
230  }
-
231 
-
232  return bytes_parsed;
+
223  bool cluster_ended = cluster_parser_->cluster_ended();
+
224  if (cluster_ended) {
+
225  ChangeState(kParsingHeaders);
+
226  }
+
227 
+
228  return bytes_parsed;
+
229 }
+
230 
+
231 void WebMMediaParser::OnEncryptedMediaInitData(const std::string& key_id) {
+
232  NOTIMPLEMENTED() << "WebM decryption is not implemented yet.";
233 }
234 
-
235 void WebMMediaParser::OnEncryptedMediaInitData(const std::string& key_id) {
-
236  NOTIMPLEMENTED() << "WebM decryption is not implemented yet.";
-
237 }
-
238 
-
239 } // namespace media
-
240 } // namespace edash_packager
+
235 } // namespace media
+
236 } // namespace edash_packager
bool Parse(const uint8_t *buf, int size) override
void Init(const InitCB &init_cb, const NewSampleCB &new_sample_cb, KeySource *decryption_key_source) override
StreamParser implementation.
@@ -339,7 +335,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d02/classedash__packager_1_1media_1_1ProducerConsumerQueue.html b/docs/d5/d02/classedash__packager_1_1media_1_1ProducerConsumerQueue.html index 429de77cf7..0b2b44d566 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 f84abd065d..19a970b1b0 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 d580286a4c..7ce6ab0da4 100644 --- a/docs/d5/d18/structedash__packager_1_1media_1_1H264NALU-members.html +++ b/docs/d5/d18/structedash__packager_1_1media_1_1H264NALU-members.html @@ -112,7 +112,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d18/structedash__packager_1_1media_1_1mp4_1_1CueIDBox-members.html b/docs/d5/d18/structedash__packager_1_1media_1_1mp4_1_1CueIDBox-members.html index 1081b50021..b19094519b 100644 --- a/docs/d5/d18/structedash__packager_1_1media_1_1mp4_1_1CueIDBox-members.html +++ b/docs/d5/d18/structedash__packager_1_1media_1_1mp4_1_1CueIDBox-members.html @@ -108,7 +108,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 1c07d2bd23..47d8d12f7c 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 ff43435754..df2bac221d 100644 --- a/docs/d5/d1f/classedash__packager_1_1media_1_1BufferReader-members.html +++ b/docs/d5/d1f/classedash__packager_1_1media_1_1BufferReader-members.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d26/classedash__packager_1_1media_1_1MediaParser-members.html b/docs/d5/d26/classedash__packager_1_1media_1_1MediaParser-members.html index 56086eca0e..ae4218536d 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 c73ee8e6e4..27b4762361 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 9fd27cb682..ba3c6e5647 100644 --- a/docs/d5/d30/classedash__packager_1_1media_1_1H264ByteToUnitStreamConverter.html +++ b/docs/d5/d30/classedash__packager_1_1media_1_1H264ByteToUnitStreamConverter.html @@ -192,7 +192,7 @@ static const size_t kUnitS diff --git a/docs/d5/d40/webm_2single__segment__segmenter_8h_source.html b/docs/d5/d40/webm_2single__segment__segmenter_8h_source.html index 3d51ce6151..76520d37ef 100644 --- a/docs/d5/d40/webm_2single__segment__segmenter_8h_source.html +++ b/docs/d5/d40/webm_2single__segment__segmenter_8h_source.html @@ -154,7 +154,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d41/hevc__decoder__configuration_8cc_source.html b/docs/d5/d41/hevc__decoder__configuration_8cc_source.html index d44f1a537c..a5d84911c4 100644 --- a/docs/d5/d41/hevc__decoder__configuration_8cc_source.html +++ b/docs/d5/d41/hevc__decoder__configuration_8cc_source.html @@ -232,7 +232,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d4a/classedash__packager_1_1media_1_1mp2t_1_1TsPacket-members.html b/docs/d5/d4a/classedash__packager_1_1media_1_1mp2t_1_1TsPacket-members.html index 7bc82ddb8d..d93ed08e08 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 881490b65e..b94a7912e6 100644 --- a/docs/d5/d4d/box_8cc_source.html +++ b/docs/d5/d4d/box_8cc_source.html @@ -199,7 +199,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d52/ts__section__pes_8h_source.html b/docs/d5/d52/ts__section__pes_8h_source.html index d15141ba92..91b5c4179b 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 1876366e8f..68b183a6a3 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 7acbc9327e..451c4d145a 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 353f930a59..32b7c914fa 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 3fc95c4e6d..0f0aa1ce47 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 @@ -112,7 +112,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 becf4e561c..ea7245fc07 100644 --- a/docs/d5/d6f/vlog__flags_8cc_source.html +++ b/docs/d5/d6f/vlog__flags_8cc_source.html @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d73/vp__codec__configuration_8h_source.html b/docs/d5/d73/vp__codec__configuration_8h_source.html index 59abdd7652..9b495a4d6a 100644 --- a/docs/d5/d73/vp__codec__configuration_8h_source.html +++ b/docs/d5/d73/vp__codec__configuration_8h_source.html @@ -112,75 +112,79 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
24  COLOR_SPACE_UNSPECIFIED = 0,
25  COLOR_SPACE_BT_601 = 1,
26  COLOR_SPACE_BT_709 = 2,
-
27  COLOR_SPACE_BT_2020_NON_CONSTANT_LUMINANCE = 3,
-
28  COLOR_SPACE_BT_2020_CONSTANT_LUMINANCE = 4,
-
29  COLOR_SPACE_SRGB = 5,
-
30  };
-
31 
-
32  enum ChromaSubsampling {
-
33  CHROMA_420_VERTICAL = 0,
-
34  CHROMA_420_COLLOCATED_WITH_LUMA = 1,
-
35  CHROMA_422 = 2,
-
36  CHROMA_444 = 3,
-
37  CHROMA_440 = 4,
-
38  };
-
39 
- -
41  VPCodecConfiguration(uint8_t profile,
-
42  uint8_t level,
-
43  uint8_t bit_depth,
-
44  uint8_t color_space,
-
45  uint8_t chroma_subsampling,
-
46  uint8_t transfer_function,
-
47  bool video_full_range_flag,
-
48  const std::vector<uint8_t>& codec_initialization_data);
- -
50 
-
53  bool Parse(const std::vector<uint8_t>& data);
-
54 
-
57  void Write(std::vector<uint8_t>* data) const;
-
58 
-
60  std::string GetCodecString(VideoCodec codec) const;
-
61 
-
62  void set_profile(uint8_t profile) { profile_ = profile; }
-
63  void set_level(uint8_t level) { level_ = level; }
-
64  void set_bit_depth(uint8_t bit_depth) { bit_depth_ = bit_depth; }
-
65  void set_color_space(uint8_t color_space) { color_space_ = color_space; }
-
66  void set_chroma_subsampling(uint8_t chroma_subsampling) {
-
67  chroma_subsampling_ = chroma_subsampling;
-
68  }
-
69  void set_transfer_function(uint8_t transfer_function) {
-
70  transfer_function_ = transfer_function;
-
71  }
-
72  void set_video_full_range_flag(bool video_full_range_flag) {
-
73  video_full_range_flag_ = video_full_range_flag;
-
74  }
-
75 
-
76  uint8_t profile() const { return profile_; }
-
77  uint8_t level() const { return level_; }
-
78  uint8_t bit_depth() const { return bit_depth_; }
-
79  uint8_t color_space() const { return color_space_; }
-
80  uint8_t chroma_subsampling() const { return chroma_subsampling_; }
-
81  uint8_t transfer_function() const { return transfer_function_; }
-
82  bool video_full_range_flag() const { return video_full_range_flag_; }
-
83 
-
84  private:
-
85  uint8_t profile_;
-
86  uint8_t level_;
-
87  uint8_t bit_depth_;
-
88  uint8_t color_space_;
-
89  uint8_t chroma_subsampling_;
-
90  uint8_t transfer_function_;
-
91  bool video_full_range_flag_;
-
92  std::vector<uint8_t> codec_initialization_data_;
-
93 
-
94  DISALLOW_COPY_AND_ASSIGN(VPCodecConfiguration);
-
95 };
-
96 
-
97 } // namespace media
-
98 } // namespace edash_packager
-
99 
-
100 #endif // MEDIA_FILTERS_VP_CODEC_CONFIGURATION_H_
+
27  COLOR_SPACE_SMPTE_170 = 3,
+
28  COLOR_SPACE_SMPTE_240 = 4,
+
29  COLOR_SPACE_BT_2020_NON_CONSTANT_LUMINANCE = 5,
+
30  COLOR_SPACE_BT_2020_CONSTANT_LUMINANCE = 6,
+
31  COLOR_SPACE_SRGB = 7,
+
32  };
+
33 
+
34  enum ChromaSubsampling {
+
35  CHROMA_420_VERTICAL = 0,
+
36  CHROMA_420_COLLOCATED_WITH_LUMA = 1,
+
37  CHROMA_422 = 2,
+
38  CHROMA_444 = 3,
+
39  CHROMA_440 = 4,
+
40  };
+
41 
+ +
43  VPCodecConfiguration(uint8_t profile,
+
44  uint8_t level,
+
45  uint8_t bit_depth,
+
46  uint8_t color_space,
+
47  uint8_t chroma_subsampling,
+
48  uint8_t transfer_function,
+
49  bool video_full_range_flag,
+
50  const std::vector<uint8_t>& codec_initialization_data);
+ +
52 
+
55  bool Parse(const std::vector<uint8_t>& data);
+
56 
+
59  void Write(std::vector<uint8_t>* data) const;
+
60 
+
62  std::string GetCodecString(VideoCodec codec) const;
+
63 
+
64  void set_profile(uint8_t profile) { profile_ = profile; }
+
65  void set_level(uint8_t level) { level_ = level; }
+
66  void set_bit_depth(uint8_t bit_depth) { bit_depth_ = bit_depth; }
+
67  void set_color_space(uint8_t color_space) { color_space_ = color_space; }
+
68  void set_chroma_subsampling(uint8_t chroma_subsampling) {
+
69  chroma_subsampling_ = chroma_subsampling;
+
70  }
+
71  void set_transfer_function(uint8_t transfer_function) {
+
72  transfer_function_ = transfer_function;
+
73  }
+
74  void set_video_full_range_flag(bool video_full_range_flag) {
+
75  video_full_range_flag_ = video_full_range_flag;
+
76  }
+
77 
+
78  uint8_t profile() const { return profile_; }
+
79  uint8_t level() const { return level_; }
+
80  uint8_t bit_depth() const { return bit_depth_; }
+
81  uint8_t color_space() const { return color_space_; }
+
82  uint8_t chroma_subsampling() const { return chroma_subsampling_; }
+
83  uint8_t transfer_function() const { return transfer_function_; }
+
84  bool video_full_range_flag() const { return video_full_range_flag_; }
+
85 
+
86  private:
+
87  uint8_t profile_;
+
88  uint8_t level_;
+
89  uint8_t bit_depth_;
+
90  uint8_t color_space_;
+
91  uint8_t chroma_subsampling_;
+
92  uint8_t transfer_function_;
+
93  bool video_full_range_flag_;
+
94  std::vector<uint8_t> codec_initialization_data_;
+
95 
+
96  // Not using DISALLOW_COPY_AND_ASSIGN here intentionally to allow the compiler
+
97  // generated copy constructor and assignment operator. Since the internal data
+
98  // is small, the performance impact is minimal.
+
99 };
+
100 
+
101 } // namespace media
+
102 } // namespace edash_packager
+
103 
+
104 #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)
@@ -188,7 +192,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d7a/structedash__packager_1_1Element.html b/docs/d5/d7a/structedash__packager_1_1Element.html index 8a8990ee8b..159f9d9ec5 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 8b3763d7f1..09c324a008 100644 --- a/docs/d5/d7b/box__definitions_8h_source.html +++ b/docs/d5/d7b/box__definitions_8h_source.html @@ -839,7 +839,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 39e8765a6e..15edd4a252 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 79f6d15665..cbdb5b23fa 100644 --- a/docs/d5/d8f/webm__cluster__parser_8cc_source.html +++ b/docs/d5/d8f/webm__cluster__parser_8cc_source.html @@ -99,720 +99,789 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
10 #include "packager/base/sys_byteorder.h"
11 #include "packager/media/base/decrypt_config.h"
12 #include "packager/media/base/timestamp.h"
-
13 #include "packager/media/filters/webvtt_util.h"
-
14 #include "packager/media/formats/webm/webm_constants.h"
-
15 #include "packager/media/formats/webm/webm_crypto_helpers.h"
-
16 #include "packager/media/formats/webm/webm_webvtt_parser.h"
-
17 
-
18 // Logs only while |count| < |max|, increments |count| for each log, and warns
-
19 // in the log if |count| has just reached |max|.
-
20 #define LIMITED_LOG(level, count, max) \
-
21  LOG_IF(level, (count) < (max)) \
-
22  << (((count) + 1 == (max)) \
-
23  ? "(Log limit reached. Further similar entries " \
-
24  "may be suppressed): " \
-
25  : "")
-
26 #define LIMITED_DLOG(level, count, max) \
-
27  DLOG_IF(level, (count) < (max)) \
-
28  << (((count) + 1 == (max)) \
-
29  ? "(Log limit reached. Further similar entries " \
-
30  "may be suppressed): " \
-
31  : "")
-
32 
-
33 namespace {
-
34 const int64_t kMicrosecondsPerMillisecond = 1000;
-
35 } // namespace
-
36 
-
37 namespace edash_packager {
-
38 namespace media {
-
39 
- -
41  10000, 20000, 40000, 60000, 10000, 20000, 40000, 60000, 10000, 20000, 40000,
-
42  60000, 10000, 20000, 10000, 20000, 2500, 5000, 10000, 20000, 2500, 5000,
-
43  10000, 20000, 2500, 5000, 10000, 20000, 2500, 5000, 10000, 20000};
-
44 
-
45 enum {
-
46  // Limits the number of LOG() calls in the path of reading encoded
-
47  // duration to avoid spamming for corrupted data.
-
48  kMaxDurationErrorLogs = 10,
-
49  // Limits the number of LOG() calls warning the user that buffer
-
50  // durations have been estimated.
-
51  kMaxDurationEstimateLogs = 10,
-
52 };
-
53 
-
54 WebMClusterParser::WebMClusterParser(
-
55  int64_t timecode_scale,
-
56  int audio_track_num,
-
57  int64_t audio_default_duration,
-
58  int video_track_num,
-
59  int64_t video_default_duration,
-
60  const WebMTracksParser::TextTracks& text_tracks,
-
61  const std::set<int64_t>& ignored_tracks,
-
62  const std::string& audio_encryption_key_id,
-
63  const std::string& video_encryption_key_id,
-
64  const AudioCodec audio_codec,
-
65  const MediaParser::NewSampleCB& new_sample_cb)
-
66  : timecode_multiplier_(timecode_scale / 1000.0),
-
67  ignored_tracks_(ignored_tracks),
-
68  audio_encryption_key_id_(audio_encryption_key_id),
-
69  video_encryption_key_id_(video_encryption_key_id),
-
70  audio_codec_(audio_codec),
-
71  parser_(kWebMIdCluster, this),
-
72  cluster_start_time_(kNoTimestamp),
-
73  audio_(audio_track_num, false, audio_default_duration, new_sample_cb),
-
74  video_(video_track_num, true, video_default_duration, new_sample_cb) {
-
75  for (WebMTracksParser::TextTracks::const_iterator it = text_tracks.begin();
-
76  it != text_tracks.end();
-
77  ++it) {
-
78  text_track_map_.insert(std::make_pair(
-
79  it->first, Track(it->first, false, kNoTimestamp, new_sample_cb)));
-
80  }
-
81 }
-
82 
-
83 WebMClusterParser::~WebMClusterParser() {}
-
84 
- -
86  last_block_timecode_ = -1;
-
87  cluster_timecode_ = -1;
-
88  cluster_start_time_ = kNoTimestamp;
-
89  cluster_ended_ = false;
-
90  parser_.Reset();
-
91  audio_.Reset();
-
92  video_.Reset();
-
93  ResetTextTracks();
-
94 }
-
95 
- -
97  // Estimate the duration of the last frame if necessary.
-
98  audio_.ApplyDurationEstimateIfNeeded();
-
99  video_.ApplyDurationEstimateIfNeeded();
-
100  Reset();
-
101 }
-
102 
-
103 int WebMClusterParser::Parse(const uint8_t* buf, int size) {
-
104  int result = parser_.Parse(buf, size);
-
105 
-
106  if (result < 0) {
-
107  cluster_ended_ = false;
-
108  return result;
-
109  }
-
110 
-
111  cluster_ended_ = parser_.IsParsingComplete();
-
112  if (cluster_ended_) {
-
113  // If there were no buffers in this cluster, set the cluster start time to
-
114  // be the |cluster_timecode_|.
-
115  if (cluster_start_time_ == kNoTimestamp) {
-
116  // If the cluster did not even have a |cluster_timecode_|, signal parse
-
117  // error.
-
118  if (cluster_timecode_ < 0)
-
119  return -1;
+
13 #include "packager/media/filters/vp8_parser.h"
+
14 #include "packager/media/filters/vp9_parser.h"
+
15 #include "packager/media/filters/webvtt_util.h"
+
16 #include "packager/media/formats/webm/webm_constants.h"
+
17 #include "packager/media/formats/webm/webm_crypto_helpers.h"
+
18 #include "packager/media/formats/webm/webm_webvtt_parser.h"
+
19 
+
20 // Logs only while |count| < |max|, increments |count| for each log, and warns
+
21 // in the log if |count| has just reached |max|.
+
22 #define LIMITED_LOG(level, count, max) \
+
23  LOG_IF(level, (count) < (max)) \
+
24  << (((count) + 1 == (max)) \
+
25  ? "(Log limit reached. Further similar entries " \
+
26  "may be suppressed): " \
+
27  : "")
+
28 #define LIMITED_DLOG(level, count, max) \
+
29  DLOG_IF(level, (count) < (max)) \
+
30  << (((count) + 1 == (max)) \
+
31  ? "(Log limit reached. Further similar entries " \
+
32  "may be suppressed): " \
+
33  : "")
+
34 
+
35 namespace edash_packager {
+
36 namespace media {
+
37 namespace {
+
38 
+
39 const int64_t kMicrosecondsPerMillisecond = 1000;
+
40 
+
41 enum {
+
42  // Limits the number of LOG() calls in the path of reading encoded
+
43  // duration to avoid spamming for corrupted data.
+
44  kMaxDurationErrorLogs = 10,
+
45  // Limits the number of LOG() calls warning the user that buffer
+
46  // durations have been estimated.
+
47  kMaxDurationEstimateLogs = 10,
+
48 };
+
49 
+
50 // Helper function used to inspect block data to determine if the
+
51 // block is a keyframe.
+
52 // |data| contains the bytes in the block.
+
53 // |size| indicates the number of bytes in |data|.
+
54 bool IsKeyframe(bool is_video,
+
55  VideoCodec codec,
+
56  const uint8_t* data,
+
57  int size) {
+
58  // For now, assume that all blocks are keyframes for datatypes other than
+
59  // video. This is a valid assumption for Vorbis, WebVTT, & Opus.
+
60  if (!is_video)
+
61  return true;
+
62 
+
63  switch (codec) {
+
64  case kCodecVP8:
+
65  return VP8Parser::IsKeyframe(data, size);
+
66  case kCodecVP9:
+
67  return VP9Parser::IsKeyframe(data, size);
+
68  default:
+
69  NOTIMPLEMENTED() << "Unsupported codec " << codec;
+
70  return false;
+
71  }
+
72 }
+
73 
+
74 } // namespace
+
75 
+ +
77  10000, 20000, 40000, 60000, 10000, 20000, 40000, 60000, 10000, 20000, 40000,
+
78  60000, 10000, 20000, 10000, 20000, 2500, 5000, 10000, 20000, 2500, 5000,
+
79  10000, 20000, 2500, 5000, 10000, 20000, 2500, 5000, 10000, 20000};
+
80 
+
81 WebMClusterParser::WebMClusterParser(
+
82  int64_t timecode_scale,
+
83  scoped_refptr<AudioStreamInfo> audio_stream_info,
+
84  scoped_refptr<VideoStreamInfo> video_stream_info,
+
85  int64_t audio_default_duration,
+
86  int64_t video_default_duration,
+
87  const WebMTracksParser::TextTracks& text_tracks,
+
88  const std::set<int64_t>& ignored_tracks,
+
89  const std::string& audio_encryption_key_id,
+
90  const std::string& video_encryption_key_id,
+
91  const MediaParser::NewSampleCB& new_sample_cb,
+
92  const MediaParser::InitCB& init_cb)
+
93  : timecode_multiplier_(timecode_scale / 1000.0),
+
94  audio_stream_info_(audio_stream_info),
+
95  video_stream_info_(video_stream_info),
+
96  ignored_tracks_(ignored_tracks),
+
97  audio_encryption_key_id_(audio_encryption_key_id),
+
98  video_encryption_key_id_(video_encryption_key_id),
+
99  parser_(kWebMIdCluster, this),
+
100  initialized_(false),
+
101  init_cb_(init_cb),
+
102  cluster_start_time_(kNoTimestamp),
+
103  audio_(audio_stream_info ? audio_stream_info->track_id() : -1,
+
104  false,
+
105  audio_default_duration,
+
106  new_sample_cb),
+
107  video_(video_stream_info ? video_stream_info->track_id() : -1,
+
108  true,
+
109  video_default_duration,
+
110  new_sample_cb) {
+
111  for (WebMTracksParser::TextTracks::const_iterator it = text_tracks.begin();
+
112  it != text_tracks.end();
+
113  ++it) {
+
114  text_track_map_.insert(std::make_pair(
+
115  it->first, Track(it->first, false, kNoTimestamp, new_sample_cb)));
+
116  }
+
117 }
+
118 
+
119 WebMClusterParser::~WebMClusterParser() {}
120 
-
121  cluster_start_time_ = cluster_timecode_ * timecode_multiplier_;
-
122  }
-
123 
-
124  // Reset the parser if we're done parsing so that
-
125  // it is ready to accept another cluster on the next
-
126  // call.
-
127  parser_.Reset();
-
128 
-
129  last_block_timecode_ = -1;
-
130  cluster_timecode_ = -1;
-
131  }
-
132 
-
133  return result;
-
134 }
-
135 
-
136 int64_t WebMClusterParser::TryGetEncodedAudioDuration(
-
137  const uint8_t* data,
-
138  int size) {
-
139 
-
140  // Duration is currently read assuming the *entire* stream is unencrypted.
-
141  // The special "Signal Byte" prepended to Blocks in encrypted streams is
-
142  // assumed to not be present.
-
143  // TODO: Consider parsing "Signal Byte" for encrypted streams to return
-
144  // duration for any unencrypted blocks.
-
145 
-
146  if (audio_codec_ == kCodecOpus) {
-
147  return ReadOpusDuration(data, size);
-
148  }
-
149 
-
150  // TODO: Implement duration reading for Vorbis. See motivations in
-
151  // http://crbug.com/396634.
-
152 
-
153  return kNoTimestamp;
-
154 }
-
155 
-
156 int64_t WebMClusterParser::ReadOpusDuration(const uint8_t* data, int size) {
-
157  // Masks and constants for Opus packets. See
-
158  // https://tools.ietf.org/html/rfc6716#page-14
-
159  static const uint8_t kTocConfigMask = 0xf8;
-
160  static const uint8_t kTocFrameCountCodeMask = 0x03;
-
161  static const uint8_t kFrameCountMask = 0x3f;
-
162  static const int64_t kPacketDurationMaxMs = 120000;
-
163 
-
164  if (size < 1) {
-
165  LIMITED_DLOG(INFO, num_duration_errors_, kMaxDurationErrorLogs)
-
166  << "Invalid zero-byte Opus packet; demuxed block duration may be "
-
167  "imprecise.";
-
168  return kNoTimestamp;
-
169  }
-
170 
-
171  // Frame count type described by last 2 bits of Opus TOC byte.
-
172  int frame_count_type = data[0] & kTocFrameCountCodeMask;
-
173 
-
174  int frame_count = 0;
-
175  switch (frame_count_type) {
-
176  case 0:
-
177  frame_count = 1;
-
178  break;
-
179  case 1:
-
180  case 2:
-
181  frame_count = 2;
-
182  break;
-
183  case 3:
-
184  // Type 3 indicates an arbitrary frame count described in the next byte.
-
185  if (size < 2) {
-
186  LIMITED_DLOG(INFO, num_duration_errors_, kMaxDurationErrorLogs)
-
187  << "Second byte missing from 'Code 3' Opus packet; demuxed block "
-
188  "duration may be imprecise.";
-
189  return kNoTimestamp;
-
190  }
-
191 
-
192  frame_count = data[1] & kFrameCountMask;
-
193 
-
194  if (frame_count == 0) {
-
195  LIMITED_DLOG(INFO, num_duration_errors_, kMaxDurationErrorLogs)
-
196  << "Illegal 'Code 3' Opus packet with frame count zero; demuxed "
-
197  "block duration may be imprecise.";
-
198  return kNoTimestamp;
-
199  }
+ +
122  last_block_timecode_ = -1;
+
123  cluster_timecode_ = -1;
+
124  cluster_start_time_ = kNoTimestamp;
+
125  cluster_ended_ = false;
+
126  parser_.Reset();
+
127  audio_.Reset();
+
128  video_.Reset();
+
129  ResetTextTracks();
+
130 }
+
131 
+ +
133  // Estimate the duration of the last frame if necessary.
+
134  audio_.ApplyDurationEstimateIfNeeded();
+
135  video_.ApplyDurationEstimateIfNeeded();
+
136  Reset();
+
137 }
+
138 
+
139 int WebMClusterParser::Parse(const uint8_t* buf, int size) {
+
140  int result = parser_.Parse(buf, size);
+
141 
+
142  if (result < 0) {
+
143  cluster_ended_ = false;
+
144  return result;
+
145  }
+
146 
+
147  cluster_ended_ = parser_.IsParsingComplete();
+
148  if (cluster_ended_) {
+
149  // If there were no buffers in this cluster, set the cluster start time to
+
150  // be the |cluster_timecode_|.
+
151  if (cluster_start_time_ == kNoTimestamp) {
+
152  // If the cluster did not even have a |cluster_timecode_|, signal parse
+
153  // error.
+
154  if (cluster_timecode_ < 0)
+
155  return -1;
+
156 
+
157  cluster_start_time_ = cluster_timecode_ * timecode_multiplier_;
+
158  }
+
159 
+
160  // Reset the parser if we're done parsing so that
+
161  // it is ready to accept another cluster on the next
+
162  // call.
+
163  parser_.Reset();
+
164 
+
165  last_block_timecode_ = -1;
+
166  cluster_timecode_ = -1;
+
167  }
+
168 
+
169  return result;
+
170 }
+
171 
+
172 int64_t WebMClusterParser::TryGetEncodedAudioDuration(
+
173  const uint8_t* data,
+
174  int size) {
+
175 
+
176  // Duration is currently read assuming the *entire* stream is unencrypted.
+
177  // The special "Signal Byte" prepended to Blocks in encrypted streams is
+
178  // assumed to not be present.
+
179  // TODO: Consider parsing "Signal Byte" for encrypted streams to return
+
180  // duration for any unencrypted blocks.
+
181 
+
182  DCHECK(audio_stream_info_);
+
183  if (audio_stream_info_->codec() == kCodecOpus) {
+
184  return ReadOpusDuration(data, size);
+
185  }
+
186 
+
187  // TODO: Implement duration reading for Vorbis. See motivations in
+
188  // http://crbug.com/396634.
+
189 
+
190  return kNoTimestamp;
+
191 }
+
192 
+
193 int64_t WebMClusterParser::ReadOpusDuration(const uint8_t* data, int size) {
+
194  // Masks and constants for Opus packets. See
+
195  // https://tools.ietf.org/html/rfc6716#page-14
+
196  static const uint8_t kTocConfigMask = 0xf8;
+
197  static const uint8_t kTocFrameCountCodeMask = 0x03;
+
198  static const uint8_t kFrameCountMask = 0x3f;
+
199  static const int64_t kPacketDurationMaxMs = 120000;
200 
-
201  break;
-
202  default:
-
203  LIMITED_DLOG(INFO, num_duration_errors_, kMaxDurationErrorLogs)
-
204  << "Unexpected Opus frame count type: " << frame_count_type << "; "
-
205  << "demuxed block duration may be imprecise.";
-
206  return kNoTimestamp;
-
207  }
-
208 
-
209  int opusConfig = (data[0] & kTocConfigMask) >> 3;
-
210  CHECK_GE(opusConfig, 0);
-
211  CHECK_LT(opusConfig, static_cast<int>(arraysize(kOpusFrameDurationsMu)));
-
212 
-
213  DCHECK_GT(frame_count, 0);
-
214  int64_t duration = kOpusFrameDurationsMu[opusConfig] * frame_count;
-
215 
-
216  if (duration > kPacketDurationMaxMs * 1000) {
-
217  // Intentionally allowing packet to pass through for now. Decoder should
-
218  // either handle or fail gracefully. LOG as breadcrumbs in case
-
219  // things go sideways.
-
220  LIMITED_DLOG(INFO, num_duration_errors_, kMaxDurationErrorLogs)
-
221  << "Warning, demuxed Opus packet with encoded duration: "
-
222  << duration / 1000 << "ms. Should be no greater than "
-
223  << kPacketDurationMaxMs << "ms.";
-
224  }
-
225 
-
226  return duration;
-
227 }
+
201  if (size < 1) {
+
202  LIMITED_DLOG(INFO, num_duration_errors_, kMaxDurationErrorLogs)
+
203  << "Invalid zero-byte Opus packet; demuxed block duration may be "
+
204  "imprecise.";
+
205  return kNoTimestamp;
+
206  }
+
207 
+
208  // Frame count type described by last 2 bits of Opus TOC byte.
+
209  int frame_count_type = data[0] & kTocFrameCountCodeMask;
+
210 
+
211  int frame_count = 0;
+
212  switch (frame_count_type) {
+
213  case 0:
+
214  frame_count = 1;
+
215  break;
+
216  case 1:
+
217  case 2:
+
218  frame_count = 2;
+
219  break;
+
220  case 3:
+
221  // Type 3 indicates an arbitrary frame count described in the next byte.
+
222  if (size < 2) {
+
223  LIMITED_DLOG(INFO, num_duration_errors_, kMaxDurationErrorLogs)
+
224  << "Second byte missing from 'Code 3' Opus packet; demuxed block "
+
225  "duration may be imprecise.";
+
226  return kNoTimestamp;
+
227  }
228 
-
229 WebMParserClient* WebMClusterParser::OnListStart(int id) {
-
230  if (id == kWebMIdCluster) {
-
231  cluster_timecode_ = -1;
-
232  cluster_start_time_ = kNoTimestamp;
-
233  } else if (id == kWebMIdBlockGroup) {
-
234  block_data_.reset();
-
235  block_data_size_ = -1;
-
236  block_duration_ = -1;
-
237  discard_padding_ = -1;
-
238  discard_padding_set_ = false;
-
239  } else if (id == kWebMIdBlockAdditions) {
-
240  block_add_id_ = -1;
-
241  block_additional_data_.reset();
-
242  block_additional_data_size_ = 0;
-
243  }
-
244 
-
245  return this;
-
246 }
-
247 
-
248 bool WebMClusterParser::OnListEnd(int id) {
-
249  if (id != kWebMIdBlockGroup)
-
250  return true;
-
251 
-
252  // Make sure the BlockGroup actually had a Block.
-
253  if (block_data_size_ == -1) {
-
254  LOG(ERROR) << "Block missing from BlockGroup.";
-
255  return false;
-
256  }
-
257 
-
258  bool result = ParseBlock(false, block_data_.get(), block_data_size_,
-
259  block_additional_data_.get(),
-
260  block_additional_data_size_, block_duration_,
-
261  discard_padding_set_ ? discard_padding_ : 0);
-
262  block_data_.reset();
-
263  block_data_size_ = -1;
-
264  block_duration_ = -1;
-
265  block_add_id_ = -1;
-
266  block_additional_data_.reset();
-
267  block_additional_data_size_ = 0;
-
268  discard_padding_ = -1;
-
269  discard_padding_set_ = false;
-
270  return result;
-
271 }
-
272 
-
273 bool WebMClusterParser::OnUInt(int id, int64_t val) {
-
274  int64_t* dst;
-
275  switch (id) {
-
276  case kWebMIdTimecode:
-
277  dst = &cluster_timecode_;
-
278  break;
-
279  case kWebMIdBlockDuration:
-
280  dst = &block_duration_;
-
281  break;
-
282  case kWebMIdBlockAddID:
-
283  dst = &block_add_id_;
-
284  break;
-
285  default:
-
286  return true;
-
287  }
-
288  if (*dst != -1)
-
289  return false;
-
290  *dst = val;
-
291  return true;
-
292 }
-
293 
-
294 bool WebMClusterParser::ParseBlock(bool is_simple_block,
-
295  const uint8_t* buf,
-
296  int size,
-
297  const uint8_t* additional,
-
298  int additional_size,
-
299  int duration,
-
300  int64_t discard_padding) {
-
301  if (size < 4)
-
302  return false;
-
303 
-
304  // Return an error if the trackNum > 127. We just aren't
-
305  // going to support large track numbers right now.
-
306  if (!(buf[0] & 0x80)) {
-
307  LOG(ERROR) << "TrackNumber over 127 not supported";
-
308  return false;
-
309  }
-
310 
-
311  int track_num = buf[0] & 0x7f;
-
312  int timecode = buf[1] << 8 | buf[2];
-
313  int flags = buf[3] & 0xff;
-
314  int lacing = (flags >> 1) & 0x3;
-
315 
-
316  if (lacing) {
-
317  LOG(ERROR) << "Lacing " << lacing << " is not supported yet.";
-
318  return false;
-
319  }
-
320 
-
321  // Sign extend negative timecode offsets.
-
322  if (timecode & 0x8000)
-
323  timecode |= ~0xffff;
-
324 
-
325  const uint8_t* frame_data = buf + 4;
-
326  int frame_size = size - (frame_data - buf);
-
327  return OnBlock(is_simple_block, track_num, timecode, duration, flags,
-
328  frame_data, frame_size, additional, additional_size,
-
329  discard_padding);
-
330 }
-
331 
-
332 bool WebMClusterParser::OnBinary(int id, const uint8_t* data, int size) {
-
333  switch (id) {
-
334  case kWebMIdSimpleBlock:
-
335  return ParseBlock(true, data, size, NULL, 0, -1, 0);
-
336 
-
337  case kWebMIdBlock:
-
338  if (block_data_) {
-
339  LOG(ERROR) << "More than 1 Block in a BlockGroup is not "
-
340  "supported.";
-
341  return false;
-
342  }
-
343  block_data_.reset(new uint8_t[size]);
-
344  memcpy(block_data_.get(), data, size);
-
345  block_data_size_ = size;
-
346  return true;
+
229  frame_count = data[1] & kFrameCountMask;
+
230 
+
231  if (frame_count == 0) {
+
232  LIMITED_DLOG(INFO, num_duration_errors_, kMaxDurationErrorLogs)
+
233  << "Illegal 'Code 3' Opus packet with frame count zero; demuxed "
+
234  "block duration may be imprecise.";
+
235  return kNoTimestamp;
+
236  }
+
237 
+
238  break;
+
239  default:
+
240  LIMITED_DLOG(INFO, num_duration_errors_, kMaxDurationErrorLogs)
+
241  << "Unexpected Opus frame count type: " << frame_count_type << "; "
+
242  << "demuxed block duration may be imprecise.";
+
243  return kNoTimestamp;
+
244  }
+
245 
+
246  int opusConfig = (data[0] & kTocConfigMask) >> 3;
+
247  CHECK_GE(opusConfig, 0);
+
248  CHECK_LT(opusConfig, static_cast<int>(arraysize(kOpusFrameDurationsMu)));
+
249 
+
250  DCHECK_GT(frame_count, 0);
+
251  int64_t duration = kOpusFrameDurationsMu[opusConfig] * frame_count;
+
252 
+
253  if (duration > kPacketDurationMaxMs * 1000) {
+
254  // Intentionally allowing packet to pass through for now. Decoder should
+
255  // either handle or fail gracefully. LOG as breadcrumbs in case
+
256  // things go sideways.
+
257  LIMITED_DLOG(INFO, num_duration_errors_, kMaxDurationErrorLogs)
+
258  << "Warning, demuxed Opus packet with encoded duration: "
+
259  << duration / 1000 << "ms. Should be no greater than "
+
260  << kPacketDurationMaxMs << "ms.";
+
261  }
+
262 
+
263  return duration;
+
264 }
+
265 
+
266 WebMParserClient* WebMClusterParser::OnListStart(int id) {
+
267  if (id == kWebMIdCluster) {
+
268  cluster_timecode_ = -1;
+
269  cluster_start_time_ = kNoTimestamp;
+
270  } else if (id == kWebMIdBlockGroup) {
+
271  block_data_.reset();
+
272  block_data_size_ = -1;
+
273  block_duration_ = -1;
+
274  discard_padding_ = -1;
+
275  discard_padding_set_ = false;
+
276  } else if (id == kWebMIdBlockAdditions) {
+
277  block_add_id_ = -1;
+
278  block_additional_data_.reset();
+
279  block_additional_data_size_ = 0;
+
280  }
+
281 
+
282  return this;
+
283 }
+
284 
+
285 bool WebMClusterParser::OnListEnd(int id) {
+
286  if (id != kWebMIdBlockGroup)
+
287  return true;
+
288 
+
289  // Make sure the BlockGroup actually had a Block.
+
290  if (block_data_size_ == -1) {
+
291  LOG(ERROR) << "Block missing from BlockGroup.";
+
292  return false;
+
293  }
+
294 
+
295  bool result = ParseBlock(false, block_data_.get(), block_data_size_,
+
296  block_additional_data_.get(),
+
297  block_additional_data_size_, block_duration_,
+
298  discard_padding_set_ ? discard_padding_ : 0);
+
299  block_data_.reset();
+
300  block_data_size_ = -1;
+
301  block_duration_ = -1;
+
302  block_add_id_ = -1;
+
303  block_additional_data_.reset();
+
304  block_additional_data_size_ = 0;
+
305  discard_padding_ = -1;
+
306  discard_padding_set_ = false;
+
307  return result;
+
308 }
+
309 
+
310 bool WebMClusterParser::OnUInt(int id, int64_t val) {
+
311  int64_t* dst;
+
312  switch (id) {
+
313  case kWebMIdTimecode:
+
314  dst = &cluster_timecode_;
+
315  break;
+
316  case kWebMIdBlockDuration:
+
317  dst = &block_duration_;
+
318  break;
+
319  case kWebMIdBlockAddID:
+
320  dst = &block_add_id_;
+
321  break;
+
322  default:
+
323  return true;
+
324  }
+
325  if (*dst != -1)
+
326  return false;
+
327  *dst = val;
+
328  return true;
+
329 }
+
330 
+
331 bool WebMClusterParser::ParseBlock(bool is_simple_block,
+
332  const uint8_t* buf,
+
333  int size,
+
334  const uint8_t* additional,
+
335  int additional_size,
+
336  int duration,
+
337  int64_t discard_padding) {
+
338  if (size < 4)
+
339  return false;
+
340 
+
341  // Return an error if the trackNum > 127. We just aren't
+
342  // going to support large track numbers right now.
+
343  if (!(buf[0] & 0x80)) {
+
344  LOG(ERROR) << "TrackNumber over 127 not supported";
+
345  return false;
+
346  }
347 
-
348  case kWebMIdBlockAdditional: {
-
349  uint64_t block_add_id = base::HostToNet64(block_add_id_);
-
350  if (block_additional_data_) {
-
351  // TODO: Technically, more than 1 BlockAdditional is allowed as per
-
352  // matroska spec. But for now we don't have a use case to support
-
353  // parsing of such files. Take a look at this again when such a case
-
354  // arises.
-
355  LOG(ERROR) << "More than 1 BlockAdditional in a "
-
356  "BlockGroup is not supported.";
-
357  return false;
-
358  }
-
359  // First 8 bytes of side_data in DecoderBuffer is the BlockAddID
-
360  // element's value in Big Endian format. This is done to mimic ffmpeg
-
361  // demuxer's behavior.
-
362  block_additional_data_size_ = size + sizeof(block_add_id);
-
363  block_additional_data_.reset(new uint8_t[block_additional_data_size_]);
-
364  memcpy(block_additional_data_.get(), &block_add_id,
-
365  sizeof(block_add_id));
-
366  memcpy(block_additional_data_.get() + 8, data, size);
-
367  return true;
-
368  }
-
369  case kWebMIdDiscardPadding: {
-
370  if (discard_padding_set_ || size <= 0 || size > 8)
-
371  return false;
-
372  discard_padding_set_ = true;
+
348  int track_num = buf[0] & 0x7f;
+
349  int timecode = buf[1] << 8 | buf[2];
+
350  int flags = buf[3] & 0xff;
+
351  int lacing = (flags >> 1) & 0x3;
+
352 
+
353  if (lacing) {
+
354  LOG(ERROR) << "Lacing " << lacing << " is not supported yet.";
+
355  return false;
+
356  }
+
357 
+
358  // Sign extend negative timecode offsets.
+
359  if (timecode & 0x8000)
+
360  timecode |= ~0xffff;
+
361 
+
362  const uint8_t* frame_data = buf + 4;
+
363  int frame_size = size - (frame_data - buf);
+
364  return OnBlock(is_simple_block, track_num, timecode, duration, flags,
+
365  frame_data, frame_size, additional, additional_size,
+
366  discard_padding);
+
367 }
+
368 
+
369 bool WebMClusterParser::OnBinary(int id, const uint8_t* data, int size) {
+
370  switch (id) {
+
371  case kWebMIdSimpleBlock:
+
372  return ParseBlock(true, data, size, NULL, 0, -1, 0);
373 
-
374  // Read in the big-endian integer.
-
375  discard_padding_ = static_cast<int8_t>(data[0]);
-
376  for (int i = 1; i < size; ++i)
-
377  discard_padding_ = (discard_padding_ << 8) | data[i];
-
378 
-
379  return true;
-
380  }
-
381  default:
-
382  return true;
-
383  }
-
384 }
-
385 
-
386 bool WebMClusterParser::OnBlock(bool is_simple_block,
-
387  int track_num,
-
388  int timecode,
-
389  int block_duration,
-
390  int flags,
-
391  const uint8_t* data,
-
392  int size,
-
393  const uint8_t* additional,
-
394  int additional_size,
-
395  int64_t discard_padding) {
-
396  DCHECK_GE(size, 0);
-
397  if (cluster_timecode_ == -1) {
-
398  LOG(ERROR) << "Got a block before cluster timecode.";
-
399  return false;
-
400  }
-
401 
-
402  // TODO: Should relative negative timecode offsets be rejected? Or only when
-
403  // the absolute timecode is negative? See http://crbug.com/271794
-
404  if (timecode < 0) {
-
405  LOG(ERROR) << "Got a block with negative timecode offset " << timecode;
-
406  return false;
-
407  }
-
408 
-
409  if (last_block_timecode_ != -1 && timecode < last_block_timecode_) {
-
410  LOG(ERROR) << "Got a block with a timecode before the previous block.";
-
411  return false;
-
412  }
-
413 
-
414  Track* track = NULL;
-
415  StreamType stream_type = kStreamAudio;
-
416  std::string encryption_key_id;
-
417  int64_t encoded_duration = kNoTimestamp;
-
418  if (track_num == audio_.track_num()) {
-
419  track = &audio_;
-
420  encryption_key_id = audio_encryption_key_id_;
-
421  if (encryption_key_id.empty()) {
-
422  encoded_duration = TryGetEncodedAudioDuration(data, size);
-
423  }
-
424  } else if (track_num == video_.track_num()) {
-
425  track = &video_;
-
426  encryption_key_id = video_encryption_key_id_;
-
427  stream_type = kStreamVideo;
-
428  } else if (ignored_tracks_.find(track_num) != ignored_tracks_.end()) {
-
429  return true;
-
430  } else if (Track* const text_track = FindTextTrack(track_num)) {
-
431  if (is_simple_block) // BlockGroup is required for WebVTT cues
-
432  return false;
-
433  if (block_duration < 0) // not specified
-
434  return false;
-
435  track = text_track;
-
436  stream_type = kStreamText;
-
437  } else {
-
438  LOG(ERROR) << "Unexpected track number " << track_num;
-
439  return false;
-
440  }
-
441 
-
442  last_block_timecode_ = timecode;
-
443 
-
444  int64_t timestamp = (cluster_timecode_ + timecode) * timecode_multiplier_;
+
374  case kWebMIdBlock:
+
375  if (block_data_) {
+
376  LOG(ERROR) << "More than 1 Block in a BlockGroup is not "
+
377  "supported.";
+
378  return false;
+
379  }
+
380  block_data_.reset(new uint8_t[size]);
+
381  memcpy(block_data_.get(), data, size);
+
382  block_data_size_ = size;
+
383  return true;
+
384 
+
385  case kWebMIdBlockAdditional: {
+
386  uint64_t block_add_id = base::HostToNet64(block_add_id_);
+
387  if (block_additional_data_) {
+
388  // TODO: Technically, more than 1 BlockAdditional is allowed as per
+
389  // matroska spec. But for now we don't have a use case to support
+
390  // parsing of such files. Take a look at this again when such a case
+
391  // arises.
+
392  LOG(ERROR) << "More than 1 BlockAdditional in a "
+
393  "BlockGroup is not supported.";
+
394  return false;
+
395  }
+
396  // First 8 bytes of side_data in DecoderBuffer is the BlockAddID
+
397  // element's value in Big Endian format. This is done to mimic ffmpeg
+
398  // demuxer's behavior.
+
399  block_additional_data_size_ = size + sizeof(block_add_id);
+
400  block_additional_data_.reset(new uint8_t[block_additional_data_size_]);
+
401  memcpy(block_additional_data_.get(), &block_add_id,
+
402  sizeof(block_add_id));
+
403  memcpy(block_additional_data_.get() + 8, data, size);
+
404  return true;
+
405  }
+
406  case kWebMIdDiscardPadding: {
+
407  if (discard_padding_set_ || size <= 0 || size > 8)
+
408  return false;
+
409  discard_padding_set_ = true;
+
410 
+
411  // Read in the big-endian integer.
+
412  discard_padding_ = static_cast<int8_t>(data[0]);
+
413  for (int i = 1; i < size; ++i)
+
414  discard_padding_ = (discard_padding_ << 8) | data[i];
+
415 
+
416  return true;
+
417  }
+
418  default:
+
419  return true;
+
420  }
+
421 }
+
422 
+
423 bool WebMClusterParser::OnBlock(bool is_simple_block,
+
424  int track_num,
+
425  int timecode,
+
426  int block_duration,
+
427  int flags,
+
428  const uint8_t* data,
+
429  int size,
+
430  const uint8_t* additional,
+
431  int additional_size,
+
432  int64_t discard_padding) {
+
433  DCHECK_GE(size, 0);
+
434  if (cluster_timecode_ == -1) {
+
435  LOG(ERROR) << "Got a block before cluster timecode.";
+
436  return false;
+
437  }
+
438 
+
439  // TODO: Should relative negative timecode offsets be rejected? Or only when
+
440  // the absolute timecode is negative? See http://crbug.com/271794
+
441  if (timecode < 0) {
+
442  LOG(ERROR) << "Got a block with negative timecode offset " << timecode;
+
443  return false;
+
444  }
445 
-
446  scoped_refptr<MediaSample> buffer;
-
447  if (stream_type != kStreamText) {
-
448  // The first bit of the flags is set when a SimpleBlock contains only
-
449  // keyframes. If this is a Block, then inspection of the payload is
-
450  // necessary to determine whether it contains a keyframe or not.
-
451  // http://www.matroska.org/technical/specs/index.html
-
452  bool is_keyframe =
-
453  is_simple_block ? (flags & 0x80) != 0 : track->IsKeyframe(data, size);
-
454 
-
455  // Every encrypted Block has a signal byte and IV prepended to it. Current
-
456  // encrypted WebM request for comments specification is here
-
457  // http://wiki.webmproject.org/encryption/webm-encryption-rfc
-
458  scoped_ptr<DecryptConfig> decrypt_config;
-
459  int data_offset = 0;
-
460  if (!encryption_key_id.empty() &&
-
461  !WebMCreateDecryptConfig(
-
462  data, size,
-
463  reinterpret_cast<const uint8_t*>(encryption_key_id.data()),
-
464  encryption_key_id.size(),
-
465  &decrypt_config, &data_offset)) {
-
466  return false;
-
467  }
-
468 
-
469  buffer = MediaSample::CopyFrom(data + data_offset, size - data_offset,
-
470  additional, additional_size, is_keyframe);
-
471 
-
472  if (decrypt_config) {
-
473  // TODO(kqyang): Decrypt it if it is encrypted.
-
474  buffer->set_is_encrypted(true);
-
475  }
-
476  } else {
-
477  std::string id, settings, content;
-
478  WebMWebVTTParser::Parse(data, size, &id, &settings, &content);
-
479 
-
480  std::vector<uint8_t> side_data;
-
481  MakeSideData(id.begin(), id.end(),
-
482  settings.begin(), settings.end(),
-
483  &side_data);
-
484 
-
485  buffer = MediaSample::CopyFrom(
-
486  reinterpret_cast<const uint8_t*>(content.data()), content.length(),
-
487  &side_data[0], side_data.size(), true);
-
488  }
-
489 
-
490  buffer->set_pts(timestamp);
-
491  if (cluster_start_time_ == kNoTimestamp)
-
492  cluster_start_time_ = timestamp;
-
493 
-
494  int64_t block_duration_time_delta = kNoTimestamp;
-
495  if (block_duration >= 0) {
-
496  block_duration_time_delta = block_duration * timecode_multiplier_;
-
497  }
-
498 
-
499  // Prefer encoded duration over BlockGroup->BlockDuration or
-
500  // TrackEntry->DefaultDuration when available. This layering violation is a
-
501  // workaround for http://crbug.com/396634, decreasing the likelihood of
-
502  // fall-back to rough estimation techniques for Blocks that lack a
-
503  // BlockDuration at the end of a cluster. Duration estimation may still apply
-
504  // in cases of encryption and codecs for which we do not extract encoded
-
505  // duration. Estimates are applied as Block Timecode deltas, or once the whole
-
506  // stream is parsed in the case of the last Block in the stream. See
-
507  // Track::EmitBuffer and ApplyDurationEstimateIfNeeded().
-
508  if (encoded_duration != kNoTimestamp) {
-
509  DCHECK(encoded_duration != kInfiniteDuration);
-
510  DCHECK(encoded_duration > 0);
-
511  buffer->set_duration(encoded_duration);
-
512 
-
513  DVLOG(3) << __FUNCTION__ << " : "
-
514  << "Using encoded duration " << encoded_duration;
-
515 
-
516  if (block_duration_time_delta != kNoTimestamp) {
-
517  int64_t duration_difference =
-
518  block_duration_time_delta - encoded_duration;
-
519 
-
520  const auto kWarnDurationDiff = timecode_multiplier_ * 2;
-
521  if (duration_difference > kWarnDurationDiff) {
-
522  LIMITED_DLOG(INFO, num_duration_errors_, kMaxDurationErrorLogs)
-
523  << "BlockDuration (" << block_duration_time_delta / 1000
-
524  << "ms) differs significantly from encoded duration ("
-
525  << encoded_duration / 1000 << "ms).";
-
526  }
-
527  }
-
528  } else if (block_duration_time_delta != kNoTimestamp) {
-
529  buffer->set_duration(block_duration_time_delta);
-
530  } else {
-
531  buffer->set_duration(track->default_duration());
-
532  }
-
533 
-
534  return track->EmitBuffer(buffer);
-
535 }
-
536 
-
537 WebMClusterParser::Track::Track(int track_num,
-
538  bool is_video,
-
539  int64_t default_duration,
-
540  const MediaParser::NewSampleCB& new_sample_cb)
-
541  : track_num_(track_num),
-
542  is_video_(is_video),
-
543  default_duration_(default_duration),
-
544  estimated_next_frame_duration_(kNoTimestamp),
-
545  new_sample_cb_(new_sample_cb) {
-
546  DCHECK(default_duration_ == kNoTimestamp || default_duration_ > 0);
-
547 }
-
548 
-
549 WebMClusterParser::Track::~Track() {}
-
550 
-
551 bool WebMClusterParser::Track::EmitBuffer(
-
552  const scoped_refptr<MediaSample>& buffer) {
-
553  DVLOG(2) << "EmitBuffer() : " << track_num_
-
554  << " ts " << buffer->pts()
-
555  << " dur " << buffer->duration()
-
556  << " kf " << buffer->is_key_frame()
-
557  << " size " << buffer->data_size();
-
558 
-
559  if (last_added_buffer_missing_duration_.get()) {
-
560  int64_t derived_duration =
-
561  buffer->pts() - last_added_buffer_missing_duration_->pts();
-
562  last_added_buffer_missing_duration_->set_duration(derived_duration);
-
563 
-
564  DVLOG(2) << "EmitBuffer() : applied derived duration to held-back buffer : "
-
565  << " ts "
-
566  << last_added_buffer_missing_duration_->pts()
-
567  << " dur "
-
568  << last_added_buffer_missing_duration_->duration()
-
569  << " kf " << last_added_buffer_missing_duration_->is_key_frame()
-
570  << " size " << last_added_buffer_missing_duration_->data_size();
-
571  scoped_refptr<MediaSample> updated_buffer =
-
572  last_added_buffer_missing_duration_;
-
573  last_added_buffer_missing_duration_ = NULL;
-
574  if (!EmitBufferHelp(updated_buffer))
-
575  return false;
-
576  }
-
577 
-
578  if (buffer->duration() == kNoTimestamp) {
-
579  last_added_buffer_missing_duration_ = buffer;
-
580  DVLOG(2) << "EmitBuffer() : holding back buffer that is missing duration";
-
581  return true;
-
582  }
-
583 
-
584  return EmitBufferHelp(buffer);
-
585 }
-
586 
-
587 void WebMClusterParser::Track::ApplyDurationEstimateIfNeeded() {
-
588  if (!last_added_buffer_missing_duration_.get())
-
589  return;
-
590 
-
591  int64_t estimated_duration = GetDurationEstimate();
-
592  last_added_buffer_missing_duration_->set_duration(estimated_duration);
-
593 
-
594  LIMITED_LOG(INFO, num_duration_estimates_, kMaxDurationEstimateLogs)
-
595  << "Estimating WebM block duration to be " << estimated_duration / 1000
-
596  << "ms for the last (Simple)Block in the Cluster for this Track. Use "
-
597  "BlockGroups with BlockDurations at the end of each Track in a "
-
598  "Cluster to avoid estimation.";
-
599 
-
600  DVLOG(2) << __FUNCTION__ << " new dur : ts "
-
601  << last_added_buffer_missing_duration_->pts()
-
602  << " dur "
-
603  << last_added_buffer_missing_duration_->duration()
-
604  << " kf " << last_added_buffer_missing_duration_->is_key_frame()
-
605  << " size " << last_added_buffer_missing_duration_->data_size();
-
606 
-
607  // Don't use the applied duration as a future estimation (don't use
-
608  // EmitBufferHelp() here.)
-
609  new_sample_cb_.Run(track_num_, last_added_buffer_missing_duration_);
-
610  last_added_buffer_missing_duration_ = NULL;
-
611 }
-
612 
-
613 void WebMClusterParser::Track::Reset() {
-
614  last_added_buffer_missing_duration_ = NULL;
-
615 }
-
616 
-
617 bool WebMClusterParser::Track::IsKeyframe(const uint8_t* data, int size) const {
-
618  // For now, assume that all blocks are keyframes for datatypes other than
-
619  // video. This is a valid assumption for Vorbis, WebVTT, & Opus.
-
620  if (!is_video_)
-
621  return true;
-
622 
-
623  // Make sure the block is big enough for the minimal keyframe header size.
-
624  if (size < 7)
-
625  return false;
-
626 
-
627  // The LSb of the first byte must be a 0 for a keyframe.
-
628  // http://tools.ietf.org/html/rfc6386 Section 19.1
-
629  if ((data[0] & 0x01) != 0)
-
630  return false;
-
631 
-
632  // Verify VP8 keyframe startcode.
-
633  // http://tools.ietf.org/html/rfc6386 Section 19.1
-
634  if (data[3] != 0x9d || data[4] != 0x01 || data[5] != 0x2a)
-
635  return false;
+
446  if (last_block_timecode_ != -1 && timecode < last_block_timecode_) {
+
447  LOG(ERROR) << "Got a block with a timecode before the previous block.";
+
448  return false;
+
449  }
+
450 
+
451  Track* track = NULL;
+
452  StreamType stream_type = kStreamAudio;
+
453  std::string encryption_key_id;
+
454  int64_t encoded_duration = kNoTimestamp;
+
455  if (track_num == audio_.track_num()) {
+
456  track = &audio_;
+
457  encryption_key_id = audio_encryption_key_id_;
+
458  if (encryption_key_id.empty()) {
+
459  encoded_duration = TryGetEncodedAudioDuration(data, size);
+
460  }
+
461  } else if (track_num == video_.track_num()) {
+
462  track = &video_;
+
463  encryption_key_id = video_encryption_key_id_;
+
464  stream_type = kStreamVideo;
+
465  } else if (ignored_tracks_.find(track_num) != ignored_tracks_.end()) {
+
466  return true;
+
467  } else if (Track* const text_track = FindTextTrack(track_num)) {
+
468  if (is_simple_block) // BlockGroup is required for WebVTT cues
+
469  return false;
+
470  if (block_duration < 0) // not specified
+
471  return false;
+
472  track = text_track;
+
473  stream_type = kStreamText;
+
474  } else {
+
475  LOG(ERROR) << "Unexpected track number " << track_num;
+
476  return false;
+
477  }
+
478 
+
479  last_block_timecode_ = timecode;
+
480 
+
481  int64_t timestamp = (cluster_timecode_ + timecode) * timecode_multiplier_;
+
482 
+
483  scoped_refptr<MediaSample> buffer;
+
484  if (stream_type != kStreamText) {
+
485  // The first bit of the flags is set when a SimpleBlock contains only
+
486  // keyframes. If this is a Block, then inspection of the payload is
+
487  // necessary to determine whether it contains a keyframe or not.
+
488  // http://www.matroska.org/technical/specs/index.html
+
489  bool is_keyframe =
+
490  is_simple_block
+
491  ? (flags & 0x80) != 0
+
492  : IsKeyframe(stream_type == kStreamVideo,
+
493  video_stream_info_ ? video_stream_info_->codec()
+
494  : kUnknownVideoCodec,
+
495  data, size);
+
496 
+
497  // Every encrypted Block has a signal byte and IV prepended to it. Current
+
498  // encrypted WebM request for comments specification is here
+
499  // http://wiki.webmproject.org/encryption/webm-encryption-rfc
+
500  scoped_ptr<DecryptConfig> decrypt_config;
+
501  int data_offset = 0;
+
502  if (!encryption_key_id.empty() &&
+
503  !WebMCreateDecryptConfig(
+
504  data, size,
+
505  reinterpret_cast<const uint8_t*>(encryption_key_id.data()),
+
506  encryption_key_id.size(),
+
507  &decrypt_config, &data_offset)) {
+
508  return false;
+
509  }
+
510 
+
511  buffer = MediaSample::CopyFrom(data + data_offset, size - data_offset,
+
512  additional, additional_size, is_keyframe);
+
513 
+
514  if (decrypt_config) {
+
515  // TODO(kqyang): Decrypt it if it is encrypted.
+
516  buffer->set_is_encrypted(true);
+
517  }
+
518  } else {
+
519  std::string id, settings, content;
+
520  WebMWebVTTParser::Parse(data, size, &id, &settings, &content);
+
521 
+
522  std::vector<uint8_t> side_data;
+
523  MakeSideData(id.begin(), id.end(),
+
524  settings.begin(), settings.end(),
+
525  &side_data);
+
526 
+
527  buffer = MediaSample::CopyFrom(
+
528  reinterpret_cast<const uint8_t*>(content.data()), content.length(),
+
529  &side_data[0], side_data.size(), true);
+
530  }
+
531 
+
532  buffer->set_pts(timestamp);
+
533  if (cluster_start_time_ == kNoTimestamp)
+
534  cluster_start_time_ = timestamp;
+
535 
+
536  int64_t block_duration_time_delta = kNoTimestamp;
+
537  if (block_duration >= 0) {
+
538  block_duration_time_delta = block_duration * timecode_multiplier_;
+
539  }
+
540 
+
541  // Prefer encoded duration over BlockGroup->BlockDuration or
+
542  // TrackEntry->DefaultDuration when available. This layering violation is a
+
543  // workaround for http://crbug.com/396634, decreasing the likelihood of
+
544  // fall-back to rough estimation techniques for Blocks that lack a
+
545  // BlockDuration at the end of a cluster. Duration estimation may still apply
+
546  // in cases of encryption and codecs for which we do not extract encoded
+
547  // duration. Estimates are applied as Block Timecode deltas, or once the whole
+
548  // stream is parsed in the case of the last Block in the stream. See
+
549  // Track::EmitBuffer and ApplyDurationEstimateIfNeeded().
+
550  if (encoded_duration != kNoTimestamp) {
+
551  DCHECK(encoded_duration != kInfiniteDuration);
+
552  DCHECK(encoded_duration > 0);
+
553  buffer->set_duration(encoded_duration);
+
554 
+
555  DVLOG(3) << __FUNCTION__ << " : "
+
556  << "Using encoded duration " << encoded_duration;
+
557 
+
558  if (block_duration_time_delta != kNoTimestamp) {
+
559  int64_t duration_difference =
+
560  block_duration_time_delta - encoded_duration;
+
561 
+
562  const auto kWarnDurationDiff = timecode_multiplier_ * 2;
+
563  if (duration_difference > kWarnDurationDiff) {
+
564  LIMITED_DLOG(INFO, num_duration_errors_, kMaxDurationErrorLogs)
+
565  << "BlockDuration (" << block_duration_time_delta / 1000
+
566  << "ms) differs significantly from encoded duration ("
+
567  << encoded_duration / 1000 << "ms).";
+
568  }
+
569  }
+
570  } else if (block_duration_time_delta != kNoTimestamp) {
+
571  buffer->set_duration(block_duration_time_delta);
+
572  } else {
+
573  buffer->set_duration(track->default_duration());
+
574  }
+
575 
+
576  if (!init_cb_.is_null() && !initialized_) {
+
577  std::vector<scoped_refptr<StreamInfo>> streams;
+
578  if (audio_stream_info_)
+
579  streams.push_back(audio_stream_info_);
+
580  if (video_stream_info_) {
+
581  if (stream_type == kStreamVideo) {
+
582  scoped_ptr<VPxParser> vpx_parser;
+
583  switch (video_stream_info_->codec()) {
+
584  case kCodecVP8:
+
585  vpx_parser.reset(new VP8Parser);
+
586  break;
+
587  case kCodecVP9:
+
588  vpx_parser.reset(new VP9Parser);
+
589  break;
+
590  default:
+
591  NOTIMPLEMENTED() << "Unsupported codec "
+
592  << video_stream_info_->codec();
+
593  return false;
+
594  }
+
595  std::vector<VPxFrameInfo> vpx_frames;
+
596  if (!vpx_parser->Parse(buffer->data(), buffer->data_size(),
+
597  &vpx_frames)) {
+
598  LOG(ERROR) << "Failed to parse vpx frame.";
+
599  return false;
+
600  }
+
601  if (vpx_frames.size() != 1u || !vpx_frames[0].is_keyframe) {
+
602  LOG(ERROR) << "The first frame should be a key frame.";
+
603  return false;
+
604  }
+
605 
+
606  const VPCodecConfiguration* codec_config = &vpx_parser->codec_config();
+
607  video_stream_info_->set_codec_string(
+
608  codec_config->GetCodecString(video_stream_info_->codec()));
+
609  std::vector<uint8_t> extra_data;
+
610  codec_config->Write(&extra_data);
+
611  video_stream_info_->set_extra_data(extra_data);
+
612  streams.push_back(video_stream_info_);
+
613  init_cb_.Run(streams);
+
614  initialized_ = true;
+
615  }
+
616  } else {
+
617  init_cb_.Run(streams);
+
618  initialized_ = true;
+
619  }
+
620  }
+
621 
+
622  return track->EmitBuffer(buffer);
+
623 }
+
624 
+
625 WebMClusterParser::Track::Track(int track_num,
+
626  bool is_video,
+
627  int64_t default_duration,
+
628  const MediaParser::NewSampleCB& new_sample_cb)
+
629  : track_num_(track_num),
+
630  is_video_(is_video),
+
631  default_duration_(default_duration),
+
632  estimated_next_frame_duration_(kNoTimestamp),
+
633  new_sample_cb_(new_sample_cb) {
+
634  DCHECK(default_duration_ == kNoTimestamp || default_duration_ > 0);
+
635 }
636 
-
637  return true;
-
638 }
-
639 
-
640 bool WebMClusterParser::Track::EmitBufferHelp(
-
641  const scoped_refptr<MediaSample>& buffer) {
-
642  DCHECK(!last_added_buffer_missing_duration_.get());
-
643 
-
644  int64_t duration = buffer->duration();
-
645  if (duration < 0 || duration == kNoTimestamp) {
-
646  LOG(ERROR) << "Invalid buffer duration: " << duration;
-
647  return false;
-
648  }
-
649 
-
650  // The estimated frame duration is the maximum non-zero duration since the
-
651  // last initialization segment.
-
652  if (duration > 0) {
-
653  int64_t orig_duration_estimate = estimated_next_frame_duration_;
-
654  if (estimated_next_frame_duration_ == kNoTimestamp) {
-
655  estimated_next_frame_duration_ = duration;
-
656  } else {
-
657  estimated_next_frame_duration_ =
-
658  std::max(duration, estimated_next_frame_duration_);
-
659  }
-
660 
-
661  if (orig_duration_estimate != estimated_next_frame_duration_) {
-
662  DVLOG(3) << "Updated duration estimate:"
-
663  << orig_duration_estimate
-
664  << " -> "
-
665  << estimated_next_frame_duration_
-
666  << " at timestamp: "
-
667  << buffer->dts();
-
668  }
-
669  }
-
670 
-
671  new_sample_cb_.Run(track_num_, buffer);
-
672  return true;
+
637 WebMClusterParser::Track::~Track() {}
+
638 
+
639 bool WebMClusterParser::Track::EmitBuffer(
+
640  const scoped_refptr<MediaSample>& buffer) {
+
641  DVLOG(2) << "EmitBuffer() : " << track_num_
+
642  << " ts " << buffer->pts()
+
643  << " dur " << buffer->duration()
+
644  << " kf " << buffer->is_key_frame()
+
645  << " size " << buffer->data_size();
+
646 
+
647  if (last_added_buffer_missing_duration_.get()) {
+
648  int64_t derived_duration =
+
649  buffer->pts() - last_added_buffer_missing_duration_->pts();
+
650  last_added_buffer_missing_duration_->set_duration(derived_duration);
+
651 
+
652  DVLOG(2) << "EmitBuffer() : applied derived duration to held-back buffer : "
+
653  << " ts "
+
654  << last_added_buffer_missing_duration_->pts()
+
655  << " dur "
+
656  << last_added_buffer_missing_duration_->duration()
+
657  << " kf " << last_added_buffer_missing_duration_->is_key_frame()
+
658  << " size " << last_added_buffer_missing_duration_->data_size();
+
659  scoped_refptr<MediaSample> updated_buffer =
+
660  last_added_buffer_missing_duration_;
+
661  last_added_buffer_missing_duration_ = NULL;
+
662  if (!EmitBufferHelp(updated_buffer))
+
663  return false;
+
664  }
+
665 
+
666  if (buffer->duration() == kNoTimestamp) {
+
667  last_added_buffer_missing_duration_ = buffer;
+
668  DVLOG(2) << "EmitBuffer() : holding back buffer that is missing duration";
+
669  return true;
+
670  }
+
671 
+
672  return EmitBufferHelp(buffer);
673 }
674 
-
675 int64_t WebMClusterParser::Track::GetDurationEstimate() {
-
676  int64_t duration = estimated_next_frame_duration_;
-
677  if (duration != kNoTimestamp) {
-
678  DVLOG(3) << __FUNCTION__ << " : using estimated duration";
-
679  } else {
-
680  DVLOG(3) << __FUNCTION__ << " : using hardcoded default duration";
-
681  if (is_video_) {
-
682  duration = kDefaultVideoBufferDurationInMs * kMicrosecondsPerMillisecond;
-
683  } else {
-
684  duration = kDefaultAudioBufferDurationInMs * kMicrosecondsPerMillisecond;
-
685  }
-
686  }
+
675 void WebMClusterParser::Track::ApplyDurationEstimateIfNeeded() {
+
676  if (!last_added_buffer_missing_duration_.get())
+
677  return;
+
678 
+
679  int64_t estimated_duration = GetDurationEstimate();
+
680  last_added_buffer_missing_duration_->set_duration(estimated_duration);
+
681 
+
682  LIMITED_LOG(INFO, num_duration_estimates_, kMaxDurationEstimateLogs)
+
683  << "Estimating WebM block duration to be " << estimated_duration / 1000
+
684  << "ms for the last (Simple)Block in the Cluster for this Track. Use "
+
685  "BlockGroups with BlockDurations at the end of each Track in a "
+
686  "Cluster to avoid estimation.";
687 
-
688  DCHECK(duration > 0);
-
689  DCHECK(duration != kNoTimestamp);
-
690  return duration;
-
691 }
-
692 
-
693 void WebMClusterParser::ResetTextTracks() {
-
694  for (TextTrackMap::iterator it = text_track_map_.begin();
-
695  it != text_track_map_.end();
-
696  ++it) {
-
697  it->second.Reset();
-
698  }
+
688  DVLOG(2) << __FUNCTION__ << " new dur : ts "
+
689  << last_added_buffer_missing_duration_->pts()
+
690  << " dur "
+
691  << last_added_buffer_missing_duration_->duration()
+
692  << " kf " << last_added_buffer_missing_duration_->is_key_frame()
+
693  << " size " << last_added_buffer_missing_duration_->data_size();
+
694 
+
695  // Don't use the applied duration as a future estimation (don't use
+
696  // EmitBufferHelp() here.)
+
697  new_sample_cb_.Run(track_num_, last_added_buffer_missing_duration_);
+
698  last_added_buffer_missing_duration_ = NULL;
699 }
700 
-
701 WebMClusterParser::Track*
-
702 WebMClusterParser::FindTextTrack(int track_num) {
-
703  const TextTrackMap::iterator it = text_track_map_.find(track_num);
+
701 void WebMClusterParser::Track::Reset() {
+
702  last_added_buffer_missing_duration_ = NULL;
+
703 }
704 
-
705  if (it == text_track_map_.end())
-
706  return NULL;
-
707 
-
708  return &it->second;
-
709 }
-
710 
-
711 } // namespace media
-
712 } // namespace edash_packager
-
void Reset()
Resets the parser state so it can accept a new cluster.
+
705 
+
706 bool WebMClusterParser::Track::EmitBufferHelp(
+
707  const scoped_refptr<MediaSample>& buffer) {
+
708  DCHECK(!last_added_buffer_missing_duration_.get());
+
709 
+
710  int64_t duration = buffer->duration();
+
711  if (duration < 0 || duration == kNoTimestamp) {
+
712  LOG(ERROR) << "Invalid buffer duration: " << duration;
+
713  return false;
+
714  }
+
715 
+
716  // The estimated frame duration is the maximum non-zero duration since the
+
717  // last initialization segment.
+
718  if (duration > 0) {
+
719  int64_t orig_duration_estimate = estimated_next_frame_duration_;
+
720  if (estimated_next_frame_duration_ == kNoTimestamp) {
+
721  estimated_next_frame_duration_ = duration;
+
722  } else {
+
723  estimated_next_frame_duration_ =
+
724  std::max(duration, estimated_next_frame_duration_);
+
725  }
+
726 
+
727  if (orig_duration_estimate != estimated_next_frame_duration_) {
+
728  DVLOG(3) << "Updated duration estimate:"
+
729  << orig_duration_estimate
+
730  << " -> "
+
731  << estimated_next_frame_duration_
+
732  << " at timestamp: "
+
733  << buffer->dts();
+
734  }
+
735  }
+
736 
+
737  new_sample_cb_.Run(track_num_, buffer);
+
738  return true;
+
739 }
+
740 
+
741 int64_t WebMClusterParser::Track::GetDurationEstimate() {
+
742  int64_t duration = estimated_next_frame_duration_;
+
743  if (duration != kNoTimestamp) {
+
744  DVLOG(3) << __FUNCTION__ << " : using estimated duration";
+
745  } else {
+
746  DVLOG(3) << __FUNCTION__ << " : using hardcoded default duration";
+
747  if (is_video_) {
+
748  duration = kDefaultVideoBufferDurationInMs * kMicrosecondsPerMillisecond;
+
749  } else {
+
750  duration = kDefaultAudioBufferDurationInMs * kMicrosecondsPerMillisecond;
+
751  }
+
752  }
+
753 
+
754  DCHECK(duration > 0);
+
755  DCHECK(duration != kNoTimestamp);
+
756  return duration;
+
757 }
+
758 
+
759 void WebMClusterParser::ResetTextTracks() {
+
760  for (TextTrackMap::iterator it = text_track_map_.begin();
+
761  it != text_track_map_.end();
+
762  ++it) {
+
763  it->second.Reset();
+
764  }
+
765 }
+
766 
+
767 WebMClusterParser::Track*
+
768 WebMClusterParser::FindTextTrack(int track_num) {
+
769  const TextTrackMap::iterator it = text_track_map_.find(track_num);
+
770 
+
771  if (it == text_track_map_.end())
+
772  return NULL;
+
773 
+
774  return &it->second;
+
775 }
+
776 
+
777 } // namespace media
+
778 } // namespace edash_packager
+
void Reset()
Resets the parser state so it can accept a new cluster.
+
static bool IsKeyframe(const uint8_t *data, size_t data_size)
Definition: vp8_parser.cc:183
static scoped_refptr< MediaSample > CopyFrom(const uint8_t *data, size_t size, bool is_key_frame)
Definition: media_sample.cc:45
static void Parse(const uint8_t *payload, int payload_size, std::string *id, std::string *settings, std::string *content)
Utility function to parse the WebVTT cue from a byte stream.
-
int Parse(const uint8_t *buf, int size)
+
int Parse(const uint8_t *buf, int size)
base::Callback< bool(uint32_t track_id, const scoped_refptr< MediaSample > &media_sample)> NewSampleCB
Definition: media_parser.h:43
+
base::Callback< void(const std::vector< scoped_refptr< StreamInfo > > &stream_info)> InitCB
Definition: media_parser.h:34
+
static bool IsKeyframe(const uint8_t *data, size_t data_size)
Definition: vp9_parser.cc:534
int Parse(const uint8_t *buf, int size)
Definition: webm_parser.cc:719
void Reset()
Resets the state of the parser so it can start parsing a new list.
Definition: webm_parser.cc:714
- + diff --git a/docs/d5/d91/es__parser__adts_8cc_source.html b/docs/d5/d91/es__parser__adts_8cc_source.html index 5c5e0b17fb..90439252c2 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 a213f0b124..d7856da726 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 0d70d54f96..9746cbfb01 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 b9422d4324..2167f35d69 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 96ee6fe006..9067a19a7f 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 dd039981f8..770e5a25a2 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 03bb72e053..c052b43e1c 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 0ab399ded8..2446479556 100644 --- a/docs/d5/dce/classedash__packager_1_1media_1_1Demuxer.html +++ b/docs/d5/dce/classedash__packager_1_1media_1_1Demuxer.html @@ -294,7 +294,7 @@ Public Member Functions diff --git a/docs/d5/dce/classedash__packager_1_1media_1_1VP8Parser.html b/docs/d5/dce/classedash__packager_1_1media_1_1VP8Parser.html new file mode 100644 index 0000000000..9b3b07ee55 --- /dev/null +++ b/docs/d5/dce/classedash__packager_1_1media_1_1VP8Parser.html @@ -0,0 +1,243 @@ + + + + + + +DASH Media Packaging SDK: edash_packager::media::VP8Parser Class Reference + + + + + + + + + +
+
+ + + + + + +
+
DASH Media Packaging SDK +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
edash_packager::media::VP8Parser Class Reference
+
+
+ +

#include <vp8_parser.h>

+
+Inheritance diagram for edash_packager::media::VP8Parser:
+
+
+ + +edash_packager::media::VPxParser + +
+ + + + + + + +

+Public Member Functions

bool Parse (const uint8_t *data, size_t data_size, std::vector< VPxFrameInfo > *vpx_frames) override
 
- Public Member Functions inherited from edash_packager::media::VPxParser
const VPCodecConfigurationcodec_config () const
 
+ + + +

+Static Public Member Functions

static bool IsKeyframe (const uint8_t *data, size_t data_size)
 
+ + + + +

+Additional Inherited Members

- Protected Member Functions inherited from edash_packager::media::VPxParser
+VPCodecConfigurationwritable_codec_config ()
 
+

Detailed Description

+

Class to parse a vp8 bit stream. Implemented according to https://tools.ietf.org/html/rfc6386.

+ +

Definition at line 21 of file vp8_parser.h.

+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool edash_packager::media::VP8Parser::IsKeyframe (const uint8_t * data,
size_t data_size 
)
+
+static
+
+

A convenient utility function to check whether the frame is a keyframe. Note that this function does not do a full parse of the frame header, so should be more efficient than Parse().

+
Parameters
+ + +
data_sizeSize of the sample in bytes.
+
+
+
Returns
true if it is, false if it is not or if there is parsing error.
+ +

Definition at line 183 of file vp8_parser.cc.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool edash_packager::media::VP8Parser::Parse (const uint8_t * data,
size_t data_size,
std::vector< VPxFrameInfo > * vpx_frames 
)
+
+overridevirtual
+
+

Parse data with size data_size.

+
Parameters
+ + + +
data_sizeSize of the sample in bytes. Note that it should be a full sample.
[out]vpx_framespoints to the list of VPx frames for the current sample on success. Cannot be NULL.
+
+
+
Returns
true on success, false otherwise.
+ +

Implements edash_packager::media::VPxParser.

+ +

Definition at line 100 of file vp8_parser.cc.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/docs/d5/dce/classedash__packager_1_1media_1_1VP8Parser.png b/docs/d5/dce/classedash__packager_1_1media_1_1VP8Parser.png new file mode 100644 index 0000000000..553bb15f00 Binary files /dev/null and b/docs/d5/dce/classedash__packager_1_1media_1_1VP8Parser.png differ diff --git a/docs/d5/dcf/rsa__key_8h_source.html b/docs/d5/dcf/rsa__key_8h_source.html index 194115ef89..c49289711f 100644 --- a/docs/d5/dcf/rsa__key_8h_source.html +++ b/docs/d5/dcf/rsa__key_8h_source.html @@ -165,7 +165,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/dd2/classedash__packager_1_1media_1_1VPxParser.html b/docs/d5/dd2/classedash__packager_1_1media_1_1VPxParser.html new file mode 100644 index 0000000000..b95ef9e514 --- /dev/null +++ b/docs/d5/dd2/classedash__packager_1_1media_1_1VPxParser.html @@ -0,0 +1,213 @@ + + + + + + +DASH Media Packaging SDK: edash_packager::media::VPxParser Class Reference + + + + + + + + + +
+
+ + + + + + +
+
DASH Media Packaging SDK +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
edash_packager::media::VPxParser Class Referenceabstract
+
+
+
+Inheritance diagram for edash_packager::media::VPxParser:
+
+
+ + +edash_packager::media::VP8Parser +edash_packager::media::VP9Parser + +
+ + + + + + +

+Public Member Functions

virtual bool Parse (const uint8_t *data, size_t data_size, std::vector< VPxFrameInfo > *vpx_frames)=0
 
const VPCodecConfigurationcodec_config () const
 
+ + + +

+Protected Member Functions

+VPCodecConfigurationwritable_codec_config ()
 
+

Detailed Description

+
+

Definition at line 27 of file vpx_parser.h.

+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + +
const VPCodecConfiguration& edash_packager::media::VPxParser::codec_config () const
+
+inline
+
+
Returns
VPx codec configuration extracted. Note that it is only valid after parsing a keyframe or intra frame successfully.
+ +

Definition at line 44 of file vpx_parser.h.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual bool edash_packager::media::VPxParser::Parse (const uint8_t * data,
size_t data_size,
std::vector< VPxFrameInfo > * vpx_frames 
)
+
+pure virtual
+
+

Parse data with size data_size.

+
Parameters
+ + + +
data_sizeSize of the sample in bytes. Note that it should be a full sample.
[out]vpx_framespoints to the list of VPx frames for the current sample on success. Cannot be NULL.
+
+
+
Returns
true on success, false otherwise.
+ +

Implemented in edash_packager::media::VP8Parser, and edash_packager::media::VP9Parser.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/docs/d5/dd2/classedash__packager_1_1media_1_1VPxParser.png b/docs/d5/dd2/classedash__packager_1_1media_1_1VPxParser.png new file mode 100644 index 0000000000..bd466439f5 Binary files /dev/null and b/docs/d5/dd2/classedash__packager_1_1media_1_1VPxParser.png differ diff --git a/docs/d5/dda/ts__section__psi_8h_source.html b/docs/d5/dda/ts__section__psi_8h_source.html index 4f7ed5ed85..c04235dc71 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 bbc529a14e..363314ecb0 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 86e2b2149d..c1e02dc6cb 100644 --- a/docs/d5/de0/bit__reader_8cc_source.html +++ b/docs/d5/de0/bit__reader_8cc_source.html @@ -99,93 +99,107 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
10 namespace media {
11 
12 BitReader::BitReader(const uint8_t* data, off_t size)
-
13  : data_(data), bytes_left_(size), num_remaining_bits_in_curr_byte_(0) {
-
14  DCHECK(data_ != NULL && bytes_left_ > 0);
-
15 
-
16  UpdateCurrByte();
-
17 }
+
13  : data_(data),
+
14  initial_size_(size),
+
15  bytes_left_(size),
+
16  num_remaining_bits_in_curr_byte_(0) {
+
17  DCHECK(data_ != NULL && bytes_left_ > 0);
18 
-
19 BitReader::~BitReader() {}
-
20 
-
21 bool BitReader::SkipBits(int num_bits) {
-
22  DCHECK_GE(num_bits, 0);
+
19  UpdateCurrByte();
+
20 }
+
21 
+
22 BitReader::~BitReader() {}
23 
-
24  // Skip any bits in the current byte waiting to be processed, then
-
25  // process full bytes until less than 8 bits remaining.
-
26  if (num_bits > num_remaining_bits_in_curr_byte_) {
-
27  num_bits -= num_remaining_bits_in_curr_byte_;
-
28  num_remaining_bits_in_curr_byte_ = 0;
-
29 
-
30  int num_bytes = num_bits / 8;
-
31  num_bits %= 8;
-
32  if (bytes_left_ < num_bytes) {
-
33  bytes_left_ = 0;
-
34  return false;
-
35  }
-
36  bytes_left_ -= num_bytes;
-
37  data_ += num_bytes;
-
38  UpdateCurrByte();
-
39 
-
40  // If there is no more data remaining, only return true if we
-
41  // skipped all that were requested.
-
42  if (num_remaining_bits_in_curr_byte_ == 0)
-
43  return (num_bits == 0);
-
44  }
-
45 
-
46  // Less than 8 bits remaining to skip. Use ReadBitsInternal to verify
-
47  // that the remaining bits we need exist, and adjust them as necessary
-
48  // for subsequent operations.
-
49  uint64_t not_needed;
-
50  return ReadBitsInternal(num_bits, &not_needed);
-
51 }
-
52 
- -
54  return 8 * bytes_left_ + num_remaining_bits_in_curr_byte_;
-
55 }
-
56 
-
57 bool BitReader::ReadBitsInternal(int num_bits, uint64_t* out) {
-
58  DCHECK_LE(num_bits, 64);
-
59 
-
60  *out = 0;
+
24 bool BitReader::SkipBits(int num_bits) {
+
25  DCHECK_GE(num_bits, 0);
+
26 
+
27  // Skip any bits in the current byte waiting to be processed, then
+
28  // process full bytes until less than 8 bits remaining.
+
29  if (num_bits > num_remaining_bits_in_curr_byte_) {
+
30  num_bits -= num_remaining_bits_in_curr_byte_;
+
31  num_remaining_bits_in_curr_byte_ = 0;
+
32 
+
33  int num_bytes = num_bits / 8;
+
34  num_bits %= 8;
+
35  if (bytes_left_ < num_bytes) {
+
36  bytes_left_ = 0;
+
37  return false;
+
38  }
+
39  bytes_left_ -= num_bytes;
+
40  data_ += num_bytes;
+
41  UpdateCurrByte();
+
42 
+
43  // If there is no more data remaining, only return true if we
+
44  // skipped all that were requested.
+
45  if (num_remaining_bits_in_curr_byte_ == 0)
+
46  return (num_bits == 0);
+
47  }
+
48 
+
49  // Less than 8 bits remaining to skip. Use ReadBitsInternal to verify
+
50  // that the remaining bits we need exist, and adjust them as necessary
+
51  // for subsequent operations.
+
52  uint64_t not_needed;
+
53  return ReadBitsInternal(num_bits, &not_needed);
+
54 }
+
55 
+
56 bool BitReader::SkipBytes(int num_bytes) {
+
57  if (num_remaining_bits_in_curr_byte_ != 8)
+
58  return false;
+
59  if (num_bytes == 0)
+
60  return true;
61 
-
62  while (num_remaining_bits_in_curr_byte_ != 0 && num_bits != 0) {
-
63  int bits_to_take = std::min(num_remaining_bits_in_curr_byte_, num_bits);
-
64 
-
65  *out <<= bits_to_take;
-
66  *out += curr_byte_ >> (num_remaining_bits_in_curr_byte_ - bits_to_take);
-
67  num_bits -= bits_to_take;
-
68  num_remaining_bits_in_curr_byte_ -= bits_to_take;
-
69  curr_byte_ &= (1 << num_remaining_bits_in_curr_byte_) - 1;
+
62  data_ += num_bytes - 1; // One additional byte in curr_byte_.
+
63  if (num_bytes > bytes_left_ + 1)
+
64  return false;
+
65  bytes_left_ -= num_bytes - 1;
+
66  num_remaining_bits_in_curr_byte_ = 0;
+
67  UpdateCurrByte();
+
68  return true;
+
69 }
70 
-
71  if (num_remaining_bits_in_curr_byte_ == 0)
-
72  UpdateCurrByte();
-
73  }
-
74 
-
75  return num_bits == 0;
-
76 }
-
77 
-
78 void BitReader::UpdateCurrByte() {
-
79  DCHECK_EQ(num_remaining_bits_in_curr_byte_, 0);
-
80 
-
81  if (bytes_left_ == 0)
-
82  return;
-
83 
-
84  // Load a new byte and advance pointers.
-
85  curr_byte_ = *data_;
-
86  ++data_;
-
87  --bytes_left_;
-
88  num_remaining_bits_in_curr_byte_ = 8;
-
89 }
-
90 
-
91 } // namespace media
-
92 } // namespace edash_packager
+
71 bool BitReader::ReadBitsInternal(int num_bits, uint64_t* out) {
+
72  DCHECK_LE(num_bits, 64);
+
73 
+
74  *out = 0;
+
75 
+
76  while (num_remaining_bits_in_curr_byte_ != 0 && num_bits != 0) {
+
77  int bits_to_take = std::min(num_remaining_bits_in_curr_byte_, num_bits);
+
78 
+
79  *out <<= bits_to_take;
+
80  *out += curr_byte_ >> (num_remaining_bits_in_curr_byte_ - bits_to_take);
+
81  num_bits -= bits_to_take;
+
82  num_remaining_bits_in_curr_byte_ -= bits_to_take;
+
83  curr_byte_ &= (1 << num_remaining_bits_in_curr_byte_) - 1;
+
84 
+
85  if (num_remaining_bits_in_curr_byte_ == 0)
+
86  UpdateCurrByte();
+
87  }
+
88 
+
89  return num_bits == 0;
+
90 }
+
91 
+
92 void BitReader::UpdateCurrByte() {
+
93  DCHECK_EQ(num_remaining_bits_in_curr_byte_, 0);
+
94 
+
95  if (bytes_left_ == 0)
+
96  return;
+
97 
+
98  // Load a new byte and advance pointers.
+
99  curr_byte_ = *data_;
+
100  ++data_;
+
101  --bytes_left_;
+
102  num_remaining_bits_in_curr_byte_ = 8;
+
103 }
+
104 
+
105 } // namespace media
+
106 } // namespace edash_packager
BitReader(const uint8_t *data, off_t size)
Definition: bit_reader.cc:12
- -
bool SkipBits(int num_bits)
Definition: bit_reader.cc:21
+
bool SkipBits(int num_bits)
Definition: bit_reader.cc:24
+
bool SkipBytes(int num_bytes)
Definition: bit_reader.cc:56
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 1fe25e1c90..078f8d52cb 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 5b3084988b..3d265e7a8b 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 f27258164a..755fa0b17e 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 4ab77e4f84..b622eb9453 100644 --- a/docs/d5/dfc/file_8cc_source.html +++ b/docs/d5/dfc/file_8cc_source.html @@ -353,7 +353,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 3a625f7bfd..d88df9924f 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 @@ -106,7 +106,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 0e04e7258c..c6b3893608 100644 --- a/docs/d6/d06/classedash__packager_1_1media_1_1StreamInfo.html +++ b/docs/d6/d06/classedash__packager_1_1media_1_1StreamInfo.html @@ -229,7 +229,7 @@ class base::RefCountedThre diff --git a/docs/d6/d10/classedash__packager_1_1media_1_1VideoStreamInfo-members.html b/docs/d6/d10/classedash__packager_1_1media_1_1VideoStreamInfo-members.html index 791649f8cd..d45b2a643a 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 @@ -104,27 +104,28 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); nalu_length_size() const (defined in edash_packager::media::VideoStreamInfo)edash_packager::media::VideoStreamInfoinline pixel_height() const edash_packager::media::VideoStreamInfoinline pixel_width() const edash_packager::media::VideoStreamInfoinline - set_codec_string(const std::string &codec_string) (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline - set_duration(int duration) (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline - set_extra_data(const std::vector< uint8_t > &data) (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline - set_height(uint32_t height) (defined in edash_packager::media::VideoStreamInfo)edash_packager::media::VideoStreamInfoinline - set_language(const std::string &language) (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline - set_pixel_height(uint32_t pixel_height) (defined in edash_packager::media::VideoStreamInfo)edash_packager::media::VideoStreamInfoinline - set_pixel_width(uint32_t pixel_width) (defined in edash_packager::media::VideoStreamInfo)edash_packager::media::VideoStreamInfoinline - set_width(uint32_t width) (defined in edash_packager::media::VideoStreamInfo)edash_packager::media::VideoStreamInfoinline - stream_type() const (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline - StreamInfo(StreamType stream_type, int track_id, uint32_t time_scale, uint64_t duration, const std::string &codec_string, const std::string &language, const uint8_t *extra_data, size_t extra_data_size, bool is_encrypted) (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfo - time_scale() const (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline - ToString() const overrideedash_packager::media::VideoStreamInfovirtual - track_id() const (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline - trick_play_rate() const (defined in edash_packager::media::VideoStreamInfo)edash_packager::media::VideoStreamInfoinline - 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)edash_packager::media::VideoStreamInfo - width() const (defined in edash_packager::media::VideoStreamInfo)edash_packager::media::VideoStreamInfoinline - ~StreamInfo() (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoprotectedvirtual + set_codec(VideoCodec codec) (defined in edash_packager::media::VideoStreamInfo)edash_packager::media::VideoStreamInfoinline + set_codec_string(const std::string &codec_string) (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline + set_duration(int duration) (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline + set_extra_data(const std::vector< uint8_t > &data) (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline + set_height(uint32_t height) (defined in edash_packager::media::VideoStreamInfo)edash_packager::media::VideoStreamInfoinline + set_language(const std::string &language) (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline + set_pixel_height(uint32_t pixel_height) (defined in edash_packager::media::VideoStreamInfo)edash_packager::media::VideoStreamInfoinline + set_pixel_width(uint32_t pixel_width) (defined in edash_packager::media::VideoStreamInfo)edash_packager::media::VideoStreamInfoinline + set_width(uint32_t width) (defined in edash_packager::media::VideoStreamInfo)edash_packager::media::VideoStreamInfoinline + stream_type() const (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline + StreamInfo(StreamType stream_type, int track_id, uint32_t time_scale, uint64_t duration, const std::string &codec_string, const std::string &language, const uint8_t *extra_data, size_t extra_data_size, bool is_encrypted) (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfo + time_scale() const (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline + ToString() const overrideedash_packager::media::VideoStreamInfovirtual + track_id() const (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline + trick_play_rate() const (defined in edash_packager::media::VideoStreamInfo)edash_packager::media::VideoStreamInfoinline + 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)edash_packager::media::VideoStreamInfo + width() const (defined in edash_packager::media::VideoStreamInfo)edash_packager::media::VideoStreamInfoinline + ~StreamInfo() (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoprotectedvirtual 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 1c85eaf8e9..7fe4f898b7 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 @@ -108,7 +108,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 5d04a70165..6fd85dfdd5 100644 --- a/docs/d6/d13/classedash__packager_1_1media_1_1mp4_1_1CompositionOffsetIterator-members.html +++ b/docs/d6/d13/classedash__packager_1_1media_1_1mp4_1_1CompositionOffsetIterator-members.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d16/text__stream__info_8cc_source.html b/docs/d6/d16/text__stream__info_8cc_source.html index 0fa68f9dd8..497d63cfe2 100644 --- a/docs/d6/d16/text__stream__info_8cc_source.html +++ b/docs/d6/d16/text__stream__info_8cc_source.html @@ -132,7 +132,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d17/es__parser__h264_8cc_source.html b/docs/d6/d17/es__parser__h264_8cc_source.html index 360b3cad0d..6683b37bd5 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 47dca7b23d..2b0d84c866 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 @@ -113,7 +113,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 7877892da4..dde0e1ae96 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 bab059b8f2..e36f4e1053 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 6b06d0dfc2..bc01aaebd8 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 5d55d9a89d..629b34fb1c 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 d1046005b0..3096c3c4ba 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 09e6d773a9..7e4b36e1d9 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 d875f3689f..672218934b 100644 --- a/docs/d6/d41/encrypting__fragmenter_8cc_source.html +++ b/docs/d6/d41/encrypting__fragmenter_8cc_source.html @@ -99,184 +99,213 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
10 #include "packager/media/base/buffer_reader.h"
11 #include "packager/media/base/key_source.h"
12 #include "packager/media/base/media_sample.h"
-
13 #include "packager/media/formats/mp4/box_definitions.h"
-
14 #include "packager/media/formats/mp4/cenc.h"
-
15 
-
16 namespace {
-
17 // Generate 64bit IV by default.
-
18 const size_t kDefaultIvSize = 8u;
-
19 } // namespace
-
20 
-
21 namespace edash_packager {
-
22 namespace media {
-
23 namespace mp4 {
-
24 
- -
26  TrackFragment* traf,
-
27  scoped_ptr<EncryptionKey> encryption_key,
-
28  int64_t clear_time,
-
29  uint8_t nalu_length_size)
-
30  : Fragmenter(traf),
-
31  encryption_key_(encryption_key.Pass()),
-
32  nalu_length_size_(nalu_length_size),
-
33  clear_time_(clear_time) {
-
34  DCHECK(encryption_key_);
-
35 }
-
36 EncryptingFragmenter::~EncryptingFragmenter() {}
-
37 
-
38 
-
39 Status EncryptingFragmenter::AddSample(scoped_refptr<MediaSample> sample) {
-
40  DCHECK(sample);
-
41  if (!fragment_initialized()) {
-
42  Status status = InitializeFragment(sample->dts());
-
43  if (!status.ok())
-
44  return status;
-
45  }
-
46  if (encryptor_) {
-
47  Status status = EncryptSample(sample);
-
48  if (!status.ok())
-
49  return status;
-
50  }
-
51  return Fragmenter::AddSample(sample);
-
52 }
-
53 
- -
55  Status status = Fragmenter::InitializeFragment(first_sample_dts);
-
56  if (!status.ok())
-
57  return status;
-
58 
-
59  traf()->auxiliary_size.sample_info_sizes.clear();
-
60  traf()->auxiliary_offset.offsets.clear();
-
61 
-
62  const bool enable_encryption = clear_time_ <= 0;
-
63  if (!enable_encryption) {
-
64  // This fragment should be in clear text.
-
65  // At most two sample description entries, an encrypted entry and a clear
-
66  // entry, are generated. The 1-based clear entry index is always 2.
-
67  const uint32_t kClearSampleDescriptionIndex = 2;
-
68 
-
69  traf()->header.flags |=
-
70  TrackFragmentHeader::kSampleDescriptionIndexPresentMask;
-
71  traf()->header.sample_description_index = kClearSampleDescriptionIndex;
-
72  }
-
73  return PrepareFragmentForEncryption(enable_encryption);
-
74 }
-
75 
- -
77  if (encryptor_) {
-
78  DCHECK_LE(clear_time_, 0);
- -
80  } else {
-
81  DCHECK_GT(clear_time_, 0);
-
82  clear_time_ -= fragment_duration();
-
83  }
- -
85 }
-
86 
- -
88  bool enable_encryption) {
-
89  return (!enable_encryption || encryptor_) ? Status::OK : CreateEncryptor();
-
90 }
-
91 
- -
93  // The offset will be adjusted in Segmenter after knowing moof size.
-
94  traf()->auxiliary_offset.offsets.push_back(0);
+
13 #include "packager/media/filters/vp8_parser.h"
+
14 #include "packager/media/filters/vp9_parser.h"
+
15 #include "packager/media/formats/mp4/box_definitions.h"
+
16 #include "packager/media/formats/mp4/cenc.h"
+
17 
+
18 namespace {
+
19 // Generate 64bit IV by default.
+
20 const size_t kDefaultIvSize = 8u;
+
21 } // namespace
+
22 
+
23 namespace edash_packager {
+
24 namespace media {
+
25 namespace mp4 {
+
26 
+ +
28  TrackFragment* traf,
+
29  scoped_ptr<EncryptionKey> encryption_key,
+
30  int64_t clear_time,
+
31  VideoCodec video_codec,
+
32  uint8_t nalu_length_size)
+
33  : Fragmenter(traf),
+
34  encryption_key_(encryption_key.Pass()),
+
35  video_codec_(video_codec),
+
36  nalu_length_size_(nalu_length_size),
+
37  clear_time_(clear_time) {
+
38  DCHECK(encryption_key_);
+
39  if (video_codec == kCodecVP8) {
+
40  vpx_parser_.reset(new VP8Parser);
+
41  } else if (video_codec == kCodecVP9) {
+
42  vpx_parser_.reset(new VP9Parser);
+
43  }
+
44 }
+
45 
+
46 EncryptingFragmenter::~EncryptingFragmenter() {}
+
47 
+
48 Status EncryptingFragmenter::AddSample(scoped_refptr<MediaSample> sample) {
+
49  DCHECK(sample);
+
50  if (!fragment_initialized()) {
+
51  Status status = InitializeFragment(sample->dts());
+
52  if (!status.ok())
+
53  return status;
+
54  }
+
55  if (encryptor_) {
+
56  Status status = EncryptSample(sample);
+
57  if (!status.ok())
+
58  return status;
+
59  }
+
60  return Fragmenter::AddSample(sample);
+
61 }
+
62 
+ +
64  Status status = Fragmenter::InitializeFragment(first_sample_dts);
+
65  if (!status.ok())
+
66  return status;
+
67 
+
68  traf()->auxiliary_size.sample_info_sizes.clear();
+
69  traf()->auxiliary_offset.offsets.clear();
+
70 
+
71  const bool enable_encryption = clear_time_ <= 0;
+
72  if (!enable_encryption) {
+
73  // This fragment should be in clear text.
+
74  // At most two sample description entries, an encrypted entry and a clear
+
75  // entry, are generated. The 1-based clear entry index is always 2.
+
76  const uint32_t kClearSampleDescriptionIndex = 2;
+
77 
+
78  traf()->header.flags |=
+
79  TrackFragmentHeader::kSampleDescriptionIndexPresentMask;
+
80  traf()->header.sample_description_index = kClearSampleDescriptionIndex;
+
81  }
+
82  return PrepareFragmentForEncryption(enable_encryption);
+
83 }
+
84 
+ +
86  if (encryptor_) {
+
87  DCHECK_LE(clear_time_, 0);
+ +
89  } else {
+
90  DCHECK_GT(clear_time_, 0);
+
91  clear_time_ -= fragment_duration();
+
92  }
+ +
94 }
95 
-
96  // Optimize saiz box.
-
97  SampleAuxiliaryInformationSize& saiz = traf()->auxiliary_size;
-
98  saiz.sample_count = traf()->runs[0].sample_sizes.size();
-
99  if (!saiz.sample_info_sizes.empty()) {
-
100  if (!OptimizeSampleEntries(&saiz.sample_info_sizes,
-
101  &saiz.default_sample_info_size)) {
-
102  saiz.default_sample_info_size = 0;
-
103  }
-
104  } else {
-
105  // |sample_info_sizes| table is filled in only for subsample encryption,
-
106  // otherwise |sample_info_size| is just the IV size.
-
107  DCHECK(!IsSubsampleEncryptionRequired());
-
108  saiz.default_sample_info_size = encryptor_->iv().size();
-
109  }
-
110 }
-
111 
- -
113  DCHECK(encryption_key_);
-
114 
-
115  scoped_ptr<AesCtrEncryptor> encryptor(new AesCtrEncryptor());
-
116  const bool initialized = encryption_key_->iv.empty()
-
117  ? encryptor->InitializeWithRandomIv(
-
118  encryption_key_->key, kDefaultIvSize)
-
119  : encryptor->InitializeWithIv(
-
120  encryption_key_->key, encryption_key_->iv);
-
121  if (!initialized)
-
122  return Status(error::MUXER_FAILURE, "Failed to create the encryptor.");
-
123  encryptor_ = encryptor.Pass();
-
124  return Status::OK;
-
125 }
-
126 
-
127 void EncryptingFragmenter::EncryptBytes(uint8_t* data, uint32_t size) {
-
128  DCHECK(encryptor_);
-
129  CHECK(encryptor_->Encrypt(data, size, data));
-
130 }
-
131 
-
132 Status EncryptingFragmenter::EncryptSample(scoped_refptr<MediaSample> sample) {
-
133  DCHECK(encryptor_);
-
134 
-
135  FrameCENCInfo cenc_info(encryptor_->iv());
-
136  uint8_t* data = sample->writable_data();
-
137  if (!IsSubsampleEncryptionRequired()) {
-
138  EncryptBytes(data, sample->data_size());
-
139  } else {
-
140  BufferReader reader(data, sample->data_size());
-
141  while (reader.HasBytes(1)) {
-
142  uint64_t nalu_length;
-
143  if (!reader.ReadNBytesInto8(&nalu_length, nalu_length_size_))
-
144  return Status(error::MUXER_FAILURE, "Fail to read nalu_length.");
-
145 
-
146  SubsampleEntry subsample;
-
147  subsample.clear_bytes = nalu_length_size_ + 1;
-
148  subsample.cipher_bytes = nalu_length - 1;
-
149  if (!reader.SkipBytes(nalu_length)) {
-
150  return Status(error::MUXER_FAILURE,
-
151  "Sample size does not match nalu_length.");
+ +
97  bool enable_encryption) {
+
98  return (!enable_encryption || encryptor_) ? Status::OK : CreateEncryptor();
+
99 }
+
100 
+ +
102  // The offset will be adjusted in Segmenter after knowing moof size.
+
103  traf()->auxiliary_offset.offsets.push_back(0);
+
104 
+
105  // Optimize saiz box.
+
106  SampleAuxiliaryInformationSize& saiz = traf()->auxiliary_size;
+
107  saiz.sample_count = traf()->runs[0].sample_sizes.size();
+
108  if (!saiz.sample_info_sizes.empty()) {
+
109  if (!OptimizeSampleEntries(&saiz.sample_info_sizes,
+
110  &saiz.default_sample_info_size)) {
+
111  saiz.default_sample_info_size = 0;
+
112  }
+
113  } else {
+
114  // |sample_info_sizes| table is filled in only for subsample encryption,
+
115  // otherwise |sample_info_size| is just the IV size.
+
116  DCHECK(!IsSubsampleEncryptionRequired());
+
117  saiz.default_sample_info_size = encryptor_->iv().size();
+
118  }
+
119 }
+
120 
+ +
122  DCHECK(encryption_key_);
+
123 
+
124  scoped_ptr<AesCtrEncryptor> encryptor(new AesCtrEncryptor());
+
125  const bool initialized = encryption_key_->iv.empty()
+
126  ? encryptor->InitializeWithRandomIv(
+
127  encryption_key_->key, kDefaultIvSize)
+
128  : encryptor->InitializeWithIv(
+
129  encryption_key_->key, encryption_key_->iv);
+
130  if (!initialized)
+
131  return Status(error::MUXER_FAILURE, "Failed to create the encryptor.");
+
132  encryptor_ = encryptor.Pass();
+
133  return Status::OK;
+
134 }
+
135 
+
136 void EncryptingFragmenter::EncryptBytes(uint8_t* data, uint32_t size) {
+
137  DCHECK(encryptor_);
+
138  CHECK(encryptor_->Encrypt(data, size, data));
+
139 }
+
140 
+
141 Status EncryptingFragmenter::EncryptSample(scoped_refptr<MediaSample> sample) {
+
142  DCHECK(encryptor_);
+
143 
+
144  FrameCENCInfo cenc_info(encryptor_->iv());
+
145  uint8_t* data = sample->writable_data();
+
146  if (IsSubsampleEncryptionRequired()) {
+
147  if (vpx_parser_) {
+
148  std::vector<VPxFrameInfo> vpx_frames;
+
149  if (!vpx_parser_->Parse(sample->data(), sample->data_size(),
+
150  &vpx_frames)) {
+
151  return Status(error::MUXER_FAILURE, "Failed to parse vpx frame.");
152  }
-
153 
-
154  EncryptBytes(data + subsample.clear_bytes, subsample.cipher_bytes);
-
155  cenc_info.AddSubsample(subsample);
-
156  data += nalu_length_size_ + nalu_length;
-
157  }
-
158 
-
159  // The length of per-sample auxiliary datum, defined in CENC ch. 7.
-
160  traf()->auxiliary_size.sample_info_sizes.push_back(cenc_info.ComputeSize());
-
161  }
-
162 
-
163  cenc_info.Write(aux_data());
-
164  encryptor_->UpdateIv();
-
165  return Status::OK;
-
166 }
-
167 
-
168 } // namespace mp4
-
169 } // namespace media
-
170 } // namespace edash_packager
+
153  for (const VPxFrameInfo& frame : vpx_frames) {
+
154  SubsampleEntry subsample;
+
155  subsample.clear_bytes = frame.uncompressed_header_size;
+
156  subsample.cipher_bytes =
+
157  frame.frame_size - frame.uncompressed_header_size;
+
158  cenc_info.AddSubsample(subsample);
+
159  if (subsample.cipher_bytes > 0)
+
160  EncryptBytes(data + subsample.clear_bytes, subsample.cipher_bytes);
+
161  data += frame.frame_size;
+
162  }
+
163  } else {
+
164  BufferReader reader(data, sample->data_size());
+
165  while (reader.HasBytes(1)) {
+
166  uint64_t nalu_length;
+
167  if (!reader.ReadNBytesInto8(&nalu_length, nalu_length_size_))
+
168  return Status(error::MUXER_FAILURE, "Fail to read nalu_length.");
+
169 
+
170  SubsampleEntry subsample;
+
171  subsample.clear_bytes = nalu_length_size_ + 1;
+
172  subsample.cipher_bytes = nalu_length - 1;
+
173  if (!reader.SkipBytes(nalu_length)) {
+
174  return Status(error::MUXER_FAILURE,
+
175  "Sample size does not match nalu_length.");
+
176  }
+
177 
+
178  EncryptBytes(data + subsample.clear_bytes, subsample.cipher_bytes);
+
179  cenc_info.AddSubsample(subsample);
+
180  data += nalu_length_size_ + nalu_length;
+
181  }
+
182  }
+
183 
+
184  // The length of per-sample auxiliary datum, defined in CENC ch. 7.
+
185  traf()->auxiliary_size.sample_info_sizes.push_back(cenc_info.ComputeSize());
+
186  } else {
+
187  EncryptBytes(data, sample->data_size());
+
188  }
+
189 
+
190  cenc_info.Write(aux_data());
+
191  encryptor_->UpdateIv();
+
192  return Status::OK;
+
193 }
+
194 
+
195 } // namespace mp4
+
196 } // namespace media
+
197 } // namespace edash_packager
- +
EncryptingFragmenter(TrackFragment *traf, scoped_ptr< EncryptionKey > encryption_key, int64_t clear_time, VideoCodec video_codec, uint8_t nalu_length_size)
+ -
Status InitializeFragment(int64_t first_sample_dts) override
+
Status InitializeFragment(int64_t first_sample_dts) override
virtual Status InitializeFragment(int64_t first_sample_dts)
Definition: fragmenter.cc:73
virtual Status AddSample(scoped_refptr< MediaSample > sample)
Definition: fragmenter.cc:36
+
Class to parse a vp9 bit stream.
Definition: vp9_parser.h:20
bool OptimizeSampleEntries(std::vector< T > *entries, T *default_value)
Definition: fragmenter.h:90
-
Status AddSample(scoped_refptr< MediaSample > sample) override
+
Status AddSample(scoped_refptr< MediaSample > sample) override
-
void FinalizeFragment() override
Finalize and optimize the fragment.
+
void FinalizeFragment() override
Finalize and optimize the fragment.
-
virtual Status PrepareFragmentForEncryption(bool enable_encryption)
-
EncryptingFragmenter(TrackFragment *traf, scoped_ptr< EncryptionKey > encryption_key, int64_t clear_time, uint8_t nalu_length_size)
-
virtual void FinalizeFragmentForEncryption()
Finalize current fragment for encryption.
+ +
virtual Status PrepareFragmentForEncryption(bool enable_encryption)
+
virtual void FinalizeFragmentForEncryption()
Finalize current fragment for encryption.
virtual void FinalizeFragment()
Finalize and optimize the fragment.
Definition: fragmenter.cc:91
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 c465a0572f..96d5406b64 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 @@ -112,7 +112,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 90bb6fb8a9..80d475de69 100644 --- a/docs/d6/d49/classedash__packager_1_1media_1_1AVCDecoderConfiguration.html +++ b/docs/d6/d49/classedash__packager_1_1media_1_1AVCDecoderConfiguration.html @@ -233,7 +233,7 @@ Static Public Member Functions diff --git a/docs/d6/d4e/webm_2multi__segment__segmenter_8cc_source.html b/docs/d6/d4e/webm_2multi__segment__segmenter_8cc_source.html index 5ddc12c3cb..ea4d7bf46c 100644 --- a/docs/d6/d4e/webm_2multi__segment__segmenter_8cc_source.html +++ b/docs/d6/d4e/webm_2multi__segment__segmenter_8cc_source.html @@ -178,12 +178,12 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
89 } // namespace webm
90 } // namespace media
91 } // namespace edash_packager
- + 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 48b16a128d..22c8eddd52 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 @@ -171,7 +171,7 @@ Additional Inherited Members diff --git a/docs/d6/d5d/classedash__packager_1_1media_1_1HEVCDecoderConfiguration.html b/docs/d6/d5d/classedash__packager_1_1media_1_1HEVCDecoderConfiguration.html index ede304cb36..a100cc1c01 100644 --- a/docs/d6/d5d/classedash__packager_1_1media_1_1HEVCDecoderConfiguration.html +++ b/docs/d6/d5d/classedash__packager_1_1media_1_1HEVCDecoderConfiguration.html @@ -185,7 +185,7 @@ Public Member Functions diff --git a/docs/d6/d5e/structedash__packager_1_1media_1_1H264SEIRecoveryPoint-members.html b/docs/d6/d5e/structedash__packager_1_1media_1_1H264SEIRecoveryPoint-members.html index 24daba069b..5be7d5fe93 100644 --- a/docs/d6/d5e/structedash__packager_1_1media_1_1H264SEIRecoveryPoint-members.html +++ b/docs/d6/d5e/structedash__packager_1_1media_1_1H264SEIRecoveryPoint-members.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d5e/structedash__packager_1_1media_1_1mp4_1_1DTSSpecific-members.html b/docs/d6/d5e/structedash__packager_1_1media_1_1mp4_1_1DTSSpecific-members.html index 30101bc03b..66139c58cd 100644 --- a/docs/d6/d5e/structedash__packager_1_1media_1_1mp4_1_1DTSSpecific-members.html +++ b/docs/d6/d5e/structedash__packager_1_1media_1_1mp4_1_1DTSSpecific-members.html @@ -108,7 +108,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 d7d98c2a9e..bd1825ac37 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 @@ -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 926442336e..b0aa8aa16c 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 1a48ef4e9f..d38e6372ff 100644 --- a/docs/d6/d71/scoped__xml__ptr_8h_source.html +++ b/docs/d6/d71/scoped__xml__ptr_8h_source.html @@ -131,7 +131,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d74/structedash__packager_1_1media_1_1mp4_1_1VTTCueBox.html b/docs/d6/d74/structedash__packager_1_1media_1_1mp4_1_1VTTCueBox.html index 79689d9a01..cec1147141 100644 --- a/docs/d6/d74/structedash__packager_1_1media_1_1mp4_1_1VTTCueBox.html +++ b/docs/d6/d74/structedash__packager_1_1media_1_1mp4_1_1VTTCueBox.html @@ -183,7 +183,7 @@ Additional Inherited Members diff --git a/docs/d6/d77/dash__iop__mpd__notifier_8h_source.html b/docs/d6/d77/dash__iop__mpd__notifier_8h_source.html index 1cd39db8ea..d86a89b557 100644 --- a/docs/d6/d77/dash__iop__mpd__notifier_8h_source.html +++ b/docs/d6/d77/dash__iop__mpd__notifier_8h_source.html @@ -218,7 +218,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d79/structedash__packager_1_1media_1_1mp4_1_1ChunkOffset.html b/docs/d6/d79/structedash__packager_1_1media_1_1mp4_1_1ChunkOffset.html index 92ae52a493..75feebefec 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 @@ -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 d394f4a962..fd3860b61c 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 d65417a313..5e6026bb41 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 cc4a8bd501..17fe6bbd8a 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 7a2cfbf01c..8875f2580c 100644 --- a/docs/d6/d86/bandwidth__estimator_8cc_source.html +++ b/docs/d6/d86/bandwidth__estimator_8cc_source.html @@ -154,7 +154,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d8a/vp9__parser_8cc_source.html b/docs/d6/d8a/vp9__parser_8cc_source.html index b130a7637a..7524031479 100644 --- a/docs/d6/d8a/vp9__parser_8cc_source.html +++ b/docs/d6/d8a/vp9__parser_8cc_source.html @@ -135,511 +135,531 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
46  VPX_COLOR_SPACE_SRGB = 7,
47 };
48 
-
49 class VP9BitReader : public BitReader {
-
50  public:
-
51  VP9BitReader(const uint8_t* data, off_t size) : BitReader(data, size) {}
-
52  ~VP9BitReader() {}
-
53 
-
54  bool SkipBitsConditional(uint32_t num_bits) {
-
55  bool condition;
-
56  if (!ReadBits(1, &condition))
-
57  return false;
-
58  return condition ? SkipBits(num_bits) : true;
-
59  }
-
60 
-
61  private:
-
62  DISALLOW_COPY_AND_ASSIGN(VP9BitReader);
-
63 };
-
64 
-
65 uint32_t RoundupShift(uint32_t value, uint32_t n) {
-
66  return (value + (1 << n) - 1) >> n;
-
67 }
-
68 
-
69 // Number of MI-units (8*8).
-
70 uint32_t GetNumMiUnits(uint32_t pixels) {
-
71  return RoundupShift(pixels, MI_SIZE_LOG2);
-
72 }
-
73 
-
74 // Number of sb64 (64x64) blocks per mi_units.
-
75 uint32_t GetNumBlocks(uint32_t mi_units) {
-
76  return RoundupShift(mi_units, MI_BLOCK_SIZE_LOG2);
-
77 }
-
78 
-
79 uint32_t GetMinLog2TileCols(uint32_t sb64_cols) {
-
80  uint32_t min_log2 = 0;
-
81  while ((MAX_TILE_WIDTH_B64 << min_log2) < sb64_cols)
-
82  ++min_log2;
-
83  return min_log2;
+
49 uint32_t RoundupShift(uint32_t value, uint32_t n) {
+
50  return (value + (1 << n) - 1) >> n;
+
51 }
+
52 
+
53 // Number of MI-units (8*8).
+
54 uint32_t GetNumMiUnits(uint32_t pixels) {
+
55  return RoundupShift(pixels, MI_SIZE_LOG2);
+
56 }
+
57 
+
58 // Number of sb64 (64x64) blocks per mi_units.
+
59 uint32_t GetNumBlocks(uint32_t mi_units) {
+
60  return RoundupShift(mi_units, MI_BLOCK_SIZE_LOG2);
+
61 }
+
62 
+
63 uint32_t GetMinLog2TileCols(uint32_t sb64_cols) {
+
64  uint32_t min_log2 = 0;
+
65  while ((MAX_TILE_WIDTH_B64 << min_log2) < sb64_cols)
+
66  ++min_log2;
+
67  return min_log2;
+
68 }
+
69 
+
70 uint32_t GetMaxLog2TileCols(uint32_t sb64_cols) {
+
71  uint32_t max_log2 = 1;
+
72  while ((sb64_cols >> max_log2) >= MIN_TILE_WIDTH_B64)
+
73  ++max_log2;
+
74  return max_log2 - 1;
+
75 }
+
76 
+
77 void GetTileNBits(uint32_t mi_cols,
+
78  uint32_t* min_log2_tile_cols,
+
79  uint32_t* max_log2_tile_cols) {
+
80  const uint32_t sb64_cols = GetNumBlocks(mi_cols);
+
81  *min_log2_tile_cols = GetMinLog2TileCols(sb64_cols);
+
82  *max_log2_tile_cols = GetMaxLog2TileCols(sb64_cols);
+
83  CHECK_LE(*min_log2_tile_cols, *max_log2_tile_cols);
84 }
85 
-
86 uint32_t GetMaxLog2TileCols(uint32_t sb64_cols) {
-
87  uint32_t max_log2 = 1;
-
88  while ((sb64_cols >> max_log2) >= MIN_TILE_WIDTH_B64)
-
89  ++max_log2;
-
90  return max_log2 - 1;
-
91 }
-
92 
-
93 void GetTileNBits(uint32_t mi_cols,
-
94  uint32_t* min_log2_tile_cols,
-
95  uint32_t* max_log2_tile_cols) {
-
96  const uint32_t sb64_cols = GetNumBlocks(mi_cols);
-
97  *min_log2_tile_cols = GetMinLog2TileCols(sb64_cols);
-
98  *max_log2_tile_cols = GetMaxLog2TileCols(sb64_cols);
-
99  CHECK_LE(*min_log2_tile_cols, *max_log2_tile_cols);
-
100 }
-
101 
-
102 // Parse superframe index if it is a superframe. Fill |vpx_frames| with the
-
103 // frames information, which contains the sizes of the frames indicated in
-
104 // superframe index if it is a superframe; otherwise it should contain one
-
105 // single frame with |data_size| as frame size.
-
106 bool ParseIfSuperframeIndex(const uint8_t* data,
-
107  size_t data_size,
-
108  std::vector<VPxFrameInfo>* vpx_frames) {
-
109  vpx_frames->clear();
-
110  uint8_t superframe_marker = data[data_size - 1];
-
111  VPxFrameInfo vpx_frame;
-
112  if ((superframe_marker & 0xe0) != 0xc0) {
-
113  // This is not a super frame. There should be only one frame.
-
114  vpx_frame.frame_size = data_size;
-
115  vpx_frames->push_back(vpx_frame);
-
116  return true;
-
117  }
-
118 
-
119  const size_t num_frames = (superframe_marker & 0x07) + 1;
-
120  const size_t frame_size_length = ((superframe_marker >> 3) & 0x03) + 1;
-
121  // Two maker bytes + frame sizes.
-
122  const size_t index_size = 2 + num_frames * frame_size_length;
-
123 
-
124  if (data_size < index_size) {
-
125  LOG(ERROR) << "This chunk is marked as having a superframe index but "
-
126  "doesn't have enough data for it.";
-
127  return false;
-
128  }
-
129  const uint8_t superframe_marker2 = data[data_size - index_size];
-
130  if (superframe_marker2 != superframe_marker) {
-
131  LOG(ERROR) << "This chunk is marked as having a superframe index but "
-
132  "doesn't have the matching marker byte at the front of the "
-
133  "index.";
-
134  return false;
-
135  }
-
136  VLOG(3) << "Superframe num_frames=" << num_frames
-
137  << " frame_size_length=" << frame_size_length;
-
138 
-
139  data += data_size - index_size + 1;
-
140  size_t total_frame_sizes = 0;
-
141  for (size_t i = 0; i < num_frames; ++i) {
-
142  vpx_frame.frame_size = 0;
-
143  for (size_t i = 0; i < frame_size_length; ++i) {
-
144  vpx_frame.frame_size |= *data << (i * 8);
-
145  ++data;
-
146  }
-
147  total_frame_sizes += vpx_frame.frame_size;
-
148  vpx_frames->push_back(vpx_frame);
-
149  }
-
150  if (total_frame_sizes + index_size != data_size) {
-
151  LOG(ERROR) << "Data size (" << data_size
-
152  << ") does not match with sum of frame sizes ("
-
153  << total_frame_sizes << ") + index_size (" << index_size << ")";
-
154  return false;
-
155  }
-
156  return true;
-
157 }
-
158 
-
159 bool ReadProfile(VP9BitReader* reader, VPCodecConfiguration* codec_config) {
-
160  uint8_t bit[2];
-
161  RCHECK(reader->ReadBits(1, &bit[0]));
-
162  RCHECK(reader->ReadBits(1, &bit[1]));
-
163  uint8_t profile = bit[0] | (bit[1] << 1);
-
164  if (profile == 3) {
-
165  bool reserved;
-
166  RCHECK(reader->ReadBits(1, &reserved));
-
167  RCHECK(!reserved);
-
168  }
-
169  codec_config->set_profile(profile);
-
170  return true;
-
171 }
-
172 
-
173 bool ReadSyncCode(VP9BitReader* reader) {
-
174  uint32_t sync_code;
-
175  RCHECK(reader->ReadBits(24, &sync_code));
-
176  return sync_code == VP9_SYNC_CODE;
-
177 }
-
178 
-
179 VPCodecConfiguration::ColorSpace GetColorSpace(uint8_t color_space) {
-
180  switch (color_space) {
-
181  case VPX_COLOR_SPACE_UNKNOWN:
-
182  return VPCodecConfiguration::COLOR_SPACE_UNSPECIFIED;
-
183  case VPX_COLOR_SPACE_BT_601:
-
184  return VPCodecConfiguration::COLOR_SPACE_BT_601;
-
185  case VPX_COLOR_SPACE_BT_709:
-
186  return VPCodecConfiguration::COLOR_SPACE_BT_709;
-
187  case VPX_COLOR_SPACE_BT_2020:
-
188  // VP9 does not specify if it is in the form of “constant luminance” or
-
189  // “non-constant luminance”. As such, application should rely on the
-
190  // signaling outside of VP9 bitstream. If there is no such signaling,
-
191  // application may assume non-constant luminance for BT.2020.
-
192  return VPCodecConfiguration::COLOR_SPACE_BT_2020_NON_CONSTANT_LUMINANCE;
-
193  case VPX_COLOR_SPACE_SRGB:
-
194  return VPCodecConfiguration::COLOR_SPACE_SRGB;
-
195  default:
-
196  LOG(WARNING) << "Unknown color space: " << static_cast<int>(color_space);
-
197  return VPCodecConfiguration::COLOR_SPACE_UNSPECIFIED;
-
198  }
-
199 }
-
200 
-
201 VPCodecConfiguration::ChromaSubsampling GetChromaSubsampling(
-
202  uint8_t subsampling) {
-
203  switch (subsampling) {
-
204  case 0:
-
205  return VPCodecConfiguration::CHROMA_444;
-
206  case 1:
-
207  return VPCodecConfiguration::CHROMA_440;
-
208  case 2:
-
209  return VPCodecConfiguration::CHROMA_422;
-
210  case 3:
-
211  // VP9 assumes that chrome samples are collocated with luma samples if
-
212  // there is no explicit signaling outside of VP9 bitstream.
-
213  return VPCodecConfiguration::CHROMA_420_COLLOCATED_WITH_LUMA;
-
214  default:
-
215  LOG(WARNING) << "Unexpected chroma subsampling value: "
-
216  << static_cast<int>(subsampling);
-
217  return VPCodecConfiguration::CHROMA_420_COLLOCATED_WITH_LUMA;
-
218  }
-
219 }
-
220 
-
221 bool ReadBitDepthAndColorSpace(VP9BitReader* reader,
-
222  VPCodecConfiguration* codec_config) {
-
223  uint8_t bit_depth = 8;
-
224  if (codec_config->profile() >= 2) {
-
225  bool use_vpx_bits_12;
-
226  RCHECK(reader->ReadBits(1, &use_vpx_bits_12));
-
227  bit_depth = use_vpx_bits_12 ? 12 : 10;
-
228  }
-
229  codec_config->set_bit_depth(bit_depth);
-
230 
-
231  uint8_t color_space;
-
232  RCHECK(reader->ReadBits(3, &color_space));
-
233  codec_config->set_color_space(GetColorSpace(color_space));
-
234 
-
235  bool yuv_full_range = false;
-
236  auto chroma_subsampling = VPCodecConfiguration::CHROMA_444;
-
237  if (color_space != VPX_COLOR_SPACE_SRGB) {
-
238  RCHECK(reader->ReadBits(1, &yuv_full_range));
-
239 
-
240  if (codec_config->profile() & 1) {
-
241  uint8_t subsampling;
-
242  RCHECK(reader->ReadBits(2, &subsampling));
-
243  chroma_subsampling = GetChromaSubsampling(subsampling);
-
244  if (chroma_subsampling ==
-
245  VPCodecConfiguration::CHROMA_420_COLLOCATED_WITH_LUMA) {
-
246  LOG(ERROR) << "4:2:0 color not supported in profile "
-
247  << codec_config->profile();
-
248  return false;
-
249  }
-
250 
-
251  bool reserved;
-
252  RCHECK(reader->ReadBits(1, &reserved));
-
253  RCHECK(!reserved);
-
254  } else {
-
255  chroma_subsampling =
-
256  VPCodecConfiguration::CHROMA_420_COLLOCATED_WITH_LUMA;
-
257  }
-
258  } else {
-
259  // Assume 4:4:4 for colorspace SRGB.
-
260  chroma_subsampling = VPCodecConfiguration::CHROMA_444;
-
261  if (codec_config->profile() & 1) {
-
262  bool reserved;
-
263  RCHECK(reader->ReadBits(1, &reserved));
-
264  RCHECK(!reserved);
-
265  } else {
-
266  LOG(ERROR) << "4:4:4 color not supported in profile 0 or 2.";
-
267  return false;
-
268  }
-
269  }
-
270  codec_config->set_video_full_range_flag(yuv_full_range);
-
271  codec_config->set_chroma_subsampling(chroma_subsampling);
-
272 
-
273  VLOG(3) << "\n profile " << static_cast<int>(codec_config->profile())
-
274  << "\n bit depth " << static_cast<int>(codec_config->bit_depth())
-
275  << "\n color space " << static_cast<int>(codec_config->color_space())
-
276  << "\n full_range "
-
277  << static_cast<int>(codec_config->video_full_range_flag())
-
278  << "\n chroma subsampling "
-
279  << static_cast<int>(codec_config->chroma_subsampling());
-
280  return true;
-
281 }
-
282 
-
283 bool ReadFrameSize(VP9BitReader* reader, uint32_t* width, uint32_t* height) {
-
284  RCHECK(reader->ReadBits(16, width));
-
285  *width += 1; // Off by 1.
-
286  RCHECK(reader->ReadBits(16, height));
-
287  *height += 1; // Off by 1.
-
288  return true;
-
289 }
-
290 
-
291 bool ReadDisplayFrameSize(VP9BitReader* reader,
-
292  uint32_t* display_width,
-
293  uint32_t* display_height) {
-
294  bool has_display_size;
-
295  RCHECK(reader->ReadBits(1, &has_display_size));
-
296  if (has_display_size)
-
297  RCHECK(ReadFrameSize(reader, display_width, display_height));
-
298  return true;
-
299 }
-
300 
-
301 bool ReadFrameSizes(VP9BitReader* reader, uint32_t* width, uint32_t* height) {
-
302  uint32_t new_width;
-
303  uint32_t new_height;
-
304  RCHECK(ReadFrameSize(reader, &new_width, &new_height));
-
305  if (new_width != *width) {
-
306  VLOG(1) << "Width updates from " << *width << " to " << new_width;
-
307  *width = new_width;
-
308  }
-
309  if (new_height != *height) {
-
310  VLOG(1) << "Height updates from " << *height << " to " << new_height;
-
311  *height = new_height;
-
312  }
-
313 
-
314  uint32_t display_width = *width;
-
315  uint32_t display_height = *height;
-
316  RCHECK(ReadDisplayFrameSize(reader, &display_width, &display_height));
-
317  return true;
-
318 }
-
319 
-
320 bool ReadFrameSizesWithRefs(VP9BitReader* reader,
-
321  uint32_t* width,
-
322  uint32_t* height) {
-
323  bool found = false;
-
324  for (uint32_t i = 0; i < REFS_PER_FRAME; ++i) {
-
325  RCHECK(reader->ReadBits(1, &found));
-
326  if (found)
-
327  break;
-
328  }
-
329  if (!found) {
-
330  RCHECK(ReadFrameSizes(reader, width, height));
-
331  } else {
-
332  uint32_t display_width;
-
333  uint32_t display_height;
-
334  RCHECK(ReadDisplayFrameSize(reader, &display_width, &display_height));
-
335  }
-
336  return true;
-
337 }
-
338 
-
339 bool ReadLoopFilter(VP9BitReader* reader) {
-
340  RCHECK(reader->SkipBits(9)); // filter_evel, sharness_level
-
341  bool mode_ref_delta_enabled;
-
342  RCHECK(reader->ReadBits(1, &mode_ref_delta_enabled));
-
343  if (!mode_ref_delta_enabled)
-
344  return true;
-
345  bool mode_ref_delta_update;
-
346  RCHECK(reader->ReadBits(1, &mode_ref_delta_update));
-
347  if (!mode_ref_delta_update) return true;
-
348 
-
349  for (uint32_t i = 0; i < MAX_REF_LF_DELTAS + MAX_MODE_LF_DELTAS; ++i)
-
350  RCHECK(reader->SkipBitsConditional(6 + 1));
-
351  return true;
-
352 }
-
353 
-
354 bool ReadQuantization(VP9BitReader* reader) {
-
355  RCHECK(reader->SkipBits(QINDEX_BITS));
-
356  // Skip delta_q bits.
-
357  for (uint32_t i = 0; i < 3; ++i)
-
358  RCHECK(reader->SkipBitsConditional(4 + 1));
-
359  return true;
-
360 }
-
361 
-
362 bool ReadSegmentation(VP9BitReader* reader) {
-
363  bool enabled;
-
364  RCHECK(reader->ReadBits(1, &enabled));
-
365  if (!enabled)
-
366  return true;
-
367 
-
368  bool update_map;
-
369  RCHECK(reader->ReadBits(1, &update_map));
-
370  if (update_map) {
-
371  for (uint32_t i = 0; i < SEG_TREE_PROBS; ++i) {
-
372  RCHECK(reader->SkipBitsConditional(8));
-
373 
-
374  bool temporal_update;
-
375  RCHECK(reader->ReadBits(1, &temporal_update));
-
376  if (temporal_update) {
-
377  for (uint32_t j = 0; j < PREDICTION_PROBS; ++j)
-
378  RCHECK(reader->SkipBitsConditional(8));
-
379  }
-
380  }
-
381  }
-
382 
-
383  bool update_data;
-
384  RCHECK(reader->ReadBits(1, &update_data));
-
385  if (update_data) {
-
386  RCHECK(reader->SkipBits(1)); // abs_delta
-
387  for (uint32_t i = 0; i < MAX_SEGMENTS; ++i) {
-
388  for (uint32_t j = 0; j < SEG_LVL_MAX; ++j) {
-
389  bool feature_enabled;
-
390  RCHECK(reader->ReadBits(1, &feature_enabled));
-
391  if (feature_enabled) {
-
392  RCHECK(reader->SkipBits(SEG_FEATURE_DATA_MAX_BITS[j]));
-
393  if (SEG_FEATURE_DATA_SIGNED[j])
-
394  RCHECK(reader->SkipBits(1)); // signness
-
395  }
-
396  }
-
397  }
-
398  }
-
399  return true;
-
400 }
-
401 
-
402 bool ReadTileInfo(uint32_t width, VP9BitReader* reader) {
-
403  uint32_t mi_cols = GetNumMiUnits(width);
-
404 
-
405  uint32_t min_log2_tile_cols;
-
406  uint32_t max_log2_tile_cols;
-
407  GetTileNBits(mi_cols, &min_log2_tile_cols, &max_log2_tile_cols);
-
408  uint32_t max_ones = max_log2_tile_cols - min_log2_tile_cols;
-
409 
-
410  uint32_t log2_tile_cols = min_log2_tile_cols;
-
411  while (max_ones--) {
-
412  bool has_more;
-
413  RCHECK(reader->ReadBits(1, &has_more));
-
414  if (!has_more)
-
415  break;
-
416  ++log2_tile_cols;
-
417  }
-
418  RCHECK(log2_tile_cols <= 6);
-
419 
-
420  RCHECK(reader->SkipBitsConditional(1)); // log2_tile_rows
-
421  return true;
-
422 }
+
86 // Parse superframe index if it is a superframe. Fill |vpx_frames| with the
+
87 // frames information, which contains the sizes of the frames indicated in
+
88 // superframe index if it is a superframe; otherwise it should contain one
+
89 // single frame with |data_size| as frame size.
+
90 bool ParseIfSuperframeIndex(const uint8_t* data,
+
91  size_t data_size,
+
92  std::vector<VPxFrameInfo>* vpx_frames) {
+
93  vpx_frames->clear();
+
94  uint8_t superframe_marker = data[data_size - 1];
+
95  VPxFrameInfo vpx_frame;
+
96  if ((superframe_marker & 0xe0) != 0xc0) {
+
97  // This is not a super frame. There should be only one frame.
+
98  vpx_frame.frame_size = data_size;
+
99  vpx_frames->push_back(vpx_frame);
+
100  return true;
+
101  }
+
102 
+
103  const size_t num_frames = (superframe_marker & 0x07) + 1;
+
104  const size_t frame_size_length = ((superframe_marker >> 3) & 0x03) + 1;
+
105  // Two maker bytes + frame sizes.
+
106  const size_t index_size = 2 + num_frames * frame_size_length;
+
107 
+
108  if (data_size < index_size) {
+
109  LOG(ERROR) << "This chunk is marked as having a superframe index but "
+
110  "doesn't have enough data for it.";
+
111  return false;
+
112  }
+
113  const uint8_t superframe_marker2 = data[data_size - index_size];
+
114  if (superframe_marker2 != superframe_marker) {
+
115  LOG(ERROR) << "This chunk is marked as having a superframe index but "
+
116  "doesn't have the matching marker byte at the front of the "
+
117  "index.";
+
118  return false;
+
119  }
+
120  VLOG(3) << "Superframe num_frames=" << num_frames
+
121  << " frame_size_length=" << frame_size_length;
+
122 
+
123  data += data_size - index_size + 1;
+
124  size_t total_frame_sizes = 0;
+
125  for (size_t i = 0; i < num_frames; ++i) {
+
126  vpx_frame.frame_size = 0;
+
127  for (size_t i = 0; i < frame_size_length; ++i) {
+
128  vpx_frame.frame_size |= *data << (i * 8);
+
129  ++data;
+
130  }
+
131  total_frame_sizes += vpx_frame.frame_size;
+
132  vpx_frames->push_back(vpx_frame);
+
133  }
+
134  if (total_frame_sizes + index_size != data_size) {
+
135  LOG(ERROR) << "Data size (" << data_size
+
136  << ") does not match with sum of frame sizes ("
+
137  << total_frame_sizes << ") + index_size (" << index_size << ")";
+
138  return false;
+
139  }
+
140  return true;
+
141 }
+
142 
+
143 bool ReadProfile(BitReader* reader, VPCodecConfiguration* codec_config) {
+
144  uint8_t bit[2];
+
145  RCHECK(reader->ReadBits(1, &bit[0]));
+
146  RCHECK(reader->ReadBits(1, &bit[1]));
+
147  uint8_t profile = bit[0] | (bit[1] << 1);
+
148  if (profile == 3) {
+
149  bool reserved;
+
150  RCHECK(reader->ReadBits(1, &reserved));
+
151  RCHECK(!reserved);
+
152  }
+
153  codec_config->set_profile(profile);
+
154  return true;
+
155 }
+
156 
+
157 bool ReadSyncCode(BitReader* reader) {
+
158  uint32_t sync_code;
+
159  RCHECK(reader->ReadBits(24, &sync_code));
+
160  return sync_code == VP9_SYNC_CODE;
+
161 }
+
162 
+
163 VPCodecConfiguration::ColorSpace GetColorSpace(uint8_t color_space) {
+
164  switch (color_space) {
+
165  case VPX_COLOR_SPACE_UNKNOWN:
+
166  return VPCodecConfiguration::COLOR_SPACE_UNSPECIFIED;
+
167  case VPX_COLOR_SPACE_BT_601:
+
168  return VPCodecConfiguration::COLOR_SPACE_BT_601;
+
169  case VPX_COLOR_SPACE_BT_709:
+
170  return VPCodecConfiguration::COLOR_SPACE_BT_709;
+
171  case VPX_COLOR_SPACE_SMPTE_170:
+
172  return VPCodecConfiguration::COLOR_SPACE_SMPTE_170;
+
173  case VPX_COLOR_SPACE_SMPTE_240:
+
174  return VPCodecConfiguration::COLOR_SPACE_SMPTE_240;
+
175  case VPX_COLOR_SPACE_BT_2020:
+
176  // VP9 does not specify if it is in the form of “constant luminance” or
+
177  // “non-constant luminance”. As such, application should rely on the
+
178  // signaling outside of VP9 bitstream. If there is no such signaling,
+
179  // application may assume non-constant luminance for BT.2020.
+
180  return VPCodecConfiguration::COLOR_SPACE_BT_2020_NON_CONSTANT_LUMINANCE;
+
181  case VPX_COLOR_SPACE_SRGB:
+
182  return VPCodecConfiguration::COLOR_SPACE_SRGB;
+
183  default:
+
184  LOG(WARNING) << "Unknown color space: " << static_cast<int>(color_space);
+
185  return VPCodecConfiguration::COLOR_SPACE_UNSPECIFIED;
+
186  }
+
187 }
+
188 
+
189 VPCodecConfiguration::ChromaSubsampling GetChromaSubsampling(
+
190  uint8_t subsampling) {
+
191  switch (subsampling) {
+
192  case 0:
+
193  return VPCodecConfiguration::CHROMA_444;
+
194  case 1:
+
195  return VPCodecConfiguration::CHROMA_440;
+
196  case 2:
+
197  return VPCodecConfiguration::CHROMA_422;
+
198  case 3:
+
199  // VP9 assumes that chrome samples are collocated with luma samples if
+
200  // there is no explicit signaling outside of VP9 bitstream.
+
201  return VPCodecConfiguration::CHROMA_420_COLLOCATED_WITH_LUMA;
+
202  default:
+
203  LOG(WARNING) << "Unexpected chroma subsampling value: "
+
204  << static_cast<int>(subsampling);
+
205  return VPCodecConfiguration::CHROMA_420_COLLOCATED_WITH_LUMA;
+
206  }
+
207 }
+
208 
+
209 bool ReadBitDepthAndColorSpace(BitReader* reader,
+
210  VPCodecConfiguration* codec_config) {
+
211  uint8_t bit_depth = 8;
+
212  if (codec_config->profile() >= 2) {
+
213  bool use_vpx_bits_12;
+
214  RCHECK(reader->ReadBits(1, &use_vpx_bits_12));
+
215  bit_depth = use_vpx_bits_12 ? 12 : 10;
+
216  }
+
217  codec_config->set_bit_depth(bit_depth);
+
218 
+
219  uint8_t color_space;
+
220  RCHECK(reader->ReadBits(3, &color_space));
+
221  codec_config->set_color_space(GetColorSpace(color_space));
+
222 
+
223  bool yuv_full_range = false;
+
224  auto chroma_subsampling = VPCodecConfiguration::CHROMA_444;
+
225  if (color_space != VPX_COLOR_SPACE_SRGB) {
+
226  RCHECK(reader->ReadBits(1, &yuv_full_range));
+
227 
+
228  if (codec_config->profile() & 1) {
+
229  uint8_t subsampling;
+
230  RCHECK(reader->ReadBits(2, &subsampling));
+
231  chroma_subsampling = GetChromaSubsampling(subsampling);
+
232  if (chroma_subsampling ==
+
233  VPCodecConfiguration::CHROMA_420_COLLOCATED_WITH_LUMA) {
+
234  LOG(ERROR) << "4:2:0 color not supported in profile "
+
235  << codec_config->profile();
+
236  return false;
+
237  }
+
238 
+
239  bool reserved;
+
240  RCHECK(reader->ReadBits(1, &reserved));
+
241  RCHECK(!reserved);
+
242  } else {
+
243  chroma_subsampling =
+
244  VPCodecConfiguration::CHROMA_420_COLLOCATED_WITH_LUMA;
+
245  }
+
246  } else {
+
247  // Assume 4:4:4 for colorspace SRGB.
+
248  chroma_subsampling = VPCodecConfiguration::CHROMA_444;
+
249  if (codec_config->profile() & 1) {
+
250  bool reserved;
+
251  RCHECK(reader->ReadBits(1, &reserved));
+
252  RCHECK(!reserved);
+
253  } else {
+
254  LOG(ERROR) << "4:4:4 color not supported in profile 0 or 2.";
+
255  return false;
+
256  }
+
257  }
+
258  codec_config->set_video_full_range_flag(yuv_full_range);
+
259  codec_config->set_chroma_subsampling(chroma_subsampling);
+
260 
+
261  VLOG(3) << "\n profile " << static_cast<int>(codec_config->profile())
+
262  << "\n bit depth " << static_cast<int>(codec_config->bit_depth())
+
263  << "\n color space " << static_cast<int>(codec_config->color_space())
+
264  << "\n full_range "
+
265  << static_cast<int>(codec_config->video_full_range_flag())
+
266  << "\n chroma subsampling "
+
267  << static_cast<int>(codec_config->chroma_subsampling());
+
268  return true;
+
269 }
+
270 
+
271 bool ReadFrameSize(BitReader* reader, uint32_t* width, uint32_t* height) {
+
272  RCHECK(reader->ReadBits(16, width));
+
273  *width += 1; // Off by 1.
+
274  RCHECK(reader->ReadBits(16, height));
+
275  *height += 1; // Off by 1.
+
276  return true;
+
277 }
+
278 
+
279 bool ReadDisplayFrameSize(BitReader* reader,
+
280  uint32_t* display_width,
+
281  uint32_t* display_height) {
+
282  bool has_display_size;
+
283  RCHECK(reader->ReadBits(1, &has_display_size));
+
284  if (has_display_size)
+
285  RCHECK(ReadFrameSize(reader, display_width, display_height));
+
286  return true;
+
287 }
+
288 
+
289 bool ReadFrameSizes(BitReader* reader, uint32_t* width, uint32_t* height) {
+
290  uint32_t new_width;
+
291  uint32_t new_height;
+
292  RCHECK(ReadFrameSize(reader, &new_width, &new_height));
+
293  if (new_width != *width) {
+
294  VLOG(1) << "Width updates from " << *width << " to " << new_width;
+
295  *width = new_width;
+
296  }
+
297  if (new_height != *height) {
+
298  VLOG(1) << "Height updates from " << *height << " to " << new_height;
+
299  *height = new_height;
+
300  }
+
301 
+
302  uint32_t display_width = *width;
+
303  uint32_t display_height = *height;
+
304  RCHECK(ReadDisplayFrameSize(reader, &display_width, &display_height));
+
305  return true;
+
306 }
+
307 
+
308 bool ReadFrameSizesWithRefs(BitReader* reader,
+
309  uint32_t* width,
+
310  uint32_t* height) {
+
311  bool found = false;
+
312  for (uint32_t i = 0; i < REFS_PER_FRAME; ++i) {
+
313  RCHECK(reader->ReadBits(1, &found));
+
314  if (found)
+
315  break;
+
316  }
+
317  if (!found) {
+
318  RCHECK(ReadFrameSizes(reader, width, height));
+
319  } else {
+
320  uint32_t display_width;
+
321  uint32_t display_height;
+
322  RCHECK(ReadDisplayFrameSize(reader, &display_width, &display_height));
+
323  }
+
324  return true;
+
325 }
+
326 
+
327 bool ReadLoopFilter(BitReader* reader) {
+
328  RCHECK(reader->SkipBits(9)); // filter_evel, sharness_level
+
329  bool mode_ref_delta_enabled;
+
330  RCHECK(reader->ReadBits(1, &mode_ref_delta_enabled));
+
331  if (!mode_ref_delta_enabled)
+
332  return true;
+
333  bool mode_ref_delta_update;
+
334  RCHECK(reader->ReadBits(1, &mode_ref_delta_update));
+
335  if (!mode_ref_delta_update)
+
336  return true;
+
337 
+
338  for (uint32_t i = 0; i < MAX_REF_LF_DELTAS + MAX_MODE_LF_DELTAS; ++i)
+
339  RCHECK(reader->SkipBitsConditional(true, 6 + 1));
+
340  return true;
+
341 }
+
342 
+
343 bool ReadQuantization(BitReader* reader) {
+
344  RCHECK(reader->SkipBits(QINDEX_BITS));
+
345  // Skip delta_q bits.
+
346  for (uint32_t i = 0; i < 3; ++i)
+
347  RCHECK(reader->SkipBitsConditional(true, 4 + 1));
+
348  return true;
+
349 }
+
350 
+
351 bool ReadSegmentation(BitReader* reader) {
+
352  bool enabled;
+
353  RCHECK(reader->ReadBits(1, &enabled));
+
354  if (!enabled)
+
355  return true;
+
356 
+
357  bool update_map;
+
358  RCHECK(reader->ReadBits(1, &update_map));
+
359  if (update_map) {
+
360  for (uint32_t i = 0; i < SEG_TREE_PROBS; ++i)
+
361  RCHECK(reader->SkipBitsConditional(true, 8));
+
362 
+
363  bool temporal_update;
+
364  RCHECK(reader->ReadBits(1, &temporal_update));
+
365  if (temporal_update) {
+
366  for (uint32_t j = 0; j < PREDICTION_PROBS; ++j)
+
367  RCHECK(reader->SkipBitsConditional(true, 8));
+
368  }
+
369  }
+
370 
+
371  bool update_data;
+
372  RCHECK(reader->ReadBits(1, &update_data));
+
373  if (update_data) {
+
374  RCHECK(reader->SkipBits(1)); // abs_delta
+
375  for (uint32_t i = 0; i < MAX_SEGMENTS; ++i) {
+
376  for (uint32_t j = 0; j < SEG_LVL_MAX; ++j) {
+
377  bool feature_enabled;
+
378  RCHECK(reader->ReadBits(1, &feature_enabled));
+
379  if (feature_enabled) {
+
380  RCHECK(reader->SkipBits(SEG_FEATURE_DATA_MAX_BITS[j]));
+
381  if (SEG_FEATURE_DATA_SIGNED[j])
+
382  RCHECK(reader->SkipBits(1)); // signness
+
383  }
+
384  }
+
385  }
+
386  }
+
387  return true;
+
388 }
+
389 
+
390 bool ReadTileInfo(uint32_t width, BitReader* reader) {
+
391  uint32_t mi_cols = GetNumMiUnits(width);
+
392 
+
393  uint32_t min_log2_tile_cols;
+
394  uint32_t max_log2_tile_cols;
+
395  GetTileNBits(mi_cols, &min_log2_tile_cols, &max_log2_tile_cols);
+
396  uint32_t max_ones = max_log2_tile_cols - min_log2_tile_cols;
+
397 
+
398  uint32_t log2_tile_cols = min_log2_tile_cols;
+
399  while (max_ones--) {
+
400  bool has_more;
+
401  RCHECK(reader->ReadBits(1, &has_more));
+
402  if (!has_more)
+
403  break;
+
404  ++log2_tile_cols;
+
405  }
+
406  RCHECK(log2_tile_cols <= 6);
+
407 
+
408  RCHECK(reader->SkipBitsConditional(true, 1)); // log2_tile_rows
+
409  return true;
+
410 }
+
411 
+
412 } // namespace
+
413 
+
414 VP9Parser::VP9Parser() : width_(0), height_(0) {}
+
415 VP9Parser::~VP9Parser() {}
+
416 
+
417 bool VP9Parser::Parse(const uint8_t* data,
+
418  size_t data_size,
+
419  std::vector<VPxFrameInfo>* vpx_frames) {
+
420  DCHECK(data);
+
421  DCHECK(vpx_frames);
+
422  RCHECK(ParseIfSuperframeIndex(data, data_size, vpx_frames));
423 
-
424 } // namespace
-
425 
-
426 VP9Parser::VP9Parser() : width_(0), height_(0) {}
-
427 VP9Parser::~VP9Parser() {}
-
428 
-
429 bool VP9Parser::Parse(const uint8_t* data,
-
430  size_t data_size,
-
431  std::vector<VPxFrameInfo>* vpx_frames) {
-
432  DCHECK(data);
-
433  DCHECK(vpx_frames);
-
434  RCHECK(ParseIfSuperframeIndex(data, data_size, vpx_frames));
-
435 
-
436  for (auto& vpx_frame : *vpx_frames) {
-
437  VLOG(4) << "process frame with size " << vpx_frame.frame_size;
-
438  VP9BitReader reader(data, vpx_frame.frame_size);
-
439  uint8_t frame_marker;
-
440  RCHECK(reader.ReadBits(2, &frame_marker));
-
441  RCHECK(frame_marker == VP9_FRAME_MARKER);
-
442 
-
443  RCHECK(ReadProfile(&reader, &codec_config_));
-
444 
-
445  bool show_existing_frame;
-
446  RCHECK(reader.ReadBits(1, &show_existing_frame));
-
447  if (show_existing_frame) {
-
448  RCHECK(reader.SkipBits(3)); // ref_frame_index
-
449  // End of current frame data. There should be no more bytes available.
-
450  RCHECK(reader.bits_available() < 8);
-
451 
-
452  vpx_frame.is_key_frame = false;
-
453  vpx_frame.uncompressed_header_size = vpx_frame.frame_size;
-
454  vpx_frame.width = width_;
-
455  vpx_frame.height = height_;
-
456  continue;
-
457  }
-
458 
-
459  bool is_inter_frame;
-
460  RCHECK(reader.ReadBits(1, &is_inter_frame));
-
461  vpx_frame.is_key_frame = !is_inter_frame;
-
462 
-
463  bool show_frame;
-
464  RCHECK(reader.ReadBits(1, &show_frame));
-
465  bool error_resilient_mode;
-
466  RCHECK(reader.ReadBits(1, &error_resilient_mode));
-
467 
-
468  if (vpx_frame.is_key_frame) {
-
469  RCHECK(ReadSyncCode(&reader));
-
470  RCHECK(ReadBitDepthAndColorSpace(&reader, &codec_config_));
-
471  RCHECK(ReadFrameSizes(&reader, &width_, &height_));
-
472  } else {
-
473  bool intra_only = false;
-
474  if (!show_frame)
-
475  RCHECK(reader.ReadBits(1, &intra_only));
-
476  if (!error_resilient_mode)
-
477  RCHECK(reader.SkipBits(2)); // reset_frame_context
-
478 
-
479  if (intra_only) {
-
480  RCHECK(ReadSyncCode(&reader));
-
481  if (codec_config_.profile() > 0) {
-
482  RCHECK(ReadBitDepthAndColorSpace(&reader, &codec_config_));
-
483  } else {
-
484  // NOTE: The intra-only frame header does not include the
-
485  // specification of either the color format or color sub-sampling in
-
486  // profile 0. VP9 specifies that the default color format should be
-
487  // YUV 4:2:0 in this case (normative).
-
488  codec_config_.set_chroma_subsampling(
-
489  VPCodecConfiguration::CHROMA_420_COLLOCATED_WITH_LUMA);
-
490  codec_config_.set_bit_depth(8);
-
491  }
-
492 
-
493  RCHECK(reader.SkipBits(REF_FRAMES)); // refresh_frame_flags
-
494  RCHECK(ReadFrameSizes(&reader, &width_, &height_));
-
495  } else {
-
496  RCHECK(reader.SkipBits(REF_FRAMES)); // refresh_frame_flags
-
497  RCHECK(reader.SkipBits(REFS_PER_FRAME * (REF_FRAMES_LOG2 + 1)));
-
498 
-
499  // TODO(kqyang): We may need to actually build the refs to extract the
-
500  // correct width and height for the current frame. The width will be
-
501  // used later in ReadTileInfo.
-
502  RCHECK(ReadFrameSizesWithRefs(&reader, &width_, &height_));
-
503 
-
504  RCHECK(reader.SkipBits(1)); // allow_high_precision_mv
-
505 
-
506  bool interp_filter;
-
507  RCHECK(reader.ReadBits(1, &interp_filter));
-
508  if (!interp_filter)
-
509  RCHECK(reader.SkipBits(2)); // more interp_filter
-
510  }
-
511  }
+
424  for (auto& vpx_frame : *vpx_frames) {
+
425  VLOG(4) << "process frame with size " << vpx_frame.frame_size;
+
426  BitReader reader(data, vpx_frame.frame_size);
+
427  uint8_t frame_marker;
+
428  RCHECK(reader.ReadBits(2, &frame_marker));
+
429  RCHECK(frame_marker == VP9_FRAME_MARKER);
+
430 
+
431  RCHECK(ReadProfile(&reader, writable_codec_config()));
+
432 
+
433  bool show_existing_frame;
+
434  RCHECK(reader.ReadBits(1, &show_existing_frame));
+
435  if (show_existing_frame) {
+
436  RCHECK(reader.SkipBits(3)); // ref_frame_index
+
437  // End of current frame data. There should be no more bytes available.
+
438  RCHECK(reader.bits_available() < 8);
+
439 
+
440  vpx_frame.is_keyframe = false;
+
441  vpx_frame.uncompressed_header_size = vpx_frame.frame_size;
+
442  vpx_frame.width = width_;
+
443  vpx_frame.height = height_;
+
444  continue;
+
445  }
+
446 
+
447  bool is_interframe;
+
448  RCHECK(reader.ReadBits(1, &is_interframe));
+
449  vpx_frame.is_keyframe = !is_interframe;
+
450 
+
451  bool show_frame;
+
452  RCHECK(reader.ReadBits(1, &show_frame));
+
453  bool error_resilient_mode;
+
454  RCHECK(reader.ReadBits(1, &error_resilient_mode));
+
455 
+
456  if (vpx_frame.is_keyframe) {
+
457  RCHECK(ReadSyncCode(&reader));
+
458  RCHECK(ReadBitDepthAndColorSpace(&reader, writable_codec_config()));
+
459  RCHECK(ReadFrameSizes(&reader, &width_, &height_));
+
460  } else {
+
461  bool intra_only = false;
+
462  if (!show_frame)
+
463  RCHECK(reader.ReadBits(1, &intra_only));
+
464  if (!error_resilient_mode)
+
465  RCHECK(reader.SkipBits(2)); // reset_frame_context
+
466 
+
467  if (intra_only) {
+
468  RCHECK(ReadSyncCode(&reader));
+
469  if (codec_config().profile() > 0) {
+
470  RCHECK(ReadBitDepthAndColorSpace(&reader, writable_codec_config()));
+
471  } else {
+
472  // NOTE: The intra-only frame header does not include the
+
473  // specification of either the color format or color sub-sampling in
+
474  // profile 0. VP9 specifies that the default color format should be
+
475  // YUV 4:2:0 in this case (normative).
+
476  writable_codec_config()->set_chroma_subsampling(
+
477  VPCodecConfiguration::CHROMA_420_COLLOCATED_WITH_LUMA);
+
478  writable_codec_config()->set_bit_depth(8);
+
479  }
+
480 
+
481  RCHECK(reader.SkipBits(REF_FRAMES)); // refresh_frame_flags
+
482  RCHECK(ReadFrameSizes(&reader, &width_, &height_));
+
483  } else {
+
484  RCHECK(reader.SkipBits(REF_FRAMES)); // refresh_frame_flags
+
485  RCHECK(reader.SkipBits(REFS_PER_FRAME * (REF_FRAMES_LOG2 + 1)));
+
486 
+
487  // TODO(kqyang): We may need to actually build the refs to extract the
+
488  // correct width and height for the current frame. The width will be
+
489  // used later in ReadTileInfo.
+
490  RCHECK(ReadFrameSizesWithRefs(&reader, &width_, &height_));
+
491 
+
492  RCHECK(reader.SkipBits(1)); // allow_high_precision_mv
+
493 
+
494  bool interp_filter;
+
495  RCHECK(reader.ReadBits(1, &interp_filter));
+
496  if (!interp_filter)
+
497  RCHECK(reader.SkipBits(2)); // more interp_filter
+
498  }
+
499  }
+
500 
+
501  if (!error_resilient_mode) {
+
502  RCHECK(reader.SkipBits(1)); // refresh_frame_context
+
503  RCHECK(reader.SkipBits(1)); // frame_parallel_decoding_mode
+
504  }
+
505  RCHECK(reader.SkipBits(FRAME_CONTEXTS_LOG2)); // frame_context_idx
+
506 
+
507  VLOG(4) << "bits read before ReadLoopFilter: " << reader.bit_position();
+
508  RCHECK(ReadLoopFilter(&reader));
+
509  RCHECK(ReadQuantization(&reader));
+
510  RCHECK(ReadSegmentation(&reader));
+
511  RCHECK(ReadTileInfo(width_, &reader));
512 
-
513  if (!error_resilient_mode) {
-
514  RCHECK(reader.SkipBits(1)); // refresh_frame_context
-
515  RCHECK(reader.SkipBits(1)); // frame_parallel_decoding_mode
-
516  }
-
517  RCHECK(reader.SkipBits(FRAME_CONTEXTS_LOG2)); // frame_context_idx
-
518 
-
519  VLOG(4) << "bit offset: "
-
520  << vpx_frame.frame_size * 8 - reader.bits_available();
-
521  RCHECK(ReadLoopFilter(&reader));
-
522  RCHECK(ReadQuantization(&reader));
-
523  RCHECK(ReadSegmentation(&reader));
-
524  RCHECK(ReadTileInfo(width_, &reader));
+
513  uint16_t header_size;
+
514  RCHECK(reader.ReadBits(16, &header_size));
+
515  vpx_frame.uncompressed_header_size =
+
516  vpx_frame.frame_size - reader.bits_available() / 8;
+
517  vpx_frame.width = width_;
+
518  vpx_frame.height = height_;
+
519 
+
520  VLOG(3) << "\n frame_size: " << vpx_frame.frame_size
+
521  << "\n uncompressed_header_size: "
+
522  << vpx_frame.uncompressed_header_size
+
523  << "\n bits read: " << reader.bit_position()
+
524  << "\n header_size: " << header_size;
525 
-
526  uint16_t first_partition_size;
-
527  RCHECK(reader.ReadBits(16, &first_partition_size));
-
528  vpx_frame.uncompressed_header_size =
-
529  vpx_frame.frame_size - reader.bits_available() / 8;
-
530  vpx_frame.width = width_;
-
531  vpx_frame.height = height_;
-
532 
-
533  VLOG(3) << "\n frame_size: " << vpx_frame.frame_size
-
534  << "\n header_size: " << vpx_frame.uncompressed_header_size
-
535  << "\n bits_read: "
-
536  << vpx_frame.frame_size * 8 - reader.bits_available()
-
537  << "\n first_partition_size: " << first_partition_size;
-
538 
-
539  RCHECK(first_partition_size > 0);
-
540  RCHECK(first_partition_size * 8 <= reader.bits_available());
-
541 
-
542  data += vpx_frame.frame_size;
-
543  }
-
544  return true;
-
545 }
-
546 
-
547 } // namespace media
-
548 } // namespace edash_packager
-
bool Parse(const uint8_t *data, size_t data_size, std::vector< VPxFrameInfo > *vpx_frames)
Definition: vp9_parser.cc:429
+
526  RCHECK(header_size > 0);
+
527  RCHECK(header_size * 8 <= reader.bits_available());
+
528 
+
529  data += vpx_frame.frame_size;
+
530  }
+
531  return true;
+
532 }
+
533 
+
534 bool VP9Parser::IsKeyframe(const uint8_t* data, size_t data_size) {
+
535  BitReader reader(data, data_size);
+
536  uint8_t frame_marker;
+
537  RCHECK(reader.ReadBits(2, &frame_marker));
+
538  RCHECK(frame_marker == VP9_FRAME_MARKER);
+
539 
+ +
541  RCHECK(ReadProfile(&reader, &codec_config));
+
542 
+
543  bool show_existing_frame;
+
544  RCHECK(reader.ReadBits(1, &show_existing_frame));
+
545  if (show_existing_frame)
+
546  return false;
+
547 
+
548  bool is_interframe;
+
549  RCHECK(reader.ReadBits(1, &is_interframe));
+
550  if (is_interframe)
+
551  return false;
+
552 
+
553  RCHECK(reader.SkipBits(2)); // show_frame, error_resilient_mode.
+
554 
+
555  RCHECK(ReadSyncCode(&reader));
+
556  return true;
+
557 }
+
558 
+
559 } // namespace media
+
560 } // namespace edash_packager
+
bool ReadBits(int num_bits, T *out)
Definition: bit_reader.h:35
+ + +
A class to read bit streams.
Definition: bit_reader.h:17
+
bool SkipBits(int num_bits)
Definition: bit_reader.cc:24
+
const VPCodecConfiguration & codec_config() const
Definition: vpx_parser.h:44
+
static bool IsKeyframe(const uint8_t *data, size_t data_size)
Definition: vp9_parser.cc:534
+
Class for parsing or writing VP codec configuration data.
+
bool Parse(const uint8_t *data, size_t data_size, std::vector< VPxFrameInfo > *vpx_frames) override
Definition: vp9_parser.cc:417
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 757b3bdc06..8d380570d9 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 @@ -174,7 +174,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 2fe1dc981c..a8ae1897fc 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 @@ -240,7 +240,7 @@ Protected Member Functions diff --git a/docs/d6/d92/classedash__packager_1_1media_1_1webm_1_1Segmenter-members.html b/docs/d6/d92/classedash__packager_1_1media_1_1webm_1_1Segmenter-members.html index 509d9935ad..7e9f0a3098 100644 --- a/docs/d6/d92/classedash__packager_1_1media_1_1webm_1_1Segmenter-members.html +++ b/docs/d6/d92/classedash__packager_1_1media_1_1webm_1_1Segmenter-members.html @@ -121,7 +121,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d96/structedash__packager_1_1media_1_1mp4_1_1SampleDescription-members.html b/docs/d6/d96/structedash__packager_1_1media_1_1mp4_1_1SampleDescription-members.html index dd9d766335..2255bef3be 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 @@ -115,7 +115,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 a30db6f0ee..9ff88e5535 100644 --- a/docs/d6/d97/classedash__packager_1_1media_1_1UdpFile-members.html +++ b/docs/d6/d97/classedash__packager_1_1media_1_1UdpFile-members.html @@ -117,7 +117,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d9b/h264__parser_8h_source.html b/docs/d6/d9b/h264__parser_8h_source.html index c87240cc82..5117b7e8a4 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 00587b8fb1..0d91d262e5 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 5fd1e30bc1..e4a436106f 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 3bed8ee1f4..3e1a65497f 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 1958f9758a..46a9b0ea45 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 2b90a0aeda..34b709803e 100644 --- a/docs/d6/da3/mpd__builder_8h_source.html +++ b/docs/d6/da3/mpd__builder_8h_source.html @@ -509,7 +509,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 bbda0a43cd..77ff1ef5ec 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 23e921aebe..407fd1233a 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 @@ -122,7 +122,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 c2d32aa9e3..f389587248 100644 --- a/docs/d6/dbb/structedash__packager_1_1media_1_1mp4_1_1CompositionOffset-members.html +++ b/docs/d6/dbb/structedash__packager_1_1media_1_1mp4_1_1CompositionOffset-members.html @@ -98,7 +98,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/dbd/structedash__packager_1_1media_1_1Cue-members.html b/docs/d6/dbd/structedash__packager_1_1media_1_1Cue-members.html index 0dee9f7484..09129e6300 100644 --- a/docs/d6/dbd/structedash__packager_1_1media_1_1Cue-members.html +++ b/docs/d6/dbd/structedash__packager_1_1media_1_1Cue-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/dc2/classedash__packager_1_1media_1_1TextTrackConfig-members.html b/docs/d6/dc2/classedash__packager_1_1media_1_1TextTrackConfig-members.html index 1fc05328e9..7dfa77ec58 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 07b67d4ccd..c3628b350a 100644 --- a/docs/d6/dc4/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor.html +++ b/docs/d6/dc4/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor.html @@ -208,7 +208,7 @@ const std::vector< uint8_t > &  diff --git a/docs/d6/dc8/mkv__writer_8cc_source.html b/docs/d6/dc8/mkv__writer_8cc_source.html index 62c7034ef6..cfa4bb9feb 100644 --- a/docs/d6/dc8/mkv__writer_8cc_source.html +++ b/docs/d6/dc8/mkv__writer_8cc_source.html @@ -186,7 +186,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/dd6/classedash__packager_1_1media_1_1WebMListParser.html b/docs/d6/dd6/classedash__packager_1_1media_1_1WebMListParser.html index 8bbc99951d..c9814c4dbb 100644 --- a/docs/d6/dd6/classedash__packager_1_1media_1_1WebMListParser.html +++ b/docs/d6/dd6/classedash__packager_1_1media_1_1WebMListParser.html @@ -210,7 +210,7 @@ void  diff --git a/docs/d6/dd7/classedash__packager_1_1media_1_1TextStreamInfo.html b/docs/d6/dd7/classedash__packager_1_1media_1_1TextStreamInfo.html index 2eee6eb171..b6d8beb8c1 100644 --- a/docs/d6/dd7/classedash__packager_1_1media_1_1TextStreamInfo.html +++ b/docs/d6/dd7/classedash__packager_1_1media_1_1TextStreamInfo.html @@ -276,7 +276,7 @@ void set_language (con diff --git a/docs/d6/de6/classedash__packager_1_1media_1_1KeyFetcher-members.html b/docs/d6/de6/classedash__packager_1_1media_1_1KeyFetcher-members.html index 9e94a2fd17..9cd6ea5aef 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 10b90cc55f..7a3685c0bb 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 7175f60094..884fe28be4 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 9bd77c702b..20c0b8bed9 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 d10bb2202c..b51b706b84 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 @@ -181,7 +181,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 ee8fa3b65f..74aef61be0 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 5e39db640e..a73b89c545 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/df4/classedash__packager_1_1media_1_1webm_1_1MultiSegmentSegmenter-members.html b/docs/d6/df4/classedash__packager_1_1media_1_1webm_1_1MultiSegmentSegmenter-members.html index 0c8172aaf0..51c24c9144 100644 --- a/docs/d6/df4/classedash__packager_1_1media_1_1webm_1_1MultiSegmentSegmenter-members.html +++ b/docs/d6/df4/classedash__packager_1_1media_1_1webm_1_1MultiSegmentSegmenter-members.html @@ -123,7 +123,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/df9/classedash__packager_1_1media_1_1mp4_1_1MP4MediaParser-members.html b/docs/d6/df9/classedash__packager_1_1media_1_1mp4_1_1MP4MediaParser-members.html index ceb84152d9..a4cbb95ec6 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 c7d26e1b59..0f98c6d497 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 5b3adad7c9..f235d70b99 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 @@ -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 08e99862aa..4201d43742 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 f979e6093a..1c66bef9a5 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 17874ae15a..73cd186566 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 253ed0f77c..da129ad129 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 0a8c527b02..e0a91b9646 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 a633efea0d..f20a0984ba 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 dc7065e5e0..0ca3a24dad 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 @@ -111,7 +111,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 9ae3e79b37..2f995be551 100644 --- a/docs/d7/d3a/classedash__packager_1_1media_1_1VideoStreamInfo.html +++ b/docs/d7/d3a/classedash__packager_1_1media_1_1VideoStreamInfo.html @@ -131,6 +131,9 @@ uint8_t nalu_length_size int16_t trick_play_rate () const   + +void set_codec (VideoCodec codec) +  void set_width (uint32_t width)   @@ -426,7 +429,7 @@ void set_language (con diff --git a/docs/d7/d40/classedash__packager_1_1media_1_1WebMClusterParser-members.html b/docs/d7/d40/classedash__packager_1_1media_1_1WebMClusterParser-members.html index 49ccea5f26..762efafcbe 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 @@ -104,14 +104,14 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); OnString(int id, const std::string &str) (defined in edash_packager::media::WebMParserClient)edash_packager::media::WebMParserClientvirtual Parse(const uint8_t *buf, int size)edash_packager::media::WebMClusterParser Reset()edash_packager::media::WebMClusterParser - WebMClusterParser(int64_t timecode_scale, int audio_track_num, int64_t audio_default_duration, int video_track_num, int64_t video_default_duration, const WebMTracksParser::TextTracks &text_tracks, const std::set< int64_t > &ignored_tracks, const std::string &audio_encryption_key_id, const std::string &video_encryption_key_id, const AudioCodec audio_codec, const MediaParser::NewSampleCB &new_sample_cb) (defined in edash_packager::media::WebMClusterParser)edash_packager::media::WebMClusterParser + WebMClusterParser(int64_t timecode_scale, scoped_refptr< AudioStreamInfo > audio_stream_info, scoped_refptr< VideoStreamInfo > video_stream_info, int64_t audio_default_duration, int64_t video_default_duration, const WebMTracksParser::TextTracks &text_tracks, const std::set< int64_t > &ignored_tracks, const std::string &audio_encryption_key_id, const std::string &video_encryption_key_id, const MediaParser::NewSampleCB &new_sample_cb, const MediaParser::InitCB &init_cb) (defined in edash_packager::media::WebMClusterParser)edash_packager::media::WebMClusterParser WebMParserClient() (defined in edash_packager::media::WebMParserClient)edash_packager::media::WebMParserClientprotected ~WebMClusterParser() override (defined in edash_packager::media::WebMClusterParser)edash_packager::media::WebMClusterParser ~WebMParserClient() (defined in edash_packager::media::WebMParserClient)edash_packager::media::WebMParserClientvirtual diff --git a/docs/d7/d44/classedash__packager_1_1MockMpdNotifier.html b/docs/d7/d44/classedash__packager_1_1MockMpdNotifier.html index b8ddcc6834..ac4eba23c9 100644 --- a/docs/d7/d44/classedash__packager_1_1MockMpdNotifier.html +++ b/docs/d7/d44/classedash__packager_1_1MockMpdNotifier.html @@ -160,7 +160,7 @@ Public Member Functions diff --git a/docs/d7/d49/structedash__packager_1_1media_1_1mp4_1_1CuePayloadBox.html b/docs/d7/d49/structedash__packager_1_1media_1_1mp4_1_1CuePayloadBox.html index 285dd1027c..4779c8d25c 100644 --- a/docs/d7/d49/structedash__packager_1_1media_1_1mp4_1_1CuePayloadBox.html +++ b/docs/d7/d49/structedash__packager_1_1media_1_1mp4_1_1CuePayloadBox.html @@ -171,7 +171,7 @@ Additional Inherited Members diff --git a/docs/d7/d4f/structedash__packager_1_1media_1_1mp4_1_1Edit.html b/docs/d7/d4f/structedash__packager_1_1media_1_1mp4_1_1Edit.html index 6422a6c89a..02cc312c3b 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 @@ -171,7 +171,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 6859be9fc3..0c0c09365e 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 @@ -98,7 +98,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); CreateEncryptor()edash_packager::media::mp4::EncryptingFragmenterprotected data() (defined in edash_packager::media::mp4::Fragmenter)edash_packager::media::mp4::Fragmenterinline earliest_presentation_time() const (defined in edash_packager::media::mp4::Fragmenter)edash_packager::media::mp4::Fragmenterinline - EncryptingFragmenter(TrackFragment *traf, scoped_ptr< EncryptionKey > encryption_key, int64_t clear_time, uint8_t nalu_length_size)edash_packager::media::mp4::EncryptingFragmenter + EncryptingFragmenter(TrackFragment *traf, scoped_ptr< EncryptionKey > encryption_key, int64_t clear_time, VideoCodec video_codec, uint8_t nalu_length_size)edash_packager::media::mp4::EncryptingFragmenter encryption_key() (defined in edash_packager::media::mp4::EncryptingFragmenter)edash_packager::media::mp4::EncryptingFragmenterinlineprotected encryptor() (defined in edash_packager::media::mp4::EncryptingFragmenter)edash_packager::media::mp4::EncryptingFragmenterinlineprotected FinalizeFragment() overrideedash_packager::media::mp4::EncryptingFragmentervirtual @@ -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 63424ddfdc..43ff9cc534 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 201fe3aeba..4b4e415316 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 88111276d9..15981f213f 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 @@ -108,7 +108,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 8d699c8c3e..2887401ccf 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 0420961ecd..98237c4c82 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 6b55134d18..f84f6d71dd 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 index e933c576a9..ec443c1554 100644 --- a/docs/d7/d85/classedash__packager_1_1media_1_1VPCodecConfiguration.html +++ b/docs/d7/d85/classedash__packager_1_1media_1_1VPCodecConfiguration.html @@ -106,10 +106,12 @@ Public Types   COLOR_SPACE_UNSPECIFIED = 0, COLOR_SPACE_BT_601 = 1, COLOR_SPACE_BT_709 = 2, -COLOR_SPACE_BT_2020_NON_CONSTANT_LUMINANCE = 3, +COLOR_SPACE_SMPTE_170 = 3,
-  COLOR_SPACE_BT_2020_CONSTANT_LUMINANCE = 4, -COLOR_SPACE_SRGB = 5 +  COLOR_SPACE_SMPTE_240 = 4, +COLOR_SPACE_BT_2020_NON_CONSTANT_LUMINANCE = 5, +COLOR_SPACE_BT_2020_CONSTANT_LUMINANCE = 6, +COLOR_SPACE_SRGB = 7
}   @@ -253,7 +255,7 @@ bool video_full_range_flag diff --git a/docs/d7/d87/video__stream__info_8h_source.html b/docs/d7/d87/video__stream__info_8h_source.html index 41fdf47b40..c2761ca4b2 100644 --- a/docs/d7/d87/video__stream__info_8h_source.html +++ b/docs/d7/d87/video__stream__info_8h_source.html @@ -145,38 +145,39 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
67  uint8_t nalu_length_size() const { return nalu_length_size_; }
68  int16_t trick_play_rate() const { return trick_play_rate_; }
69 
-
70  void set_width(uint32_t width) { width_ = width; }
-
71  void set_height(uint32_t height) { height_ = height; }
-
72  void set_pixel_width(uint32_t pixel_width) { pixel_width_ = pixel_width; }
-
73  void set_pixel_height(uint32_t pixel_height) { pixel_height_ = pixel_height; }
-
74 
-
75  private:
-
76  ~VideoStreamInfo() override;
-
77 
-
78  VideoCodec codec_;
-
79  uint16_t width_;
-
80  uint16_t height_;
-
81 
-
82  // pixel_width_:pixel_height_ is the sample aspect ratio.
-
83  // 0 means unknown.
-
84  uint32_t pixel_width_;
-
85  uint32_t pixel_height_;
-
86  int16_t trick_play_rate_; // Non-zero for trick-play streams.
-
87 
-
88  // Specifies the normalized size of the NAL unit length field. Can be 1, 2 or
-
89  // 4 bytes, or 0 if the size if unknown or the stream is not a AVC stream
-
90  // (H.264).
-
91  uint8_t nalu_length_size_;
-
92 
-
93  // Not using DISALLOW_COPY_AND_ASSIGN here intentionally to allow the compiler
-
94  // generated copy constructor and assignment operator. Since the extra data is
-
95  // typically small, the performance impact is minimal.
-
96 };
-
97 
-
98 } // namespace media
-
99 } // namespace edash_packager
-
100 
-
101 #endif // MEDIA_BASE_VIDEO_STREAM_INFO_H_
+
70  void set_codec(VideoCodec codec) { codec_ = codec; }
+
71  void set_width(uint32_t width) { width_ = width; }
+
72  void set_height(uint32_t height) { height_ = height; }
+
73  void set_pixel_width(uint32_t pixel_width) { pixel_width_ = pixel_width; }
+
74  void set_pixel_height(uint32_t pixel_height) { pixel_height_ = pixel_height; }
+
75 
+
76  private:
+
77  ~VideoStreamInfo() override;
+
78 
+
79  VideoCodec codec_;
+
80  uint16_t width_;
+
81  uint16_t height_;
+
82 
+
83  // pixel_width_:pixel_height_ is the sample aspect ratio.
+
84  // 0 means unknown.
+
85  uint32_t pixel_width_;
+
86  uint32_t pixel_height_;
+
87  int16_t trick_play_rate_; // Non-zero for trick-play streams.
+
88 
+
89  // Specifies the normalized size of the NAL unit length field. Can be 1, 2 or
+
90  // 4 bytes, or 0 if the size if unknown or the stream is not a AVC stream
+
91  // (H.264).
+
92  uint8_t nalu_length_size_;
+
93 
+
94  // Not using DISALLOW_COPY_AND_ASSIGN here intentionally to allow the compiler
+
95  // generated copy constructor and assignment operator. Since the extra data is
+
96  // typically small, the performance impact is minimal.
+
97 };
+
98 
+
99 } // namespace media
+
100 } // namespace edash_packager
+
101 
+
102 #endif // MEDIA_BASE_VIDEO_STREAM_INFO_H_
std::string ToString() const override
Abstract class holds stream information.
Definition: stream_info.h:26
@@ -187,7 +188,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d8a/structedash__packager_1_1media_1_1mp4_1_1Box.html b/docs/d7/d8a/structedash__packager_1_1media_1_1mp4_1_1Box.html index 4871c18b12..f91ae4f21b 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 @@ -354,7 +354,7 @@ class BoxBuffer diff --git a/docs/d7/d8f/structedash__packager_1_1media_1_1mp4_1_1CueSourceIDBox-members.html b/docs/d7/d8f/structedash__packager_1_1media_1_1mp4_1_1CueSourceIDBox-members.html index cb2b431bbf..edcc77f1b2 100644 --- a/docs/d7/d8f/structedash__packager_1_1media_1_1mp4_1_1CueSourceIDBox-members.html +++ b/docs/d7/d8f/structedash__packager_1_1media_1_1mp4_1_1CueSourceIDBox-members.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d9d/progress__listener_8h_source.html b/docs/d7/d9d/progress__listener_8h_source.html index fe03c8801e..b9424834cb 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 560bb8dd26..b36ec15b65 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 911f16daf5..40ef676c58 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 @@ -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 add7254fc3..9330e2edf0 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 b546f65fce..6c17ab3637 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 5db21dc8dc..c517f064d4 100644 --- a/docs/d7/dc6/byte__queue_8h_source.html +++ b/docs/d7/dc6/byte__queue_8h_source.html @@ -144,7 +144,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/dcc/structedash__packager_1_1media_1_1mp4_1_1WebVTTConfigurationBox.html b/docs/d7/dcc/structedash__packager_1_1media_1_1mp4_1_1WebVTTConfigurationBox.html index c159b80a85..d7f5fe7251 100644 --- a/docs/d7/dcc/structedash__packager_1_1media_1_1mp4_1_1WebVTTConfigurationBox.html +++ b/docs/d7/dcc/structedash__packager_1_1media_1_1mp4_1_1WebVTTConfigurationBox.html @@ -171,7 +171,7 @@ Additional Inherited Members diff --git a/docs/d7/dd0/mpd__notifier__util_8h_source.html b/docs/d7/dd0/mpd__notifier__util_8h_source.html index 586ed85975..40ed020c22 100644 --- a/docs/d7/dd0/mpd__notifier__util_8h_source.html +++ b/docs/d7/dd0/mpd__notifier__util_8h_source.html @@ -128,7 +128,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/dd2/classedash__packager_1_1media_1_1VPxParser-members.html b/docs/d7/dd2/classedash__packager_1_1media_1_1VPxParser-members.html new file mode 100644 index 0000000000..cc713b3a8a --- /dev/null +++ b/docs/d7/dd2/classedash__packager_1_1media_1_1VPxParser-members.html @@ -0,0 +1,109 @@ + + + + + + +DASH Media Packaging SDK: Member List + + + + + + + + + +
+
+ + + + + + +
+
DASH Media Packaging SDK +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
edash_packager::media::VPxParser Member List
+
+
+ +

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

+ + + + + + +
codec_config() const edash_packager::media::VPxParserinline
Parse(const uint8_t *data, size_t data_size, std::vector< VPxFrameInfo > *vpx_frames)=0edash_packager::media::VPxParserpure virtual
VPxParser() (defined in edash_packager::media::VPxParser)edash_packager::media::VPxParserinline
writable_codec_config() (defined in edash_packager::media::VPxParser)edash_packager::media::VPxParserinlineprotected
~VPxParser() (defined in edash_packager::media::VPxParser)edash_packager::media::VPxParserinlinevirtual
+ + + + diff --git a/docs/d7/dd4/request__signer_8h_source.html b/docs/d7/dd4/request__signer_8h_source.html index 41fc8fadde..c6f87e6c67 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 d9defee1fe..75cd8967de 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 d1b815b61a..9760e94e22 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 3a14d5c52b..265f35f572 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 cff3ef7980..78986d5575 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 @@ -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 5f72f98860..3a682c88f1 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 d7a01396b2..3c4f5a2eae 100644 --- a/docs/d7/def/mp4__media__parser_8cc_source.html +++ b/docs/d7/def/mp4__media__parser_8cc_source.html @@ -838,7 +838,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); 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 306d228949..8da45f2061 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 @@ -116,7 +116,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 c46375a217..fc7c29bf80 100644 --- a/docs/d7/df3/classedash__packager_1_1media_1_1File-members.html +++ b/docs/d7/df3/classedash__packager_1_1media_1_1File-members.html @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/df9/byte__queue_8cc_source.html b/docs/d7/df9/byte__queue_8cc_source.html index e8fb25a655..45c7267507 100644 --- a/docs/d7/df9/byte__queue_8cc_source.html +++ b/docs/d7/df9/byte__queue_8cc_source.html @@ -182,7 +182,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/dfa/classedash__packager_1_1media_1_1webm_1_1TwoPassSingleSegmentSegmenter.html b/docs/d7/dfa/classedash__packager_1_1media_1_1webm_1_1TwoPassSingleSegmentSegmenter.html index 4985f6fc0f..9bc3ace980 100644 --- a/docs/d7/dfa/classedash__packager_1_1media_1_1webm_1_1TwoPassSingleSegmentSegmenter.html +++ b/docs/d7/dfa/classedash__packager_1_1media_1_1webm_1_1TwoPassSingleSegmentSegmenter.html @@ -214,7 +214,7 @@ double cluster_length_sec< diff --git a/docs/d8/d0d/classedash__packager_1_1media_1_1mp4_1_1MP4MediaParser.html b/docs/d8/d0d/classedash__packager_1_1media_1_1mp4_1_1MP4MediaParser.html index 00a54b3022..fb39586627 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 @@ -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 3716adc0fb..5129158eb8 100644 --- a/docs/d8/d0d/media__sample_8cc_source.html +++ b/docs/d8/d0d/media__sample_8cc_source.html @@ -195,7 +195,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d19/bandwidth__estimator_8h_source.html b/docs/d8/d19/bandwidth__estimator_8h_source.html index 4660b0daab..446b08463e 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 d191a20786..df8356d327 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 @@ -112,8 +112,8 @@ Inheritance diagram for edash_packager::media::mp4::EncryptingFragmenter: - - + + @@ -182,9 +182,9 @@ void 

Public Member Functions

 EncryptingFragmenter (TrackFragment *traf, scoped_ptr< EncryptionKey > encryption_key, int64_t clear_time, uint8_t nalu_length_size)
 
 EncryptingFragmenter (TrackFragment *traf, scoped_ptr< EncryptionKey > encryption_key, int64_t clear_time, VideoCodec video_codec, uint8_t nalu_length_size)
 
Fragmenter implementation overrides.
Status AddSample (scoped_refptr< MediaSample > sample) override
 
set_encryption_key

Detailed Description

EncryptingFragmenter generates MP4 fragments with sample encrypted.

-

Definition at line 21 of file encrypting_fragmenter.h.

+

Definition at line 23 of file encrypting_fragmenter.h.

Constructor & Destructor Documentation

- +
@@ -206,6 +206,12 @@ void  + + + + + + @@ -224,12 +230,13 @@ void  +
set_encryption_keyint64_t  clear_time,
VideoCodec video_codec,
set_encryption_keytrafpoints to a TrackFragment box.
encryption_keycontains the encryption parameters.
clear_timespecifies clear lead duration in units of the current track's timescale.
video_codecspecifies the codec if input is a video stream; it should be set to kUnknownVideoCodec for audio stream. This parameter is used for proper subsample encryption.
nalu_length_sizespecifies the size of NAL unit length, in bytes, for subsample encryption.
-

Definition at line 25 of file encrypting_fragmenter.cc.

+

Definition at line 27 of file encrypting_fragmenter.cc.

@@ -266,7 +273,7 @@ void 
set_encryption_keyReimplemented from edash_packager::media::mp4::Fragmenter.

-

Definition at line 39 of file encrypting_fragmenter.cc.

+

Definition at line 48 of file encrypting_fragmenter.cc.

@@ -293,7 +300,7 @@ void 
set_encryption_keyCreate the encryptor for the internal encryption key. The existing encryptor will be reset if it is not NULL.

Returns
OK on success, an error status otherwise.
-

Definition at line 112 of file encrypting_fragmenter.cc.

+

Definition at line 121 of file encrypting_fragmenter.cc.

@@ -329,7 +336,7 @@ void 
set_encryption_keyReimplemented from edash_packager::media::mp4::Fragmenter.

-

Definition at line 54 of file encrypting_fragmenter.cc.

+

Definition at line 63 of file encrypting_fragmenter.cc.

@@ -359,7 +366,7 @@ void 
set_encryption_keyReimplemented in edash_packager::media::mp4::KeyRotationFragmenter.

-

Definition at line 87 of file encrypting_fragmenter.cc.

+

Definition at line 96 of file encrypting_fragmenter.cc.

@@ -370,7 +377,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 791ceebb88..688086c244 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 ceb40b364e..529294921f 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 fa7557215f..7ba5e4cbde 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 6924e9e875..484b3e4176 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 @@ -110,7 +110,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 dff03aaf3a..be1a3f9743 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 9840e8ccb4..dc8de4224b 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 @@ -113,7 +113,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 e5d98fcaf9..d454a6d714 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 46878a28da..c15d905f7e 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 @@ -113,7 +113,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 72484a8a5e..8a883694d9 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 @@ -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 34e2ac530e..e0d9b0fef3 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 @@ -107,21 +107,22 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); sample_bits() const (defined in edash_packager::media::AudioStreamInfo)edash_packager::media::AudioStreamInfoinline sample_bytes() const (defined in edash_packager::media::AudioStreamInfo)edash_packager::media::AudioStreamInfoinline sampling_frequency() const (defined in edash_packager::media::AudioStreamInfo)edash_packager::media::AudioStreamInfoinline - set_codec_string(const std::string &codec_string) (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline - set_duration(int duration) (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline - set_extra_data(const std::vector< uint8_t > &data) (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline - set_language(const std::string &language) (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline - set_sampling_frequency(const uint32_t sampling_frequency) (defined in edash_packager::media::AudioStreamInfo)edash_packager::media::AudioStreamInfoinline - stream_type() const (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline - StreamInfo(StreamType stream_type, int track_id, uint32_t time_scale, uint64_t duration, const std::string &codec_string, const std::string &language, const uint8_t *extra_data, size_t extra_data_size, bool is_encrypted) (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfo - time_scale() const (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline - ToString() const overrideedash_packager::media::AudioStreamInfovirtual - track_id() const (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline - ~StreamInfo() (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoprotectedvirtual + set_codec(AudioCodec codec) (defined in edash_packager::media::AudioStreamInfo)edash_packager::media::AudioStreamInfoinline + set_codec_string(const std::string &codec_string) (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline + set_duration(int duration) (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline + set_extra_data(const std::vector< uint8_t > &data) (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline + set_language(const std::string &language) (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline + set_sampling_frequency(const uint32_t sampling_frequency) (defined in edash_packager::media::AudioStreamInfo)edash_packager::media::AudioStreamInfoinline + stream_type() const (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline + StreamInfo(StreamType stream_type, int track_id, uint32_t time_scale, uint64_t duration, const std::string &codec_string, const std::string &language, const uint8_t *extra_data, size_t extra_data_size, bool is_encrypted) (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfo + time_scale() const (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline + ToString() const overrideedash_packager::media::AudioStreamInfovirtual + track_id() const (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoinline + ~StreamInfo() (defined in edash_packager::media::StreamInfo)edash_packager::media::StreamInfoprotectedvirtual 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 8b3f271e8f..d349b85c05 100644 --- a/docs/d8/d6c/classedash__packager_1_1media_1_1MediaSample.html +++ b/docs/d8/d6c/classedash__packager_1_1media_1_1MediaSample.html @@ -408,7 +408,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 d143259ca5..7cd85cf4b2 100644 --- a/docs/d8/d6f/classedash__packager_1_1MockAdaptationSet-members.html +++ b/docs/d8/d6f/classedash__packager_1_1MockAdaptationSet-members.html @@ -126,7 +126,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d6f/structedash__packager_1_1media_1_1mp4_1_1TrackFragment-members.html b/docs/d8/d6f/structedash__packager_1_1media_1_1mp4_1_1TrackFragment-members.html index 0946adef91..9c69bb07f1 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 @@ -115,7 +115,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 09701f4b80..746cc12f5b 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 88ec677d70..388fd43fb0 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 79343cf1cc..cf99764203 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 @@ -110,7 +110,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 13c9516e48..97b4244274 100644 --- a/docs/d8/d78/classedash__packager_1_1MockAdaptationSet.html +++ b/docs/d8/d78/classedash__packager_1_1MockAdaptationSet.html @@ -183,7 +183,7 @@ Additional Inherited Members diff --git a/docs/d8/d78/classedash__packager_1_1media_1_1WebMContentEncodingsClient.html b/docs/d8/d78/classedash__packager_1_1media_1_1WebMContentEncodingsClient.html index 7e8360f3ca..9cea849409 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 1872b64b1a..e13b971fef 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 5f6d0aade5..303cfa5b64 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 6e8fe8f303..c2007769dc 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 0f8eab2616..f85a5a41d8 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 881e40ea74..cf2dd6ee40 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 0be7416860..14d3cdd9ce 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 c1b96d5255..b4072cc52a 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 f5c4a74f42..06c4e592a2 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 83ee1b993f..1270fa80d6 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 cd5089d946..bd61688654 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 @@ -112,7 +112,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 b1a197dfd4..ca02e5ce01 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 5886942341..1cb71f4378 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 66f4964241..5b66f7b2cd 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 ce1953a85a..7de269de18 100644 --- a/docs/d8/dc7/classedash__packager_1_1media_1_1UdpFile.html +++ b/docs/d8/dc7/classedash__packager_1_1media_1_1UdpFile.html @@ -463,7 +463,7 @@ Additional Inherited Members diff --git a/docs/d8/dca/classedash__packager_1_1media_1_1AesCbcPkcs5Decryptor-members.html b/docs/d8/dca/classedash__packager_1_1media_1_1AesCbcPkcs5Decryptor-members.html index cb99bf9243..23e435fbed 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 d1911a5117..bd3976ffd4 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 7a9e69bfc1..76bbff45bf 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 2a63d5a105..de94a90d8a 100644 --- a/docs/d8/de6/webm__crypto__helpers_8h_source.html +++ b/docs/d8/de6/webm__crypto__helpers_8h_source.html @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/df0/webm_2single__segment__segmenter_8cc_source.html b/docs/d8/df0/webm_2single__segment__segmenter_8cc_source.html index 479bc2bfaf..426784a430 100644 --- a/docs/d8/df0/webm_2single__segment__segmenter_8cc_source.html +++ b/docs/d8/df0/webm_2single__segment__segmenter_8cc_source.html @@ -175,11 +175,11 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
86 } // namespace webm
87 } // namespace media
88 } // namespace edash_packager
- + diff --git a/docs/d8/df1/classedash__packager_1_1MpdWriter-members.html b/docs/d8/df1/classedash__packager_1_1MpdWriter-members.html index 47d638b86f..093b22e2bb 100644 --- a/docs/d8/df1/classedash__packager_1_1MpdWriter-members.html +++ b/docs/d8/df1/classedash__packager_1_1MpdWriter-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/dfd/structedash__packager_1_1media_1_1VPxFrameInfo.html b/docs/d8/dfd/structedash__packager_1_1media_1_1VPxFrameInfo.html index f6b151f4e7..63153a8758 100644 --- a/docs/d8/dfd/structedash__packager_1_1media_1_1VPxFrameInfo.html +++ b/docs/d8/dfd/structedash__packager_1_1media_1_1VPxFrameInfo.html @@ -102,9 +102,9 @@ size_t frame_size size_t uncompressed_header_size   - -bool is_key_frame -  + +bool is_keyframe uint32_t width   @@ -114,14 +114,14 @@ uint32_t height

Detailed Description

-

Definition at line 20 of file vp9_parser.h.

+

Definition at line 19 of file vpx_parser.h.


The documentation for this struct was generated from the following file: diff --git a/docs/d9/d01/mp4_2single__segment__segmenter_8h_source.html b/docs/d9/d01/mp4_2single__segment__segmenter_8h_source.html index 4a349beac2..fe6bf08c24 100644 --- a/docs/d9/d01/mp4_2single__segment__segmenter_8h_source.html +++ b/docs/d9/d01/mp4_2single__segment__segmenter_8h_source.html @@ -140,7 +140,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d08/mock__mpd__builder_8h_source.html b/docs/d9/d08/mock__mpd__builder_8h_source.html index 94dd839249..6002d5f4c8 100644 --- a/docs/d9/d08/mock__mpd__builder_8h_source.html +++ b/docs/d9/d08/mock__mpd__builder_8h_source.html @@ -180,7 +180,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d15/key__rotation__fragmenter_8cc_source.html b/docs/d9/d15/key__rotation__fragmenter_8cc_source.html index 4b10cfe956..a3aed2d2b5 100644 --- a/docs/d9/d15/key__rotation__fragmenter_8cc_source.html +++ b/docs/d9/d15/key__rotation__fragmenter_8cc_source.html @@ -106,129 +106,131 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
17 const bool kInitialEncryptionInfo = false;
18 } // namespace
19 
- +
21  TrackFragment* traf,
22  KeySource* encryption_key_source,
23  KeySource::TrackType track_type,
24  int64_t crypto_period_duration,
25  int64_t clear_time,
-
26  uint8_t nalu_length_size,
-
27  MuxerListener* muxer_listener)
-
28  : EncryptingFragmenter(traf,
-
29  scoped_ptr<EncryptionKey>(new EncryptionKey()),
-
30  clear_time,
-
31  nalu_length_size),
-
32  moof_(moof),
-
33  encryption_key_source_(encryption_key_source),
-
34  track_type_(track_type),
-
35  crypto_period_duration_(crypto_period_duration),
-
36  prev_crypto_period_index_(-1),
-
37  muxer_listener_(muxer_listener) {
-
38  DCHECK(moof);
-
39  DCHECK(encryption_key_source);
-
40 }
-
41 
-
42 KeyRotationFragmenter::~KeyRotationFragmenter() {}
+
26  VideoCodec video_codec,
+
27  uint8_t nalu_length_size,
+
28  MuxerListener* muxer_listener)
+
29  : EncryptingFragmenter(traf,
+
30  scoped_ptr<EncryptionKey>(new EncryptionKey()),
+
31  clear_time,
+
32  video_codec,
+
33  nalu_length_size),
+
34  moof_(moof),
+
35  encryption_key_source_(encryption_key_source),
+
36  track_type_(track_type),
+
37  crypto_period_duration_(crypto_period_duration),
+
38  prev_crypto_period_index_(-1),
+
39  muxer_listener_(muxer_listener) {
+
40  DCHECK(moof);
+
41  DCHECK(encryption_key_source);
+
42 }
43 
- -
45  bool enable_encryption) {
-
46  bool need_to_refresh_encryptor = !encryptor();
-
47 
-
48  size_t current_crypto_period_index =
-
49  traf()->decode_time.decode_time / crypto_period_duration_;
-
50  if (current_crypto_period_index != prev_crypto_period_index_) {
-
51  scoped_ptr<EncryptionKey> encryption_key(new EncryptionKey());
-
52  Status status = encryption_key_source_->GetCryptoPeriodKey(
-
53  current_crypto_period_index, track_type_, encryption_key.get());
-
54  if (!status.ok())
-
55  return status;
-
56  set_encryption_key(encryption_key.Pass());
-
57  prev_crypto_period_index_ = current_crypto_period_index;
-
58  need_to_refresh_encryptor = true;
-
59  }
-
60 
-
61  // One and only one 'pssh' box is needed.
-
62  if (moof_->pssh.empty())
-
63  moof_->pssh.resize(1);
-
64  DCHECK(encryption_key());
-
65  moof_->pssh[0].raw_box = encryption_key()->pssh;
-
66 
-
67  if (muxer_listener_) {
-
68  muxer_listener_->OnEncryptionInfoReady(
-
69  !kInitialEncryptionInfo,
-
70  encryption_key_source_->UUID(), encryption_key_source_->SystemName(),
-
71  encryption_key()->key_id, encryption_key()->pssh);
-
72  }
-
73 
-
74  // Skip the following steps if the current fragment is not going to be
-
75  // encrypted. 'pssh' box needs to be included in the fragment, which is
-
76  // performed above, regardless of whether the fragment is encrypted. This is
-
77  // necessary for two reasons: 1) Requesting keys before reaching encrypted
-
78  // content avoids playback delay due to license requests; 2) In Chrome, CDM
-
79  // must be initialized before starting the playback and CDM can only be
-
80  // initialized with a valid 'pssh'.
-
81  if (!enable_encryption) {
-
82  DCHECK(!encryptor());
-
83  return Status::OK;
-
84  }
-
85 
-
86  if (need_to_refresh_encryptor) {
-
87  Status status = CreateEncryptor();
-
88  if (!status.ok())
-
89  return status;
-
90  }
-
91  DCHECK(encryptor());
-
92 
-
93  // Key rotation happens in fragment boundary only in this implementation,
-
94  // i.e. there is at most one key for the fragment. So there should be only
-
95  // one entry in SampleGroupDescription box and one entry in SampleToGroup box.
-
96  // Fill in SampleGroupDescription box information.
-
97  traf()->sample_group_description.grouping_type = FOURCC_SEIG;
-
98  traf()->sample_group_description.entries.resize(1);
-
99  traf()->sample_group_description.entries[0].is_encrypted = true;
-
100  traf()->sample_group_description.entries[0].iv_size =
-
101  encryptor()->iv().size();
-
102  traf()->sample_group_description.entries[0].key_id = encryption_key()->key_id;
-
103 
-
104  // Fill in SampleToGroup box information.
-
105  traf()->sample_to_group.grouping_type = FOURCC_SEIG;
-
106  traf()->sample_to_group.entries.resize(1);
-
107  // sample_count is adjusted in |FinalizeFragment| later.
-
108  traf()->sample_to_group.entries[0].group_description_index =
-
109  SampleToGroupEntry::kTrackFragmentGroupDescriptionIndexBase + 1;
-
110 
-
111  return Status::OK;
-
112 }
-
113 
- - -
116  DCHECK_EQ(1u, traf()->sample_to_group.entries.size());
-
117  traf()->sample_to_group.entries[0].sample_count =
-
118  traf()->auxiliary_size.sample_count;
-
119 }
-
120 
-
121 } // namespace mp4
-
122 } // namespace media
-
123 } // namespace edash_packager
-
KeyRotationFragmenter(MovieFragment *moof, TrackFragment *traf, KeySource *encryption_key_source, KeySource::TrackType track_type, int64_t crypto_period_duration, int64_t clear_time, uint8_t nalu_length_size, MuxerListener *muxer_listener)
+
44 KeyRotationFragmenter::~KeyRotationFragmenter() {}
+
45 
+ +
47  bool enable_encryption) {
+
48  bool need_to_refresh_encryptor = !encryptor();
+
49 
+
50  size_t current_crypto_period_index =
+
51  traf()->decode_time.decode_time / crypto_period_duration_;
+
52  if (current_crypto_period_index != prev_crypto_period_index_) {
+
53  scoped_ptr<EncryptionKey> encryption_key(new EncryptionKey());
+
54  Status status = encryption_key_source_->GetCryptoPeriodKey(
+
55  current_crypto_period_index, track_type_, encryption_key.get());
+
56  if (!status.ok())
+
57  return status;
+
58  set_encryption_key(encryption_key.Pass());
+
59  prev_crypto_period_index_ = current_crypto_period_index;
+
60  need_to_refresh_encryptor = true;
+
61  }
+
62 
+
63  // One and only one 'pssh' box is needed.
+
64  if (moof_->pssh.empty())
+
65  moof_->pssh.resize(1);
+
66  DCHECK(encryption_key());
+
67  moof_->pssh[0].raw_box = encryption_key()->pssh;
+
68 
+
69  if (muxer_listener_) {
+
70  muxer_listener_->OnEncryptionInfoReady(
+
71  !kInitialEncryptionInfo,
+
72  encryption_key_source_->UUID(), encryption_key_source_->SystemName(),
+
73  encryption_key()->key_id, encryption_key()->pssh);
+
74  }
+
75 
+
76  // Skip the following steps if the current fragment is not going to be
+
77  // encrypted. 'pssh' box needs to be included in the fragment, which is
+
78  // performed above, regardless of whether the fragment is encrypted. This is
+
79  // necessary for two reasons: 1) Requesting keys before reaching encrypted
+
80  // content avoids playback delay due to license requests; 2) In Chrome, CDM
+
81  // must be initialized before starting the playback and CDM can only be
+
82  // initialized with a valid 'pssh'.
+
83  if (!enable_encryption) {
+
84  DCHECK(!encryptor());
+
85  return Status::OK;
+
86  }
+
87 
+
88  if (need_to_refresh_encryptor) {
+
89  Status status = CreateEncryptor();
+
90  if (!status.ok())
+
91  return status;
+
92  }
+
93  DCHECK(encryptor());
+
94 
+
95  // Key rotation happens in fragment boundary only in this implementation,
+
96  // i.e. there is at most one key for the fragment. So there should be only
+
97  // one entry in SampleGroupDescription box and one entry in SampleToGroup box.
+
98  // Fill in SampleGroupDescription box information.
+
99  traf()->sample_group_description.grouping_type = FOURCC_SEIG;
+
100  traf()->sample_group_description.entries.resize(1);
+
101  traf()->sample_group_description.entries[0].is_encrypted = true;
+
102  traf()->sample_group_description.entries[0].iv_size =
+
103  encryptor()->iv().size();
+
104  traf()->sample_group_description.entries[0].key_id = encryption_key()->key_id;
+
105 
+
106  // Fill in SampleToGroup box information.
+
107  traf()->sample_to_group.grouping_type = FOURCC_SEIG;
+
108  traf()->sample_to_group.entries.resize(1);
+
109  // sample_count is adjusted in |FinalizeFragment| later.
+
110  traf()->sample_to_group.entries[0].group_description_index =
+
111  SampleToGroupEntry::kTrackFragmentGroupDescriptionIndexBase + 1;
+
112 
+
113  return Status::OK;
+
114 }
+
115 
+ + +
118  DCHECK_EQ(1u, traf()->sample_to_group.entries.size());
+
119  traf()->sample_to_group.entries[0].sample_count =
+
120  traf()->auxiliary_size.sample_count;
+
121 }
+
122 
+
123 } // namespace mp4
+
124 } // namespace media
+
125 } // namespace edash_packager
virtual Status GetCryptoPeriodKey(uint32_t crypto_period_index, TrackType track_type, EncryptionKey *key)
Definition: key_source.cc:66
-
void FinalizeFragmentForEncryption() override
Finalize current fragment for encryption.
+
void FinalizeFragmentForEncryption() override
Finalize current fragment for encryption.
- -
EncryptingFragmenter generates MP4 fragments with sample encrypted.
+ +
EncryptingFragmenter generates MP4 fragments with sample encrypted.
-
Status PrepareFragmentForEncryption(bool enable_encryption) override
+
Status PrepareFragmentForEncryption(bool enable_encryption) override
virtual std::string UUID()
Definition: key_source.cc:92
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:29
+
KeyRotationFragmenter(MovieFragment *moof, TrackFragment *traf, KeySource *encryption_key_source, KeySource::TrackType track_type, int64_t crypto_period_duration, int64_t clear_time, VideoCodec video_codec, uint8_t nalu_length_size, MuxerListener *muxer_listener)
virtual std::string SystemName()
Definition: key_source.cc:96
-
virtual void FinalizeFragmentForEncryption()
Finalize current fragment for encryption.
+
virtual void FinalizeFragmentForEncryption()
Finalize current fragment for encryption.
diff --git a/docs/d9/d17/classedash__packager_1_1DashIopMpdNotifier-members.html b/docs/d9/d17/classedash__packager_1_1DashIopMpdNotifier-members.html index 553303e8ec..b86bd9d1f3 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 f763d038a5..2effca00d4 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 @@ -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 680fb5f80a..ecfb929892 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 5e80ec4133..13ea7ab4ea 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 2be9586daa..e89bdcc576 100644 --- a/docs/d9/d46/classedash__packager_1_1media_1_1BufferReader.html +++ b/docs/d9/d46/classedash__packager_1_1media_1_1BufferReader.html @@ -276,7 +276,7 @@ bool ReadNBytesInto8s diff --git a/docs/d9/d47/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentHeader.html b/docs/d9/d47/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentHeader.html index 6fc8203f20..116ffa8387 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 @@ -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 f0766df4b2..4204259139 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 730471ea8d..e8811b0f12 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 72d232b311..d8654cfaa2 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 aa613d22bc..7d08b0d2e0 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 b205756e51..416e5dd9eb 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 0eea20641f..120631db70 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 6a69490e00..e5e264de3e 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 d4a31bf6b3..c2d3720a0d 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 8e77c47e4d..cced079f85 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 ac19632cb6..c4126ba773 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 f94243a753..2d273b500b 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 d87277b7fd..af4f6e7daa 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 8b57e39d81..3545aa6df3 100644 --- a/docs/d9/da4/stream__descriptor_8h_source.html +++ b/docs/d9/da4/stream__descriptor_8h_source.html @@ -141,7 +141,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/db4/classedash__packager_1_1media_1_1VodMediaInfoDumpMuxerListener.html b/docs/d9/db4/classedash__packager_1_1media_1_1VodMediaInfoDumpMuxerListener.html index ad9d109c54..30264d47f6 100644 --- a/docs/d9/db4/classedash__packager_1_1media_1_1VodMediaInfoDumpMuxerListener.html +++ b/docs/d9/db4/classedash__packager_1_1media_1_1VodMediaInfoDumpMuxerListener.html @@ -252,7 +252,7 @@ Additional Inherited Members diff --git a/docs/d9/db9/content__protection__element_8cc_source.html b/docs/d9/db9/content__protection__element_8cc_source.html index 246e9313cf..5720ca2f42 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 1c3614a716..307ea1d0a7 100644 --- a/docs/d9/db9/muxer_8cc_source.html +++ b/docs/d9/db9/muxer_8cc_source.html @@ -214,7 +214,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/dbf/classedash__packager_1_1media_1_1TextStreamInfo-members.html b/docs/d9/dbf/classedash__packager_1_1media_1_1TextStreamInfo-members.html index 6da80da5f7..a2e55dd33f 100644 --- a/docs/d9/dbf/classedash__packager_1_1media_1_1TextStreamInfo-members.html +++ b/docs/d9/dbf/classedash__packager_1_1media_1_1TextStreamInfo-members.html @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/dc8/webm__constants_8cc_source.html b/docs/d9/dc8/webm__constants_8cc_source.html index a99dd29215..4038b601fc 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 e3ed5a782e..6610b07e73 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 @@ -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 cf46f228c6..85b3a26f7d 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 11a351e977..ef18152864 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 ea45d03887..be58623ad1 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 e77336d73c..b2cb28a8c0 100644 --- a/docs/d9/ded/aac__audio__specific__config_8cc_source.html +++ b/docs/d9/ded/aac__audio__specific__config_8cc_source.html @@ -357,7 +357,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d00/structedash__packager_1_1media_1_1mp4_1_1SubtitleMediaHeader-members.html b/docs/da/d00/structedash__packager_1_1media_1_1mp4_1_1SubtitleMediaHeader-members.html index d592ecd883..5592204141 100644 --- a/docs/da/d00/structedash__packager_1_1media_1_1mp4_1_1SubtitleMediaHeader-members.html +++ b/docs/da/d00/structedash__packager_1_1media_1_1mp4_1_1SubtitleMediaHeader-members.html @@ -111,7 +111,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 5d25687651..7b1ddae95c 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 3519861ce1..dcb7f22b6f 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 @@ -112,7 +112,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 e13a58f554..c472590969 100644 --- a/docs/da/d04/audio__stream__info_8cc_source.html +++ b/docs/da/d04/audio__stream__info_8cc_source.html @@ -234,7 +234,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d14/classedash__packager_1_1media_1_1webm_1_1Segmenter.html b/docs/da/d14/classedash__packager_1_1media_1_1webm_1_1Segmenter.html index 3d9a94e334..df7dbaf228 100644 --- a/docs/da/d14/classedash__packager_1_1media_1_1webm_1_1Segmenter.html +++ b/docs/da/d14/classedash__packager_1_1media_1_1webm_1_1Segmenter.html @@ -413,7 +413,7 @@ virtual diff --git a/docs/da/d15/structedash__packager_1_1media_1_1mp4_1_1HandlerReference-members.html b/docs/da/d15/structedash__packager_1_1media_1_1mp4_1_1HandlerReference-members.html index 1db06186de..2244301aab 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 @@ -112,7 +112,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 5266533fbc..6fdec185f4 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 @@ -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 69b6427d7b..79c06f0cbd 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 b15e407ba7..0d2e811296 100644 --- a/docs/da/d22/key__rotation__fragmenter_8h_source.html +++ b/docs/da/d22/key__rotation__fragmenter_8h_source.html @@ -108,53 +108,54 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
19 
23  public:
- -
39  TrackFragment* traf,
-
40  KeySource* encryption_key_source,
-
41  KeySource::TrackType track_type,
-
42  int64_t crypto_period_duration,
-
43  int64_t clear_time,
-
44  uint8_t nalu_length_size,
-
45  MuxerListener* muxer_listener);
-
46  ~KeyRotationFragmenter() override;
-
47 
-
48  protected:
-
51  Status PrepareFragmentForEncryption(bool enable_encryption) override;
-
52  void FinalizeFragmentForEncryption() override;
-
54 
-
55  private:
-
56  MovieFragment* moof_;
-
57 
-
58  KeySource* encryption_key_source_;
-
59  KeySource::TrackType track_type_;
-
60  const int64_t crypto_period_duration_;
-
61  size_t prev_crypto_period_index_;
-
62 
-
63  // For notifying new pssh boxes to the event handler.
-
64  MuxerListener* const muxer_listener_;
-
65 
-
66  DISALLOW_COPY_AND_ASSIGN(KeyRotationFragmenter);
-
67 };
-
68 
-
69 } // namespace mp4
-
70 } // namespace media
-
71 } // namespace edash_packager
+ +
42  TrackFragment* traf,
+
43  KeySource* encryption_key_source,
+
44  KeySource::TrackType track_type,
+
45  int64_t crypto_period_duration,
+
46  int64_t clear_time,
+
47  VideoCodec video_codec,
+
48  uint8_t nalu_length_size,
+
49  MuxerListener* muxer_listener);
+
50  ~KeyRotationFragmenter() override;
+
51 
+
52  protected:
+
55  Status PrepareFragmentForEncryption(bool enable_encryption) override;
+
56  void FinalizeFragmentForEncryption() override;
+
58 
+
59  private:
+
60  MovieFragment* moof_;
+
61 
+
62  KeySource* encryption_key_source_;
+
63  KeySource::TrackType track_type_;
+
64  const int64_t crypto_period_duration_;
+
65  size_t prev_crypto_period_index_;
+
66 
+
67  // For notifying new pssh boxes to the event handler.
+
68  MuxerListener* const muxer_listener_;
+
69 
+
70  DISALLOW_COPY_AND_ASSIGN(KeyRotationFragmenter);
+
71 };
72 
-
73 #endif // MEDIA_FORMATS_MP4_KEY_ROTATION_FRAGMENTER_H_
-
KeyRotationFragmenter(MovieFragment *moof, TrackFragment *traf, KeySource *encryption_key_source, KeySource::TrackType track_type, int64_t crypto_period_duration, int64_t clear_time, uint8_t nalu_length_size, MuxerListener *muxer_listener)
-
void FinalizeFragmentForEncryption() override
Finalize current fragment for encryption.
-
EncryptingFragmenter generates MP4 fragments with sample encrypted.
+
73 } // namespace mp4
+
74 } // namespace media
+
75 } // namespace edash_packager
+
76 
+
77 #endif // MEDIA_FORMATS_MP4_KEY_ROTATION_FRAGMENTER_H_
+
void FinalizeFragmentForEncryption() override
Finalize current fragment for encryption.
+
EncryptingFragmenter generates MP4 fragments with sample encrypted.
-
Status PrepareFragmentForEncryption(bool enable_encryption) override
+
Status PrepareFragmentForEncryption(bool enable_encryption) override
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:29
+
KeyRotationFragmenter(MovieFragment *moof, TrackFragment *traf, KeySource *encryption_key_source, KeySource::TrackType track_type, int64_t crypto_period_duration, int64_t clear_time, VideoCodec video_codec, uint8_t nalu_length_size, MuxerListener *muxer_listener)
diff --git a/docs/da/d27/classedash__packager_1_1media_1_1AudioStreamInfo.html b/docs/da/d27/classedash__packager_1_1media_1_1AudioStreamInfo.html index 42984d18b7..733d3a4db3 100644 --- a/docs/da/d27/classedash__packager_1_1media_1_1AudioStreamInfo.html +++ b/docs/da/d27/classedash__packager_1_1media_1_1AudioStreamInfo.html @@ -133,6 +133,9 @@ uint32_t sampling_frequenc uint32_t bytes_per_frame () const   + +void set_codec (AudioCodec codec) +  void set_sampling_frequency (const uint32_t sampling_frequency)   @@ -298,7 +301,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 821149ffc2..b5d304c346 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 @@ -186,7 +186,7 @@ Additional Inherited Members diff --git a/docs/da/d2a/text__stream__info_8h_source.html b/docs/da/d2a/text__stream__info_8h_source.html index f6dd0050b8..fc0658bf5a 100644 --- a/docs/da/d2a/text__stream__info_8h_source.html +++ b/docs/da/d2a/text__stream__info_8h_source.html @@ -140,7 +140,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d37/classedash__packager_1_1media_1_1IoCache-members.html b/docs/da/d37/classedash__packager_1_1media_1_1IoCache-members.html index 901aa35b63..9516eb20d7 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 3c7ba8f1b0..d50d4d2e0e 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 cad49e4fb3..ad13e70615 100644 --- a/docs/da/d40/classedash__packager_1_1media_1_1RsaPrivateKey-members.html +++ b/docs/da/d40/classedash__packager_1_1media_1_1RsaPrivateKey-members.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d41/mp4_2multi__segment__segmenter_8h_source.html b/docs/da/d41/mp4_2multi__segment__segmenter_8h_source.html index f9a4c5ff81..94d30cdca4 100644 --- a/docs/da/d41/mp4_2multi__segment__segmenter_8h_source.html +++ b/docs/da/d41/mp4_2multi__segment__segmenter_8h_source.html @@ -143,7 +143,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d47/structedash__packager_1_1media_1_1H264PPS-members.html b/docs/da/d47/structedash__packager_1_1media_1_1H264PPS-members.html index d4d15c5b8a..5d21cd0d39 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 23a9a1b560..fe53520f6a 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 3bd1de3a4d..26b83cbd51 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 @@ -171,7 +171,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 20560ccb45..034b6dba00 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 @@ -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 3dfd09952d..3fb23cb050 100644 --- a/docs/da/d5c/widevine__key__source_8h_source.html +++ b/docs/da/d5c/widevine__key__source_8h_source.html @@ -217,7 +217,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d5f/classedash__packager_1_1media_1_1VP9Parser.html b/docs/da/d5f/classedash__packager_1_1media_1_1VP9Parser.html index 9267b490e4..753c2b19ef 100644 --- a/docs/da/d5f/classedash__packager_1_1media_1_1VP9Parser.html +++ b/docs/da/d5f/classedash__packager_1_1media_1_1VP9Parser.html @@ -88,6 +88,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
edash_packager::media::VP9Parser Class Reference
@@ -98,20 +99,42 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); More...

#include <vp9_parser.h>

+
+Inheritance diagram for edash_packager::media::VP9Parser:
+
+
+ + +edash_packager::media::VPxParser + +
- - - - + + + + + +

Public Member Functions

bool Parse (const uint8_t *data, size_t data_size, std::vector< VPxFrameInfo > *vpx_frames)
 
const VPCodecConfigurationcodec_config ()
 
bool Parse (const uint8_t *data, size_t data_size, std::vector< VPxFrameInfo > *vpx_frames) override
 
- Public Member Functions inherited from edash_packager::media::VPxParser
const VPCodecConfigurationcodec_config () const
 
+ + + +

+Static Public Member Functions

static bool IsKeyframe (const uint8_t *data, size_t data_size)
 
+ + + +

+Additional Inherited Members

- Protected Member Functions inherited from edash_packager::media::VPxParser
+VPCodecConfigurationwritable_codec_config ()
 

Detailed Description

Class to parse a vp9 bit stream.

-

Definition at line 29 of file vp9_parser.h.

+

Definition at line 20 of file vp9_parser.h.

Member Function Documentation

- +
@@ -119,27 +142,48 @@ Public Member Functions +static
- + - + + + + + + + + + + + +
const VPCodecConfiguration& edash_packager::media::VP9Parser::codec_config bool edash_packager::media::VP9Parser::IsKeyframe ()const uint8_t * data,
size_t data_size 
)
-inline
-
Returns
VPx codec configuration extracted. Note that it is only valid after parsing a key frame or intra frame successfully.
+

A convenient utility function to check whether the frame is a keyframe. Note that this function does not do a full parse of the frame header, so should be more efficient than Parse().

+
Parameters
+ + +
data_sizeSize of the sample in bytes.
+
+
+
Returns
true if it is, false if it is not or if there is parsing error.
-

Definition at line 46 of file vp9_parser.h.

+

Definition at line 534 of file vp9_parser.cc.

- +
+ + + + + +
@@ -165,6 +209,11 @@ Public Member Functions
bool edash_packager::media::VP9Parser::Parse
+
+overridevirtual

Parse data with size data_size.

Parameters
@@ -176,7 +225,9 @@ Public Member Functions
Returns
true on success, false otherwise.
-

Definition at line 429 of file vp9_parser.cc.

+

Implements edash_packager::media::VPxParser.

+ +

Definition at line 417 of file vp9_parser.cc.

@@ -187,7 +238,7 @@ Public Member Functions
diff --git a/docs/da/d5f/classedash__packager_1_1media_1_1VP9Parser.png b/docs/da/d5f/classedash__packager_1_1media_1_1VP9Parser.png new file mode 100644 index 0000000000..143f00de90 Binary files /dev/null and b/docs/da/d5f/classedash__packager_1_1media_1_1VP9Parser.png differ 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 7a56a2a28d..fc647020d6 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 2f7d97c5ea..ef96f74e47 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 fca69e4316..a5029131eb 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 27ec5c6985..b8b8d02d5c 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 1ab6e79daf..443c96d56f 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 9cc5c690da..da6bf57aa5 100644 --- a/docs/da/d7d/classedash__packager_1_1media_1_1StreamDescriptorCompareFn.html +++ b/docs/da/d7d/classedash__packager_1_1media_1_1StreamDescriptorCompareFn.html @@ -109,7 +109,7 @@ bool operator() (const diff --git a/docs/da/d7f/hevc__decoder__configuration_8h_source.html b/docs/da/d7f/hevc__decoder__configuration_8h_source.html index 831efd4dd3..6a3b4d1095 100644 --- a/docs/da/d7f/hevc__decoder__configuration_8h_source.html +++ b/docs/da/d7f/hevc__decoder__configuration_8h_source.html @@ -141,7 +141,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d81/structedash__packager_1_1media_1_1mp4_1_1ChunkLargeOffset.html b/docs/da/d81/structedash__packager_1_1media_1_1mp4_1_1ChunkLargeOffset.html index 26307e1499..ff2c261954 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 @@ -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 8be02e68bd..7e7fb5089e 100644 --- a/docs/da/d88/mp4__muxer_8cc_source.html +++ b/docs/da/d88/mp4__muxer_8cc_source.html @@ -451,7 +451,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 028cf8654d..0f870eb8de 100644 --- a/docs/da/d8e/container__names_8cc_source.html +++ b/docs/da/d8e/container__names_8cc_source.html @@ -1840,7 +1840,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d95/classedash__packager_1_1media_1_1MkvWriter-members.html b/docs/da/d95/classedash__packager_1_1media_1_1MkvWriter-members.html index 29bde47df5..2974506b7e 100644 --- a/docs/da/d95/classedash__packager_1_1media_1_1MkvWriter-members.html +++ b/docs/da/d95/classedash__packager_1_1media_1_1MkvWriter-members.html @@ -107,7 +107,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/db0/structedash__packager_1_1media_1_1mp4_1_1SoundMediaHeader.html b/docs/da/db0/structedash__packager_1_1media_1_1mp4_1_1SoundMediaHeader.html index d159d85269..838d0db80f 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 @@ -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 34d5bb194e..c45fb356bc 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 361537877b..54a07514e0 100644 --- a/docs/da/dcb/es__descriptor_8h_source.html +++ b/docs/da/dcb/es__descriptor_8h_source.html @@ -171,7 +171,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 d6d76d937a..31c289da7d 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 98e01ecb70..2c82edcd91 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 20c6ef4596..3906ec1a25 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 34b0bc7364..ff688ce4cf 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 09e5bb4a74..4b38969fee 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 5019bd3c36..d595f91fcf 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 7da28e333e..a5462d1f80 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 d347dac726..e7c876f8ee 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 968e9796a3..962435773a 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 372180087b..01d017ed60 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 @@ -112,7 +112,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 3153be23f7..4f67887060 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 afe69bcd57..e245e1d3fd 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 769a45b3ad..37b36eaf82 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 aad3835cc4..4524b0eeea 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 64774f1928..f387bf62f3 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 @@ -112,7 +112,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 0af8dab3d1..bc869a884c 100644 --- a/docs/db/d45/mpd__notify__muxer__listener_8h_source.html +++ b/docs/db/d45/mpd__notify__muxer__listener_8h_source.html @@ -186,7 +186,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d4e/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPsi.html b/docs/db/d4e/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPsi.html index 7bbaeeca85..586ddcd12c 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 dfd96c8cb2..a146a42b17 100644 --- a/docs/db/d51/mp2t__media__parser_8h_source.html +++ b/docs/db/d51/mp2t__media__parser_8h_source.html @@ -195,7 +195,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d51/two__pass__single__segment__segmenter_8h_source.html b/docs/db/d51/two__pass__single__segment__segmenter_8h_source.html index 211d8af261..a40578868f 100644 --- a/docs/db/d51/two__pass__single__segment__segmenter_8h_source.html +++ b/docs/db/d51/two__pass__single__segment__segmenter_8h_source.html @@ -142,7 +142,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 2a1efdea26..c72b179875 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/d5b/classedash__packager_1_1media_1_1HEVCDecoderConfiguration-members.html b/docs/db/d5b/classedash__packager_1_1media_1_1HEVCDecoderConfiguration-members.html index 5b3251e30b..c8c32e6087 100644 --- a/docs/db/d5b/classedash__packager_1_1media_1_1HEVCDecoderConfiguration-members.html +++ b/docs/db/d5b/classedash__packager_1_1media_1_1HEVCDecoderConfiguration-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d60/mpd__options_8h_source.html b/docs/db/d60/mpd__options_8h_source.html index 7a36060b9c..de8adcc455 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 d50bf9d961..58336a6a86 100644 --- a/docs/db/d61/classedash__packager_1_1media_1_1mp4_1_1SingleSegmentSegmenter-members.html +++ b/docs/db/d61/classedash__packager_1_1media_1_1mp4_1_1SingleSegmentSegmenter-members.html @@ -118,7 +118,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d64/webvtt__media__parser_8h_source.html b/docs/db/d64/webvtt__media__parser_8h_source.html index 6cb548a7ee..32b59afc6e 100644 --- a/docs/db/d64/webvtt__media__parser_8h_source.html +++ b/docs/db/d64/webvtt__media__parser_8h_source.html @@ -180,7 +180,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d69/classedash__packager_1_1media_1_1mp2t_1_1AdtsHeader.html b/docs/db/d69/classedash__packager_1_1media_1_1mp2t_1_1AdtsHeader.html index d8a45a0fee..ba7ab8960c 100644 --- a/docs/db/d69/classedash__packager_1_1media_1_1mp2t_1_1AdtsHeader.html +++ b/docs/db/d69/classedash__packager_1_1media_1_1mp2t_1_1AdtsHeader.html @@ -336,7 +336,7 @@ Static Public Member Functions diff --git a/docs/db/d6b/structedash__packager_1_1media_1_1mp4_1_1VTTAdditionalTextBox.html b/docs/db/d6b/structedash__packager_1_1media_1_1mp4_1_1VTTAdditionalTextBox.html index c2744bb01a..5df38e6ae3 100644 --- a/docs/db/d6b/structedash__packager_1_1media_1_1mp4_1_1VTTAdditionalTextBox.html +++ b/docs/db/d6b/structedash__packager_1_1media_1_1mp4_1_1VTTAdditionalTextBox.html @@ -171,7 +171,7 @@ Additional Inherited Members diff --git a/docs/db/d6c/classedash__packager_1_1media_1_1mp4_1_1BoxReader.html b/docs/db/d6c/classedash__packager_1_1media_1_1mp4_1_1BoxReader.html index 3f5751af05..682197601a 100644 --- a/docs/db/d6c/classedash__packager_1_1media_1_1mp4_1_1BoxReader.html +++ b/docs/db/d6c/classedash__packager_1_1media_1_1mp4_1_1BoxReader.html @@ -497,7 +497,7 @@ template<typename T > diff --git a/docs/db/d71/http__key__fetcher_8h_source.html b/docs/db/d71/http__key__fetcher_8h_source.html index bcc113c45a..baee4e256b 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 5c86cc0d08..880d623c31 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 eefabcccad..4b52fcc314 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 85071eee4d..2ddcbafe1c 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 @@ -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 ea48944975..7073367753 100644 --- a/docs/db/d8f/mp4__muxer_8h_source.html +++ b/docs/db/d8f/mp4__muxer_8h_source.html @@ -175,7 +175,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d96/wvm__media__parser_8h_source.html b/docs/db/d96/wvm__media__parser_8h_source.html index 1354d829c2..04b224f086 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 4ed52b6ec2..263f33927f 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 3eaf4059f1..d8dcde18b4 100644 --- a/docs/db/da0/classedash__packager_1_1media_1_1WebMClusterParser.html +++ b/docs/db/da0/classedash__packager_1_1media_1_1WebMClusterParser.html @@ -115,9 +115,9 @@ Public Types - - + + @@ -201,7 +201,7 @@ Additional Inherited Members
Returns
true if the last Parse() call stopped at the end of a cluster.
-

Definition at line 144 of file webm_cluster_parser.h.

+

Definition at line 138 of file webm_cluster_parser.h.

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

Flush data currently in the parser and reset the parser so it can accept a new cluster.

-

Definition at line 96 of file webm_cluster_parser.cc.

+

Definition at line 132 of file webm_cluster_parser.cc.

@@ -253,7 +253,7 @@ Additional Inherited Members
The number of bytes parsed on success.
-

Definition at line 103 of file webm_cluster_parser.cc.

+

Definition at line 139 of file webm_cluster_parser.cc.

@@ -292,7 +292,7 @@ The number of bytes parsed on success. diff --git a/docs/db/da4/classBandwidthEstimator-members.html b/docs/db/da4/classBandwidthEstimator-members.html index c0039f23ed..e383393f46 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');

Public Member Functions

WebMClusterParser (int64_t timecode_scale, int audio_track_num, int64_t audio_default_duration, int video_track_num, int64_t video_default_duration, const WebMTracksParser::TextTracks &text_tracks, const std::set< int64_t > &ignored_tracks, const std::string &audio_encryption_key_id, const std::string &video_encryption_key_id, const AudioCodec audio_codec, const MediaParser::NewSampleCB &new_sample_cb)
 
WebMClusterParser (int64_t timecode_scale, scoped_refptr< AudioStreamInfo > audio_stream_info, scoped_refptr< VideoStreamInfo > video_stream_info, int64_t audio_default_duration, int64_t video_default_duration, const WebMTracksParser::TextTracks &text_tracks, const std::set< int64_t > &ignored_tracks, const std::string &audio_encryption_key_id, const std::string &video_encryption_key_id, const MediaParser::NewSampleCB &new_sample_cb, const MediaParser::InitCB &init_cb)
 
void Reset ()
 Resets the parser state so it can accept a new cluster.
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 f807e2472a..2e0088e89d 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 785c845fd6..5baa17da93 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 f75b943a19..ab15d36912 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 76f9951d62..049b0f042b 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 b800b7fca1..b28607c2f9 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 925b9b459e..3896f0af88 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 16d12a74f2..e4748c86b7 100644 --- a/docs/db/de4/classedash__packager_1_1AdaptationSet.html +++ b/docs/db/de4/classedash__packager_1_1AdaptationSet.html @@ -582,7 +582,7 @@ template<MpdBuilder::MpdType type> diff --git a/docs/db/de9/classedash__packager_1_1media_1_1StreamDescriptorCompareFn-members.html b/docs/db/de9/classedash__packager_1_1media_1_1StreamDescriptorCompareFn-members.html index 746bf04dbc..9e953d51f4 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 f8b03cb23b..6cb39bc901 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 43bee41739..148c65c3ff 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 866f2245ec..261062cf76 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 4e32ee386a..2476fe96ce 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 a5bf5ee863..47d8b1e8ae 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 c949e4efa7..539ef27af5 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 @@ -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 ab952b1d32..aa910324f0 100644 --- a/docs/db/dfb/mpd__utils_8cc_source.html +++ b/docs/db/dfb/mpd__utils_8cc_source.html @@ -373,7 +373,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 a2035ce832..9557e13f46 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 17d21b4fef..ca44e7fb81 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 28be52ef73..6726102ae9 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 74a3c346da..dfc88e2588 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 51 of file webm_video_client.cc.

+

Definition at line 50 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 417c8e26f0..8bd852e82a 100644 --- a/docs/dc/d0d/structedash__packager_1_1media_1_1mp4_1_1EditListEntry.html +++ b/docs/dc/d0d/structedash__packager_1_1media_1_1mp4_1_1EditListEntry.html @@ -118,7 +118,7 @@ int16_t media_rate_fractio diff --git a/docs/dc/d0e/structedash__packager_1_1media_1_1mp4_1_1WVTTSampleEntry.html b/docs/dc/d0e/structedash__packager_1_1media_1_1mp4_1_1WVTTSampleEntry.html index 811c117627..7f63b73463 100644 --- a/docs/dc/d0e/structedash__packager_1_1media_1_1mp4_1_1WVTTSampleEntry.html +++ b/docs/dc/d0e/structedash__packager_1_1media_1_1mp4_1_1WVTTSampleEntry.html @@ -177,7 +177,7 @@ Additional Inherited Members diff --git a/docs/dc/d19/box_8h_source.html b/docs/dc/d19/box_8h_source.html index 199d673ced..75e8acceeb 100644 --- a/docs/dc/d19/box_8h_source.html +++ b/docs/dc/d19/box_8h_source.html @@ -180,7 +180,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 2899857d00..fe5bb061f9 100644 --- a/docs/dc/d22/dash__iop__mpd__notifier_8cc_source.html +++ b/docs/dc/d22/dash__iop__mpd__notifier_8cc_source.html @@ -407,7 +407,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d23/classedash__packager_1_1MockMpdNotifier-members.html b/docs/dc/d23/classedash__packager_1_1MockMpdNotifier-members.html index 87c31c5363..4c43b67849 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 6e5d64977d..086f9440fa 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 11cbe21b2f..c3bab7c10f 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 f750e237c3..4066cf6934 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 c98e0870db..9107b52fe7 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 a6f5308e74..a4213f3ce9 100644 --- a/docs/dc/d3c/webm__cluster__parser_8h_source.html +++ b/docs/dc/d3c/webm__cluster__parser_8h_source.html @@ -147,173 +147,175 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
67  // was missing duration.
68  void Reset();
69 
-
70  // Helper function used to inspect block data to determine if the
-
71  // block is a keyframe.
-
72  // |data| contains the bytes in the block.
-
73  // |size| indicates the number of bytes in |data|.
-
74  bool IsKeyframe(const uint8_t* data, int size) const;
-
75 
-
76  int64_t default_duration() const { return default_duration_; }
-
77 
-
78  private:
-
79  // Helper that sanity-checks |buffer| duration, updates
-
80  // |estimated_next_frame_duration_|, and emits |buffer|.
-
81  // Returns false if |buffer| failed sanity check and therefore was not
-
82  // emitted. Returns true otherwise.
-
83  bool EmitBufferHelp(const scoped_refptr<MediaSample>& buffer);
-
84 
-
85  // Helper that calculates the buffer duration to use in
-
86  // ApplyDurationEstimateIfNeeded().
-
87  int64_t GetDurationEstimate();
-
88 
-
89  // Counts the number of estimated durations used in this track. Used to
-
90  // prevent log spam for LOG()s about estimated duration.
-
91  int num_duration_estimates_ = 0;
-
92 
-
93  int track_num_;
-
94  bool is_video_;
-
95 
-
96  // Parsed track buffers, each with duration and in (decode) timestamp order,
-
97  // that have not yet been emitted. Note that up to one additional buffer
-
98  // missing duration may be tracked by |last_added_buffer_missing_duration_|.
-
99  scoped_refptr<MediaSample> last_added_buffer_missing_duration_;
-
100 
-
101  // If kNoTimestamp, then |estimated_next_frame_duration_| will be used.
-
102  int64_t default_duration_;
-
103 
-
104  // If kNoTimestamp, then a default value will be used. This estimate is the
-
105  // maximum duration seen so far for this track, and is used only if
-
106  // |default_duration_| is kNoTimestamp.
-
107  int64_t estimated_next_frame_duration_;
-
108 
-
109  MediaParser::NewSampleCB new_sample_cb_;
-
110  };
-
111 
-
112  typedef std::map<int, Track> TextTrackMap;
-
113 
-
114  public:
-
115  WebMClusterParser(int64_t timecode_scale,
-
116  int audio_track_num,
-
117  int64_t audio_default_duration,
-
118  int video_track_num,
-
119  int64_t video_default_duration,
-
120  const WebMTracksParser::TextTracks& text_tracks,
-
121  const std::set<int64_t>& ignored_tracks,
-
122  const std::string& audio_encryption_key_id,
-
123  const std::string& video_encryption_key_id,
-
124  const AudioCodec audio_codec,
-
125  const MediaParser::NewSampleCB& new_sample_cb);
-
126  ~WebMClusterParser() override;
-
127 
-
129  void Reset();
-
130 
-
133  void Flush();
+
70  int64_t default_duration() const { return default_duration_; }
+
71 
+
72  private:
+
73  // Helper that sanity-checks |buffer| duration, updates
+
74  // |estimated_next_frame_duration_|, and emits |buffer|.
+
75  // Returns false if |buffer| failed sanity check and therefore was not
+
76  // emitted. Returns true otherwise.
+
77  bool EmitBufferHelp(const scoped_refptr<MediaSample>& buffer);
+
78 
+
79  // Helper that calculates the buffer duration to use in
+
80  // ApplyDurationEstimateIfNeeded().
+
81  int64_t GetDurationEstimate();
+
82 
+
83  // Counts the number of estimated durations used in this track. Used to
+
84  // prevent log spam for LOG()s about estimated duration.
+
85  int num_duration_estimates_ = 0;
+
86 
+
87  int track_num_;
+
88  bool is_video_;
+
89 
+
90  // Parsed track buffers, each with duration and in (decode) timestamp order,
+
91  // that have not yet been emitted. Note that up to one additional buffer
+
92  // missing duration may be tracked by |last_added_buffer_missing_duration_|.
+
93  scoped_refptr<MediaSample> last_added_buffer_missing_duration_;
+
94 
+
95  // If kNoTimestamp, then |estimated_next_frame_duration_| will be used.
+
96  int64_t default_duration_;
+
97 
+
98  // If kNoTimestamp, then a default value will be used. This estimate is the
+
99  // maximum duration seen so far for this track, and is used only if
+
100  // |default_duration_| is kNoTimestamp.
+
101  int64_t estimated_next_frame_duration_;
+
102 
+
103  MediaParser::NewSampleCB new_sample_cb_;
+
104  };
+
105 
+
106  typedef std::map<int, Track> TextTrackMap;
+
107 
+
108  public:
+
109  WebMClusterParser(int64_t timecode_scale,
+
110  scoped_refptr<AudioStreamInfo> audio_stream_info,
+
111  scoped_refptr<VideoStreamInfo> video_stream_info,
+
112  int64_t audio_default_duration,
+
113  int64_t video_default_duration,
+
114  const WebMTracksParser::TextTracks& text_tracks,
+
115  const std::set<int64_t>& ignored_tracks,
+
116  const std::string& audio_encryption_key_id,
+
117  const std::string& video_encryption_key_id,
+
118  const MediaParser::NewSampleCB& new_sample_cb,
+
119  const MediaParser::InitCB& init_cb);
+
120  ~WebMClusterParser() override;
+
121 
+
123  void Reset();
+
124 
+
127  void Flush();
+
128 
+
133  int Parse(const uint8_t* buf, int size);
134 
-
139  int Parse(const uint8_t* buf, int size);
-
140 
-
141  int64_t cluster_start_time() const { return cluster_start_time_; }
-
142 
-
144  bool cluster_ended() const { return cluster_ended_; }
-
145 
-
146  private:
-
147  // WebMParserClient methods.
-
148  WebMParserClient* OnListStart(int id) override;
-
149  bool OnListEnd(int id) override;
-
150  bool OnUInt(int id, int64_t val) override;
-
151  bool OnBinary(int id, const uint8_t* data, int size) override;
-
152 
-
153  bool ParseBlock(bool is_simple_block,
-
154  const uint8_t* buf,
-
155  int size,
-
156  const uint8_t* additional,
-
157  int additional_size,
-
158  int duration,
-
159  int64_t discard_padding);
-
160  bool OnBlock(bool is_simple_block,
-
161  int track_num,
-
162  int timecode,
-
163  int duration,
-
164  int flags,
-
165  const uint8_t* data,
-
166  int size,
-
167  const uint8_t* additional,
-
168  int additional_size,
-
169  int64_t discard_padding);
-
170 
-
171  // Resets the Track objects associated with each text track.
-
172  void ResetTextTracks();
-
173 
-
174  // Search for the indicated track_num among the text tracks. Returns NULL
-
175  // if that track num is not a text track.
-
176  Track* FindTextTrack(int track_num);
+
135  int64_t cluster_start_time() const { return cluster_start_time_; }
+
136 
+
138  bool cluster_ended() const { return cluster_ended_; }
+
139 
+
140  private:
+
141  // WebMParserClient methods.
+
142  WebMParserClient* OnListStart(int id) override;
+
143  bool OnListEnd(int id) override;
+
144  bool OnUInt(int id, int64_t val) override;
+
145  bool OnBinary(int id, const uint8_t* data, int size) override;
+
146 
+
147  bool ParseBlock(bool is_simple_block,
+
148  const uint8_t* buf,
+
149  int size,
+
150  const uint8_t* additional,
+
151  int additional_size,
+
152  int duration,
+
153  int64_t discard_padding);
+
154  bool OnBlock(bool is_simple_block,
+
155  int track_num,
+
156  int timecode,
+
157  int duration,
+
158  int flags,
+
159  const uint8_t* data,
+
160  int size,
+
161  const uint8_t* additional,
+
162  int additional_size,
+
163  int64_t discard_padding);
+
164 
+
165  // Resets the Track objects associated with each text track.
+
166  void ResetTextTracks();
+
167 
+
168  // Search for the indicated track_num among the text tracks. Returns NULL
+
169  // if that track num is not a text track.
+
170  Track* FindTextTrack(int track_num);
+
171 
+
172  // Attempts to read the duration from the encoded audio data, returning as
+
173  // kNoTimestamp if duration cannot be retrieved.
+
174  // Avoid calling if encrypted; may produce unexpected output. See
+
175  // implementation for supported codecs.
+
176  int64_t TryGetEncodedAudioDuration(const uint8_t* data, int size);
177 
-
178  // Attempts to read the duration from the encoded audio data, returning as
-
179  // kNoTimestamp if duration cannot be retrieved.
-
180  // Avoid calling if encrypted; may produce unexpected output. See
-
181  // implementation for supported codecs.
-
182  int64_t TryGetEncodedAudioDuration(const uint8_t* data, int size);
-
183 
-
184  // Reads Opus packet header to determine packet duration. Duration returned
-
185  // as kNoTimestamp upon failure to read duration from packet.
-
186  int64_t ReadOpusDuration(const uint8_t* data, int size);
-
187 
-
188  // Tracks the number of LOGs made in process of reading encoded duration.
-
189  // Useful to prevent log spam.
-
190  int num_duration_errors_ = 0;
-
191 
-
192  double timecode_multiplier_; // Multiplier used to convert timecodes into
-
193  // microseconds.
-
194  std::set<int64_t> ignored_tracks_;
-
195  std::string audio_encryption_key_id_;
-
196  std::string video_encryption_key_id_;
-
197  const AudioCodec audio_codec_;
-
198 
-
199  WebMListParser parser_;
-
200 
-
201  int64_t last_block_timecode_ = -1;
-
202  scoped_ptr<uint8_t[]> block_data_;
-
203  int block_data_size_ = -1;
-
204  int64_t block_duration_ = -1;
-
205  int64_t block_add_id_ = -1;
-
206 
-
207  scoped_ptr<uint8_t[]> block_additional_data_;
-
208  // Must be 0 if |block_additional_data_| is null. Must be > 0 if
-
209  // |block_additional_data_| is NOT null.
-
210  int block_additional_data_size_ = 0;
-
211 
-
212  int64_t discard_padding_ = -1;
-
213  bool discard_padding_set_ = false;
-
214 
-
215  int64_t cluster_timecode_ = -1;
-
216  int64_t cluster_start_time_;
-
217  bool cluster_ended_ = false;
-
218 
-
219  Track audio_;
-
220  Track video_;
-
221  TextTrackMap text_track_map_;
-
222 
-
223  DISALLOW_IMPLICIT_CONSTRUCTORS(WebMClusterParser);
-
224 };
-
225 
-
226 } // namespace media
-
227 } // namespace edash_packager
-
228 
-
229 #endif // MEDIA_FORMATS_WEBM_WEBM_CLUSTER_PARSER_H_
+
178  // Reads Opus packet header to determine packet duration. Duration returned
+
179  // as kNoTimestamp upon failure to read duration from packet.
+
180  int64_t ReadOpusDuration(const uint8_t* data, int size);
+
181 
+
182  // Tracks the number of LOGs made in process of reading encoded duration.
+
183  // Useful to prevent log spam.
+
184  int num_duration_errors_ = 0;
+
185 
+
186  double timecode_multiplier_; // Multiplier used to convert timecodes into
+
187  // microseconds.
+
188  scoped_refptr<AudioStreamInfo> audio_stream_info_;
+
189  scoped_refptr<VideoStreamInfo> video_stream_info_;
+
190  std::set<int64_t> ignored_tracks_;
+
191  std::string audio_encryption_key_id_;
+
192  std::string video_encryption_key_id_;
+
193 
+
194  WebMListParser parser_;
+
195 
+
196  // Indicates whether init_cb has been executed. |init_cb| is executed when we
+
197  // have codec configuration of video stream, which is extracted from the first
+
198  // video sample.
+
199  bool initialized_;
+
200  MediaParser::InitCB init_cb_;
+
201 
+
202  int64_t last_block_timecode_ = -1;
+
203  scoped_ptr<uint8_t[]> block_data_;
+
204  int block_data_size_ = -1;
+
205  int64_t block_duration_ = -1;
+
206  int64_t block_add_id_ = -1;
+
207 
+
208  scoped_ptr<uint8_t[]> block_additional_data_;
+
209  // Must be 0 if |block_additional_data_| is null. Must be > 0 if
+
210  // |block_additional_data_| is NOT null.
+
211  int block_additional_data_size_ = 0;
+
212 
+
213  int64_t discard_padding_ = -1;
+
214  bool discard_padding_set_ = false;
+
215 
+
216  int64_t cluster_timecode_ = -1;
+
217  int64_t cluster_start_time_;
+
218  bool cluster_ended_ = false;
+
219 
+
220  Track audio_;
+
221  Track video_;
+
222  TextTrackMap text_track_map_;
+
223 
+
224  DISALLOW_IMPLICIT_CONSTRUCTORS(WebMClusterParser);
+
225 };
+
226 
+
227 } // namespace media
+
228 } // namespace edash_packager
+
229 
+
230 #endif // MEDIA_FORMATS_WEBM_WEBM_CLUSTER_PARSER_H_
-
void Reset()
Resets the parser state so it can accept a new cluster.
+
void Reset()
Resets the parser state so it can accept a new cluster.
-
int Parse(const uint8_t *buf, int size)
+
int Parse(const uint8_t *buf, int size)
base::Callback< bool(uint32_t track_id, const scoped_refptr< MediaSample > &media_sample)> NewSampleCB
Definition: media_parser.h:43
- +
base::Callback< void(const std::vector< scoped_refptr< StreamInfo > > &stream_info)> InitCB
Definition: media_parser.h:34
+ - + diff --git a/docs/dc/d3f/key__source_8h_source.html b/docs/dc/d3f/key__source_8h_source.html index cf9876c03e..1e8b5ad7fe 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 bd6ed06164..14145baacb 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 846c6812e8..08e3bd5559 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 52d1b2d722..e1ba33df56 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 4717424ab4..d8ea032503 100644 --- a/docs/dc/d48/classedash__packager_1_1media_1_1MediaParser.html +++ b/docs/dc/d48/classedash__packager_1_1media_1_1MediaParser.html @@ -297,7 +297,7 @@ Public Member Functions diff --git a/docs/dc/d4a/structedash__packager_1_1media_1_1mp4_1_1WebVTTConfigurationBox-members.html b/docs/dc/d4a/structedash__packager_1_1media_1_1mp4_1_1WebVTTConfigurationBox-members.html index 625f938028..37055d41a0 100644 --- a/docs/dc/d4a/structedash__packager_1_1media_1_1mp4_1_1WebVTTConfigurationBox-members.html +++ b/docs/dc/d4a/structedash__packager_1_1media_1_1mp4_1_1WebVTTConfigurationBox-members.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d51/structedash__packager_1_1media_1_1mp4_1_1WVTTSampleEntry-members.html b/docs/dc/d51/structedash__packager_1_1media_1_1mp4_1_1WVTTSampleEntry-members.html index 6425420633..f95f3bec58 100644 --- a/docs/dc/d51/structedash__packager_1_1media_1_1mp4_1_1WVTTSampleEntry-members.html +++ b/docs/dc/d51/structedash__packager_1_1media_1_1mp4_1_1WVTTSampleEntry-members.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d52/decoding__time__iterator_8h_source.html b/docs/dc/d52/decoding__time__iterator_8h_source.html index ff80b418a1..1daaf5d90f 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/d53/webm_2segmenter_8cc_source.html b/docs/dc/d53/webm_2segmenter_8cc_source.html index c8f631f450..b143d85b8a 100644 --- a/docs/dc/d53/webm_2segmenter_8cc_source.html +++ b/docs/dc/d53/webm_2segmenter_8cc_source.html @@ -367,17 +367,17 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
mkvmuxer::int64 Position() const override
Definition: mkv_writer.cc:63
- - + +
This class listens to progress updates events.
-
Status AddSample(const MediaStream *stream, scoped_refptr< MediaSample > sample)
Definition: segmenter.cc:266
+
Status AddSample(const MediaStream *stream, scoped_refptr< MediaSample > sample)
Definition: segmenter.cc:270
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:29
virtual void OnProgress(double progress)=0
-
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:333
-
Status Initialize(const std::vector< MediaStream * > &streams, MuxerListener *muxer_listener, ProgressListener *progress_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds)
Definition: segmenter.cc:132
+
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:337
+
Status Initialize(const std::vector< MediaStream * > &streams, MuxerListener *muxer_listener, ProgressListener *progress_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds)
Definition: segmenter.cc:140
Holds video stream information.
@@ -386,7 +386,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 3c91225558..4c1844d70c 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 41885e1bae..917fd4e2d1 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 95be2c6b3d..1f8c5731ca 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 ec33f8bbbe..1e1aa434a9 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 1af4a8c3f8..f390f42e15 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 00523ee9a4..d9261b1ee6 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 6c3f8e54b8..076783c580 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 b0ebf64a88..3c08b252d2 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 @@ -108,11 +108,11 @@ Inheritance diagram for edash_packager::media::mp4::KeyRotationFragmenter: - - + + - - + + @@ -184,7 +184,7 @@ void  diff --git a/docs/dc/dbf/box__buffer_8h_source.html b/docs/dc/dbf/box__buffer_8h_source.html index f5e1bfdde5..f93e25318c 100644 --- a/docs/dc/dbf/box__buffer_8h_source.html +++ b/docs/dc/dbf/box__buffer_8h_source.html @@ -293,7 +293,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 44d4620f11..15e2cf9f99 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 

Public Member Functions

 KeyRotationFragmenter (MovieFragment *moof, TrackFragment *traf, KeySource *encryption_key_source, KeySource::TrackType track_type, int64_t crypto_period_duration, int64_t clear_time, uint8_t nalu_length_size, MuxerListener *muxer_listener)
 
 KeyRotationFragmenter (MovieFragment *moof, TrackFragment *traf, KeySource *encryption_key_source, KeySource::TrackType track_type, int64_t crypto_period_duration, int64_t clear_time, VideoCodec video_codec, uint8_t nalu_length_size, MuxerListener *muxer_listener)
 
- Public Member Functions inherited from edash_packager::media::mp4::EncryptingFragmenter
 EncryptingFragmenter (TrackFragment *traf, scoped_ptr< EncryptionKey > encryption_key, int64_t clear_time, uint8_t nalu_length_size)
 
 EncryptingFragmenter (TrackFragment *traf, scoped_ptr< EncryptionKey > encryption_key, int64_t clear_time, VideoCodec video_codec, uint8_t nalu_length_size)
 
Status AddSample (scoped_refptr< MediaSample > sample) override
 
Status InitializeFragment (int64_t first_sample_dts) override
set_encryption_keyDefinition at line 22 of file key_rotation_fragmenter.h.

Constructor & Destructor Documentation

- +
@@ -224,6 +224,12 @@ void  + + + + + + @@ -251,6 +257,7 @@ void  +
set_encryption_keyint64_t  clear_time,
VideoCodec video_codec,
set_encryption_keytrack_typeindicates whether SD key or HD key should be used to encrypt the video content.
crypto_period_durationspecifies crypto period duration in units of the current track's timescale.
clear_timespecifies clear lead duration in units of the current track's timescale.
video_codecspecifies the codec if input is a video stream; it should be set to kUnknownVideoCodec for audio stream. This parameter is used for proper subsample encryption.
nalu_length_sizeNAL unit length size, in bytes, for subsample encryption.
muxer_listeneris a pointer to MuxerListener for notifying muxer related events. This may be null.
@@ -288,7 +295,7 @@ void 
set_encryption_keyReimplemented from edash_packager::media::mp4::EncryptingFragmenter.

-

Definition at line 44 of file key_rotation_fragmenter.cc.

+

Definition at line 46 of file key_rotation_fragmenter.cc.

@@ -299,7 +306,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 9ca2c54b09..68838e1631 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 f6ec140eb5..bd8ba5c41b 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 @@ -180,7 +180,7 @@ Additional Inherited Members
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 90f8add097..507f24bb5f 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 ce2432051c..117e082fb4 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 565af49539..dc6b49c878 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 d76721b7e6..3a035381c0 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 2ef0ec4306..9ac0fb602e 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 88366612d6..d9bbeb4a7d 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 @@ -203,7 +203,7 @@ void set_progress_target
Returns
OK on success, an error status otherwise.
-

Definition at line 266 of file segmenter.cc.

+

Definition at line 270 of file segmenter.cc.

@@ -222,7 +222,7 @@ void set_progress_targetFinalize the segmenter.

Returns
OK on success, an error status otherwise.
-

Definition at line 240 of file segmenter.cc.

+

Definition at line 244 of file segmenter.cc.

@@ -240,7 +240,7 @@ void set_progress_target
Returns
The total length, in seconds, of segmented media files.
-

Definition at line 324 of file segmenter.cc.

+

Definition at line 328 of file segmenter.cc.

@@ -386,7 +386,7 @@ void set_progress_target
Returns
OK on success, an error status otherwise.
-

Definition at line 132 of file segmenter.cc.

+

Definition at line 140 of file segmenter.cc.

@@ -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 bb110706a3..003446c0eb 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 adef1f4a8c..f78c9cfa2a 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 @@ -108,7 +108,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 33d0a07228..653488753f 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 5b6a0725c4..df4bef48c7 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 0a1bf25f7e..00a4194fb9 100644 --- a/docs/dc/dfa/classedash__packager_1_1media_1_1ThreadedIoFile.html +++ b/docs/dc/dfa/classedash__packager_1_1media_1_1ThreadedIoFile.html @@ -444,7 +444,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 a1aac02f36..6ed61fd740 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 e4a15d6a09..97bc34e6a7 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 379e52ca1e..7d490c2a72 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 e74487dbef..c7c6da3a3a 100644 --- a/docs/dd/d11/mpd__builder_8cc_source.html +++ b/docs/dd/d11/mpd__builder_8cc_source.html @@ -1458,7 +1458,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 4f76b8b091..18647394ee 100644 --- a/docs/dd/d12/mpd__writer_8cc_source.html +++ b/docs/dd/d12/mpd__writer_8cc_source.html @@ -224,7 +224,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d12/structedash__packager_1_1media_1_1mp4_1_1CueTimeBox.html b/docs/dd/d12/structedash__packager_1_1media_1_1mp4_1_1CueTimeBox.html index c90aa58a38..aad1990f0c 100644 --- a/docs/dd/d12/structedash__packager_1_1media_1_1mp4_1_1CueTimeBox.html +++ b/docs/dd/d12/structedash__packager_1_1media_1_1mp4_1_1CueTimeBox.html @@ -171,7 +171,7 @@ Additional Inherited Members diff --git a/docs/dd/d14/structedash__packager_1_1media_1_1mp4_1_1MovieHeader.html b/docs/dd/d14/structedash__packager_1_1media_1_1mp4_1_1MovieHeader.html index 6297cb4885..2bfb2e43e4 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 @@ -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 ec73268a83..2b3d5bad75 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 @@ -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 8e0d473c7f..cacb9757e4 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 8688fe2ff8..fdb47dcd13 100644 --- a/docs/dd/d19/video__stream__info_8cc_source.html +++ b/docs/dd/d19/video__stream__info_8cc_source.html @@ -197,7 +197,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d1a/classedash__packager_1_1media_1_1H264ByteToUnitStreamConverter-members.html b/docs/dd/d1a/classedash__packager_1_1media_1_1H264ByteToUnitStreamConverter-members.html index 038b9f6302..bc380648b9 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 7a33167943..b05435b854 100644 --- a/docs/dd/d2b/classedash__packager_1_1media_1_1ClosureThread.html +++ b/docs/dd/d2b/classedash__packager_1_1media_1_1ClosureThread.html @@ -179,7 +179,7 @@ void  diff --git a/docs/dd/d30/wvm__media__parser_8cc_source.html b/docs/dd/d30/wvm__media__parser_8cc_source.html index 78f858d9f1..f1bcb2706f 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 25b9fb1d15..b3aa09e781 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 @@ -122,7 +122,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d3b/mp4_2segmenter_8h_source.html b/docs/dd/d3b/mp4_2segmenter_8h_source.html index 611d8b7511..66a01a0c07 100644 --- a/docs/dd/d3b/mp4_2segmenter_8h_source.html +++ b/docs/dd/d3b/mp4_2segmenter_8h_source.html @@ -204,26 +204,26 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
152 } // namespace edash_packager
153 
154 #endif // MEDIA_FORMATS_MP4_SEGMENTER_H_
- - + +
This class listens to progress updates events.
-
Status AddSample(const MediaStream *stream, scoped_refptr< MediaSample > sample)
Definition: segmenter.cc:266
+
Status AddSample(const MediaStream *stream, scoped_refptr< MediaSample > sample)
Definition: segmenter.cc:270
virtual bool GetInitRange(size_t *offset, size_t *size)=0
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:29
-
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:333
-
Status Initialize(const std::vector< MediaStream * > &streams, MuxerListener *muxer_listener, ProgressListener *progress_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds)
Definition: segmenter.cc:132
+
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:337
+
Status Initialize(const std::vector< MediaStream * > &streams, MuxerListener *muxer_listener, ProgressListener *progress_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds)
Definition: segmenter.cc:140
virtual bool GetIndexRange(size_t *offset, size_t *size)=0
-
void SetComplete()
Set progress to 100%.
Definition: segmenter.cc:349
+
void SetComplete()
Set progress to 100%.
Definition: segmenter.cc:353
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
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 95f7b44ced..e3e92a58a3 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 6d9dd891ef..046b6f774c 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 dee63d8fe6..b8f94e1363 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 a25cde48f3..c14b51a56c 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 3ea91e4105..85e381e5e6 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 @@ -109,7 +109,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 32bfb6dfdb..972a1abe19 100644 --- a/docs/dd/d4f/classedash__packager_1_1media_1_1mp4_1_1BoxBuffer.html +++ b/docs/dd/d4f/classedash__packager_1_1media_1_1mp4_1_1BoxBuffer.html @@ -589,7 +589,7 @@ bool ReadWriteInt64 (i diff --git a/docs/dd/d54/widevine__encryption__flags_8h_source.html b/docs/dd/d54/widevine__encryption__flags_8h_source.html index 9a83c13bfc..3468021bbf 100644 --- a/docs/dd/d54/widevine__encryption__flags_8h_source.html +++ b/docs/dd/d54/widevine__encryption__flags_8h_source.html @@ -123,7 +123,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d5e/structedash__packager_1_1media_1_1mp4_1_1CuePayloadBox-members.html b/docs/dd/d5e/structedash__packager_1_1media_1_1mp4_1_1CuePayloadBox-members.html index 77be739c8b..dbd0345cb4 100644 --- a/docs/dd/d5e/structedash__packager_1_1media_1_1mp4_1_1CuePayloadBox-members.html +++ b/docs/dd/d5e/structedash__packager_1_1media_1_1mp4_1_1CuePayloadBox-members.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d60/structedash__packager_1_1media_1_1mp4_1_1VTTEmptyCueBox-members.html b/docs/dd/d60/structedash__packager_1_1media_1_1mp4_1_1VTTEmptyCueBox-members.html index 588f1de64d..cbc4694f84 100644 --- a/docs/dd/d60/structedash__packager_1_1media_1_1mp4_1_1VTTEmptyCueBox-members.html +++ b/docs/dd/d60/structedash__packager_1_1media_1_1mp4_1_1VTTEmptyCueBox-members.html @@ -107,7 +107,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d65/vp8__parser_8h_source.html b/docs/dd/d65/vp8__parser_8h_source.html new file mode 100644 index 0000000000..ebbb1af3f7 --- /dev/null +++ b/docs/dd/d65/vp8__parser_8h_source.html @@ -0,0 +1,144 @@ + + + + + + +DASH Media Packaging SDK: media/filters/vp8_parser.h Source File + + + + + + + + + +
+
+ + + + + + +
+
DASH Media Packaging SDK +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
vp8_parser.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_VP8_PARSER_H_
+
8 #define MEDIA_FILTERS_VP8_PARSER_H_
+
9 
+
10 #include <stdint.h>
+
11 #include <stdlib.h>
+
12 
+
13 #include "packager/base/macros.h"
+
14 #include "packager/media/filters/vpx_parser.h"
+
15 
+
16 namespace edash_packager {
+
17 namespace media {
+
18 
+
21 class VP8Parser : public VPxParser {
+
22  public:
+
23  VP8Parser();
+
24  ~VP8Parser() override;
+
25 
+
32  bool Parse(const uint8_t* data,
+
33  size_t data_size,
+
34  std::vector<VPxFrameInfo>* vpx_frames) override;
+
35 
+
41  static bool IsKeyframe(const uint8_t* data, size_t data_size);
+
42 
+
43  private:
+
44  // Keep track of the current width and height. Note that they may change from
+
45  // frame to frame.
+
46  uint32_t width_;
+
47  uint32_t height_;
+
48 
+
49  DISALLOW_COPY_AND_ASSIGN(VP8Parser);
+
50 };
+
51 
+
52 } // namespace media
+
53 } // namespace edash_packager
+
54 
+
55 #endif // MEDIA_FILTERS_VP8_PARSER_H_
+
static bool IsKeyframe(const uint8_t *data, size_t data_size)
Definition: vp8_parser.cc:183
+ + +
bool Parse(const uint8_t *data, size_t data_size, std::vector< VPxFrameInfo > *vpx_frames) override
Definition: vp8_parser.cc:100
+
+ + + + 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 5e6ff91fb4..63c712f48d 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 6ddbd6046c..151f21eb68 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 3077f7da80..4dbbf71d36 100644 --- a/docs/dd/d80/media__sample_8h_source.html +++ b/docs/dd/d80/media__sample_8h_source.html @@ -256,7 +256,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 e2b161633b..0fc57ae08a 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 8eed759376..9994c9374f 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 @@ -132,7 +132,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 8e8c23c33a..b49ddcd795 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 @@ -98,7 +98,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); CreateEncryptor()edash_packager::media::mp4::EncryptingFragmenterprotected data() (defined in edash_packager::media::mp4::Fragmenter)edash_packager::media::mp4::Fragmenterinline earliest_presentation_time() const (defined in edash_packager::media::mp4::Fragmenter)edash_packager::media::mp4::Fragmenterinline - EncryptingFragmenter(TrackFragment *traf, scoped_ptr< EncryptionKey > encryption_key, int64_t clear_time, uint8_t nalu_length_size)edash_packager::media::mp4::EncryptingFragmenter + EncryptingFragmenter(TrackFragment *traf, scoped_ptr< EncryptionKey > encryption_key, int64_t clear_time, VideoCodec video_codec, uint8_t nalu_length_size)edash_packager::media::mp4::EncryptingFragmenter encryption_key() (defined in edash_packager::media::mp4::EncryptingFragmenter)edash_packager::media::mp4::EncryptingFragmenterinlineprotected encryptor() (defined in edash_packager::media::mp4::EncryptingFragmenter)edash_packager::media::mp4::EncryptingFragmenterinlineprotected FinalizeFragment() overrideedash_packager::media::mp4::EncryptingFragmentervirtual @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); Fragmenter(TrackFragment *traf)edash_packager::media::mp4::Fragmenter GenerateSegmentReference(SegmentReference *reference)edash_packager::media::mp4::Fragmenter InitializeFragment(int64_t first_sample_dts) overrideedash_packager::media::mp4::EncryptingFragmentervirtual - KeyRotationFragmenter(MovieFragment *moof, TrackFragment *traf, KeySource *encryption_key_source, KeySource::TrackType track_type, int64_t crypto_period_duration, int64_t clear_time, uint8_t nalu_length_size, MuxerListener *muxer_listener)edash_packager::media::mp4::KeyRotationFragmenter + KeyRotationFragmenter(MovieFragment *moof, TrackFragment *traf, KeySource *encryption_key_source, KeySource::TrackType track_type, int64_t crypto_period_duration, int64_t clear_time, VideoCodec video_codec, uint8_t nalu_length_size, MuxerListener *muxer_listener)edash_packager::media::mp4::KeyRotationFragmenter OptimizeSampleEntries(std::vector< T > *entries, T *default_value)edash_packager::media::mp4::Fragmenterprotected PrepareFragmentForEncryption(bool enable_encryption) overrideedash_packager::media::mp4::KeyRotationFragmenterprotectedvirtual set_encryption_key(scoped_ptr< EncryptionKey > encryption_key) (defined in edash_packager::media::mp4::EncryptingFragmenter)edash_packager::media::mp4::EncryptingFragmenterinlineprotected @@ -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 bd7e213a8c..5f9b17793d 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 da861e2753..203e23d369 100644 --- a/docs/dd/d98/classedash__packager_1_1media_1_1LocalFile.html +++ b/docs/dd/d98/classedash__packager_1_1media_1_1LocalFile.html @@ -502,7 +502,7 @@ bool  diff --git a/docs/dd/d99/classedash__packager_1_1media_1_1WebMMediaParser.html b/docs/dd/d99/classedash__packager_1_1media_1_1WebMMediaParser.html index 02489aa101..e163fdc821 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 2b94fbf32f..b2b7928841 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 be08ac6d9c..b1dbd98a09 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 @@ -178,7 +178,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 add5bc0815..6685284640 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 @@ -175,7 +175,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 a924960995..47958489d1 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 dfcabb567c..9fa9abbeed 100644 --- a/docs/dd/daa/vod__media__info__dump__muxer__listener_8h_source.html +++ b/docs/dd/daa/vod__media__info__dump__muxer__listener_8h_source.html @@ -178,7 +178,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/dab/structedash__packager_1_1media_1_1mp4_1_1SampleToGroupEntry.html b/docs/dd/dab/structedash__packager_1_1media_1_1mp4_1_1SampleToGroupEntry.html index 68c9eb1402..2709f72164 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/dab/webm__muxer_8h_source.html b/docs/dd/dab/webm__muxer_8h_source.html index 8baada2ca5..39249c41e4 100644 --- a/docs/dd/dab/webm__muxer_8h_source.html +++ b/docs/dd/dab/webm__muxer_8h_source.html @@ -138,7 +138,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/dad/classedash__packager_1_1media_1_1WebMParserClient-members.html b/docs/dd/dad/classedash__packager_1_1media_1_1WebMParserClient-members.html index e3872ab536..c2d61ec214 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 ead406b3f6..88f35a6143 100644 --- a/docs/dd/dbc/buffer__reader_8cc_source.html +++ b/docs/dd/dbc/buffer__reader_8cc_source.html @@ -196,7 +196,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/dbd/classedash__packager_1_1media_1_1AesCtrEncryptor-members.html b/docs/dd/dbd/classedash__packager_1_1media_1_1AesCtrEncryptor-members.html index a72deb01ca..e7fed13534 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 8005a83496..fb4c1666b3 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 @@ -183,7 +183,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 e1bd151906..1625fbdcf3 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 c3fdf852b9..b49d06e3a8 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 c41352a5f6..9390e924ac 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 @@ -177,7 +177,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 51dc96f76d..a46218ea5f 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 2a4bdb92fb..f22c5e6caa 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 1245bdcf29..a0117d30d9 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 39ab55b074..e10d87a3f7 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 65ac1780c7..0dc0e8a391 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 5f780a7186..1f9412ad87 100644 --- a/docs/dd/de7/xml__node_8h_source.html +++ b/docs/dd/de7/xml__node_8h_source.html @@ -227,7 +227,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 37f0d09596..14fd01ec5f 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 1d7a3de336..718d4a2f9a 100644 --- a/docs/dd/dee/box__definitions_8cc_source.html +++ b/docs/dd/dee/box__definitions_8cc_source.html @@ -2371,7 +2371,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); 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 6a58e4566c..ac51fd0522 100644 --- a/docs/dd/def/classedash__packager_1_1media_1_1TextTrackConfig.html +++ b/docs/dd/def/classedash__packager_1_1media_1_1TextTrackConfig.html @@ -125,7 +125,7 @@ const std::string & id diff --git a/docs/dd/df2/webm_2multi__segment__segmenter_8h_source.html b/docs/dd/df2/webm_2multi__segment__segmenter_8h_source.html index 3a39f46ccb..04c1cc195e 100644 --- a/docs/dd/df2/webm_2multi__segment__segmenter_8h_source.html +++ b/docs/dd/df2/webm_2multi__segment__segmenter_8h_source.html @@ -149,7 +149,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/dfa/structedash__packager_1_1media_1_1MuxerOptions-members.html b/docs/dd/dfa/structedash__packager_1_1media_1_1MuxerOptions-members.html index 6d175e018e..5194483d20 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/d07/structedash__packager_1_1media_1_1mp4_1_1CueIDBox.html b/docs/de/d07/structedash__packager_1_1media_1_1mp4_1_1CueIDBox.html index 856afec7cc..e3c6f515ac 100644 --- a/docs/de/d07/structedash__packager_1_1media_1_1mp4_1_1CueIDBox.html +++ b/docs/de/d07/structedash__packager_1_1media_1_1mp4_1_1CueIDBox.html @@ -171,7 +171,7 @@ Additional Inherited Members diff --git a/docs/de/d0f/local__file_8h_source.html b/docs/de/d0f/local__file_8h_source.html index 167d3b02ad..f2f27a782f 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 89de5e424d..08beeb0b9f 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 0684279f99..b7b5741487 100644 --- a/docs/de/d12/container__names_8h_source.html +++ b/docs/de/d12/container__names_8h_source.html @@ -159,7 +159,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d15/media__stream_8cc_source.html b/docs/de/d15/media__stream_8cc_source.html index 69c81999de..ca9a2e2d23 100644 --- a/docs/de/d15/media__stream_8cc_source.html +++ b/docs/de/d15/media__stream_8cc_source.html @@ -210,7 +210,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d17/cluster__builder_8cc_source.html b/docs/de/d17/cluster__builder_8cc_source.html index 7904a9e574..d703fb69c4 100644 --- a/docs/de/d17/cluster__builder_8cc_source.html +++ b/docs/de/d17/cluster__builder_8cc_source.html @@ -330,7 +330,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d18/classedash__packager_1_1media_1_1WebVttMediaParser-members.html b/docs/de/d18/classedash__packager_1_1media_1_1WebVttMediaParser-members.html index 5230b3ea22..60c832a806 100644 --- a/docs/de/d18/classedash__packager_1_1media_1_1WebVttMediaParser-members.html +++ b/docs/de/d18/classedash__packager_1_1media_1_1WebVttMediaParser-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d19/classedash__packager_1_1media_1_1File.html b/docs/de/d19/classedash__packager_1_1media_1_1File.html index 12240998b0..b267f0e080 100644 --- a/docs/de/d19/classedash__packager_1_1media_1_1File.html +++ b/docs/de/d19/classedash__packager_1_1media_1_1File.html @@ -810,7 +810,7 @@ class ThreadedIoFile diff --git a/docs/de/d1e/mp4_2single__segment__segmenter_8cc_source.html b/docs/de/d1e/mp4_2single__segment__segmenter_8cc_source.html index a2a78af238..15d34e3e3b 100644 --- a/docs/de/d1e/mp4_2single__segment__segmenter_8cc_source.html +++ b/docs/de/d1e/mp4_2single__segment__segmenter_8cc_source.html @@ -333,7 +333,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d1f/structedash__packager_1_1media_1_1StreamDescriptor.html b/docs/de/d1f/structedash__packager_1_1media_1_1StreamDescriptor.html index fede54745c..f19f96a8a1 100644 --- a/docs/de/d1f/structedash__packager_1_1media_1_1StreamDescriptor.html +++ b/docs/de/d1f/structedash__packager_1_1media_1_1StreamDescriptor.html @@ -131,7 +131,7 @@ MediaContainerName output_ diff --git a/docs/de/d34/offset__byte__queue_8h_source.html b/docs/de/d34/offset__byte__queue_8h_source.html index 45972fc513..8baacf3b29 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 9da74737ee..8080ab2dba 100644 --- a/docs/de/d3e/buffer__reader_8h_source.html +++ b/docs/de/d3e/buffer__reader_8h_source.html @@ -163,7 +163,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d44/structedash__packager_1_1media_1_1mp4_1_1TrackEncryption.html b/docs/de/d44/structedash__packager_1_1media_1_1mp4_1_1TrackEncryption.html index c5a3a3ad34..ea3f1f3c4a 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 @@ -186,7 +186,7 @@ Additional Inherited Members diff --git a/docs/de/d48/classedash__packager_1_1media_1_1VP8Parser-members.html b/docs/de/d48/classedash__packager_1_1media_1_1VP8Parser-members.html new file mode 100644 index 0000000000..1a5b0da521 --- /dev/null +++ b/docs/de/d48/classedash__packager_1_1media_1_1VP8Parser-members.html @@ -0,0 +1,112 @@ + + + + + + +DASH Media Packaging SDK: Member List + + + + + + + + + +
+
+ + + + + + +
+
DASH Media Packaging SDK +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
edash_packager::media::VP8Parser Member List
+
+
+ +

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

+ + + + + + + + + +
codec_config() const edash_packager::media::VPxParserinline
IsKeyframe(const uint8_t *data, size_t data_size)edash_packager::media::VP8Parserstatic
Parse(const uint8_t *data, size_t data_size, std::vector< VPxFrameInfo > *vpx_frames) overrideedash_packager::media::VP8Parservirtual
VP8Parser() (defined in edash_packager::media::VP8Parser)edash_packager::media::VP8Parser
VPxParser() (defined in edash_packager::media::VPxParser)edash_packager::media::VPxParserinline
writable_codec_config() (defined in edash_packager::media::VPxParser)edash_packager::media::VPxParserinlineprotected
~VP8Parser() override (defined in edash_packager::media::VP8Parser)edash_packager::media::VP8Parser
~VPxParser() (defined in edash_packager::media::VPxParser)edash_packager::media::VPxParserinlinevirtual
+ + + + diff --git a/docs/de/d4a/muxer__listener__internal_8h_source.html b/docs/de/d4a/muxer__listener__internal_8h_source.html index 950c3f9c6d..4a94ca466a 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 77c441efcf..ac225c7235 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 096abcb752..8d86a0e32c 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 de3ff23182..3a343e17b5 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 b6b040dd91..981197fca5 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 @@ -112,7 +112,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 62a49f6ee9..d294e4ffdb 100644 --- a/docs/de/d5b/adts__header_8cc_source.html +++ b/docs/de/d5b/adts__header_8cc_source.html @@ -203,11 +203,11 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
114 } // namespace edash_packager
bool ReadBits(int num_bits, T *out)
Definition: bit_reader.h:35
A class to read bit streams.
Definition: bit_reader.h:17
-
bool SkipBits(int num_bits)
Definition: bit_reader.cc:21
+
bool SkipBits(int num_bits)
Definition: bit_reader.cc:24
diff --git a/docs/de/d5c/mpd__flags_8h_source.html b/docs/de/d5c/mpd__flags_8h_source.html index e25a88a21d..67fb31133c 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 0b7f29b14e..4508a22fe2 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 @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d6a/classedash__packager_1_1media_1_1webm_1_1WebMMuxer.html b/docs/de/d6a/classedash__packager_1_1media_1_1webm_1_1WebMMuxer.html index 87655b9dc1..abcb569a70 100644 --- a/docs/de/d6a/classedash__packager_1_1media_1_1webm_1_1WebMMuxer.html +++ b/docs/de/d6a/classedash__packager_1_1media_1_1webm_1_1WebMMuxer.html @@ -179,7 +179,7 @@ base::Clock * clock () diff --git a/docs/de/d6e/language__utils_8h_source.html b/docs/de/d6e/language__utils_8h_source.html index fd3399ce71..5f159a1b05 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 ff35d48c61..1def064964 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 79eabb67c0..a0ef11247c 100644 --- a/docs/de/d77/classedash__packager_1_1media_1_1VodMediaInfoDumpMuxerListener-members.html +++ b/docs/de/d77/classedash__packager_1_1media_1_1VodMediaInfoDumpMuxerListener-members.html @@ -112,7 +112,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d77/webm__content__encodings__client_8cc_source.html b/docs/de/d77/webm__content__encodings__client_8cc_source.html index 93cb5a28e8..f24709dd37 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 c3e031fb9b..05f0905932 100644 --- a/docs/de/d7b/mp4__media__parser_8h_source.html +++ b/docs/de/d7b/mp4__media__parser_8h_source.html @@ -217,7 +217,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d83/box__definitions__comparison_8h_source.html b/docs/de/d83/box__definitions__comparison_8h_source.html index 322c8e3d50..3502f52852 100644 --- a/docs/de/d83/box__definitions__comparison_8h_source.html +++ b/docs/de/d83/box__definitions__comparison_8h_source.html @@ -524,7 +524,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 62571d26bc..d5c0b27017 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 f129f67a41..b3d0c4b813 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 3d9a710cdd..aceca9fac4 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 b04604dc4a..c39f9ba9b7 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 0fdcbd5466..2f41bbb604 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 8726ca4bd4..f56d9d50f7 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 9f25674af2..5c76775d57 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 74b17d3173..6dfadffaa6 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 0b09608408..444f802c9f 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 bb9f465a08..c0be06f11d 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 3574d36107..eddb06ba00 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 eb7360774e..36a1be84c2 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 @@ -124,7 +124,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 d84a7111d1..5499501fad 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 0e6801502f..08774c27cf 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 fffb49e884..0087b557a1 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 @@ -108,7 +108,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 961e1a7ad1..0e45d71da7 100644 --- a/docs/de/dc1/demuxer_8h_source.html +++ b/docs/de/dc1/demuxer_8h_source.html @@ -171,7 +171,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/dc4/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset.html b/docs/de/dc4/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset.html index a4daa9e7aa..13444b291a 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 @@ -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 b1003effd8..f39ec6ef38 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 c701586dc2..6d531b21d5 100644 --- a/docs/de/dcf/file__closer_8h_source.html +++ b/docs/de/dcf/file__closer_8h_source.html @@ -125,7 +125,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/dd4/classedash__packager_1_1media_1_1mp4_1_1MP4Muxer-members.html b/docs/de/dd4/classedash__packager_1_1media_1_1mp4_1_1MP4Muxer-members.html index 18b52af0d4..9006f12747 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 f31039e063..fe11ec0fff 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 5d26a1762e..dc6dbd9d05 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 586473240c..d0bb23a9fa 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 @@ -177,7 +177,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 267d72fa9f..3dd179faf6 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 cf100e659b..3901b19bbc 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 e988fe0824..f0d7ce25b8 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 3399fc27bb..2979009eb3 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 a04ab9a9fe..6ee1dc5f1b 100644 --- a/docs/de/dfd/stream__info_8cc_source.html +++ b/docs/de/dfd/stream__info_8cc_source.html @@ -143,7 +143,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d0c/classedash__packager_1_1media_1_1VPCodecConfiguration-members.html b/docs/df/d0c/classedash__packager_1_1media_1_1VPCodecConfiguration-members.html index 6b25054e38..f742ca21fc 100644 --- a/docs/df/d0c/classedash__packager_1_1media_1_1VPCodecConfiguration-members.html +++ b/docs/df/d0c/classedash__packager_1_1media_1_1VPCodecConfiguration-members.html @@ -106,6 +106,8 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); COLOR_SPACE_BT_2020_NON_CONSTANT_LUMINANCE enum value (defined in edash_packager::media::VPCodecConfiguration)edash_packager::media::VPCodecConfiguration COLOR_SPACE_BT_601 enum value (defined in edash_packager::media::VPCodecConfiguration)edash_packager::media::VPCodecConfiguration COLOR_SPACE_BT_709 enum value (defined in edash_packager::media::VPCodecConfiguration)edash_packager::media::VPCodecConfiguration + COLOR_SPACE_SMPTE_170 enum value (defined in edash_packager::media::VPCodecConfiguration)edash_packager::media::VPCodecConfiguration + COLOR_SPACE_SMPTE_240 enum value (defined in edash_packager::media::VPCodecConfiguration)edash_packager::media::VPCodecConfiguration COLOR_SPACE_SRGB enum value (defined in edash_packager::media::VPCodecConfiguration)edash_packager::media::VPCodecConfiguration COLOR_SPACE_UNSPECIFIED enum value (defined in edash_packager::media::VPCodecConfiguration)edash_packager::media::VPCodecConfiguration ColorSpace enum name (defined in edash_packager::media::VPCodecConfiguration)edash_packager::media::VPCodecConfiguration @@ -129,7 +131,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d1a/offset__byte__queue_8cc_source.html b/docs/df/d1a/offset__byte__queue_8cc_source.html index d2774a42b4..31e6143f16 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 f101f09711..5f941c20cc 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 79c084fdf7..8fd1364e97 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 8d5bfd057b..0d9a70c32d 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 @@ -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 31d121164e..1f02cef966 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 c97c0c8773..2de51e0d25 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 09b715aa9f..1e6912230a 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 3e9e4f9d64..b8393e4de0 100644 --- a/docs/df/d32/audio__stream__info_8h_source.html +++ b/docs/df/d32/audio__stream__info_8h_source.html @@ -155,10 +155,10 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
71  return static_cast<uint32_t>(num_channels_) * sample_bits_ / 8;
72  }
73 
-
74  void set_sampling_frequency(const uint32_t sampling_frequency) {
-
75  sampling_frequency_ = sampling_frequency;
-
76  }
-
77 
+
74  void set_codec(AudioCodec codec) { codec_ = codec; }
+
75  void set_sampling_frequency(const uint32_t sampling_frequency) {
+
76  sampling_frequency_ = sampling_frequency;
+
77  }
78 
81  static std::string GetCodecString(AudioCodec codec,
82  uint8_t audio_object_type);
@@ -189,7 +189,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 20b608c1e9..7e91d1235a 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 @@ -112,7 +112,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 1a7686ad20..076466d29c 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 b2d0077ae2..f05e386ed6 100644 --- a/docs/df/d43/classedash__packager_1_1media_1_1mp4_1_1Segmenter-members.html +++ b/docs/df/d43/classedash__packager_1_1media_1_1mp4_1_1Segmenter-members.html @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d4e/classedash__packager_1_1media_1_1webm_1_1MultiSegmentSegmenter.html b/docs/df/d4e/classedash__packager_1_1media_1_1webm_1_1MultiSegmentSegmenter.html index 723dfcc54b..82ccca7f1e 100644 --- a/docs/df/d4e/classedash__packager_1_1media_1_1webm_1_1MultiSegmentSegmenter.html +++ b/docs/df/d4e/classedash__packager_1_1media_1_1webm_1_1MultiSegmentSegmenter.html @@ -277,7 +277,7 @@ double cluster_length_sec< diff --git a/docs/df/d5b/classedash__packager_1_1media_1_1mp2t_1_1EsParserAdts-members.html b/docs/df/d5b/classedash__packager_1_1media_1_1mp2t_1_1EsParserAdts-members.html index 322aa788c3..f744c94d66 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 ba6bcb84a5..94bd14ebcb 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 b030c66f61..e41f053de4 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 @@ -195,7 +195,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 39dbe08ef0..714a0729b1 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 cf3523a4af..53d3edd2b1 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 @@ -192,7 +192,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 8937be8758..ecfa7fa921 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 @@ -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 efd49d0e7c..a7177fc66c 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 eadce0ea5d..94b10cb0dd 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 @@ -180,7 +180,7 @@ Additional Inherited Members diff --git a/docs/df/d8a/vp9__parser_8h_source.html b/docs/df/d8a/vp9__parser_8h_source.html index 21e1355fe5..edd25fb3c1 100644 --- a/docs/df/d8a/vp9__parser_8h_source.html +++ b/docs/df/d8a/vp9__parser_8h_source.html @@ -100,55 +100,43 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
11 #include <stdlib.h>
12 
13 #include "packager/base/macros.h"
-
14 #include "packager/base/memory/scoped_ptr.h"
-
15 #include "packager/media/filters/vp_codec_configuration.h"
-
16 
-
17 namespace edash_packager {
-
18 namespace media {
-
19 
-
20 struct VPxFrameInfo {
-
21  size_t frame_size;
-
22  size_t uncompressed_header_size;
-
23  bool is_key_frame;
-
24  uint32_t width;
-
25  uint32_t height;
-
26 };
-
27 
-
29 class VP9Parser {
-
30  public:
-
31  VP9Parser();
-
32  ~VP9Parser();
-
33 
-
40  bool Parse(const uint8_t* data,
-
41  size_t data_size,
-
42  std::vector<VPxFrameInfo>* vpx_frames);
-
43 
-
46  const VPCodecConfiguration& codec_config() { return codec_config_; }
+
14 #include "packager/media/filters/vpx_parser.h"
+
15 
+
16 namespace edash_packager {
+
17 namespace media {
+
18 
+
20 class VP9Parser : public VPxParser {
+
21  public:
+
22  VP9Parser();
+
23  ~VP9Parser() override;
+
24 
+
31  bool Parse(const uint8_t* data,
+
32  size_t data_size,
+
33  std::vector<VPxFrameInfo>* vpx_frames) override;
+
34 
+
40  static bool IsKeyframe(const uint8_t* data, size_t data_size);
+
41 
+
42  private:
+
43  // Keep track of the current width and height. Note that they may change from
+
44  // frame to frame.
+
45  uint32_t width_;
+
46  uint32_t height_;
47 
-
48  private:
-
49  // Keep track of the current width and height. Note that they may change from
-
50  // frame to frame.
-
51  uint32_t width_;
-
52  uint32_t height_;
+
48  DISALLOW_COPY_AND_ASSIGN(VP9Parser);
+
49 };
+
50 
+
51 } // namespace media
+
52 } // namespace edash_packager
53 
-
54  VPCodecConfiguration codec_config_;
-
55 
-
56  DISALLOW_COPY_AND_ASSIGN(VP9Parser);
-
57 };
-
58 
-
59 } // namespace media
-
60 } // namespace edash_packager
-
61 
-
62 #endif // MEDIA_FILTERS_VP9_PARSER_H_
-
bool Parse(const uint8_t *data, size_t data_size, std::vector< VPxFrameInfo > *vpx_frames)
Definition: vp9_parser.cc:429
- -
Class to parse a vp9 bit stream.
Definition: vp9_parser.h:29
-
const VPCodecConfiguration & codec_config()
Definition: vp9_parser.h:46
-
Class for parsing or writing VP codec configuration data.
+
54 #endif // MEDIA_FILTERS_VP9_PARSER_H_
+
Class to parse a vp9 bit stream.
Definition: vp9_parser.h:20
+
static bool IsKeyframe(const uint8_t *data, size_t data_size)
Definition: vp9_parser.cc:534
+
bool Parse(const uint8_t *data, size_t data_size, std::vector< VPxFrameInfo > *vpx_frames) override
Definition: vp9_parser.cc:417
+ diff --git a/docs/df/d8a/vpx__parser_8h_source.html b/docs/df/d8a/vpx__parser_8h_source.html new file mode 100644 index 0000000000..86ad34e735 --- /dev/null +++ b/docs/df/d8a/vpx__parser_8h_source.html @@ -0,0 +1,153 @@ + + + + + + +DASH Media Packaging SDK: media/filters/vpx_parser.h Source File + + + + + + + + + +
+
+ + + + + + +
+
DASH Media Packaging SDK +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
vpx_parser.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_VPX_PARSER_H_
+
8 #define MEDIA_FILTERS_VPX_PARSER_H_
+
9 
+
10 #include <stdint.h>
+
11 #include <stdlib.h>
+
12 
+
13 #include "packager/base/macros.h"
+
14 #include "packager/media/filters/vp_codec_configuration.h"
+
15 
+
16 namespace edash_packager {
+
17 namespace media {
+
18 
+
19 struct VPxFrameInfo {
+
20  size_t frame_size;
+
21  size_t uncompressed_header_size;
+
22  bool is_keyframe;
+
23  uint32_t width;
+
24  uint32_t height;
+
25 };
+
26 
+
27 class VPxParser {
+
28  public:
+
29  VPxParser() {}
+
30  virtual ~VPxParser() {}
+
31 
+
38  virtual bool Parse(const uint8_t* data,
+
39  size_t data_size,
+
40  std::vector<VPxFrameInfo>* vpx_frames) = 0;
+
41 
+
44  const VPCodecConfiguration& codec_config() const { return codec_config_; }
+
45 
+
46  protected:
+
47  VPCodecConfiguration* writable_codec_config() { return &codec_config_; }
+
48 
+
49  private:
+
50  VPCodecConfiguration codec_config_;
+
51 
+
52  DISALLOW_COPY_AND_ASSIGN(VPxParser);
+
53 };
+
54 
+
55 } // namespace media
+
56 } // namespace edash_packager
+
57 
+
58 #endif // MEDIA_FILTERS_VPX_PARSER_H_
+ +
const VPCodecConfiguration & codec_config() const
Definition: vpx_parser.h:44
+
virtual bool Parse(const uint8_t *data, size_t data_size, std::vector< VPxFrameInfo > *vpx_frames)=0
+
Class for parsing or writing VP codec configuration data.
+ +
+ + + + diff --git a/docs/df/d96/xml__node_8cc_source.html b/docs/df/d96/xml__node_8cc_source.html index c6c602dfb5..5054d8438f 100644 --- a/docs/df/d96/xml__node_8cc_source.html +++ b/docs/df/d96/xml__node_8cc_source.html @@ -468,7 +468,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 ebe97af060..2a893b9baf 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/da9/structedash__packager_1_1media_1_1mp4_1_1WebVTTSourceLabelBox.html b/docs/df/da9/structedash__packager_1_1media_1_1mp4_1_1WebVTTSourceLabelBox.html index acbe21a1bb..a20dc67450 100644 --- a/docs/df/da9/structedash__packager_1_1media_1_1mp4_1_1WebVTTSourceLabelBox.html +++ b/docs/df/da9/structedash__packager_1_1media_1_1mp4_1_1WebVTTSourceLabelBox.html @@ -171,7 +171,7 @@ Additional Inherited Members diff --git a/docs/df/dad/decrypt__config_8h_source.html b/docs/df/dad/decrypt__config_8h_source.html index 12e10cc951..918ee16c62 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 255220e52e..3fbaaf3a2c 100644 --- a/docs/df/db4/classedash__packager_1_1media_1_1BitReader.html +++ b/docs/df/db4/classedash__packager_1_1media_1_1BitReader.html @@ -108,8 +108,14 @@ Public Member Functions   bool SkipBits (int num_bits)   +bool SkipBitsConditional (bool condition, int num_bits) +  +bool SkipBytes (int num_bytes) +  int bits_available () const   +int bit_position () const + 

Detailed Description

A class to read bit streams.

@@ -153,9 +159,38 @@ Public Member Functions

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + +
int edash_packager::media::BitReader::bit_position () const
+
+inline
+
+
Returns
The current bit position.
+ +

Definition at line 81 of file bit_reader.h.

+ +
+
+ + + + + +
@@ -164,10 +199,15 @@ Public Member Functions
int edash_packager::media::BitReader::bits_available
const
+
+inline
Returns
The number of bits available for reading.
-

Definition at line 53 of file bit_reader.cc.

+

Definition at line 76 of file bit_reader.h.

@@ -238,9 +278,80 @@ template<typename T > -
Returns
false if the given number of bits cannot be skipped (not enough bits in the stream), true otherwise. When false is returned, the stream will enter a state where further ReadBits/SkipBits operations will always return false unless |num_bits| is 0.
+
Returns
false if the given number of bits cannot be skipped (not enough bits in the stream), true otherwise. When false is returned, the stream will enter a state where further ReadXXX/SkipXXX operations will always return false unless |num_bits/bytes| is 0.
-

Definition at line 21 of file bit_reader.cc.

+

Definition at line 24 of file bit_reader.cc.

+ + + + +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool edash_packager::media::BitReader::SkipBitsConditional (bool condition,
int num_bits 
)
+
+inline
+
+

Read one bit then skip the number of bits specified if that bit matches condition.

+
Parameters
+ + + +
conditionindicates when the number of bits should be skipped.
num_bitsspecifies the number of bits to be skipped.
+
+
+
Returns
false if the one bit cannot be read (not enough bits in the stream) or if the bit is set but the given number of bits cannot be skipped (not enough bits in the stream), true otherwise. When false is returned, the stream will enter a state where further ReadXXX/SkipXXX operations will always return false.
+ +

Definition at line 60 of file bit_reader.h.

+ +
+
+ +
+
+ + + + + + + + +
bool edash_packager::media::BitReader::SkipBytes (int num_bytes)
+
+

Skip a number of bytes from stream. The current posision should be byte aligned, otherwise a false is returned and bytes are not skipped.

+
Parameters
+ + +
num_bytesspecifies the number of bytes to be skipped.
+
+
+
Returns
false if the current position is not byte aligned or if the given number of bytes cannot be skipped (not enough bytes in the stream), true otherwise.
+ +

Definition at line 56 of file bit_reader.cc.

@@ -251,7 +362,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 a50561f95a..8b41e4bfa1 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 @@ -112,7 +112,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 5da467ad75..4dc5d23c4f 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 @@ -110,7 +110,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 ebd42e4b0c..3fbb836c90 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 71fc7e2ac2..16301a23ab 100644 --- a/docs/df/dd2/mpd__utils_8h_source.html +++ b/docs/df/dd2/mpd__utils_8h_source.html @@ -165,7 +165,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/dda/structedash__packager_1_1media_1_1Cue.html b/docs/df/dda/structedash__packager_1_1media_1_1Cue.html index 462df8a75f..2a6b028dbe 100644 --- a/docs/df/dda/structedash__packager_1_1media_1_1Cue.html +++ b/docs/df/dda/structedash__packager_1_1media_1_1Cue.html @@ -125,7 +125,7 @@ std::vector< std::string >  diff --git a/docs/df/ddc/webm_2segmenter_8h_source.html b/docs/df/ddc/webm_2segmenter_8h_source.html index bc2727144f..a726f10d64 100644 --- a/docs/df/ddc/webm_2segmenter_8h_source.html +++ b/docs/df/ddc/webm_2segmenter_8h_source.html @@ -240,7 +240,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 49bed61770..e3e9545b6f 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 fa7620507e..8087d0ac58 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 49eee5e5af..4695a33469 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 @@ -124,7 +124,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 47bcb8119c..69230e0a1a 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 69cdab545a..581348bc05 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 54c7df10e5..0eed07854e 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 3625c0d526..f8f0d69aa7 100644 --- a/docs/df/dec/classedash__packager_1_1media_1_1MuxerListener-members.html +++ b/docs/df/dec/classedash__packager_1_1media_1_1MuxerListener-members.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/df4/classedash__packager_1_1media_1_1SeekHead.html b/docs/df/df4/classedash__packager_1_1media_1_1SeekHead.html index 5de4efa691..8ac479684e 100644 --- a/docs/df/df4/classedash__packager_1_1media_1_1SeekHead.html +++ b/docs/df/df4/classedash__packager_1_1media_1_1SeekHead.html @@ -148,7 +148,7 @@ void set_tracks_pos (u diff --git a/docs/df/dfa/classedash__packager_1_1media_1_1RsaPublicKey-members.html b/docs/df/dfa/classedash__packager_1_1media_1_1RsaPublicKey-members.html index 16f01f3a28..b7b2d92e92 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 e721f1596f..614f5e2b49 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 971dc55910..903d3a7ba8 100644 --- a/docs/dir_279fd47bebb21302c25cfb685e84c359.html +++ b/docs/dir_279fd47bebb21302c25cfb685e84c359.html @@ -113,7 +113,7 @@ Files diff --git a/docs/dir_2eceb70145328c029a5f43350007537a.html b/docs/dir_2eceb70145328c029a5f43350007537a.html index 9532ac0790..15dd0e5641 100644 --- a/docs/dir_2eceb70145328c029a5f43350007537a.html +++ b/docs/dir_2eceb70145328c029a5f43350007537a.html @@ -93,7 +93,7 @@ Files diff --git a/docs/dir_39dc0668bd5a501998f94e8b4e546c71.html b/docs/dir_39dc0668bd5a501998f94e8b4e546c71.html index 0bd626d036..21e706d8d7 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 392872b7b1..48073485b3 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 866542dbdf..f73e34ae4a 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 0ae03dadba..93d2c68303 100644 --- a/docs/dir_5039d854a18988ed1f1dbebc120ffbf7.html +++ b/docs/dir_5039d854a18988ed1f1dbebc120ffbf7.html @@ -177,7 +177,7 @@ Files diff --git a/docs/dir_5eb2e460866db0ed29e32d64402e5c22.html b/docs/dir_5eb2e460866db0ed29e32d64402e5c22.html index 2660ce0405..3d205f3464 100644 --- a/docs/dir_5eb2e460866db0ed29e32d64402e5c22.html +++ b/docs/dir_5eb2e460866db0ed29e32d64402e5c22.html @@ -105,6 +105,10 @@ Files   file  hevc_decoder_configuration.h [code]   +file  vp8_parser.cc [code] +  +file  vp8_parser.h [code] +  file  vp9_parser.cc [code]   file  vp9_parser.h [code] @@ -113,13 +117,15 @@ Files   file  vp_codec_configuration.h [code]   +file  vpx_parser.h [code] +  file  webvtt_util.h [code]   diff --git a/docs/dir_65f7acfa8cf3a5f1edc11faa2428b914.html b/docs/dir_65f7acfa8cf3a5f1edc11faa2428b914.html index 062339b1fe..f1befe7e31 100644 --- a/docs/dir_65f7acfa8cf3a5f1edc11faa2428b914.html +++ b/docs/dir_65f7acfa8cf3a5f1edc11faa2428b914.html @@ -101,7 +101,7 @@ Directories diff --git a/docs/dir_679a6f4e9fa092b388fc986148018f2a.html b/docs/dir_679a6f4e9fa092b388fc986148018f2a.html index cbd023b19d..687c16e938 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 94ea2d331b..6f0ad6800c 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 dd10420f29..8fc5ed0020 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 8f646522ec..5ac4cb30d1 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 917b0293d0..d447c9b631 100644 --- a/docs/dir_c6ada2450b25ab5438a4dba6c9b890af.html +++ b/docs/dir_c6ada2450b25ab5438a4dba6c9b890af.html @@ -217,7 +217,7 @@ Files diff --git a/docs/dir_d422163b96683743ed3963d4aac17747.html b/docs/dir_d422163b96683743ed3963d4aac17747.html index 6f369e3c0b..8317d8d951 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 c30e4f17c9..43eeefaa52 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 ba13082fb9..fc1d079711 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 7ce034d216..dc74cf4f3e 100644 --- a/docs/files.html +++ b/docs/files.html @@ -208,11 +208,14 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); ||o*h264_parser.h ||o*hevc_decoder_configuration.cc ||o*hevc_decoder_configuration.h -||o*vp9_parser.cc -||o*vp9_parser.h -||o*vp_codec_configuration.cc -||o*vp_codec_configuration.h -||\*webvtt_util.h +||o*vp8_parser.cc +||o*vp8_parser.h +||o*vp9_parser.cc +||o*vp9_parser.h +||o*vp_codec_configuration.cc +||o*vp_codec_configuration.h +||o*vpx_parser.h +||\*webvtt_util.h |\+formats | o+mp2t | |o*adts_header.cc @@ -370,7 +373,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions.html b/docs/functions.html index 798c6f4da3..b44357a0ad 100644 --- a/docs/functions.html +++ b/docs/functions.html @@ -211,7 +211,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_b.html b/docs/functions_b.html index 3209cba388..440aa0d12d 100644 --- a/docs/functions_b.html +++ b/docs/functions_b.html @@ -127,6 +127,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • BandwidthEstimator() : BandwidthEstimator
  • +
  • bit_position() +: edash_packager::media::BitReader +
  • BitReader() : edash_packager::media::BitReader
  • @@ -227,7 +230,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_c.html b/docs/functions_c.html index 517ea626c6..13f87df4df 100644 --- a/docs/functions_c.html +++ b/docs/functions_c.html @@ -155,7 +155,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : edash_packager::media::WebMClusterParser
  • codec_config() -: edash_packager::media::VP9Parser +: edash_packager::media::VPxParser
  • CompositionOffsetIterator() : edash_packager::media::mp4::CompositionOffsetIterator @@ -211,7 +211,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_d.html b/docs/functions_d.html index 92dfeaff61..f27e73d019 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 efebba4f6b..12dfb46962 100644 --- a/docs/functions_e.html +++ b/docs/functions_e.html @@ -133,13 +133,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , edash_packager::media::RsaPublicKey
  • EncryptingFragmenter() -: edash_packager::media::mp4::EncryptingFragmenter +: edash_packager::media::mp4::EncryptingFragmenter
  • diff --git a/docs/functions_eval.html b/docs/functions_eval.html index ae52623237..0c425d3294 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 848f2a3b16..8a615e91d2 100644 --- a/docs/functions_f.html +++ b/docs/functions_f.html @@ -186,7 +186,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func.html b/docs/functions_func.html index faee648164..3cc53ca897 100644 --- a/docs/functions_func.html +++ b/docs/functions_func.html @@ -211,7 +211,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_b.html b/docs/functions_func_b.html index 5c04235c68..d19fb49178 100644 --- a/docs/functions_func_b.html +++ b/docs/functions_func_b.html @@ -124,6 +124,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • BandwidthEstimator() : BandwidthEstimator
  • +
  • bit_position() +: edash_packager::media::BitReader +
  • BitReader() : edash_packager::media::BitReader
  • @@ -224,7 +227,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_c.html b/docs/functions_func_c.html index 9419113d76..35fe6448b0 100644 --- a/docs/functions_func_c.html +++ b/docs/functions_func_c.html @@ -155,7 +155,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : edash_packager::media::WebMClusterParser
  • codec_config() -: edash_packager::media::VP9Parser +: edash_packager::media::VPxParser
  • CompositionOffsetIterator() : edash_packager::media::mp4::CompositionOffsetIterator @@ -211,7 +211,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_d.html b/docs/functions_func_d.html index cb85f27182..5a8d2a599b 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 5ef7feb009..28eabe768e 100644 --- a/docs/functions_func_e.html +++ b/docs/functions_func_e.html @@ -133,13 +133,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , edash_packager::media::RsaPublicKey
  • EncryptingFragmenter() -: edash_packager::media::mp4::EncryptingFragmenter +: edash_packager::media::mp4::EncryptingFragmenter
  • diff --git a/docs/functions_func_f.html b/docs/functions_func_f.html index fa94761f65..14757c1532 100644 --- a/docs/functions_func_f.html +++ b/docs/functions_func_f.html @@ -180,7 +180,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_g.html b/docs/functions_func_g.html index 1e033fbcd2..0573761724 100644 --- a/docs/functions_func_g.html +++ b/docs/functions_func_g.html @@ -231,7 +231,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_h.html b/docs/functions_func_h.html index bc546e4479..f41b4e9eb2 100644 --- a/docs/functions_func_h.html +++ b/docs/functions_func_h.html @@ -141,7 +141,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_i.html b/docs/functions_func_i.html index 46d3882059..9f8c5f6667 100644 --- a/docs/functions_func_i.html +++ b/docs/functions_func_i.html @@ -162,6 +162,10 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • IsAAC() : edash_packager::media::mp4::ESDescriptor
  • +
  • IsKeyframe() +: edash_packager::media::VP8Parser +, edash_packager::media::VP9Parser +
  • IsParsingComplete() : edash_packager::media::WebMListParser
  • @@ -192,7 +196,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_k.html b/docs/functions_func_k.html index 79a1747644..6c21f6e0b6 100644 --- a/docs/functions_func_k.html +++ b/docs/functions_func_k.html @@ -122,13 +122,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

    - k -

    diff --git a/docs/functions_func_l.html b/docs/functions_func_l.html index a85e7c6220..24cb48598c 100644 --- a/docs/functions_func_l.html +++ b/docs/functions_func_l.html @@ -137,7 +137,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_m.html b/docs/functions_func_m.html index b3f69ca166..71e27ae664 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 b742c24783..e46e5bef1d 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 93910c11c8..46a6976e37 100644 --- a/docs/functions_func_o.html +++ b/docs/functions_func_o.html @@ -160,7 +160,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_p.html b/docs/functions_func_p.html index d3ccd4f0fc..d6e4b35844 100644 --- a/docs/functions_func_p.html +++ b/docs/functions_func_p.html @@ -131,8 +131,10 @@ 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::VP9Parser +, edash_packager::media::VP8Parser +, edash_packager::media::VP9Parser , edash_packager::media::VPCodecConfiguration +, edash_packager::media::VPxParser , edash_packager::media::WebMClusterParser , edash_packager::media::WebMInfoParser , edash_packager::media::WebMListParser @@ -179,7 +181,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , edash_packager::media::mp4::KeyRotationFragmenter
  • ProducerConsumerQueue() -: edash_packager::media::ProducerConsumerQueue< T > +: edash_packager::media::ProducerConsumerQueue< T >
  • PsshBoxFromPsshData() : edash_packager::media::KeySource @@ -198,7 +200,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_r.html b/docs/functions_func_r.html index ed4bbe7d4f..f58b3ac833 100644 --- a/docs/functions_func_r.html +++ b/docs/functions_func_r.html @@ -196,7 +196,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_s.html b/docs/functions_func_s.html index c150b23a7b..a8c06c5508 100644 --- a/docs/functions_func_s.html +++ b/docs/functions_func_s.html @@ -222,8 +222,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • SkipBits() : edash_packager::media::BitReader
  • +
  • SkipBitsConditional() +: edash_packager::media::BitReader +
  • SkipBytes() -: edash_packager::media::BufferReader +: edash_packager::media::BitReader +, edash_packager::media::BufferReader
  • Start() : edash_packager::media::MediaStream @@ -253,7 +257,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_t.html b/docs/functions_func_t.html index 4c203655b1..883ff7d473 100644 --- a/docs/functions_func_t.html +++ b/docs/functions_func_t.html @@ -170,7 +170,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_u.html b/docs/functions_func_u.html index d734025194..945167e303 100644 --- a/docs/functions_func_u.html +++ b/docs/functions_func_u.html @@ -146,7 +146,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_v.html b/docs/functions_func_v.html index 9dd175decf..b8ee9c8985 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 8eca5474ce..00805aafc4 100644 --- a/docs/functions_func_w.html +++ b/docs/functions_func_w.html @@ -172,7 +172,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_x.html b/docs/functions_func_x.html index e07ab9da2a..eff04ca2c8 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 5d0ab1dd29..c50ada084d 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 c5cdfd719d..ab6f8ce3ab 100644 --- a/docs/functions_g.html +++ b/docs/functions_g.html @@ -231,7 +231,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_h.html b/docs/functions_h.html index 49ead5525c..fc2034764d 100644 --- a/docs/functions_h.html +++ b/docs/functions_h.html @@ -141,7 +141,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_i.html b/docs/functions_i.html index 973e5200e5..95965b9788 100644 --- a/docs/functions_i.html +++ b/docs/functions_i.html @@ -165,6 +165,10 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • IsAAC() : edash_packager::media::mp4::ESDescriptor
  • +
  • IsKeyframe() +: edash_packager::media::VP8Parser +, edash_packager::media::VP9Parser +
  • IsParsingComplete() : edash_packager::media::WebMListParser
  • @@ -175,7 +179,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : edash_packager::media::mp4::TrackRunIterator
  • IsSyncSample() -: edash_packager::media::mp4::SyncSampleIterator +: edash_packager::media::mp4::SyncSampleIterator
  • IsValid() : edash_packager::media::mp4::ChunkInfoIterator @@ -195,7 +199,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_k.html b/docs/functions_k.html index 01aa7bb503..765b015494 100644 --- a/docs/functions_k.html +++ b/docs/functions_k.html @@ -134,7 +134,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : edash_packager::media::WebMClusterParser
  • KeyRotationFragmenter() -: edash_packager::media::mp4::KeyRotationFragmenter +: edash_packager::media::mp4::KeyRotationFragmenter
  • kOpusFrameDurationsMu : edash_packager::media::WebMClusterParser @@ -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 18537dd0cb..717cb73327 100644 --- a/docs/functions_l.html +++ b/docs/functions_l.html @@ -137,7 +137,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_m.html b/docs/functions_m.html index beb0b732e1..2e8cd5de55 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 41d277ca3b..3409f99d57 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 392d05cfe3..1b3086446b 100644 --- a/docs/functions_o.html +++ b/docs/functions_o.html @@ -163,7 +163,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_p.html b/docs/functions_p.html index 4bb995b6de..98c36009f4 100644 --- a/docs/functions_p.html +++ b/docs/functions_p.html @@ -131,8 +131,10 @@ 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::VP9Parser +, edash_packager::media::VP8Parser +, edash_packager::media::VP9Parser , edash_packager::media::VPCodecConfiguration +, edash_packager::media::VPxParser , edash_packager::media::WebMClusterParser , edash_packager::media::WebMInfoParser , edash_packager::media::WebMListParser @@ -179,7 +181,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , edash_packager::media::mp4::KeyRotationFragmenter
  • ProducerConsumerQueue() -: edash_packager::media::ProducerConsumerQueue< T > +: edash_packager::media::ProducerConsumerQueue< T >
  • PsshBoxFromPsshData() : edash_packager::media::KeySource @@ -198,7 +200,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_r.html b/docs/functions_r.html index b5c34c5c3a..954f760374 100644 --- a/docs/functions_r.html +++ b/docs/functions_r.html @@ -196,7 +196,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_s.html b/docs/functions_s.html index 4ebf6e5430..f66322d610 100644 --- a/docs/functions_s.html +++ b/docs/functions_s.html @@ -234,8 +234,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • SkipBits() : edash_packager::media::BitReader
  • +
  • SkipBitsConditional() +: edash_packager::media::BitReader +
  • SkipBytes() -: edash_packager::media::BufferReader +: edash_packager::media::BitReader +, edash_packager::media::BufferReader
  • Start() : edash_packager::media::MediaStream @@ -244,7 +248,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : edash_packager::media::mp4::BoxReader
  • Status() -: edash_packager::media::Status +: edash_packager::media::Status
  • Stop() : edash_packager::media::ProducerConsumerQueue< T > @@ -265,7 +269,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_t.html b/docs/functions_t.html index d1417b3d30..97da13693d 100644 --- a/docs/functions_t.html +++ b/docs/functions_t.html @@ -173,7 +173,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_type.html b/docs/functions_type.html index 87b679a712..248c1b4b8e 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 a8247aa63f..86827c57f3 100644 --- a/docs/functions_u.html +++ b/docs/functions_u.html @@ -146,7 +146,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_v.html b/docs/functions_v.html index b6bfbad47a..19c4cf0f9c 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 13ea357ac6..a444af1b6b 100644 --- a/docs/functions_vars.html +++ b/docs/functions_vars.html @@ -138,7 +138,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_w.html b/docs/functions_w.html index 099d2c0b46..ad01cf695f 100644 --- a/docs/functions_w.html +++ b/docs/functions_w.html @@ -172,7 +172,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_x.html b/docs/functions_x.html index 425856fcd9..05ab284d8b 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 7b42e1f72a..6ed7705e98 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 97a40babc7..b303bb1a6d 100644 --- a/docs/hierarchy.html +++ b/docs/hierarchy.html @@ -272,13 +272,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); oCedash_packager::media::RsaPublicKeyRsa public key, used for signature verification and encryption oCedash_packager::media::mp4::SampleToGroupEntry oCedash_packager::media::SeekHead -oCedash_packager::media::mp4::Segmenter -|oCedash_packager::media::mp4::MultiSegmentSegmenter -|\Cedash_packager::media::mp4::SingleSegmentSegmenter -oCedash_packager::media::webm::Segmenter -|oCedash_packager::media::webm::MultiSegmentSegmenter -|\Cedash_packager::media::webm::SingleSegmentSegmenter -| \Cedash_packager::media::webm::TwoPassSingleSegmentSegmenter +oCedash_packager::media::webm::Segmenter +|oCedash_packager::media::webm::MultiSegmentSegmenter +|\Cedash_packager::media::webm::SingleSegmentSegmenter +| \Cedash_packager::media::webm::TwoPassSingleSegmentSegmenter +oCedash_packager::media::mp4::Segmenter +|oCedash_packager::media::mp4::MultiSegmentSegmenter +|\Cedash_packager::media::mp4::SingleSegmentSegmenter oCedash_packager::SegmentInfo oCedash_packager::media::mp4::SegmentReference oCSimpleThread @@ -299,9 +299,11 @@ 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::VP9ParserClass to parse a vp9 bit stream -oCedash_packager::media::VPCodecConfigurationClass for parsing or writing VP codec configuration data -oCedash_packager::media::VPxFrameInfo +oCedash_packager::media::VPCodecConfigurationClass for parsing or writing VP codec configuration data +oCedash_packager::media::VPxFrameInfo +oCedash_packager::media::VPxParser +|oCedash_packager::media::VP8Parser +|\Cedash_packager::media::VP9ParserClass to parse a vp9 bit stream oCedash_packager::media::WebMListParser oCedash_packager::media::WebMParserClient |oCedash_packager::media::WebMAudioClientHelper class used to parse an Audio element inside a TrackEntry element @@ -321,7 +323,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/index.html b/docs/index.html index 114dd58e5a..8ef52ca293 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 88f3a6e4dc..42ee46a86c 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 3101bbd42a..376b10d8cd 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 7e91a84392..30ee26faf2 100644 --- a/docs/namespaces.html +++ b/docs/namespaces.html @@ -92,7 +92,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/search/all_1.js b/docs/search/all_1.js index 4621d3bf4e..fa67d6e0ec 100644 --- a/docs/search/all_1.js +++ b/docs/search/all_1.js @@ -2,6 +2,7 @@ var searchData= [ ['bandwidth',['bandwidth',['../de/d57/structedash__packager_1_1media_1_1MuxerOptions.html#a94fa00f788f9c39cba593004a1cd8849',1,'edash_packager::media::MuxerOptions']]], ['bandwidthestimator',['BandwidthEstimator',['../d2/d6f/classBandwidthEstimator.html',1,'BandwidthEstimator'],['../d2/d6f/classBandwidthEstimator.html#aaae9573785ee9d62e0927f806537ea97',1,'BandwidthEstimator::BandwidthEstimator()']]], + ['bit_5fposition',['bit_position',['../df/db4/classedash__packager_1_1media_1_1BitReader.html#a475ab08957dc2e7147b64f307bfc90ab',1,'edash_packager::media::BitReader']]], ['bitreader',['BitReader',['../df/db4/classedash__packager_1_1media_1_1BitReader.html',1,'edash_packager::media']]], ['bitreader',['BitReader',['../df/db4/classedash__packager_1_1media_1_1BitReader.html#a7cfecfaf6169a0c9286d62b24e7b934e',1,'edash_packager::media::BitReader']]], ['bits_5favailable',['bits_available',['../df/db4/classedash__packager_1_1media_1_1BitReader.html#a1409a0968749ca5a55ba823cd718065b',1,'edash_packager::media::BitReader']]], diff --git a/docs/search/all_10.js b/docs/search/all_10.js index 62ddc67074..f607ddf838 100644 --- a/docs/search/all_10.js +++ b/docs/search/all_10.js @@ -24,8 +24,8 @@ var searchData= ['segment_5fduration',['segment_duration',['../de/d57/structedash__packager_1_1media_1_1MuxerOptions.html#ad6f281dfd832bd073f5fb5fc46342f9f',1,'edash_packager::media::MuxerOptions']]], ['segment_5fsap_5faligned',['segment_sap_aligned',['../de/d57/structedash__packager_1_1media_1_1MuxerOptions.html#af0403298bf08392bb3009061cd8de2b0',1,'edash_packager::media::MuxerOptions']]], ['segment_5ftemplate',['segment_template',['../de/d57/structedash__packager_1_1media_1_1MuxerOptions.html#a1303b2f8efb19af4728513ba2eeea2d1',1,'edash_packager::media::MuxerOptions']]], - ['segmenter',['Segmenter',['../dc/de1/classedash__packager_1_1media_1_1mp4_1_1Segmenter.html',1,'edash_packager::media::mp4']]], ['segmenter',['Segmenter',['../da/d14/classedash__packager_1_1media_1_1webm_1_1Segmenter.html',1,'edash_packager::media::webm']]], + ['segmenter',['Segmenter',['../dc/de1/classedash__packager_1_1media_1_1mp4_1_1Segmenter.html',1,'edash_packager::media::mp4']]], ['segmentindex',['SegmentIndex',['../d1/d81/structedash__packager_1_1media_1_1mp4_1_1SegmentIndex.html',1,'edash_packager::media::mp4']]], ['segmentinfo',['SegmentInfo',['../d9/d9b/structedash__packager_1_1SegmentInfo.html',1,'edash_packager']]], ['segmentreference',['SegmentReference',['../d4/dce/structedash__packager_1_1media_1_1mp4_1_1SegmentReference.html',1,'edash_packager::media::mp4']]], @@ -50,16 +50,17 @@ var searchData= ['setstringattribute',['SetStringAttribute',['../dd/d85/classedash__packager_1_1xml_1_1XmlNode.html#a13806def844e3fd8e8cc0e690f292aab',1,'edash_packager::xml::XmlNode']]], ['simplempdnotifier',['SimpleMpdNotifier',['../db/d56/classedash__packager_1_1SimpleMpdNotifier.html',1,'edash_packager']]], ['single_5fsegment',['single_segment',['../de/d57/structedash__packager_1_1media_1_1MuxerOptions.html#a7542af69b834f3a72e5c5b25f4f0f474',1,'edash_packager::media::MuxerOptions']]], - ['singlesegmentsegmenter',['SingleSegmentSegmenter',['../d0/d03/classedash__packager_1_1media_1_1webm_1_1SingleSegmentSegmenter.html',1,'edash_packager::media::webm']]], ['singlesegmentsegmenter',['SingleSegmentSegmenter',['../da/d75/classedash__packager_1_1media_1_1mp4_1_1SingleSegmentSegmenter.html',1,'edash_packager::media::mp4']]], + ['singlesegmentsegmenter',['SingleSegmentSegmenter',['../d0/d03/classedash__packager_1_1media_1_1webm_1_1SingleSegmentSegmenter.html',1,'edash_packager::media::webm']]], ['size',['Size',['../d5/d02/classedash__packager_1_1media_1_1ProducerConsumerQueue.html#aa502e5cfc6159ded7abb3672cdab8cd5',1,'edash_packager::media::ProducerConsumerQueue::Size()'],['../de/d19/classedash__packager_1_1media_1_1File.html#a1bb2a295cb69b3e51b9cc14969848632',1,'edash_packager::media::File::Size()'],['../dd/d98/classedash__packager_1_1media_1_1LocalFile.html#a8984949196dc5230a8ece08c738a9fd3',1,'edash_packager::media::LocalFile::Size()'],['../dc/dfa/classedash__packager_1_1media_1_1ThreadedIoFile.html#af61d3986b87d43e3b5ffd86c86094478',1,'edash_packager::media::ThreadedIoFile::Size()'],['../d8/dc7/classedash__packager_1_1media_1_1UdpFile.html#a8d62376715aee117aa7a225b54be0945',1,'edash_packager::media::UdpFile::Size()'],['../dd/d4f/classedash__packager_1_1media_1_1mp4_1_1BoxBuffer.html#aef7267aa7963866d3dcef4f051f84674',1,'edash_packager::media::mp4::BoxBuffer::Size()']]], ['skipbits',['SkipBits',['../df/db4/classedash__packager_1_1media_1_1BitReader.html#acacb97d71aaae01796b90d27e7cdca0a',1,'edash_packager::media::BitReader']]], - ['skipbytes',['SkipBytes',['../d9/d46/classedash__packager_1_1media_1_1BufferReader.html#a2b7075e5a47a823b9f66c0ba702f26bf',1,'edash_packager::media::BufferReader']]], + ['skipbitsconditional',['SkipBitsConditional',['../df/db4/classedash__packager_1_1media_1_1BitReader.html#a8a7f24cfdc78211fb2c1a0167c8d903e',1,'edash_packager::media::BitReader']]], + ['skipbytes',['SkipBytes',['../df/db4/classedash__packager_1_1media_1_1BitReader.html#a71354dfa435a6c16c598da241f71c8a1',1,'edash_packager::media::BitReader::SkipBytes()'],['../d9/d46/classedash__packager_1_1media_1_1BufferReader.html#a2b7075e5a47a823b9f66c0ba702f26bf',1,'edash_packager::media::BufferReader::SkipBytes()']]], ['soundmediaheader',['SoundMediaHeader',['../da/db0/structedash__packager_1_1media_1_1mp4_1_1SoundMediaHeader.html',1,'edash_packager::media::mp4']]], ['start',['Start',['../d2/dfd/classedash__packager_1_1media_1_1MediaStream.html#aaf43ae1836aadcc912298c30bc71838a',1,'edash_packager::media::MediaStream']]], ['starttoplevelbox',['StartTopLevelBox',['../db/d6c/classedash__packager_1_1media_1_1mp4_1_1BoxReader.html#a61fc23759071d1445b81cbcc9564c6a4',1,'edash_packager::media::mp4::BoxReader']]], - ['status',['Status',['../d2/d90/classedash__packager_1_1media_1_1Status.html',1,'edash_packager::media']]], ['status',['Status',['../d2/d90/classedash__packager_1_1media_1_1Status.html#ab3b32018b2666a73432b860ed27ec4e2',1,'edash_packager::media::Status::Status()'],['../d2/d90/classedash__packager_1_1media_1_1Status.html#a9688991aab3f7b1db8acc5341b81d160',1,'edash_packager::media::Status::Status(error::Code error_code, const std::string &error_message)']]], + ['status',['Status',['../d2/d90/classedash__packager_1_1media_1_1Status.html',1,'edash_packager::media']]], ['stop',['Stop',['../d5/d02/classedash__packager_1_1media_1_1ProducerConsumerQueue.html#a04f78e0c31398c66f19a24e6a563436b',1,'edash_packager::media::ProducerConsumerQueue']]], ['stopped',['Stopped',['../d5/d02/classedash__packager_1_1media_1_1ProducerConsumerQueue.html#ad36a861f53f0b58d398a14ce2d93d793',1,'edash_packager::media::ProducerConsumerQueue']]], ['streamdescriptor',['StreamDescriptor',['../de/d1f/structedash__packager_1_1media_1_1StreamDescriptor.html',1,'edash_packager::media']]], diff --git a/docs/search/all_13.js b/docs/search/all_13.js index 26eed3ca31..9c05c21d76 100644 --- a/docs/search/all_13.js +++ b/docs/search/all_13.js @@ -7,13 +7,15 @@ var searchData= ['video_5fdescription',['video_description',['../db/d26/classedash__packager_1_1media_1_1mp4_1_1TrackRunIterator.html#a981f52a2e185f5b9f0bf7bb17ff6f3d8',1,'edash_packager::media::mp4::TrackRunIterator']]], ['videomediaheader',['VideoMediaHeader',['../db/df7/structedash__packager_1_1media_1_1mp4_1_1VideoMediaHeader.html',1,'edash_packager::media::mp4']]], ['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']]], ['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']]], + ['vp8parser',['VP8Parser',['../d5/dce/classedash__packager_1_1media_1_1VP8Parser.html',1,'edash_packager::media']]], ['vp9parser',['VP9Parser',['../da/d5f/classedash__packager_1_1media_1_1VP9Parser.html',1,'edash_packager::media']]], ['vpcodecconfiguration',['VPCodecConfiguration',['../d7/d85/classedash__packager_1_1media_1_1VPCodecConfiguration.html',1,'edash_packager::media']]], ['vpxframeinfo',['VPxFrameInfo',['../d8/dfd/structedash__packager_1_1media_1_1VPxFrameInfo.html',1,'edash_packager::media']]], + ['vpxparser',['VPxParser',['../d5/dd2/classedash__packager_1_1media_1_1VPxParser.html',1,'edash_packager::media']]], ['vttadditionaltextbox',['VTTAdditionalTextBox',['../db/d6b/structedash__packager_1_1media_1_1mp4_1_1VTTAdditionalTextBox.html',1,'edash_packager::media::mp4']]], ['vttcuebox',['VTTCueBox',['../d6/d74/structedash__packager_1_1media_1_1mp4_1_1VTTCueBox.html',1,'edash_packager::media::mp4']]], ['vttemptycuebox',['VTTEmptyCueBox',['../d3/d1c/structedash__packager_1_1media_1_1mp4_1_1VTTEmptyCueBox.html',1,'edash_packager::media::mp4']]] diff --git a/docs/search/all_2.js b/docs/search/all_2.js index f51b0740a0..2519f19969 100644 --- a/docs/search/all_2.js +++ b/docs/search/all_2.js @@ -17,7 +17,7 @@ var searchData= ['cluster',['Cluster',['../df/d40/classedash__packager_1_1media_1_1Cluster.html',1,'edash_packager::media']]], ['cluster_5fended',['cluster_ended',['../db/da0/classedash__packager_1_1media_1_1WebMClusterParser.html#ae62be1971c352525906d6fad2ee831bd',1,'edash_packager::media::WebMClusterParser']]], ['clusterbuilder',['ClusterBuilder',['../d3/d69/classedash__packager_1_1media_1_1ClusterBuilder.html',1,'edash_packager::media']]], - ['codec_5fconfig',['codec_config',['../da/d5f/classedash__packager_1_1media_1_1VP9Parser.html#aef742d16d34b6a9480a3f3899e684695',1,'edash_packager::media::VP9Parser']]], + ['codec_5fconfig',['codec_config',['../d5/dd2/classedash__packager_1_1media_1_1VPxParser.html#aeb5310b4c24b3daec6ea9bd0f67aa9a9',1,'edash_packager::media::VPxParser']]], ['codecconfigurationrecord',['CodecConfigurationRecord',['../d1/d31/structedash__packager_1_1media_1_1mp4_1_1CodecConfigurationRecord.html',1,'edash_packager::media::mp4']]], ['compactsamplesize',['CompactSampleSize',['../db/d89/structedash__packager_1_1media_1_1mp4_1_1CompactSampleSize.html',1,'edash_packager::media::mp4']]], ['compositionoffset',['CompositionOffset',['../da/dfe/structedash__packager_1_1media_1_1mp4_1_1CompositionOffset.html',1,'edash_packager::media::mp4']]], diff --git a/docs/search/all_4.js b/docs/search/all_4.js index dc2ae618c6..bc0102cc12 100644 --- a/docs/search/all_4.js +++ b/docs/search/all_4.js @@ -9,7 +9,7 @@ var searchData= ['elementstartnotify',['ElementStartNotify',['../d4/d8c/classedash__packager_1_1media_1_1MkvWriter.html#a03b39cb0e2b2d18b1031363b72ccd837',1,'edash_packager::media::MkvWriter']]], ['empty',['Empty',['../d5/d02/classedash__packager_1_1media_1_1ProducerConsumerQueue.html#a43aa98358d9f8e0f416a6170ae3cb925',1,'edash_packager::media::ProducerConsumerQueue']]], ['encrypt',['Encrypt',['../d6/dc4/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor.html#aa9e31be1aef797b9c06e5f3beb524dc8',1,'edash_packager::media::AesCbcPkcs5Encryptor::Encrypt()'],['../d6/da2/classedash__packager_1_1media_1_1AesCbcCtsEncryptor.html#a8bc803d458d2443cb59d20b6d14c3c30',1,'edash_packager::media::AesCbcCtsEncryptor::Encrypt(const uint8_t *plaintext, size_t size, uint8_t *ciphertext)'],['../d6/da2/classedash__packager_1_1media_1_1AesCbcCtsEncryptor.html#acd3e07715507f0edebf92dc14535aa70',1,'edash_packager::media::AesCbcCtsEncryptor::Encrypt(const std::vector< uint8_t > &plaintext, std::vector< uint8_t > *ciphertext)'],['../d1/d86/classedash__packager_1_1media_1_1RsaPublicKey.html#a287216e5bb6ac3781388db23329a8f27',1,'edash_packager::media::RsaPublicKey::Encrypt()']]], - ['encryptingfragmenter',['EncryptingFragmenter',['../d8/d1e/classedash__packager_1_1media_1_1mp4_1_1EncryptingFragmenter.html#ae4352e452ece69206073274efd855f44',1,'edash_packager::media::mp4::EncryptingFragmenter']]], + ['encryptingfragmenter',['EncryptingFragmenter',['../d8/d1e/classedash__packager_1_1media_1_1mp4_1_1EncryptingFragmenter.html#a7386d0570d277b7e60bc19796e150bbe',1,'edash_packager::media::mp4::EncryptingFragmenter']]], ['encryptingfragmenter',['EncryptingFragmenter',['../d8/d1e/classedash__packager_1_1media_1_1mp4_1_1EncryptingFragmenter.html',1,'edash_packager::media::mp4']]], ['encryptionkey',['EncryptionKey',['../d0/d86/structedash__packager_1_1media_1_1EncryptionKey.html',1,'edash_packager::media']]], ['esdescriptor',['ESDescriptor',['../de/db1/classedash__packager_1_1media_1_1mp4_1_1ESDescriptor.html',1,'edash_packager::media::mp4']]], diff --git a/docs/search/all_8.js b/docs/search/all_8.js index 51937765ce..2daeaf9d2b 100644 --- a/docs/search/all_8.js +++ b/docs/search/all_8.js @@ -10,6 +10,7 @@ var searchData= ['initializewithrandomiv',['InitializeWithRandomIv',['../dd/d79/classedash__packager_1_1media_1_1AesCtrEncryptor.html#a3d1c0717e1310823bd6827299b6050ef',1,'edash_packager::media::AesCtrEncryptor']]], ['iocache',['IoCache',['../d3/d6b/classedash__packager_1_1media_1_1IoCache.html',1,'edash_packager::media']]], ['isaac',['IsAAC',['../de/db1/classedash__packager_1_1media_1_1mp4_1_1ESDescriptor.html#a94db515fdafb0e007981d3c314b7b717',1,'edash_packager::media::mp4::ESDescriptor']]], + ['iskeyframe',['IsKeyframe',['../d5/dce/classedash__packager_1_1media_1_1VP8Parser.html#a4ad8998cac0534124e785f21ccddbf0a',1,'edash_packager::media::VP8Parser::IsKeyframe()'],['../da/d5f/classedash__packager_1_1media_1_1VP9Parser.html#a5d09008aa9c80c28111979479307082c',1,'edash_packager::media::VP9Parser::IsKeyframe()']]], ['isparsingcomplete',['IsParsingComplete',['../d6/dd6/classedash__packager_1_1media_1_1WebMListParser.html#aabb9e87d04df9de57d7069a8943a1711',1,'edash_packager::media::WebMListParser']]], ['isrunvalid',['IsRunValid',['../db/d26/classedash__packager_1_1media_1_1mp4_1_1TrackRunIterator.html#ae06821cd3461cc5b8b6c2c41a286a228',1,'edash_packager::media::mp4::TrackRunIterator']]], ['issamplevalid',['IsSampleValid',['../db/d26/classedash__packager_1_1media_1_1mp4_1_1TrackRunIterator.html#aac5201a3e14e410c805f5f9b58e88c22',1,'edash_packager::media::mp4::TrackRunIterator']]], diff --git a/docs/search/all_9.js b/docs/search/all_9.js index 473fe7a55a..b31f5de1ae 100644 --- a/docs/search/all_9.js +++ b/docs/search/all_9.js @@ -6,7 +6,7 @@ var searchData= ['kdefaultvideobufferdurationinms',['kDefaultVideoBufferDurationInMs',['../db/da0/classedash__packager_1_1media_1_1WebMClusterParser.html#a9a9e4f3a5a1360d947528a553397779ea32a5cc2c19fb1598071109cad939311a',1,'edash_packager::media::WebMClusterParser']]], ['keyfetcher',['KeyFetcher',['../d4/d43/classedash__packager_1_1media_1_1KeyFetcher.html',1,'edash_packager::media']]], ['keyrotationfragmenter',['KeyRotationFragmenter',['../dc/d8a/classedash__packager_1_1media_1_1mp4_1_1KeyRotationFragmenter.html',1,'edash_packager::media::mp4']]], - ['keyrotationfragmenter',['KeyRotationFragmenter',['../dc/d8a/classedash__packager_1_1media_1_1mp4_1_1KeyRotationFragmenter.html#a6f44819eefcc2cd0f3ea925ada7dfdb0',1,'edash_packager::media::mp4::KeyRotationFragmenter']]], + ['keyrotationfragmenter',['KeyRotationFragmenter',['../dc/d8a/classedash__packager_1_1media_1_1mp4_1_1KeyRotationFragmenter.html#a970fbc82214256788fbcf76809de2488',1,'edash_packager::media::mp4::KeyRotationFragmenter']]], ['keysource',['KeySource',['../d9/d8b/classedash__packager_1_1media_1_1KeySource.html',1,'edash_packager::media']]], ['kopusframedurationsmu',['kOpusFrameDurationsMu',['../db/da0/classedash__packager_1_1media_1_1WebMClusterParser.html#ab08c27583d9585af4a71d81bcb4f6772',1,'edash_packager::media::WebMClusterParser']]], ['korderinvalid',['kOrderInvalid',['../df/d30/classedash__packager_1_1media_1_1ContentEncoding.html#a4d87c9881d554fbeb6999280d2e463d1',1,'edash_packager::media::ContentEncoding']]] diff --git a/docs/search/all_e.js b/docs/search/all_e.js index c6dcd43b0c..f60a062795 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()'],['../d6/d5d/classedash__packager_1_1media_1_1HEVCDecoderConfiguration.html#a2b5bd2af5583ef512e8620aabf6afce6',1,'edash_packager::media::HEVCDecoderConfiguration::Parse()'],['../da/d5f/classedash__packager_1_1media_1_1VP9Parser.html#a7c61f40d159dfe7a47a231bef45a9ec0',1,'edash_packager::media::VP9Parser::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()'],['../d2/d51/classedash__packager_1_1media_1_1WebVttMediaParser.html#ad8b4da9e7a78f7c34953ce81ec9817a4',1,'edash_packager::media::WebVttMediaParser::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()'],['../d6/d5d/classedash__packager_1_1media_1_1HEVCDecoderConfiguration.html#a2b5bd2af5583ef512e8620aabf6afce6',1,'edash_packager::media::HEVCDecoderConfiguration::Parse()'],['../d5/dce/classedash__packager_1_1media_1_1VP8Parser.html#acee99f651808400222e4dd6b30ab40eb',1,'edash_packager::media::VP8Parser::Parse()'],['../da/d5f/classedash__packager_1_1media_1_1VP9Parser.html#a8b997dee438daade536e8ea189d110ed',1,'edash_packager::media::VP9Parser::Parse()'],['../d7/d85/classedash__packager_1_1media_1_1VPCodecConfiguration.html#a3428d45e1b7c31fc6dd3bef0c8dc46c7',1,'edash_packager::media::VPCodecConfiguration::Parse()'],['../d5/dd2/classedash__packager_1_1media_1_1VPxParser.html#ac65817688bb225757650c305ad4ec10f',1,'edash_packager::media::VPxParser::Parse()'],['../db/d69/classedash__packager_1_1media_1_1mp2t_1_1AdtsHeader.html#a12f7811f1539361980a13517f948f9fb',1,'edash_packager::media::mp2t::AdtsHeader::Parse()'],['../dc/dab/classedash__packager_1_1media_1_1mp2t_1_1Mp2tMediaParser.html#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()'],['../d2/d51/classedash__packager_1_1media_1_1WebVttMediaParser.html#ad8b4da9e7a78f7c34953ce81ec9817a4',1,'edash_packager::media::WebVttMediaParser::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#a903bda1e35b396e8e182b77b5334e5ba',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 388512e38e..6a3ea67d1e 100644 --- a/docs/search/classes_11.js +++ b/docs/search/classes_11.js @@ -5,9 +5,11 @@ var searchData= ['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']]], + ['vp8parser',['VP8Parser',['../d5/dce/classedash__packager_1_1media_1_1VP8Parser.html',1,'edash_packager::media']]], ['vp9parser',['VP9Parser',['../da/d5f/classedash__packager_1_1media_1_1VP9Parser.html',1,'edash_packager::media']]], ['vpcodecconfiguration',['VPCodecConfiguration',['../d7/d85/classedash__packager_1_1media_1_1VPCodecConfiguration.html',1,'edash_packager::media']]], ['vpxframeinfo',['VPxFrameInfo',['../d8/dfd/structedash__packager_1_1media_1_1VPxFrameInfo.html',1,'edash_packager::media']]], + ['vpxparser',['VPxParser',['../d5/dd2/classedash__packager_1_1media_1_1VPxParser.html',1,'edash_packager::media']]], ['vttadditionaltextbox',['VTTAdditionalTextBox',['../db/d6b/structedash__packager_1_1media_1_1mp4_1_1VTTAdditionalTextBox.html',1,'edash_packager::media::mp4']]], ['vttcuebox',['VTTCueBox',['../d6/d74/structedash__packager_1_1media_1_1mp4_1_1VTTCueBox.html',1,'edash_packager::media::mp4']]], ['vttemptycuebox',['VTTEmptyCueBox',['../d3/d1c/structedash__packager_1_1media_1_1mp4_1_1VTTEmptyCueBox.html',1,'edash_packager::media::mp4']]] diff --git a/docs/search/classes_e.js b/docs/search/classes_e.js index 78aae46478..f2c3f34477 100644 --- a/docs/search/classes_e.js +++ b/docs/search/classes_e.js @@ -12,15 +12,15 @@ var searchData= ['schemeinfo',['SchemeInfo',['../d2/d6f/structedash__packager_1_1media_1_1mp4_1_1SchemeInfo.html',1,'edash_packager::media::mp4']]], ['schemetype',['SchemeType',['../d4/dcc/structedash__packager_1_1media_1_1mp4_1_1SchemeType.html',1,'edash_packager::media::mp4']]], ['seekhead',['SeekHead',['../df/df4/classedash__packager_1_1media_1_1SeekHead.html',1,'edash_packager::media']]], - ['segmenter',['Segmenter',['../dc/de1/classedash__packager_1_1media_1_1mp4_1_1Segmenter.html',1,'edash_packager::media::mp4']]], ['segmenter',['Segmenter',['../da/d14/classedash__packager_1_1media_1_1webm_1_1Segmenter.html',1,'edash_packager::media::webm']]], + ['segmenter',['Segmenter',['../dc/de1/classedash__packager_1_1media_1_1mp4_1_1Segmenter.html',1,'edash_packager::media::mp4']]], ['segmentindex',['SegmentIndex',['../d1/d81/structedash__packager_1_1media_1_1mp4_1_1SegmentIndex.html',1,'edash_packager::media::mp4']]], ['segmentinfo',['SegmentInfo',['../d9/d9b/structedash__packager_1_1SegmentInfo.html',1,'edash_packager']]], ['segmentreference',['SegmentReference',['../d4/dce/structedash__packager_1_1media_1_1mp4_1_1SegmentReference.html',1,'edash_packager::media::mp4']]], ['segmenttype',['SegmentType',['../dd/da6/structedash__packager_1_1media_1_1mp4_1_1SegmentType.html',1,'edash_packager::media::mp4']]], ['simplempdnotifier',['SimpleMpdNotifier',['../db/d56/classedash__packager_1_1SimpleMpdNotifier.html',1,'edash_packager']]], - ['singlesegmentsegmenter',['SingleSegmentSegmenter',['../d0/d03/classedash__packager_1_1media_1_1webm_1_1SingleSegmentSegmenter.html',1,'edash_packager::media::webm']]], ['singlesegmentsegmenter',['SingleSegmentSegmenter',['../da/d75/classedash__packager_1_1media_1_1mp4_1_1SingleSegmentSegmenter.html',1,'edash_packager::media::mp4']]], + ['singlesegmentsegmenter',['SingleSegmentSegmenter',['../d0/d03/classedash__packager_1_1media_1_1webm_1_1SingleSegmentSegmenter.html',1,'edash_packager::media::webm']]], ['soundmediaheader',['SoundMediaHeader',['../da/db0/structedash__packager_1_1media_1_1mp4_1_1SoundMediaHeader.html',1,'edash_packager::media::mp4']]], ['status',['Status',['../d2/d90/classedash__packager_1_1media_1_1Status.html',1,'edash_packager::media']]], ['streamdescriptor',['StreamDescriptor',['../de/d1f/structedash__packager_1_1media_1_1StreamDescriptor.html',1,'edash_packager::media']]], diff --git a/docs/search/functions_1.js b/docs/search/functions_1.js index b1e338776e..3ca10de67e 100644 --- a/docs/search/functions_1.js +++ b/docs/search/functions_1.js @@ -1,6 +1,7 @@ var searchData= [ ['bandwidthestimator',['BandwidthEstimator',['../d2/d6f/classBandwidthEstimator.html#aaae9573785ee9d62e0927f806537ea97',1,'BandwidthEstimator']]], + ['bit_5fposition',['bit_position',['../df/db4/classedash__packager_1_1media_1_1BitReader.html#a475ab08957dc2e7147b64f307bfc90ab',1,'edash_packager::media::BitReader']]], ['bitreader',['BitReader',['../df/db4/classedash__packager_1_1media_1_1BitReader.html#a7cfecfaf6169a0c9286d62b24e7b934e',1,'edash_packager::media::BitReader']]], ['bits_5favailable',['bits_available',['../df/db4/classedash__packager_1_1media_1_1BitReader.html#a1409a0968749ca5a55ba823cd718065b',1,'edash_packager::media::BitReader']]], ['boxbuffer',['BoxBuffer',['../dd/d4f/classedash__packager_1_1media_1_1mp4_1_1BoxBuffer.html#aa1144b8d6912a983d65ff97f44ffeb51',1,'edash_packager::media::mp4::BoxBuffer::BoxBuffer(BoxReader *reader)'],['../dd/d4f/classedash__packager_1_1media_1_1mp4_1_1BoxBuffer.html#a1ecfb419ea348ad684bf3c1556d1570c',1,'edash_packager::media::mp4::BoxBuffer::BoxBuffer(BufferWriter *writer)']]], diff --git a/docs/search/functions_10.js b/docs/search/functions_10.js index ab1334ba9c..4abffacc4a 100644 --- a/docs/search/functions_10.js +++ b/docs/search/functions_10.js @@ -29,7 +29,8 @@ var searchData= ['setstringattribute',['SetStringAttribute',['../dd/d85/classedash__packager_1_1xml_1_1XmlNode.html#a13806def844e3fd8e8cc0e690f292aab',1,'edash_packager::xml::XmlNode']]], ['size',['Size',['../d5/d02/classedash__packager_1_1media_1_1ProducerConsumerQueue.html#aa502e5cfc6159ded7abb3672cdab8cd5',1,'edash_packager::media::ProducerConsumerQueue::Size()'],['../de/d19/classedash__packager_1_1media_1_1File.html#a1bb2a295cb69b3e51b9cc14969848632',1,'edash_packager::media::File::Size()'],['../dd/d98/classedash__packager_1_1media_1_1LocalFile.html#a8984949196dc5230a8ece08c738a9fd3',1,'edash_packager::media::LocalFile::Size()'],['../dc/dfa/classedash__packager_1_1media_1_1ThreadedIoFile.html#af61d3986b87d43e3b5ffd86c86094478',1,'edash_packager::media::ThreadedIoFile::Size()'],['../d8/dc7/classedash__packager_1_1media_1_1UdpFile.html#a8d62376715aee117aa7a225b54be0945',1,'edash_packager::media::UdpFile::Size()'],['../dd/d4f/classedash__packager_1_1media_1_1mp4_1_1BoxBuffer.html#aef7267aa7963866d3dcef4f051f84674',1,'edash_packager::media::mp4::BoxBuffer::Size()']]], ['skipbits',['SkipBits',['../df/db4/classedash__packager_1_1media_1_1BitReader.html#acacb97d71aaae01796b90d27e7cdca0a',1,'edash_packager::media::BitReader']]], - ['skipbytes',['SkipBytes',['../d9/d46/classedash__packager_1_1media_1_1BufferReader.html#a2b7075e5a47a823b9f66c0ba702f26bf',1,'edash_packager::media::BufferReader']]], + ['skipbitsconditional',['SkipBitsConditional',['../df/db4/classedash__packager_1_1media_1_1BitReader.html#a8a7f24cfdc78211fb2c1a0167c8d903e',1,'edash_packager::media::BitReader']]], + ['skipbytes',['SkipBytes',['../df/db4/classedash__packager_1_1media_1_1BitReader.html#a71354dfa435a6c16c598da241f71c8a1',1,'edash_packager::media::BitReader::SkipBytes()'],['../d9/d46/classedash__packager_1_1media_1_1BufferReader.html#a2b7075e5a47a823b9f66c0ba702f26bf',1,'edash_packager::media::BufferReader::SkipBytes()']]], ['start',['Start',['../d2/dfd/classedash__packager_1_1media_1_1MediaStream.html#aaf43ae1836aadcc912298c30bc71838a',1,'edash_packager::media::MediaStream']]], ['starttoplevelbox',['StartTopLevelBox',['../db/d6c/classedash__packager_1_1media_1_1mp4_1_1BoxReader.html#a61fc23759071d1445b81cbcc9564c6a4',1,'edash_packager::media::mp4::BoxReader']]], ['status',['Status',['../d2/d90/classedash__packager_1_1media_1_1Status.html#ab3b32018b2666a73432b860ed27ec4e2',1,'edash_packager::media::Status::Status()'],['../d2/d90/classedash__packager_1_1media_1_1Status.html#a9688991aab3f7b1db8acc5341b81d160',1,'edash_packager::media::Status::Status(error::Code error_code, const std::string &error_message)']]], diff --git a/docs/search/functions_2.js b/docs/search/functions_2.js index 53124f019f..4f82ca64c4 100644 --- a/docs/search/functions_2.js +++ b/docs/search/functions_2.js @@ -9,7 +9,7 @@ var searchData= ['closed',['closed',['../d3/d6b/classedash__packager_1_1media_1_1IoCache.html#a742807639a2983fc05cf058a88bfbe79',1,'edash_packager::media::IoCache']]], ['closurethread',['ClosureThread',['../dd/d2b/classedash__packager_1_1media_1_1ClosureThread.html#a8cbb44ca1f4abd7028ba4602af82de0d',1,'edash_packager::media::ClosureThread']]], ['cluster_5fended',['cluster_ended',['../db/da0/classedash__packager_1_1media_1_1WebMClusterParser.html#ae62be1971c352525906d6fad2ee831bd',1,'edash_packager::media::WebMClusterParser']]], - ['codec_5fconfig',['codec_config',['../da/d5f/classedash__packager_1_1media_1_1VP9Parser.html#aef742d16d34b6a9480a3f3899e684695',1,'edash_packager::media::VP9Parser']]], + ['codec_5fconfig',['codec_config',['../d5/dd2/classedash__packager_1_1media_1_1VPxParser.html#aeb5310b4c24b3daec6ea9bd0f67aa9a9',1,'edash_packager::media::VPxParser']]], ['compositionoffsetiterator',['CompositionOffsetIterator',['../d4/de5/classedash__packager_1_1media_1_1mp4_1_1CompositionOffsetIterator.html#ac81770b820bc9b942c8ed9b8a12969b6',1,'edash_packager::media::mp4::CompositionOffsetIterator']]], ['computesize',['ComputeSize',['../d7/d8a/structedash__packager_1_1media_1_1mp4_1_1Box.html#a9a242fb1434e99256e2a6f4ad294a63d',1,'edash_packager::media::mp4::Box']]], ['connect',['Connect',['../d2/dfd/classedash__packager_1_1media_1_1MediaStream.html#a05b7188c263dc71b00635415bbdfd37f',1,'edash_packager::media::MediaStream']]], diff --git a/docs/search/functions_4.js b/docs/search/functions_4.js index 7ae88a6e83..1248eba91b 100644 --- a/docs/search/functions_4.js +++ b/docs/search/functions_4.js @@ -3,5 +3,5 @@ var searchData= ['elementstartnotify',['ElementStartNotify',['../d4/d8c/classedash__packager_1_1media_1_1MkvWriter.html#a03b39cb0e2b2d18b1031363b72ccd837',1,'edash_packager::media::MkvWriter']]], ['empty',['Empty',['../d5/d02/classedash__packager_1_1media_1_1ProducerConsumerQueue.html#a43aa98358d9f8e0f416a6170ae3cb925',1,'edash_packager::media::ProducerConsumerQueue']]], ['encrypt',['Encrypt',['../d6/dc4/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor.html#aa9e31be1aef797b9c06e5f3beb524dc8',1,'edash_packager::media::AesCbcPkcs5Encryptor::Encrypt()'],['../d6/da2/classedash__packager_1_1media_1_1AesCbcCtsEncryptor.html#a8bc803d458d2443cb59d20b6d14c3c30',1,'edash_packager::media::AesCbcCtsEncryptor::Encrypt(const uint8_t *plaintext, size_t size, uint8_t *ciphertext)'],['../d6/da2/classedash__packager_1_1media_1_1AesCbcCtsEncryptor.html#acd3e07715507f0edebf92dc14535aa70',1,'edash_packager::media::AesCbcCtsEncryptor::Encrypt(const std::vector< uint8_t > &plaintext, std::vector< uint8_t > *ciphertext)'],['../d1/d86/classedash__packager_1_1media_1_1RsaPublicKey.html#a287216e5bb6ac3781388db23329a8f27',1,'edash_packager::media::RsaPublicKey::Encrypt()']]], - ['encryptingfragmenter',['EncryptingFragmenter',['../d8/d1e/classedash__packager_1_1media_1_1mp4_1_1EncryptingFragmenter.html#ae4352e452ece69206073274efd855f44',1,'edash_packager::media::mp4::EncryptingFragmenter']]] + ['encryptingfragmenter',['EncryptingFragmenter',['../d8/d1e/classedash__packager_1_1media_1_1mp4_1_1EncryptingFragmenter.html#a7386d0570d277b7e60bc19796e150bbe',1,'edash_packager::media::mp4::EncryptingFragmenter']]] ]; diff --git a/docs/search/functions_8.js b/docs/search/functions_8.js index 087a7cc93a..4e6656f4d9 100644 --- a/docs/search/functions_8.js +++ b/docs/search/functions_8.js @@ -8,6 +8,7 @@ var searchData= ['initializewithiv',['InitializeWithIv',['../dd/d79/classedash__packager_1_1media_1_1AesCtrEncryptor.html#a7e755a2bc06f35c8b3de9a7ab8b538cd',1,'edash_packager::media::AesCtrEncryptor::InitializeWithIv()'],['../d6/dc4/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor.html#a6a960fa0d83359156cfd6e10167a69e2',1,'edash_packager::media::AesCbcPkcs5Encryptor::InitializeWithIv()'],['../db/dfe/classedash__packager_1_1media_1_1AesCbcPkcs5Decryptor.html#aaa17492b546264e815971e9f6925a460',1,'edash_packager::media::AesCbcPkcs5Decryptor::InitializeWithIv()'],['../d6/da2/classedash__packager_1_1media_1_1AesCbcCtsEncryptor.html#a5f48de14959ae35fdd9e2e95ab0274b4',1,'edash_packager::media::AesCbcCtsEncryptor::InitializeWithIv()'],['../dd/d96/classedash__packager_1_1media_1_1AesCbcCtsDecryptor.html#a4ae122dc7410cccec81eabbffa7601da',1,'edash_packager::media::AesCbcCtsDecryptor::InitializeWithIv()']]], ['initializewithrandomiv',['InitializeWithRandomIv',['../dd/d79/classedash__packager_1_1media_1_1AesCtrEncryptor.html#a3d1c0717e1310823bd6827299b6050ef',1,'edash_packager::media::AesCtrEncryptor']]], ['isaac',['IsAAC',['../de/db1/classedash__packager_1_1media_1_1mp4_1_1ESDescriptor.html#a94db515fdafb0e007981d3c314b7b717',1,'edash_packager::media::mp4::ESDescriptor']]], + ['iskeyframe',['IsKeyframe',['../d5/dce/classedash__packager_1_1media_1_1VP8Parser.html#a4ad8998cac0534124e785f21ccddbf0a',1,'edash_packager::media::VP8Parser::IsKeyframe()'],['../da/d5f/classedash__packager_1_1media_1_1VP9Parser.html#a5d09008aa9c80c28111979479307082c',1,'edash_packager::media::VP9Parser::IsKeyframe()']]], ['isparsingcomplete',['IsParsingComplete',['../d6/dd6/classedash__packager_1_1media_1_1WebMListParser.html#aabb9e87d04df9de57d7069a8943a1711',1,'edash_packager::media::WebMListParser']]], ['isrunvalid',['IsRunValid',['../db/d26/classedash__packager_1_1media_1_1mp4_1_1TrackRunIterator.html#ae06821cd3461cc5b8b6c2c41a286a228',1,'edash_packager::media::mp4::TrackRunIterator']]], ['issamplevalid',['IsSampleValid',['../db/d26/classedash__packager_1_1media_1_1mp4_1_1TrackRunIterator.html#aac5201a3e14e410c805f5f9b58e88c22',1,'edash_packager::media::mp4::TrackRunIterator']]], diff --git a/docs/search/functions_9.js b/docs/search/functions_9.js index 6f4f8a2539..60605d3f0c 100644 --- a/docs/search/functions_9.js +++ b/docs/search/functions_9.js @@ -1,4 +1,4 @@ var searchData= [ - ['keyrotationfragmenter',['KeyRotationFragmenter',['../dc/d8a/classedash__packager_1_1media_1_1mp4_1_1KeyRotationFragmenter.html#a6f44819eefcc2cd0f3ea925ada7dfdb0',1,'edash_packager::media::mp4::KeyRotationFragmenter']]] + ['keyrotationfragmenter',['KeyRotationFragmenter',['../dc/d8a/classedash__packager_1_1media_1_1mp4_1_1KeyRotationFragmenter.html#a970fbc82214256788fbcf76809de2488',1,'edash_packager::media::mp4::KeyRotationFragmenter']]] ]; diff --git a/docs/search/functions_e.js b/docs/search/functions_e.js index 15845a93af..659f38bc21 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()'],['../d6/d5d/classedash__packager_1_1media_1_1HEVCDecoderConfiguration.html#a2b5bd2af5583ef512e8620aabf6afce6',1,'edash_packager::media::HEVCDecoderConfiguration::Parse()'],['../da/d5f/classedash__packager_1_1media_1_1VP9Parser.html#a7c61f40d159dfe7a47a231bef45a9ec0',1,'edash_packager::media::VP9Parser::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()'],['../d2/d51/classedash__packager_1_1media_1_1WebVttMediaParser.html#ad8b4da9e7a78f7c34953ce81ec9817a4',1,'edash_packager::media::WebVttMediaParser::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()'],['../d6/d5d/classedash__packager_1_1media_1_1HEVCDecoderConfiguration.html#a2b5bd2af5583ef512e8620aabf6afce6',1,'edash_packager::media::HEVCDecoderConfiguration::Parse()'],['../d5/dce/classedash__packager_1_1media_1_1VP8Parser.html#acee99f651808400222e4dd6b30ab40eb',1,'edash_packager::media::VP8Parser::Parse()'],['../da/d5f/classedash__packager_1_1media_1_1VP9Parser.html#a8b997dee438daade536e8ea189d110ed',1,'edash_packager::media::VP9Parser::Parse()'],['../d7/d85/classedash__packager_1_1media_1_1VPCodecConfiguration.html#a3428d45e1b7c31fc6dd3bef0c8dc46c7',1,'edash_packager::media::VPCodecConfiguration::Parse()'],['../d5/dd2/classedash__packager_1_1media_1_1VPxParser.html#ac65817688bb225757650c305ad4ec10f',1,'edash_packager::media::VPxParser::Parse()'],['../db/d69/classedash__packager_1_1media_1_1mp2t_1_1AdtsHeader.html#a12f7811f1539361980a13517f948f9fb',1,'edash_packager::media::mp2t::AdtsHeader::Parse()'],['../dc/dab/classedash__packager_1_1media_1_1mp2t_1_1Mp2tMediaParser.html#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()'],['../d2/d51/classedash__packager_1_1media_1_1WebVttMediaParser.html#ad8b4da9e7a78f7c34953ce81ec9817a4',1,'edash_packager::media::WebVttMediaParser::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#a903bda1e35b396e8e182b77b5334e5ba',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']]],