diff --git a/docs/annotated.html b/docs/annotated.html index 3b55ace4aa..79315054ca 100644 --- a/docs/annotated.html +++ b/docs/annotated.html @@ -219,101 +219,104 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); ||oCLibcryptoThreadingConvenience class which initializes and terminates libcrypto threading ||oCStreamDescriptor ||oCStreamDescriptorCompareFn -||oCAesCtrEncryptor -||oCAesCbcPkcs5Encryptor +||oCAesDecryptor +||oCAesCtrDecryptor ||oCAesCbcPkcs5Decryptor -||oCAesCbcCtsEncryptor -||oCAesCbcCtsDecryptor -||oCAudioStreamInfoHolds audio stream information -||oCAudioTimestampHelper -||oCBitReaderA class to read bit streams -||oCBufferReader -||oCBufferWriter -||oCByteQueue -||oCClosureThread -||oCSubsampleEntry -||oCDecryptConfig -||oCDecryptorSourceDecryptorSource wraps KeySource and is responsible for decryptor management -||oCDemuxer -||oCHttpKeyFetcher -||oCKeyFetcherBase class for fetching keys from the license service -||oCEncryptionKey -||oCKeySourceKeySource is responsible for encryption key acquisition -||oCMediaParser -||oCMediaSampleClass to hold a media sample -||oCMediaStream -||oCMuxer -||oCMuxerOptionsThis structure contains the list of configuration options for Muxer -||oCOffsetByteQueue -||oCProducerConsumerQueue -||oCProtectionSystemSpecificInfo -||oCRequestSignerAbstract class used for signature generation -||oCAesRequestSignerAesRequestSigner uses AES-CBC signing -||oCRsaRequestSignerRsaRequestSigner uses RSA-PSS signing -||oCRsaPrivateKeyRsa private key, used for message signing and decryption -||oCRsaPublicKeyRsa public key, used for signature verification and encryption -||oCStatus -||oCStreamInfoAbstract class holds stream information -||oCTextStreamInfo -||oCTextTrack -||oCTextTrackConfig -||oCVideoStreamInfoHolds video stream information -||oCWidevineKeySource -||oCMpdNotifyMuxerListener -||oCMuxerListener -||oCVideoStreamInfoParameters -||oCOnMediaEndParameters -||oCProgressListenerThis class listens to progress updates events -||oCVodMediaInfoDumpMuxerListener -||oCFileDefine an abstract file interface -||oCFileCloser -||oCIoCacheDeclaration of class which implements a thread-safe circular buffer -||oCLocalFileImplement LocalFile which deals with local storage -||oCMemoryFile -||oCThreadedIoFileDeclaration of class which implements a thread-safe circular buffer -||oCUdpFileImplements UdpFile, which receives UDP unicast and multicast streams -||oCAVCDecoderConfigurationClass for parsing AVC decoder configuration -||oCDecoderConfiguration -||oCH264ByteToUnitStreamConverter -||oCH264Sps -||oCH264Pps -||oCH264ModificationOfPicNum -||oCH264WeightingFactors -||oCH264DecRefPicMarking -||oCH264SliceHeader -||oCH264SEIRecoveryPoint -||oCH264SEIMessage -||oCH264Parser -||oCH26xBitReader -||oCHEVCDecoderConfigurationClass for parsing HEVC decoder configuration -||oCNalUnitToByteStreamConverter -||oCNalu -||oCNaluReader -||oCVP8Parser -||oCVP9ParserClass to parse a vp9 bit stream -||oCVPCodecConfigurationClass for parsing or writing VP codec configuration data -||oCVPxFrameInfo -||oCVPxParser -||oCCluster -||oCClusterBuilder -||oCMkvWriterAn implementation of IMkvWriter using our File type -||oCSeekHead -||oCSegmentTestBase -|||\CClusterParser -||oCTracksBuilder -||oCWebMAudioClientHelper class used to parse an Audio element inside a TrackEntry element -||oCWebMClusterParser -||oCContentEncoding -||oCWebMContentEncodingsClientParser for WebM ContentEncodings element -||oCWebMInfoParserParser for WebM Info element -||oCWebMMediaParser -||oCWebMParserClient -||oCWebMListParser -||oCWebMTracksParserParser for WebM Tracks element -||oCWebMVideoClientHelper class used to parse a Video element inside a TrackEntry element -||oCWebMWebVTTParser -||oCCue -||\CWebVttMediaParser +||oCAesCbcCtsDecryptor +||oCAesEncryptor +||oCAesCtrEncryptor +||oCAesCbcPkcs5Encryptor +||oCAesCbcCtsEncryptor +||oCAudioStreamInfoHolds audio stream information +||oCAudioTimestampHelper +||oCBitReaderA class to read bit streams +||oCBufferReader +||oCBufferWriter +||oCByteQueue +||oCClosureThread +||oCSubsampleEntry +||oCDecryptConfig +||oCDecryptorSourceDecryptorSource wraps KeySource and is responsible for decryptor management +||oCDemuxer +||oCHttpKeyFetcher +||oCKeyFetcherBase class for fetching keys from the license service +||oCEncryptionKey +||oCKeySourceKeySource is responsible for encryption key acquisition +||oCMediaParser +||oCMediaSampleClass to hold a media sample +||oCMediaStream +||oCMuxer +||oCMuxerOptionsThis structure contains the list of configuration options for Muxer +||oCOffsetByteQueue +||oCProducerConsumerQueue +||oCProtectionSystemSpecificInfo +||oCRequestSignerAbstract class used for signature generation +||oCAesRequestSignerAesRequestSigner uses AES-CBC signing +||oCRsaRequestSignerRsaRequestSigner uses RSA-PSS signing +||oCRsaPrivateKeyRsa private key, used for message signing and decryption +||oCRsaPublicKeyRsa public key, used for signature verification and encryption +||oCStatus +||oCStreamInfoAbstract class holds stream information +||oCTextStreamInfo +||oCTextTrack +||oCTextTrackConfig +||oCVideoStreamInfoHolds video stream information +||oCWidevineKeySource +||oCMpdNotifyMuxerListener +||oCMuxerListener +||oCVideoStreamInfoParameters +||oCOnMediaEndParameters +||oCProgressListenerThis class listens to progress updates events +||oCVodMediaInfoDumpMuxerListener +||oCFileDefine an abstract file interface +||oCFileCloser +||oCIoCacheDeclaration of class which implements a thread-safe circular buffer +||oCLocalFileImplement LocalFile which deals with local storage +||oCMemoryFile +||oCThreadedIoFileDeclaration of class which implements a thread-safe circular buffer +||oCUdpFileImplements UdpFile, which receives UDP unicast and multicast streams +||oCAVCDecoderConfigurationClass for parsing AVC decoder configuration +||oCDecoderConfiguration +||oCH264ByteToUnitStreamConverter +||oCH264Sps +||oCH264Pps +||oCH264ModificationOfPicNum +||oCH264WeightingFactors +||oCH264DecRefPicMarking +||oCH264SliceHeader +||oCH264SEIRecoveryPoint +||oCH264SEIMessage +||oCH264Parser +||oCH26xBitReader +||oCHEVCDecoderConfigurationClass for parsing HEVC decoder configuration +||oCNalUnitToByteStreamConverter +||oCNalu +||oCNaluReader +||oCVP8Parser +||oCVP9ParserClass to parse a vp9 bit stream +||oCVPCodecConfigurationClass for parsing or writing VP codec configuration data +||oCVPxFrameInfo +||oCVPxParser +||oCCluster +||oCClusterBuilder +||oCMkvWriterAn implementation of IMkvWriter using our File type +||oCSeekHead +||oCSegmentTestBase +|||\CClusterParser +||oCTracksBuilder +||oCWebMAudioClientHelper class used to parse an Audio element inside a TrackEntry element +||oCWebMClusterParser +||oCContentEncoding +||oCWebMContentEncodingsClientParser for WebM ContentEncodings element +||oCWebMInfoParserParser for WebM Info element +||oCWebMMediaParser +||oCWebMParserClient +||oCWebMListParser +||oCWebMTracksParserParser for WebM Tracks element +||oCWebMVideoClientHelper class used to parse a Video element inside a TrackEntry element +||oCWebMWebVTTParser +||oCCue +||\CWebVttMediaParser |oNxml ||oCXmlDeleter ||oCXmlNode @@ -343,7 +346,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/classes.html b/docs/classes.html index 9c6805d68a..1148410cfa 100644 --- a/docs/classes.html +++ b/docs/classes.html @@ -89,90 +89,91 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
A | B | C | D | E | F | H | I | K | L | M | N | O | P | R | S | T | U | V | W | X
- - - - - + + + + - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + - - - - - - - - + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - + + + +
  A  
-
DecoderConfiguration (edash_packager::media)   
  L  
-
ProgressListener (edash_packager::media)   TrackEncryption (edash_packager::media::mp4)   
DecodingTime (edash_packager::media::mp4)   ProtectionSchemeInfo (edash_packager::media::mp4)   TrackExtends (edash_packager::media::mp4)   
AACAudioSpecificConfig (edash_packager::media::mp4)   DecodingTimeIterator (edash_packager::media::mp4)   Language (edash_packager::media::mp4)   ProtectionSystemSpecificHeader (edash_packager::media::mp4)   TrackFragment (edash_packager::media::mp4)   
AC3Specific (edash_packager::media::mp4)   DecodingTimeToSample (edash_packager::media::mp4)   LibcryptoThreading (edash_packager::media)   ProtectionSystemSpecificInfo (edash_packager::media)   TrackFragmentDecodeTime (edash_packager::media::mp4)   
AdaptationSet (edash_packager)   DecryptConfig (edash_packager::media)   LocalFile (edash_packager::media)   
  R  
-
TrackFragmentHeader (edash_packager::media::mp4)   
AdaptationSetXmlNode (edash_packager::xml)   DecryptorSource (edash_packager::media)   
  M  
+
DataInformation (edash_packager::media::mp4)   KeySource (edash_packager::media)   ProgressListener (edash_packager::media)   TrackExtends (edash_packager::media::mp4)   
DataReference (edash_packager::media::mp4)   
  L  
+
ProtectionSchemeInfo (edash_packager::media::mp4)   TrackFragment (edash_packager::media::mp4)   
AACAudioSpecificConfig (edash_packager::media::mp4)   DecoderConfiguration (edash_packager::media)   ProtectionSystemSpecificHeader (edash_packager::media::mp4)   TrackFragmentDecodeTime (edash_packager::media::mp4)   
AC3Specific (edash_packager::media::mp4)   DecodingTime (edash_packager::media::mp4)   Language (edash_packager::media::mp4)   ProtectionSystemSpecificInfo (edash_packager::media)   TrackFragmentHeader (edash_packager::media::mp4)   
AdaptationSet (edash_packager)   DecodingTimeIterator (edash_packager::media::mp4)   LibcryptoThreading (edash_packager::media)   
  R  
TrackFragmentRun (edash_packager::media::mp4)   
AdtsHeader (edash_packager::media::mp2t)   Demuxer (edash_packager::media)   Representation (edash_packager)   TrackHeader (edash_packager::media::mp4)   
AesCbcCtsDecryptor (edash_packager::media)   DemuxStreamIdMediaSample (edash_packager::media::wvm)   Media (edash_packager::media::mp4)   RepresentationBaseXmlNode (edash_packager::xml)   TrackRunIterator (edash_packager::media::mp4)   
AesCbcCtsEncryptor (edash_packager::media)   DTSSpecific (edash_packager::media::mp4)   MediaData (edash_packager::media::mp4)   RepresentationStateChangeListener (edash_packager)   TracksBuilder (edash_packager::media)   
AesCbcPkcs5Decryptor (edash_packager::media)   
  E  
-
MediaHeader (edash_packager::media::mp4)   RepresentationXmlNode (edash_packager::xml)   TsPacket (edash_packager::media::mp2t)   
AesCbcPkcs5Encryptor (edash_packager::media)   MediaInformation (edash_packager::media::mp4)   RequestSigner (edash_packager::media)   TsSection (edash_packager::media::mp2t)   
AesCtrEncryptor (edash_packager::media)   EC3Specific (edash_packager::media::mp4)   MediaParser (edash_packager::media)   RsaPrivateKey (edash_packager::media)   TsSectionPat (edash_packager::media::mp2t)   
AesRequestSigner (edash_packager::media)   Edit (edash_packager::media::mp4)   MediaSample (edash_packager::media)   RsaPublicKey (edash_packager::media)   TsSectionPes (edash_packager::media::mp2t)   
AudioSampleEntry (edash_packager::media::mp4)   EditList (edash_packager::media::mp4)   MediaStream (edash_packager::media)   RsaRequestSigner (edash_packager::media)   TsSectionPmt (edash_packager::media::mp2t)   
AudioStreamInfo (edash_packager::media)   EditListEntry (edash_packager::media::mp4)   MemoryFile (edash_packager::media)   
  S  
-
TsSectionPsi (edash_packager::media::mp2t)   
AudioTimestampHelper (edash_packager::media)   Element (edash_packager)   Metadata (edash_packager::media::mp4)   TwoPassSingleSegmentSegmenter (edash_packager::media::webm)   
AVCDecoderConfiguration (edash_packager::media)   ElementaryStreamDescriptor (edash_packager::media::mp4)   MkvWriter (edash_packager::media)   SampleAuxiliaryInformationOffset (edash_packager::media::mp4)   
  U  
+
AdaptationSetXmlNode (edash_packager::xml)   DecodingTimeToSample (edash_packager::media::mp4)   LocalFile (edash_packager::media)   TrackHeader (edash_packager::media::mp4)   
AdtsHeader (edash_packager::media::mp2t)   DecryptConfig (edash_packager::media)   
  M  
+
Representation (edash_packager)   TrackRunIterator (edash_packager::media::mp4)   
AesCbcCtsDecryptor (edash_packager::media)   DecryptorSource (edash_packager::media)   RepresentationBaseXmlNode (edash_packager::xml)   TracksBuilder (edash_packager::media)   
AesCbcCtsEncryptor (edash_packager::media)   Demuxer (edash_packager::media)   Media (edash_packager::media::mp4)   RepresentationStateChangeListener (edash_packager)   TsPacket (edash_packager::media::mp2t)   
AesCbcPkcs5Decryptor (edash_packager::media)   DemuxStreamIdMediaSample (edash_packager::media::wvm)   MediaData (edash_packager::media::mp4)   RepresentationXmlNode (edash_packager::xml)   TsSection (edash_packager::media::mp2t)   
AesCbcPkcs5Encryptor (edash_packager::media)   DTSSpecific (edash_packager::media::mp4)   MediaHeader (edash_packager::media::mp4)   RequestSigner (edash_packager::media)   TsSectionPat (edash_packager::media::mp2t)   
AesCtrDecryptor (edash_packager::media)   
  E  
+
MediaInformation (edash_packager::media::mp4)   RsaPrivateKey (edash_packager::media)   TsSectionPes (edash_packager::media::mp2t)   
AesCtrEncryptor (edash_packager::media)   MediaParser (edash_packager::media)   RsaPublicKey (edash_packager::media)   TsSectionPmt (edash_packager::media::mp2t)   
AesDecryptor (edash_packager::media)   EC3Specific (edash_packager::media::mp4)   MediaSample (edash_packager::media)   RsaRequestSigner (edash_packager::media)   TsSectionPsi (edash_packager::media::mp2t)   
AesEncryptor (edash_packager::media)   Edit (edash_packager::media::mp4)   MediaStream (edash_packager::media)   
  S  
+
TwoPassSingleSegmentSegmenter (edash_packager::media::webm)   
AesRequestSigner (edash_packager::media)   EditList (edash_packager::media::mp4)   MemoryFile (edash_packager::media)   
  U  
AudioSampleEntry (edash_packager::media::mp4)   EditListEntry (edash_packager::media::mp4)   Metadata (edash_packager::media::mp4)   SampleAuxiliaryInformationOffset (edash_packager::media::mp4)   
AudioStreamInfo (edash_packager::media)   Element (edash_packager)   MkvWriter (edash_packager::media)   SampleAuxiliaryInformationSize (edash_packager::media::mp4)   UdpFile (edash_packager::media)   
AudioTimestampHelper (edash_packager::media)   ElementaryStreamDescriptor (edash_packager::media::mp4)   MockAdaptationSet (edash_packager)   SampleDescription (edash_packager::media::mp4)   
  V  
+
AVCDecoderConfiguration (edash_packager::media)   EncryptingFragmenter (edash_packager::media::mp4)   MockMpdBuilder (edash_packager)   SampleEncryption (edash_packager::media::mp4)   
  B  
-
EncryptingFragmenter (edash_packager::media::mp4)   MockAdaptationSet (edash_packager)   SampleAuxiliaryInformationSize (edash_packager::media::mp4)   
EncryptionKey (edash_packager::media)   MockMpdBuilder (edash_packager)   SampleDescription (edash_packager::media::mp4)   UdpFile (edash_packager::media)   
BandwidthEstimator   Encryptor (edash_packager::media::webm)   MockMpdNotifier (edash_packager)   SampleEncryption (edash_packager::media::mp4)   
  V  
-
BitReader (edash_packager::media)   ESDescriptor (edash_packager::media::mp4)   MockRepresentation (edash_packager)   SampleEncryptionEntry (edash_packager::media::mp4)   
Box (edash_packager::media::mp4)   EsParser (edash_packager::media::mp2t)   Movie (edash_packager::media::mp4)   SampleGroupDescription (edash_packager::media::mp4)   VideoMediaHeader (edash_packager::media::mp4)   
BoxBuffer (edash_packager::media::mp4)   EsParserAdts (edash_packager::media::mp2t)   MovieExtends (edash_packager::media::mp4)   SampleSize (edash_packager::media::mp4)   VideoSampleEntry (edash_packager::media::mp4)   
BoxReader (edash_packager::media::mp4)   EsParserH264 (edash_packager::media::mp2t)   MovieExtendsHeader (edash_packager::media::mp4)   SampleTable (edash_packager::media::mp4)   VideoSliceHeaderParser (edash_packager::media::mp4)   
BufferReader (edash_packager::media)   
  F  
-
MovieFragment (edash_packager::media::mp4)   SampleToChunk (edash_packager::media::mp4)   VideoStreamInfo (edash_packager::media)   
BufferWriter (edash_packager::media)   MovieFragmentHeader (edash_packager::media::mp4)   SampleToGroup (edash_packager::media::mp4)   VideoStreamInfoParameters (edash_packager::media)   
ByteQueue (edash_packager::media)   File (edash_packager::media)   MovieHeader (edash_packager::media::mp4)   SampleToGroupEntry (edash_packager::media::mp4)   VodMediaInfoDumpMuxerListener (edash_packager::media)   
EncryptionKey (edash_packager::media)   MockMpdNotifier (edash_packager)   SampleEncryptionEntry (edash_packager::media::mp4)   VideoMediaHeader (edash_packager::media::mp4)   
Encryptor (edash_packager::media::webm)   MockRepresentation (edash_packager)   SampleGroupDescription (edash_packager::media::mp4)   VideoSampleEntry (edash_packager::media::mp4)   
BandwidthEstimator   ESDescriptor (edash_packager::media::mp4)   Movie (edash_packager::media::mp4)   SampleSize (edash_packager::media::mp4)   VideoSliceHeaderParser (edash_packager::media::mp4)   
BitReader (edash_packager::media)   EsParser (edash_packager::media::mp2t)   MovieExtends (edash_packager::media::mp4)   SampleTable (edash_packager::media::mp4)   VideoStreamInfo (edash_packager::media)   
Box (edash_packager::media::mp4)   EsParserAdts (edash_packager::media::mp2t)   MovieExtendsHeader (edash_packager::media::mp4)   SampleToChunk (edash_packager::media::mp4)   VideoStreamInfoParameters (edash_packager::media)   
BoxBuffer (edash_packager::media::mp4)   EsParserH264 (edash_packager::media::mp2t)   MovieFragment (edash_packager::media::mp4)   SampleToGroup (edash_packager::media::mp4)   VodMediaInfoDumpMuxerListener (edash_packager::media)   
BoxReader (edash_packager::media::mp4)   
  F  
+
MovieFragmentHeader (edash_packager::media::mp4)   SampleToGroupEntry (edash_packager::media::mp4)   VP8Parser (edash_packager::media)   
BufferReader (edash_packager::media)   MovieHeader (edash_packager::media::mp4)   SchemeInfo (edash_packager::media::mp4)   VP9Parser (edash_packager::media)   
BufferWriter (edash_packager::media)   File (edash_packager::media)   Mp2tMediaParser (edash_packager::media::mp2t)   SchemeType (edash_packager::media::mp4)   VPCodecConfiguration (edash_packager::media)   
ByteQueue (edash_packager::media)   FileCloser (edash_packager::media)   MP4MediaParser (edash_packager::media::mp4)   SeekHead (edash_packager::media)   VPxFrameInfo (edash_packager::media)   
  C  
-
FileCloser (edash_packager::media)   Mp2tMediaParser (edash_packager::media::mp2t)   SchemeInfo (edash_packager::media::mp4)   VP8Parser (edash_packager::media)   
FileType (edash_packager::media::mp4)   MP4MediaParser (edash_packager::media::mp4)   SchemeType (edash_packager::media::mp4)   VP9Parser (edash_packager::media)   
CencSampleEncryptionInfoEntry (edash_packager::media::mp4)   Fragmenter (edash_packager::media::mp4)   MP4Muxer (edash_packager::media::mp4)   SeekHead (edash_packager::media)   VPCodecConfiguration (edash_packager::media)   
ChunkInfo (edash_packager::media::mp4)   FullBox (edash_packager::media::mp4)   MpdBuilder (edash_packager)   Segmenter (edash_packager::media::mp4)   VPxFrameInfo (edash_packager::media)   
ChunkInfoIterator (edash_packager::media::mp4)   
  H  
-
MpdNotifier (edash_packager)   Segmenter (edash_packager::media::webm)   VPxParser (edash_packager::media)   
ChunkLargeOffset (edash_packager::media::mp4)   MpdNotifierFactory (edash_packager)   SegmentIndex (edash_packager::media::mp4)   VTTAdditionalTextBox (edash_packager::media::mp4)   
ChunkOffset (edash_packager::media::mp4)   H264ByteToUnitStreamConverter (edash_packager::media)   MpdNotifyMuxerListener (edash_packager::media)   SegmentInfo (edash_packager)   VTTCueBox (edash_packager::media::mp4)   
ClosureThread (edash_packager::media)   H264DecRefPicMarking (edash_packager::media)   MpdOptions (edash_packager)   SegmentReference (edash_packager::media::mp4)   VTTEmptyCueBox (edash_packager::media::mp4)   
Cluster (edash_packager::media)   H264ModificationOfPicNum (edash_packager::media)   MpdWriter (edash_packager)   SegmentTestBase (edash_packager::media)   
  W  
+
FileType (edash_packager::media::mp4)   MP4Muxer (edash_packager::media::mp4)   Segmenter (edash_packager::media::mp4)   VPxParser (edash_packager::media)   
Fragmenter (edash_packager::media::mp4)   MpdBuilder (edash_packager)   Segmenter (edash_packager::media::webm)   VTTAdditionalTextBox (edash_packager::media::mp4)   
CencSampleEncryptionInfoEntry (edash_packager::media::mp4)   FullBox (edash_packager::media::mp4)   MpdNotifier (edash_packager)   SegmentIndex (edash_packager::media::mp4)   VTTCueBox (edash_packager::media::mp4)   
ChunkInfo (edash_packager::media::mp4)   
  H  
+
MpdNotifierFactory (edash_packager)   SegmentInfo (edash_packager)   VTTEmptyCueBox (edash_packager::media::mp4)   
ChunkInfoIterator (edash_packager::media::mp4)   MpdNotifyMuxerListener (edash_packager::media)   SegmentReference (edash_packager::media::mp4)   
  W  
ClusterBuilder (edash_packager::media)   H264Parser (edash_packager::media)   MultiSegmentSegmenter (edash_packager::media::mp4)   SegmentType (edash_packager::media::mp4)   
SegmentTestBase::ClusterParser (edash_packager::media)   H264Pps (edash_packager::media)   MultiSegmentSegmenter (edash_packager::media::webm)   SimpleMpdNotifier (edash_packager)   WebMAudioClient (edash_packager::media)   
CodecConfigurationRecord (edash_packager::media::mp4)   H264SEIMessage (edash_packager::media)   Muxer (edash_packager::media)   SingleSegmentSegmenter (edash_packager::media::webm)   WebMClusterParser (edash_packager::media)   
CompactSampleSize (edash_packager::media::mp4)   H264SEIRecoveryPoint (edash_packager::media)   MuxerListener (edash_packager::media)   SingleSegmentSegmenter (edash_packager::media::mp4)   WebMContentEncodingsClient (edash_packager::media)   
CompositionOffset (edash_packager::media::mp4)   H264SliceHeader (edash_packager::media)   MuxerOptions (edash_packager::media)   SoundMediaHeader (edash_packager::media::mp4)   WebMInfoParser (edash_packager::media)   
CompositionOffsetIterator (edash_packager::media::mp4)   H264Sps (edash_packager::media)   
  N  
-
Status (edash_packager::media)   WebMListParser (edash_packager::media)   
CompositionTimeToSample (edash_packager::media::mp4)   H264VideoSliceHeaderParser (edash_packager::media::mp4)   StreamDescriptor (edash_packager::media)   WebMMediaParser (edash_packager::media)   
ContentEncoding (edash_packager::media)   H264WeightingFactors (edash_packager::media)   Nalu (edash_packager::media)   StreamDescriptorCompareFn (edash_packager::media)   WebMMuxer (edash_packager::media::webm)   
ContentProtectionElement (edash_packager)   H26xBitReader (edash_packager::media)   NalUnitToByteStreamConverter (edash_packager::media)   StreamInfo (edash_packager::media)   WebMParserClient (edash_packager::media)   
Cue (edash_packager::media)   HandlerReference (edash_packager::media::mp4)   NaluReader (edash_packager::media)   SubsampleEntry (edash_packager::media)   WebMTracksParser (edash_packager::media)   
CueIDBox (edash_packager::media::mp4)   HEVCDecoderConfiguration (edash_packager::media)   
  O  
-
SubtitleMediaHeader (edash_packager::media::mp4)   WebMVideoClient (edash_packager::media)   
CuePayloadBox (edash_packager::media::mp4)   HttpKeyFetcher (edash_packager::media)   SyncSample (edash_packager::media::mp4)   WebMWebVTTParser (edash_packager::media)   
CueSettingsBox (edash_packager::media::mp4)   
  I  
-
OffsetByteQueue (edash_packager::media)   SyncSampleIterator (edash_packager::media::mp4)   WebVTTConfigurationBox (edash_packager::media::mp4)   
CueSourceIDBox (edash_packager::media::mp4)   OnMediaEndParameters (edash_packager::media)   
  T  
-
WebVttMediaParser (edash_packager::media)   
CueTimeBox (edash_packager::media::mp4)   ID3v2 (edash_packager::media::mp4)   OriginalFormat (edash_packager::media::mp4)   WebVTTSourceLabelBox (edash_packager::media::mp4)   
ChunkLargeOffset (edash_packager::media::mp4)   H264ByteToUnitStreamConverter (edash_packager::media)   MpdOptions (edash_packager)   SegmentTestBase (edash_packager::media)   
ChunkOffset (edash_packager::media::mp4)   H264DecRefPicMarking (edash_packager::media)   MpdWriter (edash_packager)   SegmentType (edash_packager::media::mp4)   WebMAudioClient (edash_packager::media)   
ClosureThread (edash_packager::media)   H264ModificationOfPicNum (edash_packager::media)   MultiSegmentSegmenter (edash_packager::media::webm)   SimpleMpdNotifier (edash_packager)   WebMClusterParser (edash_packager::media)   
Cluster (edash_packager::media)   H264Parser (edash_packager::media)   MultiSegmentSegmenter (edash_packager::media::mp4)   SingleSegmentSegmenter (edash_packager::media::webm)   WebMContentEncodingsClient (edash_packager::media)   
ClusterBuilder (edash_packager::media)   H264Pps (edash_packager::media)   Muxer (edash_packager::media)   SingleSegmentSegmenter (edash_packager::media::mp4)   WebMInfoParser (edash_packager::media)   
SegmentTestBase::ClusterParser (edash_packager::media)   H264SEIMessage (edash_packager::media)   MuxerListener (edash_packager::media)   SoundMediaHeader (edash_packager::media::mp4)   WebMListParser (edash_packager::media)   
CodecConfigurationRecord (edash_packager::media::mp4)   H264SEIRecoveryPoint (edash_packager::media)   MuxerOptions (edash_packager::media)   Status (edash_packager::media)   WebMMediaParser (edash_packager::media)   
CompactSampleSize (edash_packager::media::mp4)   H264SliceHeader (edash_packager::media)   
  N  
+
StreamDescriptor (edash_packager::media)   WebMMuxer (edash_packager::media::webm)   
CompositionOffset (edash_packager::media::mp4)   H264Sps (edash_packager::media)   StreamDescriptorCompareFn (edash_packager::media)   WebMParserClient (edash_packager::media)   
CompositionOffsetIterator (edash_packager::media::mp4)   H264VideoSliceHeaderParser (edash_packager::media::mp4)   Nalu (edash_packager::media)   StreamInfo (edash_packager::media)   WebMTracksParser (edash_packager::media)   
CompositionTimeToSample (edash_packager::media::mp4)   H264WeightingFactors (edash_packager::media)   NalUnitToByteStreamConverter (edash_packager::media)   SubsampleEntry (edash_packager::media)   WebMVideoClient (edash_packager::media)   
ContentEncoding (edash_packager::media)   H26xBitReader (edash_packager::media)   NaluReader (edash_packager::media)   SubtitleMediaHeader (edash_packager::media::mp4)   WebMWebVTTParser (edash_packager::media)   
ContentProtectionElement (edash_packager)   HandlerReference (edash_packager::media::mp4)   
  O  
+
SyncSample (edash_packager::media::mp4)   WebVTTConfigurationBox (edash_packager::media::mp4)   
Cue (edash_packager::media)   HEVCDecoderConfiguration (edash_packager::media)   SyncSampleIterator (edash_packager::media::mp4)   WebVttMediaParser (edash_packager::media)   
CueIDBox (edash_packager::media::mp4)   HttpKeyFetcher (edash_packager::media)   OffsetByteQueue (edash_packager::media)   
  T  
+
WebVTTSourceLabelBox (edash_packager::media::mp4)   
CuePayloadBox (edash_packager::media::mp4)   
  I  
+
OnMediaEndParameters (edash_packager::media)   WidevineKeySource (edash_packager::media)   
CueSettingsBox (edash_packager::media::mp4)   OriginalFormat (edash_packager::media::mp4)   TextSampleEntry (edash_packager::media::mp4)   WvmMediaParser (edash_packager::media::wvm)   
CueSourceIDBox (edash_packager::media::mp4)   ID3v2 (edash_packager::media::mp4)   
  P  
+
TextStreamInfo (edash_packager::media)   
  X  
+
CueTimeBox (edash_packager::media::mp4)   IoCache (edash_packager::media)   TextTrack (edash_packager::media)   
  D  
-
IoCache (edash_packager::media)   
  P  
-
TextSampleEntry (edash_packager::media::mp4)   WidevineKeySource (edash_packager::media)   
  K  
-
TextStreamInfo (edash_packager::media)   WvmMediaParser (edash_packager::media::wvm)   
DashIopMpdNotifier (edash_packager)   PixelAspectRatio (edash_packager::media::mp4)   TextTrack (edash_packager::media)   
  X  
-
DataEntryUrl (edash_packager::media::mp4)   KeyFetcher (edash_packager::media)   PrevSampleData (edash_packager::media::wvm)   TextTrackConfig (edash_packager::media)   
DataInformation (edash_packager::media::mp4)   KeyRotationFragmenter (edash_packager::media::mp4)   PrivFrame (edash_packager::media::mp4)   ThreadedIoFile (edash_packager::media)   XmlDeleter (edash_packager::xml)   
DataReference (edash_packager::media::mp4)   KeySource (edash_packager::media)   ProducerConsumerQueue (edash_packager::media)   Track (edash_packager::media::mp4)   XmlNode (edash_packager::xml)   
  K  
+
PixelAspectRatio (edash_packager::media::mp4)   TextTrackConfig (edash_packager::media)   XmlDeleter (edash_packager::xml)   
PrevSampleData (edash_packager::media::wvm)   ThreadedIoFile (edash_packager::media)   XmlNode (edash_packager::xml)   
DashIopMpdNotifier (edash_packager)   KeyFetcher (edash_packager::media)   PrivFrame (edash_packager::media::mp4)   Track (edash_packager::media::mp4)   
DataEntryUrl (edash_packager::media::mp4)   KeyRotationFragmenter (edash_packager::media::mp4)   ProducerConsumerQueue (edash_packager::media)   TrackEncryption (edash_packager::media::mp4)   
A | B | C | D | E | F | H | I | K | L | M | N | O | P | R | S | T | U | V | W | X
diff --git a/docs/d0/d03/classedash__packager_1_1media_1_1webm_1_1SingleSegmentSegmenter.html b/docs/d0/d03/classedash__packager_1_1media_1_1webm_1_1SingleSegmentSegmenter.html index 672590cfda..f078369897 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 96f0011580..dadc28dc1d 100644 --- a/docs/d0/d06/mpd__flags_8cc_source.html +++ b/docs/d0/d06/mpd__flags_8cc_source.html @@ -140,7 +140,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d08/structedash__packager_1_1media_1_1mp4_1_1CodecConfigurationRecord-members.html b/docs/d0/d08/structedash__packager_1_1media_1_1mp4_1_1CodecConfigurationRecord-members.html index a95b94ba5b..47441957d0 100644 --- a/docs/d0/d08/structedash__packager_1_1media_1_1mp4_1_1CodecConfigurationRecord-members.html +++ b/docs/d0/d08/structedash__packager_1_1media_1_1mp4_1_1CodecConfigurationRecord-members.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d0e/muxer__options_8h_source.html b/docs/d0/d0e/muxer__options_8h_source.html index 0330953a07..9b314f9a93 100644 --- a/docs/d0/d0e/muxer__options_8h_source.html +++ b/docs/d0/d0e/muxer__options_8h_source.html @@ -149,7 +149,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d0e/structedash__packager_1_1media_1_1StreamDescriptor-members.html b/docs/d0/d0e/structedash__packager_1_1media_1_1StreamDescriptor-members.html index 71ce182b14..dcc7c8945d 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 4b022ddeb2..54cac6113f 100644 --- a/docs/d0/d1a/structedash__packager_1_1media_1_1mp4_1_1ChunkOffset-members.html +++ b/docs/d0/d1a/structedash__packager_1_1media_1_1mp4_1_1ChunkOffset-members.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d24/structedash__packager_1_1media_1_1H264DecRefPicMarking-members.html b/docs/d0/d24/structedash__packager_1_1media_1_1H264DecRefPicMarking-members.html index a7eb7e05b4..4c989c8a23 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 45b7ebe51c..b1a0dc884c 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 @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); GetIndexRange(size_t *offset, size_t *size) overrideedash_packager::media::mp4::MultiSegmentSegmentervirtual GetInitRange(size_t *offset, size_t *size) overrideedash_packager::media::mp4::MultiSegmentSegmentervirtual GetReferenceTimeScale() const (defined in edash_packager::media::mp4::Segmenter)edash_packager::media::mp4::Segmenter - 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)edash_packager::media::mp4::Segmenter + 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, EncryptionMode encryption_mode)edash_packager::media::mp4::Segmenter moov() (defined in edash_packager::media::mp4::Segmenter)edash_packager::media::mp4::Segmenterinlineprotected MultiSegmentSegmenter(const MuxerOptions &options, scoped_ptr< FileType > ftyp, scoped_ptr< Movie > moov) (defined in edash_packager::media::mp4::MultiSegmentSegmenter)edash_packager::media::mp4::MultiSegmentSegmenter muxer_listener() (defined in edash_packager::media::mp4::Segmenter)edash_packager::media::mp4::Segmenterinlineprotected @@ -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 48694bd860..fb4687aa41 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 30228fc6fc..071f009892 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 6ee2134354..01f20a5f22 100644 --- a/docs/d0/d35/es__descriptor_8cc_source.html +++ b/docs/d0/d35/es__descriptor_8cc_source.html @@ -286,7 +286,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d3a/classedash__packager_1_1media_1_1SeekHead-members.html b/docs/d0/d3a/classedash__packager_1_1media_1_1SeekHead-members.html index b16395ab87..40619682e0 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 bed773bbd0..0c1d9deff3 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 d5e4b3b82c..2d6c2e38a4 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 ce8cba6f00..249c869b52 100644 --- a/docs/d0/d42/widevine__encryption__flags_8cc_source.html +++ b/docs/d0/d42/widevine__encryption__flags_8cc_source.html @@ -139,112 +139,116 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
50  0,
51  "Crypto period duration in seconds. If it is non-zero, key "
52  "rotation is enabled.");
-
53 
-
54 namespace edash_packager {
-
55 
-
56 bool ValidateWidevineCryptoFlags() {
-
57  bool success = true;
-
58 
-
59  const bool widevine_crypto =
-
60  FLAGS_enable_widevine_encryption || FLAGS_enable_widevine_decryption;
-
61  const char widevine_crypto_label[] =
-
62  "--enable_widevine_encryption/decryption";
-
63  // key_server_url and signer (optional) are associated with
-
64  // enable_widevine_encryption and enable_widevine_descryption.
-
65  if (!ValidateFlag("key_server_url",
-
66  FLAGS_key_server_url,
-
67  widevine_crypto,
-
68  false,
-
69  widevine_crypto_label)) {
-
70  success = false;
-
71  }
-
72  if (!ValidateFlag("signer",
-
73  FLAGS_signer,
-
74  widevine_crypto,
-
75  true,
-
76  widevine_crypto_label)) {
-
77  success = false;
-
78  }
-
79  if (widevine_crypto && FLAGS_signer.empty() &&
-
80  base::StartsWith(base::StringPiece(FLAGS_key_server_url), "http",
-
81  base::CompareCase::INSENSITIVE_ASCII)) {
-
82  LOG(WARNING) << "--signer is likely required with "
-
83  "--enable_widevine_encryption/decryption.";
-
84  }
-
85 
-
86  const char widevine_encryption_label[] = "--enable_widevine_encryption";
-
87  // content_id and policy (optional) are associated with
-
88  // enable_widevine_encryption.
-
89  if (!ValidateFlag("content_id",
-
90  FLAGS_content_id,
-
91  FLAGS_enable_widevine_encryption,
-
92  false,
-
93  widevine_encryption_label)) {
-
94  success = false;
-
95  }
-
96  if (!ValidateFlag("policy",
-
97  FLAGS_policy,
-
98  FLAGS_enable_widevine_encryption,
-
99  true,
-
100  widevine_encryption_label)) {
-
101  success = false;
-
102  }
-
103 
-
104  if (FLAGS_max_sd_pixels <= 0) {
-
105  PrintError("--max_sd_pixels must be positive.");
-
106  success = false;
-
107  }
-
108 
-
109  const bool aes = !FLAGS_signer.empty() && FLAGS_rsa_signing_key_path.empty();
-
110  const char aes_label[] =
-
111  "--signer is specified and exclusive with --rsa_signing_key_path";
-
112  // aes_signer_key and aes_signing_iv are associated with aes signing.
-
113  if (!ValidateFlag(
-
114  "aes_signing_key", FLAGS_aes_signing_key, aes, true, aes_label)) {
-
115  success = false;
-
116  }
+
53 DEFINE_string(protection_scheme,
+
54  "cenc",
+
55  "Choose protection scheme. Currently support cenc and cbc1. "
+
56  "Default is cenc.");
+
57 
+
58 namespace edash_packager {
+
59 
+
60 bool ValidateWidevineCryptoFlags() {
+
61  bool success = true;
+
62 
+
63  const bool widevine_crypto =
+
64  FLAGS_enable_widevine_encryption || FLAGS_enable_widevine_decryption;
+
65  const char widevine_crypto_label[] =
+
66  "--enable_widevine_encryption/decryption";
+
67  // key_server_url and signer (optional) are associated with
+
68  // enable_widevine_encryption and enable_widevine_descryption.
+
69  if (!ValidateFlag("key_server_url",
+
70  FLAGS_key_server_url,
+
71  widevine_crypto,
+
72  false,
+
73  widevine_crypto_label)) {
+
74  success = false;
+
75  }
+
76  if (!ValidateFlag("signer",
+
77  FLAGS_signer,
+
78  widevine_crypto,
+
79  true,
+
80  widevine_crypto_label)) {
+
81  success = false;
+
82  }
+
83  if (widevine_crypto && FLAGS_signer.empty() &&
+
84  base::StartsWith(base::StringPiece(FLAGS_key_server_url), "http",
+
85  base::CompareCase::INSENSITIVE_ASCII)) {
+
86  LOG(WARNING) << "--signer is likely required with "
+
87  "--enable_widevine_encryption/decryption.";
+
88  }
+
89 
+
90  const char widevine_encryption_label[] = "--enable_widevine_encryption";
+
91  // content_id and policy (optional) are associated with
+
92  // enable_widevine_encryption.
+
93  if (!ValidateFlag("content_id",
+
94  FLAGS_content_id,
+
95  FLAGS_enable_widevine_encryption,
+
96  false,
+
97  widevine_encryption_label)) {
+
98  success = false;
+
99  }
+
100  if (!ValidateFlag("policy",
+
101  FLAGS_policy,
+
102  FLAGS_enable_widevine_encryption,
+
103  true,
+
104  widevine_encryption_label)) {
+
105  success = false;
+
106  }
+
107 
+
108  if (FLAGS_max_sd_pixels <= 0) {
+
109  PrintError("--max_sd_pixels must be positive.");
+
110  success = false;
+
111  }
+
112 
+
113  const bool aes = !FLAGS_signer.empty() && FLAGS_rsa_signing_key_path.empty();
+
114  const char aes_label[] =
+
115  "--signer is specified and exclusive with --rsa_signing_key_path";
+
116  // aes_signer_key and aes_signing_iv are associated with aes signing.
117  if (!ValidateFlag(
-
118  "aes_signing_iv", FLAGS_aes_signing_iv, aes, true, aes_label)) {
+
118  "aes_signing_key", FLAGS_aes_signing_key, aes, true, aes_label)) {
119  success = false;
120  }
-
121 
-
122  const bool rsa = !FLAGS_signer.empty() && FLAGS_aes_signing_key.empty() &&
-
123  FLAGS_aes_signing_iv.empty();
-
124  const char rsa_label[] =
-
125  "--signer is specified and exclusive with --aes_signing_key/iv";
-
126  // rsa_signing_key_path is associated with rsa_signing.
-
127  if (!ValidateFlag("rsa_signing_key_path",
-
128  FLAGS_rsa_signing_key_path,
-
129  rsa,
-
130  true,
-
131  rsa_label)) {
-
132  success = false;
-
133  }
-
134 
-
135  if (!FLAGS_signer.empty() &&
-
136  (FLAGS_aes_signing_key.empty() || FLAGS_aes_signing_iv.empty()) &&
-
137  FLAGS_rsa_signing_key_path.empty()) {
-
138  PrintError(
-
139  "--aes_signing_key/iv or --rsa_signing_key_path is required with "
-
140  "--signer.");
-
141  success = false;
-
142  }
-
143 
-
144  if (FLAGS_crypto_period_duration < 0) {
-
145  PrintError("--crypto_period_duration should not be negative.");
-
146  success = false;
-
147  }
-
148  return success;
-
149 }
-
150 
-
151 } // namespace edash_packager
-
bool ValidateWidevineCryptoFlags()
+
121  if (!ValidateFlag(
+
122  "aes_signing_iv", FLAGS_aes_signing_iv, aes, true, aes_label)) {
+
123  success = false;
+
124  }
+
125 
+
126  const bool rsa = !FLAGS_signer.empty() && FLAGS_aes_signing_key.empty() &&
+
127  FLAGS_aes_signing_iv.empty();
+
128  const char rsa_label[] =
+
129  "--signer is specified and exclusive with --aes_signing_key/iv";
+
130  // rsa_signing_key_path is associated with rsa_signing.
+
131  if (!ValidateFlag("rsa_signing_key_path",
+
132  FLAGS_rsa_signing_key_path,
+
133  rsa,
+
134  true,
+
135  rsa_label)) {
+
136  success = false;
+
137  }
+
138 
+
139  if (!FLAGS_signer.empty() &&
+
140  (FLAGS_aes_signing_key.empty() || FLAGS_aes_signing_iv.empty()) &&
+
141  FLAGS_rsa_signing_key_path.empty()) {
+
142  PrintError(
+
143  "--aes_signing_key/iv or --rsa_signing_key_path is required with "
+
144  "--signer.");
+
145  success = false;
+
146  }
+
147 
+
148  if (FLAGS_crypto_period_duration < 0) {
+
149  PrintError("--crypto_period_duration should not be negative.");
+
150  success = false;
+
151  }
+
152  return success;
+
153 }
+
154 
+
155 } // namespace edash_packager
+
bool ValidateWidevineCryptoFlags()
bool ValidateFlag(const char *flag_name, const std::string &flag_value, bool condition, bool optional, const char *label)
void PrintError(const std::string &error_message)
diff --git a/docs/d0/d46/fourccs_8h_source.html b/docs/d0/d46/fourccs_8h_source.html index 347be080a9..478fadb129 100644 --- a/docs/d0/d46/fourccs_8h_source.html +++ b/docs/d0/d46/fourccs_8h_source.html @@ -109,135 +109,136 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
20  FOURCC_AVC1 = 0x61766331,
21  FOURCC_AVCC = 0x61766343,
22  FOURCC_BLOC = 0x626C6F63,
-
23  FOURCC_CENC = 0x63656e63,
-
24  FOURCC_CO64 = 0x636f3634,
-
25  FOURCC_CTTS = 0x63747473,
-
26  FOURCC_DAC3 = 0x64616333,
-
27  FOURCC_DASH = 0x64617368,
-
28  FOURCC_DDTS = 0x64647473,
-
29  FOURCC_DEC3 = 0x64656333,
-
30  FOURCC_DINF = 0x64696e66,
-
31  FOURCC_DREF = 0x64726566,
-
32  FOURCC_DTSC = 0x64747363,
-
33  FOURCC_DTSE = 0x64747365,
-
34  FOURCC_DTSH = 0x64747368,
-
35  FOURCC_DTSL = 0x6474736c,
-
36  FOURCC_DTSM = 0x6474732d,
-
37  FOURCC_DTSP = 0x6474732b,
-
38  FOURCC_EAC3 = 0x65632d33, // This fourcc is "ec-3".
-
39  FOURCC_EDTS = 0x65647473,
-
40  FOURCC_ELST = 0x656c7374,
-
41  FOURCC_ENCA = 0x656e6361,
-
42  FOURCC_ENCV = 0x656e6376,
-
43  FOURCC_ESDS = 0x65736473,
-
44  FOURCC_FREE = 0x66726565,
-
45  FOURCC_FRMA = 0x66726d61,
-
46  FOURCC_FTYP = 0x66747970,
-
47  FOURCC_HDLR = 0x68646c72,
-
48  FOURCC_HEV1 = 0x68657631,
-
49  FOURCC_HINT = 0x68696e74,
-
50  FOURCC_HVC1 = 0x68766331,
-
51  FOURCC_HVCC = 0x68766343,
-
52  FOURCC_ISO6 = 0x69736f36,
-
53  FOURCC_IODS = 0x696f6473,
-
54  FOURCC_MDAT = 0x6d646174,
-
55  FOURCC_MDHD = 0x6d646864,
-
56  FOURCC_MDIA = 0x6d646961,
-
57  FOURCC_MECO = 0x6d65636f,
-
58  FOURCC_MEHD = 0x6d656864,
-
59  FOURCC_META = 0x6d657461,
-
60  FOURCC_MFHD = 0x6d666864,
-
61  FOURCC_MFRA = 0x6d667261,
-
62  FOURCC_MINF = 0x6d696e66,
-
63  FOURCC_MOOF = 0x6d6f6f66,
-
64  FOURCC_MOOV = 0x6d6f6f76,
-
65  FOURCC_MP41 = 0x6d703431,
-
66  FOURCC_MP4A = 0x6d703461,
-
67  FOURCC_MP4V = 0x6d703476,
-
68  FOURCC_MVEX = 0x6d766578,
-
69  FOURCC_MVHD = 0x6d766864,
-
70  FOURCC_PASP = 0x70617370,
-
71  FOURCC_PDIN = 0x7064696e,
-
72  FOURCC_PRFT = 0x70726674,
-
73  FOURCC_PSSH = 0x70737368,
-
74  FOURCC_SAIO = 0x7361696f,
-
75  FOURCC_SAIZ = 0x7361697a,
-
76  FOURCC_SBGP = 0x73626770,
-
77  FOURCC_SCHI = 0x73636869,
-
78  FOURCC_SCHM = 0x7363686d,
-
79  FOURCC_SDTP = 0x73647470,
-
80  FOURCC_SEIG = 0x73656967,
-
81  FOURCC_SENC = 0x73656e63,
-
82  FOURCC_SGPD = 0x73677064,
-
83  FOURCC_SIDX = 0x73696478,
-
84  FOURCC_SINF = 0x73696e66,
-
85  FOURCC_SKIP = 0x736b6970,
-
86  FOURCC_SMHD = 0x736d6864,
-
87  FOURCC_SOUN = 0x736f756e,
-
88  FOURCC_SSIX = 0x73736978,
-
89  FOURCC_STBL = 0x7374626c,
-
90  FOURCC_STCO = 0x7374636f,
-
91  FOURCC_STSC = 0x73747363,
-
92  FOURCC_STSD = 0x73747364,
-
93  FOURCC_STSS = 0x73747373,
-
94  FOURCC_STSZ = 0x7374737a,
-
95  FOURCC_STTS = 0x73747473,
-
96  FOURCC_STYP = 0x73747970,
-
97  FOURCC_STZ2 = 0x73747a32,
-
98  FOURCC_SUBT = 0x73756274,
-
99  FOURCC_TENC = 0x74656e63,
-
100  FOURCC_TEXT = 0x74657874,
-
101  FOURCC_TFDT = 0x74666474,
-
102  FOURCC_TFHD = 0x74666864,
-
103  FOURCC_TKHD = 0x746b6864,
-
104  FOURCC_TRAF = 0x74726166,
-
105  FOURCC_TRAK = 0x7472616b,
-
106  FOURCC_TREX = 0x74726578,
-
107  FOURCC_TRUN = 0x7472756e,
-
108  FOURCC_UDTA = 0x75647461,
-
109  FOURCC_URL = 0x75726c20,
-
110  FOURCC_URN = 0x75726e20,
-
111  FOURCC_UUID = 0x75756964,
-
112  FOURCC_VIDE = 0x76696465,
-
113  FOURCC_VMHD = 0x766d6864,
-
114  FOURCC_VP08 = 0x76703038,
-
115  FOURCC_VP09 = 0x76703039,
-
116  FOURCC_VP10 = 0x76703130,
-
117  FOURCC_VPCC = 0x76706343,
-
118  FOURCC_WIDE = 0x77696465,
-
119  FOURCC_ctim = 0x6374696d,
-
120  FOURCC_iden = 0x6964656e,
-
121  FOURCC_payl = 0x7061796c,
-
122  FOURCC_sthd = 0x73746864,
-
123  FOURCC_sttg = 0x73747467,
-
124  FOURCC_vlab = 0x766c6162,
-
125  FOURCC_vsid = 0x76736964,
-
126  FOURCC_vttC = 0x76747443,
-
127  FOURCC_vtta = 0x76747461,
-
128  FOURCC_vttc = 0x76747463,
-
129  FOURCC_vtte = 0x76747465,
-
130  FOURCC_wvtt = 0x77767474,
-
131 };
-
132 
-
133 const inline std::string FourCCToString(FourCC fourcc) {
-
134  char buf[5];
-
135  buf[0] = (fourcc >> 24) & 0xff;
-
136  buf[1] = (fourcc >> 16) & 0xff;
-
137  buf[2] = (fourcc >> 8) & 0xff;
-
138  buf[3] = (fourcc) & 0xff;
-
139  buf[4] = 0;
-
140  return std::string(buf);
-
141 }
-
142 
-
143 } // namespace mp4
-
144 } // namespace media
-
145 } // namespace edash_packager
-
146 
-
147 #endif // MEDIA_FORMATS_MP4_FOURCCS_H_
+
23  FOURCC_CBC1 = 0x63626331,
+
24  FOURCC_CENC = 0x63656e63,
+
25  FOURCC_CO64 = 0x636f3634,
+
26  FOURCC_CTTS = 0x63747473,
+
27  FOURCC_DAC3 = 0x64616333,
+
28  FOURCC_DASH = 0x64617368,
+
29  FOURCC_DDTS = 0x64647473,
+
30  FOURCC_DEC3 = 0x64656333,
+
31  FOURCC_DINF = 0x64696e66,
+
32  FOURCC_DREF = 0x64726566,
+
33  FOURCC_DTSC = 0x64747363,
+
34  FOURCC_DTSE = 0x64747365,
+
35  FOURCC_DTSH = 0x64747368,
+
36  FOURCC_DTSL = 0x6474736c,
+
37  FOURCC_DTSM = 0x6474732d,
+
38  FOURCC_DTSP = 0x6474732b,
+
39  FOURCC_EAC3 = 0x65632d33, // This fourcc is "ec-3".
+
40  FOURCC_EDTS = 0x65647473,
+
41  FOURCC_ELST = 0x656c7374,
+
42  FOURCC_ENCA = 0x656e6361,
+
43  FOURCC_ENCV = 0x656e6376,
+
44  FOURCC_ESDS = 0x65736473,
+
45  FOURCC_FREE = 0x66726565,
+
46  FOURCC_FRMA = 0x66726d61,
+
47  FOURCC_FTYP = 0x66747970,
+
48  FOURCC_HDLR = 0x68646c72,
+
49  FOURCC_HEV1 = 0x68657631,
+
50  FOURCC_HINT = 0x68696e74,
+
51  FOURCC_HVC1 = 0x68766331,
+
52  FOURCC_HVCC = 0x68766343,
+
53  FOURCC_ISO6 = 0x69736f36,
+
54  FOURCC_IODS = 0x696f6473,
+
55  FOURCC_MDAT = 0x6d646174,
+
56  FOURCC_MDHD = 0x6d646864,
+
57  FOURCC_MDIA = 0x6d646961,
+
58  FOURCC_MECO = 0x6d65636f,
+
59  FOURCC_MEHD = 0x6d656864,
+
60  FOURCC_META = 0x6d657461,
+
61  FOURCC_MFHD = 0x6d666864,
+
62  FOURCC_MFRA = 0x6d667261,
+
63  FOURCC_MINF = 0x6d696e66,
+
64  FOURCC_MOOF = 0x6d6f6f66,
+
65  FOURCC_MOOV = 0x6d6f6f76,
+
66  FOURCC_MP41 = 0x6d703431,
+
67  FOURCC_MP4A = 0x6d703461,
+
68  FOURCC_MP4V = 0x6d703476,
+
69  FOURCC_MVEX = 0x6d766578,
+
70  FOURCC_MVHD = 0x6d766864,
+
71  FOURCC_PASP = 0x70617370,
+
72  FOURCC_PDIN = 0x7064696e,
+
73  FOURCC_PRFT = 0x70726674,
+
74  FOURCC_PSSH = 0x70737368,
+
75  FOURCC_SAIO = 0x7361696f,
+
76  FOURCC_SAIZ = 0x7361697a,
+
77  FOURCC_SBGP = 0x73626770,
+
78  FOURCC_SCHI = 0x73636869,
+
79  FOURCC_SCHM = 0x7363686d,
+
80  FOURCC_SDTP = 0x73647470,
+
81  FOURCC_SEIG = 0x73656967,
+
82  FOURCC_SENC = 0x73656e63,
+
83  FOURCC_SGPD = 0x73677064,
+
84  FOURCC_SIDX = 0x73696478,
+
85  FOURCC_SINF = 0x73696e66,
+
86  FOURCC_SKIP = 0x736b6970,
+
87  FOURCC_SMHD = 0x736d6864,
+
88  FOURCC_SOUN = 0x736f756e,
+
89  FOURCC_SSIX = 0x73736978,
+
90  FOURCC_STBL = 0x7374626c,
+
91  FOURCC_STCO = 0x7374636f,
+
92  FOURCC_STSC = 0x73747363,
+
93  FOURCC_STSD = 0x73747364,
+
94  FOURCC_STSS = 0x73747373,
+
95  FOURCC_STSZ = 0x7374737a,
+
96  FOURCC_STTS = 0x73747473,
+
97  FOURCC_STYP = 0x73747970,
+
98  FOURCC_STZ2 = 0x73747a32,
+
99  FOURCC_SUBT = 0x73756274,
+
100  FOURCC_TENC = 0x74656e63,
+
101  FOURCC_TEXT = 0x74657874,
+
102  FOURCC_TFDT = 0x74666474,
+
103  FOURCC_TFHD = 0x74666864,
+
104  FOURCC_TKHD = 0x746b6864,
+
105  FOURCC_TRAF = 0x74726166,
+
106  FOURCC_TRAK = 0x7472616b,
+
107  FOURCC_TREX = 0x74726578,
+
108  FOURCC_TRUN = 0x7472756e,
+
109  FOURCC_UDTA = 0x75647461,
+
110  FOURCC_URL = 0x75726c20,
+
111  FOURCC_URN = 0x75726e20,
+
112  FOURCC_UUID = 0x75756964,
+
113  FOURCC_VIDE = 0x76696465,
+
114  FOURCC_VMHD = 0x766d6864,
+
115  FOURCC_VP08 = 0x76703038,
+
116  FOURCC_VP09 = 0x76703039,
+
117  FOURCC_VP10 = 0x76703130,
+
118  FOURCC_VPCC = 0x76706343,
+
119  FOURCC_WIDE = 0x77696465,
+
120  FOURCC_ctim = 0x6374696d,
+
121  FOURCC_iden = 0x6964656e,
+
122  FOURCC_payl = 0x7061796c,
+
123  FOURCC_sthd = 0x73746864,
+
124  FOURCC_sttg = 0x73747467,
+
125  FOURCC_vlab = 0x766c6162,
+
126  FOURCC_vsid = 0x76736964,
+
127  FOURCC_vttC = 0x76747443,
+
128  FOURCC_vtta = 0x76747461,
+
129  FOURCC_vttc = 0x76747463,
+
130  FOURCC_vtte = 0x76747465,
+
131  FOURCC_wvtt = 0x77767474,
+
132 };
+
133 
+
134 const inline std::string FourCCToString(FourCC fourcc) {
+
135  char buf[5];
+
136  buf[0] = (fourcc >> 24) & 0xff;
+
137  buf[1] = (fourcc >> 16) & 0xff;
+
138  buf[2] = (fourcc >> 8) & 0xff;
+
139  buf[3] = (fourcc) & 0xff;
+
140  buf[4] = 0;
+
141  return std::string(buf);
+
142 }
+
143 
+
144 } // namespace mp4
+
145 } // namespace media
+
146 } // namespace edash_packager
+
147 
+
148 #endif // MEDIA_FORMATS_MP4_FOURCCS_H_
diff --git a/docs/d0/d49/vod__media__info__dump__muxer__listener_8cc_source.html b/docs/d0/d49/vod__media__info__dump__muxer__listener_8cc_source.html index 59ddcc1ac3..19ee555df3 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 @@ -224,7 +224,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 a1d664a5e0..7a1dbd74a9 100644 --- a/docs/d0/d4a/structedash__packager_1_1media_1_1mp4_1_1SampleSize-members.html +++ b/docs/d0/d4a/structedash__packager_1_1media_1_1mp4_1_1SampleSize-members.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d4c/structedash__packager_1_1media_1_1mp4_1_1CueTimeBox-members.html b/docs/d0/d4c/structedash__packager_1_1media_1_1mp4_1_1CueTimeBox-members.html index 6f6c726269..e77d831a48 100644 --- a/docs/d0/d4c/structedash__packager_1_1media_1_1mp4_1_1CueTimeBox-members.html +++ b/docs/d0/d4c/structedash__packager_1_1media_1_1mp4_1_1CueTimeBox-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d4e/libcrypto__threading_8cc_source.html b/docs/d0/d4e/libcrypto__threading_8cc_source.html index b6af2108b3..4dfcd892e1 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 27df38d8d2..b6fbed28b0 100644 --- a/docs/d0/d5b/structedash__packager_1_1media_1_1mp4_1_1VTTAdditionalTextBox-members.html +++ b/docs/d0/d5b/structedash__packager_1_1media_1_1mp4_1_1VTTAdditionalTextBox-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d65/structedash__packager_1_1media_1_1mp4_1_1AC3Specific.html b/docs/d0/d65/structedash__packager_1_1media_1_1mp4_1_1AC3Specific.html index 3f55bbcb46..9a56a87a9c 100644 --- a/docs/d0/d65/structedash__packager_1_1media_1_1mp4_1_1AC3Specific.html +++ b/docs/d0/d65/structedash__packager_1_1media_1_1mp4_1_1AC3Specific.html @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d0/d7d/classedash__packager_1_1media_1_1H264Parser-members.html b/docs/d0/d7d/classedash__packager_1_1media_1_1H264Parser-members.html index 9525305e33..5707a62001 100644 --- a/docs/d0/d7d/classedash__packager_1_1media_1_1H264Parser-members.html +++ b/docs/d0/d7d/classedash__packager_1_1media_1_1H264Parser-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d7d/decryptor__source_8h_source.html b/docs/d0/d7d/decryptor__source_8h_source.html index 81b3c4486d..f3c92c2465 100644 --- a/docs/d0/d7d/decryptor__source_8h_source.html +++ b/docs/d0/d7d/decryptor__source_8h_source.html @@ -99,7 +99,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
10 #include <map>
11 #include <vector>
12 
-
13 #include "packager/media/base/aes_encryptor.h"
+
13 #include "packager/media/base/aes_decryptor.h"
14 #include "packager/media/base/decrypt_config.h"
15 #include "packager/media/base/key_source.h"
16 
@@ -117,7 +117,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
29 
30  private:
31  KeySource* key_source_;
-
32  std::map<std::vector<uint8_t>, AesCtrEncryptor*> decryptor_map_;
+
32  std::map<std::vector<uint8_t>, AesDecryptor*> decryptor_map_;
33 
34  DISALLOW_COPY_AND_ASSIGN(DecryptorSource);
35 };
@@ -126,14 +126,14 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
38 } // namespace edash_packager
39 
40 #endif // MEDIA_BASE_DECRYPTOR_SOURCE_H_
-
+
DecryptorSource wraps KeySource and is responsible for decryptor management.
+
Definition: aes_decryptor.h:25
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:35
-
Definition: aes_encryptor.h:25
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 70ffb12519..55cd254bcf 100644 --- a/docs/d0/d86/structedash__packager_1_1media_1_1EncryptionKey.html +++ b/docs/d0/d86/structedash__packager_1_1media_1_1EncryptionKey.html @@ -120,7 +120,7 @@ std::vector< uint8_t >  diff --git a/docs/d0/d92/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentDecodeTime.html b/docs/d0/d92/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentDecodeTime.html index ce6986d455..b87cbe99c8 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 @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/d0/d93/structedash__packager_1_1media_1_1mp4_1_1SampleTable-members.html b/docs/d0/d93/structedash__packager_1_1media_1_1mp4_1_1SampleTable-members.html index ab64eff312..eaa5622849 100644 --- a/docs/d0/d93/structedash__packager_1_1media_1_1mp4_1_1SampleTable-members.html +++ b/docs/d0/d93/structedash__packager_1_1media_1_1mp4_1_1SampleTable-members.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d96/structedash__packager_1_1ContentProtectionElement.html b/docs/d0/d96/structedash__packager_1_1ContentProtectionElement.html index b970ab86a3..e21b3a3b9e 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 c29a03efea..7b1e51af4a 100644 --- a/docs/d0/d96/structedash__packager_1_1media_1_1mp4_1_1WebVTTSourceLabelBox-members.html +++ b/docs/d0/d96/structedash__packager_1_1media_1_1mp4_1_1WebVTTSourceLabelBox-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/da4/classedash__packager_1_1media_1_1WebMVideoClient-members.html b/docs/d0/da4/classedash__packager_1_1media_1_1WebMVideoClient-members.html index d84d36184f..253d22064e 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 df75b0c215..2c32512d9b 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 d139d66b16..c3463ca0cd 100644 --- a/docs/d0/da9/classedash__packager_1_1MockRepresentation.html +++ b/docs/d0/da9/classedash__packager_1_1MockRepresentation.html @@ -160,7 +160,7 @@ Additional Inherited Members diff --git a/docs/d0/da9/classedash__packager_1_1media_1_1webm_1_1WebMMuxer-members.html b/docs/d0/da9/classedash__packager_1_1media_1_1webm_1_1WebMMuxer-members.html index 018ca9436e..5910659b8d 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 @@ -99,24 +99,25 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); clock() (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinlineprotected crypto_period_duration_in_seconds() const (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinlineprotected encryption_key_source() (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinlineprotected - max_sd_pixels() const (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinlineprotected - Muxer(const MuxerOptions &options) (defined in edash_packager::media::Muxer)edash_packager::media::Muxerexplicit - muxer_listener() (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinlineprotected - options() const (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinlineprotected - progress_listener() (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinlineprotected - Run()edash_packager::media::Muxer - set_clock(base::Clock *clock)edash_packager::media::Muxerinline - SetKeySource(KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds)edash_packager::media::Muxer - SetMuxerListener(scoped_ptr< MuxerListener > muxer_listener)edash_packager::media::Muxer - SetProgressListener(scoped_ptr< ProgressListener > progress_listener)edash_packager::media::Muxer - streams() const (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinline - WebMMuxer(const MuxerOptions &options)edash_packager::media::webm::WebMMuxerexplicit - ~Muxer() (defined in edash_packager::media::Muxer)edash_packager::media::Muxervirtual - ~WebMMuxer() override (defined in edash_packager::media::webm::WebMMuxer)edash_packager::media::webm::WebMMuxer + encryption_mode() const (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinlineprotected + max_sd_pixels() const (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinlineprotected + Muxer(const MuxerOptions &options) (defined in edash_packager::media::Muxer)edash_packager::media::Muxerexplicit + muxer_listener() (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinlineprotected + options() const (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinlineprotected + progress_listener() (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinlineprotected + Run()edash_packager::media::Muxer + set_clock(base::Clock *clock)edash_packager::media::Muxerinline + SetKeySource(KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, EncryptionMode encryption_mode)edash_packager::media::Muxer + SetMuxerListener(scoped_ptr< MuxerListener > muxer_listener)edash_packager::media::Muxer + SetProgressListener(scoped_ptr< ProgressListener > progress_listener)edash_packager::media::Muxer + streams() const (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinline + WebMMuxer(const MuxerOptions &options)edash_packager::media::webm::WebMMuxerexplicit + ~Muxer() (defined in edash_packager::media::Muxer)edash_packager::media::Muxervirtual + ~WebMMuxer() override (defined in edash_packager::media::webm::WebMMuxer)edash_packager::media::webm::WebMMuxer 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 e8adfb53d5..79f2ba0b45 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 a18efee73f..a0789a4c4b 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 @@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/d0/dd1/classedash__packager_1_1SimpleMpdNotifier-members.html b/docs/d0/dd1/classedash__packager_1_1SimpleMpdNotifier-members.html index 2413a364f9..a871d476d9 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 4da7dc2aaf..38bc799b5a 100644 --- a/docs/d0/dd4/structedash__packager_1_1media_1_1SubsampleEntry-members.html +++ b/docs/d0/dd4/structedash__packager_1_1media_1_1SubsampleEntry-members.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/dd6/webm__crypto__helpers_8cc_source.html b/docs/d0/dd6/webm__crypto__helpers_8cc_source.html index 3545d55d03..b81b2c128f 100644 --- a/docs/d0/dd6/webm__crypto__helpers_8cc_source.html +++ b/docs/d0/dd6/webm__crypto__helpers_8cc_source.html @@ -95,7 +95,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
6 
7 #include "packager/base/logging.h"
8 #include "packager/base/sys_byteorder.h"
-
9 #include "packager/media/base/decrypt_config.h"
+
9 #include "packager/media/base/encryption_modes.h"
10 #include "packager/media/formats/webm/webm_constants.h"
11 
12 namespace edash_packager {
@@ -145,19 +145,20 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
56  decrypt_config->reset(new DecryptConfig(
57  std::vector<uint8_t>(key_id, key_id + key_id_size),
58  std::vector<uint8_t>(counter_block.begin(), counter_block.end()),
-
59  std::vector<SubsampleEntry>()));
-
60  *data_offset = frame_offset;
-
61 
-
62  return true;
-
63 }
-
64 
-
65 } // namespace media
-
66 } // namespace edash_packager
-
static const size_t kDecryptionKeySize
Keys are always 128 bits.
+
59  std::vector<SubsampleEntry>(),
+
60  kEncryptionModeAesCtr));
+
61  *data_offset = frame_offset;
+
62 
+
63  return true;
+
64 }
+
65 
+
66 } // namespace media
+
67 } // namespace edash_packager
+
static const size_t kDecryptionKeySize
Keys are always 128 bits.
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 b8c02b92e8..fc9a07506f 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 f797a74cc1..b2959a0827 100644 --- a/docs/d0/de0/structedash__packager_1_1media_1_1mp4_1_1VideoSampleEntry-members.html +++ b/docs/d0/de0/structedash__packager_1_1media_1_1mp4_1_1VideoSampleEntry-members.html @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/de4/structedash__packager_1_1media_1_1mp4_1_1MovieFragmentHeader-members.html b/docs/d0/de4/structedash__packager_1_1media_1_1mp4_1_1MovieFragmentHeader-members.html index 5002ba065f..3aa46ec039 100644 --- a/docs/d0/de4/structedash__packager_1_1media_1_1mp4_1_1MovieFragmentHeader-members.html +++ b/docs/d0/de4/structedash__packager_1_1media_1_1mp4_1_1MovieFragmentHeader-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/de6/classedash__packager_1_1media_1_1TracksBuilder.html b/docs/d0/de6/classedash__packager_1_1media_1_1TracksBuilder.html index 6502dd07f7..566630270e 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 f2a3f0b324..b3d68d34a8 100644 --- a/docs/d0/de8/structedash__packager_1_1media_1_1mp4_1_1VTTCueBox-members.html +++ b/docs/d0/de8/structedash__packager_1_1media_1_1mp4_1_1VTTCueBox-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/dea/structedash__packager_1_1media_1_1mp4_1_1ProtectionSystemSpecificHeader-members.html b/docs/d0/dea/structedash__packager_1_1media_1_1mp4_1_1ProtectionSystemSpecificHeader-members.html index ba4deb412b..92464a2987 100644 --- a/docs/d0/dea/structedash__packager_1_1media_1_1mp4_1_1ProtectionSystemSpecificHeader-members.html +++ b/docs/d0/dea/structedash__packager_1_1media_1_1mp4_1_1ProtectionSystemSpecificHeader-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/dee/segmenter__test__base_8h_source.html b/docs/d0/dee/segmenter__test__base_8h_source.html index bca8641d81..808d8ff184 100644 --- a/docs/d0/dee/segmenter__test__base_8h_source.html +++ b/docs/d0/dee/segmenter__test__base_8h_source.html @@ -215,7 +215,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/df3/packager__util_8cc_source.html b/docs/d0/df3/packager__util_8cc_source.html index 964e158ff2..3b112c94af 100644 --- a/docs/d0/df3/packager__util_8cc_source.html +++ b/docs/d0/df3/packager__util_8cc_source.html @@ -329,7 +329,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/df6/structedash__packager_1_1media_1_1mp4_1_1MovieExtends-members.html b/docs/d0/df6/structedash__packager_1_1media_1_1mp4_1_1MovieExtends-members.html index 0c520a0e7a..2a7883701c 100644 --- a/docs/d0/df6/structedash__packager_1_1media_1_1mp4_1_1MovieExtends-members.html +++ b/docs/d0/df6/structedash__packager_1_1media_1_1mp4_1_1MovieExtends-members.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/dfa/structedash__packager_1_1media_1_1wvm_1_1DemuxStreamIdMediaSample.html b/docs/d0/dfa/structedash__packager_1_1media_1_1wvm_1_1DemuxStreamIdMediaSample.html index 82da8d0071..ab4305778e 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 5d40a295e1..c446a63064 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 2a219a1170..278f389021 100644 --- a/docs/d1/d13/status_8h_source.html +++ b/docs/d1/d13/status_8h_source.html @@ -239,7 +239,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d16/structedash__packager_1_1xml_1_1XmlDeleter-members.html b/docs/d1/d16/structedash__packager_1_1xml_1_1XmlDeleter-members.html index b5d4b5a218..f4ba4dc0dd 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 d06a550396..13f610cf34 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 1755499f29..a76a5318f9 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 2d2b6524f9..c5e3f5cb7a 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 69e8baf6cf..dbc53e71a6 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 b4d00d50c3..26eeb0164e 100644 --- a/docs/d1/d28/classedash__packager_1_1media_1_1mp4_1_1SyncSampleIterator-members.html +++ b/docs/d1/d28/classedash__packager_1_1media_1_1mp4_1_1SyncSampleIterator-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d2a/decryptor__source_8cc_source.html b/docs/d1/d2a/decryptor__source_8cc_source.html index c658226b25..72df12c678 100644 --- a/docs/d1/d2a/decryptor__source_8cc_source.html +++ b/docs/d1/d2a/decryptor__source_8cc_source.html @@ -116,67 +116,81 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
27  DCHECK(buffer);
28 
29  // Get the decryptor object.
-
30  AesCtrEncryptor* decryptor;
+
30  AesDecryptor* decryptor;
31  auto found = decryptor_map_.find(decrypt_config->key_id());
32  if (found == decryptor_map_.end()) {
-
33  // Create new AesCtrEncryptor
+
33  // Create new AesDecryptor based on decryption mode.
34  EncryptionKey key;
35  Status status(key_source_->GetKey(decrypt_config->key_id(), &key));
36  if (!status.ok()) {
37  LOG(ERROR) << "Error retrieving decryption key: " << status;
38  return false;
39  }
-
40  scoped_ptr<AesCtrEncryptor> aes_ctr_encryptor(new AesCtrEncryptor);
-
41  if (!aes_ctr_encryptor->InitializeWithIv(key.key, decrypt_config->iv())) {
-
42  LOG(ERROR) << "Failed to initialize AesCtrEncryptor for decryption.";
-
43  return false;
-
44  }
-
45  decryptor = aes_ctr_encryptor.release();
-
46  decryptor_map_[decrypt_config->key_id()] = decryptor;
-
47  } else {
-
48  decryptor = found->second;
-
49  }
-
50  if (!decryptor->SetIv(decrypt_config->iv())) {
-
51  LOG(ERROR) << "Invalid initialization vector.";
-
52  return false;
-
53  }
+
40 
+
41  scoped_ptr<AesDecryptor> aes_decryptor;
+
42  switch (decrypt_config->decryption_mode()) {
+
43  case kEncryptionModeAesCtr:
+
44  aes_decryptor.reset(new AesCtrDecryptor);
+
45  break;
+
46  case kEncryptionModeAesCbc:
+
47  aes_decryptor.reset(new AesCbcPkcs5Decryptor);
+
48  break;
+
49  default:
+
50  LOG(ERROR) << "Unsupported Decryption Mode: "
+
51  << decrypt_config->decryption_mode();
+
52  return false;
+
53  }
54 
-
55  if (decrypt_config->subsamples().empty()) {
-
56  // Sample not encrypted using subsample encryption. Decrypt whole.
-
57  if (!decryptor->Decrypt(buffer, buffer_size, buffer)) {
-
58  LOG(ERROR) << "Error during bulk sample decryption.";
-
59  return false;
-
60  }
-
61  return true;
-
62  }
-
63 
-
64  // Subsample decryption.
-
65  const std::vector<SubsampleEntry>& subsamples = decrypt_config->subsamples();
-
66  uint8_t* current_ptr = buffer;
-
67  const uint8_t* const buffer_end = buffer + buffer_size;
-
68  for (const auto& subsample : subsamples) {
-
69  if ((current_ptr + subsample.clear_bytes + subsample.cipher_bytes) >
-
70  buffer_end) {
-
71  LOG(ERROR) << "Subsamples overflow sample buffer.";
-
72  return false;
-
73  }
-
74  current_ptr += subsample.clear_bytes;
-
75  if (!decryptor->Decrypt(current_ptr, subsample.cipher_bytes, current_ptr)) {
-
76  LOG(ERROR) << "Error decrypting subsample buffer.";
-
77  return false;
-
78  }
-
79  current_ptr += subsample.cipher_bytes;
-
80  }
-
81  return true;
-
82 }
-
83 
-
84 } // namespace media
-
85 } // namespace edash_packager
+
55  if (!aes_decryptor->InitializeWithIv(key.key, decrypt_config->iv())) {
+
56  LOG(ERROR) << "Failed to initialize AesDecryptor for decryption.";
+
57  return false;
+
58  }
+
59  decryptor = aes_decryptor.release();
+
60  decryptor_map_[decrypt_config->key_id()] = decryptor;
+
61  } else {
+
62  decryptor = found->second;
+
63  }
+
64  if (!decryptor->SetIv(decrypt_config->iv())) {
+
65  LOG(ERROR) << "Invalid initialization vector.";
+
66  return false;
+
67  }
+
68 
+
69  if (decrypt_config->subsamples().empty()) {
+
70  // Sample not encrypted using subsample encryption. Decrypt whole.
+
71  if (!decryptor->Decrypt(buffer, buffer_size, buffer)) {
+
72  LOG(ERROR) << "Error during bulk sample decryption.";
+
73  return false;
+
74  }
+
75  return true;
+
76  }
+
77 
+
78  // Subsample decryption.
+
79  const std::vector<SubsampleEntry>& subsamples = decrypt_config->subsamples();
+
80  uint8_t* current_ptr = buffer;
+
81  const uint8_t* const buffer_end = buffer + buffer_size;
+
82  for (const auto& subsample : subsamples) {
+
83  if ((current_ptr + subsample.clear_bytes + subsample.cipher_bytes) >
+
84  buffer_end) {
+
85  LOG(ERROR) << "Subsamples overflow sample buffer.";
+
86  return false;
+
87  }
+
88  current_ptr += subsample.clear_bytes;
+
89  if (!decryptor->Decrypt(current_ptr, subsample.cipher_bytes, current_ptr)) {
+
90  LOG(ERROR) << "Error decrypting subsample buffer.";
+
91  return false;
+
92  }
+
93  current_ptr += subsample.cipher_bytes;
+
94  }
+
95  return true;
+
96 }
+
97 
+
98 } // namespace media
+
99 } // namespace edash_packager
virtual Status GetKey(TrackType track_type, EncryptionKey *key)
Definition: key_source.cc:42
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 aa03cb1385..ffbb09e6f4 100644 --- a/docs/d1/d2a/structedash__packager_1_1media_1_1mp4_1_1TrackExtends-members.html +++ b/docs/d1/d2a/structedash__packager_1_1media_1_1mp4_1_1TrackExtends-members.html @@ -117,7 +117,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d2f/webvtt__media__parser_8cc_source.html b/docs/d1/d2f/webvtt__media__parser_8cc_source.html index 01d75c2f1e..2810fe3874 100644 --- a/docs/d1/d2f/webvtt__media__parser_8cc_source.html +++ b/docs/d1/d2f/webvtt__media__parser_8cc_source.html @@ -491,7 +491,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d31/structedash__packager_1_1media_1_1mp4_1_1CodecConfigurationRecord.html b/docs/d1/d31/structedash__packager_1_1media_1_1mp4_1_1CodecConfigurationRecord.html index 875b096139..5a2bc23fb5 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 @@ -176,7 +176,7 @@ Additional Inherited Members diff --git a/docs/d1/d37/es__parser__h264_8h_source.html b/docs/d1/d37/es__parser__h264_8h_source.html index 972b1b4512..9e472e234b 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 1a96693309..5846004cae 100644 --- a/docs/d1/d38/classedash__packager_1_1MockRepresentation-members.html +++ b/docs/d1/d38/classedash__packager_1_1MockRepresentation-members.html @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d3b/mpd__generator__flags_8h_source.html b/docs/d1/d3b/mpd__generator__flags_8h_source.html index 8fc708abd0..6d828a9691 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 9a1ca36df9..11394cf4b6 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 323afefad0..32036504ab 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 be879a1a51..48e6cd237c 100644 --- a/docs/d1/d4b/classedash__packager_1_1media_1_1mp2t_1_1TsPacket.html +++ b/docs/d1/d4b/classedash__packager_1_1media_1_1mp2t_1_1TsPacket.html @@ -145,7 +145,7 @@ static const int kPacketSi diff --git a/docs/d1/d5d/structedash__packager_1_1MpdOptions.html b/docs/d1/d5d/structedash__packager_1_1MpdOptions.html index e450cea959..4b03f65e21 100644 --- a/docs/d1/d5d/structedash__packager_1_1MpdOptions.html +++ b/docs/d1/d5d/structedash__packager_1_1MpdOptions.html @@ -130,7 +130,7 @@ std::string packager_versi diff --git a/docs/d1/d65/structedash__packager_1_1media_1_1mp4_1_1SampleToGroup.html b/docs/d1/d65/structedash__packager_1_1media_1_1mp4_1_1SampleToGroup.html index e05ebadacf..7d33eaf52d 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 @@ -188,7 +188,7 @@ Additional Inherited Members diff --git a/docs/d1/d70/vp8__parser_8cc_source.html b/docs/d1/d70/vp8__parser_8cc_source.html index 20c5d20752..5817e66c40 100644 --- a/docs/d1/d70/vp8__parser_8cc_source.html +++ b/docs/d1/d70/vp8__parser_8cc_source.html @@ -293,7 +293,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d72/language__utils_8cc_source.html b/docs/d1/d72/language__utils_8cc_source.html index c2e8a4077e..6e458189b8 100644 --- a/docs/d1/d72/language__utils_8cc_source.html +++ b/docs/d1/d72/language__utils_8cc_source.html @@ -226,7 +226,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d72/structedash__packager_1_1media_1_1mp4_1_1AudioSampleEntry-members.html b/docs/d1/d72/structedash__packager_1_1media_1_1mp4_1_1AudioSampleEntry-members.html index ed682d1f82..1511f79924 100644 --- a/docs/d1/d72/structedash__packager_1_1media_1_1mp4_1_1AudioSampleEntry-members.html +++ b/docs/d1/d72/structedash__packager_1_1media_1_1mp4_1_1AudioSampleEntry-members.html @@ -119,7 +119,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d72/structedash__packager_1_1media_1_1mp4_1_1PixelAspectRatio-members.html b/docs/d1/d72/structedash__packager_1_1media_1_1mp4_1_1PixelAspectRatio-members.html index 5f48056d20..da7e13aac7 100644 --- a/docs/d1/d72/structedash__packager_1_1media_1_1mp4_1_1PixelAspectRatio-members.html +++ b/docs/d1/d72/structedash__packager_1_1media_1_1mp4_1_1PixelAspectRatio-members.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d74/mp2t__media__parser_8cc_source.html b/docs/d1/d74/mp2t__media__parser_8cc_source.html index e771390355..1be9270115 100644 --- a/docs/d1/d74/mp2t__media__parser_8cc_source.html +++ b/docs/d1/d74/mp2t__media__parser_8cc_source.html @@ -529,7 +529,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d76/structedash__packager_1_1media_1_1mp4_1_1SampleToChunk-members.html b/docs/d1/d76/structedash__packager_1_1media_1_1mp4_1_1SampleToChunk-members.html index 6c64fd2537..645a3293ef 100644 --- a/docs/d1/d76/structedash__packager_1_1media_1_1mp4_1_1SampleToChunk-members.html +++ b/docs/d1/d76/structedash__packager_1_1media_1_1mp4_1_1SampleToChunk-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d78/classedash__packager_1_1media_1_1mp4_1_1MP4Muxer.html b/docs/d1/d78/classedash__packager_1_1media_1_1mp4_1_1MP4Muxer.html index 42bc136b90..8937a3e550 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 @@ -115,8 +115,8 @@ Public Member Functions  Muxer (const MuxerOptions &options)   -void SetKeySource (KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds) -  +void SetKeySource (KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, EncryptionMode encryption_mode) +  void AddStream (MediaStream *stream)  Add video/audio stream.
@@ -164,6 +164,9 @@ double crypto_period_durat base::Clock * clock ()   + +EncryptionMode encryption_mode () const + 

Detailed Description

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

@@ -176,7 +179,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 673732c4ca..56cdf6b565 100644 --- a/docs/d1/d7d/webm__video__client_8cc_source.html +++ b/docs/d1/d7d/webm__video__client_8cc_source.html @@ -266,7 +266,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d7f/classedash__packager_1_1media_1_1BitReader-members.html b/docs/d1/d7f/classedash__packager_1_1media_1_1BitReader-members.html index 0d26960230..89f17532af 100644 --- a/docs/d1/d7f/classedash__packager_1_1media_1_1BitReader-members.html +++ b/docs/d1/d7f/classedash__packager_1_1media_1_1BitReader-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d81/structedash__packager_1_1media_1_1mp4_1_1SegmentIndex.html b/docs/d1/d81/structedash__packager_1_1media_1_1mp4_1_1SegmentIndex.html index 2e30d5512e..30fdae092b 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 @@ -194,7 +194,7 @@ Additional Inherited Members diff --git a/docs/d1/d82/adts__constants_8h_source.html b/docs/d1/d82/adts__constants_8h_source.html index e5e9c081cb..5273da5a72 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 179001f675..b2db28e1a9 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 9f9ffe4484..88af4cb761 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 @@ -175,7 +175,7 @@ uint32_t flags diff --git a/docs/d1/d8e/structedash__packager_1_1media_1_1mp4_1_1CompositionTimeToSample-members.html b/docs/d1/d8e/structedash__packager_1_1media_1_1mp4_1_1CompositionTimeToSample-members.html index 8c780fc80d..83509fd559 100644 --- a/docs/d1/d8e/structedash__packager_1_1media_1_1mp4_1_1CompositionTimeToSample-members.html +++ b/docs/d1/d8e/structedash__packager_1_1media_1_1mp4_1_1CompositionTimeToSample-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d8e/webm__audio__client_8cc_source.html b/docs/d1/d8e/webm__audio__client_8cc_source.html index 0480356fd9..217ee42d91 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 502ba439aa..f480abefe3 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 9891854000..6525fb8ced 100644 --- a/docs/d1/d9d/tracks__builder_8h_source.html +++ b/docs/d1/d9d/tracks__builder_8h_source.html @@ -210,7 +210,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/dc2/h26x__bit__reader_8h_source.html b/docs/d1/dc2/h26x__bit__reader_8h_source.html index 7fa7c19f7c..c53ae6a102 100644 --- a/docs/d1/dc2/h26x__bit__reader_8h_source.html +++ b/docs/d1/dc2/h26x__bit__reader_8h_source.html @@ -177,7 +177,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 989b4dc668..d003016f0f 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 1ba61cde7b..78200bc794 100644 --- a/docs/d1/dcb/encrypting__fragmenter_8h_source.html +++ b/docs/d1/dcb/encrypting__fragmenter_8h_source.html @@ -98,89 +98,92 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
9 
10 #include "packager/base/memory/ref_counted.h"
11 #include "packager/base/memory/scoped_ptr.h"
-
12 #include "packager/media/filters/vpx_parser.h"
-
13 #include "packager/media/formats/mp4/fragmenter.h"
-
14 #include "packager/media/formats/mp4/video_slice_header_parser.h"
-
15 
-
16 namespace edash_packager {
-
17 namespace media {
-
18 
-
19 class AesCtrEncryptor;
-
20 class StreamInfo;
-
21 struct EncryptionKey;
-
22 
-
23 namespace mp4 {
-
24 
- -
27  public:
-
32  EncryptingFragmenter(scoped_refptr<StreamInfo> info,
-
33  TrackFragment* traf,
-
34  scoped_ptr<EncryptionKey> encryption_key,
-
35  int64_t clear_time);
-
36 
-
37  ~EncryptingFragmenter() override;
+
12 #include "packager/media/base/encryption_modes.h"
+
13 #include "packager/media/filters/vpx_parser.h"
+
14 #include "packager/media/formats/mp4/fragmenter.h"
+
15 #include "packager/media/formats/mp4/video_slice_header_parser.h"
+
16 
+
17 namespace edash_packager {
+
18 namespace media {
+
19 
+
20 class AesEncryptor;
+
21 class StreamInfo;
+
22 struct EncryptionKey;
+
23 
+
24 namespace mp4 {
+
25 
+ +
28  public:
+
33  EncryptingFragmenter(scoped_refptr<StreamInfo> info,
+
34  TrackFragment* traf,
+
35  scoped_ptr<EncryptionKey> encryption_key,
+
36  int64_t clear_time,
+
37  EncryptionMode encryption_mode);
38 
-
41  Status AddSample(scoped_refptr<MediaSample> sample) override;
-
42  Status InitializeFragment(int64_t first_sample_dts) override;
-
43  void FinalizeFragment() override;
-
45 
-
46  protected:
-
49  virtual Status PrepareFragmentForEncryption(bool enable_encryption);
-
51  virtual void FinalizeFragmentForEncryption();
-
52 
- -
57 
-
58  EncryptionKey* encryption_key() { return encryption_key_.get(); }
-
59  AesCtrEncryptor* encryptor() { return encryptor_.get(); }
-
60 
-
61  void set_encryption_key(scoped_ptr<EncryptionKey> encryption_key) {
-
62  encryption_key_ = encryption_key.Pass();
-
63  }
-
64 
-
65  private:
-
66  void EncryptBytes(uint8_t* data, uint32_t size);
-
67  Status EncryptSample(scoped_refptr<MediaSample> sample);
-
68 
-
69  // Should we enable subsample encryption?
-
70  bool IsSubsampleEncryptionRequired();
-
71 
-
72  scoped_refptr<StreamInfo> info_;
-
73  scoped_ptr<EncryptionKey> encryption_key_;
-
74  scoped_ptr<AesCtrEncryptor> encryptor_;
-
75  // If this stream contains AVC, subsample encryption specifies that the size
-
76  // and type of NAL units remain unencrypted. This function returns the size of
-
77  // the size field in bytes. Can be 1, 2 or 4 bytes.
-
78  const uint8_t nalu_length_size_;
-
79  int64_t clear_time_;
-
80 
-
81  scoped_ptr<VPxParser> vpx_parser_;
-
82  scoped_ptr<VideoSliceHeaderParser> header_parser_;
+
39  ~EncryptingFragmenter() override;
+
40 
+
43  Status AddSample(scoped_refptr<MediaSample> sample) override;
+
44  Status InitializeFragment(int64_t first_sample_dts) override;
+
45  void FinalizeFragment() override;
+
47 
+
48  protected:
+
51  virtual Status PrepareFragmentForEncryption(bool enable_encryption);
+
53  virtual void FinalizeFragmentForEncryption();
+
54 
+ +
59 
+
60  EncryptionKey* encryption_key() { return encryption_key_.get(); }
+
61  AesEncryptor* encryptor() { return encryptor_.get(); }
+
62 
+
63  void set_encryption_key(scoped_ptr<EncryptionKey> encryption_key) {
+
64  encryption_key_ = encryption_key.Pass();
+
65  }
+
66 
+
67  private:
+
68  void EncryptBytes(uint8_t* data, uint32_t size);
+
69  Status EncryptSample(scoped_refptr<MediaSample> sample);
+
70 
+
71  // Should we enable subsample encryption?
+
72  bool IsSubsampleEncryptionRequired();
+
73 
+
74  scoped_refptr<StreamInfo> info_;
+
75  scoped_ptr<EncryptionKey> encryption_key_;
+
76  scoped_ptr<AesEncryptor> encryptor_;
+
77  // If this stream contains AVC, subsample encryption specifies that the size
+
78  // and type of NAL units remain unencrypted. This function returns the size of
+
79  // the size field in bytes. Can be 1, 2 or 4 bytes.
+
80  const uint8_t nalu_length_size_;
+
81  int64_t clear_time_;
+
82  EncryptionMode encryption_mode_;
83 
-
84  DISALLOW_COPY_AND_ASSIGN(EncryptingFragmenter);
-
85 };
+
84  scoped_ptr<VPxParser> vpx_parser_;
+
85  scoped_ptr<VideoSliceHeaderParser> header_parser_;
86 
-
87 } // namespace mp4
-
88 } // namespace media
-
89 } // namespace edash_packager
-
90 
-
91 #endif // MEDIA_FORMATS_MP4_ENCRYPTING_FRAGMENTER_H_
+
87  DISALLOW_COPY_AND_ASSIGN(EncryptingFragmenter);
+
88 };
+
89 
+
90 } // namespace mp4
+
91 } // namespace media
+
92 } // namespace edash_packager
+
93 
+
94 #endif // MEDIA_FORMATS_MP4_ENCRYPTING_FRAGMENTER_H_
+ - -
EncryptingFragmenter generates MP4 fragments with sample encrypted.
+ +
EncryptingFragmenter(scoped_refptr< StreamInfo > info, TrackFragment *traf, scoped_ptr< EncryptionKey > encryption_key, int64_t clear_time, EncryptionMode encryption_mode)
+
EncryptingFragmenter generates MP4 fragments with sample encrypted.
-
Status InitializeFragment(int64_t first_sample_dts) override
-
EncryptingFragmenter(scoped_refptr< StreamInfo > info, TrackFragment *traf, scoped_ptr< EncryptionKey > encryption_key, int64_t clear_time)
-
Status AddSample(scoped_refptr< MediaSample > sample) override
- -
void FinalizeFragment() override
Finalize and optimize the fragment.
+
Status InitializeFragment(int64_t first_sample_dts) override
+
Status AddSample(scoped_refptr< MediaSample > sample) override
+
void FinalizeFragment() override
Finalize and optimize the fragment.
-
virtual Status PrepareFragmentForEncryption(bool enable_encryption)
-
virtual void FinalizeFragmentForEncryption()
Finalize current fragment for encryption.
+
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 da25b289ad..9bdc0c3de0 100644 --- a/docs/d1/dcd/structedash__packager_1_1media_1_1mp4_1_1FileType.html +++ b/docs/d1/dcd/structedash__packager_1_1media_1_1mp4_1_1FileType.html @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/d1/dd0/classedash__packager_1_1media_1_1mp4_1_1VideoSliceHeaderParser.html b/docs/d1/dd0/classedash__packager_1_1media_1_1mp4_1_1VideoSliceHeaderParser.html index ca8a27c0c6..8e300f3731 100644 --- a/docs/d1/dd0/classedash__packager_1_1media_1_1mp4_1_1VideoSliceHeaderParser.html +++ b/docs/d1/dd0/classedash__packager_1_1media_1_1mp4_1_1VideoSliceHeaderParser.html @@ -149,7 +149,7 @@ virtual int64_t  diff --git a/docs/d1/dd0/structedash__packager_1_1media_1_1mp4_1_1SampleToGroup-members.html b/docs/d1/dd0/structedash__packager_1_1media_1_1mp4_1_1SampleToGroup-members.html index 32d3a1d5af..c4e463baf7 100644 --- a/docs/d1/dd0/structedash__packager_1_1media_1_1mp4_1_1SampleToGroup-members.html +++ b/docs/d1/dd0/structedash__packager_1_1media_1_1mp4_1_1SampleToGroup-members.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/dd5/classedash__packager_1_1xml_1_1RepresentationBaseXmlNode.html b/docs/d1/dd5/classedash__packager_1_1xml_1_1RepresentationBaseXmlNode.html index 81f27ff358..c135c13d79 100644 --- a/docs/d1/dd5/classedash__packager_1_1xml_1_1RepresentationBaseXmlNode.html +++ b/docs/d1/dd5/classedash__packager_1_1xml_1_1RepresentationBaseXmlNode.html @@ -156,7 +156,7 @@ Protected Member Functions diff --git a/docs/d1/ddb/structedash__packager_1_1media_1_1mp4_1_1TextSampleEntry-members.html b/docs/d1/ddb/structedash__packager_1_1media_1_1mp4_1_1TextSampleEntry-members.html index 0afde992d6..e61617607b 100644 --- a/docs/d1/ddb/structedash__packager_1_1media_1_1mp4_1_1TextSampleEntry-members.html +++ b/docs/d1/ddb/structedash__packager_1_1media_1_1mp4_1_1TextSampleEntry-members.html @@ -112,7 +112,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/ddc/classedash__packager_1_1media_1_1VP9Parser-members.html b/docs/d1/ddc/classedash__packager_1_1media_1_1VP9Parser-members.html index c7bec02e93..2d2922864d 100644 --- a/docs/d1/ddc/classedash__packager_1_1media_1_1VP9Parser-members.html +++ b/docs/d1/ddc/classedash__packager_1_1media_1_1VP9Parser-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/de2/composition__offset__iterator_8cc_source.html b/docs/d1/de2/composition__offset__iterator_8cc_source.html index d57593f025..3ede50c1dd 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 7eb831f7d4..d6f1fb7a84 100644 --- a/docs/d1/df0/aes__encryptor_8h_source.html +++ b/docs/d1/df0/aes__encryptor_8h_source.html @@ -110,202 +110,151 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
21 namespace edash_packager {
22 namespace media {
23 
-
24 // Class which implements AES-CTR counter-mode encryption/decryption.
- -
26  public:
- -
28  ~AesCtrEncryptor();
-
29 
-
35  bool InitializeWithRandomIv(const std::vector<uint8_t>& key, uint8_t iv_size);
-
36 
-
42  bool InitializeWithIv(const std::vector<uint8_t>& key,
-
43  const std::vector<uint8_t>& iv);
-
44 
-
49  bool Encrypt(const uint8_t* plaintext,
-
50  size_t plaintext_size,
-
51  uint8_t* ciphertext);
-
52 
-
53  bool Encrypt(const std::vector<uint8_t>& plaintext,
-
54  std::vector<uint8_t>* ciphertext) {
-
55  ciphertext->resize(plaintext.size());
-
56  return Encrypt(&plaintext[0], plaintext.size(), &(*ciphertext)[0]);
-
57  }
-
58 
-
59  bool Encrypt(const std::string& plaintext, std::string* ciphertext) {
-
60  ciphertext->resize(plaintext.size());
-
61  return Encrypt(reinterpret_cast<const uint8_t*>(plaintext.data()),
-
62  plaintext.size(),
-
63  reinterpret_cast<uint8_t*>(string_as_array(ciphertext)));
-
64  }
+
24 class AesEncryptor {
+
25  public:
+
26  AesEncryptor();
+
27  virtual ~AesEncryptor();
+
28 
+
32  virtual bool InitializeWithRandomIv(const std::vector<uint8_t>& key,
+
33  uint8_t iv_size);
+
34 
+
37  virtual bool InitializeWithIv(const std::vector<uint8_t>& key,
+
38  const std::vector<uint8_t>& iv) = 0;
+
39 
+
40  virtual size_t NumPaddingBytes(size_t size) = 0;
+
41 
+
45  virtual bool EncryptData(const uint8_t* plaintext,
+
46  size_t plaintext_size,
+
47  uint8_t* ciphertext) = 0;
+
48 
+
49  bool Encrypt(const std::vector<uint8_t>& plaintext,
+
50  std::vector<uint8_t>* ciphertext);
+
51 
+
52  bool Encrypt(const std::string& plaintext, std::string* ciphertext);
+
54 
+
59  virtual void UpdateIv() = 0;
+
60 
+
63  virtual bool SetIv(const std::vector<uint8_t>& iv) = 0;
+
64 
+
65  const std::vector<uint8_t>& iv() const { return iv_; }
66 
-
67  // For AES CTR, encryption and decryption are identical.
-
68  bool Decrypt(const uint8_t* ciphertext,
-
69  size_t ciphertext_size,
-
70  uint8_t* plaintext) {
-
71  return Encrypt(ciphertext, ciphertext_size, plaintext);
-
72  }
-
73 
-
74  bool Decrypt(const std::vector<uint8_t>& ciphertext,
-
75  std::vector<uint8_t>* plaintext) {
-
76  return Encrypt(ciphertext, plaintext);
-
77  }
-
78 
-
79  bool Decrypt(const std::string& ciphertext, std::string* plaintext) {
-
80  return Encrypt(ciphertext, plaintext);
-
81  }
+
67  protected:
+
68  // Initialization vector, with size 8 or 16.
+
69  std::vector<uint8_t> iv_;
+
70  // Openssl AES_KEY.
+
71  scoped_ptr<AES_KEY> aes_key_;
+
72 
+
73  private:
+
74  DISALLOW_COPY_AND_ASSIGN(AesEncryptor);
+
75 };
+
76 
+
77 // Class which implements AES-CTR counter-mode encryption/decryption.
+
78 class AesCtrEncryptor : public AesEncryptor {
+
79  public:
+ +
81  ~AesCtrEncryptor() override;
82 
-
87  void UpdateIv();
-
88 
-
91  bool SetIv(const std::vector<uint8_t>& iv);
+
88  bool InitializeWithIv(const std::vector<uint8_t>& key,
+
89  const std::vector<uint8_t>& iv) override;
+
90 
+
91  size_t NumPaddingBytes(size_t size) override;
92 
-
93  const std::vector<uint8_t>& iv() const { return iv_; }
-
94 
-
95  uint32_t block_offset() const { return block_offset_; }
+
93  bool EncryptData(const uint8_t* plaintext,
+
94  size_t plaintext_size,
+
95  uint8_t* ciphertext) override;
96 
-
97  private:
-
98  // Initialization vector, with size 8 or 16.
-
99  std::vector<uint8_t> iv_;
-
100  // Current block offset.
-
101  uint32_t block_offset_;
-
102  // Openssl AES_KEY.
-
103  scoped_ptr<AES_KEY> aes_key_;
-
104  // Current AES-CTR counter.
-
105  std::vector<uint8_t> counter_;
-
106  // Encrypted counter.
-
107  std::vector<uint8_t> encrypted_counter_;
-
108  // Keep track of whether the counter has overflowed.
-
109  bool counter_overflow_;
-
110 
-
111  DISALLOW_COPY_AND_ASSIGN(AesCtrEncryptor);
-
112 };
-
113 
-
114 // Class which implements AES-CBC (Cipher block chaining) encryption with
-
115 // PKCS#5 padding.
- -
117  public:
- - +
101  void UpdateIv() override;
+
102 
+
103  bool SetIv(const std::vector<uint8_t>& iv) override;
+
105 
+
106  uint32_t block_offset() const { return block_offset_; }
+
107 
+
108  private:
+
109  // Current block offset.
+
110  uint32_t block_offset_;
+
111  // Current AES-CTR counter.
+
112  std::vector<uint8_t> counter_;
+
113  // Encrypted counter.
+
114  std::vector<uint8_t> encrypted_counter_;
+
115  // Keep track of whether the counter has overflowed.
+
116  bool counter_overflow_;
+
117 
+
118  DISALLOW_COPY_AND_ASSIGN(AesCtrEncryptor);
+
119 };
120 
-
126  bool InitializeWithIv(const std::vector<uint8_t>& key,
-
127  const std::vector<uint8_t>& iv);
-
128 
-
131  void Encrypt(const std::string& plaintext, std::string* ciphertext);
+
121 // Class which implements AES-CBC (Cipher block chaining) encryption with
+
122 // PKCS#5 padding.
+ +
124  public:
+ +
126  ~AesCbcPkcs5Encryptor() override;
+
127 
+
130  bool InitializeWithIv(const std::vector<uint8_t>& key,
+
131  const std::vector<uint8_t>& iv) override;
132 
-
134  bool SetIv(const std::vector<uint8_t>& iv);
-
135 
-
136  const std::vector<uint8_t>& iv() const { return iv_; }
-
137 
-
138  private:
-
139  std::vector<uint8_t> iv_;
-
140  scoped_ptr<AES_KEY> encrypt_key_;
-
141 
-
142  DISALLOW_COPY_AND_ASSIGN(AesCbcPkcs5Encryptor);
-
143 };
-
144 
-
145 // Class which implements AES-CBC (Cipher block chaining) decryption with
-
146 // PKCS#5 padding.
- -
148  public:
- - -
151 
-
157  bool InitializeWithIv(const std::vector<uint8_t>& key,
-
158  const std::vector<uint8_t>& iv);
+
133  size_t NumPaddingBytes(size_t size) override;
+
134 
+
135  bool EncryptData(const uint8_t* plaintext,
+
136  size_t plaintext_size,
+
137  uint8_t* ciphertext) override;
+
138 
+
139  void UpdateIv() override;
+
140 
+
141  bool SetIv(const std::vector<uint8_t>& iv) override;
+
143 
+
144  private:
+
145  DISALLOW_COPY_AND_ASSIGN(AesCbcPkcs5Encryptor);
+
146 };
+
147 
+
148 // Class which implements AES-CBC (Cipher block chaining) encryption with
+
149 // Ciphertext stealing.
+ +
151  public:
+ +
153  ~AesCbcCtsEncryptor() override;
+
154 
+
157  bool InitializeWithIv(const std::vector<uint8_t>& key,
+
158  const std::vector<uint8_t>& iv) override;
159 
-
163  bool Decrypt(const std::string& ciphertext, std::string* plaintext);
-
164 
-
166  bool SetIv(const std::vector<uint8_t>& iv);
+
160  size_t NumPaddingBytes(size_t size) override;
+
161 
+
162  bool EncryptData(const uint8_t* plaintext,
+
163  size_t plaintext_size,
+
164  uint8_t* ciphertext) override;
+
165 
+
166  void UpdateIv() override;
167 
-
168  const std::vector<uint8_t>& iv() const { return iv_; }
-
169 
-
170  private:
-
171  std::vector<uint8_t> iv_;
-
172  scoped_ptr<AES_KEY> decrypt_key_;
-
173 
-
174  DISALLOW_COPY_AND_ASSIGN(AesCbcPkcs5Decryptor);
-
175 };
-
176 
-
177 // Class which implements AES-CBC (Cipher block chaining) encryption with
-
178 // Ciphertext stealing.
- -
180  public:
- - -
183 
-
189  bool InitializeWithIv(const std::vector<uint8_t>& key,
-
190  const std::vector<uint8_t>& iv);
-
191 
-
197  void Encrypt(const uint8_t* plaintext, size_t size, uint8_t* ciphertext);
-
198 
-
202  void Encrypt(const std::vector<uint8_t>& plaintext,
-
203  std::vector<uint8_t>* ciphertext);
-
204 
-
207  bool SetIv(const std::vector<uint8_t>& iv);
-
208 
-
209  const std::vector<uint8_t>& iv() const { return iv_; }
-
210 
-
211  private:
-
212  std::vector<uint8_t> iv_;
-
213  scoped_ptr<AES_KEY> encrypt_key_;
-
214 
-
215  DISALLOW_COPY_AND_ASSIGN(AesCbcCtsEncryptor);
-
216 };
-
217 
-
218 // Class which implements AES-CBC (Cipher block chaining) decryption with
-
219 // Ciphertext stealing.
- -
221  public:
- - -
224 
-
230  bool InitializeWithIv(const std::vector<uint8_t>& key,
-
231  const std::vector<uint8_t>& iv);
-
232 
-
238  void Decrypt(const uint8_t* ciphertext, size_t size, uint8_t* plaintext);
-
239 
-
243  void Decrypt(const std::vector<uint8_t>& ciphertext,
-
244  std::vector<uint8_t>* plaintext);
-
245 
-
247  bool SetIv(const std::vector<uint8_t>& iv);
-
248 
-
249  const std::vector<uint8_t>& iv() const { return iv_; }
-
250 
-
251  private:
-
252  std::vector<uint8_t> iv_;
-
253  scoped_ptr<AES_KEY> decrypt_key_;
-
254 
-
255  DISALLOW_COPY_AND_ASSIGN(AesCbcCtsDecryptor);
-
256 };
-
257 
-
258 } // namespace media
-
259 } // namespace edash_packager
-
260 
-
261 #endif // MEDIA_BASE_AES_ENCRYPTOR_H_
-
void Encrypt(const uint8_t *plaintext, size_t size, uint8_t *ciphertext)
-
bool SetIv(const std::vector< uint8_t > &iv)
-
bool InitializeWithIv(const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv)
-
void Decrypt(const uint8_t *ciphertext, size_t size, uint8_t *plaintext)
-
bool SetIv(const std::vector< uint8_t > &iv)
-
bool SetIv(const std::vector< uint8_t > &iv)
-
bool SetIv(const std::vector< uint8_t > &iv)
- - -
bool SetIv(const std::vector< uint8_t > &iv)
-
bool InitializeWithIv(const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv)
-
bool Decrypt(const std::string &ciphertext, std::string *plaintext)
- -
void Encrypt(const std::string &plaintext, std::string *ciphertext)
-
bool InitializeWithIv(const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv)
-
bool InitializeWithRandomIv(const std::vector< uint8_t > &key, uint8_t iv_size)
-
bool InitializeWithIv(const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv)
-
bool InitializeWithIv(const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv)
- - - +
168  bool SetIv(const std::vector<uint8_t>& iv) override;
+
170 
+
171  private:
+
172  DISALLOW_COPY_AND_ASSIGN(AesCbcCtsEncryptor);
+
173 };
+
174 
+
175 } // namespace media
+
176 } // namespace edash_packager
+
177 
+
178 #endif // MEDIA_BASE_AES_ENCRYPTOR_H_
+
virtual bool InitializeWithIv(const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv)=0
+
bool InitializeWithIv(const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv) override
+ +
bool InitializeWithIv(const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv) override
+
bool SetIv(const std::vector< uint8_t > &iv) override
+ +
bool SetIv(const std::vector< uint8_t > &iv) override
+ +
bool SetIv(const std::vector< uint8_t > &iv) override
+ + +
virtual bool InitializeWithRandomIv(const std::vector< uint8_t > &key, uint8_t iv_size)
+ +
bool InitializeWithIv(const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv) override
+ + +
virtual bool SetIv(const std::vector< uint8_t > &iv)=0
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 3600b6eb30..89beacc6e3 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 @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d1/df5/nalu__reader_8cc_source.html b/docs/d1/df5/nalu__reader_8cc_source.html index 02fd814239..284fd93aef 100644 --- a/docs/d1/df5/nalu__reader_8cc_source.html +++ b/docs/d1/df5/nalu__reader_8cc_source.html @@ -327,7 +327,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/dfc/structedash__packager_1_1media_1_1wvm_1_1DemuxStreamIdMediaSample-members.html b/docs/d1/dfc/structedash__packager_1_1media_1_1wvm_1_1DemuxStreamIdMediaSample-members.html index de2502143d..307e262fed 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 ab9d072acb..369ee1a19f 100644 --- a/docs/d2/d02/timestamp_8h_source.html +++ b/docs/d2/d02/timestamp_8h_source.html @@ -114,7 +114,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d06/structedash__packager_1_1media_1_1mp4_1_1Metadata.html b/docs/d2/d06/structedash__packager_1_1media_1_1mp4_1_1Metadata.html index 050e436a4d..63b0cbabe7 100644 --- a/docs/d2/d06/structedash__packager_1_1media_1_1mp4_1_1Metadata.html +++ b/docs/d2/d06/structedash__packager_1_1media_1_1mp4_1_1Metadata.html @@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/d2/d09/decoder__configuration_8h_source.html b/docs/d2/d09/decoder__configuration_8h_source.html index 395f305c28..8088c67130 100644 --- a/docs/d2/d09/decoder__configuration_8h_source.html +++ b/docs/d2/d09/decoder__configuration_8h_source.html @@ -166,7 +166,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d0f/structedash__packager_1_1media_1_1mp4_1_1MediaInformation-members.html b/docs/d2/d0f/structedash__packager_1_1media_1_1mp4_1_1MediaInformation-members.html index 5bace75d03..a8b5be7c79 100644 --- a/docs/d2/d0f/structedash__packager_1_1media_1_1mp4_1_1MediaInformation-members.html +++ b/docs/d2/d0f/structedash__packager_1_1media_1_1mp4_1_1MediaInformation-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d17/ts__section__pat_8cc_source.html b/docs/d2/d17/ts__section__pat_8cc_source.html index 325ea3259b..5beec09ac3 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 35fca55e65..bafd8fba87 100644 --- a/docs/d2/d23/threaded__io__file_8cc_source.html +++ b/docs/d2/d23/threaded__io__file_8cc_source.html @@ -315,7 +315,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d24/packager__util_8h_source.html b/docs/d2/d24/packager__util_8h_source.html index e09dfd67d3..423b4b4d7d 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 a79ceae8c6..00e2ab1278 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 @@ -186,7 +186,7 @@ Additional Inherited Members diff --git a/docs/d2/d28/classedash__packager_1_1media_1_1SegmentTestBase.html b/docs/d2/d28/classedash__packager_1_1media_1_1SegmentTestBase.html index 573f6777ca..2384db16f0 100644 --- a/docs/d2/d28/classedash__packager_1_1media_1_1SegmentTestBase.html +++ b/docs/d2/d28/classedash__packager_1_1media_1_1SegmentTestBase.html @@ -180,7 +180,7 @@ bool single_segment_ diff --git a/docs/d2/d2d/structedash__packager_1_1media_1_1mp4_1_1MediaHeader-members.html b/docs/d2/d2d/structedash__packager_1_1media_1_1mp4_1_1MediaHeader-members.html index fde144b85e..4b0e6be1d0 100644 --- a/docs/d2/d2d/structedash__packager_1_1media_1_1mp4_1_1MediaHeader-members.html +++ b/docs/d2/d2d/structedash__packager_1_1media_1_1mp4_1_1MediaHeader-members.html @@ -117,7 +117,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d30/tracks__builder_8cc_source.html b/docs/d2/d30/tracks__builder_8cc_source.html index 0fa9e671ef..5c47278e6e 100644 --- a/docs/d2/d30/tracks__builder_8cc_source.html +++ b/docs/d2/d30/tracks__builder_8cc_source.html @@ -487,7 +487,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d33/video__slice__header__parser_8h_source.html b/docs/d2/d33/video__slice__header__parser_8h_source.html index 8599ee12d2..79d2801063 100644 --- a/docs/d2/d33/video__slice__header__parser_8h_source.html +++ b/docs/d2/d33/video__slice__header__parser_8h_source.html @@ -152,7 +152,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d48/classedash__packager_1_1media_1_1mp2t_1_1AdtsHeader-members.html b/docs/d2/d48/classedash__packager_1_1media_1_1mp2t_1_1AdtsHeader-members.html index 9c672e326d..4e5147349b 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 83f5f903a7..cbb7c2d493 100644 --- a/docs/d2/d4b/structedash__packager_1_1media_1_1FileCloser-members.html +++ b/docs/d2/d4b/structedash__packager_1_1media_1_1FileCloser-members.html @@ -97,7 +97,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d4c/nal__unit__to__byte__stream__converter_8cc_source.html b/docs/d2/d4c/nal__unit__to__byte__stream__converter_8cc_source.html index e773671511..2092444698 100644 --- a/docs/d2/d4c/nal__unit__to__byte__stream__converter_8cc_source.html +++ b/docs/d2/d4c/nal__unit__to__byte__stream__converter_8cc_source.html @@ -291,7 +291,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d4d/file_8h_source.html b/docs/d2/d4d/file_8h_source.html index eafb1e1903..26bf59a523 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 8dc640b51a..4424b5a6ef 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 7dbb8e4c06..612010860d 100644 --- a/docs/d2/d51/classedash__packager_1_1media_1_1WebVttMediaParser.html +++ b/docs/d2/d51/classedash__packager_1_1media_1_1WebVttMediaParser.html @@ -256,7 +256,7 @@ track_id, const scoped_refptr
diff --git a/docs/d2/d51/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize.html b/docs/d2/d51/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize.html index d2a6be30b4..22fd9e3057 100644 --- a/docs/d2/d51/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize.html +++ b/docs/d2/d51/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize.html @@ -188,7 +188,7 @@ Additional Inherited Members diff --git a/docs/d2/d5b/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPmt.html b/docs/d2/d5b/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPmt.html index 39bfcd00be..453ac2efa3 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 39437d9b6f..853a18934d 100644 --- a/docs/d2/d5d/structedash__packager_1_1media_1_1mp4_1_1VideoMediaHeader-members.html +++ b/docs/d2/d5d/structedash__packager_1_1media_1_1mp4_1_1VideoMediaHeader-members.html @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d62/simple__mpd__notifier_8h_source.html b/docs/d2/d62/simple__mpd__notifier_8h_source.html index 8628faea02..82b9ed6818 100644 --- a/docs/d2/d62/simple__mpd__notifier_8h_source.html +++ b/docs/d2/d62/simple__mpd__notifier_8h_source.html @@ -186,7 +186,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d6f/classBandwidthEstimator.html b/docs/d2/d6f/classBandwidthEstimator.html index 9769a2737f..c76d46fbfa 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 e04c1342f5..ab4c4ab417 100644 --- a/docs/d2/d6f/structedash__packager_1_1media_1_1mp4_1_1SchemeInfo.html +++ b/docs/d2/d6f/structedash__packager_1_1media_1_1mp4_1_1SchemeInfo.html @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d2/d72/classedash__packager_1_1media_1_1Nalu.html b/docs/d2/d72/classedash__packager_1_1media_1_1Nalu.html index 01ad1c40f2..9090b761eb 100644 --- a/docs/d2/d72/classedash__packager_1_1media_1_1Nalu.html +++ b/docs/d2/d72/classedash__packager_1_1media_1_1Nalu.html @@ -176,7 +176,7 @@ bool is_video_slice () diff --git a/docs/d2/d76/classedash__packager_1_1media_1_1webm_1_1Encryptor.html b/docs/d2/d76/classedash__packager_1_1media_1_1webm_1_1Encryptor.html index 510d9a1c97..43243c01e0 100644 --- a/docs/d2/d76/classedash__packager_1_1media_1_1webm_1_1Encryptor.html +++ b/docs/d2/d76/classedash__packager_1_1media_1_1webm_1_1Encryptor.html @@ -203,7 +203,7 @@ Public Member Functions diff --git a/docs/d2/d7b/simple__mpd__notifier_8cc_source.html b/docs/d2/d7b/simple__mpd__notifier_8cc_source.html index de31ee620d..5ad23f63a2 100644 --- a/docs/d2/d7b/simple__mpd__notifier_8cc_source.html +++ b/docs/d2/d7b/simple__mpd__notifier_8cc_source.html @@ -239,7 +239,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d7e/aac__audio__specific__config_8h_source.html b/docs/d2/d7e/aac__audio__specific__config_8h_source.html index 92d90b0418..192153896b 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 7f2190f1ff..fcae50512e 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 849d27d960..5d2fb7816b 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 2c69e23ae7..c4d5a306b6 100644 --- a/docs/d2/d98/avc__decoder__configuration_8h_source.html +++ b/docs/d2/d98/avc__decoder__configuration_8h_source.html @@ -153,7 +153,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/da6/threaded__io__file_8h_source.html b/docs/d2/da6/threaded__io__file_8h_source.html index 46110fdf59..5a21d584c9 100644 --- a/docs/d2/da6/threaded__io__file_8h_source.html +++ b/docs/d2/da6/threaded__io__file_8h_source.html @@ -172,7 +172,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/da8/mp4_2segmenter_8cc_source.html b/docs/d2/da8/mp4_2segmenter_8cc_source.html index 27b8826345..2339c56783 100644 --- a/docs/d2/da8/mp4_2segmenter_8cc_source.html +++ b/docs/d2/da8/mp4_2segmenter_8cc_source.html @@ -127,389 +127,399 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
38  0, 0, 0, 0, 0, 0, 0, 0,
39  0, 0, 0, 0, 0, 0, 0, 0
40 };
-
41 COMPILE_ASSERT(arraysize(kKeyRotationDefaultKeyId) == kCencKeyIdSize,
-
42  cenc_key_id_must_be_size_16);
-
43 
-
44 uint64_t Rescale(uint64_t time_in_old_scale,
-
45  uint32_t old_scale,
-
46  uint32_t new_scale) {
-
47  return static_cast<double>(time_in_old_scale) / old_scale * new_scale;
-
48 }
-
49 
-
50 void GenerateSinf(const EncryptionKey& encryption_key,
-
51  FourCC old_type,
-
52  ProtectionSchemeInfo* sinf) {
-
53  sinf->format.format = old_type;
-
54  sinf->type.type = FOURCC_CENC;
-
55  sinf->type.version = kCencSchemeVersion;
-
56  sinf->info.track_encryption.is_encrypted = true;
-
57  sinf->info.track_encryption.default_iv_size =
-
58  encryption_key.iv.empty() ? kDefaultIvSize : encryption_key.iv.size();
-
59  sinf->info.track_encryption.default_kid = encryption_key.key_id;
-
60 }
-
61 
-
62 void GenerateEncryptedSampleEntry(const EncryptionKey& encryption_key,
-
63  double clear_lead_in_seconds,
-
64  SampleDescription* description) {
-
65  DCHECK(description);
-
66  if (description->type == kVideo) {
-
67  DCHECK_EQ(1u, description->video_entries.size());
-
68 
-
69  // Add a second entry for clear content if needed.
-
70  if (clear_lead_in_seconds > 0)
-
71  description->video_entries.push_back(description->video_entries[0]);
-
72 
-
73  // Convert the first entry to an encrypted entry.
-
74  VideoSampleEntry& entry = description->video_entries[0];
-
75  GenerateSinf(encryption_key, entry.format, &entry.sinf);
-
76  entry.format = FOURCC_ENCV;
-
77  } else {
-
78  DCHECK_EQ(kAudio, description->type);
-
79  DCHECK_EQ(1u, description->audio_entries.size());
-
80 
-
81  // Add a second entry for clear content if needed.
-
82  if (clear_lead_in_seconds > 0)
-
83  description->audio_entries.push_back(description->audio_entries[0]);
-
84 
-
85  // Convert the first entry to an encrypted entry.
-
86  AudioSampleEntry& entry = description->audio_entries[0];
-
87  GenerateSinf(encryption_key, entry.format, &entry.sinf);
-
88  entry.format = FOURCC_ENCA;
-
89  }
-
90 }
-
91 
-
92 KeySource::TrackType GetTrackTypeForEncryption(const StreamInfo& stream_info,
-
93  uint32_t max_sd_pixels) {
-
94  if (stream_info.stream_type() == kStreamAudio)
-
95  return KeySource::TRACK_TYPE_AUDIO;
-
96 
-
97  DCHECK_EQ(kStreamVideo, stream_info.stream_type());
-
98  const VideoStreamInfo& video_stream_info =
-
99  static_cast<const VideoStreamInfo&>(stream_info);
-
100  uint32_t pixels = video_stream_info.width() * video_stream_info.height();
-
101  return (pixels > max_sd_pixels) ? KeySource::TRACK_TYPE_HD
-
102  : KeySource::TRACK_TYPE_SD;
-
103 }
-
104 
-
105 } // namespace
-
106 
-
107 Segmenter::Segmenter(const MuxerOptions& options,
-
108  scoped_ptr<FileType> ftyp,
-
109  scoped_ptr<Movie> moov)
-
110  : options_(options),
-
111  ftyp_(ftyp.Pass()),
-
112  moov_(moov.Pass()),
-
113  moof_(new MovieFragment()),
-
114  fragment_buffer_(new BufferWriter()),
-
115  sidx_(new SegmentIndex()),
-
116  muxer_listener_(NULL),
-
117  progress_listener_(NULL),
-
118  progress_target_(0),
-
119  accumulated_progress_(0),
-
120  sample_duration_(0u) {}
-
121 
-
122 Segmenter::~Segmenter() { STLDeleteElements(&fragmenters_); }
-
123 
-
124 Status Segmenter::Initialize(const std::vector<MediaStream*>& streams,
-
125  MuxerListener* muxer_listener,
-
126  ProgressListener* progress_listener,
-
127  KeySource* encryption_key_source,
-
128  uint32_t max_sd_pixels,
-
129  double clear_lead_in_seconds,
-
130  double crypto_period_duration_in_seconds) {
-
131  DCHECK_LT(0u, streams.size());
-
132  muxer_listener_ = muxer_listener;
-
133  progress_listener_ = progress_listener;
-
134  moof_->header.sequence_number = 0;
-
135 
-
136  moof_->tracks.resize(streams.size());
-
137  segment_durations_.resize(streams.size());
-
138  fragmenters_.resize(streams.size());
-
139  const bool key_rotation_enabled = crypto_period_duration_in_seconds != 0;
-
140  const bool kInitialEncryptionInfo = true;
-
141 
-
142  for (uint32_t i = 0; i < streams.size(); ++i) {
-
143  stream_map_[streams[i]] = i;
-
144  moof_->tracks[i].header.track_id = i + 1;
-
145  if (streams[i]->info()->stream_type() == kStreamVideo) {
-
146  // Use the first video stream as the reference stream (which is 1-based).
-
147  if (sidx_->reference_id == 0)
-
148  sidx_->reference_id = i + 1;
-
149  }
-
150  if (!encryption_key_source) {
-
151  fragmenters_[i] = new Fragmenter(&moof_->tracks[i]);
-
152  continue;
-
153  }
-
154 
-
155  KeySource::TrackType track_type =
-
156  GetTrackTypeForEncryption(*streams[i]->info(), max_sd_pixels);
-
157  SampleDescription& description =
-
158  moov_->tracks[i].media.information.sample_table.description;
-
159 
-
160  if (key_rotation_enabled) {
-
161  // Fill encrypted sample entry with default key.
-
162  EncryptionKey encryption_key;
-
163  encryption_key.key_id.assign(
-
164  kKeyRotationDefaultKeyId,
-
165  kKeyRotationDefaultKeyId + arraysize(kKeyRotationDefaultKeyId));
-
166  GenerateEncryptedSampleEntry(encryption_key, clear_lead_in_seconds,
-
167  &description);
-
168 
-
169  if (muxer_listener_) {
-
170  muxer_listener_->OnEncryptionInfoReady(
-
171  kInitialEncryptionInfo, encryption_key.key_id,
-
172  encryption_key.key_system_info);
-
173  }
-
174 
-
175  fragmenters_[i] = new KeyRotationFragmenter(
-
176  moof_.get(), streams[i]->info(), &moof_->tracks[i],
-
177  encryption_key_source, track_type,
-
178  crypto_period_duration_in_seconds * streams[i]->info()->time_scale(),
-
179  clear_lead_in_seconds * streams[i]->info()->time_scale(),
-
180  muxer_listener_);
-
181  continue;
-
182  }
+
41 
+
42 COMPILE_ASSERT(arraysize(kKeyRotationDefaultKeyId) == kCencKeyIdSize,
+
43  cenc_key_id_must_be_size_16);
+
44 
+
45 uint64_t Rescale(uint64_t time_in_old_scale,
+
46  uint32_t old_scale,
+
47  uint32_t new_scale) {
+
48  return static_cast<double>(time_in_old_scale) / old_scale * new_scale;
+
49 }
+
50 
+
51 void GenerateSinf(const EncryptionKey& encryption_key,
+
52  FourCC old_type,
+
53  EncryptionMode encryption_mode,
+
54  ProtectionSchemeInfo* sinf) {
+
55  sinf->format.format = old_type;
+
56 
+
57  if (encryption_mode == kEncryptionModeAesCtr){
+
58  sinf->type.type = FOURCC_CENC;
+
59  } else if (encryption_mode == kEncryptionModeAesCbc) {
+
60  sinf->type.type = FOURCC_CBC1;
+
61  }
+
62 
+
63  sinf->type.version = kCencSchemeVersion;
+
64  sinf->info.track_encryption.is_encrypted = true;
+
65  sinf->info.track_encryption.default_iv_size =
+
66  encryption_key.iv.empty() ? kDefaultIvSize : encryption_key.iv.size();
+
67  sinf->info.track_encryption.default_kid = encryption_key.key_id;
+
68 }
+
69 
+
70 void GenerateEncryptedSampleEntry(const EncryptionKey& encryption_key,
+
71  double clear_lead_in_seconds,
+
72  EncryptionMode encryption_mode,
+
73  SampleDescription* description) {
+
74  DCHECK(description);
+
75  if (description->type == kVideo) {
+
76  DCHECK_EQ(1u, description->video_entries.size());
+
77 
+
78  // Add a second entry for clear content if needed.
+
79  if (clear_lead_in_seconds > 0)
+
80  description->video_entries.push_back(description->video_entries[0]);
+
81 
+
82  // Convert the first entry to an encrypted entry.
+
83  VideoSampleEntry& entry = description->video_entries[0];
+
84  GenerateSinf(encryption_key, entry.format, encryption_mode, &entry.sinf);
+
85  entry.format = FOURCC_ENCV;
+
86  } else {
+
87  DCHECK_EQ(kAudio, description->type);
+
88  DCHECK_EQ(1u, description->audio_entries.size());
+
89 
+
90  // Add a second entry for clear content if needed.
+
91  if (clear_lead_in_seconds > 0)
+
92  description->audio_entries.push_back(description->audio_entries[0]);
+
93 
+
94  // Convert the first entry to an encrypted entry.
+
95  AudioSampleEntry& entry = description->audio_entries[0];
+
96  GenerateSinf(encryption_key, entry.format, encryption_mode, &entry.sinf);
+
97  entry.format = FOURCC_ENCA;
+
98  }
+
99 }
+
100 
+
101 KeySource::TrackType GetTrackTypeForEncryption(const StreamInfo& stream_info,
+
102  uint32_t max_sd_pixels) {
+
103  if (stream_info.stream_type() == kStreamAudio)
+
104  return KeySource::TRACK_TYPE_AUDIO;
+
105 
+
106  DCHECK_EQ(kStreamVideo, stream_info.stream_type());
+
107  const VideoStreamInfo& video_stream_info =
+
108  static_cast<const VideoStreamInfo&>(stream_info);
+
109  uint32_t pixels = video_stream_info.width() * video_stream_info.height();
+
110  return (pixels > max_sd_pixels) ? KeySource::TRACK_TYPE_HD
+
111  : KeySource::TRACK_TYPE_SD;
+
112 }
+
113 
+
114 } // namespace
+
115 
+
116 Segmenter::Segmenter(const MuxerOptions& options,
+
117  scoped_ptr<FileType> ftyp,
+
118  scoped_ptr<Movie> moov)
+
119  : options_(options),
+
120  ftyp_(ftyp.Pass()),
+
121  moov_(moov.Pass()),
+
122  moof_(new MovieFragment()),
+
123  fragment_buffer_(new BufferWriter()),
+
124  sidx_(new SegmentIndex()),
+
125  muxer_listener_(NULL),
+
126  progress_listener_(NULL),
+
127  progress_target_(0),
+
128  accumulated_progress_(0),
+
129  sample_duration_(0u) {}
+
130 
+
131 Segmenter::~Segmenter() { STLDeleteElements(&fragmenters_); }
+
132 
+
133 Status Segmenter::Initialize(const std::vector<MediaStream*>& streams,
+
134  MuxerListener* muxer_listener,
+
135  ProgressListener* progress_listener,
+
136  KeySource* encryption_key_source,
+
137  uint32_t max_sd_pixels,
+
138  double clear_lead_in_seconds,
+
139  double crypto_period_duration_in_seconds,
+
140  EncryptionMode encryption_mode) {
+
141  DCHECK_LT(0u, streams.size());
+
142  muxer_listener_ = muxer_listener;
+
143  progress_listener_ = progress_listener;
+
144  moof_->header.sequence_number = 0;
+
145 
+
146  moof_->tracks.resize(streams.size());
+
147  segment_durations_.resize(streams.size());
+
148  fragmenters_.resize(streams.size());
+
149  const bool key_rotation_enabled = crypto_period_duration_in_seconds != 0;
+
150  const bool kInitialEncryptionInfo = true;
+
151 
+
152  for (uint32_t i = 0; i < streams.size(); ++i) {
+
153  stream_map_[streams[i]] = i;
+
154  moof_->tracks[i].header.track_id = i + 1;
+
155  if (streams[i]->info()->stream_type() == kStreamVideo) {
+
156  // Use the first video stream as the reference stream (which is 1-based).
+
157  if (sidx_->reference_id == 0)
+
158  sidx_->reference_id = i + 1;
+
159  }
+
160  if (!encryption_key_source) {
+
161  fragmenters_[i] = new Fragmenter(&moof_->tracks[i]);
+
162  continue;
+
163  }
+
164 
+
165  KeySource::TrackType track_type =
+
166  GetTrackTypeForEncryption(*streams[i]->info(), max_sd_pixels);
+
167  SampleDescription& description =
+
168  moov_->tracks[i].media.information.sample_table.description;
+
169 
+
170  if (key_rotation_enabled) {
+
171  // Fill encrypted sample entry with default key.
+
172  EncryptionKey encryption_key;
+
173  encryption_key.key_id.assign(
+
174  kKeyRotationDefaultKeyId,
+
175  kKeyRotationDefaultKeyId + arraysize(kKeyRotationDefaultKeyId));
+
176  GenerateEncryptedSampleEntry(encryption_key, clear_lead_in_seconds,
+
177  encryption_mode, &description);
+
178  if (muxer_listener_) {
+
179  muxer_listener_->OnEncryptionInfoReady(
+
180  kInitialEncryptionInfo, encryption_key.key_id,
+
181  encryption_key.key_system_info);
+
182  }
183 
-
184  scoped_ptr<EncryptionKey> encryption_key(new EncryptionKey());
-
185  Status status =
-
186  encryption_key_source->GetKey(track_type, encryption_key.get());
-
187  if (!status.ok())
-
188  return status;
-
189 
-
190  GenerateEncryptedSampleEntry(*encryption_key, clear_lead_in_seconds,
-
191  &description);
+
184  fragmenters_[i] = new KeyRotationFragmenter(
+
185  moof_.get(), streams[i]->info(), &moof_->tracks[i],
+
186  encryption_key_source, track_type,
+
187  crypto_period_duration_in_seconds * streams[i]->info()->time_scale(),
+
188  clear_lead_in_seconds * streams[i]->info()->time_scale(),
+
189  muxer_listener_, encryption_mode);
+
190  continue;
+
191  }
192 
-
193  if (moov_->pssh.empty()) {
-
194  moov_->pssh.resize(encryption_key->key_system_info.size());
-
195  for (size_t i = 0; i < encryption_key->key_system_info.size(); i++) {
-
196  moov_->pssh[i].raw_box = encryption_key->key_system_info[i].CreateBox();
-
197  }
+
193  scoped_ptr<EncryptionKey> encryption_key(new EncryptionKey());
+
194  Status status =
+
195  encryption_key_source->GetKey(track_type, encryption_key.get());
+
196  if (!status.ok())
+
197  return status;
198 
-
199  if (muxer_listener_) {
-
200  muxer_listener_->OnEncryptionInfoReady(kInitialEncryptionInfo,
-
201  encryption_key->key_id,
-
202  encryption_key->key_system_info);
-
203  }
-
204  }
-
205 
-
206  fragmenters_[i] = new EncryptingFragmenter(
-
207  streams[i]->info(), &moof_->tracks[i], encryption_key.Pass(),
-
208  clear_lead_in_seconds * streams[i]->info()->time_scale());
-
209  }
-
210 
-
211  // Choose the first stream if there is no VIDEO.
-
212  if (sidx_->reference_id == 0)
-
213  sidx_->reference_id = 1;
-
214  sidx_->timescale = streams[GetReferenceStreamId()]->info()->time_scale();
-
215 
-
216  // Use media duration as progress target.
-
217  progress_target_ = streams[GetReferenceStreamId()]->info()->duration();
-
218 
-
219  // Use the reference stream's time scale as movie time scale.
-
220  moov_->header.timescale = sidx_->timescale;
-
221  moof_->header.sequence_number = 1;
-
222 
-
223  // Fill in version information.
-
224  moov_->metadata.handler.handler_type = FOURCC_ID32;
-
225  moov_->metadata.id3v2.language.code = "eng";
-
226  moov_->metadata.id3v2.private_frame.owner =
-
227  "https://github.com/google/edash-packager";
-
228  moov_->metadata.id3v2.private_frame.value = options_.packager_version_string;
-
229  return DoInitialize();
-
230 }
-
231 
- -
233  for (std::vector<Fragmenter*>::iterator it = fragmenters_.begin();
-
234  it != fragmenters_.end();
-
235  ++it) {
-
236  Status status = FinalizeFragment(true, *it);
-
237  if (!status.ok())
-
238  return status;
-
239  }
-
240 
-
241  // Set tracks and moov durations.
-
242  // Note that the updated moov box will be written to output file for VOD case
-
243  // only.
-
244  for (std::vector<Track>::iterator track = moov_->tracks.begin();
-
245  track != moov_->tracks.end();
-
246  ++track) {
-
247  track->header.duration = Rescale(track->media.header.duration,
-
248  track->media.header.timescale,
-
249  moov_->header.timescale);
-
250  if (track->header.duration > moov_->header.duration)
-
251  moov_->header.duration = track->header.duration;
-
252  }
-
253  moov_->extends.header.fragment_duration = moov_->header.duration;
-
254 
-
255  return DoFinalize();
-
256 }
-
257 
- -
259  scoped_refptr<MediaSample> sample) {
-
260  // Find the fragmenter for this stream.
-
261  DCHECK(stream);
-
262  DCHECK(stream_map_.find(stream) != stream_map_.end());
-
263  uint32_t stream_id = stream_map_[stream];
-
264  Fragmenter* fragmenter = fragmenters_[stream_id];
-
265 
-
266  // Set default sample duration if it has not been set yet.
-
267  if (moov_->extends.tracks[stream_id].default_sample_duration == 0) {
-
268  moov_->extends.tracks[stream_id].default_sample_duration =
-
269  sample->duration();
-
270  }
-
271 
-
272  if (fragmenter->fragment_finalized()) {
-
273  return Status(error::FRAGMENT_FINALIZED,
-
274  "Current fragment is finalized already.");
-
275  }
-
276 
-
277  bool finalize_fragment = false;
-
278  if (fragmenter->fragment_duration() >=
-
279  options_.fragment_duration * stream->info()->time_scale()) {
-
280  if (sample->is_key_frame() || !options_.fragment_sap_aligned) {
-
281  finalize_fragment = true;
-
282  }
-
283  }
-
284  bool finalize_segment = false;
-
285  if (segment_durations_[stream_id] >=
-
286  options_.segment_duration * stream->info()->time_scale()) {
-
287  if (sample->is_key_frame() || !options_.segment_sap_aligned) {
-
288  finalize_segment = true;
-
289  finalize_fragment = true;
-
290  }
-
291  }
-
292 
-
293  Status status;
-
294  if (finalize_fragment) {
-
295  status = FinalizeFragment(finalize_segment, fragmenter);
-
296  if (!status.ok())
-
297  return status;
-
298  }
-
299 
-
300  status = fragmenter->AddSample(sample);
-
301  if (!status.ok())
-
302  return status;
-
303 
-
304  if (sample_duration_ == 0)
-
305  sample_duration_ = sample->duration();
-
306  moov_->tracks[stream_id].media.header.duration += sample->duration();
-
307  segment_durations_[stream_id] += sample->duration();
-
308  DCHECK_GE(segment_durations_[stream_id], fragmenter->fragment_duration());
-
309  return Status::OK;
-
310 }
-
311 
-
312 uint32_t Segmenter::GetReferenceTimeScale() const {
-
313  return moov_->header.timescale;
-
314 }
-
315 
-
316 double Segmenter::GetDuration() const {
-
317  if (moov_->header.timescale == 0) {
-
318  // Handling the case where this is not properly initialized.
-
319  return 0.0;
-
320  }
+
199  GenerateEncryptedSampleEntry(*encryption_key, clear_lead_in_seconds,
+
200  encryption_mode, &description);
+
201 
+
202  if (moov_->pssh.empty()) {
+
203  moov_->pssh.resize(encryption_key->key_system_info.size());
+
204  for (size_t i = 0; i < encryption_key->key_system_info.size(); i++) {
+
205  moov_->pssh[i].raw_box = encryption_key->key_system_info[i].CreateBox();
+
206  }
+
207 
+
208  if (muxer_listener_) {
+
209  muxer_listener_->OnEncryptionInfoReady(kInitialEncryptionInfo,
+
210  encryption_key->key_id,
+
211  encryption_key->key_system_info);
+
212  }
+
213  }
+
214 
+
215  fragmenters_[i] = new EncryptingFragmenter(
+
216  streams[i]->info(), &moof_->tracks[i], encryption_key.Pass(),
+
217  clear_lead_in_seconds * streams[i]->info()->time_scale(),
+
218  encryption_mode);
+
219  }
+
220 
+
221  // Choose the first stream if there is no VIDEO.
+
222  if (sidx_->reference_id == 0)
+
223  sidx_->reference_id = 1;
+
224  sidx_->timescale = streams[GetReferenceStreamId()]->info()->time_scale();
+
225 
+
226  // Use media duration as progress target.
+
227  progress_target_ = streams[GetReferenceStreamId()]->info()->duration();
+
228 
+
229  // Use the reference stream's time scale as movie time scale.
+
230  moov_->header.timescale = sidx_->timescale;
+
231  moof_->header.sequence_number = 1;
+
232 
+
233  // Fill in version information.
+
234  moov_->metadata.handler.handler_type = FOURCC_ID32;
+
235  moov_->metadata.id3v2.language.code = "eng";
+
236  moov_->metadata.id3v2.private_frame.owner =
+
237  "https://github.com/google/edash-packager";
+
238  moov_->metadata.id3v2.private_frame.value = options_.packager_version_string;
+
239  return DoInitialize();
+
240 }
+
241 
+ +
243  for (std::vector<Fragmenter*>::iterator it = fragmenters_.begin();
+
244  it != fragmenters_.end();
+
245  ++it) {
+
246  Status status = FinalizeFragment(true, *it);
+
247  if (!status.ok())
+
248  return status;
+
249  }
+
250 
+
251  // Set tracks and moov durations.
+
252  // Note that the updated moov box will be written to output file for VOD case
+
253  // only.
+
254  for (std::vector<Track>::iterator track = moov_->tracks.begin();
+
255  track != moov_->tracks.end();
+
256  ++track) {
+
257  track->header.duration = Rescale(track->media.header.duration,
+
258  track->media.header.timescale,
+
259  moov_->header.timescale);
+
260  if (track->header.duration > moov_->header.duration)
+
261  moov_->header.duration = track->header.duration;
+
262  }
+
263  moov_->extends.header.fragment_duration = moov_->header.duration;
+
264 
+
265  return DoFinalize();
+
266 }
+
267 
+ +
269  scoped_refptr<MediaSample> sample) {
+
270  // Find the fragmenter for this stream.
+
271  DCHECK(stream);
+
272  DCHECK(stream_map_.find(stream) != stream_map_.end());
+
273  uint32_t stream_id = stream_map_[stream];
+
274  Fragmenter* fragmenter = fragmenters_[stream_id];
+
275 
+
276  // Set default sample duration if it has not been set yet.
+
277  if (moov_->extends.tracks[stream_id].default_sample_duration == 0) {
+
278  moov_->extends.tracks[stream_id].default_sample_duration =
+
279  sample->duration();
+
280  }
+
281 
+
282  if (fragmenter->fragment_finalized()) {
+
283  return Status(error::FRAGMENT_FINALIZED,
+
284  "Current fragment is finalized already.");
+
285  }
+
286 
+
287  bool finalize_fragment = false;
+
288  if (fragmenter->fragment_duration() >=
+
289  options_.fragment_duration * stream->info()->time_scale()) {
+
290  if (sample->is_key_frame() || !options_.fragment_sap_aligned) {
+
291  finalize_fragment = true;
+
292  }
+
293  }
+
294  bool finalize_segment = false;
+
295  if (segment_durations_[stream_id] >=
+
296  options_.segment_duration * stream->info()->time_scale()) {
+
297  if (sample->is_key_frame() || !options_.segment_sap_aligned) {
+
298  finalize_segment = true;
+
299  finalize_fragment = true;
+
300  }
+
301  }
+
302 
+
303  Status status;
+
304  if (finalize_fragment) {
+
305  status = FinalizeFragment(finalize_segment, fragmenter);
+
306  if (!status.ok())
+
307  return status;
+
308  }
+
309 
+
310  status = fragmenter->AddSample(sample);
+
311  if (!status.ok())
+
312  return status;
+
313 
+
314  if (sample_duration_ == 0)
+
315  sample_duration_ = sample->duration();
+
316  moov_->tracks[stream_id].media.header.duration += sample->duration();
+
317  segment_durations_[stream_id] += sample->duration();
+
318  DCHECK_GE(segment_durations_[stream_id], fragmenter->fragment_duration());
+
319  return Status::OK;
+
320 }
321 
-
322  return static_cast<double>(moov_->header.duration) / moov_->header.timescale;
-
323 }
-
324 
-
325 void Segmenter::UpdateProgress(uint64_t progress) {
-
326  accumulated_progress_ += progress;
-
327 
-
328  if (!progress_listener_) return;
-
329  if (progress_target_ == 0) return;
-
330  // It might happen that accumulated progress exceeds progress_target due to
-
331  // computation errors, e.g. rounding error. Cap it so it never reports > 100%
-
332  // progress.
-
333  if (accumulated_progress_ >= progress_target_) {
-
334  progress_listener_->OnProgress(1.0);
-
335  } else {
-
336  progress_listener_->OnProgress(static_cast<double>(accumulated_progress_) /
-
337  progress_target_);
-
338  }
-
339 }
-
340 
-
341 void Segmenter::SetComplete() {
-
342  if (!progress_listener_) return;
-
343  progress_listener_->OnProgress(1.0);
-
344 }
-
345 
-
346 Status Segmenter::FinalizeSegment() {
-
347  Status status = DoFinalizeSegment();
-
348 
-
349  // Reset segment information to initial state.
-
350  sidx_->references.clear();
-
351  std::vector<uint64_t>::iterator it = segment_durations_.begin();
-
352  for (; it != segment_durations_.end(); ++it)
-
353  *it = 0;
-
354 
-
355  return status;
-
356 }
-
357 
-
358 uint32_t Segmenter::GetReferenceStreamId() {
-
359  DCHECK(sidx_);
-
360  return sidx_->reference_id - 1;
-
361 }
-
362 
-
363 Status Segmenter::FinalizeFragment(bool finalize_segment,
-
364  Fragmenter* fragmenter) {
-
365  fragmenter->FinalizeFragment();
-
366 
-
367  // Check if all tracks are ready for fragmentation.
-
368  for (std::vector<Fragmenter*>::iterator it = fragmenters_.begin();
-
369  it != fragmenters_.end();
-
370  ++it) {
-
371  if (!(*it)->fragment_finalized())
-
372  return Status::OK;
-
373  }
-
374 
-
375  MediaData mdat;
-
376  // Data offset relative to 'moof': moof size + mdat header size.
-
377  // The code will also update box sizes for moof_ and its child boxes.
-
378  uint64_t data_offset = moof_->ComputeSize() + mdat.HeaderSize();
-
379  // 'traf' should follow 'mfhd' moof header box.
-
380  uint64_t next_traf_position = moof_->HeaderSize() + moof_->header.box_size();
-
381  for (size_t i = 0; i < moof_->tracks.size(); ++i) {
-
382  TrackFragment& traf = moof_->tracks[i];
-
383  if (traf.auxiliary_offset.offsets.size() > 0) {
-
384  DCHECK_EQ(traf.auxiliary_offset.offsets.size(), 1u);
-
385  DCHECK(!traf.sample_encryption.sample_encryption_entries.empty());
-
386 
-
387  next_traf_position += traf.box_size();
-
388  // SampleEncryption 'senc' box should be the last box in 'traf'.
-
389  // |auxiliary_offset| should point to the data of SampleEncryption.
-
390  traf.auxiliary_offset.offsets[0] =
-
391  next_traf_position - traf.sample_encryption.box_size() +
-
392  traf.sample_encryption.HeaderSize() +
-
393  sizeof(uint32_t); // for sample count field in 'senc'
-
394  }
-
395  traf.runs[0].data_offset = data_offset + mdat.data_size;
-
396  mdat.data_size += fragmenters_[i]->data()->Size();
-
397  }
-
398 
-
399  // Generate segment reference.
-
400  sidx_->references.resize(sidx_->references.size() + 1);
-
401  fragmenters_[GetReferenceStreamId()]->GenerateSegmentReference(
-
402  &sidx_->references[sidx_->references.size() - 1]);
-
403  sidx_->references[sidx_->references.size() - 1].referenced_size =
-
404  data_offset + mdat.data_size;
-
405 
-
406  // Write the fragment to buffer.
-
407  moof_->Write(fragment_buffer_.get());
-
408  mdat.WriteHeader(fragment_buffer_.get());
-
409  for (Fragmenter* fragmenter : fragmenters_)
-
410  fragment_buffer_->AppendBuffer(*fragmenter->data());
-
411 
-
412  // Increase sequence_number for next fragment.
-
413  ++moof_->header.sequence_number;
-
414 
-
415  if (finalize_segment)
-
416  return FinalizeSegment();
-
417 
-
418  return Status::OK;
-
419 }
-
420 
-
421 } // namespace mp4
-
422 } // namespace media
-
423 } // namespace edash_packager
+
322 uint32_t Segmenter::GetReferenceTimeScale() const {
+
323  return moov_->header.timescale;
+
324 }
+
325 
+
326 double Segmenter::GetDuration() const {
+
327  if (moov_->header.timescale == 0) {
+
328  // Handling the case where this is not properly initialized.
+
329  return 0.0;
+
330  }
+
331 
+
332  return static_cast<double>(moov_->header.duration) / moov_->header.timescale;
+
333 }
+
334 
+
335 void Segmenter::UpdateProgress(uint64_t progress) {
+
336  accumulated_progress_ += progress;
+
337 
+
338  if (!progress_listener_) return;
+
339  if (progress_target_ == 0) return;
+
340  // It might happen that accumulated progress exceeds progress_target due to
+
341  // computation errors, e.g. rounding error. Cap it so it never reports > 100%
+
342  // progress.
+
343  if (accumulated_progress_ >= progress_target_) {
+
344  progress_listener_->OnProgress(1.0);
+
345  } else {
+
346  progress_listener_->OnProgress(static_cast<double>(accumulated_progress_) /
+
347  progress_target_);
+
348  }
+
349 }
+
350 
+
351 void Segmenter::SetComplete() {
+
352  if (!progress_listener_) return;
+
353  progress_listener_->OnProgress(1.0);
+
354 }
+
355 
+
356 Status Segmenter::FinalizeSegment() {
+
357  Status status = DoFinalizeSegment();
+
358 
+
359  // Reset segment information to initial state.
+
360  sidx_->references.clear();
+
361  std::vector<uint64_t>::iterator it = segment_durations_.begin();
+
362  for (; it != segment_durations_.end(); ++it)
+
363  *it = 0;
+
364 
+
365  return status;
+
366 }
+
367 
+
368 uint32_t Segmenter::GetReferenceStreamId() {
+
369  DCHECK(sidx_);
+
370  return sidx_->reference_id - 1;
+
371 }
+
372 
+
373 Status Segmenter::FinalizeFragment(bool finalize_segment,
+
374  Fragmenter* fragmenter) {
+
375  fragmenter->FinalizeFragment();
+
376 
+
377  // Check if all tracks are ready for fragmentation.
+
378  for (std::vector<Fragmenter*>::iterator it = fragmenters_.begin();
+
379  it != fragmenters_.end();
+
380  ++it) {
+
381  if (!(*it)->fragment_finalized())
+
382  return Status::OK;
+
383  }
+
384 
+
385  MediaData mdat;
+
386  // Data offset relative to 'moof': moof size + mdat header size.
+
387  // The code will also update box sizes for moof_ and its child boxes.
+
388  uint64_t data_offset = moof_->ComputeSize() + mdat.HeaderSize();
+
389  // 'traf' should follow 'mfhd' moof header box.
+
390  uint64_t next_traf_position = moof_->HeaderSize() + moof_->header.box_size();
+
391  for (size_t i = 0; i < moof_->tracks.size(); ++i) {
+
392  TrackFragment& traf = moof_->tracks[i];
+
393  if (traf.auxiliary_offset.offsets.size() > 0) {
+
394  DCHECK_EQ(traf.auxiliary_offset.offsets.size(), 1u);
+
395  DCHECK(!traf.sample_encryption.sample_encryption_entries.empty());
+
396 
+
397  next_traf_position += traf.box_size();
+
398  // SampleEncryption 'senc' box should be the last box in 'traf'.
+
399  // |auxiliary_offset| should point to the data of SampleEncryption.
+
400  traf.auxiliary_offset.offsets[0] =
+
401  next_traf_position - traf.sample_encryption.box_size() +
+
402  traf.sample_encryption.HeaderSize() +
+
403  sizeof(uint32_t); // for sample count field in 'senc'
+
404  }
+
405  traf.runs[0].data_offset = data_offset + mdat.data_size;
+
406  mdat.data_size += fragmenters_[i]->data()->Size();
+
407  }
+
408 
+
409  // Generate segment reference.
+
410  sidx_->references.resize(sidx_->references.size() + 1);
+
411  fragmenters_[GetReferenceStreamId()]->GenerateSegmentReference(
+
412  &sidx_->references[sidx_->references.size() - 1]);
+
413  sidx_->references[sidx_->references.size() - 1].referenced_size =
+
414  data_offset + mdat.data_size;
+
415 
+
416  // Write the fragment to buffer.
+
417  moof_->Write(fragment_buffer_.get());
+
418  mdat.WriteHeader(fragment_buffer_.get());
+
419  for (Fragmenter* fragmenter : fragmenters_)
+
420  fragment_buffer_->AppendBuffer(*fragmenter->data());
+
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:42
@@ -520,10 +530,10 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
std::string packager_version_string
Specify the version string to be embedded in the output files.
Definition: muxer_options.h:71
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
- +
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:35
@@ -536,7 +546,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 80803ba8e5..7b7338126e 100644 --- a/docs/d2/dae/webm__muxer_8cc_source.html +++ b/docs/d2/dae/webm__muxer_8cc_source.html @@ -119,103 +119,111 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
30  "Key rotation is not implemented for WebM");
31  }
32 
-
33  scoped_ptr<MkvWriter> writer(new MkvWriter);
-
34  Status status = writer->Open(options().output_file_name);
-
35  if (!status.ok())
-
36  return status;
-
37 
-
38  if (!options().single_segment) {
-
39  segmenter_.reset(new MultiSegmentSegmenter(options()));
-
40  } else if (writer->Seekable()) {
-
41  segmenter_.reset(new SingleSegmentSegmenter(options()));
-
42  } else {
-
43  segmenter_.reset(new TwoPassSingleSegmentSegmenter(options()));
-
44  }
+
33  if (encryption_key_source() && (encryption_mode() != kEncryptionModeAesCtr)) {
+
34  NOTIMPLEMENTED()
+
35  << "WebM muxer does not support encryption mode other than AES-CTR.";
+
36  return Status(
+
37  error::UNIMPLEMENTED,
+
38  "WebM muxer does not support encryption mode other than AES-CTR.");
+
39  }
+
40 
+
41  scoped_ptr<MkvWriter> writer(new MkvWriter);
+
42  Status status = writer->Open(options().output_file_name);
+
43  if (!status.ok())
+
44  return status;
45 
-
46  Status initialized = segmenter_->Initialize(
-
47  writer.Pass(), streams()[0]->info().get(), progress_listener(),
-
48  muxer_listener(), encryption_key_source(), max_sd_pixels(),
-
49  clear_lead_in_seconds());
-
50 
-
51  if (!initialized.ok())
-
52  return initialized;
+
46  if (!options().single_segment) {
+
47  segmenter_.reset(new MultiSegmentSegmenter(options()));
+
48  } else if (writer->Seekable()) {
+
49  segmenter_.reset(new SingleSegmentSegmenter(options()));
+
50  } else {
+
51  segmenter_.reset(new TwoPassSingleSegmentSegmenter(options()));
+
52  }
53 
-
54  FireOnMediaStartEvent();
-
55  return Status::OK;
-
56 }
-
57 
-
58 Status WebMMuxer::Finalize() {
-
59  DCHECK(segmenter_);
-
60  Status segmenter_finalized = segmenter_->Finalize();
+
54  Status initialized = segmenter_->Initialize(
+
55  writer.Pass(), streams()[0]->info().get(), progress_listener(),
+
56  muxer_listener(), encryption_key_source(), max_sd_pixels(),
+
57  clear_lead_in_seconds());
+
58 
+
59  if (!initialized.ok())
+
60  return initialized;
61 
-
62  if (!segmenter_finalized.ok())
-
63  return segmenter_finalized;
-
64 
-
65  FireOnMediaEndEvent();
-
66  LOG(INFO) << "WEBM file '" << options().output_file_name << "' finalized.";
-
67  return Status::OK;
-
68 }
+
62  FireOnMediaStartEvent();
+
63  return Status::OK;
+
64 }
+
65 
+
66 Status WebMMuxer::Finalize() {
+
67  DCHECK(segmenter_);
+
68  Status segmenter_finalized = segmenter_->Finalize();
69 
-
70 Status WebMMuxer::DoAddSample(const MediaStream* stream,
-
71  scoped_refptr<MediaSample> sample) {
-
72  DCHECK(segmenter_);
-
73  DCHECK(stream == streams()[0]);
-
74  return segmenter_->AddSample(sample);
-
75 }
-
76 
-
77 void WebMMuxer::FireOnMediaStartEvent() {
-
78  if (!muxer_listener())
-
79  return;
-
80 
-
81  DCHECK(!streams().empty()) << "Media started without a stream.";
-
82 
-
83  const uint32_t timescale = streams().front()->info()->time_scale();
-
84  muxer_listener()->OnMediaStart(options(), *streams().front()->info(),
-
85  timescale, MuxerListener::kContainerWebM);
-
86 }
-
87 
-
88 void WebMMuxer::FireOnMediaEndEvent() {
-
89  if (!muxer_listener())
-
90  return;
-
91 
-
92  uint32_t init_range_start = 0;
-
93  uint32_t init_range_end = 0;
-
94  const bool has_init_range =
-
95  segmenter_->GetInitRangeStartAndEnd(&init_range_start, &init_range_end);
-
96 
-
97  uint32_t index_range_start = 0;
-
98  uint32_t index_range_end = 0;
-
99  const bool has_index_range = segmenter_->GetIndexRangeStartAndEnd(
-
100  &index_range_start, &index_range_end);
-
101 
-
102  const float duration_seconds = segmenter_->GetDuration();
-
103 
-
104  const int64_t file_size =
-
105  File::GetFileSize(options().output_file_name.c_str());
-
106  if (file_size <= 0) {
-
107  LOG(ERROR) << "Invalid file size: " << file_size;
-
108  return;
-
109  }
-
110 
-
111  muxer_listener()->OnMediaEnd(has_init_range, init_range_start, init_range_end,
-
112  has_index_range, index_range_start,
-
113  index_range_end, duration_seconds, file_size);
-
114 }
-
115 
-
116 } // namespace webm
-
117 } // namespace media
-
118 } // namespace edash_packager
+
70  if (!segmenter_finalized.ok())
+
71  return segmenter_finalized;
+
72 
+
73  FireOnMediaEndEvent();
+
74  LOG(INFO) << "WEBM file '" << options().output_file_name << "' finalized.";
+
75  return Status::OK;
+
76 }
+
77 
+
78 Status WebMMuxer::DoAddSample(const MediaStream* stream,
+
79  scoped_refptr<MediaSample> sample) {
+
80  DCHECK(segmenter_);
+
81  DCHECK(stream == streams()[0]);
+
82  return segmenter_->AddSample(sample);
+
83 }
+
84 
+
85 void WebMMuxer::FireOnMediaStartEvent() {
+
86  if (!muxer_listener())
+
87  return;
+
88 
+
89  DCHECK(!streams().empty()) << "Media started without a stream.";
+
90 
+
91  const uint32_t timescale = streams().front()->info()->time_scale();
+
92  muxer_listener()->OnMediaStart(options(), *streams().front()->info(),
+
93  timescale, MuxerListener::kContainerWebM);
+
94 }
+
95 
+
96 void WebMMuxer::FireOnMediaEndEvent() {
+
97  if (!muxer_listener())
+
98  return;
+
99 
+
100  uint32_t init_range_start = 0;
+
101  uint32_t init_range_end = 0;
+
102  const bool has_init_range =
+
103  segmenter_->GetInitRangeStartAndEnd(&init_range_start, &init_range_end);
+
104 
+
105  uint32_t index_range_start = 0;
+
106  uint32_t index_range_end = 0;
+
107  const bool has_index_range = segmenter_->GetIndexRangeStartAndEnd(
+
108  &index_range_start, &index_range_end);
+
109 
+
110  const float duration_seconds = segmenter_->GetDuration();
+
111 
+
112  const int64_t file_size =
+
113  File::GetFileSize(options().output_file_name.c_str());
+
114  if (file_size <= 0) {
+
115  LOG(ERROR) << "Invalid file size: " << file_size;
+
116  return;
+
117  }
+
118 
+
119  muxer_listener()->OnMediaEnd(has_init_range, init_range_start, init_range_end,
+
120  has_index_range, index_range_start,
+
121  index_range_end, duration_seconds, file_size);
+
122 }
+
123 
+
124 } // namespace webm
+
125 } // namespace media
+
126 } // namespace edash_packager
WebMMuxer(const MuxerOptions &options)
Create a WebMMuxer object from MuxerOptions.
Definition: webm_muxer.cc:21
- +
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
static int64_t GetFileSize(const char *file_name)
Definition: file.cc:175
diff --git a/docs/d2/db7/classedash__packager_1_1media_1_1NaluReader-members.html b/docs/d2/db7/classedash__packager_1_1media_1_1NaluReader-members.html index 7e2f7292f8..a4486ae919 100644 --- a/docs/d2/db7/classedash__packager_1_1media_1_1NaluReader-members.html +++ b/docs/d2/db7/classedash__packager_1_1media_1_1NaluReader-members.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/dc5/structedash__packager_1_1media_1_1mp4_1_1CueSettingsBox-members.html b/docs/d2/dc5/structedash__packager_1_1media_1_1mp4_1_1CueSettingsBox-members.html index 8fab15e3b1..172b33921b 100644 --- a/docs/d2/dc5/structedash__packager_1_1media_1_1mp4_1_1CueSettingsBox-members.html +++ b/docs/d2/dc5/structedash__packager_1_1media_1_1mp4_1_1CueSettingsBox-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/dd6/mkv__writer_8h_source.html b/docs/d2/dd6/mkv__writer_8h_source.html index dd1b9e25c1..312b4bde9d 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 fc6657f79a..c6398e13f8 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 13030eccc3..8823279245 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 e6e6f3fd0a..4024cced7e 100644 --- a/docs/d2/de6/packager__main_8cc_source.html +++ b/docs/d2/de6/packager__main_8cc_source.html @@ -114,456 +114,474 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
25 #include "packager/base/time/clock.h"
26 #include "packager/media/base/container_names.h"
27 #include "packager/media/base/demuxer.h"
-
28 #include "packager/media/base/key_source.h"
-
29 #include "packager/media/base/muxer_options.h"
-
30 #include "packager/media/base/muxer_util.h"
-
31 #include "packager/media/event/mpd_notify_muxer_listener.h"
-
32 #include "packager/media/event/vod_media_info_dump_muxer_listener.h"
-
33 #include "packager/media/file/file.h"
-
34 #include "packager/media/formats/mp4/mp4_muxer.h"
-
35 #include "packager/media/formats/webm/webm_muxer.h"
-
36 #include "packager/mpd/base/dash_iop_mpd_notifier.h"
-
37 #include "packager/mpd/base/media_info.pb.h"
-
38 #include "packager/mpd/base/mpd_builder.h"
-
39 #include "packager/mpd/base/simple_mpd_notifier.h"
-
40 #include "packager/version/version.h"
-
41 
-
42 DEFINE_bool(use_fake_clock_for_muxer,
-
43  false,
-
44  "Set to true to use a fake clock for muxer. With this flag set, "
-
45  "creation time and modification time in outputs are set to 0. "
-
46  "Should only be used for testing.");
-
47 
-
48 namespace {
-
49 const char kUsage[] =
-
50  "Packager driver program. Usage:\n\n"
-
51  "%s [flags] <stream_descriptor> ...\n"
-
52  "stream_descriptor consists of comma separated field_name/value pairs:\n"
-
53  "field_name=value,[field_name=value,]...\n"
-
54  "Supported field names are as follows:\n"
-
55  " - input (in): Required input/source media file path or network stream\n"
-
56  " URL.\n"
-
57  " - stream_selector (stream): Required field with value 'audio',\n"
-
58  " 'video', or stream number (zero based).\n"
-
59  " - output (out): Required output file (single file) or initialization\n"
-
60  " file path (multiple file).\n"
-
61  " - segment_template (segment): Optional value which specifies the\n"
-
62  " naming pattern for the segment files, and that the stream should be\n"
-
63  " split into multiple files. Its presence should be consistent across\n"
-
64  " streams.\n"
-
65  " - bandwidth (bw): Optional value which contains a user-specified\n"
-
66  " content bit rate for the stream, in bits/sec. If specified, this\n"
-
67  " value is propagated to the $Bandwidth$ template parameter for\n"
-
68  " segment names. If not specified, its value may be estimated.\n"
-
69  " - language (lang): Optional value which contains a user-specified\n"
-
70  " language tag. If specified, this value overrides any language\n"
-
71  " metadata in the input track.\n"
-
72  " - output_format (format): Optional value which specifies the format\n"
-
73  " of the output files (MP4 or WebM). If not specified, it will be\n"
-
74  " derived from the file extension of the output file.\n";
-
75 
-
76 const char kMediaInfoSuffix[] = ".media_info";
-
77 
-
78 enum ExitStatus {
-
79  kSuccess = 0,
-
80  kArgumentValidationFailed,
-
81  kPackagingFailed,
-
82  kInternalError,
-
83 };
-
84 
-
85 // TODO(rkuroiwa): Write TTML and WebVTT parser (demuxing) for a better check
-
86 // and for supporting live/segmenting (muxing). With a demuxer and a muxer,
-
87 // CreateRemuxJobs() shouldn't treat text as a special case.
-
88 std::string DetermineTextFileFormat(const std::string& file) {
-
89  std::string content;
-
90  if (!edash_packager::media::File::ReadFileToString(file.c_str(), &content)) {
-
91  LOG(ERROR) << "Failed to open file " << file
-
92  << " to determine file format.";
-
93  return "";
-
94  }
-
95  edash_packager::media::MediaContainerName container_name =
-
96  edash_packager::media::DetermineContainer(
-
97  reinterpret_cast<const uint8_t*>(content.data()), content.size());
-
98  if (container_name == edash_packager::media::CONTAINER_WEBVTT) {
-
99  return "vtt";
-
100  } else if (container_name == edash_packager::media::CONTAINER_TTML) {
-
101  return "ttml";
-
102  }
-
103 
-
104  return "";
-
105 }
-
106 
-
107 } // namespace
-
108 
-
109 namespace edash_packager {
-
110 namespace media {
-
111 
-
112 // A fake clock that always return time 0 (epoch). Should only be used for
-
113 // testing.
-
114 class FakeClock : public base::Clock {
-
115  public:
-
116  base::Time Now() override { return base::Time(); }
-
117 };
-
118 
-
119 // Demux, Mux(es) and worker thread used to remux a source file/stream.
-
120 class RemuxJob : public base::SimpleThread {
-
121  public:
-
122  RemuxJob(scoped_ptr<Demuxer> demuxer)
-
123  : SimpleThread("RemuxJob"),
-
124  demuxer_(demuxer.Pass()) {}
-
125 
-
126  ~RemuxJob() override {
-
127  STLDeleteElements(&muxers_);
-
128  }
-
129 
-
130  void AddMuxer(scoped_ptr<Muxer> mux) {
-
131  muxers_.push_back(mux.release());
-
132  }
-
133 
-
134  Demuxer* demuxer() { return demuxer_.get(); }
-
135  Status status() { return status_; }
-
136 
-
137  private:
-
138  void Run() override {
-
139  DCHECK(demuxer_);
-
140  status_ = demuxer_->Run();
+
28 #include "packager/media/base/encryption_modes.h"
+
29 #include "packager/media/base/key_source.h"
+
30 #include "packager/media/base/muxer_options.h"
+
31 #include "packager/media/base/muxer_util.h"
+
32 #include "packager/media/event/mpd_notify_muxer_listener.h"
+
33 #include "packager/media/event/vod_media_info_dump_muxer_listener.h"
+
34 #include "packager/media/file/file.h"
+
35 #include "packager/media/formats/mp4/mp4_muxer.h"
+
36 #include "packager/media/formats/webm/webm_muxer.h"
+
37 #include "packager/mpd/base/dash_iop_mpd_notifier.h"
+
38 #include "packager/mpd/base/media_info.pb.h"
+
39 #include "packager/mpd/base/mpd_builder.h"
+
40 #include "packager/mpd/base/simple_mpd_notifier.h"
+
41 #include "packager/version/version.h"
+
42 
+
43 DEFINE_bool(use_fake_clock_for_muxer,
+
44  false,
+
45  "Set to true to use a fake clock for muxer. With this flag set, "
+
46  "creation time and modification time in outputs are set to 0. "
+
47  "Should only be used for testing.");
+
48 
+
49 namespace {
+
50 const char kUsage[] =
+
51  "Packager driver program. Usage:\n\n"
+
52  "%s [flags] <stream_descriptor> ...\n"
+
53  "stream_descriptor consists of comma separated field_name/value pairs:\n"
+
54  "field_name=value,[field_name=value,]...\n"
+
55  "Supported field names are as follows:\n"
+
56  " - input (in): Required input/source media file path or network stream\n"
+
57  " URL.\n"
+
58  " - stream_selector (stream): Required field with value 'audio',\n"
+
59  " 'video', or stream number (zero based).\n"
+
60  " - output (out): Required output file (single file) or initialization\n"
+
61  " file path (multiple file).\n"
+
62  " - segment_template (segment): Optional value which specifies the\n"
+
63  " naming pattern for the segment files, and that the stream should be\n"
+
64  " split into multiple files. Its presence should be consistent across\n"
+
65  " streams.\n"
+
66  " - bandwidth (bw): Optional value which contains a user-specified\n"
+
67  " content bit rate for the stream, in bits/sec. If specified, this\n"
+
68  " value is propagated to the $Bandwidth$ template parameter for\n"
+
69  " segment names. If not specified, its value may be estimated.\n"
+
70  " - language (lang): Optional value which contains a user-specified\n"
+
71  " language tag. If specified, this value overrides any language\n"
+
72  " metadata in the input track.\n"
+
73  " - output_format (format): Optional value which specifies the format\n"
+
74  " of the output files (MP4 or WebM). If not specified, it will be\n"
+
75  " derived from the file extension of the output file.\n";
+
76 
+
77 const char kMediaInfoSuffix[] = ".media_info";
+
78 
+
79 enum ExitStatus {
+
80  kSuccess = 0,
+
81  kArgumentValidationFailed,
+
82  kPackagingFailed,
+
83  kInternalError,
+
84 };
+
85 
+
86 // TODO(rkuroiwa): Write TTML and WebVTT parser (demuxing) for a better check
+
87 // and for supporting live/segmenting (muxing). With a demuxer and a muxer,
+
88 // CreateRemuxJobs() shouldn't treat text as a special case.
+
89 std::string DetermineTextFileFormat(const std::string& file) {
+
90  std::string content;
+
91  if (!edash_packager::media::File::ReadFileToString(file.c_str(), &content)) {
+
92  LOG(ERROR) << "Failed to open file " << file
+
93  << " to determine file format.";
+
94  return "";
+
95  }
+
96  edash_packager::media::MediaContainerName container_name =
+
97  edash_packager::media::DetermineContainer(
+
98  reinterpret_cast<const uint8_t*>(content.data()), content.size());
+
99  if (container_name == edash_packager::media::CONTAINER_WEBVTT) {
+
100  return "vtt";
+
101  } else if (container_name == edash_packager::media::CONTAINER_TTML) {
+
102  return "ttml";
+
103  }
+
104 
+
105  return "";
+
106 }
+
107 
+
108 edash_packager::media::EncryptionMode GetEncryptionMode(
+
109  const std::string& protection_scheme) {
+
110  if (protection_scheme == "cenc") {
+
111  return edash_packager::media::kEncryptionModeAesCtr;
+
112  } else if (protection_scheme == "cbc1") {
+
113  return edash_packager::media::kEncryptionModeAesCbc;
+
114  } else {
+
115  LOG(ERROR) << "Protection scheme is unknown.";
+
116  return edash_packager::media::kEncryptionModeUnknown;
+
117  }
+
118 }
+
119 
+
120 } // namespace
+
121 
+
122 namespace edash_packager {
+
123 namespace media {
+
124 
+
125 // A fake clock that always return time 0 (epoch). Should only be used for
+
126 // testing.
+
127 class FakeClock : public base::Clock {
+
128  public:
+
129  base::Time Now() override { return base::Time(); }
+
130 };
+
131 
+
132 // Demux, Mux(es) and worker thread used to remux a source file/stream.
+
133 class RemuxJob : public base::SimpleThread {
+
134  public:
+
135  RemuxJob(scoped_ptr<Demuxer> demuxer)
+
136  : SimpleThread("RemuxJob"),
+
137  demuxer_(demuxer.Pass()) {}
+
138 
+
139  ~RemuxJob() override {
+
140  STLDeleteElements(&muxers_);
141  }
142 
-
143  scoped_ptr<Demuxer> demuxer_;
-
144  std::vector<Muxer*> muxers_;
-
145  Status status_;
+
143  void AddMuxer(scoped_ptr<Muxer> mux) {
+
144  muxers_.push_back(mux.release());
+
145  }
146 
-
147  DISALLOW_COPY_AND_ASSIGN(RemuxJob);
-
148 };
+
147  Demuxer* demuxer() { return demuxer_.get(); }
+
148  Status status() { return status_; }
149 
-
150 bool StreamInfoToTextMediaInfo(const StreamDescriptor& stream_descriptor,
-
151  const MuxerOptions& stream_muxer_options,
-
152  MediaInfo* text_media_info) {
-
153  const std::string& language = stream_descriptor.language;
-
154  std::string format = DetermineTextFileFormat(stream_descriptor.input);
-
155  if (format.empty()) {
-
156  LOG(ERROR) << "Failed to determine the text file format for "
-
157  << stream_descriptor.input;
-
158  return false;
-
159  }
-
160 
-
161  if (!File::Copy(stream_descriptor.input.c_str(),
-
162  stream_muxer_options.output_file_name.c_str())) {
-
163  LOG(ERROR) << "Failed to copy the input file (" << stream_descriptor.input
-
164  << ") to output file (" << stream_muxer_options.output_file_name
-
165  << ").";
-
166  return false;
-
167  }
-
168 
-
169  text_media_info->set_media_file_name(stream_muxer_options.output_file_name);
-
170  text_media_info->set_container_type(MediaInfo::CONTAINER_TEXT);
-
171 
-
172  if (stream_muxer_options.bandwidth != 0) {
-
173  text_media_info->set_bandwidth(stream_muxer_options.bandwidth);
-
174  } else {
-
175  // Text files are usually small and since the input is one file; there's no
-
176  // way for the player to do ranged requests. So set this value to something
-
177  // reasonable.
-
178  text_media_info->set_bandwidth(256);
-
179  }
-
180 
-
181  MediaInfo::TextInfo* text_info = text_media_info->mutable_text_info();
-
182  text_info->set_format(format);
-
183  if (!language.empty())
-
184  text_info->set_language(language);
-
185 
-
186  return true;
-
187 }
-
188 
-
189 scoped_ptr<Muxer> CreateOutputMuxer(const MuxerOptions& options,
-
190  MediaContainerName container) {
-
191  if (container == CONTAINER_WEBM) {
-
192  return scoped_ptr<Muxer>(new webm::WebMMuxer(options));
-
193  } else {
-
194  DCHECK_EQ(container, CONTAINER_MOV);
-
195  return scoped_ptr<Muxer>(new mp4::MP4Muxer(options));
-
196  }
-
197 }
+
150  private:
+
151  void Run() override {
+
152  DCHECK(demuxer_);
+
153  status_ = demuxer_->Run();
+
154  }
+
155 
+
156  scoped_ptr<Demuxer> demuxer_;
+
157  std::vector<Muxer*> muxers_;
+
158  Status status_;
+
159 
+
160  DISALLOW_COPY_AND_ASSIGN(RemuxJob);
+
161 };
+
162 
+
163 bool StreamInfoToTextMediaInfo(const StreamDescriptor& stream_descriptor,
+
164  const MuxerOptions& stream_muxer_options,
+
165  MediaInfo* text_media_info) {
+
166  const std::string& language = stream_descriptor.language;
+
167  std::string format = DetermineTextFileFormat(stream_descriptor.input);
+
168  if (format.empty()) {
+
169  LOG(ERROR) << "Failed to determine the text file format for "
+
170  << stream_descriptor.input;
+
171  return false;
+
172  }
+
173 
+
174  if (!File::Copy(stream_descriptor.input.c_str(),
+
175  stream_muxer_options.output_file_name.c_str())) {
+
176  LOG(ERROR) << "Failed to copy the input file (" << stream_descriptor.input
+
177  << ") to output file (" << stream_muxer_options.output_file_name
+
178  << ").";
+
179  return false;
+
180  }
+
181 
+
182  text_media_info->set_media_file_name(stream_muxer_options.output_file_name);
+
183  text_media_info->set_container_type(MediaInfo::CONTAINER_TEXT);
+
184 
+
185  if (stream_muxer_options.bandwidth != 0) {
+
186  text_media_info->set_bandwidth(stream_muxer_options.bandwidth);
+
187  } else {
+
188  // Text files are usually small and since the input is one file; there's no
+
189  // way for the player to do ranged requests. So set this value to something
+
190  // reasonable.
+
191  text_media_info->set_bandwidth(256);
+
192  }
+
193 
+
194  MediaInfo::TextInfo* text_info = text_media_info->mutable_text_info();
+
195  text_info->set_format(format);
+
196  if (!language.empty())
+
197  text_info->set_language(language);
198 
-
199 bool CreateRemuxJobs(const StreamDescriptorList& stream_descriptors,
-
200  const MuxerOptions& muxer_options,
-
201  FakeClock* fake_clock,
-
202  KeySource* key_source,
-
203  MpdNotifier* mpd_notifier,
-
204  std::vector<RemuxJob*>* remux_jobs) {
-
205  DCHECK(remux_jobs);
-
206 
-
207  std::string previous_input;
-
208  for (StreamDescriptorList::const_iterator stream_iter =
-
209  stream_descriptors.begin();
-
210  stream_iter != stream_descriptors.end();
-
211  ++stream_iter) {
-
212  // Process stream descriptor.
-
213  MuxerOptions stream_muxer_options(muxer_options);
-
214  stream_muxer_options.output_file_name = stream_iter->output;
-
215  if (!stream_iter->segment_template.empty()) {
-
216  if (!ValidateSegmentTemplate(stream_iter->segment_template)) {
-
217  LOG(ERROR) << "ERROR: segment template with '"
-
218  << stream_iter->segment_template << "' is invalid.";
-
219  return false;
-
220  }
-
221  stream_muxer_options.segment_template = stream_iter->segment_template;
-
222  }
-
223  stream_muxer_options.bandwidth = stream_iter->bandwidth;
-
224 
-
225  // Handle text input.
-
226  if (stream_iter->stream_selector == "text") {
-
227  MediaInfo text_media_info;
-
228  if (!StreamInfoToTextMediaInfo(*stream_iter, stream_muxer_options,
-
229  &text_media_info)) {
-
230  return false;
-
231  }
-
232 
-
233  if (mpd_notifier) {
-
234  uint32 unused;
-
235  if (!mpd_notifier->NotifyNewContainer(text_media_info, &unused)) {
-
236  LOG(ERROR) << "Failed to process text file " << stream_iter->input;
-
237  } else {
-
238  mpd_notifier->Flush();
-
239  }
-
240  } else if (FLAGS_output_media_info) {
- -
242  text_media_info,
-
243  stream_muxer_options.output_file_name + kMediaInfoSuffix);
-
244  } else {
-
245  NOTIMPLEMENTED()
-
246  << "--mpd_output or --output_media_info flags are "
-
247  "required for text output. Skipping manifest related output for "
-
248  << stream_iter->input;
-
249  }
-
250  continue;
-
251  }
-
252 
-
253  if (stream_iter->input != previous_input) {
-
254  // New remux job needed. Create demux and job thread.
-
255  scoped_ptr<Demuxer> demuxer(new Demuxer(stream_iter->input));
-
256  if (FLAGS_enable_widevine_decryption ||
-
257  FLAGS_enable_fixed_key_decryption) {
-
258  scoped_ptr<KeySource> key_source(CreateDecryptionKeySource());
-
259  if (!key_source)
-
260  return false;
-
261  demuxer->SetKeySource(key_source.Pass());
+
199  return true;
+
200 }
+
201 
+
202 scoped_ptr<Muxer> CreateOutputMuxer(const MuxerOptions& options,
+
203  MediaContainerName container) {
+
204  if (container == CONTAINER_WEBM) {
+
205  return scoped_ptr<Muxer>(new webm::WebMMuxer(options));
+
206  } else {
+
207  DCHECK_EQ(container, CONTAINER_MOV);
+
208  return scoped_ptr<Muxer>(new mp4::MP4Muxer(options));
+
209  }
+
210 }
+
211 
+
212 bool CreateRemuxJobs(const StreamDescriptorList& stream_descriptors,
+
213  const MuxerOptions& muxer_options,
+
214  FakeClock* fake_clock,
+
215  KeySource* key_source,
+
216  MpdNotifier* mpd_notifier,
+
217  std::vector<RemuxJob*>* remux_jobs) {
+
218  DCHECK(remux_jobs);
+
219 
+
220  std::string previous_input;
+
221  for (StreamDescriptorList::const_iterator stream_iter =
+
222  stream_descriptors.begin();
+
223  stream_iter != stream_descriptors.end();
+
224  ++stream_iter) {
+
225  // Process stream descriptor.
+
226  MuxerOptions stream_muxer_options(muxer_options);
+
227  stream_muxer_options.output_file_name = stream_iter->output;
+
228  if (!stream_iter->segment_template.empty()) {
+
229  if (!ValidateSegmentTemplate(stream_iter->segment_template)) {
+
230  LOG(ERROR) << "ERROR: segment template with '"
+
231  << stream_iter->segment_template << "' is invalid.";
+
232  return false;
+
233  }
+
234  stream_muxer_options.segment_template = stream_iter->segment_template;
+
235  }
+
236  stream_muxer_options.bandwidth = stream_iter->bandwidth;
+
237 
+
238  // Handle text input.
+
239  if (stream_iter->stream_selector == "text") {
+
240  MediaInfo text_media_info;
+
241  if (!StreamInfoToTextMediaInfo(*stream_iter, stream_muxer_options,
+
242  &text_media_info)) {
+
243  return false;
+
244  }
+
245 
+
246  if (mpd_notifier) {
+
247  uint32 unused;
+
248  if (!mpd_notifier->NotifyNewContainer(text_media_info, &unused)) {
+
249  LOG(ERROR) << "Failed to process text file " << stream_iter->input;
+
250  } else {
+
251  mpd_notifier->Flush();
+
252  }
+
253  } else if (FLAGS_output_media_info) {
+ +
255  text_media_info,
+
256  stream_muxer_options.output_file_name + kMediaInfoSuffix);
+
257  } else {
+
258  NOTIMPLEMENTED()
+
259  << "--mpd_output or --output_media_info flags are "
+
260  "required for text output. Skipping manifest related output for "
+
261  << stream_iter->input;
262  }
-
263  Status status = demuxer->Initialize();
-
264  if (!status.ok()) {
-
265  LOG(ERROR) << "Demuxer failed to initialize: " << status.ToString();
-
266  return false;
-
267  }
-
268  if (FLAGS_dump_stream_info) {
-
269  printf("\nFile \"%s\":\n", stream_iter->input.c_str());
-
270  DumpStreamInfo(demuxer->streams());
-
271  if (stream_iter->output.empty())
-
272  continue; // just need stream info.
-
273  }
-
274  remux_jobs->push_back(new RemuxJob(demuxer.Pass()));
-
275  previous_input = stream_iter->input;
-
276  }
-
277  DCHECK(!remux_jobs->empty());
-
278 
-
279  MediaContainerName output_format = stream_iter->output_format;
-
280  if (output_format == CONTAINER_UNKNOWN) {
-
281  output_format =
-
282  DetermineContainerFromFileName(stream_muxer_options.output_file_name);
-
283 
-
284  if (output_format == CONTAINER_UNKNOWN) {
-
285  LOG(ERROR) << "Unable to determine output format for file "
-
286  << stream_muxer_options.output_file_name;
-
287  return false;
-
288  }
+
263  continue;
+
264  }
+
265 
+
266  if (stream_iter->input != previous_input) {
+
267  // New remux job needed. Create demux and job thread.
+
268  scoped_ptr<Demuxer> demuxer(new Demuxer(stream_iter->input));
+
269  if (FLAGS_enable_widevine_decryption ||
+
270  FLAGS_enable_fixed_key_decryption) {
+
271  scoped_ptr<KeySource> key_source(CreateDecryptionKeySource());
+
272  if (!key_source)
+
273  return false;
+
274  demuxer->SetKeySource(key_source.Pass());
+
275  }
+
276  Status status = demuxer->Initialize();
+
277  if (!status.ok()) {
+
278  LOG(ERROR) << "Demuxer failed to initialize: " << status.ToString();
+
279  return false;
+
280  }
+
281  if (FLAGS_dump_stream_info) {
+
282  printf("\nFile \"%s\":\n", stream_iter->input.c_str());
+
283  DumpStreamInfo(demuxer->streams());
+
284  if (stream_iter->output.empty())
+
285  continue; // just need stream info.
+
286  }
+
287  remux_jobs->push_back(new RemuxJob(demuxer.Pass()));
+
288  previous_input = stream_iter->input;
289  }
-
290 
-
291  scoped_ptr<Muxer> muxer(
-
292  CreateOutputMuxer(stream_muxer_options, output_format));
-
293  if (FLAGS_use_fake_clock_for_muxer) muxer->set_clock(fake_clock);
-
294 
-
295  if (key_source) {
-
296  muxer->SetKeySource(key_source,
-
297  FLAGS_max_sd_pixels,
-
298  FLAGS_clear_lead,
-
299  FLAGS_crypto_period_duration);
-
300  }
-
301 
-
302  scoped_ptr<MuxerListener> muxer_listener;
-
303  DCHECK(!(FLAGS_output_media_info && mpd_notifier));
-
304  if (FLAGS_output_media_info) {
-
305  const std::string output_media_info_file_name =
-
306  stream_muxer_options.output_file_name + kMediaInfoSuffix;
-
307  scoped_ptr<VodMediaInfoDumpMuxerListener>
-
308  vod_media_info_dump_muxer_listener(
-
309  new VodMediaInfoDumpMuxerListener(output_media_info_file_name));
-
310  muxer_listener = vod_media_info_dump_muxer_listener.Pass();
-
311  }
-
312  if (mpd_notifier) {
-
313  scoped_ptr<MpdNotifyMuxerListener> mpd_notify_muxer_listener(
-
314  new MpdNotifyMuxerListener(mpd_notifier));
-
315  muxer_listener = mpd_notify_muxer_listener.Pass();
-
316  }
-
317 
-
318  if (muxer_listener)
-
319  muxer->SetMuxerListener(muxer_listener.Pass());
-
320 
-
321  if (!AddStreamToMuxer(remux_jobs->back()->demuxer()->streams(),
-
322  stream_iter->stream_selector,
-
323  stream_iter->language,
-
324  muxer.get()))
-
325  return false;
-
326  remux_jobs->back()->AddMuxer(muxer.Pass());
-
327  }
-
328 
-
329  return true;
-
330 }
+
290  DCHECK(!remux_jobs->empty());
+
291 
+
292  MediaContainerName output_format = stream_iter->output_format;
+
293  if (output_format == CONTAINER_UNKNOWN) {
+
294  output_format =
+
295  DetermineContainerFromFileName(stream_muxer_options.output_file_name);
+
296 
+
297  if (output_format == CONTAINER_UNKNOWN) {
+
298  LOG(ERROR) << "Unable to determine output format for file "
+
299  << stream_muxer_options.output_file_name;
+
300  return false;
+
301  }
+
302  }
+
303 
+
304  scoped_ptr<Muxer> muxer(
+
305  CreateOutputMuxer(stream_muxer_options, output_format));
+
306  if (FLAGS_use_fake_clock_for_muxer) muxer->set_clock(fake_clock);
+
307 
+
308  if (key_source) {
+
309  muxer->SetKeySource(key_source,
+
310  FLAGS_max_sd_pixels,
+
311  FLAGS_clear_lead,
+
312  FLAGS_crypto_period_duration,
+
313  GetEncryptionMode(FLAGS_protection_scheme));
+
314  }
+
315 
+
316  scoped_ptr<MuxerListener> muxer_listener;
+
317  DCHECK(!(FLAGS_output_media_info && mpd_notifier));
+
318  if (FLAGS_output_media_info) {
+
319  const std::string output_media_info_file_name =
+
320  stream_muxer_options.output_file_name + kMediaInfoSuffix;
+
321  scoped_ptr<VodMediaInfoDumpMuxerListener>
+
322  vod_media_info_dump_muxer_listener(
+
323  new VodMediaInfoDumpMuxerListener(output_media_info_file_name));
+
324  muxer_listener = vod_media_info_dump_muxer_listener.Pass();
+
325  }
+
326  if (mpd_notifier) {
+
327  scoped_ptr<MpdNotifyMuxerListener> mpd_notify_muxer_listener(
+
328  new MpdNotifyMuxerListener(mpd_notifier));
+
329  muxer_listener = mpd_notify_muxer_listener.Pass();
+
330  }
331 
-
332 Status RunRemuxJobs(const std::vector<RemuxJob*>& remux_jobs) {
-
333  // Start the job threads.
-
334  for (std::vector<RemuxJob*>::const_iterator job_iter = remux_jobs.begin();
-
335  job_iter != remux_jobs.end();
-
336  ++job_iter) {
-
337  (*job_iter)->Start();
-
338  }
-
339 
-
340  // Wait for all jobs to complete or an error occurs.
-
341  Status status;
-
342  bool all_joined;
-
343  do {
-
344  all_joined = true;
-
345  for (std::vector<RemuxJob*>::const_iterator job_iter = remux_jobs.begin();
-
346  job_iter != remux_jobs.end();
-
347  ++job_iter) {
-
348  if ((*job_iter)->HasBeenJoined()) {
-
349  status = (*job_iter)->status();
-
350  if (!status.ok())
-
351  break;
-
352  } else {
-
353  all_joined = false;
-
354  (*job_iter)->Join();
-
355  }
-
356  }
-
357  } while (!all_joined && status.ok());
-
358 
-
359  return status;
-
360 }
-
361 
-
362 bool RunPackager(const StreamDescriptorList& stream_descriptors) {
-
363  if (!AssignFlagsFromProfile())
-
364  return false;
-
365 
-
366  if (FLAGS_output_media_info && !FLAGS_mpd_output.empty()) {
-
367  NOTIMPLEMENTED() << "ERROR: --output_media_info and --mpd_output do not "
-
368  "work together.";
-
369  return false;
-
370  }
-
371  if (FLAGS_output_media_info && !FLAGS_single_segment) {
-
372  // TODO(rkuroiwa, kqyang): Support partial media info dump for live.
-
373  NOTIMPLEMENTED() << "ERROR: --output_media_info is only supported if "
-
374  "--single_segment is true.";
-
375  return false;
-
376  }
-
377 
-
378  // Get basic muxer options.
-
379  MuxerOptions muxer_options;
-
380  if (!GetMuxerOptions(&muxer_options))
-
381  return false;
-
382 
-
383  MpdOptions mpd_options;
-
384  if (!GetMpdOptions(&mpd_options))
-
385  return false;
-
386 
-
387  // Create encryption key source if needed.
-
388  scoped_ptr<KeySource> encryption_key_source;
-
389  if (FLAGS_enable_widevine_encryption || FLAGS_enable_fixed_key_encryption) {
-
390  encryption_key_source = CreateEncryptionKeySource();
-
391  if (!encryption_key_source)
-
392  return false;
-
393  }
-
394 
-
395  scoped_ptr<MpdNotifier> mpd_notifier;
-
396  if (!FLAGS_mpd_output.empty()) {
-
397  DashProfile profile =
-
398  FLAGS_single_segment ? kOnDemandProfile : kLiveProfile;
-
399  std::vector<std::string> base_urls;
-
400  base::SplitString(FLAGS_base_urls, ',', &base_urls);
-
401  if (FLAGS_generate_dash_if_iop_compliant_mpd) {
-
402  mpd_notifier.reset(new DashIopMpdNotifier(profile, mpd_options, base_urls,
-
403  FLAGS_mpd_output));
-
404  } else {
-
405  mpd_notifier.reset(new SimpleMpdNotifier(profile, mpd_options, base_urls,
-
406  FLAGS_mpd_output));
-
407  }
-
408  if (!mpd_notifier->Init()) {
-
409  LOG(ERROR) << "MpdNotifier failed to initialize.";
+
332  if (muxer_listener)
+
333  muxer->SetMuxerListener(muxer_listener.Pass());
+
334 
+
335  if (!AddStreamToMuxer(remux_jobs->back()->demuxer()->streams(),
+
336  stream_iter->stream_selector,
+
337  stream_iter->language,
+
338  muxer.get()))
+
339  return false;
+
340  remux_jobs->back()->AddMuxer(muxer.Pass());
+
341  }
+
342 
+
343  return true;
+
344 }
+
345 
+
346 Status RunRemuxJobs(const std::vector<RemuxJob*>& remux_jobs) {
+
347  // Start the job threads.
+
348  for (std::vector<RemuxJob*>::const_iterator job_iter = remux_jobs.begin();
+
349  job_iter != remux_jobs.end();
+
350  ++job_iter) {
+
351  (*job_iter)->Start();
+
352  }
+
353 
+
354  // Wait for all jobs to complete or an error occurs.
+
355  Status status;
+
356  bool all_joined;
+
357  do {
+
358  all_joined = true;
+
359  for (std::vector<RemuxJob*>::const_iterator job_iter = remux_jobs.begin();
+
360  job_iter != remux_jobs.end();
+
361  ++job_iter) {
+
362  if ((*job_iter)->HasBeenJoined()) {
+
363  status = (*job_iter)->status();
+
364  if (!status.ok())
+
365  break;
+
366  } else {
+
367  all_joined = false;
+
368  (*job_iter)->Join();
+
369  }
+
370  }
+
371  } while (!all_joined && status.ok());
+
372 
+
373  return status;
+
374 }
+
375 
+
376 bool RunPackager(const StreamDescriptorList& stream_descriptors) {
+
377  EncryptionMode encryption_mode = GetEncryptionMode(FLAGS_protection_scheme);
+
378  if (encryption_mode == kEncryptionModeUnknown)
+
379  return false;
+
380 
+
381  if (!AssignFlagsFromProfile())
+
382  return false;
+
383 
+
384  if (FLAGS_output_media_info && !FLAGS_mpd_output.empty()) {
+
385  NOTIMPLEMENTED() << "ERROR: --output_media_info and --mpd_output do not "
+
386  "work together.";
+
387  return false;
+
388  }
+
389  if (FLAGS_output_media_info && !FLAGS_single_segment) {
+
390  // TODO(rkuroiwa, kqyang): Support partial media info dump for live.
+
391  NOTIMPLEMENTED() << "ERROR: --output_media_info is only supported if "
+
392  "--single_segment is true.";
+
393  return false;
+
394  }
+
395 
+
396  // Get basic muxer options.
+
397  MuxerOptions muxer_options;
+
398  if (!GetMuxerOptions(&muxer_options))
+
399  return false;
+
400 
+
401  MpdOptions mpd_options;
+
402  if (!GetMpdOptions(&mpd_options))
+
403  return false;
+
404 
+
405  // Create encryption key source if needed.
+
406  scoped_ptr<KeySource> encryption_key_source;
+
407  if (FLAGS_enable_widevine_encryption || FLAGS_enable_fixed_key_encryption) {
+
408  encryption_key_source = CreateEncryptionKeySource();
+
409  if (!encryption_key_source)
410  return false;
-
411  }
-
412  }
-
413 
-
414  std::vector<RemuxJob*> remux_jobs;
-
415  STLElementDeleter<std::vector<RemuxJob*> > scoped_jobs_deleter(&remux_jobs);
-
416  FakeClock fake_clock;
-
417  if (!CreateRemuxJobs(stream_descriptors, muxer_options, &fake_clock,
-
418  encryption_key_source.get(), mpd_notifier.get(),
-
419  &remux_jobs)) {
-
420  return false;
-
421  }
-
422 
-
423  Status status = RunRemuxJobs(remux_jobs);
-
424  if (!status.ok()) {
-
425  LOG(ERROR) << "Packaging Error: " << status.ToString();
-
426  return false;
-
427  }
-
428 
-
429  printf("Packaging completed successfully.\n");
-
430  return true;
-
431 }
-
432 
-
433 int PackagerMain(int argc, char** argv) {
-
434  base::AtExitManager exit;
-
435  // Needed to enable VLOG/DVLOG through --vmodule or --v.
-
436  base::CommandLine::Init(argc, argv);
-
437  CHECK(logging::InitLogging(logging::LoggingSettings()));
-
438 
-
439  google::SetUsageMessage(base::StringPrintf(kUsage, argv[0]));
-
440  google::ParseCommandLineFlags(&argc, &argv, true);
-
441  if (argc < 2) {
-
442  std::string version_string =
-
443  base::StringPrintf("edash-packager version %s", kPackagerVersion);
-
444  google::ShowUsageWithFlags(version_string.c_str());
-
445  return kSuccess;
-
446  }
-
447 
- -
449  return kArgumentValidationFailed;
+
411  }
+
412 
+
413  scoped_ptr<MpdNotifier> mpd_notifier;
+
414  if (!FLAGS_mpd_output.empty()) {
+
415  DashProfile profile =
+
416  FLAGS_single_segment ? kOnDemandProfile : kLiveProfile;
+
417  std::vector<std::string> base_urls;
+
418  base::SplitString(FLAGS_base_urls, ',', &base_urls);
+
419  if (FLAGS_generate_dash_if_iop_compliant_mpd) {
+
420  mpd_notifier.reset(new DashIopMpdNotifier(profile, mpd_options, base_urls,
+
421  FLAGS_mpd_output));
+
422  } else {
+
423  mpd_notifier.reset(new SimpleMpdNotifier(profile, mpd_options, base_urls,
+
424  FLAGS_mpd_output));
+
425  }
+
426  if (!mpd_notifier->Init()) {
+
427  LOG(ERROR) << "MpdNotifier failed to initialize.";
+
428  return false;
+
429  }
+
430  }
+
431 
+
432  std::vector<RemuxJob*> remux_jobs;
+
433  STLElementDeleter<std::vector<RemuxJob*> > scoped_jobs_deleter(&remux_jobs);
+
434  FakeClock fake_clock;
+
435  if (!CreateRemuxJobs(stream_descriptors, muxer_options, &fake_clock,
+
436  encryption_key_source.get(), mpd_notifier.get(),
+
437  &remux_jobs)) {
+
438  return false;
+
439  }
+
440 
+
441  Status status = RunRemuxJobs(remux_jobs);
+
442  if (!status.ok()) {
+
443  LOG(ERROR) << "Packaging Error: " << status.ToString();
+
444  return false;
+
445  }
+
446 
+
447  printf("Packaging completed successfully.\n");
+
448  return true;
+
449 }
450 
-
451  edash_packager::media::LibcryptoThreading libcrypto_threading;
-
452  // TODO(tinskip): Make InsertStreamDescriptor a member of
-
453  // StreamDescriptorList.
-
454  StreamDescriptorList stream_descriptors;
-
455  for (int i = 1; i < argc; ++i) {
-
456  if (!InsertStreamDescriptor(argv[i], &stream_descriptors))
-
457  return kArgumentValidationFailed;
-
458  }
-
459  return RunPackager(stream_descriptors) ? kSuccess : kPackagingFailed;
-
460 }
-
461 
-
462 } // namespace media
-
463 } // namespace edash_packager
-
464 
-
465 int main(int argc, char** argv) {
-
466  return edash_packager::media::PackagerMain(argc, argv);
-
467 }
+
451 int PackagerMain(int argc, char** argv) {
+
452  base::AtExitManager exit;
+
453  // Needed to enable VLOG/DVLOG through --vmodule or --v.
+
454  base::CommandLine::Init(argc, argv);
+
455  CHECK(logging::InitLogging(logging::LoggingSettings()));
+
456 
+
457  google::SetUsageMessage(base::StringPrintf(kUsage, argv[0]));
+
458  google::ParseCommandLineFlags(&argc, &argv, true);
+
459  if (argc < 2) {
+
460  std::string version_string =
+
461  base::StringPrintf("edash-packager version %s", kPackagerVersion);
+
462  google::ShowUsageWithFlags(version_string.c_str());
+
463  return kSuccess;
+
464  }
+
465 
+ +
467  return kArgumentValidationFailed;
+
468 
+
469  edash_packager::media::LibcryptoThreading libcrypto_threading;
+
470  // TODO(tinskip): Make InsertStreamDescriptor a member of
+
471  // StreamDescriptorList.
+
472  StreamDescriptorList stream_descriptors;
+
473  for (int i = 1; i < argc; ++i) {
+
474  if (!InsertStreamDescriptor(argv[i], &stream_descriptors))
+
475  return kArgumentValidationFailed;
+
476  }
+
477  return RunPackager(stream_descriptors) ? kSuccess : kPackagingFailed;
+
478 }
+
479 
+
480 } // namespace media
+
481 } // namespace edash_packager
+
482 
+
483 int main(int argc, char** argv) {
+
484  return edash_packager::media::PackagerMain(argc, argv);
+
485 }
static bool ReadFileToString(const char *file_name, std::string *contents)
Definition: file.cc:184
- +
Convenience class which initializes and terminates libcrypto threading.
static bool WriteMediaInfoToFile(const MediaInfo &media_info, const std::string &output_file_path)
static bool Copy(const char *from_file_name, const char *to_file_name)
Definition: file.cc:202
diff --git a/docs/d2/deb/es__parser_8h_source.html b/docs/d2/deb/es__parser_8h_source.html index 1e16918b6e..6ad79b2aec 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 3540d60297..3d5b2df325 100644 --- a/docs/d2/df3/structedash__packager_1_1media_1_1mp4_1_1Edit-members.html +++ b/docs/d2/df3/structedash__packager_1_1media_1_1mp4_1_1Edit-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/df8/structedash__packager_1_1media_1_1mp4_1_1CueSourceIDBox.html b/docs/d2/df8/structedash__packager_1_1media_1_1mp4_1_1CueSourceIDBox.html index 7f560caa81..309b13e022 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 @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d2/dfa/classedash__packager_1_1RepresentationStateChangeListener.html b/docs/d2/dfa/classedash__packager_1_1RepresentationStateChangeListener.html index 8ba050f675..8c035dd2de 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 20fbdb38c0..3125e67242 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 e0b531f35f..525dee6e6a 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 b70f801e6b..bc7e6620d9 100644 --- a/docs/d3/d00/structedash__packager_1_1media_1_1VPxFrameInfo-members.html +++ b/docs/d3/d00/structedash__packager_1_1media_1_1VPxFrameInfo-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d04/classedash__packager_1_1media_1_1WebMAudioClient-members.html b/docs/d3/d04/classedash__packager_1_1media_1_1WebMAudioClient-members.html index f6bafb25eb..267b059cd6 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 66b7e9e1f5..8d48b73471 100644 --- a/docs/d3/d0e/classedash__packager_1_1media_1_1MpdNotifyMuxerListener.html +++ b/docs/d3/d0e/classedash__packager_1_1media_1_1MpdNotifyMuxerListener.html @@ -213,7 +213,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 3b4cf8bb6d..df3b2f1089 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 e2692bc136..f125a937dc 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 db8e5d334f..8b9ae64a22 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 @@ -166,7 +166,7 @@ Additional Inherited Members diff --git a/docs/d3/d2c/structedash__packager_1_1media_1_1mp4_1_1TrackExtends.html b/docs/d3/d2c/structedash__packager_1_1media_1_1mp4_1_1TrackExtends.html index 40bc824730..f48bd7bb89 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 @@ -194,7 +194,7 @@ Additional Inherited Members diff --git a/docs/d3/d2f/structedash__packager_1_1media_1_1mp4_1_1TrackEncryption-members.html b/docs/d3/d2f/structedash__packager_1_1media_1_1mp4_1_1TrackEncryption-members.html index 1efcaf7da1..127cc7dea2 100644 --- a/docs/d3/d2f/structedash__packager_1_1media_1_1mp4_1_1TrackEncryption-members.html +++ b/docs/d3/d2f/structedash__packager_1_1media_1_1mp4_1_1TrackEncryption-members.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d35/video__slice__header__parser_8cc_source.html b/docs/d3/d35/video__slice__header__parser_8cc_source.html index 44c6031ebb..626e451b6d 100644 --- a/docs/d3/d35/video__slice__header__parser_8cc_source.html +++ b/docs/d3/d35/video__slice__header__parser_8cc_source.html @@ -149,7 +149,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d3e/classedash__packager_1_1media_1_1HttpKeyFetcher.html b/docs/d3/d3e/classedash__packager_1_1media_1_1HttpKeyFetcher.html index 38e31466fd..066f00265f 100644 --- a/docs/d3/d3e/classedash__packager_1_1media_1_1HttpKeyFetcher.html +++ b/docs/d3/d3e/classedash__packager_1_1media_1_1HttpKeyFetcher.html @@ -311,7 +311,7 @@ KeyFetcher implementation overrides. diff --git a/docs/d3/d43/structedash__packager_1_1media_1_1mp4_1_1EC3Specific.html b/docs/d3/d43/structedash__packager_1_1media_1_1mp4_1_1EC3Specific.html index 74062b6816..437fdb60db 100644 --- a/docs/d3/d43/structedash__packager_1_1media_1_1mp4_1_1EC3Specific.html +++ b/docs/d3/d43/structedash__packager_1_1media_1_1mp4_1_1EC3Specific.html @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d3/d48/structedash__packager_1_1media_1_1mp4_1_1EditList-members.html b/docs/d3/d48/structedash__packager_1_1media_1_1mp4_1_1EditList-members.html index ca951e5a6d..a657b190e4 100644 --- a/docs/d3/d48/structedash__packager_1_1media_1_1mp4_1_1EditList-members.html +++ b/docs/d3/d48/structedash__packager_1_1media_1_1mp4_1_1EditList-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d52/classedash__packager_1_1media_1_1mp4_1_1ChunkInfoIterator-members.html b/docs/d3/d52/classedash__packager_1_1media_1_1mp4_1_1ChunkInfoIterator-members.html index d681d2c550..7247361f0a 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 e0fffa0736..6006605e0d 100644 --- a/docs/d3/d56/decrypt__config_8cc_source.html +++ b/docs/d3/d56/decrypt__config_8cc_source.html @@ -98,22 +98,26 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
9 namespace edash_packager {
10 namespace media {
11 
-
12 DecryptConfig::DecryptConfig(const std::vector<uint8_t>& key_id,
+
12 DecryptConfig::DecryptConfig(const std::vector<uint8_t>& key_id,
13  const std::vector<uint8_t>& iv,
-
14  const std::vector<SubsampleEntry>& subsamples)
-
15  : key_id_(key_id), iv_(iv), subsamples_(subsamples) {
-
16  CHECK_GT(key_id.size(), 0u);
-
17 }
-
18 
-
19 DecryptConfig::~DecryptConfig() {}
-
20 
-
21 } // namespace media
-
22 } // namespace edash_packager
-
DecryptConfig(const std::vector< uint8_t > &key_id, const std::vector< uint8_t > &iv, const std::vector< SubsampleEntry > &subsamples)
+
14  const std::vector<SubsampleEntry>& subsamples,
+
15  EncryptionMode decryption_mode)
+
16  : key_id_(key_id),
+
17  iv_(iv),
+
18  subsamples_(subsamples),
+
19  decryption_mode_(decryption_mode) {
+
20  CHECK_GT(key_id.size(), 0u);
+
21 }
+
22 
+
23 DecryptConfig::~DecryptConfig() {}
+
24 
+
25 } // namespace media
+
26 } // namespace edash_packager
+
DecryptConfig(const std::vector< uint8_t > &key_id, const std::vector< uint8_t > &iv, const std::vector< SubsampleEntry > &subsamples, EncryptionMode decryption_mode)
diff --git a/docs/d3/d59/structedash__packager_1_1media_1_1mp4_1_1PrivFrame.html b/docs/d3/d59/structedash__packager_1_1media_1_1mp4_1_1PrivFrame.html index efca9c44c2..b375d7ae9a 100644 --- a/docs/d3/d59/structedash__packager_1_1media_1_1mp4_1_1PrivFrame.html +++ b/docs/d3/d59/structedash__packager_1_1media_1_1mp4_1_1PrivFrame.html @@ -129,7 +129,7 @@ std::string value diff --git a/docs/d3/d62/rcheck_8h_source.html b/docs/d3/d62/rcheck_8h_source.html index 2c4333b811..b39ec15328 100644 --- a/docs/d3/d62/rcheck_8h_source.html +++ b/docs/d3/d62/rcheck_8h_source.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d67/structedash__packager_1_1media_1_1mp4_1_1PrivFrame-members.html b/docs/d3/d67/structedash__packager_1_1media_1_1mp4_1_1PrivFrame-members.html index a1d5371875..1425dddde6 100644 --- a/docs/d3/d67/structedash__packager_1_1media_1_1mp4_1_1PrivFrame-members.html +++ b/docs/d3/d67/structedash__packager_1_1media_1_1mp4_1_1PrivFrame-members.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d69/classedash__packager_1_1media_1_1ClusterBuilder.html b/docs/d3/d69/classedash__packager_1_1media_1_1ClusterBuilder.html index 2454c9bf01..c9f2577969 100644 --- a/docs/d3/d69/classedash__packager_1_1media_1_1ClusterBuilder.html +++ b/docs/d3/d69/classedash__packager_1_1media_1_1ClusterBuilder.html @@ -125,7 +125,7 @@ scoped_ptr< diff --git a/docs/d3/d6a/classedash__packager_1_1media_1_1NaluReader.html b/docs/d3/d6a/classedash__packager_1_1media_1_1NaluReader.html index 4172254ff5..313f077b70 100644 --- a/docs/d3/d6a/classedash__packager_1_1media_1_1NaluReader.html +++ b/docs/d3/d6a/classedash__packager_1_1media_1_1NaluReader.html @@ -232,7 +232,7 @@ static bool FindStartCode< diff --git a/docs/d3/d6b/classedash__packager_1_1media_1_1IoCache.html b/docs/d3/d6b/classedash__packager_1_1media_1_1IoCache.html index b9c89898a9..d662fd1c7b 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 9ceb9d3e5c..30dc6f4c9f 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 @@ -191,7 +191,7 @@ Additional Inherited Members diff --git a/docs/d3/d76/muxer__flags_8h_source.html b/docs/d3/d76/muxer__flags_8h_source.html index a7d81f5222..0f2d865f6d 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 2d769dd4f4..8cba1398f5 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 @@ -191,7 +191,7 @@ Additional Inherited Members diff --git a/docs/d3/d80/muxer__util_8h_source.html b/docs/d3/d80/muxer__util_8h_source.html index a658671cb8..8976f03448 100644 --- a/docs/d3/d80/muxer__util_8h_source.html +++ b/docs/d3/d80/muxer__util_8h_source.html @@ -120,7 +120,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d81/classedash__packager_1_1media_1_1MemoryFile.html b/docs/d3/d81/classedash__packager_1_1media_1_1MemoryFile.html index 68d89d5662..4b49506b7f 100644 --- a/docs/d3/d81/classedash__packager_1_1media_1_1MemoryFile.html +++ b/docs/d3/d81/classedash__packager_1_1media_1_1MemoryFile.html @@ -485,7 +485,7 @@ bool  diff --git a/docs/d3/d8a/classedash__packager_1_1RepresentationStateChangeListener-members.html b/docs/d3/d8a/classedash__packager_1_1RepresentationStateChangeListener-members.html index b7e8f117ad..21ae98b029 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 629d36539b..11ae63e6d6 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 4223be2567..e502613aa7 100644 --- a/docs/d3/d8e/classedash__packager_1_1media_1_1webm_1_1TwoPassSingleSegmentSegmenter-members.html +++ b/docs/d3/d8e/classedash__packager_1_1media_1_1webm_1_1TwoPassSingleSegmentSegmenter-members.html @@ -129,7 +129,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d90/ec3__audio__util_8cc_source.html b/docs/d3/d90/ec3__audio__util_8cc_source.html index 8a9c82e34c..754c2ac2d3 100644 --- a/docs/d3/d90/ec3__audio__util_8cc_source.html +++ b/docs/d3/d90/ec3__audio__util_8cc_source.html @@ -245,7 +245,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d9b/structedash__packager_1_1media_1_1VideoStreamInfoParameters-members.html b/docs/d3/d9b/structedash__packager_1_1media_1_1VideoStreamInfoParameters-members.html index 92c43d2989..81314c9eed 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 f08d575ed7..4cdcad1095 100644 --- a/docs/d3/d9f/classedash__packager_1_1media_1_1mp4_1_1ESDescriptor-members.html +++ b/docs/d3/d9f/classedash__packager_1_1media_1_1mp4_1_1ESDescriptor-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/da0/ec3__audio__util_8h_source.html b/docs/d3/da0/ec3__audio__util_8h_source.html index 4cb5ef8876..52073a93fc 100644 --- a/docs/d3/da0/ec3__audio__util_8h_source.html +++ b/docs/d3/da0/ec3__audio__util_8h_source.html @@ -114,7 +114,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/db6/webm__parser_8cc_source.html b/docs/d3/db6/webm__parser_8cc_source.html index b145cb8cfd..920dddf555 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 f62f7b981c..97d4f93493 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 7dc32b606e..58384aba0f 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 ebcfd36bed..fad5976c87 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 @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/d3/dbe/classedash__packager_1_1media_1_1WebMMediaParser-members.html b/docs/d3/dbe/classedash__packager_1_1media_1_1WebMMediaParser-members.html index 97013af3bd..0db87afd83 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 696d59385c..6257d9cefd 100644 --- a/docs/d3/dbe/demuxer_8cc_source.html +++ b/docs/d3/dbe/demuxer_8cc_source.html @@ -345,7 +345,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/dc0/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset-members.html b/docs/d3/dc0/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset-members.html index 86812d6fcc..2207efe72f 100644 --- a/docs/d3/dc0/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset-members.html +++ b/docs/d3/dc0/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/dcc/classedash__packager_1_1media_1_1ProgressListener-members.html b/docs/d3/dcc/classedash__packager_1_1media_1_1ProgressListener-members.html index a695ea0a48..fbeb310d9c 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 8c3811d2d4..7f0345c004 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 a55e226aa4..0282544487 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 @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/d3/de4/seek__head_8h_source.html b/docs/d3/de4/seek__head_8h_source.html index a927f29a01..676d726a1f 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 95b7731fbd..a80a2acf21 100644 --- a/docs/d3/de7/structedash__packager_1_1media_1_1OnMediaEndParameters.html +++ b/docs/d3/de7/structedash__packager_1_1media_1_1OnMediaEndParameters.html @@ -130,7 +130,7 @@ uint64_t file_size diff --git a/docs/d3/dec/classedash__packager_1_1media_1_1H26xBitReader.html b/docs/d3/dec/classedash__packager_1_1media_1_1H26xBitReader.html index 639df969d3..53106cc1c9 100644 --- a/docs/d3/dec/classedash__packager_1_1media_1_1H26xBitReader.html +++ b/docs/d3/dec/classedash__packager_1_1media_1_1H26xBitReader.html @@ -128,7 +128,7 @@ size_t NumEmulationPrevent diff --git a/docs/d3/df1/box__reader_8cc_source.html b/docs/d3/df1/box__reader_8cc_source.html index 2e5fe9703b..e3bdd782f4 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 3ea61bf221..8d38e81ad9 100644 --- a/docs/d3/dfa/classedash__packager_1_1MpdBuilder.html +++ b/docs/d3/dfa/classedash__packager_1_1MpdBuilder.html @@ -385,7 +385,7 @@ class DynamicMpdBuilderTes diff --git a/docs/d3/dfa/structedash__packager_1_1media_1_1H264SliceHeader-members.html b/docs/d3/dfa/structedash__packager_1_1media_1_1H264SliceHeader-members.html index d96e3082ec..12d5bfd566 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 fab4ea1c73..ff9999410a 100644 --- a/docs/d4/d00/mp4_2multi__segment__segmenter_8cc_source.html +++ b/docs/d4/d00/mp4_2multi__segment__segmenter_8cc_source.html @@ -292,18 +292,18 @@ 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:325
+ +
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:335
void Write(BufferWriter *writer)
Definition: box.cc:25
-
void SetComplete()
Set progress to 100%.
Definition: segmenter.cc:341
+
void SetComplete()
Set progress to 100%.
Definition: segmenter.cc:351
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 3378227b16..b837274253 100644 --- a/docs/d4/d0b/structedash__packager_1_1media_1_1mp4_1_1Media-members.html +++ b/docs/d4/d0b/structedash__packager_1_1media_1_1mp4_1_1Media-members.html @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d1d/classedash__packager_1_1media_1_1Muxer.html b/docs/d4/d1d/classedash__packager_1_1media_1_1Muxer.html index 65a76943f2..cb1f9943e3 100644 --- a/docs/d4/d1d/classedash__packager_1_1media_1_1Muxer.html +++ b/docs/d4/d1d/classedash__packager_1_1media_1_1Muxer.html @@ -113,8 +113,8 @@ Public Member Functions  Muxer (const MuxerOptions &options)   -void SetKeySource (KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds) -  +void SetKeySource (KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, EncryptionMode encryption_mode) +  void AddStream (MediaStream *stream)  Add video/audio stream.
@@ -161,6 +161,9 @@ double crypto_period_durat base::Clock * clock ()   + +EncryptionMode encryption_mode () const +  @@ -171,7 +174,7 @@ class 

Detailed Description

Muxer is responsible for taking elementary stream samples and producing media containers. An optional KeySource can be provided to Muxer to generate encrypted outputs.

-

Definition at line 32 of file muxer.h.

+

Definition at line 33 of file muxer.h.

Member Function Documentation

@@ -187,7 +190,7 @@ class 

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

-

Definition at line 78 of file muxer.cc.

+

Definition at line 81 of file muxer.cc.

@@ -220,11 +223,11 @@ class  -

Definition at line 78 of file muxer.h.

+

Definition at line 80 of file muxer.h.

- +

Friends

MediaStream MediaStream MediaStream
@@ -250,7 +253,13 @@ class  - + + + + + + + @@ -270,7 +279,7 @@ class  -

Definition at line 27 of file muxer.cc.

+

Definition at line 28 of file muxer.cc.

@@ -295,7 +304,7 @@ class  -

Definition at line 82 of file muxer.cc.

+

Definition at line 85 of file muxer.cc.

@@ -320,7 +329,7 @@ class  -

Definition at line 86 of file muxer.cc.

+

Definition at line 89 of file muxer.cc.

@@ -331,7 +340,7 @@ class  diff --git a/docs/d4/d37/io__cache_8cc_source.html b/docs/d4/d37/io__cache_8cc_source.html index 746caff078..3e060985e1 100644 --- a/docs/d4/d37/io__cache_8cc_source.html +++ b/docs/d4/d37/io__cache_8cc_source.html @@ -252,7 +252,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d3d/structedash__packager_1_1media_1_1mp4_1_1PixelAspectRatio.html b/docs/d4/d3d/structedash__packager_1_1media_1_1mp4_1_1PixelAspectRatio.html index 03f6690221..2c7340e8d5 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 @@ -176,7 +176,7 @@ Additional Inherited Members diff --git a/docs/d4/d43/classedash__packager_1_1media_1_1KeyFetcher.html b/docs/d4/d43/classedash__packager_1_1media_1_1KeyFetcher.html index 6b901fcc6b..9f734575a7 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/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 86f334418e..6a0f6cca34 100644 --- a/docs/d4/d67/structedash__packager_1_1media_1_1mp4_1_1MovieFragment-members.html +++ b/docs/d4/d67/structedash__packager_1_1media_1_1mp4_1_1MovieFragment-members.html @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
MediaStream double crypto_period_duration_in_seconds crypto_period_duration_in_seconds,
EncryptionMode encryption_mode 
MediaStream MediaStream MediaStream MediaStream
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 d33ece78cf..989815c344 100644 --- a/docs/d4/d72/classedash__packager_1_1media_1_1webm_1_1SingleSegmentSegmenter-members.html +++ b/docs/d4/d72/classedash__packager_1_1media_1_1webm_1_1SingleSegmentSegmenter-members.html @@ -127,7 +127,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d87/nalu__reader_8h_source.html b/docs/d4/d87/nalu__reader_8h_source.html index af90c566b4..17df0182dc 100644 --- a/docs/d4/d87/nalu__reader_8h_source.html +++ b/docs/d4/d87/nalu__reader_8h_source.html @@ -259,7 +259,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d8c/classedash__packager_1_1media_1_1MkvWriter.html b/docs/d4/d8c/classedash__packager_1_1media_1_1MkvWriter.html index 843ab74a7b..0259c2a9d9 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 9c246dc5e3..57f4781f69 100644 --- a/docs/d4/d8f/structedash__packager_1_1media_1_1mp4_1_1MovieHeader-members.html +++ b/docs/d4/d8f/structedash__packager_1_1media_1_1mp4_1_1MovieHeader-members.html @@ -119,7 +119,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d90/classedash__packager_1_1media_1_1mp4_1_1DecodingTimeIterator.html b/docs/d4/d90/classedash__packager_1_1media_1_1mp4_1_1DecodingTimeIterator.html index 9564596c9c..13d37b9c43 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 bd333c857f..d7198c38ab 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 @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d4/d93/structedash__packager_1_1media_1_1H264SEIMessage.html b/docs/d4/d93/structedash__packager_1_1media_1_1H264SEIMessage.html index 725c93a1b6..1af92d997f 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 900a2f8eb8..67b9b612fe 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 07083046fe..4f9dbb0f3f 100644 --- a/docs/d4/da1/classedash__packager_1_1media_1_1DecryptConfig.html +++ b/docs/d4/da1/classedash__packager_1_1media_1_1DecryptConfig.html @@ -99,8 +99,8 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); - - + + @@ -111,6 +111,9 @@ const std::vector< uint8_t > &  + +

Public Member Functions

 DecryptConfig (const std::vector< uint8_t > &key_id, const std::vector< uint8_t > &iv, const std::vector< SubsampleEntry > &subsamples)
 
 DecryptConfig (const std::vector< uint8_t > &key_id, const std::vector< uint8_t > &iv, const std::vector< SubsampleEntry > &subsamples, EncryptionMode decryption_mode)
 
const std::vector< uint8_t > & key_id () const
 
< SubsampleEntry > & subsamples () const
 
+EncryptionMode decryption_mode () const
 
@@ -122,9 +125,9 @@ static const size_t 

Static Public Attributes

Detailed Description

Contains all the information that a decryptor needs to decrypt a media sample.

-

Definition at line 39 of file decrypt_config.h.

+

Definition at line 40 of file decrypt_config.h.

Constructor & Destructor Documentation

- +
@@ -144,7 +147,13 @@ static const size_t  - + + + + + + + @@ -158,6 +167,7 @@ static const size_t  +
const std::vector< SubsampleEntry > & subsamples subsamples,
EncryptionMode decryption_mode 
key_idis the ID that references the decryption key.
ivis the initialization vector defined by the encryptor.
subsamplesdefines the clear and encrypted portions of the sample as described in SubsampleEntry. A decrypted buffer will be equal in size to the sum of the subsample sizes.
decryption_modedecryption_mode is to determine which decryptor to use.
@@ -173,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 a5e9139166..980b560c8c 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 @@ -93,17 +93,25 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');

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

- - - - - - - + + + + + + + + + + + + + + +
AesCbcCtsEncryptor() (defined in edash_packager::media::AesCbcCtsEncryptor)edash_packager::media::AesCbcCtsEncryptor
Encrypt(const uint8_t *plaintext, size_t size, uint8_t *ciphertext)edash_packager::media::AesCbcCtsEncryptor
Encrypt(const std::vector< uint8_t > &plaintext, std::vector< uint8_t > *ciphertext)edash_packager::media::AesCbcCtsEncryptor
InitializeWithIv(const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv)edash_packager::media::AesCbcCtsEncryptor
iv() const (defined in edash_packager::media::AesCbcCtsEncryptor)edash_packager::media::AesCbcCtsEncryptorinline
SetIv(const std::vector< uint8_t > &iv)edash_packager::media::AesCbcCtsEncryptor
~AesCbcCtsEncryptor() (defined in edash_packager::media::AesCbcCtsEncryptor)edash_packager::media::AesCbcCtsEncryptor
aes_key_ (defined in edash_packager::media::AesEncryptor)edash_packager::media::AesEncryptorprotected
AesCbcCtsEncryptor() (defined in edash_packager::media::AesCbcCtsEncryptor)edash_packager::media::AesCbcCtsEncryptor
AesEncryptor() (defined in edash_packager::media::AesEncryptor)edash_packager::media::AesEncryptor
Encrypt(const std::vector< uint8_t > &plaintext, std::vector< uint8_t > *ciphertext) (defined in edash_packager::media::AesEncryptor)edash_packager::media::AesEncryptor
Encrypt(const std::string &plaintext, std::string *ciphertext) (defined in edash_packager::media::AesEncryptor)edash_packager::media::AesEncryptor
EncryptData(const uint8_t *plaintext, size_t plaintext_size, uint8_t *ciphertext) override (defined in edash_packager::media::AesCbcCtsEncryptor)edash_packager::media::AesCbcCtsEncryptorvirtual
InitializeWithIv(const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv) overrideedash_packager::media::AesCbcCtsEncryptorvirtual
InitializeWithRandomIv(const std::vector< uint8_t > &key, uint8_t iv_size)edash_packager::media::AesEncryptorvirtual
iv() const (defined in edash_packager::media::AesEncryptor)edash_packager::media::AesEncryptorinline
iv_ (defined in edash_packager::media::AesEncryptor)edash_packager::media::AesEncryptorprotected
NumPaddingBytes(size_t size) override (defined in edash_packager::media::AesCbcCtsEncryptor)edash_packager::media::AesCbcCtsEncryptorvirtual
SetIv(const std::vector< uint8_t > &iv) overrideedash_packager::media::AesCbcCtsEncryptorvirtual
UpdateIv() overrideedash_packager::media::AesCbcCtsEncryptorvirtual
~AesCbcCtsEncryptor() override (defined in edash_packager::media::AesCbcCtsEncryptor)edash_packager::media::AesCbcCtsEncryptor
~AesEncryptor() (defined in edash_packager::media::AesEncryptor)edash_packager::media::AesEncryptorvirtual
diff --git a/docs/d4/da7/segmenter__test__base_8cc_source.html b/docs/d4/da7/segmenter__test__base_8cc_source.html index 56cab0cf99..5b7d99cace 100644 --- a/docs/d4/da7/segmenter__test__base_8cc_source.html +++ b/docs/d4/da7/segmenter__test__base_8cc_source.html @@ -309,7 +309,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/db2/cluster__builder_8h_source.html b/docs/d4/db2/cluster__builder_8h_source.html index 12ec81bd49..3e03cbd3a0 100644 --- a/docs/d4/db2/cluster__builder_8h_source.html +++ b/docs/d4/db2/cluster__builder_8h_source.html @@ -176,7 +176,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/dbe/classedash__packager_1_1media_1_1NalUnitToByteStreamConverter.html b/docs/d4/dbe/classedash__packager_1_1media_1_1NalUnitToByteStreamConverter.html index af0ffc6588..9f976abdcc 100644 --- a/docs/d4/dbe/classedash__packager_1_1media_1_1NalUnitToByteStreamConverter.html +++ b/docs/d4/dbe/classedash__packager_1_1media_1_1NalUnitToByteStreamConverter.html @@ -213,7 +213,7 @@ class 
NalUnitToByteStreamC diff --git a/docs/d4/dca/structedash__packager_1_1media_1_1H264SEIRecoveryPoint.html b/docs/d4/dca/structedash__packager_1_1media_1_1H264SEIRecoveryPoint.html index 6403647636..ecc03f7cc2 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 df60d84c0f..d2b70a5521 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 08f42365df..f4a78f4dc8 100644 --- a/docs/d4/dcc/structedash__packager_1_1media_1_1mp4_1_1SchemeType.html +++ b/docs/d4/dcc/structedash__packager_1_1media_1_1mp4_1_1SchemeType.html @@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/d4/dcd/classedash__packager_1_1media_1_1OffsetByteQueue-members.html b/docs/d4/dcd/classedash__packager_1_1media_1_1OffsetByteQueue-members.html index 6aaaec1acc..3fe44917c7 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 b0fc2511c0..4415f30eef 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 9bf5e38efb..43305e9e23 100644 --- a/docs/d4/dd3/bit__reader_8h_source.html +++ b/docs/d4/dd3/bit__reader_8h_source.html @@ -178,7 +178,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/dd9/structedash__packager_1_1media_1_1mp4_1_1TrackFragment.html b/docs/d4/dd9/structedash__packager_1_1media_1_1mp4_1_1TrackFragment.html index 4d4224e0fe..c372f15bb9 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 @@ -197,7 +197,7 @@ Additional Inherited Members diff --git a/docs/d4/dde/webvtt__util_8h_source.html b/docs/d4/dde/webvtt__util_8h_source.html index a052e6beba..8871ac94a9 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 37cd503cce..8fe9d202f1 100644 --- a/docs/d4/de4/structedash__packager_1_1media_1_1SubsampleEntry.html +++ b/docs/d4/de4/structedash__packager_1_1media_1_1SubsampleEntry.html @@ -115,14 +115,14 @@ uint32_t cipher_bytes<

Detailed Description

The Common Encryption spec provides for subsample encryption, where portions of a sample are not encrypted. A SubsampleEntry specifies the number of clear and encrypted bytes in each subsample. For decryption, all of the encrypted bytes in a sample should be considered a single logical stream, regardless of how they are divided into subsamples, and the clear bytes should not be considered as part of decryption. This is logically equivalent to concatenating all cipher_bytes portions of subsamples, decrypting that result, and then copying each byte from the decrypted block over the corresponding encrypted byte.

-

Definition at line 27 of file decrypt_config.h.

+

Definition at line 28 of file decrypt_config.h.


The documentation for this struct was generated from the following file: 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 9abe304b39..59954f4cb4 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 446b0bc9c9..dbca6d4c5a 100644 --- a/docs/d4/de7/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize-members.html +++ b/docs/d4/de7/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize-members.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/df5/request__signer_8cc_source.html b/docs/d4/df5/request__signer_8cc_source.html index f2e8161365..2ca0e6bc36 100644 --- a/docs/d4/df5/request__signer_8cc_source.html +++ b/docs/d4/df5/request__signer_8cc_source.html @@ -172,11 +172,11 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
static RsaRequestSigner * CreateSigner(const std::string &signer_name, const std::string &pkcs1_rsa_key)
RsaRequestSigner uses RSA-PSS signing.
Abstract class used for signature generation.
- + diff --git a/docs/d4/df9/structedash__packager_1_1MpdOptions-members.html b/docs/d4/df9/structedash__packager_1_1MpdOptions-members.html index 4233316009..c0c6643e78 100644 --- a/docs/d4/df9/structedash__packager_1_1MpdOptions-members.html +++ b/docs/d4/df9/structedash__packager_1_1MpdOptions-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/dff/webm__media__parser_8cc_source.html b/docs/d4/dff/webm__media__parser_8cc_source.html index d7359b8704..5517b411b1 100644 --- a/docs/d4/dff/webm__media__parser_8cc_source.html +++ b/docs/d4/dff/webm__media__parser_8cc_source.html @@ -364,7 +364,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d02/classedash__packager_1_1media_1_1ProducerConsumerQueue.html b/docs/d5/d02/classedash__packager_1_1media_1_1ProducerConsumerQueue.html index 9dd690e9f0..f7ab43fbe4 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/d0a/classedash__packager_1_1media_1_1AesDecryptor-members.html b/docs/d5/d0a/classedash__packager_1_1media_1_1AesDecryptor-members.html new file mode 100644 index 0000000000..8f883143df --- /dev/null +++ b/docs/d5/d0a/classedash__packager_1_1media_1_1AesDecryptor-members.html @@ -0,0 +1,114 @@ + + + + + + +DASH Media Packaging SDK: Member List + + + + + + + + + +
+
+ + + + + + +
+
DASH Media Packaging SDK +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
edash_packager::media::AesDecryptor Member List
+
+
+ +

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

+ + + + + + + + + + + +
aes_key_ (defined in edash_packager::media::AesDecryptor)edash_packager::media::AesDecryptorprotected
AesDecryptor() (defined in edash_packager::media::AesDecryptor)edash_packager::media::AesDecryptor
Decrypt(const uint8_t *ciphertext, size_t ciphertext_size, uint8_t *plaintext)=0 (defined in edash_packager::media::AesDecryptor)edash_packager::media::AesDecryptorpure virtual
Decrypt(const std::vector< uint8_t > &ciphertext, std::vector< uint8_t > *plaintext)=0 (defined in edash_packager::media::AesDecryptor)edash_packager::media::AesDecryptorpure virtual
Decrypt(const std::string &ciphertext, std::string *plaintext)=0 (defined in edash_packager::media::AesDecryptor)edash_packager::media::AesDecryptorpure virtual
InitializeWithIv(const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv)=0 (defined in edash_packager::media::AesDecryptor)edash_packager::media::AesDecryptorpure virtual
iv() const (defined in edash_packager::media::AesDecryptor)edash_packager::media::AesDecryptorinline
iv_ (defined in edash_packager::media::AesDecryptor)edash_packager::media::AesDecryptorprotected
SetIv(const std::vector< uint8_t > &iv)=0edash_packager::media::AesDecryptorpure virtual
~AesDecryptor() (defined in edash_packager::media::AesDecryptor)edash_packager::media::AesDecryptorvirtual
+ + + + diff --git a/docs/d5/d15/producer__consumer__queue_8h_source.html b/docs/d5/d15/producer__consumer__queue_8h_source.html index 8bf14b9e22..abbdb200c8 100644 --- a/docs/d5/d15/producer__consumer__queue_8h_source.html +++ b/docs/d5/d15/producer__consumer__queue_8h_source.html @@ -374,7 +374,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d18/structedash__packager_1_1media_1_1mp4_1_1CueIDBox-members.html b/docs/d5/d18/structedash__packager_1_1media_1_1mp4_1_1CueIDBox-members.html index 6fed6d7b0c..9634daccb8 100644 --- a/docs/d5/d18/structedash__packager_1_1media_1_1mp4_1_1CueIDBox-members.html +++ b/docs/d5/d18/structedash__packager_1_1media_1_1mp4_1_1CueIDBox-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d1a/ts__section_8h_source.html b/docs/d5/d1a/ts__section_8h_source.html index 04dd4d53ea..c97c606eca 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 3676a15f9c..886813b6cb 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 82f5bce65d..d5ac557169 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 2ac6339b37..8ee11d25c0 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 7363ad15c5..9b1025df64 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 50f31c4fff..011ba0dfe6 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 c2befbe16a..9f2f54194c 100644 --- a/docs/d5/d41/hevc__decoder__configuration_8cc_source.html +++ b/docs/d5/d41/hevc__decoder__configuration_8cc_source.html @@ -256,7 +256,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d4a/classedash__packager_1_1media_1_1mp2t_1_1TsPacket-members.html b/docs/d5/d4a/classedash__packager_1_1media_1_1mp2t_1_1TsPacket-members.html index ef7c804121..4c032af2fb 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 ef209513db..8048ac2daf 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 a76894e253..3e029f796e 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 9dfe6948cf..af3caa057b 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 2cfcaa93c6..dc33e7dd01 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 4614f8bd47..0b62c6b6dd 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/d65/encryption__modes_8h_source.html b/docs/d5/d65/encryption__modes_8h_source.html new file mode 100644 index 0000000000..64351a57aa --- /dev/null +++ b/docs/d5/d65/encryption__modes_8h_source.html @@ -0,0 +1,120 @@ + + + + + + +DASH Media Packaging SDK: media/base/encryption_modes.h Source File + + + + + + + + + +
+
+ + + + + + +
+
DASH Media Packaging SDK +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
encryption_modes.h
+
+
+
1 // Copyright 2016 Google Inc. All rights reserved.
+
2 //
+
3 // Use of this source code is governed by a BSD-style
+
4 // license that can be found in the LICENSE file or at
+
5 // https://developers.google.com/open-source/licenses/bsd
+
6 
+
7 #ifndef MEDIA_BASE_ENCRYPTION_MODE_H_
+
8 #define MEDIA_BASE_ENCRYPTION_MODE_H_
+
9 
+
10 namespace edash_packager {
+
11 namespace media {
+
12 
+
14 enum EncryptionMode {
+
15  kEncryptionModeUnknown,
+
16  kEncryptionModeAesCtr,
+
17  kEncryptionModeAesCbc
+
18 };
+
19 
+
20 } // namespace media
+
21 } // namespace edash_packager
+
22 
+
23 #endif // MEDIA_BASE_ENCRYPTION_MODE_H_
+
+ + + + 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 f071773325..79b6308993 100644 --- a/docs/d5/d6e/structedash__packager_1_1media_1_1mp4_1_1MovieExtendsHeader-members.html +++ b/docs/d5/d6e/structedash__packager_1_1media_1_1mp4_1_1MovieExtendsHeader-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d6f/vlog__flags_8cc_source.html b/docs/d5/d6f/vlog__flags_8cc_source.html index 33f41a00c8..3a49b06552 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 c0849d9c39..f0dbe1022f 100644 --- a/docs/d5/d73/vp__codec__configuration_8h_source.html +++ b/docs/d5/d73/vp__codec__configuration_8h_source.html @@ -192,7 +192,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d78/structedash__packager_1_1media_1_1mp4_1_1SampleEncryption.html b/docs/d5/d78/structedash__packager_1_1media_1_1mp4_1_1SampleEncryption.html index 578dbb4f0f..bf8d78184a 100644 --- a/docs/d5/d78/structedash__packager_1_1media_1_1mp4_1_1SampleEncryption.html +++ b/docs/d5/d78/structedash__packager_1_1media_1_1mp4_1_1SampleEncryption.html @@ -250,7 +250,7 @@ Additional Inherited Members diff --git a/docs/d5/d7a/structedash__packager_1_1Element.html b/docs/d5/d7a/structedash__packager_1_1Element.html index 44a00c5246..c0ac021b7f 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 11f2a4e13b..2b309dab3c 100644 --- a/docs/d5/d7b/box__definitions_8h_source.html +++ b/docs/d5/d7b/box__definitions_8h_source.html @@ -945,7 +945,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 6920b3c0db..a730012ff9 100644 --- a/docs/d5/d89/widevine__key__source_8cc_source.html +++ b/docs/d5/d89/widevine__key__source_8cc_source.html @@ -703,7 +703,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 63952bad80..3d862559d2 100644 --- a/docs/d5/d8f/webm__cluster__parser_8cc_source.html +++ b/docs/d5/d8f/webm__cluster__parser_8cc_source.html @@ -740,7 +740,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d91/es__parser__adts_8cc_source.html b/docs/d5/d91/es__parser__adts_8cc_source.html index ab128809f9..e6ee002ba2 100644 --- a/docs/d5/d91/es__parser__adts_8cc_source.html +++ b/docs/d5/d91/es__parser__adts_8cc_source.html @@ -376,7 +376,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d98/encryptor_8cc_source.html b/docs/d5/d98/encryptor_8cc_source.html index d1f93f37d5..91809b0521 100644 --- a/docs/d5/d98/encryptor_8cc_source.html +++ b/docs/d5/d98/encryptor_8cc_source.html @@ -167,7 +167,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
78  uint8_t* sample_data = sample->writable_data();
79 
80  // Encrypt the data in-place.
-
81  if (!encryptor_->Encrypt(sample_data, sample_size, sample_data)) {
+
81  if (!encryptor_->EncryptData(sample_data, sample_size, sample_data)) {
82  return Status(error::MUXER_FAILURE, "Failed to encrypt the frame.");
83  }
84 
@@ -228,12 +228,12 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:35
Status Initialize(MuxerListener *muxer_listener, KeySource::TrackType track_type, KeySource *key_source)
Definition: encryptor.cc:57
- +
Status AddTrackInfo(mkvmuxer::Track *track)
Definition: encryptor.cc:64
diff --git a/docs/d5/d98/structedash__packager_1_1media_1_1H264Pps-members.html b/docs/d5/d98/structedash__packager_1_1media_1_1H264Pps-members.html index 97a5385cc4..cc7af35615 100644 --- a/docs/d5/d98/structedash__packager_1_1media_1_1H264Pps-members.html +++ b/docs/d5/d98/structedash__packager_1_1media_1_1H264Pps-members.html @@ -117,7 +117,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d9c/classedash__packager_1_1MpdNotifierFactory-members.html b/docs/d5/d9c/classedash__packager_1_1MpdNotifierFactory-members.html index ba13d098ef..5cbca92e94 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 9201b91b07..1cfa8b2436 100644 --- a/docs/d5/da4/aes__encryptor_8cc_source.html +++ b/docs/d5/da4/aes__encryptor_8cc_source.html @@ -129,446 +129,298 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
40 namespace edash_packager {
41 namespace media {
42 
-
43 AesCtrEncryptor::AesCtrEncryptor()
-
44  : block_offset_(0),
-
45  encrypted_counter_(AES_BLOCK_SIZE, 0),
-
46  counter_overflow_(false) {
-
47  COMPILE_ASSERT(AES_BLOCK_SIZE == kCencKeySize,
-
48  cenc_key_size_should_be_the_same_as_aes_block_size);
-
49 }
-
50 
-
51 AesCtrEncryptor::~AesCtrEncryptor() {}
-
52 
-
53 bool AesCtrEncryptor::InitializeWithRandomIv(const std::vector<uint8_t>& key,
-
54  uint8_t iv_size) {
-
55  std::vector<uint8_t> iv(iv_size, 0);
-
56  if (RAND_bytes(&iv[0], iv_size) != 1) {
-
57  LOG(ERROR) << "RAND_bytes failed with error: "
-
58  << ERR_error_string(ERR_get_error(), NULL);
-
59  return false;
-
60  }
-
61  return InitializeWithIv(key, iv);
-
62 }
-
63 
-
64 bool AesCtrEncryptor::InitializeWithIv(const std::vector<uint8_t>& key,
-
65  const std::vector<uint8_t>& iv) {
-
66  if (key.size() != kCencKeySize) {
-
67  LOG(ERROR) << "Invalid key size of " << key.size() << " for CENC.";
-
68  return false;
-
69  }
-
70  if (!IsIvSizeValid(iv.size())) {
-
71  LOG(ERROR) << "Invalid IV size: " << iv.size();
-
72  return false;
-
73  }
-
74 
-
75  aes_key_.reset(new AES_KEY());
-
76  CHECK_EQ(AES_set_encrypt_key(&key[0], AES_BLOCK_SIZE * 8, aes_key_.get()), 0);
-
77  return SetIv(iv);
-
78 }
-
79 
-
80 bool AesCtrEncryptor::Encrypt(const uint8_t* plaintext,
-
81  size_t plaintext_size,
-
82  uint8_t* ciphertext) {
-
83  DCHECK(plaintext);
-
84  DCHECK(ciphertext);
-
85  DCHECK(aes_key_);
-
86 
-
87  for (size_t i = 0; i < plaintext_size; ++i) {
-
88  if (block_offset_ == 0) {
-
89  AES_encrypt(&counter_[0], &encrypted_counter_[0], aes_key_.get());
-
90  // As mentioned in ISO/IEC FDIS 23001-7: CENC spec, of the 16 byte counter
-
91  // block, bytes 8 to 15 (i.e. the least significant bytes) are used as a
-
92  // simple 64 bit unsigned integer that is incremented by one for each
-
93  // subsequent block of sample data processed and is kept in network byte
-
94  // order.
-
95  if (Increment64(&counter_[8]))
-
96  counter_overflow_ = true;
-
97  }
-
98  ciphertext[i] = plaintext[i] ^ encrypted_counter_[block_offset_];
-
99  block_offset_ = (block_offset_ + 1) % AES_BLOCK_SIZE;
-
100  }
-
101  return true;
+
43 AesEncryptor::AesEncryptor() {}
+
44 AesEncryptor::~AesEncryptor() {}
+
45 
+ +
47  const std::vector<uint8_t>& key,
+
48  uint8_t iv_size) {
+
49  std::vector<uint8_t> iv(iv_size, 0);
+
50  if (RAND_bytes(&iv[0], iv_size) != 1) {
+
51  LOG(ERROR) << "RAND_bytes failed with error: "
+
52  << ERR_error_string(ERR_get_error(), NULL);
+
53  return false;
+
54  }
+
55  return InitializeWithIv(key, iv);
+
56 }
+
57 
+
58 bool AesEncryptor::Encrypt(const std::vector<uint8_t>& plaintext,
+
59  std::vector<uint8_t>* ciphertext) {
+
60  if (plaintext.empty())
+
61  return true;
+
62  ciphertext->resize(plaintext.size() + NumPaddingBytes(plaintext.size()));
+
63  return EncryptData(plaintext.data(), plaintext.size(), ciphertext->data());
+
64 }
+
65 
+
66 bool AesEncryptor::Encrypt(const std::string& plaintext,
+
67  std::string* ciphertext) {
+
68  ciphertext->resize(plaintext.size() + NumPaddingBytes(plaintext.size()));
+
69  return EncryptData(reinterpret_cast<const uint8_t*>(plaintext.data()),
+
70  plaintext.size(),
+
71  reinterpret_cast<uint8_t*>(string_as_array(ciphertext)));
+
72 }
+
73 
+
74 AesCtrEncryptor::AesCtrEncryptor()
+
75  : block_offset_(0),
+
76  encrypted_counter_(AES_BLOCK_SIZE, 0),
+
77  counter_overflow_(false) {
+
78  COMPILE_ASSERT(AES_BLOCK_SIZE == kCencKeySize,
+
79  cenc_key_size_should_be_the_same_as_aes_block_size);
+
80 }
+
81 
+
82 AesCtrEncryptor::~AesCtrEncryptor() {}
+
83 
+
84 bool AesCtrEncryptor::InitializeWithIv(const std::vector<uint8_t>& key,
+
85  const std::vector<uint8_t>& iv) {
+
86  if (key.size() != kCencKeySize) {
+
87  LOG(ERROR) << "Invalid key size of " << key.size() << " for CENC.";
+
88  return false;
+
89  }
+
90  if (!IsIvSizeValid(iv.size())) {
+
91  LOG(ERROR) << "Invalid IV size: " << iv.size();
+
92  return false;
+
93  }
+
94 
+
95  aes_key_.reset(new AES_KEY());
+
96  CHECK_EQ(AES_set_encrypt_key(&key[0], AES_BLOCK_SIZE * 8, aes_key_.get()), 0);
+
97  return SetIv(iv);
+
98 }
+
99 
+
100 size_t AesCtrEncryptor::NumPaddingBytes(size_t size) {
+
101  return 0;
102 }
103 
-
104 void AesCtrEncryptor::UpdateIv() {
-
105  block_offset_ = 0;
-
106 
-
107  // As recommended in ISO/IEC FDIS 23001-7: CENC spec, for 64-bit (8-byte)
-
108  // IV_Sizes, initialization vectors for subsequent samples can be created by
-
109  // incrementing the initialization vector of the previous sample.
-
110  // For 128-bit (16-byte) IV_Sizes, initialization vectors for subsequent
-
111  // samples should be created by adding the block count of the previous sample
-
112  // to the initialization vector of the previous sample.
-
113  if (iv_.size() == 8) {
-
114  Increment64(&iv_[0]);
-
115  counter_ = iv_;
-
116  counter_.resize(AES_BLOCK_SIZE, 0);
-
117  } else {
-
118  DCHECK_EQ(16u, iv_.size());
-
119  // Even though the block counter portion of the counter (bytes 8 to 15) is
-
120  // treated as a 64-bit number, it is recommended that the initialization
-
121  // vector is treated as a 128-bit number when calculating the next
-
122  // initialization vector from the previous one. The block counter portion
-
123  // is already incremented by number of blocks, the other 64 bits of the
-
124  // counter (bytes 0 to 7) is incremented here if the block counter portion
-
125  // has overflowed.
-
126  if (counter_overflow_)
-
127  Increment64(&counter_[0]);
-
128  iv_ = counter_;
-
129  }
-
130  counter_overflow_ = false;
-
131 }
-
132 
-
133 bool AesCtrEncryptor::SetIv(const std::vector<uint8_t>& iv) {
-
134  if (!IsIvSizeValid(iv.size())) {
-
135  LOG(ERROR) << "Invalid IV size: " << iv.size();
-
136  return false;
-
137  }
-
138 
-
139  block_offset_ = 0;
-
140  counter_ = iv_ = iv;
-
141  counter_.resize(AES_BLOCK_SIZE, 0);
-
142  return true;
-
143 }
-
144 
-
145 AesCbcPkcs5Encryptor::AesCbcPkcs5Encryptor() {}
-
146 AesCbcPkcs5Encryptor::~AesCbcPkcs5Encryptor() {}
-
147 
-
148 bool AesCbcPkcs5Encryptor::InitializeWithIv(const std::vector<uint8_t>& key,
-
149  const std::vector<uint8_t>& iv) {
-
150  if (!IsKeySizeValidForAes(key.size())) {
-
151  LOG(ERROR) << "Invalid AES key size: " << key.size();
-
152  return false;
+
104 bool AesCtrEncryptor::EncryptData(const uint8_t* plaintext,
+
105  size_t plaintext_size,
+
106  uint8_t* ciphertext) {
+
107  DCHECK(plaintext);
+
108  DCHECK(ciphertext);
+
109  DCHECK(aes_key_);
+
110 
+
111  for (size_t i = 0; i < plaintext_size; ++i) {
+
112  if (block_offset_ == 0) {
+
113  AES_encrypt(&counter_[0], &encrypted_counter_[0], aes_key_.get());
+
114  // As mentioned in ISO/IEC FDIS 23001-7: CENC spec, of the 16 byte counter
+
115  // block, bytes 8 to 15 (i.e. the least significant bytes) are used as a
+
116  // simple 64 bit unsigned integer that is incremented by one for each
+
117  // subsequent block of sample data processed and is kept in network byte
+
118  // order.
+
119  if (Increment64(&counter_[8]))
+
120  counter_overflow_ = true;
+
121  }
+
122  ciphertext[i] = plaintext[i] ^ encrypted_counter_[block_offset_];
+
123  block_offset_ = (block_offset_ + 1) % AES_BLOCK_SIZE;
+
124  }
+
125  return true;
+
126 }
+
127 
+ +
129  block_offset_ = 0;
+
130 
+
131  // As recommended in ISO/IEC FDIS 23001-7: CENC spec, for 64-bit (8-byte)
+
132  // IV_Sizes, initialization vectors for subsequent samples can be created by
+
133  // incrementing the initialization vector of the previous sample.
+
134  // For 128-bit (16-byte) IV_Sizes, initialization vectors for subsequent
+
135  // samples should be created by adding the block count of the previous sample
+
136  // to the initialization vector of the previous sample.
+
137  if (iv_.size() == 8) {
+
138  Increment64(&iv_[0]);
+
139  counter_ = iv_;
+
140  counter_.resize(AES_BLOCK_SIZE, 0);
+
141  } else {
+
142  DCHECK_EQ(16u, iv_.size());
+
143  // Even though the block counter portion of the counter (bytes 8 to 15) is
+
144  // treated as a 64-bit number, it is recommended that the initialization
+
145  // vector is treated as a 128-bit number when calculating the next
+
146  // initialization vector from the previous one. The block counter portion
+
147  // is already incremented by number of blocks, the other 64 bits of the
+
148  // counter (bytes 0 to 7) is incremented here if the block counter portion
+
149  // has overflowed.
+
150  if (counter_overflow_)
+
151  Increment64(&counter_[0]);
+
152  iv_ = counter_;
153  }
-
154  if (iv.size() != AES_BLOCK_SIZE) {
-
155  LOG(ERROR) << "Invalid IV size: " << iv.size();
-
156  return false;
-
157  }
-
158 
-
159  encrypt_key_.reset(new AES_KEY());
-
160  CHECK_EQ(AES_set_encrypt_key(&key[0], key.size() * 8, encrypt_key_.get()), 0);
-
161 
-
162  iv_ = iv;
-
163  return true;
-
164 }
-
165 
-
166 void AesCbcPkcs5Encryptor::Encrypt(const std::string& plaintext,
-
167  std::string* ciphertext) {
-
168  DCHECK(ciphertext);
-
169  DCHECK(encrypt_key_);
-
170 
-
171  // Pad the input with PKCS5 padding.
-
172  const size_t num_padding_bytes =
-
173  AES_BLOCK_SIZE - (plaintext.size() % AES_BLOCK_SIZE);
-
174  std::string padded_text = plaintext;
-
175  padded_text.append(num_padding_bytes, static_cast<char>(num_padding_bytes));
-
176 
-
177  ciphertext->resize(padded_text.size());
-
178  std::vector<uint8_t> iv(iv_);
-
179  AES_cbc_encrypt(reinterpret_cast<const uint8_t*>(padded_text.data()),
-
180  reinterpret_cast<uint8_t*>(string_as_array(ciphertext)),
-
181  padded_text.size(),
-
182  encrypt_key_.get(),
-
183  &iv[0],
-
184  AES_ENCRYPT);
-
185 }
-
186 
-
187 bool AesCbcPkcs5Encryptor::SetIv(const std::vector<uint8_t>& iv) {
-
188  if (iv.size() != AES_BLOCK_SIZE) {
-
189  LOG(ERROR) << "Invalid IV size: " << iv.size();
-
190  return false;
-
191  }
-
192 
-
193  iv_ = iv;
-
194  return true;
-
195 }
-
196 
-
197 AesCbcPkcs5Decryptor::AesCbcPkcs5Decryptor() {}
-
198 AesCbcPkcs5Decryptor::~AesCbcPkcs5Decryptor() {}
+
154  counter_overflow_ = false;
+
155 }
+
156 
+
157 bool AesCtrEncryptor::SetIv(const std::vector<uint8_t>& iv) {
+
158  if (!IsIvSizeValid(iv.size())) {
+
159  LOG(ERROR) << "Invalid IV size: " << iv.size();
+
160  return false;
+
161  }
+
162 
+
163  block_offset_ = 0;
+
164  counter_ = iv_ = iv;
+
165  counter_.resize(AES_BLOCK_SIZE, 0);
+
166  return true;
+
167 }
+
168 
+
169 AesCbcPkcs5Encryptor::AesCbcPkcs5Encryptor() {}
+
170 AesCbcPkcs5Encryptor::~AesCbcPkcs5Encryptor() {}
+
171 
+
172 bool AesCbcPkcs5Encryptor::InitializeWithIv(const std::vector<uint8_t>& key,
+
173  const std::vector<uint8_t>& iv) {
+
174  if (!IsKeySizeValidForAes(key.size())) {
+
175  LOG(ERROR) << "Invalid AES key size: " << key.size();
+
176  return false;
+
177  }
+
178  if (iv.size() != AES_BLOCK_SIZE) {
+
179  LOG(ERROR) << "Invalid IV size: " << iv.size();
+
180  return false;
+
181  }
+
182 
+
183  aes_key_.reset(new AES_KEY());
+
184  CHECK_EQ(AES_set_encrypt_key(&key[0], key.size() * 8, aes_key_.get()), 0);
+
185 
+
186  iv_ = iv;
+
187  return true;
+
188 }
+
189 
+
190 size_t AesCbcPkcs5Encryptor::NumPaddingBytes(size_t size) {
+
191  return AES_BLOCK_SIZE - (size % AES_BLOCK_SIZE);
+
192 }
+
193 
+
194 bool AesCbcPkcs5Encryptor::EncryptData(const uint8_t* plaintext,
+
195  size_t plaintext_size,
+
196  uint8_t* ciphertext) {
+
197  DCHECK(ciphertext);
+
198  DCHECK(aes_key_);
199 
-
200 bool AesCbcPkcs5Decryptor::InitializeWithIv(const std::vector<uint8_t>& key,
-
201  const std::vector<uint8_t>& iv) {
-
202  if (!IsKeySizeValidForAes(key.size())) {
-
203  LOG(ERROR) << "Invalid AES key size: " << key.size();
-
204  return false;
-
205  }
-
206  if (iv.size() != AES_BLOCK_SIZE) {
-
207  LOG(ERROR) << "Invalid IV size: " << iv.size();
-
208  return false;
-
209  }
-
210 
-
211  decrypt_key_.reset(new AES_KEY());
-
212  CHECK_EQ(AES_set_decrypt_key(&key[0], key.size() * 8, decrypt_key_.get()), 0);
-
213 
-
214  iv_ = iv;
-
215  return true;
-
216 }
-
217 
-
218 bool AesCbcPkcs5Decryptor::Decrypt(const std::string& ciphertext,
-
219  std::string* plaintext) {
-
220  if ((ciphertext.size() % AES_BLOCK_SIZE) != 0) {
-
221  LOG(ERROR) << "Expecting cipher text size to be multiple of "
-
222  << AES_BLOCK_SIZE << ", got " << ciphertext.size();
-
223  return false;
-
224  }
-
225 
-
226  DCHECK(plaintext);
-
227  DCHECK(decrypt_key_);
-
228 
-
229  plaintext->resize(ciphertext.size());
-
230  AES_cbc_encrypt(reinterpret_cast<const uint8_t*>(ciphertext.data()),
-
231  reinterpret_cast<uint8_t*>(string_as_array(plaintext)),
-
232  ciphertext.size(),
-
233  decrypt_key_.get(),
-
234  &iv_[0],
-
235  AES_DECRYPT);
-
236 
-
237  // Strip off PKCS5 padding bytes.
-
238  const uint8_t num_padding_bytes = (*plaintext)[plaintext->size() - 1];
-
239  if (num_padding_bytes > AES_BLOCK_SIZE) {
-
240  LOG(ERROR) << "Padding length is too large : "
-
241  << static_cast<int>(num_padding_bytes);
-
242  return false;
-
243  }
-
244  plaintext->resize(plaintext->size() - num_padding_bytes);
+
200  // Pad the input with PKCS5 padding.
+
201  // TODO(kqyang): Consider more efficient implementation.
+
202  memcpy(ciphertext, plaintext, plaintext_size);
+
203  for (size_t i = plaintext_size;
+
204  i < plaintext_size + NumPaddingBytes(plaintext_size); ++i) {
+
205  ciphertext[i] = NumPaddingBytes(plaintext_size);
+
206  }
+
207 
+
208  std::vector<uint8_t> iv(iv_);
+
209  AES_cbc_encrypt(ciphertext, ciphertext,
+
210  plaintext_size + NumPaddingBytes(plaintext_size),
+
211  aes_key_.get(), &iv[0], AES_ENCRYPT);
+
212  return true;
+
213 }
+
214 
+ +
216 
+
217 bool AesCbcPkcs5Encryptor::SetIv(const std::vector<uint8_t>& iv) {
+
218  if (iv.size() != AES_BLOCK_SIZE) {
+
219  LOG(ERROR) << "Invalid IV size: " << iv.size();
+
220  return false;
+
221  }
+
222 
+
223  iv_ = iv;
+
224  return true;
+
225 }
+
226 
+
227 AesCbcCtsEncryptor::AesCbcCtsEncryptor() {}
+
228 AesCbcCtsEncryptor::~AesCbcCtsEncryptor() {}
+
229 
+
230 bool AesCbcCtsEncryptor::InitializeWithIv(const std::vector<uint8_t>& key,
+
231  const std::vector<uint8_t>& iv) {
+
232  if (!IsKeySizeValidForAes(key.size())) {
+
233  LOG(ERROR) << "Invalid AES key size: " << key.size();
+
234  return false;
+
235  }
+
236  if (iv.size() != AES_BLOCK_SIZE) {
+
237  LOG(ERROR) << "Invalid IV size: " << iv.size();
+
238  return false;
+
239  }
+
240 
+
241  aes_key_.reset(new AES_KEY());
+
242  CHECK_EQ(AES_set_encrypt_key(&key[0], key.size() * 8, aes_key_.get()), 0);
+
243 
+
244  iv_ = iv;
245  return true;
246 }
247 
-
248 bool AesCbcPkcs5Decryptor::SetIv(const std::vector<uint8_t>& iv) {
-
249  if (iv.size() != AES_BLOCK_SIZE) {
-
250  LOG(ERROR) << "Invalid IV size: " << iv.size();
-
251  return false;
-
252  }
-
253 
-
254  iv_ = iv;
-
255  return true;
-
256 }
+
248 size_t AesCbcCtsEncryptor::NumPaddingBytes(size_t size) {
+
249  return 0;
+
250 }
+
251 
+
252 bool AesCbcCtsEncryptor::EncryptData(const uint8_t* plaintext,
+
253  size_t size,
+
254  uint8_t* ciphertext) {
+
255  DCHECK(plaintext);
+
256  DCHECK(ciphertext);
257 
-
258 AesCbcCtsEncryptor::AesCbcCtsEncryptor() {}
-
259 AesCbcCtsEncryptor::~AesCbcCtsEncryptor() {}
-
260 
-
261 bool AesCbcCtsEncryptor::InitializeWithIv(const std::vector<uint8_t>& key,
-
262  const std::vector<uint8_t>& iv) {
-
263  if (!IsKeySizeValidForAes(key.size())) {
-
264  LOG(ERROR) << "Invalid AES key size: " << key.size();
-
265  return false;
-
266  }
-
267  if (iv.size() != AES_BLOCK_SIZE) {
-
268  LOG(ERROR) << "Invalid IV size: " << iv.size();
-
269  return false;
-
270  }
-
271 
-
272  encrypt_key_.reset(new AES_KEY());
-
273  CHECK_EQ(AES_set_encrypt_key(&key[0], key.size() * 8, encrypt_key_.get()), 0);
-
274 
-
275  iv_ = iv;
-
276  return true;
-
277 }
-
278 
-
279 void AesCbcCtsEncryptor::Encrypt(const uint8_t* plaintext,
-
280  size_t size,
-
281  uint8_t* ciphertext) {
-
282  DCHECK(plaintext);
-
283  DCHECK(ciphertext);
-
284 
-
285  if (size < AES_BLOCK_SIZE) {
-
286  // Don't have a full block, leave unencrypted.
-
287  memcpy(ciphertext, plaintext, size);
-
288  return;
-
289  }
+
258  if (size < AES_BLOCK_SIZE) {
+
259  // Don't have a full block, leave unencrypted.
+
260  memcpy(ciphertext, plaintext, size);
+
261  return true;
+
262  }
+
263 
+
264  std::vector<uint8_t> iv(iv_);
+
265  size_t residual_block_size = size % AES_BLOCK_SIZE;
+
266  size_t cbc_size = size - residual_block_size;
+
267 
+
268  // Encrypt everything but the residual block using CBC.
+
269  AES_cbc_encrypt(plaintext,
+
270  ciphertext,
+
271  cbc_size,
+
272  aes_key_.get(),
+
273  &iv[0],
+
274  AES_ENCRYPT);
+
275  if (residual_block_size == 0) {
+
276  // No residual block. No need to do ciphertext stealing.
+
277  return true;
+
278  }
+
279 
+
280  // Zero-pad the residual block and encrypt using CBC.
+
281  std::vector<uint8_t> residual_block(plaintext + size - residual_block_size,
+
282  plaintext + size);
+
283  residual_block.resize(AES_BLOCK_SIZE, 0);
+
284  AES_cbc_encrypt(&residual_block[0],
+
285  &residual_block[0],
+
286  AES_BLOCK_SIZE,
+
287  aes_key_.get(),
+
288  &iv[0],
+
289  AES_ENCRYPT);
290 
-
291  std::vector<uint8_t> iv(iv_);
-
292  size_t residual_block_size = size % AES_BLOCK_SIZE;
-
293  size_t cbc_size = size - residual_block_size;
-
294 
-
295  // Encrypt everything but the residual block using CBC.
-
296  AES_cbc_encrypt(plaintext,
-
297  ciphertext,
-
298  cbc_size,
-
299  encrypt_key_.get(),
-
300  &iv[0],
-
301  AES_ENCRYPT);
-
302  if (residual_block_size == 0) {
-
303  // No residual block. No need to do ciphertext stealing.
-
304  return;
-
305  }
-
306 
-
307  // Zero-pad the residual block and encrypt using CBC.
-
308  std::vector<uint8_t> residual_block(plaintext + size - residual_block_size,
-
309  plaintext + size);
-
310  residual_block.resize(AES_BLOCK_SIZE, 0);
-
311  AES_cbc_encrypt(&residual_block[0],
-
312  &residual_block[0],
-
313  AES_BLOCK_SIZE,
-
314  encrypt_key_.get(),
-
315  &iv[0],
-
316  AES_ENCRYPT);
+
291  // Replace the last full block with the zero-padded, encrypted residual block,
+
292  // and replace the residual block with the equivalent portion of the last full
+
293  // encrypted block. It may appear that some encrypted bits of the last full
+
294  // block are lost, but they are not, as they were used as the IV when
+
295  // encrypting the zero-padded residual block.
+
296  uint8_t* residual_ciphertext_block = ciphertext + size - residual_block_size;
+
297  memcpy(residual_ciphertext_block,
+
298  residual_ciphertext_block - AES_BLOCK_SIZE,
+
299  residual_block_size);
+
300  memcpy(residual_ciphertext_block - AES_BLOCK_SIZE,
+
301  residual_block.data(),
+
302  AES_BLOCK_SIZE);
+
303  return true;
+
304 }
+
305 
+ +
307 
+
308 bool AesCbcCtsEncryptor::SetIv(const std::vector<uint8_t>& iv) {
+
309  if (iv.size() != AES_BLOCK_SIZE) {
+
310  LOG(ERROR) << "Invalid IV size: " << iv.size();
+
311  return false;
+
312  }
+
313 
+
314  iv_ = iv;
+
315  return true;
+
316 }
317 
-
318  // Replace the last full block with the zero-padded, encrypted residual block,
-
319  // and replace the residual block with the equivalent portion of the last full
-
320  // encrypted block. It may appear that some encrypted bits of the last full
-
321  // block are lost, but they are not, as they were used as the IV when
-
322  // encrypting the zero-padded residual block.
-
323  uint8_t* residual_ciphertext_block = ciphertext + size - residual_block_size;
-
324  memcpy(residual_ciphertext_block,
-
325  residual_ciphertext_block - AES_BLOCK_SIZE,
-
326  residual_block_size);
-
327  memcpy(residual_ciphertext_block - AES_BLOCK_SIZE,
-
328  residual_block.data(),
-
329  AES_BLOCK_SIZE);
-
330 }
-
331 
-
332 void AesCbcCtsEncryptor::Encrypt(const std::vector<uint8_t>& plaintext,
-
333  std::vector<uint8_t>* ciphertext) {
-
334  DCHECK(ciphertext);
-
335 
-
336  ciphertext->resize(plaintext.size(), 0);
-
337  if (plaintext.empty())
-
338  return;
-
339 
-
340  Encrypt(plaintext.data(), plaintext.size(), &(*ciphertext)[0]);
-
341 }
-
342 
-
343 bool AesCbcCtsEncryptor::SetIv(const std::vector<uint8_t>& iv) {
-
344  if (iv.size() != AES_BLOCK_SIZE) {
-
345  LOG(ERROR) << "Invalid IV size: " << iv.size();
-
346  return false;
-
347  }
-
348 
-
349  iv_ = iv;
-
350  return true;
-
351 }
-
352 
-
353 AesCbcCtsDecryptor::AesCbcCtsDecryptor() {}
-
354 AesCbcCtsDecryptor::~AesCbcCtsDecryptor() {}
-
355 
-
356 bool AesCbcCtsDecryptor::InitializeWithIv(const std::vector<uint8_t>& key,
-
357  const std::vector<uint8_t>& iv) {
-
358  if (!IsKeySizeValidForAes(key.size())) {
-
359  LOG(ERROR) << "Invalid AES key size: " << key.size();
-
360  return false;
-
361  }
-
362  if (iv.size() != AES_BLOCK_SIZE) {
-
363  LOG(ERROR) << "Invalid IV size: " << iv.size();
-
364  return false;
-
365  }
-
366 
-
367  decrypt_key_.reset(new AES_KEY());
-
368  CHECK_EQ(AES_set_decrypt_key(&key[0], key.size() * 8, decrypt_key_.get()), 0);
-
369 
-
370  iv_ = iv;
-
371  return true;
-
372 }
-
373 
-
374 void AesCbcCtsDecryptor::Decrypt(const uint8_t* ciphertext,
-
375  size_t size,
-
376  uint8_t* plaintext) {
-
377  DCHECK(ciphertext);
-
378  DCHECK(plaintext);
-
379 
-
380  if (size < AES_BLOCK_SIZE) {
-
381  // Don't have a full block, leave unencrypted.
-
382  memcpy(plaintext, ciphertext, size);
-
383  return;
-
384  }
-
385 
-
386  std::vector<uint8_t> iv(iv_);
-
387  size_t residual_block_size = size % AES_BLOCK_SIZE;
-
388 
-
389  if (residual_block_size == 0) {
-
390  // No residual block. No need to do ciphertext stealing.
-
391  AES_cbc_encrypt(ciphertext,
-
392  plaintext,
-
393  size,
-
394  decrypt_key_.get(),
-
395  &iv[0],
-
396  AES_DECRYPT);
-
397  return;
-
398  }
-
399 
-
400  // AES-CBC decrypt everything up to the next-to-last full block.
-
401  size_t cbc_size = size - residual_block_size;
-
402  if (cbc_size > AES_BLOCK_SIZE) {
-
403  AES_cbc_encrypt(ciphertext,
-
404  plaintext,
-
405  cbc_size - AES_BLOCK_SIZE,
-
406  decrypt_key_.get(),
-
407  &iv[0],
-
408  AES_DECRYPT);
-
409  }
-
410 
-
411  // Determine what the last IV should be so that we can "skip ahead" in the
-
412  // CBC decryption.
-
413  std::vector<uint8_t> last_iv(ciphertext + size - residual_block_size,
-
414  ciphertext + size);
-
415  last_iv.resize(AES_BLOCK_SIZE, 0);
-
416 
-
417  // Decrypt the next-to-last block using the IV determined above. This decrypts
-
418  // the residual block bits.
-
419  AES_cbc_encrypt(ciphertext + size - residual_block_size - AES_BLOCK_SIZE,
-
420  plaintext + size - residual_block_size - AES_BLOCK_SIZE,
-
421  AES_BLOCK_SIZE,
-
422  decrypt_key_.get(),
-
423  &last_iv[0],
-
424  AES_DECRYPT);
-
425 
-
426  // Swap back the residual block bits and the next-to-last full block.
-
427  if (plaintext == ciphertext) {
-
428  uint8_t* ptr1 = plaintext + size - residual_block_size;
-
429  uint8_t* ptr2 = plaintext + size - residual_block_size - AES_BLOCK_SIZE;
-
430  for (size_t i = 0; i < residual_block_size; ++i) {
-
431  uint8_t temp = *ptr1;
-
432  *ptr1 = *ptr2;
-
433  *ptr2 = temp;
-
434  ++ptr1;
-
435  ++ptr2;
-
436  }
-
437  } else {
-
438  uint8_t* residual_plaintext_block = plaintext + size - residual_block_size;
-
439  memcpy(residual_plaintext_block,
-
440  residual_plaintext_block - AES_BLOCK_SIZE,
-
441  residual_block_size);
-
442  memcpy(residual_plaintext_block - AES_BLOCK_SIZE,
-
443  ciphertext + size - residual_block_size,
-
444  residual_block_size);
-
445  }
-
446 
-
447  // Decrypt the last full block.
-
448  AES_cbc_encrypt(plaintext + size - residual_block_size - AES_BLOCK_SIZE,
-
449  plaintext + size - residual_block_size - AES_BLOCK_SIZE,
-
450  AES_BLOCK_SIZE,
-
451  decrypt_key_.get(),
-
452  &iv[0],
-
453  AES_DECRYPT);
-
454 }
-
455 
-
456 void AesCbcCtsDecryptor::Decrypt(const std::vector<uint8_t>& ciphertext,
-
457  std::vector<uint8_t>* plaintext) {
-
458  DCHECK(plaintext);
-
459 
-
460  plaintext->resize(ciphertext.size(), 0);
-
461  if (ciphertext.empty())
-
462  return;
-
463 
-
464  Decrypt(ciphertext.data(), ciphertext.size(), &(*plaintext)[0]);
-
465 }
-
466 
-
467 bool AesCbcCtsDecryptor::SetIv(const std::vector<uint8_t>& iv) {
-
468  if (iv.size() != AES_BLOCK_SIZE) {
-
469  LOG(ERROR) << "Invalid IV size: " << iv.size();
-
470  return false;
-
471  }
-
472 
-
473  iv_ = iv;
-
474  return true;
-
475 }
-
476 
-
477 } // namespace media
-
478 } // namespace edash_packager
+
318 } // namespace media
+
319 } // namespace edash_packager
+
virtual bool InitializeWithIv(const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv)=0
+
bool InitializeWithIv(const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv) override
+ +
bool InitializeWithIv(const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv) override
+
bool SetIv(const std::vector< uint8_t > &iv) override
+
bool SetIv(const std::vector< uint8_t > &iv) override
+
bool SetIv(const std::vector< uint8_t > &iv) override
+ +
virtual bool InitializeWithRandomIv(const std::vector< uint8_t > &key, uint8_t iv_size)
+ +
bool InitializeWithIv(const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv) override
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 2ed4ff4c7a..5d493e66b6 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 525863aca4..550324c610 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 9a9dc13a81..3b05d1fca9 100644 --- a/docs/d5/dc1/webm__webvtt__parser_8cc_source.html +++ b/docs/d5/dc1/webm__webvtt__parser_8cc_source.html @@ -171,7 +171,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/dce/classedash__packager_1_1media_1_1Demuxer.html b/docs/d5/dce/classedash__packager_1_1media_1_1Demuxer.html index abd45bf9c0..1a2c1d77b6 100644 --- a/docs/d5/dce/classedash__packager_1_1media_1_1Demuxer.html +++ b/docs/d5/dce/classedash__packager_1_1media_1_1Demuxer.html @@ -295,7 +295,7 @@ Public Member Functions diff --git a/docs/d5/dce/classedash__packager_1_1media_1_1VP8Parser.html b/docs/d5/dce/classedash__packager_1_1media_1_1VP8Parser.html index 45cca50d91..26c4b6bcf7 100644 --- a/docs/d5/dce/classedash__packager_1_1media_1_1VP8Parser.html +++ b/docs/d5/dce/classedash__packager_1_1media_1_1VP8Parser.html @@ -235,7 +235,7 @@ Additional Inherited Members diff --git a/docs/d5/dcf/rsa__key_8h_source.html b/docs/d5/dcf/rsa__key_8h_source.html index 8d4279e20a..555f3f81a1 100644 --- a/docs/d5/dcf/rsa__key_8h_source.html +++ b/docs/d5/dcf/rsa__key_8h_source.html @@ -165,7 +165,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/dd2/classedash__packager_1_1media_1_1VPxParser.html b/docs/d5/dd2/classedash__packager_1_1media_1_1VPxParser.html index a111d676a1..824fccf3c7 100644 --- a/docs/d5/dd2/classedash__packager_1_1media_1_1VPxParser.html +++ b/docs/d5/dd2/classedash__packager_1_1media_1_1VPxParser.html @@ -205,7 +205,7 @@ Protected Member Functions diff --git a/docs/d5/dda/ts__section__psi_8h_source.html b/docs/d5/dda/ts__section__psi_8h_source.html index bdd0a53563..3adb02278d 100644 --- a/docs/d5/dda/ts__section__psi_8h_source.html +++ b/docs/d5/dda/ts__section__psi_8h_source.html @@ -151,7 +151,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/de0/bit__reader_8cc_source.html b/docs/d5/de0/bit__reader_8cc_source.html index ad2745d301..520ecafe2a 100644 --- a/docs/d5/de0/bit__reader_8cc_source.html +++ b/docs/d5/de0/bit__reader_8cc_source.html @@ -199,7 +199,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/dec/classedash__packager_1_1media_1_1wvm_1_1WvmMediaParser-members.html b/docs/d5/dec/classedash__packager_1_1media_1_1wvm_1_1WvmMediaParser-members.html index 61c7ed8a15..a520c4e984 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 e77bac4820..2d34aba3b4 100644 --- a/docs/d5/def/ts__section__pmt_8h_source.html +++ b/docs/d5/def/ts__section__pmt_8h_source.html @@ -133,7 +133,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/dfc/file_8cc_source.html b/docs/d5/dfc/file_8cc_source.html index b25092eb36..5d00f785f8 100644 --- a/docs/d5/dfc/file_8cc_source.html +++ b/docs/d5/dfc/file_8cc_source.html @@ -376,7 +376,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d00/structedash__packager_1_1media_1_1mp4_1_1Box-members.html b/docs/d6/d00/structedash__packager_1_1media_1_1mp4_1_1Box-members.html index 3d693d20da..06cd80e31c 100644 --- a/docs/d6/d00/structedash__packager_1_1media_1_1mp4_1_1Box-members.html +++ b/docs/d6/d00/structedash__packager_1_1media_1_1mp4_1_1Box-members.html @@ -107,7 +107,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d06/classedash__packager_1_1media_1_1StreamInfo.html b/docs/d6/d06/classedash__packager_1_1media_1_1StreamInfo.html index 15bd344e06..baa79f6814 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 9c5c23d019..c1aefffd3b 100644 --- a/docs/d6/d10/classedash__packager_1_1media_1_1VideoStreamInfo-members.html +++ b/docs/d6/d10/classedash__packager_1_1media_1_1VideoStreamInfo-members.html @@ -125,7 +125,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d12/structedash__packager_1_1media_1_1mp4_1_1OriginalFormat-members.html b/docs/d6/d12/structedash__packager_1_1media_1_1mp4_1_1OriginalFormat-members.html index 6541b0dd65..c2e7abe899 100644 --- a/docs/d6/d12/structedash__packager_1_1media_1_1mp4_1_1OriginalFormat-members.html +++ b/docs/d6/d12/structedash__packager_1_1media_1_1mp4_1_1OriginalFormat-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d13/classedash__packager_1_1media_1_1mp4_1_1CompositionOffsetIterator-members.html b/docs/d6/d13/classedash__packager_1_1media_1_1mp4_1_1CompositionOffsetIterator-members.html index 90740aa7d7..702fabc7f4 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 da068d3de8..770eaddcaa 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 8ed68f5cb7..53e9e083b8 100644 --- a/docs/d6/d17/es__parser__h264_8cc_source.html +++ b/docs/d6/d17/es__parser__h264_8cc_source.html @@ -484,7 +484,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d19/structedash__packager_1_1media_1_1mp4_1_1SampleGroupDescription-members.html b/docs/d6/d19/structedash__packager_1_1media_1_1mp4_1_1SampleGroupDescription-members.html index ac78e134b2..56cf173ba8 100644 --- a/docs/d6/d19/structedash__packager_1_1media_1_1mp4_1_1SampleGroupDescription-members.html +++ b/docs/d6/d19/structedash__packager_1_1media_1_1mp4_1_1SampleGroupDescription-members.html @@ -114,7 +114,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d1b/classedash__packager_1_1media_1_1ClosureThread-members.html b/docs/d6/d1b/classedash__packager_1_1media_1_1ClosureThread-members.html index 9b1a8fe13c..a91afef830 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/d22/classedash__packager_1_1media_1_1AesCtrDecryptor-members.html b/docs/d6/d22/classedash__packager_1_1media_1_1AesCtrDecryptor-members.html new file mode 100644 index 0000000000..86927a6770 --- /dev/null +++ b/docs/d6/d22/classedash__packager_1_1media_1_1AesCtrDecryptor-members.html @@ -0,0 +1,117 @@ + + + + + + +DASH Media Packaging SDK: Member List + + + + + + + + + +
+
+ + + + + + +
+
DASH Media Packaging SDK +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
edash_packager::media::AesCtrDecryptor Member List
+
+
+ +

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

+ + + + + + + + + + + + + + +
aes_key_ (defined in edash_packager::media::AesDecryptor)edash_packager::media::AesDecryptorprotected
AesCtrDecryptor() (defined in edash_packager::media::AesCtrDecryptor)edash_packager::media::AesCtrDecryptor
AesDecryptor() (defined in edash_packager::media::AesDecryptor)edash_packager::media::AesDecryptor
block_offset() const (defined in edash_packager::media::AesCtrDecryptor)edash_packager::media::AesCtrDecryptorinline
Decrypt(const uint8_t *ciphertext, size_t ciphertext_size, uint8_t *plaintext) override (defined in edash_packager::media::AesCtrDecryptor)edash_packager::media::AesCtrDecryptorvirtual
Decrypt(const std::vector< uint8_t > &ciphertext, std::vector< uint8_t > *plaintext) override (defined in edash_packager::media::AesCtrDecryptor)edash_packager::media::AesCtrDecryptorvirtual
Decrypt(const std::string &ciphertext, std::string *plaintext) override (defined in edash_packager::media::AesCtrDecryptor)edash_packager::media::AesCtrDecryptorvirtual
InitializeWithIv(const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv) override (defined in edash_packager::media::AesCtrDecryptor)edash_packager::media::AesCtrDecryptorvirtual
iv() const (defined in edash_packager::media::AesDecryptor)edash_packager::media::AesDecryptorinline
iv_ (defined in edash_packager::media::AesDecryptor)edash_packager::media::AesDecryptorprotected
SetIv(const std::vector< uint8_t > &iv) overrideedash_packager::media::AesCtrDecryptorvirtual
~AesCtrDecryptor() override (defined in edash_packager::media::AesCtrDecryptor)edash_packager::media::AesCtrDecryptor
~AesDecryptor() (defined in edash_packager::media::AesDecryptor)edash_packager::media::AesDecryptorvirtual
+ + + + diff --git a/docs/d6/d2e/mpd__notifier__util_8cc_source.html b/docs/d6/d2e/mpd__notifier__util_8cc_source.html index 9828ba2868..a0fd58c289 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 d604c56c31..a26c610847 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 fb49d7e545..d0680df6ff 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 b3f49b3b49..dcf5c24d64 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 1b37e53cc8..d1c90c9b21 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 db91469b50..1a2767028a 100644 --- a/docs/d6/d41/encrypting__fragmenter_8cc_source.html +++ b/docs/d6/d41/encrypting__fragmenter_8cc_source.html @@ -149,256 +149,265 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
60 }
61 } // namespace
62 
- +
64  scoped_refptr<StreamInfo> info,
65  TrackFragment* traf,
66  scoped_ptr<EncryptionKey> encryption_key,
-
67  int64_t clear_time)
-
68  : Fragmenter(traf),
-
69  info_(info),
-
70  encryption_key_(encryption_key.Pass()),
-
71  nalu_length_size_(GetNaluLengthSize(*info)),
-
72  clear_time_(clear_time) {
-
73  DCHECK(encryption_key_);
-
74  VideoCodec video_codec = GetVideoCodec(*info);
-
75  if (video_codec == kCodecVP8) {
-
76  vpx_parser_.reset(new VP8Parser);
-
77  } else if (video_codec == kCodecVP9) {
-
78  vpx_parser_.reset(new VP9Parser);
-
79  } else if (video_codec == kCodecH264) {
-
80  header_parser_.reset(new H264VideoSliceHeaderParser);
-
81  }
-
82  // TODO(modmaker): Support H.265.
-
83 }
-
84 
-
85 EncryptingFragmenter::~EncryptingFragmenter() {}
+
67  int64_t clear_time,
+
68  EncryptionMode encryption_mode)
+
69  : Fragmenter(traf),
+
70  info_(info),
+
71  encryption_key_(encryption_key.Pass()),
+
72  nalu_length_size_(GetNaluLengthSize(*info)),
+
73  clear_time_(clear_time),
+
74  encryption_mode_(encryption_mode) {
+
75  DCHECK(encryption_key_);
+
76  VideoCodec video_codec = GetVideoCodec(*info);
+
77  if (video_codec == kCodecVP8) {
+
78  vpx_parser_.reset(new VP8Parser);
+
79  } else if (video_codec == kCodecVP9) {
+
80  vpx_parser_.reset(new VP9Parser);
+
81  } else if (video_codec == kCodecH264) {
+
82  header_parser_.reset(new H264VideoSliceHeaderParser);
+
83  }
+
84  // TODO(modmaker): Support H.265.
+
85 }
86 
-
87 Status EncryptingFragmenter::AddSample(scoped_refptr<MediaSample> sample) {
-
88  DCHECK(sample);
-
89  if (!fragment_initialized()) {
-
90  Status status = InitializeFragment(sample->dts());
-
91  if (!status.ok())
-
92  return status;
-
93  }
-
94  if (encryptor_) {
-
95  Status status = EncryptSample(sample);
-
96  if (!status.ok())
-
97  return status;
-
98  }
-
99  return Fragmenter::AddSample(sample);
-
100 }
-
101 
- -
103  Status status = Fragmenter::InitializeFragment(first_sample_dts);
-
104  if (!status.ok())
-
105  return status;
-
106 
-
107  if (header_parser_ && !header_parser_->Initialize(info_->extra_data()))
-
108  return Status(error::MUXER_FAILURE, "Fail to read SPS and PPS data.");
-
109 
-
110  traf()->auxiliary_size.sample_info_sizes.clear();
-
111  traf()->auxiliary_offset.offsets.clear();
-
112  if (IsSubsampleEncryptionRequired()) {
-
113  traf()->sample_encryption.flags |=
-
114  SampleEncryption::kUseSubsampleEncryption;
-
115  }
-
116  traf()->sample_encryption.sample_encryption_entries.clear();
-
117 
-
118  const bool enable_encryption = clear_time_ <= 0;
-
119  if (!enable_encryption) {
-
120  // This fragment should be in clear text.
-
121  // At most two sample description entries, an encrypted entry and a clear
-
122  // entry, are generated. The 1-based clear entry index is always 2.
-
123  const uint32_t kClearSampleDescriptionIndex = 2;
-
124 
-
125  traf()->header.flags |=
-
126  TrackFragmentHeader::kSampleDescriptionIndexPresentMask;
-
127  traf()->header.sample_description_index = kClearSampleDescriptionIndex;
-
128  }
-
129  return PrepareFragmentForEncryption(enable_encryption);
-
130 }
-
131 
- -
133  if (encryptor_) {
-
134  DCHECK_LE(clear_time_, 0);
- -
136  } else {
-
137  DCHECK_GT(clear_time_, 0);
-
138  clear_time_ -= fragment_duration();
-
139  }
- -
141 }
-
142 
- -
144  bool enable_encryption) {
-
145  return (!enable_encryption || encryptor_) ? Status::OK : CreateEncryptor();
-
146 }
-
147 
- -
149  // The offset will be adjusted in Segmenter after knowing moof size.
-
150  traf()->auxiliary_offset.offsets.push_back(0);
-
151 
-
152  // Optimize saiz box.
-
153  SampleAuxiliaryInformationSize& saiz = traf()->auxiliary_size;
-
154  saiz.sample_count = traf()->runs[0].sample_sizes.size();
-
155  if (!saiz.sample_info_sizes.empty()) {
-
156  if (!OptimizeSampleEntries(&saiz.sample_info_sizes,
-
157  &saiz.default_sample_info_size)) {
-
158  saiz.default_sample_info_size = 0;
-
159  }
-
160  } else {
-
161  // |sample_info_sizes| table is filled in only for subsample encryption,
-
162  // otherwise |sample_info_size| is just the IV size.
-
163  DCHECK(!IsSubsampleEncryptionRequired());
-
164  saiz.default_sample_info_size = encryptor_->iv().size();
-
165  }
-
166  traf()->sample_encryption.iv_size = encryptor_->iv().size();
-
167 }
-
168 
- -
170  DCHECK(encryption_key_);
-
171 
-
172  scoped_ptr<AesCtrEncryptor> encryptor(new AesCtrEncryptor());
-
173  const bool initialized = encryption_key_->iv.empty()
-
174  ? encryptor->InitializeWithRandomIv(
-
175  encryption_key_->key, kDefaultIvSize)
-
176  : encryptor->InitializeWithIv(
-
177  encryption_key_->key, encryption_key_->iv);
-
178  if (!initialized)
-
179  return Status(error::MUXER_FAILURE, "Failed to create the encryptor.");
-
180  encryptor_ = encryptor.Pass();
-
181  return Status::OK;
-
182 }
-
183 
-
184 void EncryptingFragmenter::EncryptBytes(uint8_t* data, uint32_t size) {
-
185  DCHECK(encryptor_);
-
186  CHECK(encryptor_->Encrypt(data, size, data));
-
187 }
-
188 
-
189 Status EncryptingFragmenter::EncryptSample(scoped_refptr<MediaSample> sample) {
-
190  DCHECK(encryptor_);
+
87 EncryptingFragmenter::~EncryptingFragmenter() {}
+
88 
+
89 Status EncryptingFragmenter::AddSample(scoped_refptr<MediaSample> sample) {
+
90  DCHECK(sample);
+
91  if (!fragment_initialized()) {
+
92  Status status = InitializeFragment(sample->dts());
+
93  if (!status.ok())
+
94  return status;
+
95  }
+
96  if (encryptor_) {
+
97  Status status = EncryptSample(sample);
+
98  if (!status.ok())
+
99  return status;
+
100  }
+
101  return Fragmenter::AddSample(sample);
+
102 }
+
103 
+ +
105  Status status = Fragmenter::InitializeFragment(first_sample_dts);
+
106  if (!status.ok())
+
107  return status;
+
108 
+
109  if (header_parser_ && !header_parser_->Initialize(info_->extra_data()))
+
110  return Status(error::MUXER_FAILURE, "Fail to read SPS and PPS data.");
+
111 
+
112  traf()->auxiliary_size.sample_info_sizes.clear();
+
113  traf()->auxiliary_offset.offsets.clear();
+
114  if (IsSubsampleEncryptionRequired()) {
+
115  traf()->sample_encryption.flags |=
+
116  SampleEncryption::kUseSubsampleEncryption;
+
117  }
+
118  traf()->sample_encryption.sample_encryption_entries.clear();
+
119 
+
120  const bool enable_encryption = clear_time_ <= 0;
+
121  if (!enable_encryption) {
+
122  // This fragment should be in clear text.
+
123  // At most two sample description entries, an encrypted entry and a clear
+
124  // entry, are generated. The 1-based clear entry index is always 2.
+
125  const uint32_t kClearSampleDescriptionIndex = 2;
+
126 
+
127  traf()->header.flags |=
+
128  TrackFragmentHeader::kSampleDescriptionIndexPresentMask;
+
129  traf()->header.sample_description_index = kClearSampleDescriptionIndex;
+
130  }
+
131  return PrepareFragmentForEncryption(enable_encryption);
+
132 }
+
133 
+ +
135  if (encryptor_) {
+
136  DCHECK_LE(clear_time_, 0);
+ +
138  } else {
+
139  DCHECK_GT(clear_time_, 0);
+
140  clear_time_ -= fragment_duration();
+
141  }
+ +
143 }
+
144 
+ +
146  bool enable_encryption) {
+
147  return (!enable_encryption || encryptor_) ? Status::OK : CreateEncryptor();
+
148 }
+
149 
+ +
151  // The offset will be adjusted in Segmenter after knowing moof size.
+
152  traf()->auxiliary_offset.offsets.push_back(0);
+
153 
+
154  // Optimize saiz box.
+
155  SampleAuxiliaryInformationSize& saiz = traf()->auxiliary_size;
+
156  saiz.sample_count = traf()->runs[0].sample_sizes.size();
+
157  if (!saiz.sample_info_sizes.empty()) {
+
158  if (!OptimizeSampleEntries(&saiz.sample_info_sizes,
+
159  &saiz.default_sample_info_size)) {
+
160  saiz.default_sample_info_size = 0;
+
161  }
+
162  } else {
+
163  // |sample_info_sizes| table is filled in only for subsample encryption,
+
164  // otherwise |sample_info_size| is just the IV size.
+
165  DCHECK(!IsSubsampleEncryptionRequired());
+
166  saiz.default_sample_info_size = encryptor_->iv().size();
+
167  }
+
168  traf()->sample_encryption.iv_size = encryptor_->iv().size();
+
169 }
+
170 
+ +
172  DCHECK(encryption_key_);
+
173  scoped_ptr<AesEncryptor> encryptor;
+
174  if (encryption_mode_ == kEncryptionModeAesCtr) {
+
175  encryptor.reset(new AesCtrEncryptor);
+
176  } else if (encryption_mode_ == kEncryptionModeAesCbc) {
+
177  encryptor.reset(new AesCbcPkcs5Encryptor);
+
178  } else {
+
179  return Status(error::MUXER_FAILURE, "Unsupported encryption mode.");
+
180  }
+
181  const bool initialized = encryption_key_->iv.empty()
+
182  ? encryptor->InitializeWithRandomIv(
+
183  encryption_key_->key, kDefaultIvSize)
+
184  : encryptor->InitializeWithIv(
+
185  encryption_key_->key, encryption_key_->iv);
+
186  if (!initialized)
+
187  return Status(error::MUXER_FAILURE, "Failed to create the encryptor.");
+
188  encryptor_ = encryptor.Pass();
+
189  return Status::OK;
+
190 }
191 
-
192  SampleEncryptionEntry sample_encryption_entry;
-
193  sample_encryption_entry.initialization_vector = encryptor_->iv();
-
194  uint8_t* data = sample->writable_data();
-
195  if (IsSubsampleEncryptionRequired()) {
-
196  if (vpx_parser_) {
-
197  std::vector<VPxFrameInfo> vpx_frames;
-
198  if (!vpx_parser_->Parse(sample->data(), sample->data_size(),
-
199  &vpx_frames)) {
-
200  return Status(error::MUXER_FAILURE, "Failed to parse vpx frame.");
-
201  }
-
202 
-
203  const bool is_superframe = vpx_frames.size() > 1;
-
204  for (const VPxFrameInfo& frame : vpx_frames) {
-
205  SubsampleEntry subsample;
-
206  subsample.clear_bytes = frame.uncompressed_header_size;
-
207  subsample.cipher_bytes =
-
208  frame.frame_size - frame.uncompressed_header_size;
-
209 
-
210  // "VP Codec ISO Media File Format Binding" document requires that the
-
211  // encrypted bytes of each frame within the superframe must be block
-
212  // aligned so that the counter state can be computed for each frame
-
213  // within the superframe.
-
214  if (is_superframe) {
-
215  uint16_t misalign_bytes = subsample.cipher_bytes % kCencBlockSize;
-
216  subsample.clear_bytes += misalign_bytes;
-
217  subsample.cipher_bytes -= misalign_bytes;
-
218  }
-
219 
-
220  sample_encryption_entry.subsamples.push_back(subsample);
-
221  if (subsample.cipher_bytes > 0)
-
222  EncryptBytes(data + subsample.clear_bytes, subsample.cipher_bytes);
-
223  data += frame.frame_size;
-
224  }
-
225  } else {
-
226  // TODO(modmaker): Support H.265.
-
227  const NaluReader::NaluType nalu_type = NaluReader::kH264;
-
228  NaluReader reader(nalu_type, nalu_length_size_, data,
-
229  sample->data_size());
-
230 
-
231  // Store the current length of clear data. This is used to squash
-
232  // multiple unencrypted NAL units into fewer subsample entries.
-
233  uint64_t accumulated_clear_bytes = 0;
-
234 
-
235  Nalu nalu;
-
236  NaluReader::Result result;
-
237  while ((result = reader.Advance(&nalu)) == NaluReader::kOk) {
-
238  if (nalu.is_video_slice()) {
-
239  // For video-slice NAL units, encrypt the video slice. This skips
-
240  // the frame header. If this is an unrecognized codec (e.g. H.265),
-
241  // the whole NAL unit will be encrypted.
-
242  const int64_t video_slice_header_size =
-
243  header_parser_ ? header_parser_->GetHeaderSize(nalu) : 0;
-
244  if (video_slice_header_size < 0)
-
245  return Status(error::MUXER_FAILURE, "Failed to read slice header.");
-
246 
-
247  const uint64_t current_clear_bytes = nalu.header_size() +
-
248  video_slice_header_size;
-
249  const uint64_t cipher_bytes =
-
250  nalu.payload_size() - video_slice_header_size;
-
251  const uint8_t* nalu_data = nalu.data() + current_clear_bytes;
-
252  EncryptBytes(const_cast<uint8_t*>(nalu_data), cipher_bytes);
-
253 
-
254  AddSubsamples(
-
255  accumulated_clear_bytes + nalu_length_size_ + current_clear_bytes,
-
256  cipher_bytes, &sample_encryption_entry.subsamples);
-
257  accumulated_clear_bytes = 0;
-
258  } else {
-
259  // For non-video-slice NAL units, don't encrypt.
-
260  accumulated_clear_bytes +=
-
261  nalu_length_size_ + nalu.header_size() + nalu.payload_size();
-
262  }
-
263  }
-
264  if (result != NaluReader::kEOStream)
-
265  return Status(error::MUXER_FAILURE, "Failed to parse NAL units.");
-
266  AddSubsamples(accumulated_clear_bytes, 0,
-
267  &sample_encryption_entry.subsamples);
-
268  }
-
269 
-
270  // The length of per-sample auxiliary datum, defined in CENC ch. 7.
-
271  traf()->auxiliary_size.sample_info_sizes.push_back(
-
272  sample_encryption_entry.ComputeSize());
-
273  } else {
-
274  EncryptBytes(data, sample->data_size());
-
275  }
-
276 
-
277  traf()->sample_encryption.sample_encryption_entries.push_back(
-
278  sample_encryption_entry);
-
279  encryptor_->UpdateIv();
-
280  return Status::OK;
-
281 }
-
282 
-
283 bool EncryptingFragmenter::IsSubsampleEncryptionRequired() {
-
284  return vpx_parser_ || nalu_length_size_ != 0;
-
285 }
-
286 
-
287 } // namespace mp4
-
288 } // namespace media
-
289 } // namespace edash_packager
+
192 void EncryptingFragmenter::EncryptBytes(uint8_t* data, uint32_t size) {
+
193  DCHECK(encryptor_);
+
194  CHECK(encryptor_->EncryptData(data, size, data));
+
195 }
+
196 
+
197 Status EncryptingFragmenter::EncryptSample(scoped_refptr<MediaSample> sample) {
+
198  DCHECK(encryptor_);
+
199 
+
200  SampleEncryptionEntry sample_encryption_entry;
+
201  sample_encryption_entry.initialization_vector = encryptor_->iv();
+
202  uint8_t* data = sample->writable_data();
+
203  if (IsSubsampleEncryptionRequired()) {
+
204  if (vpx_parser_) {
+
205  std::vector<VPxFrameInfo> vpx_frames;
+
206  if (!vpx_parser_->Parse(sample->data(), sample->data_size(),
+
207  &vpx_frames)) {
+
208  return Status(error::MUXER_FAILURE, "Failed to parse vpx frame.");
+
209  }
+
210 
+
211  const bool is_superframe = vpx_frames.size() > 1;
+
212  for (const VPxFrameInfo& frame : vpx_frames) {
+
213  SubsampleEntry subsample;
+
214  subsample.clear_bytes = frame.uncompressed_header_size;
+
215  subsample.cipher_bytes =
+
216  frame.frame_size - frame.uncompressed_header_size;
+
217 
+
218  // "VP Codec ISO Media File Format Binding" document requires that the
+
219  // encrypted bytes of each frame within the superframe must be block
+
220  // aligned so that the counter state can be computed for each frame
+
221  // within the superframe.
+
222  if (is_superframe) {
+
223  uint16_t misalign_bytes = subsample.cipher_bytes % kCencBlockSize;
+
224  subsample.clear_bytes += misalign_bytes;
+
225  subsample.cipher_bytes -= misalign_bytes;
+
226  }
+
227 
+
228  sample_encryption_entry.subsamples.push_back(subsample);
+
229  if (subsample.cipher_bytes > 0)
+
230  EncryptBytes(data + subsample.clear_bytes, subsample.cipher_bytes);
+
231  data += frame.frame_size;
+
232  }
+
233  } else {
+
234  // TODO(modmaker): Support H.265.
+
235  const NaluReader::NaluType nalu_type = NaluReader::kH264;
+
236  NaluReader reader(nalu_type, nalu_length_size_, data,
+
237  sample->data_size());
+
238 
+
239  // Store the current length of clear data. This is used to squash
+
240  // multiple unencrypted NAL units into fewer subsample entries.
+
241  uint64_t accumulated_clear_bytes = 0;
+
242 
+
243  Nalu nalu;
+
244  NaluReader::Result result;
+
245  while ((result = reader.Advance(&nalu)) == NaluReader::kOk) {
+
246  if (nalu.is_video_slice()) {
+
247  // For video-slice NAL units, encrypt the video slice. This skips
+
248  // the frame header. If this is an unrecognized codec (e.g. H.265),
+
249  // the whole NAL unit will be encrypted.
+
250  const int64_t video_slice_header_size =
+
251  header_parser_ ? header_parser_->GetHeaderSize(nalu) : 0;
+
252  if (video_slice_header_size < 0)
+
253  return Status(error::MUXER_FAILURE, "Failed to read slice header.");
+
254 
+
255  const uint64_t current_clear_bytes = nalu.header_size() +
+
256  video_slice_header_size;
+
257  const uint64_t cipher_bytes =
+
258  nalu.payload_size() - video_slice_header_size;
+
259  const uint8_t* nalu_data = nalu.data() + current_clear_bytes;
+
260  EncryptBytes(const_cast<uint8_t*>(nalu_data), cipher_bytes);
+
261 
+
262  AddSubsamples(
+
263  accumulated_clear_bytes + nalu_length_size_ + current_clear_bytes,
+
264  cipher_bytes, &sample_encryption_entry.subsamples);
+
265  accumulated_clear_bytes = 0;
+
266  } else {
+
267  // For non-video-slice NAL units, don't encrypt.
+
268  accumulated_clear_bytes +=
+
269  nalu_length_size_ + nalu.header_size() + nalu.payload_size();
+
270  }
+
271  }
+
272  if (result != NaluReader::kEOStream)
+
273  return Status(error::MUXER_FAILURE, "Failed to parse NAL units.");
+
274  AddSubsamples(accumulated_clear_bytes, 0,
+
275  &sample_encryption_entry.subsamples);
+
276  }
+
277 
+
278  // The length of per-sample auxiliary datum, defined in CENC ch. 7.
+
279  traf()->auxiliary_size.sample_info_sizes.push_back(
+
280  sample_encryption_entry.ComputeSize());
+
281  } else {
+
282  EncryptBytes(data, sample->data_size());
+
283  }
+
284 
+
285  traf()->sample_encryption.sample_encryption_entries.push_back(
+
286  sample_encryption_entry);
+
287  encryptor_->UpdateIv();
+
288  return Status::OK;
+
289 }
+
290 
+
291 bool EncryptingFragmenter::IsSubsampleEncryptionRequired() {
+
292  return vpx_parser_ || nalu_length_size_ != 0;
+
293 }
+
294 
+
295 } // namespace mp4
+
296 } // namespace media
+
297 } // namespace edash_packager
- + +
EncryptingFragmenter(scoped_refptr< StreamInfo > info, TrackFragment *traf, scoped_ptr< EncryptionKey > encryption_key, int64_t clear_time, EncryptionMode encryption_mode)
-
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:76
virtual Status AddSample(scoped_refptr< MediaSample > sample)
Definition: fragmenter.cc:36
Class to parse a vp9 bit stream.
Definition: vp9_parser.h:20
-
EncryptingFragmenter(scoped_refptr< StreamInfo > info, TrackFragment *traf, scoped_ptr< EncryptionKey > encryption_key, int64_t clear_time)
bool OptimizeSampleEntries(std::vector< T > *entries, T *default_value)
Definition: fragmenter.h:89
-
Status AddSample(scoped_refptr< MediaSample > sample) override
- -
void FinalizeFragment() override
Finalize and optimize the fragment.
+
Status AddSample(scoped_refptr< MediaSample > sample) override
+ +
void FinalizeFragment() override
Finalize and optimize the fragment.
-
virtual Status PrepareFragmentForEncryption(bool enable_encryption)
+
virtual Status PrepareFragmentForEncryption(bool enable_encryption)
-
virtual void FinalizeFragmentForEncryption()
Finalize current fragment for encryption.
+
virtual void FinalizeFragmentForEncryption()
Finalize current fragment for encryption.
virtual void FinalizeFragment()
Finalize and optimize the fragment.
Definition: fragmenter.cc:93
+ 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 370cc14219..5d1b460e05 100644 --- a/docs/d6/d48/structedash__packager_1_1media_1_1mp4_1_1DataEntryUrl-members.html +++ b/docs/d6/d48/structedash__packager_1_1media_1_1mp4_1_1DataEntryUrl-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d49/classedash__packager_1_1media_1_1AVCDecoderConfiguration.html b/docs/d6/d49/classedash__packager_1_1media_1_1AVCDecoderConfiguration.html index 93c7ffd1cd..7ac7c9eea7 100644 --- a/docs/d6/d49/classedash__packager_1_1media_1_1AVCDecoderConfiguration.html +++ b/docs/d6/d49/classedash__packager_1_1media_1_1AVCDecoderConfiguration.html @@ -244,7 +244,7 @@ void  diff --git a/docs/d6/d4e/webm_2multi__segment__segmenter_8cc_source.html b/docs/d6/d4e/webm_2multi__segment__segmenter_8cc_source.html index 29ca0d1c2c..2e7386b05e 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/protection__system__specific__info_8h_source.html b/docs/d6/d59/protection__system__specific__info_8h_source.html index e1c2d53fae..2b51927dea 100644 --- a/docs/d6/d59/protection__system__specific__info_8h_source.html +++ b/docs/d6/d59/protection__system__specific__info_8h_source.html @@ -163,7 +163,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d59/structedash__packager_1_1media_1_1mp4_1_1DataInformation.html b/docs/d6/d59/structedash__packager_1_1media_1_1mp4_1_1DataInformation.html index be95ddf94b..c8d80ac480 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 @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d6/d5d/classedash__packager_1_1media_1_1HEVCDecoderConfiguration.html b/docs/d6/d5d/classedash__packager_1_1media_1_1HEVCDecoderConfiguration.html index 8062ba6d20..bb8047e905 100644 --- a/docs/d6/d5d/classedash__packager_1_1media_1_1HEVCDecoderConfiguration.html +++ b/docs/d6/d5d/classedash__packager_1_1media_1_1HEVCDecoderConfiguration.html @@ -171,7 +171,7 @@ void  diff --git a/docs/d6/d5e/structedash__packager_1_1media_1_1H264SEIRecoveryPoint-members.html b/docs/d6/d5e/structedash__packager_1_1media_1_1H264SEIRecoveryPoint-members.html index cb9b6bbd76..e9c19a57ef 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 2cc7ff794c..5c9f62962d 100644 --- a/docs/d6/d5e/structedash__packager_1_1media_1_1mp4_1_1DTSSpecific-members.html +++ b/docs/d6/d5e/structedash__packager_1_1media_1_1mp4_1_1DTSSpecific-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d6c/h26x__bit__reader_8cc_source.html b/docs/d6/d6c/h26x__bit__reader_8cc_source.html index 147c078374..8d11d0afd9 100644 --- a/docs/d6/d6c/h26x__bit__reader_8cc_source.html +++ b/docs/d6/d6c/h26x__bit__reader_8cc_source.html @@ -247,7 +247,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 c0ff2e1a33..5d0dfe8ee5 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 @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/d6/d6e/ts__section__pes_8cc_source.html b/docs/d6/d6e/ts__section__pes_8cc_source.html index b6fc89ffc3..e2bb823c90 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 af7c5d027b..13671fb919 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 e3c6339a4a..f1c6bc940b 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 @@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/d6/d77/dash__iop__mpd__notifier_8h_source.html b/docs/d6/d77/dash__iop__mpd__notifier_8h_source.html index 0d3bfdaabc..7370f364d5 100644 --- a/docs/d6/d77/dash__iop__mpd__notifier_8h_source.html +++ b/docs/d6/d77/dash__iop__mpd__notifier_8h_source.html @@ -210,7 +210,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d79/structedash__packager_1_1media_1_1mp4_1_1ChunkOffset.html b/docs/d6/d79/structedash__packager_1_1media_1_1mp4_1_1ChunkOffset.html index 373a50b882..f7a9eab2fc 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 @@ -180,7 +180,7 @@ uint32_t flags diff --git a/docs/d6/d7b/webm__tracks__parser_8h_source.html b/docs/d6/d7b/webm__tracks__parser_8h_source.html index 38a361d142..2d5542708b 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 7b35ea45ef..98dbfcd9e3 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 abc9aeca46..57989984c3 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 c449d9c91a..5db392cdef 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 3070acb4dc..ef324c5387 100644 --- a/docs/d6/d8a/vp9__parser_8cc_source.html +++ b/docs/d6/d8a/vp9__parser_8cc_source.html @@ -659,7 +659,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d8b/structedash__packager_1_1media_1_1mp4_1_1MovieExtends.html b/docs/d6/d8b/structedash__packager_1_1media_1_1mp4_1_1MovieExtends.html index 98d92f9b02..65e7856dcc 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 @@ -176,7 +176,7 @@ Additional Inherited Members diff --git a/docs/d6/d8f/structedash__packager_1_1media_1_1mp4_1_1FullBox.html b/docs/d6/d8f/structedash__packager_1_1media_1_1mp4_1_1FullBox.html index 073a5c28bc..f760b0940f 100644 --- a/docs/d6/d8f/structedash__packager_1_1media_1_1mp4_1_1FullBox.html +++ b/docs/d6/d8f/structedash__packager_1_1media_1_1mp4_1_1FullBox.html @@ -245,7 +245,7 @@ Protected Member Functions diff --git a/docs/d6/d92/classedash__packager_1_1media_1_1webm_1_1Segmenter-members.html b/docs/d6/d92/classedash__packager_1_1media_1_1webm_1_1Segmenter-members.html index c2a052bcbe..9c3bf43daa 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 2394d19cc4..6f87200e17 100644 --- a/docs/d6/d96/structedash__packager_1_1media_1_1mp4_1_1SampleDescription-members.html +++ b/docs/d6/d96/structedash__packager_1_1media_1_1mp4_1_1SampleDescription-members.html @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d97/classedash__packager_1_1media_1_1UdpFile-members.html b/docs/d6/d97/classedash__packager_1_1media_1_1UdpFile-members.html index 2df70cf36e..34dbe31366 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 e88ca147b2..2b999b792c 100644 --- a/docs/d6/d9b/h264__parser_8h_source.html +++ b/docs/d6/d9b/h264__parser_8h_source.html @@ -439,7 +439,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d9c/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPes-members.html b/docs/d6/d9c/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPes-members.html index 12871bf180..b4d7d0f292 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 8d14ba0788..979c737b9c 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 b974011314..47f023175e 100644 --- a/docs/d6/da2/classedash__packager_1_1media_1_1AesCbcCtsEncryptor.html +++ b/docs/d6/da2/classedash__packager_1_1media_1_1AesCbcCtsEncryptor.html @@ -87,111 +87,69 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
edash_packager::media::AesCbcCtsEncryptor Class Reference
+
+Inheritance diagram for edash_packager::media::AesCbcCtsEncryptor:
+
+
+ + +edash_packager::media::AesEncryptor + +
- - - - - - - - - + + + + + + + + + + + + + + - + + + + + +

Public Member Functions

bool InitializeWithIv (const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv)
 
void Encrypt (const uint8_t *plaintext, size_t size, uint8_t *ciphertext)
 
void Encrypt (const std::vector< uint8_t > &plaintext, std::vector< uint8_t > *ciphertext)
 
bool SetIv (const std::vector< uint8_t > &iv)
 
+
AesEncryptor implementation overrides.
bool InitializeWithIv (const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv) override
 
+size_t NumPaddingBytes (size_t size) override
 
+bool EncryptData (const uint8_t *plaintext, size_t plaintext_size, uint8_t *ciphertext) override
 
void UpdateIv () override
 
bool SetIv (const std::vector< uint8_t > &iv) override
 
- Public Member Functions inherited from edash_packager::media::AesEncryptor
virtual bool InitializeWithRandomIv (const std::vector< uint8_t > &key, uint8_t iv_size)
 
const std::vector< uint8_t > & iv () const
 
 
+bool Encrypt (const std::vector< uint8_t > &plaintext, std::vector< uint8_t > *ciphertext)
 
+bool Encrypt (const std::string &plaintext, std::string *ciphertext)
 
+ + + + + +

+Additional Inherited Members

- Protected Attributes inherited from edash_packager::media::AesEncryptor
+std::vector< uint8_t > iv_
 
+scoped_ptr< AES_KEY > aes_key_
 

Detailed Description

-

Definition at line 179 of file aes_encryptor.h.

+

Definition at line 150 of file aes_encryptor.h.

Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
void edash_packager::media::AesCbcCtsEncryptor::Encrypt (const uint8_t * plaintext,
size_t size,
uint8_t * ciphertext 
)
-
-
Parameters
- - - - -
plaintextpoints to the data to be encrypted.
sizeis the number of bytes to be encrypted. If less than 16 bytes, it will be copied in the clear.
ciphertextshould not be NULL. The buffer should be at least size bytes in length.
-
-
- -

Definition at line 279 of file aes_encryptor.cc.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
void edash_packager::media::AesCbcCtsEncryptor::Encrypt (const std::vector< uint8_t > & plaintext,
std::vector< uint8_t > * ciphertext 
)
-
-
Parameters
- - - -
plaintextcontains the data to be encrypted. If less than 16 bytes in size, it will be copied in the clear.
ciphertextshould not be NULL. Caller retains ownership.
-
-
- -

Definition at line 332 of file aes_encryptor.cc.

- -
-
- +
+ + + + + +
@@ -211,24 +169,27 @@ const std::vector< uint8_t > & 
bool edash_packager::media::AesCbcCtsEncryptor::InitializeWithIv
+
+overridevirtual

Initialize the encryptor with specified key and IV.

-
Parameters
- - - -
keyshould be 128 bits or 192 bits or 256 bits in size as defined in AES spec.
ivshould be 16 bytes in size.
-
-
Returns
true on successful initialization, false otherwise.
-

Definition at line 261 of file aes_encryptor.cc.

+

Implements edash_packager::media::AesEncryptor.

+ +

Definition at line 230 of file aes_encryptor.cc.

- +
+ + + + + +
@@ -238,16 +199,46 @@ const std::vector< uint8_t > & 
bool edash_packager::media::AesCbcCtsEncryptor::SetIv
+
+overridevirtual
-
Parameters
- - -
ivis the initialization vector. Should be 16 bytes in size.
-
-
+

Set IV.

Returns
true if successful, false if the input is invalid.
-

Definition at line 343 of file aes_encryptor.cc.

+

Implements edash_packager::media::AesEncryptor.

+ +

Definition at line 308 of file aes_encryptor.cc.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
void edash_packager::media::AesCbcCtsEncryptor::UpdateIv ()
+
+overridevirtual
+
+

Update IV for next sample. As recommended in ISO/IEC FDIS 23001-7: IV need to be updated per sample for CENC. IV need not be unique per sample for CBC mode.

+ +

Implements edash_packager::media::AesEncryptor.

+ +

Definition at line 306 of file aes_encryptor.cc.

@@ -258,7 +249,7 @@ const std::vector< uint8_t > &  diff --git a/docs/d6/da2/classedash__packager_1_1media_1_1AesCbcCtsEncryptor.png b/docs/d6/da2/classedash__packager_1_1media_1_1AesCbcCtsEncryptor.png new file mode 100644 index 0000000000..92a35d721f Binary files /dev/null and b/docs/d6/da2/classedash__packager_1_1media_1_1AesCbcCtsEncryptor.png differ 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 bd82ceb091..23bdbadd8b 100644 --- a/docs/d6/da3/classedash__packager_1_1media_1_1H264Parser.html +++ b/docs/d6/da3/classedash__packager_1_1media_1_1H264Parser.html @@ -135,7 +135,7 @@ Result ParseSEI (const
diff --git a/docs/d6/da3/mpd__builder_8h_source.html b/docs/d6/da3/mpd__builder_8h_source.html index 2434d26e47..46d7cf1027 100644 --- a/docs/d6/da3/mpd__builder_8h_source.html +++ b/docs/d6/da3/mpd__builder_8h_source.html @@ -534,7 +534,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/da8/classedash__packager_1_1media_1_1WebMWebVTTParser-members.html b/docs/d6/da8/classedash__packager_1_1media_1_1WebMWebVTTParser-members.html index d6569a01c5..5c25c505f3 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 cf071780c0..09f78679bd 100644 --- a/docs/d6/dba/classedash__packager_1_1media_1_1ThreadedIoFile-members.html +++ b/docs/d6/dba/classedash__packager_1_1media_1_1ThreadedIoFile-members.html @@ -120,7 +120,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/dbb/structedash__packager_1_1media_1_1mp4_1_1CompositionOffset-members.html b/docs/d6/dbb/structedash__packager_1_1media_1_1mp4_1_1CompositionOffset-members.html index 6b53adeb72..72e94c2c52 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 84ab9f268b..ebb4dd2001 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 34461ca197..79997752e1 100644 --- a/docs/d6/dc2/classedash__packager_1_1media_1_1TextTrackConfig-members.html +++ b/docs/d6/dc2/classedash__packager_1_1media_1_1TextTrackConfig-members.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/dc2/classedash__packager_1_1media_1_1mp4_1_1H264VideoSliceHeaderParser.html b/docs/d6/dc2/classedash__packager_1_1media_1_1mp4_1_1H264VideoSliceHeaderParser.html index f782e41a8d..994d747d25 100644 --- a/docs/d6/dc2/classedash__packager_1_1media_1_1mp4_1_1H264VideoSliceHeaderParser.html +++ b/docs/d6/dc2/classedash__packager_1_1media_1_1mp4_1_1H264VideoSliceHeaderParser.html @@ -152,7 +152,7 @@ int64_t  diff --git a/docs/d6/dc4/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor.html b/docs/d6/dc4/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor.html index 0629fc7b89..9f7cb5f905 100644 --- a/docs/d6/dc4/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor.html +++ b/docs/d6/dc4/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor.html @@ -87,67 +87,69 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
edash_packager::media::AesCbcPkcs5Encryptor Class Reference
+
+Inheritance diagram for edash_packager::media::AesCbcPkcs5Encryptor:
+
+
+ + +edash_packager::media::AesEncryptor + +
- - - - - - - + + + + + + + + + + + + + + - + + + + + +

Public Member Functions

bool InitializeWithIv (const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv)
 
void Encrypt (const std::string &plaintext, std::string *ciphertext)
 
bool SetIv (const std::vector< uint8_t > &iv)
 
+
AesEncryptor implementation overrides.
bool InitializeWithIv (const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv) override
 
+size_t NumPaddingBytes (size_t size) override
 
+bool EncryptData (const uint8_t *plaintext, size_t plaintext_size, uint8_t *ciphertext) override
 
void UpdateIv () override
 
bool SetIv (const std::vector< uint8_t > &iv) override
 
- Public Member Functions inherited from edash_packager::media::AesEncryptor
virtual bool InitializeWithRandomIv (const std::vector< uint8_t > &key, uint8_t iv_size)
 
const std::vector< uint8_t > & iv () const
 
 
+bool Encrypt (const std::vector< uint8_t > &plaintext, std::vector< uint8_t > *ciphertext)
 
+bool Encrypt (const std::string &plaintext, std::string *ciphertext)
 
+ + + + + +

+Additional Inherited Members

- Protected Attributes inherited from edash_packager::media::AesEncryptor
+std::vector< uint8_t > iv_
 
+scoped_ptr< AES_KEY > aes_key_
 

Detailed Description

-

Definition at line 116 of file aes_encryptor.h.

+

Definition at line 123 of file aes_encryptor.h.

Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
void edash_packager::media::AesCbcPkcs5Encryptor::Encrypt (const std::string & plaintext,
std::string * ciphertext 
)
-
-
Parameters
- - - -
plaintextwill be PKCS5 padded before being encrypted.
ciphertextshould not be NULL.
-
-
- -

Definition at line 166 of file aes_encryptor.cc.

- -
-
- +
+ + + + + +
@@ -167,24 +169,27 @@ const std::vector< uint8_t > & 
bool edash_packager::media::AesCbcPkcs5Encryptor::InitializeWithIv
+
+overridevirtual

Initialize the encryptor with specified key and IV.

-
Parameters
- - - -
keyshould be 128 bits or 192 bits or 256 bits in size as defined in AES spec.
ivshould be 16 bytes in size.
-
-
Returns
true on successful initialization, false otherwise.
-

Definition at line 148 of file aes_encryptor.cc.

+

Implements edash_packager::media::AesEncryptor.

+ +

Definition at line 172 of file aes_encryptor.cc.

- +
+ + + + + +
@@ -194,10 +199,46 @@ const std::vector< uint8_t > & 
bool edash_packager::media::AesCbcPkcs5Encryptor::SetIv
+
+overridevirtual
+

Set IV.

Returns
true if successful, false if the input is invalid.
-

Definition at line 187 of file aes_encryptor.cc.

+

Implements edash_packager::media::AesEncryptor.

+ +

Definition at line 217 of file aes_encryptor.cc.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
void edash_packager::media::AesCbcPkcs5Encryptor::UpdateIv ()
+
+overridevirtual
+
+

Update IV for next sample. As recommended in ISO/IEC FDIS 23001-7: IV need to be updated per sample for CENC. IV need not be unique per sample for CBC mode.

+ +

Implements edash_packager::media::AesEncryptor.

+ +

Definition at line 215 of file aes_encryptor.cc.

@@ -208,7 +249,7 @@ const std::vector< uint8_t > &  diff --git a/docs/d6/dc4/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor.png b/docs/d6/dc4/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor.png new file mode 100644 index 0000000000..6606dfd8d6 Binary files /dev/null and b/docs/d6/dc4/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor.png differ diff --git a/docs/d6/dc8/mkv__writer_8cc_source.html b/docs/d6/dc8/mkv__writer_8cc_source.html index 39c001511d..bbac654d81 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 83a5580e43..bfd6d31d77 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 6b26187a5f..2a22cf87d5 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 2f85981309..e1c01f3170 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 6b65a0cab0..486811f6bd 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 @@ -93,16 +93,25 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');

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

- - - - - - + + + + + + + + + + + + + + +
AesCbcPkcs5Encryptor() (defined in edash_packager::media::AesCbcPkcs5Encryptor)edash_packager::media::AesCbcPkcs5Encryptor
Encrypt(const std::string &plaintext, std::string *ciphertext)edash_packager::media::AesCbcPkcs5Encryptor
InitializeWithIv(const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv)edash_packager::media::AesCbcPkcs5Encryptor
iv() const (defined in edash_packager::media::AesCbcPkcs5Encryptor)edash_packager::media::AesCbcPkcs5Encryptorinline
SetIv(const std::vector< uint8_t > &iv)edash_packager::media::AesCbcPkcs5Encryptor
~AesCbcPkcs5Encryptor() (defined in edash_packager::media::AesCbcPkcs5Encryptor)edash_packager::media::AesCbcPkcs5Encryptor
aes_key_ (defined in edash_packager::media::AesEncryptor)edash_packager::media::AesEncryptorprotected
AesCbcPkcs5Encryptor() (defined in edash_packager::media::AesCbcPkcs5Encryptor)edash_packager::media::AesCbcPkcs5Encryptor
AesEncryptor() (defined in edash_packager::media::AesEncryptor)edash_packager::media::AesEncryptor
Encrypt(const std::vector< uint8_t > &plaintext, std::vector< uint8_t > *ciphertext) (defined in edash_packager::media::AesEncryptor)edash_packager::media::AesEncryptor
Encrypt(const std::string &plaintext, std::string *ciphertext) (defined in edash_packager::media::AesEncryptor)edash_packager::media::AesEncryptor
EncryptData(const uint8_t *plaintext, size_t plaintext_size, uint8_t *ciphertext) override (defined in edash_packager::media::AesCbcPkcs5Encryptor)edash_packager::media::AesCbcPkcs5Encryptorvirtual
InitializeWithIv(const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv) overrideedash_packager::media::AesCbcPkcs5Encryptorvirtual
InitializeWithRandomIv(const std::vector< uint8_t > &key, uint8_t iv_size)edash_packager::media::AesEncryptorvirtual
iv() const (defined in edash_packager::media::AesEncryptor)edash_packager::media::AesEncryptorinline
iv_ (defined in edash_packager::media::AesEncryptor)edash_packager::media::AesEncryptorprotected
NumPaddingBytes(size_t size) override (defined in edash_packager::media::AesCbcPkcs5Encryptor)edash_packager::media::AesCbcPkcs5Encryptorvirtual
SetIv(const std::vector< uint8_t > &iv) overrideedash_packager::media::AesCbcPkcs5Encryptorvirtual
UpdateIv() overrideedash_packager::media::AesCbcPkcs5Encryptorvirtual
~AesCbcPkcs5Encryptor() override (defined in edash_packager::media::AesCbcPkcs5Encryptor)edash_packager::media::AesCbcPkcs5Encryptor
~AesEncryptor() (defined in edash_packager::media::AesEncryptor)edash_packager::media::AesEncryptorvirtual
diff --git a/docs/d6/de8/local__file_8cc_source.html b/docs/d6/de8/local__file_8cc_source.html index ff888a0f30..602c0cd76c 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 59f4e947fc..e2bc880576 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 63968498a5..c8c2968fb7 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 @@ -186,7 +186,7 @@ Additional Inherited Members diff --git a/docs/d6/ded/ts__packet_8h_source.html b/docs/d6/ded/ts__packet_8h_source.html index 8351f3355b..7ada1c74c6 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 aa86228c8d..cdbcdefe5f 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 b5755f8a43..5911b53ea0 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 4ebe3903db..6254c02739 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 37ada1ceb8..a4caa9d62f 100644 --- a/docs/d7/d0b/muxer__listener__test__helper_8h_source.html +++ b/docs/d7/d0b/muxer__listener__test__helper_8h_source.html @@ -206,7 +206,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d0d/structedash__packager_1_1media_1_1mp4_1_1DataReference.html b/docs/d7/d0d/structedash__packager_1_1media_1_1mp4_1_1DataReference.html index 97c80eac9f..88aa7c9f05 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 @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/d7/d12/media__parser_8h_source.html b/docs/d7/d12/media__parser_8h_source.html index d4194ecfb8..2a9ac9f791 100644 --- a/docs/d7/d12/media__parser_8h_source.html +++ b/docs/d7/d12/media__parser_8h_source.html @@ -150,7 +150,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d15/classedash__packager_1_1Representation.html b/docs/d7/d15/classedash__packager_1_1Representation.html index fd1375b878..43c8f6a9f5 100644 --- a/docs/d7/d15/classedash__packager_1_1Representation.html +++ b/docs/d7/d15/classedash__packager_1_1Representation.html @@ -456,7 +456,7 @@ template<MpdBuilder::MpdType type> diff --git a/docs/d7/d15/mpd__notifier_8h_source.html b/docs/d7/d15/mpd__notifier_8h_source.html index aa9f7a6801..52915aba4b 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 bca7689e93..38665fef01 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 7e7f0ce589..d5c7df4bb0 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 cc2f16e07e..d1293e78e3 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 714879f646..cb5641bc4b 100644 --- a/docs/d7/d39/structedash__packager_1_1media_1_1mp4_1_1Movie-members.html +++ b/docs/d7/d39/structedash__packager_1_1media_1_1mp4_1_1Movie-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d3a/classedash__packager_1_1media_1_1VideoStreamInfo.html b/docs/d7/d3a/classedash__packager_1_1media_1_1VideoStreamInfo.html index 7b43d821f5..e0b6157d6c 100644 --- a/docs/d7/d3a/classedash__packager_1_1media_1_1VideoStreamInfo.html +++ b/docs/d7/d3a/classedash__packager_1_1media_1_1VideoStreamInfo.html @@ -429,7 +429,7 @@ void set_language (con diff --git a/docs/d7/d40/classedash__packager_1_1media_1_1WebMClusterParser-members.html b/docs/d7/d40/classedash__packager_1_1media_1_1WebMClusterParser-members.html index be62922925..e932c581ff 100644 --- a/docs/d7/d40/classedash__packager_1_1media_1_1WebMClusterParser-members.html +++ b/docs/d7/d40/classedash__packager_1_1media_1_1WebMClusterParser-members.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d42/protection__system__specific__info_8cc_source.html b/docs/d7/d42/protection__system__specific__info_8cc_source.html index 641d23669d..b00b1e72f1 100644 --- a/docs/d7/d42/protection__system__specific__info_8cc_source.html +++ b/docs/d7/d42/protection__system__specific__info_8cc_source.html @@ -220,7 +220,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d44/classedash__packager_1_1MockMpdNotifier.html b/docs/d7/d44/classedash__packager_1_1MockMpdNotifier.html index 8f368a0e57..d233006942 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 c35b75448c..ec47f980d3 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 @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d7/d4f/structedash__packager_1_1media_1_1mp4_1_1Edit.html b/docs/d7/d4f/structedash__packager_1_1media_1_1mp4_1_1Edit.html index e87ec01583..16a1d041ff 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 @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d7/d50/classedash__packager_1_1media_1_1mp4_1_1EncryptingFragmenter-members.html b/docs/d7/d50/classedash__packager_1_1media_1_1mp4_1_1EncryptingFragmenter-members.html index 8a5521a734..5031776113 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 @@ -97,7 +97,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(scoped_refptr< StreamInfo > info, TrackFragment *traf, scoped_ptr< EncryptionKey > encryption_key, int64_t clear_time)edash_packager::media::mp4::EncryptingFragmenter + EncryptingFragmenter(scoped_refptr< StreamInfo > info, TrackFragment *traf, scoped_ptr< EncryptionKey > encryption_key, int64_t clear_time, EncryptionMode encryption_mode)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 @@ -118,7 +118,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d52/classedash__packager_1_1media_1_1WebMListParser-members.html b/docs/d7/d52/classedash__packager_1_1media_1_1WebMListParser-members.html index 67d5c527a0..de50529d08 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 b6458fcd0e..270995072a 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/d56/structedash__packager_1_1media_1_1mp4_1_1EC3Specific-members.html b/docs/d7/d56/structedash__packager_1_1media_1_1mp4_1_1EC3Specific-members.html index 69c46f5c5e..5db61bd0b4 100644 --- a/docs/d7/d56/structedash__packager_1_1media_1_1mp4_1_1EC3Specific-members.html +++ b/docs/d7/d56/structedash__packager_1_1media_1_1mp4_1_1EC3Specific-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d5a/classedash__packager_1_1media_1_1AesEncryptor-members.html b/docs/d7/d5a/classedash__packager_1_1media_1_1AesEncryptor-members.html new file mode 100644 index 0000000000..126fcbff3c --- /dev/null +++ b/docs/d7/d5a/classedash__packager_1_1media_1_1AesEncryptor-members.html @@ -0,0 +1,117 @@ + + + + + + +DASH Media Packaging SDK: Member List + + + + + + + + + +
+
+ + + + + + +
+
DASH Media Packaging SDK +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
edash_packager::media::AesEncryptor Member List
+
+
+ +

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

+ + + + + + + + + + + + + + +
aes_key_ (defined in edash_packager::media::AesEncryptor)edash_packager::media::AesEncryptorprotected
AesEncryptor() (defined in edash_packager::media::AesEncryptor)edash_packager::media::AesEncryptor
Encrypt(const std::vector< uint8_t > &plaintext, std::vector< uint8_t > *ciphertext) (defined in edash_packager::media::AesEncryptor)edash_packager::media::AesEncryptor
Encrypt(const std::string &plaintext, std::string *ciphertext) (defined in edash_packager::media::AesEncryptor)edash_packager::media::AesEncryptor
EncryptData(const uint8_t *plaintext, size_t plaintext_size, uint8_t *ciphertext)=0 (defined in edash_packager::media::AesEncryptor)edash_packager::media::AesEncryptorpure virtual
InitializeWithIv(const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv)=0edash_packager::media::AesEncryptorpure virtual
InitializeWithRandomIv(const std::vector< uint8_t > &key, uint8_t iv_size)edash_packager::media::AesEncryptorvirtual
iv() const (defined in edash_packager::media::AesEncryptor)edash_packager::media::AesEncryptorinline
iv_ (defined in edash_packager::media::AesEncryptor)edash_packager::media::AesEncryptorprotected
NumPaddingBytes(size_t size)=0 (defined in edash_packager::media::AesEncryptor)edash_packager::media::AesEncryptorpure virtual
SetIv(const std::vector< uint8_t > &iv)=0edash_packager::media::AesEncryptorpure virtual
UpdateIv()=0edash_packager::media::AesEncryptorpure virtual
~AesEncryptor() (defined in edash_packager::media::AesEncryptor)edash_packager::media::AesEncryptorvirtual
+ + + + 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 40bedb9ff8..68d99d78ea 100644 --- a/docs/d7/d79/structedash__packager_1_1media_1_1mp4_1_1MediaData-members.html +++ b/docs/d7/d79/structedash__packager_1_1media_1_1mp4_1_1MediaData-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d7b/structedash__packager_1_1media_1_1mp4_1_1DecodingTime-members.html b/docs/d7/d7b/structedash__packager_1_1media_1_1mp4_1_1DecodingTime-members.html index f5bfc604be..7a94b8b8a4 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 6ecb40e54d..82006b9e5b 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 adcdb924fb..3c6a630d84 100644 --- a/docs/d7/d82/classedash__packager_1_1MpdBuilder-members.html +++ b/docs/d7/d82/classedash__packager_1_1MpdBuilder-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d85/classedash__packager_1_1media_1_1VPCodecConfiguration.html b/docs/d7/d85/classedash__packager_1_1media_1_1VPCodecConfiguration.html index 8aa99f0ad1..3c2f4c7894 100644 --- a/docs/d7/d85/classedash__packager_1_1media_1_1VPCodecConfiguration.html +++ b/docs/d7/d85/classedash__packager_1_1media_1_1VPCodecConfiguration.html @@ -255,7 +255,7 @@ bool video_full_range_flag diff --git a/docs/d7/d87/video__stream__info_8h_source.html b/docs/d7/d87/video__stream__info_8h_source.html index 713cd8f211..1582d36e38 100644 --- a/docs/d7/d87/video__stream__info_8h_source.html +++ b/docs/d7/d87/video__stream__info_8h_source.html @@ -188,7 +188,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d8a/structedash__packager_1_1media_1_1mp4_1_1Box.html b/docs/d7/d8a/structedash__packager_1_1media_1_1mp4_1_1Box.html index f758da6e33..b019f1fd6f 100644 --- a/docs/d7/d8a/structedash__packager_1_1media_1_1mp4_1_1Box.html +++ b/docs/d7/d8a/structedash__packager_1_1media_1_1mp4_1_1Box.html @@ -384,7 +384,7 @@ class BoxBuffer diff --git a/docs/d7/d8f/structedash__packager_1_1media_1_1mp4_1_1CueSourceIDBox-members.html b/docs/d7/d8f/structedash__packager_1_1media_1_1mp4_1_1CueSourceIDBox-members.html index 43d5541268..e973fc4308 100644 --- a/docs/d7/d8f/structedash__packager_1_1media_1_1mp4_1_1CueSourceIDBox-members.html +++ b/docs/d7/d8f/structedash__packager_1_1media_1_1mp4_1_1CueSourceIDBox-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d9d/progress__listener_8h_source.html b/docs/d7/d9d/progress__listener_8h_source.html index 3c7c514315..05cdb453de 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 45d7b89c51..e37190565d 100644 --- a/docs/d7/da4/track__run__iterator_8h_source.html +++ b/docs/d7/da4/track__run__iterator_8h_source.html @@ -174,28 +174,28 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
125 } // namespace edash_packager
126 
127 #endif // MEDIA_FORMATS_MP4_TRACK_RUN_ITERATOR_H_
- -
const VideoSampleEntry & video_description() const
Only valid if is_video() is true.
+ +
const VideoSampleEntry & video_description() const
Only valid if is_video() is true.
- -
scoped_ptr< DecryptConfig > GetDecryptConfig()
-
bool CacheAuxInfo(const uint8_t *buf, int size)
-
const AudioSampleEntry & audio_description() const
Only valid if is_audio() is true.
- - + +
scoped_ptr< DecryptConfig > GetDecryptConfig()
+
bool CacheAuxInfo(const uint8_t *buf, int size)
+
const AudioSampleEntry & audio_description() const
Only valid if is_audio() is true.
+ + - + - - + + - + diff --git a/docs/d7/da5/structedash__packager_1_1media_1_1mp4_1_1SampleSize.html b/docs/d7/da5/structedash__packager_1_1media_1_1mp4_1_1SampleSize.html index 2cf4cc1f44..86fd27897b 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 @@ -188,7 +188,7 @@ Additional Inherited Members diff --git a/docs/d7/db0/mpd__writer_8h_source.html b/docs/d7/db0/mpd__writer_8h_source.html index e93231abe8..7f51190b1b 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 64c8daac7d..144906d4b1 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 d2d5580911..44b16b4d9b 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 33e0ef93b0..e02b17114b 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 @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d7/dd0/mpd__notifier__util_8h_source.html b/docs/d7/dd0/mpd__notifier__util_8h_source.html index d400311227..fb2f0f808b 100644 --- a/docs/d7/dd0/mpd__notifier__util_8h_source.html +++ b/docs/d7/dd0/mpd__notifier__util_8h_source.html @@ -128,7 +128,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/dd2/classedash__packager_1_1media_1_1VPxParser-members.html b/docs/d7/dd2/classedash__packager_1_1media_1_1VPxParser-members.html index 065b6f0410..c939b930b6 100644 --- a/docs/d7/dd2/classedash__packager_1_1media_1_1VPxParser-members.html +++ b/docs/d7/dd2/classedash__packager_1_1media_1_1VPxParser-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/dd4/request__signer_8h_source.html b/docs/d7/dd4/request__signer_8h_source.html index 2cefc56e41..436b8102d0 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 c611ab6a7d..25c7223909 100644 --- a/docs/d7/dd6/key__source_8cc_source.html +++ b/docs/d7/dd6/key__source_8cc_source.html @@ -277,7 +277,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 e58dc56138..bf7d47788b 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 88a0715646..42092a24ed 100644 --- a/docs/d7/dec/h264__byte__to__unit__stream__converter_8h_source.html +++ b/docs/d7/dec/h264__byte__to__unit__stream__converter_8h_source.html @@ -140,7 +140,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/dec/structedash__packager_1_1media_1_1mp4_1_1MediaHeader.html b/docs/d7/dec/structedash__packager_1_1media_1_1mp4_1_1MediaHeader.html index a02056b7b4..c5e7809e25 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 @@ -194,7 +194,7 @@ Additional Inherited Members diff --git a/docs/d7/dee/mpd__generator_8cc_source.html b/docs/d7/dee/mpd__generator_8cc_source.html index 1f67c5cc4a..2b8739d67f 100644 --- a/docs/d7/dee/mpd__generator_8cc_source.html +++ b/docs/d7/dee/mpd__generator_8cc_source.html @@ -199,7 +199,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/def/mp4__media__parser_8cc_source.html b/docs/d7/def/mp4__media__parser_8cc_source.html index d202504c9c..8d8981ec13 100644 --- a/docs/d7/def/mp4__media__parser_8cc_source.html +++ b/docs/d7/def/mp4__media__parser_8cc_source.html @@ -829,7 +829,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 92c3e2aad5..61a024e540 100644 --- a/docs/d7/df1/structedash__packager_1_1media_1_1mp4_1_1SegmentIndex-members.html +++ b/docs/d7/df1/structedash__packager_1_1media_1_1mp4_1_1SegmentIndex-members.html @@ -117,7 +117,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/df3/classedash__packager_1_1media_1_1File-members.html b/docs/d7/df3/classedash__packager_1_1media_1_1File-members.html index f7ad14fbf3..76e0defc7d 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 1035d2f07b..37af7754a7 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 cc11095c4b..e33782ac15 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 2643b054df..dc91cf6554 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 @@ -285,7 +285,7 @@ track_id, const scoped_refptr
diff --git a/docs/d8/d0d/media__sample_8cc_source.html b/docs/d8/d0d/media__sample_8cc_source.html index 262260fd94..6219a61983 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 57b0aa644f..70e5ed8969 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 a01e592c64..c0cc77adf6 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: - - + + @@ -162,9 +162,9 @@ virtual void  - - + + @@ -179,9 +179,9 @@ void 

Public Member Functions

 EncryptingFragmenter (scoped_refptr< StreamInfo > info, TrackFragment *traf, scoped_ptr< EncryptionKey > encryption_key, int64_t clear_time)
 
 EncryptingFragmenter (scoped_refptr< StreamInfo > info, TrackFragment *traf, scoped_ptr< EncryptionKey > encryption_key, int64_t clear_time, EncryptionMode encryption_mode)
 
Fragmenter implementation overrides.
Status AddSample (scoped_refptr< MediaSample > sample) override
 
EncryptionKeyencryption_key ()
 
-AesCtrEncryptorencryptor ()
 
+AesEncryptorencryptor ()
 
void set_encryption_key (scoped_ptr< EncryptionKey > encryption_key)
 
set_encryption_key

Detailed Description

EncryptingFragmenter generates MP4 fragments with sample encrypted.

-

Definition at line 26 of file encrypting_fragmenter.h.

+

Definition at line 27 of file encrypting_fragmenter.h.

Constructor & Destructor Documentation

- +
@@ -207,7 +207,13 @@ void  - + + + + + + + @@ -262,7 +268,7 @@ void 
set_encryption_key int64_t clear_time clear_time,
EncryptionMode encryption_mode 
set_encryption_keyReimplemented from edash_packager::media::mp4::Fragmenter.

-

Definition at line 87 of file encrypting_fragmenter.cc.

+

Definition at line 89 of file encrypting_fragmenter.cc.

@@ -289,7 +295,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 169 of file encrypting_fragmenter.cc.

+

Definition at line 171 of file encrypting_fragmenter.cc.

@@ -325,7 +331,7 @@ void 
set_encryption_keyReimplemented from edash_packager::media::mp4::Fragmenter.

-

Definition at line 102 of file encrypting_fragmenter.cc.

+

Definition at line 104 of file encrypting_fragmenter.cc.

@@ -355,7 +361,7 @@ void 
set_encryption_keyReimplemented in edash_packager::media::mp4::KeyRotationFragmenter.

-

Definition at line 143 of file encrypting_fragmenter.cc.

+

Definition at line 145 of file encrypting_fragmenter.cc.

@@ -366,7 +372,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 4ae96226ba..cffdf25fa0 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 d29b338172..0b43df7dea 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 a2561b4536..061c4f89c7 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 38f7e83488..9a1fa1a234 100644 --- a/docs/d8/d26/structedash__packager_1_1media_1_1mp4_1_1SegmentType-members.html +++ b/docs/d8/d26/structedash__packager_1_1media_1_1mp4_1_1SegmentType-members.html @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d2e/classedash__packager_1_1media_1_1ByteQueue.html b/docs/d8/d2e/classedash__packager_1_1media_1_1ByteQueue.html index e07289428d..9b0b0e54bf 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 eedcd4fb56..a8944537ef 100644 --- a/docs/d8/d32/structedash__packager_1_1media_1_1mp4_1_1CompactSampleSize-members.html +++ b/docs/d8/d32/structedash__packager_1_1media_1_1mp4_1_1CompactSampleSize-members.html @@ -114,7 +114,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d33/webm__content__encodings__client_8h_source.html b/docs/d8/d33/webm__content__encodings__client_8h_source.html index a21b56e19e..388f71c1bc 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 ee9336596a..295cb9f85c 100644 --- a/docs/d8/d34/structedash__packager_1_1media_1_1mp4_1_1ElementaryStreamDescriptor-members.html +++ b/docs/d8/d34/structedash__packager_1_1media_1_1mp4_1_1ElementaryStreamDescriptor-members.html @@ -114,7 +114,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d4a/structedash__packager_1_1media_1_1mp4_1_1EditList.html b/docs/d8/d4a/structedash__packager_1_1media_1_1mp4_1_1EditList.html index 73e1d4d296..bf376ba8e3 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 @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/d8/d4d/aes__decryptor_8h_source.html b/docs/d8/d4d/aes__decryptor_8h_source.html new file mode 100644 index 0000000000..0a6b0d12bd --- /dev/null +++ b/docs/d8/d4d/aes__decryptor_8h_source.html @@ -0,0 +1,244 @@ + + + + + + +DASH Media Packaging SDK: media/base/aes_decryptor.h Source File + + + + + + + + + +
+
+ + + + + + +
+
DASH Media Packaging SDK +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
aes_decryptor.h
+
+
+
1 // Copyright 2016 Google Inc. All rights reserved.
+
2 //
+
3 // Use of this source code is governed by a BSD-style
+
4 // license that can be found in the LICENSE file or at
+
5 // https://developers.google.com/open-source/licenses/bsd
+
6 //
+
7 // AES Decryptor implementation using openssl.
+
8 
+
9 #ifndef MEDIA_BASE_AES_DECRYPTOR_H_
+
10 #define MEDIA_BASE_AES_DECRYPTOR_H_
+
11 
+
12 #include <string>
+
13 #include <vector>
+
14 
+
15 #include "packager/base/memory/scoped_ptr.h"
+
16 #include "packager/base/stl_util.h"
+
17 #include "packager/media/base/aes_encryptor.h"
+
18 
+
19 struct aes_key_st;
+
20 typedef struct aes_key_st AES_KEY;
+
21 
+
22 namespace edash_packager {
+
23 namespace media {
+
24 
+
25 class AesDecryptor {
+
26  public:
+
27  AesDecryptor();
+
28  virtual ~AesDecryptor();
+
29 
+
30  virtual bool InitializeWithIv(const std::vector<uint8_t>& key,
+
31  const std::vector<uint8_t>& iv) = 0;
+
32 
+
36  virtual bool Decrypt(const uint8_t* ciphertext,
+
37  size_t ciphertext_size,
+
38  uint8_t* plaintext) = 0;
+
39 
+
40  virtual bool Decrypt(const std::vector<uint8_t>& ciphertext,
+
41  std::vector<uint8_t>* plaintext) = 0;
+
42 
+
43  virtual bool Decrypt(const std::string& ciphertext,
+
44  std::string* plaintext) = 0;
+
46 
+
49  virtual bool SetIv(const std::vector<uint8_t>& iv) = 0;
+
50 
+
51  const std::vector<uint8_t>& iv() const { return iv_; }
+
52 
+
53  protected:
+
54  // Initialization vector, with size 8 or 16.
+
55  std::vector<uint8_t> iv_;
+
56  // Openssl AES_KEY.
+
57  scoped_ptr<AES_KEY> aes_key_;
+
58 
+
59  private:
+
60  DISALLOW_COPY_AND_ASSIGN(AesDecryptor);
+
61 };
+
62 
+
63 // Class which implements AES-CTR counter-mode decryption.
+
64 class AesCtrDecryptor : public AesDecryptor {
+
65  public:
+ +
67  ~AesCtrDecryptor() override;
+
68 
+
71  bool InitializeWithIv(const std::vector<uint8_t>& key,
+
72  const std::vector<uint8_t>& iv) override;
+
73 
+
74  bool Decrypt(const uint8_t* ciphertext,
+
75  size_t ciphertext_size,
+
76  uint8_t* plaintext) override;
+
77 
+
78  bool Decrypt(const std::vector<uint8_t>& ciphertext,
+
79  std::vector<uint8_t>* plaintext) override;
+
80 
+
81  bool Decrypt(const std::string& ciphertext, std::string* plaintext) override;
+
82 
+
83  bool SetIv(const std::vector<uint8_t>& iv) override;
+
85 
+
86  uint32_t block_offset() const { return encryptor_->block_offset(); }
+
87 
+
88  private:
+
89  scoped_ptr<AesCtrEncryptor> encryptor_;
+
90 
+
91  DISALLOW_COPY_AND_ASSIGN(AesCtrDecryptor);
+
92 };
+
93 
+
94 // Class which implements AES-CBC (Cipher block chaining) decryption with
+
95 // PKCS#5 padding.
+ +
97  public:
+ +
99  ~AesCbcPkcs5Decryptor() override;
+
100 
+
103  bool InitializeWithIv(const std::vector<uint8_t>& key,
+
104  const std::vector<uint8_t>& iv) override;
+
105 
+
106  bool Decrypt(const uint8_t* ciphertext,
+
107  size_t ciphertext_size,
+
108  uint8_t* plaintext) override;
+
109 
+
110  bool Decrypt(const std::vector<uint8_t>& ciphertext,
+
111  std::vector<uint8_t>* plaintext) override;
+
112 
+
113  bool Decrypt(const std::string& ciphertext, std::string* plaintext) override;
+
114 
+
115  bool SetIv(const std::vector<uint8_t>& iv) override;
+
117 
+
118  private:
+
119  DISALLOW_COPY_AND_ASSIGN(AesCbcPkcs5Decryptor);
+
120 };
+
121 
+
122 // Class which implements AES-CBC (Cipher block chaining) decryption with
+
123 // Ciphertext stealing.
+ +
125  public:
+ +
127  ~AesCbcCtsDecryptor() override;
+
128 
+
131  bool InitializeWithIv(const std::vector<uint8_t>& key,
+
132  const std::vector<uint8_t>& iv) override;
+
133 
+
134  bool Decrypt(const uint8_t* ciphertext,
+
135  size_t ciphertext_size,
+
136  uint8_t* plaintext) override;
+
137 
+
138  bool Decrypt(const std::vector<uint8_t>& ciphertext,
+
139  std::vector<uint8_t>* plaintext) override;
+
140 
+
141  bool Decrypt(const std::string& ciphertext, std::string* plaintext) override;
+
142 
+
143  bool SetIv(const std::vector<uint8_t>& iv) override;
+
145 
+
146  private:
+
147  DISALLOW_COPY_AND_ASSIGN(AesCbcCtsDecryptor);
+
148 };
+
149 
+
150 } // namespace media
+
151 } // namespace edash_packager
+
152 
+
153 #endif // MEDIA_BASE_AES_DECRYPTOR_H_
+
virtual bool SetIv(const std::vector< uint8_t > &iv)=0
+
bool SetIv(const std::vector< uint8_t > &iv) override
+
bool SetIv(const std::vector< uint8_t > &iv) override
+
bool SetIv(const std::vector< uint8_t > &iv) override
+ + + + +
+ + + + 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 75d15fa082..0a1e42a928 100644 --- a/docs/d8/d6a/classedash__packager_1_1media_1_1AudioStreamInfo-members.html +++ b/docs/d8/d6a/classedash__packager_1_1media_1_1AudioStreamInfo-members.html @@ -124,7 +124,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d6c/classedash__packager_1_1media_1_1MediaSample.html b/docs/d8/d6c/classedash__packager_1_1media_1_1MediaSample.html index c4df339322..dc1f2a4064 100644 --- a/docs/d8/d6c/classedash__packager_1_1media_1_1MediaSample.html +++ b/docs/d8/d6c/classedash__packager_1_1media_1_1MediaSample.html @@ -411,7 +411,7 @@ class base::RefCountedThre diff --git a/docs/d8/d6f/classedash__packager_1_1MockAdaptationSet-members.html b/docs/d8/d6f/classedash__packager_1_1MockAdaptationSet-members.html index 7f7eb2be6d..14f28fe251 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 24e3ea951d..2b29ef891a 100644 --- a/docs/d8/d6f/structedash__packager_1_1media_1_1mp4_1_1TrackFragment-members.html +++ b/docs/d8/d6f/structedash__packager_1_1media_1_1mp4_1_1TrackFragment-members.html @@ -117,7 +117,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d71/classedash__packager_1_1media_1_1mp4_1_1ChunkInfoIterator.html b/docs/d8/d71/classedash__packager_1_1media_1_1mp4_1_1ChunkInfoIterator.html index 91c80c3ef6..14203529f5 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 8041ddc948..902ed05e11 100644 --- a/docs/d8/d74/classedash__packager_1_1Representation-members.html +++ b/docs/d8/d74/classedash__packager_1_1Representation-members.html @@ -112,7 +112,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d75/structedash__packager_1_1media_1_1mp4_1_1ProtectionSchemeInfo-members.html b/docs/d8/d75/structedash__packager_1_1media_1_1mp4_1_1ProtectionSchemeInfo-members.html index 634b92a39c..e217179a31 100644 --- a/docs/d8/d75/structedash__packager_1_1media_1_1mp4_1_1ProtectionSchemeInfo-members.html +++ b/docs/d8/d75/structedash__packager_1_1media_1_1mp4_1_1ProtectionSchemeInfo-members.html @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d78/classedash__packager_1_1MockAdaptationSet.html b/docs/d8/d78/classedash__packager_1_1MockAdaptationSet.html index cb9af54921..bc4e892ce7 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 aecd73c51e..74bf29dded 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 b88c4a504f..84f2f3740e 100644 --- a/docs/d8/d82/classedash__packager_1_1media_1_1MpdNotifyMuxerListener-members.html +++ b/docs/d8/d82/classedash__packager_1_1media_1_1MpdNotifyMuxerListener-members.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d8e/classedash__packager_1_1media_1_1mp2t_1_1TsSection.html b/docs/d8/d8e/classedash__packager_1_1media_1_1mp2t_1_1TsSection.html index 4969dcf66a..6ca981ebd6 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 f26d3151f5..fb26f59689 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 b9326e07ad..916cdecca3 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 905a640fe9..a928f87afe 100644 --- a/docs/d8/d9a/fragmenter_8cc_source.html +++ b/docs/d8/d9a/fragmenter_8cc_source.html @@ -251,7 +251,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 2e4ad189e1..c65ca3ab3b 100644 --- a/docs/d8/d9c/webm__tracks__parser_8cc_source.html +++ b/docs/d8/d9c/webm__tracks__parser_8cc_source.html @@ -440,7 +440,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d9f/udp__file_8h_source.html b/docs/d8/d9f/udp__file_8h_source.html index f06e09283e..a439887c5e 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 83bf5b71ec..21f8c575e5 100644 --- a/docs/d8/da0/classedash__packager_1_1media_1_1wvm_1_1WvmMediaParser.html +++ b/docs/d8/da0/classedash__packager_1_1media_1_1wvm_1_1WvmMediaParser.html @@ -256,7 +256,7 @@ track_id, const scoped_refptr
diff --git a/docs/d8/da1/classedash__packager_1_1media_1_1WidevineKeySource-members.html b/docs/d8/da1/classedash__packager_1_1media_1_1WidevineKeySource-members.html index e77651bec1..b6e334be66 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 @@ -120,7 +120,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 2199d54c71..7c95f07c99 100644 --- a/docs/d8/da6/structedash__packager_1_1media_1_1mp4_1_1SoundMediaHeader-members.html +++ b/docs/d8/da6/structedash__packager_1_1media_1_1mp4_1_1SoundMediaHeader-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/daa/stream__info_8h_source.html b/docs/d8/daa/stream__info_8h_source.html index b3eecf2720..ebf8baadd9 100644 --- a/docs/d8/daa/stream__info_8h_source.html +++ b/docs/d8/daa/stream__info_8h_source.html @@ -185,7 +185,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/dbb/structedash__packager_1_1media_1_1wvm_1_1PrevSampleData-members.html b/docs/d8/dbb/structedash__packager_1_1media_1_1wvm_1_1PrevSampleData-members.html index 49fb08d693..406b1a8a6e 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 5d3d04f67f..68d45c935d 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 e359e2eb17..3e484d9265 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 @@ -93,16 +93,22 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');

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

- - - - - - + + + + + + + + + + + +
AesCbcPkcs5Decryptor() (defined in edash_packager::media::AesCbcPkcs5Decryptor)edash_packager::media::AesCbcPkcs5Decryptor
Decrypt(const std::string &ciphertext, std::string *plaintext)edash_packager::media::AesCbcPkcs5Decryptor
InitializeWithIv(const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv)edash_packager::media::AesCbcPkcs5Decryptor
iv() const (defined in edash_packager::media::AesCbcPkcs5Decryptor)edash_packager::media::AesCbcPkcs5Decryptorinline
SetIv(const std::vector< uint8_t > &iv)edash_packager::media::AesCbcPkcs5Decryptor
~AesCbcPkcs5Decryptor() (defined in edash_packager::media::AesCbcPkcs5Decryptor)edash_packager::media::AesCbcPkcs5Decryptor
aes_key_ (defined in edash_packager::media::AesDecryptor)edash_packager::media::AesDecryptorprotected
AesCbcPkcs5Decryptor() (defined in edash_packager::media::AesCbcPkcs5Decryptor)edash_packager::media::AesCbcPkcs5Decryptor
AesDecryptor() (defined in edash_packager::media::AesDecryptor)edash_packager::media::AesDecryptor
Decrypt(const uint8_t *ciphertext, size_t ciphertext_size, uint8_t *plaintext) override (defined in edash_packager::media::AesCbcPkcs5Decryptor)edash_packager::media::AesCbcPkcs5Decryptorvirtual
Decrypt(const std::vector< uint8_t > &ciphertext, std::vector< uint8_t > *plaintext) override (defined in edash_packager::media::AesCbcPkcs5Decryptor)edash_packager::media::AesCbcPkcs5Decryptorvirtual
Decrypt(const std::string &ciphertext, std::string *plaintext) override (defined in edash_packager::media::AesCbcPkcs5Decryptor)edash_packager::media::AesCbcPkcs5Decryptorvirtual
InitializeWithIv(const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv) override (defined in edash_packager::media::AesCbcPkcs5Decryptor)edash_packager::media::AesCbcPkcs5Decryptorvirtual
iv() const (defined in edash_packager::media::AesDecryptor)edash_packager::media::AesDecryptorinline
iv_ (defined in edash_packager::media::AesDecryptor)edash_packager::media::AesDecryptorprotected
SetIv(const std::vector< uint8_t > &iv) overrideedash_packager::media::AesCbcPkcs5Decryptorvirtual
~AesCbcPkcs5Decryptor() override (defined in edash_packager::media::AesCbcPkcs5Decryptor)edash_packager::media::AesCbcPkcs5Decryptor
~AesDecryptor() (defined in edash_packager::media::AesDecryptor)edash_packager::media::AesDecryptorvirtual
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 b05ae9fd54..e71c02f3a0 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 101f4c8ca6..2014a4a0c7 100644 --- a/docs/d8/dcf/classedash__packager_1_1media_1_1RsaRequestSigner-members.html +++ b/docs/d8/dcf/classedash__packager_1_1media_1_1RsaRequestSigner-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/de5/structedash__packager_1_1media_1_1mp4_1_1SampleEncryptionEntry.html b/docs/d8/de5/structedash__packager_1_1media_1_1mp4_1_1SampleEncryptionEntry.html index 74baa39674..ba86bb5df3 100644 --- a/docs/d8/de5/structedash__packager_1_1media_1_1mp4_1_1SampleEncryptionEntry.html +++ b/docs/d8/de5/structedash__packager_1_1media_1_1mp4_1_1SampleEncryptionEntry.html @@ -250,7 +250,7 @@ std::vector< diff --git a/docs/d8/de6/webm__crypto__helpers_8h_source.html b/docs/d8/de6/webm__crypto__helpers_8h_source.html index e5c4f9f6c3..821794f452 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 0651a6936d..76f8b78111 100644 --- a/docs/d8/df0/webm_2single__segment__segmenter_8cc_source.html +++ b/docs/d8/df0/webm_2single__segment__segmenter_8cc_source.html @@ -176,11 +176,11 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
87 } // namespace webm
88 } // namespace media
89 } // 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 b06842ed12..f352b76d2c 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/dfa/nal__unit__to__byte__stream__converter_8h_source.html b/docs/d8/dfa/nal__unit__to__byte__stream__converter_8h_source.html index ff5ffebc19..7d06ec1ec7 100644 --- a/docs/d8/dfa/nal__unit__to__byte__stream__converter_8h_source.html +++ b/docs/d8/dfa/nal__unit__to__byte__stream__converter_8h_source.html @@ -140,7 +140,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/dfb/classedash__packager_1_1media_1_1DecoderConfiguration.html b/docs/d8/dfb/classedash__packager_1_1media_1_1DecoderConfiguration.html index 10f4dfb0a7..5d62bdda53 100644 --- a/docs/d8/dfb/classedash__packager_1_1media_1_1DecoderConfiguration.html +++ b/docs/d8/dfb/classedash__packager_1_1media_1_1DecoderConfiguration.html @@ -333,7 +333,7 @@ void  diff --git a/docs/d8/dfd/structedash__packager_1_1media_1_1VPxFrameInfo.html b/docs/d8/dfd/structedash__packager_1_1media_1_1VPxFrameInfo.html index 73fe6cd76a..0482295c5d 100644 --- a/docs/d8/dfd/structedash__packager_1_1media_1_1VPxFrameInfo.html +++ b/docs/d8/dfd/structedash__packager_1_1media_1_1VPxFrameInfo.html @@ -121,7 +121,7 @@ uint32_t height diff --git a/docs/d9/d01/mp4_2single__segment__segmenter_8h_source.html b/docs/d9/d01/mp4_2single__segment__segmenter_8h_source.html index ea1dd9e036..e25a0e8cde 100644 --- a/docs/d9/d01/mp4_2single__segment__segmenter_8h_source.html +++ b/docs/d9/d01/mp4_2single__segment__segmenter_8h_source.html @@ -133,14 +133,14 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
58 #endif // MEDIA_FORMATS_MP4_SINGLE_SEGMENT_SEGMENTER_H_
bool GetInitRange(size_t *offset, size_t *size) override
- +
bool GetIndexRange(size_t *offset, size_t *size) override
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
diff --git a/docs/d9/d08/mock__mpd__builder_8h_source.html b/docs/d9/d08/mock__mpd__builder_8h_source.html index e042c64074..43a3276db5 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 a3ec09d8a5..6b0a2b794d 100644 --- a/docs/d9/d15/key__rotation__fragmenter_8cc_source.html +++ b/docs/d9/d15/key__rotation__fragmenter_8cc_source.html @@ -106,128 +106,130 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
17 const bool kInitialEncryptionInfo = true;
18 } // namespace
19 
- +
21  scoped_refptr<StreamInfo> info,
22  TrackFragment* traf,
23  KeySource* encryption_key_source,
24  KeySource::TrackType track_type,
25  int64_t crypto_period_duration,
26  int64_t clear_time,
-
27  MuxerListener* muxer_listener)
-
28  : EncryptingFragmenter(info,
-
29  traf,
-
30  scoped_ptr<EncryptionKey>(new EncryptionKey()),
-
31  clear_time),
-
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() {}
+
27  MuxerListener* muxer_listener,
+
28  EncryptionMode encryption_mode)
+
29  : EncryptingFragmenter(info,
+
30  traf,
+
31  scoped_ptr<EncryptionKey>(new EncryptionKey()),
+
32  clear_time,
+
33  encryption_mode),
+
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  DCHECK(encryption_key());
-
62  const std::vector<ProtectionSystemSpecificInfo>& system_info =
-
63  encryption_key()->key_system_info;
-
64  moof_->pssh.resize(system_info.size());
-
65  for (size_t i = 0; i < system_info.size(); i++) {
-
66  moof_->pssh[i].raw_box = system_info[i].CreateBox();
-
67  }
-
68 
-
69  if (muxer_listener_) {
-
70  muxer_listener_->OnEncryptionInfoReady(!kInitialEncryptionInfo,
-
71  encryption_key()->key_id,
-
72  encryption_key()->key_system_info);
-
73  }
-
74 
-
75  // Skip the following steps if the current fragment is not going to be
-
76  // encrypted. 'pssh' box needs to be included in the fragment, which is
-
77  // performed above, regardless of whether the fragment is encrypted. This is
-
78  // necessary for two reasons: 1) Requesting keys before reaching encrypted
-
79  // content avoids playback delay due to license requests; 2) In Chrome, CDM
-
80  // must be initialized before starting the playback and CDM can only be
-
81  // initialized with a valid 'pssh'.
-
82  if (!enable_encryption) {
-
83  DCHECK(!encryptor());
-
84  return Status::OK;
-
85  }
-
86 
-
87  if (need_to_refresh_encryptor) {
-
88  Status status = CreateEncryptor();
-
89  if (!status.ok())
-
90  return status;
-
91  }
-
92  DCHECK(encryptor());
-
93 
-
94  // Key rotation happens in fragment boundary only in this implementation,
-
95  // i.e. there is at most one key for the fragment. So there should be only
-
96  // one entry in SampleGroupDescription box and one entry in SampleToGroup box.
-
97  // Fill in SampleGroupDescription box information.
-
98  traf()->sample_group_description.grouping_type = FOURCC_SEIG;
-
99  traf()->sample_group_description.entries.resize(1);
-
100  traf()->sample_group_description.entries[0].is_encrypted = true;
-
101  traf()->sample_group_description.entries[0].iv_size =
-
102  encryptor()->iv().size();
-
103  traf()->sample_group_description.entries[0].key_id = encryption_key()->key_id;
-
104 
-
105  // Fill in SampleToGroup box information.
-
106  traf()->sample_to_group.grouping_type = FOURCC_SEIG;
-
107  traf()->sample_to_group.entries.resize(1);
-
108  // sample_count is adjusted in |FinalizeFragment| later.
-
109  traf()->sample_to_group.entries[0].group_description_index =
-
110  SampleToGroupEntry::kTrackFragmentGroupDescriptionIndexBase + 1;
-
111 
-
112  return Status::OK;
-
113 }
-
114 
- - -
117  DCHECK_EQ(1u, traf()->sample_to_group.entries.size());
-
118  traf()->sample_to_group.entries[0].sample_count =
-
119  traf()->auxiliary_size.sample_count;
-
120 }
-
121 
-
122 } // namespace mp4
-
123 } // namespace media
-
124 } // namespace edash_packager
+
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  DCHECK(encryption_key());
+
64  const std::vector<ProtectionSystemSpecificInfo>& system_info =
+
65  encryption_key()->key_system_info;
+
66  moof_->pssh.resize(system_info.size());
+
67  for (size_t i = 0; i < system_info.size(); i++) {
+
68  moof_->pssh[i].raw_box = system_info[i].CreateBox();
+
69  }
+
70 
+
71  if (muxer_listener_) {
+
72  muxer_listener_->OnEncryptionInfoReady(!kInitialEncryptionInfo,
+
73  encryption_key()->key_id,
+
74  encryption_key()->key_system_info);
+
75  }
+
76 
+
77  // Skip the following steps if the current fragment is not going to be
+
78  // encrypted. 'pssh' box needs to be included in the fragment, which is
+
79  // performed above, regardless of whether the fragment is encrypted. This is
+
80  // necessary for two reasons: 1) Requesting keys before reaching encrypted
+
81  // content avoids playback delay due to license requests; 2) In Chrome, CDM
+
82  // must be initialized before starting the playback and CDM can only be
+
83  // initialized with a valid 'pssh'.
+
84  if (!enable_encryption) {
+
85  DCHECK(!encryptor());
+
86  return Status::OK;
+
87  }
+
88 
+
89  if (need_to_refresh_encryptor) {
+
90  Status status = CreateEncryptor();
+
91  if (!status.ok())
+
92  return status;
+
93  }
+
94  DCHECK(encryptor());
+
95 
+
96  // Key rotation happens in fragment boundary only in this implementation,
+
97  // i.e. there is at most one key for the fragment. So there should be only
+
98  // one entry in SampleGroupDescription box and one entry in SampleToGroup box.
+
99  // Fill in SampleGroupDescription box information.
+
100  traf()->sample_group_description.grouping_type = FOURCC_SEIG;
+
101  traf()->sample_group_description.entries.resize(1);
+
102  traf()->sample_group_description.entries[0].is_encrypted = true;
+
103  traf()->sample_group_description.entries[0].iv_size =
+
104  encryptor()->iv().size();
+
105  traf()->sample_group_description.entries[0].key_id = encryption_key()->key_id;
+
106 
+
107  // Fill in SampleToGroup box information.
+
108  traf()->sample_to_group.grouping_type = FOURCC_SEIG;
+
109  traf()->sample_to_group.entries.resize(1);
+
110  // sample_count is adjusted in |FinalizeFragment| later.
+
111  traf()->sample_to_group.entries[0].group_description_index =
+
112  SampleToGroupEntry::kTrackFragmentGroupDescriptionIndexBase + 1;
+
113 
+
114  return Status::OK;
+
115 }
+
116 
+ + +
119  DCHECK_EQ(1u, traf()->sample_to_group.entries.size());
+
120  traf()->sample_to_group.entries[0].sample_count =
+
121  traf()->auxiliary_size.sample_count;
+
122 }
+
123 
+
124 } // namespace mp4
+
125 } // namespace media
+
126 } // namespace edash_packager
+
KeyRotationFragmenter(MovieFragment *moof, scoped_refptr< StreamInfo > info, TrackFragment *traf, KeySource *encryption_key_source, KeySource::TrackType track_type, int64_t crypto_period_duration, int64_t clear_time, MuxerListener *muxer_listener, EncryptionMode encryption_mode)
virtual Status GetCryptoPeriodKey(uint32_t crypto_period_index, TrackType track_type, EncryptionKey *key)
Definition: key_source.cc:62
-
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
-
KeyRotationFragmenter(MovieFragment *moof, scoped_refptr< StreamInfo > info, TrackFragment *traf, KeySource *encryption_key_source, KeySource::TrackType track_type, int64_t crypto_period_duration, int64_t clear_time, MuxerListener *muxer_listener)
+
Status PrepareFragmentForEncryption(bool enable_encryption) override
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:35
-
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 63f6a7ecd6..9da23e032d 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 b8ccc89bde..4231f117d3 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 @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/d9/d21/structedash__packager_1_1media_1_1mp4_1_1ID3v2.html b/docs/d9/d21/structedash__packager_1_1media_1_1mp4_1_1ID3v2.html index c02386de7d..4a26408cc7 100644 --- a/docs/d9/d21/structedash__packager_1_1media_1_1mp4_1_1ID3v2.html +++ b/docs/d9/d21/structedash__packager_1_1media_1_1mp4_1_1ID3v2.html @@ -189,7 +189,7 @@ Additional Inherited Members diff --git a/docs/d9/d2c/classedash__packager_1_1media_1_1ProgressListener.html b/docs/d9/d2c/classedash__packager_1_1media_1_1ProgressListener.html index 4d8f868b8c..88c6340c6f 100644 --- a/docs/d9/d2c/classedash__packager_1_1media_1_1ProgressListener.html +++ b/docs/d9/d2c/classedash__packager_1_1media_1_1ProgressListener.html @@ -146,7 +146,7 @@ Public Member Functions diff --git a/docs/d9/d3b/classedash__packager_1_1media_1_1MemoryFile-members.html b/docs/d9/d3b/classedash__packager_1_1media_1_1MemoryFile-members.html index 25500bf759..940f5ac60d 100644 --- a/docs/d9/d3b/classedash__packager_1_1media_1_1MemoryFile-members.html +++ b/docs/d9/d3b/classedash__packager_1_1media_1_1MemoryFile-members.html @@ -119,7 +119,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d3b/webm__content__encodings_8h_source.html b/docs/d9/d3b/webm__content__encodings_8h_source.html index f6b522d1eb..0d415bfa47 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 89ae1fbd5d..c5d9f18754 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 9f094a12d1..f736b3d972 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 @@ -222,7 +222,7 @@ Additional Inherited Members diff --git a/docs/d9/d5b/structedash__packager_1_1SegmentInfo-members.html b/docs/d9/d5b/structedash__packager_1_1SegmentInfo-members.html index 4b2571b3e7..6c85a9c967 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 b59766ed47..64975fbc9f 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 34bd468fc8..a1bd057638 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 06edb06991..3fda12f499 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 1e6d137176..d4fe4cfc9d 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 ef09d6a417..d23214007d 100644 --- a/docs/d9/d8b/classedash__packager_1_1media_1_1KeySource.html +++ b/docs/d9/d8b/classedash__packager_1_1media_1_1KeySource.html @@ -527,7 +527,7 @@ static std::string  diff --git a/docs/d9/d90/text__track_8h_source.html b/docs/d9/d90/text__track_8h_source.html index 850533c5e6..2e1cf3312c 100644 --- a/docs/d9/d90/text__track_8h_source.html +++ b/docs/d9/d90/text__track_8h_source.html @@ -134,7 +134,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d93/media__stream_8h_source.html b/docs/d9/d93/media__stream_8h_source.html index 82f482969d..233141490a 100644 --- a/docs/d9/d93/media__stream_8h_source.html +++ b/docs/d9/d93/media__stream_8h_source.html @@ -165,12 +165,12 @@ 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 602970425c..d249e4db53 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/d96/classedash__packager_1_1media_1_1AesDecryptor.html b/docs/d9/d96/classedash__packager_1_1media_1_1AesDecryptor.html new file mode 100644 index 0000000000..bf70080585 --- /dev/null +++ b/docs/d9/d96/classedash__packager_1_1media_1_1AesDecryptor.html @@ -0,0 +1,185 @@ + + + + + + +DASH Media Packaging SDK: edash_packager::media::AesDecryptor Class Reference + + + + + + + + + +
+
+ + + + + + +
+
DASH Media Packaging SDK +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
edash_packager::media::AesDecryptor Class Referenceabstract
+
+
+
+Inheritance diagram for edash_packager::media::AesDecryptor:
+
+
+ + +edash_packager::media::AesCbcCtsDecryptor +edash_packager::media::AesCbcPkcs5Decryptor +edash_packager::media::AesCtrDecryptor + +
+ + + + + + + + + + + + + + + + +

+Public Member Functions

+virtual bool InitializeWithIv (const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv)=0
 
virtual bool SetIv (const std::vector< uint8_t > &iv)=0
 
+const std::vector< uint8_t > & iv () const
 
Various forms of decrypt calls.

The plaintext and ciphertext pointers can be the same address.

+
+virtual bool Decrypt (const uint8_t *ciphertext, size_t ciphertext_size, uint8_t *plaintext)=0
 
+virtual bool Decrypt (const std::vector< uint8_t > &ciphertext, std::vector< uint8_t > *plaintext)=0
 
+virtual bool Decrypt (const std::string &ciphertext, std::string *plaintext)=0
 
+ + + + + +

+Protected Attributes

+std::vector< uint8_t > iv_
 
+scoped_ptr< AES_KEY > aes_key_
 
+

Detailed Description

+
+

Definition at line 25 of file aes_decryptor.h.

+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool edash_packager::media::AesDecryptor::SetIv (const std::vector< uint8_t > & iv)
+
+pure virtual
+
+

Set IV. block_offset_ is reset to 0 on success.

+
Returns
true if successful, false if the input is invalid.
+ +

Implemented in edash_packager::media::AesCbcCtsDecryptor, edash_packager::media::AesCbcPkcs5Decryptor, and edash_packager::media::AesCtrDecryptor.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/docs/d9/d96/classedash__packager_1_1media_1_1AesDecryptor.png b/docs/d9/d96/classedash__packager_1_1media_1_1AesDecryptor.png new file mode 100644 index 0000000000..11c6e9d9ce Binary files /dev/null and b/docs/d9/d96/classedash__packager_1_1media_1_1AesDecryptor.png differ 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 23424b51e8..f121180744 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 @@ -93,16 +93,17 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');

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

- - - - - - + + + + + + +
DecryptConfig(const std::vector< uint8_t > &key_id, const std::vector< uint8_t > &iv, const std::vector< SubsampleEntry > &subsamples)edash_packager::media::DecryptConfig
iv() const (defined in edash_packager::media::DecryptConfig)edash_packager::media::DecryptConfiginline
kDecryptionKeySizeedash_packager::media::DecryptConfigstatic
key_id() const (defined in edash_packager::media::DecryptConfig)edash_packager::media::DecryptConfiginline
subsamples() const (defined in edash_packager::media::DecryptConfig)edash_packager::media::DecryptConfiginline
~DecryptConfig() (defined in edash_packager::media::DecryptConfig)edash_packager::media::DecryptConfig
DecryptConfig(const std::vector< uint8_t > &key_id, const std::vector< uint8_t > &iv, const std::vector< SubsampleEntry > &subsamples, EncryptionMode decryption_mode)edash_packager::media::DecryptConfig
decryption_mode() const (defined in edash_packager::media::DecryptConfig)edash_packager::media::DecryptConfiginline
iv() const (defined in edash_packager::media::DecryptConfig)edash_packager::media::DecryptConfiginline
kDecryptionKeySizeedash_packager::media::DecryptConfigstatic
key_id() const (defined in edash_packager::media::DecryptConfig)edash_packager::media::DecryptConfiginline
subsamples() const (defined in edash_packager::media::DecryptConfig)edash_packager::media::DecryptConfiginline
~DecryptConfig() (defined in edash_packager::media::DecryptConfig)edash_packager::media::DecryptConfig
diff --git a/docs/d9/d9b/structedash__packager_1_1SegmentInfo.html b/docs/d9/d9b/structedash__packager_1_1SegmentInfo.html index 08b88e6c65..2eb3d21541 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 20b6fa9031..5f09a35c81 100644 --- a/docs/d9/da4/stream__descriptor_8h_source.html +++ b/docs/d9/da4/stream__descriptor_8h_source.html @@ -141,7 +141,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/da7/classedash__packager_1_1media_1_1H26xBitReader-members.html b/docs/d9/da7/classedash__packager_1_1media_1_1H26xBitReader-members.html index e4631f2c21..9889106a72 100644 --- a/docs/d9/da7/classedash__packager_1_1media_1_1H26xBitReader-members.html +++ b/docs/d9/da7/classedash__packager_1_1media_1_1H26xBitReader-members.html @@ -105,7 +105,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 b8400c2f1a..b27155d48e 100644 --- a/docs/d9/db4/classedash__packager_1_1media_1_1VodMediaInfoDumpMuxerListener.html +++ b/docs/d9/db4/classedash__packager_1_1media_1_1VodMediaInfoDumpMuxerListener.html @@ -231,7 +231,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 b58a65469b..6b510aadd2 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 b212eb3171..cd57afc560 100644 --- a/docs/d9/db9/muxer_8cc_source.html +++ b/docs/d9/db9/muxer_8cc_source.html @@ -108,113 +108,116 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
19  max_sd_pixels_(0),
20  clear_lead_in_seconds_(0),
21  crypto_period_duration_in_seconds_(0),
-
22  cancelled_(false),
-
23  clock_(NULL) {}
-
24 
-
25 Muxer::~Muxer() {}
-
26 
-
27 void Muxer::SetKeySource(KeySource* encryption_key_source,
-
28  uint32_t max_sd_pixels,
-
29  double clear_lead_in_seconds,
-
30  double crypto_period_duration_in_seconds) {
-
31  DCHECK(encryption_key_source);
-
32  encryption_key_source_ = encryption_key_source;
-
33  max_sd_pixels_ = max_sd_pixels;
-
34  clear_lead_in_seconds_ = clear_lead_in_seconds;
-
35  crypto_period_duration_in_seconds_ = crypto_period_duration_in_seconds;
-
36 }
-
37 
- -
39  DCHECK(stream);
-
40  stream->Connect(this);
-
41  streams_.push_back(stream);
-
42 }
-
43 
- -
45  DCHECK(!streams_.empty());
+
22  encryption_mode_(kEncryptionModeUnknown),
+
23  cancelled_(false),
+
24  clock_(NULL) {}
+
25 
+
26 Muxer::~Muxer() {}
+
27 
+
28 void Muxer::SetKeySource(KeySource* encryption_key_source,
+
29  uint32_t max_sd_pixels,
+
30  double clear_lead_in_seconds,
+
31  double crypto_period_duration_in_seconds,
+
32  EncryptionMode encryption_mode) {
+
33  DCHECK(encryption_key_source);
+
34  encryption_key_source_ = encryption_key_source;
+
35  max_sd_pixels_ = max_sd_pixels;
+
36  clear_lead_in_seconds_ = clear_lead_in_seconds;
+
37  crypto_period_duration_in_seconds_ = crypto_period_duration_in_seconds;
+
38  encryption_mode_ = encryption_mode;
+
39 }
+
40 
+ +
42  DCHECK(stream);
+
43  stream->Connect(this);
+
44  streams_.push_back(stream);
+
45 }
46 
-
47  Status status;
-
48  // Start the streams.
-
49  for (std::vector<MediaStream*>::iterator it = streams_.begin();
-
50  it != streams_.end();
-
51  ++it) {
-
52  status = (*it)->Start(MediaStream::kPull);
-
53  if (!status.ok())
-
54  return status;
-
55  }
-
56 
-
57  uint32_t current_stream_id = 0;
-
58  while (status.ok()) {
-
59  if (cancelled_)
-
60  return Status(error::CANCELLED, "muxer run cancelled");
-
61 
-
62  scoped_refptr<MediaSample> sample;
-
63  status = streams_[current_stream_id]->PullSample(&sample);
-
64  if (!status.ok())
-
65  break;
-
66  status = AddSample(streams_[current_stream_id], sample);
-
67 
-
68  // Switch to next stream if the current stream is ready for fragmentation.
-
69  if (status.error_code() == error::FRAGMENT_FINALIZED) {
-
70  current_stream_id = (current_stream_id + 1) % streams_.size();
-
71  status.Clear();
-
72  }
-
73  }
-
74  // Finalize the muxer after reaching end of stream.
-
75  return status.error_code() == error::END_OF_STREAM ? Finalize() : status;
-
76 }
-
77 
-
78 void Muxer::Cancel() {
-
79  cancelled_ = true;
-
80 }
-
81 
-
82 void Muxer::SetMuxerListener(scoped_ptr<MuxerListener> muxer_listener) {
-
83  muxer_listener_ = muxer_listener.Pass();
-
84 }
-
85 
- -
87  scoped_ptr<ProgressListener> progress_listener) {
-
88  progress_listener_ = progress_listener.Pass();
-
89 }
-
90 
-
91 Status Muxer::AddSample(const MediaStream* stream,
-
92  scoped_refptr<MediaSample> sample) {
-
93  DCHECK(std::find(streams_.begin(), streams_.end(), stream) != streams_.end());
-
94 
-
95  if (!initialized_) {
-
96  Status status = Initialize();
-
97  if (!status.ok())
-
98  return status;
-
99  initialized_ = true;
-
100  }
-
101  if (sample->end_of_stream()) {
-
102  // EOS sample should be sent only when the sample was pushed from Demuxer
-
103  // to Muxer. In this case, there should be only one stream in Muxer.
-
104  DCHECK_EQ(1u, streams_.size());
-
105  return Finalize();
-
106  } else if (sample->is_encrypted()) {
-
107  LOG(ERROR) << "Unable to multiplex encrypted media sample";
-
108  return Status(error::INTERNAL_ERROR, "Encrypted media sample.");
-
109  }
-
110  return DoAddSample(stream, sample);
-
111 }
-
112 
-
113 } // namespace media
-
114 } // namespace edash_packager
-
void SetMuxerListener(scoped_ptr< MuxerListener > muxer_listener)
Definition: muxer.cc:82
+ +
48  DCHECK(!streams_.empty());
+
49 
+
50  Status status;
+
51  // Start the streams.
+
52  for (std::vector<MediaStream*>::iterator it = streams_.begin();
+
53  it != streams_.end();
+
54  ++it) {
+
55  status = (*it)->Start(MediaStream::kPull);
+
56  if (!status.ok())
+
57  return status;
+
58  }
+
59 
+
60  uint32_t current_stream_id = 0;
+
61  while (status.ok()) {
+
62  if (cancelled_)
+
63  return Status(error::CANCELLED, "muxer run cancelled");
+
64 
+
65  scoped_refptr<MediaSample> sample;
+
66  status = streams_[current_stream_id]->PullSample(&sample);
+
67  if (!status.ok())
+
68  break;
+
69  status = AddSample(streams_[current_stream_id], sample);
+
70 
+
71  // Switch to next stream if the current stream is ready for fragmentation.
+
72  if (status.error_code() == error::FRAGMENT_FINALIZED) {
+
73  current_stream_id = (current_stream_id + 1) % streams_.size();
+
74  status.Clear();
+
75  }
+
76  }
+
77  // Finalize the muxer after reaching end of stream.
+
78  return status.error_code() == error::END_OF_STREAM ? Finalize() : status;
+
79 }
+
80 
+
81 void Muxer::Cancel() {
+
82  cancelled_ = true;
+
83 }
+
84 
+
85 void Muxer::SetMuxerListener(scoped_ptr<MuxerListener> muxer_listener) {
+
86  muxer_listener_ = muxer_listener.Pass();
+
87 }
+
88 
+ +
90  scoped_ptr<ProgressListener> progress_listener) {
+
91  progress_listener_ = progress_listener.Pass();
+
92 }
+
93 
+
94 Status Muxer::AddSample(const MediaStream* stream,
+
95  scoped_refptr<MediaSample> sample) {
+
96  DCHECK(std::find(streams_.begin(), streams_.end(), stream) != streams_.end());
+
97 
+
98  if (!initialized_) {
+
99  Status status = Initialize();
+
100  if (!status.ok())
+
101  return status;
+
102  initialized_ = true;
+
103  }
+
104  if (sample->end_of_stream()) {
+
105  // EOS sample should be sent only when the sample was pushed from Demuxer
+
106  // to Muxer. In this case, there should be only one stream in Muxer.
+
107  DCHECK_EQ(1u, streams_.size());
+
108  return Finalize();
+
109  } else if (sample->is_encrypted()) {
+
110  LOG(ERROR) << "Unable to multiplex encrypted media sample";
+
111  return Status(error::INTERNAL_ERROR, "Encrypted media sample.");
+
112  }
+
113  return DoAddSample(stream, sample);
+
114 }
+
115 
+
116 } // namespace media
+
117 } // namespace edash_packager
+
void SetMuxerListener(scoped_ptr< MuxerListener > muxer_listener)
Definition: muxer.cc:85
-
void SetProgressListener(scoped_ptr< ProgressListener > progress_listener)
Definition: muxer.cc:86
+
void SetProgressListener(scoped_ptr< ProgressListener > progress_listener)
Definition: muxer.cc:89
+
void SetKeySource(KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, EncryptionMode encryption_mode)
Definition: muxer.cc:28
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:35
-
Status Run()
Drive the remuxing from muxer side (pull).
Definition: muxer.cc:44
-
void AddStream(MediaStream *stream)
Add video/audio stream.
Definition: muxer.cc:38
+
Status Run()
Drive the remuxing from muxer side (pull).
Definition: muxer.cc:47
+
void AddStream(MediaStream *stream)
Add video/audio stream.
Definition: muxer.cc:41
- -
void SetKeySource(KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds)
Definition: muxer.cc:27
+ 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 60f27280e6..c6bf18c342 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 51f94bffbc..c9694f2fe5 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 9df39ee51f..028eaab63b 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 @@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/d9/dcc/webm__video__client_8h_source.html b/docs/d9/dcc/webm__video__client_8h_source.html index 13f90d8a3e..c8c4171b50 100644 --- a/docs/d9/dcc/webm__video__client_8h_source.html +++ b/docs/d9/dcc/webm__video__client_8h_source.html @@ -149,7 +149,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/de3/muxer__listener__internal_8cc_source.html b/docs/d9/de3/muxer__listener__internal_8cc_source.html index ab57d85505..76c2fb72ae 100644 --- a/docs/d9/de3/muxer__listener__internal_8cc_source.html +++ b/docs/d9/de3/muxer__listener__internal_8cc_source.html @@ -343,7 +343,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 6642350a6c..2dfe752e6f 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 b1ef3eeaca..2659e16dac 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 7a732d232d..f5fbac6cba 100644 --- a/docs/da/d00/structedash__packager_1_1media_1_1mp4_1_1SubtitleMediaHeader-members.html +++ b/docs/da/d00/structedash__packager_1_1media_1_1mp4_1_1SubtitleMediaHeader-members.html @@ -112,7 +112,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d02/structedash__packager_1_1media_1_1H264WeightingFactors-members.html b/docs/da/d02/structedash__packager_1_1media_1_1H264WeightingFactors-members.html index 4121b3fdc0..8914211c0f 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 b599111cab..4fdf47fecc 100644 --- a/docs/da/d02/structedash__packager_1_1media_1_1mp4_1_1SyncSample-members.html +++ b/docs/da/d02/structedash__packager_1_1media_1_1mp4_1_1SyncSample-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d04/audio__stream__info_8cc_source.html b/docs/da/d04/audio__stream__info_8cc_source.html index 030b929acd..5cbf54df21 100644 --- a/docs/da/d04/audio__stream__info_8cc_source.html +++ b/docs/da/d04/audio__stream__info_8cc_source.html @@ -225,7 +225,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d09/classedash__packager_1_1media_1_1SegmentTestBase-members.html b/docs/da/d09/classedash__packager_1_1media_1_1SegmentTestBase-members.html index 8432761fe3..e8b3521662 100644 --- a/docs/da/d09/classedash__packager_1_1media_1_1SegmentTestBase-members.html +++ b/docs/da/d09/classedash__packager_1_1media_1_1SegmentTestBase-members.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d14/classedash__packager_1_1media_1_1webm_1_1Segmenter.html b/docs/da/d14/classedash__packager_1_1media_1_1webm_1_1Segmenter.html index c8f9bfb805..a277c03d31 100644 --- a/docs/da/d14/classedash__packager_1_1media_1_1webm_1_1Segmenter.html +++ b/docs/da/d14/classedash__packager_1_1media_1_1webm_1_1Segmenter.html @@ -427,7 +427,7 @@ virtual diff --git a/docs/da/d15/structedash__packager_1_1media_1_1mp4_1_1HandlerReference-members.html b/docs/da/d15/structedash__packager_1_1media_1_1mp4_1_1HandlerReference-members.html index c415d636e4..c788cbe5f0 100644 --- a/docs/da/d15/structedash__packager_1_1media_1_1mp4_1_1HandlerReference-members.html +++ b/docs/da/d15/structedash__packager_1_1media_1_1mp4_1_1HandlerReference-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d17/structedash__packager_1_1media_1_1mp4_1_1MovieExtendsHeader.html b/docs/da/d17/structedash__packager_1_1media_1_1mp4_1_1MovieExtendsHeader.html index 6ff3dd5b44..46bffa0f3c 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 @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/da/d1e/classedash__packager_1_1media_1_1StreamInfo-members.html b/docs/da/d1e/classedash__packager_1_1media_1_1StreamInfo-members.html index c79562985f..682e51263e 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 ef663e2dc8..c690836662 100644 --- a/docs/da/d22/key__rotation__fragmenter_8h_source.html +++ b/docs/da/d22/key__rotation__fragmenter_8h_source.html @@ -96,57 +96,59 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
7 #ifndef MEDIA_FORMATS_MP4_KEY_ROTATION_FRAGMENTER_H_
8 #define MEDIA_FORMATS_MP4_KEY_ROTATION_FRAGMENTER_H_
9 
-
10 #include "packager/media/base/key_source.h"
-
11 #include "packager/media/event/muxer_listener.h"
-
12 #include "packager/media/formats/mp4/encrypting_fragmenter.h"
-
13 
-
14 namespace edash_packager {
-
15 namespace media {
-
16 namespace mp4 {
-
17 
-
18 struct MovieFragment;
-
19 
- -
23  public:
- -
37  scoped_refptr<StreamInfo> info,
-
38  TrackFragment* traf,
-
39  KeySource* encryption_key_source,
-
40  KeySource::TrackType track_type,
-
41  int64_t crypto_period_duration,
-
42  int64_t clear_time,
-
43  MuxerListener* muxer_listener);
-
44  ~KeyRotationFragmenter() override;
-
45 
-
46  protected:
-
49  Status PrepareFragmentForEncryption(bool enable_encryption) override;
-
50  void FinalizeFragmentForEncryption() override;
-
52 
-
53  private:
-
54  MovieFragment* moof_;
-
55 
-
56  KeySource* encryption_key_source_;
-
57  KeySource::TrackType track_type_;
-
58  const int64_t crypto_period_duration_;
-
59  size_t prev_crypto_period_index_;
-
60 
-
61  // For notifying new pssh boxes to the event handler.
-
62  MuxerListener* const muxer_listener_;
-
63 
-
64  DISALLOW_COPY_AND_ASSIGN(KeyRotationFragmenter);
-
65 };
-
66 
-
67 } // namespace mp4
-
68 } // namespace media
-
69 } // namespace edash_packager
-
70 
-
71 #endif // MEDIA_FORMATS_MP4_KEY_ROTATION_FRAGMENTER_H_
-
void FinalizeFragmentForEncryption() override
Finalize current fragment for encryption.
-
EncryptingFragmenter generates MP4 fragments with sample encrypted.
+
10 #include "packager/media/base/encryption_modes.h"
+
11 #include "packager/media/base/key_source.h"
+
12 #include "packager/media/event/muxer_listener.h"
+
13 #include "packager/media/formats/mp4/encrypting_fragmenter.h"
+
14 
+
15 namespace edash_packager {
+
16 namespace media {
+
17 namespace mp4 {
+
18 
+
19 struct MovieFragment;
+
20 
+ +
24  public:
+ +
38  scoped_refptr<StreamInfo> info,
+
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  MuxerListener* muxer_listener,
+
45  EncryptionMode encryption_mode);
+
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
+
72 
+
73 #endif // MEDIA_FORMATS_MP4_KEY_ROTATION_FRAGMENTER_H_
+
KeyRotationFragmenter(MovieFragment *moof, scoped_refptr< StreamInfo > info, TrackFragment *traf, KeySource *encryption_key_source, KeySource::TrackType track_type, int64_t crypto_period_duration, int64_t clear_time, MuxerListener *muxer_listener, EncryptionMode encryption_mode)
+
void FinalizeFragmentForEncryption() override
Finalize current fragment for encryption.
+
EncryptingFragmenter generates MP4 fragments with sample encrypted.
-
Status PrepareFragmentForEncryption(bool enable_encryption) override
- -
KeyRotationFragmenter(MovieFragment *moof, scoped_refptr< StreamInfo > info, TrackFragment *traf, KeySource *encryption_key_source, KeySource::TrackType track_type, int64_t crypto_period_duration, int64_t clear_time, MuxerListener *muxer_listener)
+
Status PrepareFragmentForEncryption(bool enable_encryption) override
+
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:35
@@ -154,7 +156,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d27/classedash__packager_1_1media_1_1AudioStreamInfo.html b/docs/da/d27/classedash__packager_1_1media_1_1AudioStreamInfo.html index f616aa7867..a73051fb21 100644 --- a/docs/da/d27/classedash__packager_1_1media_1_1AudioStreamInfo.html +++ b/docs/da/d27/classedash__packager_1_1media_1_1AudioStreamInfo.html @@ -307,7 +307,7 @@ Static Public Member Functions diff --git a/docs/da/d2a/structedash__packager_1_1media_1_1mp4_1_1ProtectionSystemSpecificHeader.html b/docs/da/d2a/structedash__packager_1_1media_1_1mp4_1_1ProtectionSystemSpecificHeader.html index cb8b451dd0..fa5c997ad7 100644 --- a/docs/da/d2a/structedash__packager_1_1media_1_1mp4_1_1ProtectionSystemSpecificHeader.html +++ b/docs/da/d2a/structedash__packager_1_1media_1_1mp4_1_1ProtectionSystemSpecificHeader.html @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/da/d2a/text__stream__info_8h_source.html b/docs/da/d2a/text__stream__info_8h_source.html index 244795bf11..d72ff0b715 100644 --- a/docs/da/d2a/text__stream__info_8h_source.html +++ b/docs/da/d2a/text__stream__info_8h_source.html @@ -140,7 +140,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d2c/decoder__configuration_8cc_source.html b/docs/da/d2c/decoder__configuration_8cc_source.html index 2df1b79010..bc28cb7c23 100644 --- a/docs/da/d2c/decoder__configuration_8cc_source.html +++ b/docs/da/d2c/decoder__configuration_8cc_source.html @@ -119,7 +119,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d2e/classedash__packager_1_1media_1_1mp4_1_1H264VideoSliceHeaderParser-members.html b/docs/da/d2e/classedash__packager_1_1media_1_1mp4_1_1H264VideoSliceHeaderParser-members.html index 137dbe4051..c61ab8f1b6 100644 --- a/docs/da/d2e/classedash__packager_1_1media_1_1mp4_1_1H264VideoSliceHeaderParser-members.html +++ b/docs/da/d2e/classedash__packager_1_1media_1_1mp4_1_1H264VideoSliceHeaderParser-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); 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 0fde7fad97..ed073fb32d 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 dc4b989900..a92c5e27d0 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 3b7e50961c..ed60e416d5 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 09eec6a970..7a59fb65d6 100644 --- a/docs/da/d41/mp4_2multi__segment__segmenter_8h_source.html +++ b/docs/da/d41/mp4_2multi__segment__segmenter_8h_source.html @@ -136,14 +136,14 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
63 #endif // MEDIA_FORMATS_MP4_MULTI_SEGMENT_SEGMENTER_H_
bool GetIndexRange(size_t *offset, size_t *size) override
- +
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
bool GetInitRange(size_t *offset, size_t *size) override
diff --git a/docs/da/d49/classedash__packager_1_1DashIopMpdNotifier.html b/docs/da/d49/classedash__packager_1_1DashIopMpdNotifier.html index e1083b67ac..e00ac87f82 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 a54d2429bb..ac7d99b97b 100644 --- a/docs/da/d4b/structedash__packager_1_1media_1_1mp4_1_1OriginalFormat.html +++ b/docs/da/d4b/structedash__packager_1_1media_1_1mp4_1_1OriginalFormat.html @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/da/d54/structedash__packager_1_1media_1_1mp4_1_1CompositionTimeToSample.html b/docs/da/d54/structedash__packager_1_1media_1_1mp4_1_1CompositionTimeToSample.html index d7b5c7a853..f7be74f389 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 @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/da/d5c/widevine__key__source_8h_source.html b/docs/da/d5c/widevine__key__source_8h_source.html index 06ea3cc442..f81d55722b 100644 --- a/docs/da/d5c/widevine__key__source_8h_source.html +++ b/docs/da/d5c/widevine__key__source_8h_source.html @@ -216,7 +216,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 17128ee683..66f3ee7a3f 100644 --- a/docs/da/d5f/classedash__packager_1_1media_1_1VP9Parser.html +++ b/docs/da/d5f/classedash__packager_1_1media_1_1VP9Parser.html @@ -238,7 +238,7 @@ Additional Inherited Members diff --git a/docs/da/d60/structedash__packager_1_1media_1_1EncryptionKey-members.html b/docs/da/d60/structedash__packager_1_1media_1_1EncryptionKey-members.html index ca9f668418..dc7f7f1d1c 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 19cb2a7283..5cb7293e48 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 0f2dff1c3b..37f8191a65 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 @@ -119,8 +119,8 @@ Public Member Functions  Segmenter (const MuxerOptions &options, scoped_ptr< FileType > ftyp, scoped_ptr< Movie > moov)   -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) -  +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, EncryptionMode encryption_mode) +  Status Finalize ()   Status AddSample (const MediaStream *stream, scoped_refptr< MediaSample > sample) @@ -259,7 +259,7 @@ void set_progress_target diff --git a/docs/da/d78/structedash__packager_1_1media_1_1mp4_1_1Metadata-members.html b/docs/da/d78/structedash__packager_1_1media_1_1mp4_1_1Metadata-members.html index 9f245f0273..d5a1d3a91b 100644 --- a/docs/da/d78/structedash__packager_1_1media_1_1mp4_1_1Metadata-members.html +++ b/docs/da/d78/structedash__packager_1_1media_1_1mp4_1_1Metadata-members.html @@ -114,7 +114,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d7a/classedash__packager_1_1media_1_1AVCDecoderConfiguration-members.html b/docs/da/d7a/classedash__packager_1_1media_1_1AVCDecoderConfiguration-members.html index 9f6b7f5c83..454ecadfd5 100644 --- a/docs/da/d7a/classedash__packager_1_1media_1_1AVCDecoderConfiguration-members.html +++ b/docs/da/d7a/classedash__packager_1_1media_1_1AVCDecoderConfiguration-members.html @@ -119,7 +119,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d7a/fixed__key__encryption__flags_8h_source.html b/docs/da/d7a/fixed__key__encryption__flags_8h_source.html index 67edfe102a..4c1b5964f2 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 5c17045626..09ec7b024f 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 fca361db1d..965407c786 100644 --- a/docs/da/d7f/hevc__decoder__configuration_8h_source.html +++ b/docs/da/d7f/hevc__decoder__configuration_8h_source.html @@ -138,7 +138,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d81/structedash__packager_1_1media_1_1mp4_1_1ChunkLargeOffset.html b/docs/da/d81/structedash__packager_1_1media_1_1mp4_1_1ChunkLargeOffset.html index 79e0365f83..f7b5cdfe7c 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 @@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/da/d88/mp4__muxer_8cc_source.html b/docs/da/d88/mp4__muxer_8cc_source.html index ce1d53cd19..0d29b057a8 100644 --- a/docs/da/d88/mp4__muxer_8cc_source.html +++ b/docs/da/d88/mp4__muxer_8cc_source.html @@ -243,240 +243,241 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
154  encryption_key_source(),
155  max_sd_pixels(),
156  clear_lead_in_seconds(),
-
157  crypto_period_duration_in_seconds());
-
158 
-
159  if (!segmenter_initialized.ok())
-
160  return segmenter_initialized;
-
161 
-
162  FireOnMediaStartEvent();
-
163  return Status::OK;
-
164 }
-
165 
-
166 Status MP4Muxer::Finalize() {
-
167  DCHECK(segmenter_);
-
168  Status segmenter_finalized = segmenter_->Finalize();
-
169 
-
170  if (!segmenter_finalized.ok())
-
171  return segmenter_finalized;
-
172 
-
173  FireOnMediaEndEvent();
-
174  LOG(INFO) << "MP4 file '" << options().output_file_name << "' finalized.";
-
175  return Status::OK;
-
176 }
-
177 
-
178 Status MP4Muxer::DoAddSample(const MediaStream* stream,
-
179  scoped_refptr<MediaSample> sample) {
-
180  DCHECK(segmenter_);
-
181  return segmenter_->AddSample(stream, sample);
-
182 }
-
183 
-
184 void MP4Muxer::InitializeTrak(const StreamInfo* info, Track* trak) {
-
185  int64_t now = IsoTimeNow();
-
186  trak->header.creation_time = now;
-
187  trak->header.modification_time = now;
-
188  trak->header.duration = 0;
-
189  trak->media.header.creation_time = now;
-
190  trak->media.header.modification_time = now;
-
191  trak->media.header.timescale = info->time_scale();
-
192  trak->media.header.duration = 0;
-
193  if (!info->language().empty()) {
-
194  // Strip off the subtag, if any.
-
195  std::string main_language = info->language();
-
196  size_t dash = main_language.find('-');
-
197  if (dash != std::string::npos) {
-
198  main_language.erase(dash);
-
199  }
-
200 
-
201  // ISO-639-2/T main language code should be 3 characters.
-
202  if (main_language.size() != 3) {
-
203  LOG(WARNING) << "'" << main_language << "' is not a valid ISO-639-2 "
-
204  << "language code, ignoring.";
-
205  } else {
-
206  trak->media.header.language.code = main_language;
-
207  }
-
208  }
-
209 }
-
210 
-
211 void MP4Muxer::GenerateVideoTrak(const VideoStreamInfo* video_info,
-
212  Track* trak,
-
213  uint32_t track_id) {
-
214  InitializeTrak(video_info, trak);
-
215 
-
216  // width and height specify the track's visual presentation size as
-
217  // fixed-point 16.16 values.
-
218  uint32_t pixel_width = video_info->pixel_width();
-
219  uint32_t pixel_height = video_info->pixel_height();
-
220  if (pixel_width == 0 || pixel_height == 0) {
-
221  LOG(WARNING) << "pixel width/height are not set. Assuming 1:1.";
-
222  pixel_width = 1;
-
223  pixel_height = 1;
-
224  }
-
225  const double sample_aspect_ratio =
-
226  static_cast<double>(pixel_width) / pixel_height;
-
227  trak->header.width = video_info->width() * sample_aspect_ratio * 0x10000;
-
228  trak->header.height = video_info->height() * 0x10000;
-
229 
-
230  VideoSampleEntry video;
-
231  video.format = VideoCodecToFourCC(video_info->codec());
-
232  video.width = video_info->width();
-
233  video.height = video_info->height();
-
234  video.codec_config_record.data = video_info->extra_data();
-
235  if (pixel_width != 1 || pixel_height != 1) {
-
236  video.pixel_aspect.h_spacing = pixel_width;
-
237  video.pixel_aspect.v_spacing = pixel_height;
-
238  }
-
239 
-
240  SampleDescription& sample_description =
-
241  trak->media.information.sample_table.description;
-
242  sample_description.type = kVideo;
-
243  sample_description.video_entries.push_back(video);
-
244 }
-
245 
-
246 void MP4Muxer::GenerateAudioTrak(const AudioStreamInfo* audio_info,
-
247  Track* trak,
-
248  uint32_t track_id) {
-
249  InitializeTrak(audio_info, trak);
-
250 
-
251  trak->header.volume = 0x100;
-
252 
-
253  AudioSampleEntry audio;
-
254  audio.format = AudioCodecToFourCC(audio_info->codec());
-
255  switch(audio_info->codec()){
-
256  case kCodecAAC:
-
257  audio.esds.es_descriptor.set_object_type(kISO_14496_3); // MPEG4 AAC.
-
258  audio.esds.es_descriptor.set_esid(track_id);
-
259  audio.esds.es_descriptor.set_decoder_specific_info(
-
260  audio_info->extra_data());
-
261  audio.esds.es_descriptor.set_max_bitrate(audio_info->max_bitrate());
-
262  audio.esds.es_descriptor.set_avg_bitrate(audio_info->avg_bitrate());
-
263  break;
-
264  case kCodecDTSC:
-
265  case kCodecDTSH:
-
266  case kCodecDTSL:
-
267  case kCodecDTSE:
-
268  case kCodecDTSM:
-
269  audio.ddts.extra_data = audio_info->extra_data();
-
270  audio.ddts.max_bitrate = audio_info->max_bitrate();
-
271  audio.ddts.avg_bitrate = audio_info->avg_bitrate();
-
272  audio.ddts.sampling_frequency = audio_info->sampling_frequency();
-
273  audio.ddts.pcm_sample_depth = audio_info->sample_bits();
-
274  break;
-
275  case kCodecAC3:
-
276  audio.dac3.data = audio_info->extra_data();
-
277  break;
-
278  case kCodecEAC3:
-
279  audio.dec3.data = audio_info->extra_data();
-
280  break;
-
281  default:
-
282  NOTIMPLEMENTED();
-
283  break;
-
284  }
-
285 
-
286  audio.channelcount = audio_info->num_channels();
-
287  audio.samplesize = audio_info->sample_bits();
-
288  audio.samplerate = audio_info->sampling_frequency();
-
289  SampleDescription& sample_description =
-
290  trak->media.information.sample_table.description;
-
291  sample_description.type = kAudio;
-
292  sample_description.audio_entries.push_back(audio);
-
293 }
-
294 
-
295 bool MP4Muxer::GetInitRangeStartAndEnd(uint32_t* start, uint32_t* end) {
-
296  DCHECK(start && end);
-
297  size_t range_offset = 0;
-
298  size_t range_size = 0;
-
299  const bool has_range = segmenter_->GetInitRange(&range_offset, &range_size);
-
300 
-
301  if (!has_range)
-
302  return false;
-
303 
-
304  SetStartAndEndFromOffsetAndSize(range_offset, range_size, start, end);
-
305  return true;
-
306 }
-
307 
-
308 bool MP4Muxer::GetIndexRangeStartAndEnd(uint32_t* start, uint32_t* end) {
-
309  DCHECK(start && end);
-
310  size_t range_offset = 0;
-
311  size_t range_size = 0;
-
312  const bool has_range = segmenter_->GetIndexRange(&range_offset, &range_size);
-
313 
-
314  if (!has_range)
-
315  return false;
-
316 
-
317  SetStartAndEndFromOffsetAndSize(range_offset, range_size, start, end);
-
318  return true;
-
319 }
-
320 
-
321 void MP4Muxer::FireOnMediaStartEvent() {
-
322  if (!muxer_listener())
-
323  return;
-
324 
-
325  if (streams().size() > 1) {
-
326  LOG(ERROR) << "MuxerListener cannot take more than 1 stream.";
-
327  return;
-
328  }
-
329  DCHECK(!streams().empty()) << "Media started without a stream.";
-
330 
-
331  const uint32_t timescale = segmenter_->GetReferenceTimeScale();
-
332  muxer_listener()->OnMediaStart(options(),
-
333  *streams().front()->info(),
-
334  timescale,
-
335  MuxerListener::kContainerMp4);
-
336 }
-
337 
-
338 void MP4Muxer::FireOnMediaEndEvent() {
-
339  if (!muxer_listener())
-
340  return;
-
341 
-
342  uint32_t init_range_start = 0;
-
343  uint32_t init_range_end = 0;
-
344  const bool has_init_range =
-
345  GetInitRangeStartAndEnd(&init_range_start, &init_range_end);
-
346 
-
347  uint32_t index_range_start = 0;
-
348  uint32_t index_range_end = 0;
-
349  const bool has_index_range =
-
350  GetIndexRangeStartAndEnd(&index_range_start, &index_range_end);
-
351 
-
352  const float duration_seconds = static_cast<float>(segmenter_->GetDuration());
-
353 
-
354  const int64_t file_size =
-
355  File::GetFileSize(options().output_file_name.c_str());
-
356  if (file_size <= 0) {
-
357  LOG(ERROR) << "Invalid file size: " << file_size;
-
358  return;
-
359  }
-
360 
-
361  muxer_listener()->OnMediaEnd(has_init_range,
-
362  init_range_start,
-
363  init_range_end,
-
364  has_index_range,
-
365  index_range_start,
-
366  index_range_end,
-
367  duration_seconds,
-
368  file_size);
-
369 }
-
370 
-
371 uint64_t MP4Muxer::IsoTimeNow() {
-
372  // Time in seconds from Jan. 1, 1904 to epoch time, i.e. Jan. 1, 1970.
-
373  const uint64_t kIsomTimeOffset = 2082844800l;
-
374  return kIsomTimeOffset +
-
375  (clock() ? clock()->Now() : base::Time::Now()).ToDoubleT();
-
376 }
-
377 
-
378 } // namespace mp4
-
379 } // namespace media
-
380 } // namespace edash_packager
+
157  crypto_period_duration_in_seconds(),
+
158  encryption_mode());
+
159 
+
160  if (!segmenter_initialized.ok())
+
161  return segmenter_initialized;
+
162 
+
163  FireOnMediaStartEvent();
+
164  return Status::OK;
+
165 }
+
166 
+
167 Status MP4Muxer::Finalize() {
+
168  DCHECK(segmenter_);
+
169  Status segmenter_finalized = segmenter_->Finalize();
+
170 
+
171  if (!segmenter_finalized.ok())
+
172  return segmenter_finalized;
+
173 
+
174  FireOnMediaEndEvent();
+
175  LOG(INFO) << "MP4 file '" << options().output_file_name << "' finalized.";
+
176  return Status::OK;
+
177 }
+
178 
+
179 Status MP4Muxer::DoAddSample(const MediaStream* stream,
+
180  scoped_refptr<MediaSample> sample) {
+
181  DCHECK(segmenter_);
+
182  return segmenter_->AddSample(stream, sample);
+
183 }
+
184 
+
185 void MP4Muxer::InitializeTrak(const StreamInfo* info, Track* trak) {
+
186  int64_t now = IsoTimeNow();
+
187  trak->header.creation_time = now;
+
188  trak->header.modification_time = now;
+
189  trak->header.duration = 0;
+
190  trak->media.header.creation_time = now;
+
191  trak->media.header.modification_time = now;
+
192  trak->media.header.timescale = info->time_scale();
+
193  trak->media.header.duration = 0;
+
194  if (!info->language().empty()) {
+
195  // Strip off the subtag, if any.
+
196  std::string main_language = info->language();
+
197  size_t dash = main_language.find('-');
+
198  if (dash != std::string::npos) {
+
199  main_language.erase(dash);
+
200  }
+
201 
+
202  // ISO-639-2/T main language code should be 3 characters.
+
203  if (main_language.size() != 3) {
+
204  LOG(WARNING) << "'" << main_language << "' is not a valid ISO-639-2 "
+
205  << "language code, ignoring.";
+
206  } else {
+
207  trak->media.header.language.code = main_language;
+
208  }
+
209  }
+
210 }
+
211 
+
212 void MP4Muxer::GenerateVideoTrak(const VideoStreamInfo* video_info,
+
213  Track* trak,
+
214  uint32_t track_id) {
+
215  InitializeTrak(video_info, trak);
+
216 
+
217  // width and height specify the track's visual presentation size as
+
218  // fixed-point 16.16 values.
+
219  uint32_t pixel_width = video_info->pixel_width();
+
220  uint32_t pixel_height = video_info->pixel_height();
+
221  if (pixel_width == 0 || pixel_height == 0) {
+
222  LOG(WARNING) << "pixel width/height are not set. Assuming 1:1.";
+
223  pixel_width = 1;
+
224  pixel_height = 1;
+
225  }
+
226  const double sample_aspect_ratio =
+
227  static_cast<double>(pixel_width) / pixel_height;
+
228  trak->header.width = video_info->width() * sample_aspect_ratio * 0x10000;
+
229  trak->header.height = video_info->height() * 0x10000;
+
230 
+
231  VideoSampleEntry video;
+
232  video.format = VideoCodecToFourCC(video_info->codec());
+
233  video.width = video_info->width();
+
234  video.height = video_info->height();
+
235  video.codec_config_record.data = video_info->extra_data();
+
236  if (pixel_width != 1 || pixel_height != 1) {
+
237  video.pixel_aspect.h_spacing = pixel_width;
+
238  video.pixel_aspect.v_spacing = pixel_height;
+
239  }
+
240 
+
241  SampleDescription& sample_description =
+
242  trak->media.information.sample_table.description;
+
243  sample_description.type = kVideo;
+
244  sample_description.video_entries.push_back(video);
+
245 }
+
246 
+
247 void MP4Muxer::GenerateAudioTrak(const AudioStreamInfo* audio_info,
+
248  Track* trak,
+
249  uint32_t track_id) {
+
250  InitializeTrak(audio_info, trak);
+
251 
+
252  trak->header.volume = 0x100;
+
253 
+
254  AudioSampleEntry audio;
+
255  audio.format = AudioCodecToFourCC(audio_info->codec());
+
256  switch(audio_info->codec()){
+
257  case kCodecAAC:
+
258  audio.esds.es_descriptor.set_object_type(kISO_14496_3); // MPEG4 AAC.
+
259  audio.esds.es_descriptor.set_esid(track_id);
+
260  audio.esds.es_descriptor.set_decoder_specific_info(
+
261  audio_info->extra_data());
+
262  audio.esds.es_descriptor.set_max_bitrate(audio_info->max_bitrate());
+
263  audio.esds.es_descriptor.set_avg_bitrate(audio_info->avg_bitrate());
+
264  break;
+
265  case kCodecDTSC:
+
266  case kCodecDTSH:
+
267  case kCodecDTSL:
+
268  case kCodecDTSE:
+
269  case kCodecDTSM:
+
270  audio.ddts.extra_data = audio_info->extra_data();
+
271  audio.ddts.max_bitrate = audio_info->max_bitrate();
+
272  audio.ddts.avg_bitrate = audio_info->avg_bitrate();
+
273  audio.ddts.sampling_frequency = audio_info->sampling_frequency();
+
274  audio.ddts.pcm_sample_depth = audio_info->sample_bits();
+
275  break;
+
276  case kCodecAC3:
+
277  audio.dac3.data = audio_info->extra_data();
+
278  break;
+
279  case kCodecEAC3:
+
280  audio.dec3.data = audio_info->extra_data();
+
281  break;
+
282  default:
+
283  NOTIMPLEMENTED();
+
284  break;
+
285  }
+
286 
+
287  audio.channelcount = audio_info->num_channels();
+
288  audio.samplesize = audio_info->sample_bits();
+
289  audio.samplerate = audio_info->sampling_frequency();
+
290  SampleDescription& sample_description =
+
291  trak->media.information.sample_table.description;
+
292  sample_description.type = kAudio;
+
293  sample_description.audio_entries.push_back(audio);
+
294 }
+
295 
+
296 bool MP4Muxer::GetInitRangeStartAndEnd(uint32_t* start, uint32_t* end) {
+
297  DCHECK(start && end);
+
298  size_t range_offset = 0;
+
299  size_t range_size = 0;
+
300  const bool has_range = segmenter_->GetInitRange(&range_offset, &range_size);
+
301 
+
302  if (!has_range)
+
303  return false;
+
304 
+
305  SetStartAndEndFromOffsetAndSize(range_offset, range_size, start, end);
+
306  return true;
+
307 }
+
308 
+
309 bool MP4Muxer::GetIndexRangeStartAndEnd(uint32_t* start, uint32_t* end) {
+
310  DCHECK(start && end);
+
311  size_t range_offset = 0;
+
312  size_t range_size = 0;
+
313  const bool has_range = segmenter_->GetIndexRange(&range_offset, &range_size);
+
314 
+
315  if (!has_range)
+
316  return false;
+
317 
+
318  SetStartAndEndFromOffsetAndSize(range_offset, range_size, start, end);
+
319  return true;
+
320 }
+
321 
+
322 void MP4Muxer::FireOnMediaStartEvent() {
+
323  if (!muxer_listener())
+
324  return;
+
325 
+
326  if (streams().size() > 1) {
+
327  LOG(ERROR) << "MuxerListener cannot take more than 1 stream.";
+
328  return;
+
329  }
+
330  DCHECK(!streams().empty()) << "Media started without a stream.";
+
331 
+
332  const uint32_t timescale = segmenter_->GetReferenceTimeScale();
+
333  muxer_listener()->OnMediaStart(options(),
+
334  *streams().front()->info(),
+
335  timescale,
+
336  MuxerListener::kContainerMp4);
+
337 }
+
338 
+
339 void MP4Muxer::FireOnMediaEndEvent() {
+
340  if (!muxer_listener())
+
341  return;
+
342 
+
343  uint32_t init_range_start = 0;
+
344  uint32_t init_range_end = 0;
+
345  const bool has_init_range =
+
346  GetInitRangeStartAndEnd(&init_range_start, &init_range_end);
+
347 
+
348  uint32_t index_range_start = 0;
+
349  uint32_t index_range_end = 0;
+
350  const bool has_index_range =
+
351  GetIndexRangeStartAndEnd(&index_range_start, &index_range_end);
+
352 
+
353  const float duration_seconds = static_cast<float>(segmenter_->GetDuration());
+
354 
+
355  const int64_t file_size =
+
356  File::GetFileSize(options().output_file_name.c_str());
+
357  if (file_size <= 0) {
+
358  LOG(ERROR) << "Invalid file size: " << file_size;
+
359  return;
+
360  }
+
361 
+
362  muxer_listener()->OnMediaEnd(has_init_range,
+
363  init_range_start,
+
364  init_range_end,
+
365  has_index_range,
+
366  index_range_start,
+
367  index_range_end,
+
368  duration_seconds,
+
369  file_size);
+
370 }
+
371 
+
372 uint64_t MP4Muxer::IsoTimeNow() {
+
373  // Time in seconds from Jan. 1, 1904 to epoch time, i.e. Jan. 1, 1970.
+
374  const uint64_t kIsomTimeOffset = 2082844800l;
+
375  return kIsomTimeOffset +
+
376  (clock() ? clock()->Now() : base::Time::Now()).ToDoubleT();
+
377 }
+
378 
+
379 } // namespace mp4
+
380 } // namespace media
+
381 } // namespace edash_packager
MP4Muxer(const MuxerOptions &options)
Create a MP4Muxer object from MuxerOptions.
Definition: mp4_muxer.cc:87
- +
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
static int64_t GetFileSize(const char *file_name)
Definition: file.cc:175
diff --git a/docs/da/d8e/container__names_8cc_source.html b/docs/da/d8e/container__names_8cc_source.html index ca857ef042..60ba2a5eb7 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 9d52fbbb58..30123b582c 100644 --- a/docs/da/d95/classedash__packager_1_1media_1_1MkvWriter-members.html +++ b/docs/da/d95/classedash__packager_1_1media_1_1MkvWriter-members.html @@ -107,7 +107,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d99/classedash__packager_1_1media_1_1webm_1_1Encryptor-members.html b/docs/da/d99/classedash__packager_1_1media_1_1webm_1_1Encryptor-members.html index 8e805b265c..34b10354dd 100644 --- a/docs/da/d99/classedash__packager_1_1media_1_1webm_1_1Encryptor-members.html +++ b/docs/da/d99/classedash__packager_1_1media_1_1webm_1_1Encryptor-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/db0/structedash__packager_1_1media_1_1mp4_1_1SoundMediaHeader.html b/docs/da/db0/structedash__packager_1_1media_1_1mp4_1_1SoundMediaHeader.html index 8d48fced15..3d461a38e0 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 @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/da/dc3/status_8cc_source.html b/docs/da/dc3/status_8cc_source.html index 01c83fa111..9d600f7ebf 100644 --- a/docs/da/dc3/status_8cc_source.html +++ b/docs/da/dc3/status_8cc_source.html @@ -168,7 +168,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/dcb/es__descriptor_8h_source.html b/docs/da/dcb/es__descriptor_8h_source.html index 80c6dae4fa..5d0213daf7 100644 --- a/docs/da/dcb/es__descriptor_8h_source.html +++ b/docs/da/dcb/es__descriptor_8h_source.html @@ -187,7 +187,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/dd0/webm__info__parser_8h_source.html b/docs/da/dd0/webm__info__parser_8h_source.html index 80218a10fb..50da80d640 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 70cb85fd6b..703996fe45 100644 --- a/docs/da/dd1/fragmenter_8h_source.html +++ b/docs/da/dd1/fragmenter_8h_source.html @@ -197,7 +197,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 dead437f5f..a70f917185 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 313e8538d0..d9dae79832 100644 --- a/docs/da/de4/classedash__packager_1_1media_1_1AudioTimestampHelper.html +++ b/docs/da/de4/classedash__packager_1_1media_1_1AudioTimestampHelper.html @@ -131,7 +131,7 @@ int64_t GetFramesToTarget< diff --git a/docs/da/df0/classedash__packager_1_1media_1_1NalUnitToByteStreamConverter-members.html b/docs/da/df0/classedash__packager_1_1media_1_1NalUnitToByteStreamConverter-members.html index 8b0f4fb174..919b013042 100644 --- a/docs/da/df0/classedash__packager_1_1media_1_1NalUnitToByteStreamConverter-members.html +++ b/docs/da/df0/classedash__packager_1_1media_1_1NalUnitToByteStreamConverter-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/df4/aes__decryptor_8cc_source.html b/docs/da/df4/aes__decryptor_8cc_source.html new file mode 100644 index 0000000000..67d0cf9031 --- /dev/null +++ b/docs/da/df4/aes__decryptor_8cc_source.html @@ -0,0 +1,369 @@ + + + + + + +DASH Media Packaging SDK: media/base/aes_decryptor.cc Source File + + + + + + + + + +
+
+ + + + + + +
+
DASH Media Packaging SDK +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
aes_decryptor.cc
+
+
+
1 // Copyright 2016 Google Inc. All rights reserved.
+
2 //
+
3 // Use of this source code is governed by a BSD-style
+
4 // license that can be found in the LICENSE file or at
+
5 // https://developers.google.com/open-source/licenses/bsd
+
6 
+
7 #include "packager/media/base/aes_decryptor.h"
+
8 
+
9 #include <openssl/aes.h>
+
10 #include <openssl/err.h>
+
11 #include <openssl/rand.h>
+
12 
+
13 #include "packager/base/logging.h"
+
14 
+
15 namespace {
+
16 
+
17 // AES defines three key sizes: 128, 192 and 256 bits.
+
18 bool IsKeySizeValidForAes(size_t key_size) {
+
19  return key_size == 16 || key_size == 24 || key_size == 32;
+
20 }
+
21 
+
22 } // namespace
+
23 
+
24 namespace edash_packager {
+
25 namespace media {
+
26 
+
27 AesDecryptor::AesDecryptor() {}
+
28 AesDecryptor::~AesDecryptor() {}
+
29 
+
30 AesCtrDecryptor::AesCtrDecryptor() {}
+
31 
+
32 AesCtrDecryptor::~AesCtrDecryptor() {}
+
33 
+
34 bool AesCtrDecryptor::InitializeWithIv(const std::vector<uint8_t>& key,
+
35  const std::vector<uint8_t>& iv) {
+
36  encryptor_.reset(new AesCtrEncryptor);
+
37  return encryptor_->InitializeWithIv(key, iv);
+
38 }
+
39 
+
40 // For AES CTR, encryption and decryption are identical.
+
41 bool AesCtrDecryptor::Decrypt(const uint8_t* ciphertext,
+
42  size_t ciphertext_size,
+
43  uint8_t* plaintext) {
+
44  DCHECK(encryptor_);
+
45  return encryptor_->EncryptData(ciphertext, ciphertext_size, plaintext);
+
46 }
+
47 
+
48 bool AesCtrDecryptor::Decrypt(const std::vector<uint8_t>& ciphertext,
+
49  std::vector<uint8_t>* plaintext) {
+
50  DCHECK(encryptor_);
+
51  return encryptor_->Encrypt(ciphertext, plaintext);
+
52 }
+
53 
+
54 bool AesCtrDecryptor::Decrypt(const std::string& ciphertext,
+
55  std::string* plaintext) {
+
56  DCHECK(encryptor_);
+
57  return encryptor_->Encrypt(ciphertext, plaintext);
+
58 }
+
59 
+
60 bool AesCtrDecryptor::SetIv(const std::vector<uint8_t>& iv) {
+
61  DCHECK(encryptor_);
+
62  return encryptor_->SetIv(iv);
+
63 }
+
64 
+
65 AesCbcPkcs5Decryptor::AesCbcPkcs5Decryptor() {}
+
66 AesCbcPkcs5Decryptor::~AesCbcPkcs5Decryptor() {}
+
67 
+
68 bool AesCbcPkcs5Decryptor::InitializeWithIv(const std::vector<uint8_t>& key,
+
69  const std::vector<uint8_t>& iv) {
+
70  if (!IsKeySizeValidForAes(key.size())) {
+
71  LOG(ERROR) << "Invalid AES key size: " << key.size();
+
72  return false;
+
73  }
+
74  if (iv.size() != AES_BLOCK_SIZE) {
+
75  LOG(ERROR) << "Invalid IV size: " << iv.size();
+
76  return false;
+
77  }
+
78 
+
79  aes_key_.reset(new AES_KEY());
+
80  CHECK_EQ(AES_set_decrypt_key(&key[0], key.size() * 8, aes_key_.get()), 0);
+
81 
+
82  iv_ = iv;
+
83  return true;
+
84 }
+
85 
+
86 bool AesCbcPkcs5Decryptor::Decrypt(const uint8_t* ciphertext,
+
87  size_t ciphertext_size,
+
88  uint8_t* plaintext) {
+
89  NOTIMPLEMENTED();
+
90  return false;
+
91 }
+
92 
+
93 bool AesCbcPkcs5Decryptor::Decrypt(const std::vector<uint8_t>& ciphertext,
+
94  std::vector<uint8_t>* plaintext) {
+
95  NOTIMPLEMENTED();
+
96  return false;
+
97 }
+
98 
+
99 bool AesCbcPkcs5Decryptor::Decrypt(const std::string& ciphertext,
+
100  std::string* plaintext) {
+
101  if ((ciphertext.size() % AES_BLOCK_SIZE) != 0) {
+
102  LOG(ERROR) << "Expecting cipher text size to be multiple of "
+
103  << AES_BLOCK_SIZE << ", got " << ciphertext.size();
+
104  return false;
+
105  }
+
106 
+
107  DCHECK(plaintext);
+
108  DCHECK(aes_key_);
+
109 
+
110  plaintext->resize(ciphertext.size());
+
111  AES_cbc_encrypt(reinterpret_cast<const uint8_t*>(ciphertext.data()),
+
112  reinterpret_cast<uint8_t*>(string_as_array(plaintext)),
+
113  ciphertext.size(),
+
114  aes_key_.get(),
+
115  &iv_[0],
+
116  AES_DECRYPT);
+
117 
+
118  // Strip off PKCS5 padding bytes.
+
119  const uint8_t num_padding_bytes = (*plaintext)[plaintext->size() - 1];
+
120  if (num_padding_bytes > AES_BLOCK_SIZE) {
+
121  LOG(ERROR) << "Padding length is too large : "
+
122  << static_cast<int>(num_padding_bytes);
+
123  return false;
+
124  }
+
125  plaintext->resize(plaintext->size() - num_padding_bytes);
+
126  return true;
+
127 }
+
128 
+
129 bool AesCbcPkcs5Decryptor::SetIv(const std::vector<uint8_t>& iv) {
+
130  if (iv.size() != AES_BLOCK_SIZE) {
+
131  LOG(ERROR) << "Invalid IV size: " << iv.size();
+
132  return false;
+
133  }
+
134 
+
135  iv_ = iv;
+
136  return true;
+
137 }
+
138 
+
139 AesCbcCtsDecryptor::AesCbcCtsDecryptor() {}
+
140 AesCbcCtsDecryptor::~AesCbcCtsDecryptor() {}
+
141 
+
142 bool AesCbcCtsDecryptor::InitializeWithIv(const std::vector<uint8_t>& key,
+
143  const std::vector<uint8_t>& iv) {
+
144  if (!IsKeySizeValidForAes(key.size())) {
+
145  LOG(ERROR) << "Invalid AES key size: " << key.size();
+
146  return false;
+
147  }
+
148  if (iv.size() != AES_BLOCK_SIZE) {
+
149  LOG(ERROR) << "Invalid IV size: " << iv.size();
+
150  return false;
+
151  }
+
152 
+
153  aes_key_.reset(new AES_KEY());
+
154  CHECK_EQ(AES_set_decrypt_key(&key[0], key.size() * 8, aes_key_.get()), 0);
+
155 
+
156  iv_ = iv;
+
157  return true;
+
158 }
+
159 
+
160 bool AesCbcCtsDecryptor::Decrypt(const uint8_t* ciphertext,
+
161  size_t ciphertext_size,
+
162  uint8_t* plaintext) {
+
163  DCHECK(ciphertext);
+
164  DCHECK(plaintext);
+
165 
+
166  if (ciphertext_size < AES_BLOCK_SIZE) {
+
167  // Don't have a full block, leave unencrypted.
+
168  memcpy(plaintext, ciphertext, ciphertext_size);
+
169  return true;
+
170  }
+
171 
+
172  std::vector<uint8_t> iv(iv_);
+
173  size_t residual_block_size = ciphertext_size % AES_BLOCK_SIZE;
+
174 
+
175  if (residual_block_size == 0) {
+
176  // No residual block. No need to do ciphertext stealing.
+
177  AES_cbc_encrypt(ciphertext,
+
178  plaintext,
+
179  ciphertext_size,
+
180  aes_key_.get(),
+
181  &iv[0],
+
182  AES_DECRYPT);
+
183  return true;
+
184  }
+
185 
+
186  // AES-CBC decrypt everything up to the next-to-last full block.
+
187  size_t cbc_size = ciphertext_size - residual_block_size;
+
188  if (cbc_size > AES_BLOCK_SIZE) {
+
189  AES_cbc_encrypt(ciphertext,
+
190  plaintext,
+
191  cbc_size - AES_BLOCK_SIZE,
+
192  aes_key_.get(),
+
193  &iv[0],
+
194  AES_DECRYPT);
+
195  }
+
196 
+
197  // Determine what the last IV should be so that we can "skip ahead" in the
+
198  // CBC decryption.
+
199  std::vector<uint8_t> last_iv(
+
200  ciphertext + ciphertext_size - residual_block_size,
+
201  ciphertext + ciphertext_size);
+
202  last_iv.resize(AES_BLOCK_SIZE, 0);
+
203 
+
204  // Decrypt the next-to-last block using the IV determined above. This decrypts
+
205  // the residual block bits.
+
206  AES_cbc_encrypt(
+
207  ciphertext + ciphertext_size - residual_block_size - AES_BLOCK_SIZE,
+
208  plaintext + ciphertext_size - residual_block_size - AES_BLOCK_SIZE,
+
209  AES_BLOCK_SIZE, aes_key_.get(), &last_iv[0], AES_DECRYPT);
+
210 
+
211  // Swap back the residual block bits and the next-to-last full block.
+
212  if (plaintext == ciphertext) {
+
213  uint8_t* ptr1 = plaintext + ciphertext_size - residual_block_size;
+
214  uint8_t* ptr2 = plaintext + ciphertext_size - residual_block_size - AES_BLOCK_SIZE;
+
215  for (size_t i = 0; i < residual_block_size; ++i) {
+
216  uint8_t temp = *ptr1;
+
217  *ptr1 = *ptr2;
+
218  *ptr2 = temp;
+
219  ++ptr1;
+
220  ++ptr2;
+
221  }
+
222  } else {
+
223  uint8_t* residual_plaintext_block =
+
224  plaintext + ciphertext_size - residual_block_size;
+
225  memcpy(residual_plaintext_block, residual_plaintext_block - AES_BLOCK_SIZE,
+
226  residual_block_size);
+
227  memcpy(residual_plaintext_block - AES_BLOCK_SIZE,
+
228  ciphertext + ciphertext_size - residual_block_size,
+
229  residual_block_size);
+
230  }
+
231 
+
232  // Decrypt the last full block.
+
233  AES_cbc_encrypt(
+
234  plaintext + ciphertext_size - residual_block_size - AES_BLOCK_SIZE,
+
235  plaintext + ciphertext_size - residual_block_size - AES_BLOCK_SIZE,
+
236  AES_BLOCK_SIZE, aes_key_.get(), &iv[0], AES_DECRYPT);
+
237  return true;
+
238 }
+
239 
+
240 bool AesCbcCtsDecryptor::Decrypt(const std::vector<uint8_t>& ciphertext,
+
241  std::vector<uint8_t>* plaintext) {
+
242  DCHECK(plaintext);
+
243 
+
244  plaintext->resize(ciphertext.size(), 0);
+
245  if (ciphertext.empty())
+
246  return true;
+
247 
+
248  return Decrypt(ciphertext.data(), ciphertext.size(), &(*plaintext)[0]);
+
249 }
+
250 
+
251 bool AesCbcCtsDecryptor::Decrypt(const std::string& ciphertext,
+
252  std::string* plaintext) {
+
253  NOTIMPLEMENTED();
+
254  return false;
+
255 }
+
256 
+
257 bool AesCbcCtsDecryptor::SetIv(const std::vector<uint8_t>& iv) {
+
258  if (iv.size() != AES_BLOCK_SIZE) {
+
259  LOG(ERROR) << "Invalid IV size: " << iv.size();
+
260  return false;
+
261  }
+
262 
+
263  iv_ = iv;
+
264  return true;
+
265 }
+
266 
+
267 } // namespace media
+
268 } // namespace edash_packager
+
bool SetIv(const std::vector< uint8_t > &iv) override
+
bool SetIv(const std::vector< uint8_t > &iv) override
+
bool SetIv(const std::vector< uint8_t > &iv) override
+
+ + + + 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 54e9b9dddd..149e7cd204 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 7ef940e5a4..472fc3598b 100644 --- a/docs/db/d01/avc__decoder__configuration_8cc_source.html +++ b/docs/db/d01/avc__decoder__configuration_8cc_source.html @@ -203,7 +203,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d01/classedash__packager_1_1media_1_1mp4_1_1SyncSampleIterator.html b/docs/db/d01/classedash__packager_1_1media_1_1mp4_1_1SyncSampleIterator.html index 123864d58c..42ba2ba960 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 5c07663563..849eedcd30 100644 --- a/docs/db/d09/namespaceedash__packager.html +++ b/docs/db/d09/namespaceedash__packager.html @@ -516,7 +516,7 @@ const char kEncryptedMp4Va

Validate widevine encryption/decryption flags.

Returns
true on success, false otherwise.
-

Definition at line 56 of file widevine_encryption_flags.cc.

+

Definition at line 60 of file widevine_encryption_flags.cc.

@@ -559,7 +559,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 5bf0cee1ba..9009456588 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 15c12dcd51..cec227f2bf 100644 --- a/docs/db/d15/structedash__packager_1_1media_1_1mp4_1_1DecodingTimeToSample-members.html +++ b/docs/db/d15/structedash__packager_1_1media_1_1mp4_1_1DecodingTimeToSample-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d23/classedash__packager_1_1media_1_1WebMTracksParser.html b/docs/db/d23/classedash__packager_1_1media_1_1WebMTracksParser.html index c626cabcbd..2eab40c1d6 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 e86602cc0b..e7f8fe5704 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 @@ -198,7 +198,7 @@ bool is_keyframe () co -

Definition at line 71 of file track_run_iterator.cc.

+

Definition at line 72 of file track_run_iterator.cc.

@@ -217,7 +217,7 @@ bool is_keyframe () co

Advance iterator to the next run. Require that the iterator point to a valid run.

-

Definition at line 423 of file track_run_iterator.cc.

+

Definition at line 424 of file track_run_iterator.cc.

@@ -235,7 +235,7 @@ bool is_keyframe () co

Advance iterator to the next sample. Require that the iterator point to a valid sample.

-

Definition at line 436 of file track_run_iterator.cc.

+

Definition at line 437 of file track_run_iterator.cc.

@@ -253,7 +253,7 @@ bool is_keyframe () co
Returns
true if this track run has auxiliary information and has not yet been cached. Only valid if IsRunValid().
-

Definition at line 445 of file track_run_iterator.cc.

+

Definition at line 446 of file track_run_iterator.cc.

@@ -290,7 +290,7 @@ bool is_keyframe () co
Returns
true on success, false on error.
-

Definition at line 452 of file track_run_iterator.cc.

+

Definition at line 453 of file track_run_iterator.cc.

@@ -308,7 +308,7 @@ bool is_keyframe () co

Only call when is_encrypted() is true and AuxInfoNeedsToBeCached() is false. Result is owned by caller.

-

Definition at line 584 of file track_run_iterator.cc.

+

Definition at line 585 of file track_run_iterator.cc.

@@ -326,7 +326,7 @@ bool is_keyframe () co
Returns
the maximum buffer location at which no data earlier in the stream will be required in order to read the current or any subsequent sample. You may clear all data up to this offset before reading the current sample safely. Result is in the same units as offset() (for Media Source this is in bytes past the head of the MOOF box).
-

Definition at line 486 of file track_run_iterator.cc.

+

Definition at line 487 of file track_run_iterator.cc.

@@ -345,7 +345,7 @@ bool is_keyframe () co

For non-fragmented mp4, moov contains all the chunk information; This function sets up the iterator to access all the chunks. For fragmented mp4, chunk and sample information are generally contained in moof. This function is a no-op in this case. Init(moof) will be called later after parsing moof.

Returns
true on success, false otherwise.
-

Definition at line 144 of file track_run_iterator.cc.

+

Definition at line 145 of file track_run_iterator.cc.

@@ -365,7 +365,7 @@ bool is_keyframe () co

Set up the iterator to handle all the runs from the current fragment.

Returns
true on success, false otherwise.
-

Definition at line 276 of file track_run_iterator.cc.

+

Definition at line 277 of file track_run_iterator.cc.

@@ -383,7 +383,7 @@ bool is_keyframe () co
Returns
true if the iterator points to a valid run, false if past the last run.
-

Definition at line 474 of file track_run_iterator.cc.

+

Definition at line 475 of file track_run_iterator.cc.

@@ -401,7 +401,7 @@ bool is_keyframe () co
Returns
true if the iterator points to a valid sample, false if past the last sample.
-

Definition at line 476 of file track_run_iterator.cc.

+

Definition at line 477 of file track_run_iterator.cc.

@@ -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 36d8ef6125..61338f0603 100644 --- a/docs/db/d2e/classedash__packager_1_1MockMpdBuilder.html +++ b/docs/db/d2e/classedash__packager_1_1MockMpdBuilder.html @@ -153,7 +153,7 @@ Additional Inherited Members diff --git a/docs/db/d31/track__run__iterator_8cc_source.html b/docs/db/d31/track__run__iterator_8cc_source.html index 1ca5d6d949..eb39c1fb89 100644 --- a/docs/db/d31/track__run__iterator_8cc_source.html +++ b/docs/db/d31/track__run__iterator_8cc_source.html @@ -97,621 +97,638 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
8 #include <limits>
9 
10 #include "packager/media/base/buffer_reader.h"
-
11 #include "packager/media/formats/mp4/chunk_info_iterator.h"
-
12 #include "packager/media/formats/mp4/composition_offset_iterator.h"
-
13 #include "packager/media/formats/mp4/decoding_time_iterator.h"
-
14 #include "packager/media/formats/mp4/rcheck.h"
-
15 #include "packager/media/formats/mp4/sync_sample_iterator.h"
-
16 
-
17 namespace {
-
18 const int64_t kInvalidOffset = std::numeric_limits<int64_t>::max();
-
19 } // namespace
-
20 
-
21 namespace edash_packager {
-
22 namespace media {
-
23 namespace mp4 {
-
24 
-
25 struct SampleInfo {
-
26  int64_t size;
-
27  int64_t duration;
-
28  int64_t cts_offset;
-
29  bool is_keyframe;
-
30 };
-
31 
-
32 struct TrackRunInfo {
-
33  uint32_t track_id;
-
34  std::vector<SampleInfo> samples;
-
35  int64_t timescale;
-
36  int64_t start_dts;
-
37  int64_t sample_start_offset;
-
38 
-
39  TrackType track_type;
-
40  const AudioSampleEntry* audio_description;
-
41  const VideoSampleEntry* video_description;
-
42 
-
43  // Stores sample encryption entries, which is populated from 'senc' box if it
-
44  // is available, otherwise will try to load from cenc auxiliary information.
-
45  std::vector<SampleEncryptionEntry> sample_encryption_entries;
-
46 
-
47  // These variables are useful to load |sample_encryption_entries| from cenc
-
48  // auxiliary information when 'senc' box is not available.
-
49  int64_t aux_info_start_offset; // Only valid if aux_info_total_size > 0.
-
50  int aux_info_default_size;
-
51  std::vector<uint8_t> aux_info_sizes; // Populated if default_size == 0.
-
52  int aux_info_total_size;
-
53 
-
54  TrackRunInfo();
-
55  ~TrackRunInfo();
-
56 };
-
57 
-
58 TrackRunInfo::TrackRunInfo()
-
59  : track_id(0),
-
60  timescale(-1),
-
61  start_dts(-1),
-
62  sample_start_offset(-1),
-
63  track_type(kInvalid),
-
64  audio_description(NULL),
-
65  video_description(NULL),
-
66  aux_info_start_offset(-1),
-
67  aux_info_default_size(0),
-
68  aux_info_total_size(0) {}
-
69 TrackRunInfo::~TrackRunInfo() {}
-
70 
- -
72  : moov_(moov), sample_dts_(0), sample_offset_(0) {
-
73  CHECK(moov);
-
74 }
-
75 
-
76 TrackRunIterator::~TrackRunIterator() {}
-
77 
-
78 static void PopulateSampleInfo(const TrackExtends& trex,
-
79  const TrackFragmentHeader& tfhd,
-
80  const TrackFragmentRun& trun,
-
81  const uint32_t i,
-
82  SampleInfo* sample_info) {
-
83  if (i < trun.sample_sizes.size()) {
-
84  sample_info->size = trun.sample_sizes[i];
-
85  } else if (tfhd.default_sample_size > 0) {
-
86  sample_info->size = tfhd.default_sample_size;
-
87  } else {
-
88  sample_info->size = trex.default_sample_size;
-
89  }
-
90 
-
91  if (i < trun.sample_durations.size()) {
-
92  sample_info->duration = trun.sample_durations[i];
-
93  } else if (tfhd.default_sample_duration > 0) {
-
94  sample_info->duration = tfhd.default_sample_duration;
-
95  } else {
-
96  sample_info->duration = trex.default_sample_duration;
-
97  }
-
98 
-
99  if (i < trun.sample_composition_time_offsets.size()) {
-
100  sample_info->cts_offset = trun.sample_composition_time_offsets[i];
-
101  } else {
-
102  sample_info->cts_offset = 0;
-
103  }
-
104 
-
105  uint32_t flags;
-
106  if (i < trun.sample_flags.size()) {
-
107  flags = trun.sample_flags[i];
-
108  } else if (tfhd.flags & TrackFragmentHeader::kDefaultSampleFlagsPresentMask) {
-
109  flags = tfhd.default_sample_flags;
-
110  } else {
-
111  flags = trex.default_sample_flags;
-
112  }
-
113  sample_info->is_keyframe = !(flags & TrackFragmentHeader::kNonKeySampleMask);
-
114 }
-
115 
-
116 // In well-structured encrypted media, each track run will be immediately
-
117 // preceded by its auxiliary information; this is the only optimal storage
-
118 // pattern in terms of minimum number of bytes from a serial stream needed to
-
119 // begin playback. It also allows us to optimize caching on memory-constrained
-
120 // architectures, because we can cache the relatively small auxiliary
-
121 // information for an entire run and then discard data from the input stream,
-
122 // instead of retaining the entire 'mdat' box.
-
123 //
-
124 // We optimize for this situation (with no loss of generality) by sorting track
-
125 // runs during iteration in order of their first data offset (either sample data
-
126 // or auxiliary data).
-
127 class CompareMinTrackRunDataOffset {
-
128  public:
-
129  bool operator()(const TrackRunInfo& a, const TrackRunInfo& b) {
-
130  int64_t a_aux = a.aux_info_total_size ? a.aux_info_start_offset : kInvalidOffset;
-
131  int64_t b_aux = b.aux_info_total_size ? b.aux_info_start_offset : kInvalidOffset;
-
132 
-
133  int64_t a_lesser = std::min(a_aux, a.sample_start_offset);
-
134  int64_t a_greater = std::max(a_aux, a.sample_start_offset);
-
135  int64_t b_lesser = std::min(b_aux, b.sample_start_offset);
-
136  int64_t b_greater = std::max(b_aux, b.sample_start_offset);
-
137 
-
138  if (a_lesser == b_lesser)
-
139  return a_greater < b_greater;
-
140  return a_lesser < b_lesser;
-
141  }
-
142 };
-
143 
- -
145  runs_.clear();
-
146 
-
147  for (std::vector<Track>::const_iterator trak = moov_->tracks.begin();
-
148  trak != moov_->tracks.end(); ++trak) {
-
149  const SampleDescription& stsd =
-
150  trak->media.information.sample_table.description;
-
151  if (stsd.type != kAudio && stsd.type != kVideo) {
-
152  DVLOG(1) << "Skipping unhandled track type";
-
153  continue;
-
154  }
-
155 
-
156  // Edit list is ignored.
-
157  // We may consider supporting the single edit with a nonnegative media time
-
158  // if it is required. Just need to pass the media_time to Muxer and
-
159  // generate the edit list.
-
160  const std::vector<EditListEntry>& edits = trak->edit.list.edits;
-
161  if (!edits.empty()) {
-
162  if (edits.size() > 1)
-
163  DVLOG(1) << "Multi-entry edit box detected.";
-
164 
-
165  DLOG(INFO) << "Edit list with media time " << edits[0].media_time
-
166  << " ignored.";
-
167  }
-
168 
-
169  DecodingTimeIterator decoding_time(
-
170  trak->media.information.sample_table.decoding_time_to_sample);
-
171  CompositionOffsetIterator composition_offset(
-
172  trak->media.information.sample_table.composition_time_to_sample);
-
173  bool has_composition_offset = composition_offset.IsValid();
-
174  ChunkInfoIterator chunk_info(
-
175  trak->media.information.sample_table.sample_to_chunk);
-
176  SyncSampleIterator sync_sample(
-
177  trak->media.information.sample_table.sync_sample);
-
178  // Skip processing saiz and saio boxes for non-fragmented mp4 as we
-
179  // don't support encrypted non-fragmented mp4.
-
180 
-
181  const SampleSize& sample_size =
-
182  trak->media.information.sample_table.sample_size;
-
183  const std::vector<uint64_t>& chunk_offset_vector =
-
184  trak->media.information.sample_table.chunk_large_offset.offsets;
-
185 
-
186  int64_t run_start_dts = 0;
-
187 
-
188  uint32_t num_samples = sample_size.sample_count;
-
189  uint32_t num_chunks = chunk_offset_vector.size();
-
190 
-
191  // Check that total number of samples match.
-
192  DCHECK_EQ(num_samples, decoding_time.NumSamples());
-
193  if (has_composition_offset)
-
194  DCHECK_EQ(num_samples, composition_offset.NumSamples());
-
195  if (num_chunks > 0)
-
196  DCHECK_EQ(num_samples, chunk_info.NumSamples(1, num_chunks));
-
197  DCHECK_GE(num_chunks, chunk_info.LastFirstChunk());
-
198 
-
199  if (num_samples > 0) {
-
200  // Verify relevant tables are not empty.
-
201  RCHECK(decoding_time.IsValid());
-
202  RCHECK(chunk_info.IsValid());
-
203  }
-
204 
-
205  uint32_t sample_index = 0;
-
206  for (uint32_t chunk_index = 0; chunk_index < num_chunks; ++chunk_index) {
-
207  RCHECK(chunk_info.current_chunk() == chunk_index + 1);
-
208 
-
209  TrackRunInfo tri;
-
210  tri.track_id = trak->header.track_id;
-
211  tri.timescale = trak->media.header.timescale;
-
212  tri.start_dts = run_start_dts;
-
213  tri.sample_start_offset = chunk_offset_vector[chunk_index];
-
214 
-
215  uint32_t desc_idx = chunk_info.sample_description_index();
-
216  RCHECK(desc_idx > 0); // Descriptions are one-indexed in the file.
-
217  desc_idx -= 1;
-
218 
-
219  tri.track_type = stsd.type;
-
220  if (tri.track_type == kAudio) {
-
221  RCHECK(!stsd.audio_entries.empty());
-
222  if (desc_idx > stsd.audio_entries.size())
-
223  desc_idx = 0;
-
224  tri.audio_description = &stsd.audio_entries[desc_idx];
-
225  // We don't support encrypted non-fragmented mp4 for now.
-
226  RCHECK(!tri.audio_description->sinf.info.track_encryption.is_encrypted);
-
227  } else if (tri.track_type == kVideo) {
-
228  RCHECK(!stsd.video_entries.empty());
-
229  if (desc_idx > stsd.video_entries.size())
-
230  desc_idx = 0;
-
231  tri.video_description = &stsd.video_entries[desc_idx];
-
232  // We don't support encrypted non-fragmented mp4 for now.
-
233  RCHECK(!tri.video_description->sinf.info.track_encryption.is_encrypted);
-
234  }
-
235 
-
236  uint32_t samples_per_chunk = chunk_info.samples_per_chunk();
-
237  tri.samples.resize(samples_per_chunk);
-
238  for (uint32_t k = 0; k < samples_per_chunk; ++k) {
-
239  SampleInfo& sample = tri.samples[k];
-
240  sample.size = sample_size.sample_size != 0
-
241  ? sample_size.sample_size
-
242  : sample_size.sizes[sample_index];
-
243  sample.duration = decoding_time.sample_delta();
-
244  sample.cts_offset =
-
245  has_composition_offset ? composition_offset.sample_offset() : 0;
-
246  sample.is_keyframe = sync_sample.IsSyncSample();
-
247 
-
248  run_start_dts += sample.duration;
-
249 
-
250  // Advance to next sample. Should success except for last sample.
-
251  ++sample_index;
-
252  RCHECK(chunk_info.AdvanceSample() && sync_sample.AdvanceSample());
-
253  if (sample_index == num_samples) {
-
254  // We should hit end of tables for decoding time and composition
-
255  // offset.
-
256  RCHECK(!decoding_time.AdvanceSample());
-
257  if (has_composition_offset)
-
258  RCHECK(!composition_offset.AdvanceSample());
-
259  } else {
-
260  RCHECK(decoding_time.AdvanceSample());
-
261  if (has_composition_offset)
-
262  RCHECK(composition_offset.AdvanceSample());
-
263  }
-
264  }
-
265 
-
266  runs_.push_back(tri);
-
267  }
-
268  }
-
269 
-
270  std::sort(runs_.begin(), runs_.end(), CompareMinTrackRunDataOffset());
-
271  run_itr_ = runs_.begin();
-
272  ResetRun();
-
273  return true;
-
274 }
-
275 
- -
277  runs_.clear();
-
278 
-
279  next_fragment_start_dts_.resize(moof.tracks.size(), 0);
-
280  for (size_t i = 0; i < moof.tracks.size(); i++) {
-
281  const TrackFragment& traf = moof.tracks[i];
-
282 
-
283  const Track* trak = NULL;
-
284  for (size_t t = 0; t < moov_->tracks.size(); t++) {
-
285  if (moov_->tracks[t].header.track_id == traf.header.track_id)
-
286  trak = &moov_->tracks[t];
-
287  }
-
288  RCHECK(trak);
-
289 
-
290  const TrackExtends* trex = NULL;
-
291  for (size_t t = 0; t < moov_->extends.tracks.size(); t++) {
-
292  if (moov_->extends.tracks[t].track_id == traf.header.track_id)
-
293  trex = &moov_->extends.tracks[t];
-
294  }
-
295  RCHECK(trex);
-
296 
-
297  const SampleDescription& stsd =
-
298  trak->media.information.sample_table.description;
-
299  if (stsd.type != kAudio && stsd.type != kVideo) {
-
300  DVLOG(1) << "Skipping unhandled track type";
-
301  continue;
-
302  }
-
303  size_t desc_idx = traf.header.sample_description_index;
-
304  if (!desc_idx)
-
305  desc_idx = trex->default_sample_description_index;
-
306  RCHECK(desc_idx > 0); // Descriptions are one-indexed in the file
-
307  desc_idx -= 1;
-
308 
-
309  const AudioSampleEntry* audio_sample_entry = NULL;
-
310  const VideoSampleEntry* video_sample_entry = NULL;
-
311  switch (stsd.type) {
-
312  case kAudio:
-
313  RCHECK(!stsd.audio_entries.empty());
-
314  if (desc_idx > stsd.audio_entries.size())
-
315  desc_idx = 0;
-
316  audio_sample_entry = &stsd.audio_entries[desc_idx];
-
317  break;
-
318  case kVideo:
-
319  RCHECK(!stsd.video_entries.empty());
-
320  if (desc_idx > stsd.video_entries.size())
-
321  desc_idx = 0;
-
322  video_sample_entry = &stsd.video_entries[desc_idx];
-
323  break;
-
324  default:
-
325  NOTREACHED();
-
326  break;
-
327  }
-
328 
-
329  // SampleEncryptionEntries should not have been parsed, without having
-
330  // iv_size. Parse the box now.
-
331  DCHECK(traf.sample_encryption.sample_encryption_entries.empty());
-
332  std::vector<SampleEncryptionEntry> sample_encryption_entries;
-
333  if (!traf.sample_encryption.sample_encryption_data.empty()) {
-
334  RCHECK(audio_sample_entry || video_sample_entry);
-
335  const uint8_t default_iv_size =
-
336  audio_sample_entry
-
337  ? audio_sample_entry->sinf.info.track_encryption.default_iv_size
-
338  : video_sample_entry->sinf.info.track_encryption.default_iv_size;
-
339  RCHECK(traf.sample_encryption.ParseFromSampleEncryptionData(
-
340  default_iv_size, &sample_encryption_entries));
-
341  }
-
342 
-
343  int64_t run_start_dts = traf.decode_time_absent
-
344  ? next_fragment_start_dts_[i]
-
345  : traf.decode_time.decode_time;
-
346  int sample_count_sum = 0;
-
347 
-
348  for (size_t j = 0; j < traf.runs.size(); j++) {
-
349  const TrackFragmentRun& trun = traf.runs[j];
-
350  TrackRunInfo tri;
-
351  tri.track_id = traf.header.track_id;
-
352  tri.timescale = trak->media.header.timescale;
-
353  tri.start_dts = run_start_dts;
-
354  tri.sample_start_offset = trun.data_offset;
-
355 
-
356  tri.track_type = stsd.type;
-
357  tri.audio_description = audio_sample_entry;
-
358  tri.video_description = video_sample_entry;
-
359 
-
360  tri.aux_info_start_offset = -1;
-
361  tri.aux_info_total_size = 0;
-
362  // Populate sample encryption entries from SampleEncryption 'senc' box if
-
363  // it is available; otherwise initialize aux_info variables, which will
-
364  // be used to populate sample encryption entries later in CacheAuxInfo.
-
365  if (!sample_encryption_entries.empty()) {
-
366  RCHECK(sample_encryption_entries.size() >=
-
367  sample_count_sum + trun.sample_count);
-
368  for (size_t k = 0; k < trun.sample_count; ++k) {
-
369  tri.sample_encryption_entries.push_back(
-
370  sample_encryption_entries[sample_count_sum + k]);
-
371  }
-
372  } else if (traf.auxiliary_offset.offsets.size() > j) {
-
373  // Collect information from the auxiliary_offset entry with the same
-
374  // index in the 'saiz' container as the current run's index in the
-
375  // 'trun' container, if it is present.
-
376  tri.aux_info_start_offset = traf.auxiliary_offset.offsets[j];
-
377  // There should be an auxiliary info entry corresponding to each sample
-
378  // in the auxiliary offset entry's corresponding track run.
-
379  RCHECK(traf.auxiliary_size.sample_count >=
-
380  sample_count_sum + trun.sample_count);
-
381  tri.aux_info_default_size =
-
382  traf.auxiliary_size.default_sample_info_size;
-
383  if (tri.aux_info_default_size == 0) {
-
384  const std::vector<uint8_t>& sizes =
-
385  traf.auxiliary_size.sample_info_sizes;
-
386  tri.aux_info_sizes.insert(
-
387  tri.aux_info_sizes.begin(),
-
388  sizes.begin() + sample_count_sum,
-
389  sizes.begin() + sample_count_sum + trun.sample_count);
-
390  }
-
391 
-
392  // If the default info size is positive, find the total size of the aux
-
393  // info block from it, otherwise sum over the individual sizes of each
-
394  // aux info entry in the aux_offset entry.
-
395  if (tri.aux_info_default_size) {
-
396  tri.aux_info_total_size =
-
397  tri.aux_info_default_size * trun.sample_count;
-
398  } else {
-
399  tri.aux_info_total_size = 0;
-
400  for (size_t k = 0; k < trun.sample_count; k++) {
-
401  tri.aux_info_total_size += tri.aux_info_sizes[k];
-
402  }
-
403  }
-
404  }
-
405 
-
406  tri.samples.resize(trun.sample_count);
-
407  for (size_t k = 0; k < trun.sample_count; k++) {
-
408  PopulateSampleInfo(*trex, traf.header, trun, k, &tri.samples[k]);
-
409  run_start_dts += tri.samples[k].duration;
-
410  }
-
411  runs_.push_back(tri);
-
412  sample_count_sum += trun.sample_count;
-
413  }
-
414  next_fragment_start_dts_[i] = run_start_dts;
-
415  }
-
416 
-
417  std::sort(runs_.begin(), runs_.end(), CompareMinTrackRunDataOffset());
-
418  run_itr_ = runs_.begin();
-
419  ResetRun();
-
420  return true;
-
421 }
-
422 
- -
424  ++run_itr_;
-
425  ResetRun();
-
426 }
-
427 
-
428 void TrackRunIterator::ResetRun() {
-
429  if (!IsRunValid())
-
430  return;
-
431  sample_dts_ = run_itr_->start_dts;
-
432  sample_offset_ = run_itr_->sample_start_offset;
-
433  sample_itr_ = run_itr_->samples.begin();
-
434 }
-
435 
- -
437  DCHECK(IsSampleValid());
-
438  sample_dts_ += sample_itr_->duration;
-
439  sample_offset_ += sample_itr_->size;
-
440  ++sample_itr_;
-
441 }
-
442 
-
443 // This implementation only indicates a need for caching if CENC auxiliary
-
444 // info is available in the stream.
- -
446  DCHECK(IsRunValid());
-
447  return is_encrypted() && aux_info_size() > 0 &&
-
448  run_itr_->sample_encryption_entries.size() == 0;
-
449 }
-
450 
-
451 // This implementation currently only caches CENC auxiliary info.
-
452 bool TrackRunIterator::CacheAuxInfo(const uint8_t* buf, int buf_size) {
-
453  RCHECK(AuxInfoNeedsToBeCached() && buf_size >= aux_info_size());
-
454 
-
455  std::vector<SampleEncryptionEntry>& sample_encryption_entries =
-
456  runs_[run_itr_ - runs_.begin()].sample_encryption_entries;
-
457  sample_encryption_entries.resize(run_itr_->samples.size());
-
458  int64_t pos = 0;
-
459  for (size_t i = 0; i < run_itr_->samples.size(); i++) {
-
460  int info_size = run_itr_->aux_info_default_size;
-
461  if (!info_size)
-
462  info_size = run_itr_->aux_info_sizes[i];
-
463 
-
464  BufferReader reader(buf + pos, info_size);
-
465  const bool has_subsamples = info_size > track_encryption().default_iv_size;
-
466  RCHECK(sample_encryption_entries[i].ParseFromBuffer(
-
467  track_encryption().default_iv_size, has_subsamples, &reader));
-
468  pos += info_size;
-
469  }
-
470 
-
471  return true;
-
472 }
-
473 
-
474 bool TrackRunIterator::IsRunValid() const { return run_itr_ != runs_.end(); }
-
475 
- -
477  return IsRunValid() && (sample_itr_ != run_itr_->samples.end());
-
478 }
-
479 
-
480 // Because tracks are in sorted order and auxiliary information is cached when
-
481 // returning samples, it is guaranteed that no data will be required before the
-
482 // lesser of the minimum data offset of this track and the next in sequence.
-
483 // (The stronger condition - that no data is required before the minimum data
-
484 // offset of this track alone - is not guaranteed, because the BMFF spec does
-
485 // not have any inter-run ordering restrictions.)
- -
487  int64_t offset = kInvalidOffset;
-
488 
-
489  if (IsSampleValid()) {
-
490  offset = std::min(offset, sample_offset_);
- -
492  offset = std::min(offset, aux_info_offset());
-
493  }
-
494  if (run_itr_ != runs_.end()) {
-
495  std::vector<TrackRunInfo>::const_iterator next_run = run_itr_ + 1;
-
496  if (next_run != runs_.end()) {
-
497  offset = std::min(offset, next_run->sample_start_offset);
-
498  if (next_run->aux_info_total_size)
-
499  offset = std::min(offset, next_run->aux_info_start_offset);
-
500  }
-
501  }
-
502  if (offset == kInvalidOffset)
-
503  return runs_.empty() ? 0 : runs_[0].sample_start_offset;
-
504  return offset;
-
505 }
-
506 
-
507 uint32_t TrackRunIterator::track_id() const {
-
508  DCHECK(IsRunValid());
-
509  return run_itr_->track_id;
-
510 }
-
511 
-
512 bool TrackRunIterator::is_encrypted() const {
-
513  DCHECK(IsRunValid());
-
514  return track_encryption().is_encrypted;
-
515 }
-
516 
-
517 int64_t TrackRunIterator::aux_info_offset() const {
-
518  return run_itr_->aux_info_start_offset;
-
519 }
-
520 
-
521 int TrackRunIterator::aux_info_size() const {
-
522  return run_itr_->aux_info_total_size;
-
523 }
-
524 
-
525 bool TrackRunIterator::is_audio() const {
-
526  DCHECK(IsRunValid());
-
527  return run_itr_->track_type == kAudio;
-
528 }
-
529 
-
530 bool TrackRunIterator::is_video() const {
-
531  DCHECK(IsRunValid());
-
532  return run_itr_->track_type == kVideo;
-
533 }
-
534 
- -
536  DCHECK(is_audio());
-
537  DCHECK(run_itr_->audio_description);
-
538  return *run_itr_->audio_description;
-
539 }
-
540 
- -
542  DCHECK(is_video());
-
543  DCHECK(run_itr_->video_description);
-
544  return *run_itr_->video_description;
-
545 }
-
546 
-
547 int64_t TrackRunIterator::sample_offset() const {
-
548  DCHECK(IsSampleValid());
-
549  return sample_offset_;
-
550 }
-
551 
-
552 int TrackRunIterator::sample_size() const {
-
553  DCHECK(IsSampleValid());
-
554  return sample_itr_->size;
-
555 }
-
556 
-
557 int64_t TrackRunIterator::dts() const {
-
558  DCHECK(IsSampleValid());
-
559  return sample_dts_;
-
560 }
-
561 
-
562 int64_t TrackRunIterator::cts() const {
-
563  DCHECK(IsSampleValid());
-
564  return sample_dts_ + sample_itr_->cts_offset;
-
565 }
-
566 
-
567 int64_t TrackRunIterator::duration() const {
-
568  DCHECK(IsSampleValid());
-
569  return sample_itr_->duration;
-
570 }
-
571 
-
572 bool TrackRunIterator::is_keyframe() const {
-
573  DCHECK(IsSampleValid());
-
574  return sample_itr_->is_keyframe;
-
575 }
-
576 
-
577 const TrackEncryption& TrackRunIterator::track_encryption() const {
-
578  if (is_audio())
-
579  return audio_description().sinf.info.track_encryption;
-
580  DCHECK(is_video());
-
581  return video_description().sinf.info.track_encryption;
-
582 }
-
583 
-
584 scoped_ptr<DecryptConfig> TrackRunIterator::GetDecryptConfig() {
-
585  size_t sample_idx = sample_itr_ - run_itr_->samples.begin();
-
586  DCHECK_LT(sample_idx, run_itr_->sample_encryption_entries.size());
-
587  const SampleEncryptionEntry& sample_encryption_entry =
-
588  run_itr_->sample_encryption_entries[sample_idx];
-
589  DCHECK(is_encrypted());
-
590  DCHECK(!AuxInfoNeedsToBeCached());
-
591 
-
592  const size_t total_size_of_subsamples =
-
593  sample_encryption_entry.GetTotalSizeOfSubsamples();
-
594  if (total_size_of_subsamples != 0 &&
-
595  total_size_of_subsamples != static_cast<size_t>(sample_size())) {
-
596  LOG(ERROR) << "Incorrect CENC subsample size.";
-
597  return scoped_ptr<DecryptConfig>();
-
598  }
-
599 
-
600  return scoped_ptr<DecryptConfig>(new DecryptConfig(
-
601  track_encryption().default_kid,
-
602  sample_encryption_entry.initialization_vector,
-
603  sample_encryption_entry.subsamples));
-
604 }
-
605 
-
606 } // namespace mp4
-
607 } // namespace media
-
608 } // namespace edash_packager
- -
const VideoSampleEntry & video_description() const
Only valid if is_video() is true.
+
11 #include "packager/media/base/encryption_modes.h"
+
12 #include "packager/media/formats/mp4/chunk_info_iterator.h"
+
13 #include "packager/media/formats/mp4/composition_offset_iterator.h"
+
14 #include "packager/media/formats/mp4/decoding_time_iterator.h"
+
15 #include "packager/media/formats/mp4/rcheck.h"
+
16 #include "packager/media/formats/mp4/sync_sample_iterator.h"
+
17 
+
18 namespace {
+
19 const int64_t kInvalidOffset = std::numeric_limits<int64_t>::max();
+
20 } // namespace
+
21 
+
22 namespace edash_packager {
+
23 namespace media {
+
24 namespace mp4 {
+
25 
+
26 struct SampleInfo {
+
27  int64_t size;
+
28  int64_t duration;
+
29  int64_t cts_offset;
+
30  bool is_keyframe;
+
31 };
+
32 
+
33 struct TrackRunInfo {
+
34  uint32_t track_id;
+
35  std::vector<SampleInfo> samples;
+
36  int64_t timescale;
+
37  int64_t start_dts;
+
38  int64_t sample_start_offset;
+
39 
+
40  TrackType track_type;
+
41  const AudioSampleEntry* audio_description;
+
42  const VideoSampleEntry* video_description;
+
43 
+
44  // Stores sample encryption entries, which is populated from 'senc' box if it
+
45  // is available, otherwise will try to load from cenc auxiliary information.
+
46  std::vector<SampleEncryptionEntry> sample_encryption_entries;
+
47 
+
48  // These variables are useful to load |sample_encryption_entries| from cenc
+
49  // auxiliary information when 'senc' box is not available.
+
50  int64_t aux_info_start_offset; // Only valid if aux_info_total_size > 0.
+
51  int aux_info_default_size;
+
52  std::vector<uint8_t> aux_info_sizes; // Populated if default_size == 0.
+
53  int aux_info_total_size;
+
54 
+
55  TrackRunInfo();
+
56  ~TrackRunInfo();
+
57 };
+
58 
+
59 TrackRunInfo::TrackRunInfo()
+
60  : track_id(0),
+
61  timescale(-1),
+
62  start_dts(-1),
+
63  sample_start_offset(-1),
+
64  track_type(kInvalid),
+
65  audio_description(NULL),
+
66  video_description(NULL),
+
67  aux_info_start_offset(-1),
+
68  aux_info_default_size(0),
+
69  aux_info_total_size(0) {}
+
70 TrackRunInfo::~TrackRunInfo() {}
+
71 
+ +
73  : moov_(moov), sample_dts_(0), sample_offset_(0) {
+
74  CHECK(moov);
+
75 }
+
76 
+
77 TrackRunIterator::~TrackRunIterator() {}
+
78 
+
79 static void PopulateSampleInfo(const TrackExtends& trex,
+
80  const TrackFragmentHeader& tfhd,
+
81  const TrackFragmentRun& trun,
+
82  const uint32_t i,
+
83  SampleInfo* sample_info) {
+
84  if (i < trun.sample_sizes.size()) {
+
85  sample_info->size = trun.sample_sizes[i];
+
86  } else if (tfhd.default_sample_size > 0) {
+
87  sample_info->size = tfhd.default_sample_size;
+
88  } else {
+
89  sample_info->size = trex.default_sample_size;
+
90  }
+
91 
+
92  if (i < trun.sample_durations.size()) {
+
93  sample_info->duration = trun.sample_durations[i];
+
94  } else if (tfhd.default_sample_duration > 0) {
+
95  sample_info->duration = tfhd.default_sample_duration;
+
96  } else {
+
97  sample_info->duration = trex.default_sample_duration;
+
98  }
+
99 
+
100  if (i < trun.sample_composition_time_offsets.size()) {
+
101  sample_info->cts_offset = trun.sample_composition_time_offsets[i];
+
102  } else {
+
103  sample_info->cts_offset = 0;
+
104  }
+
105 
+
106  uint32_t flags;
+
107  if (i < trun.sample_flags.size()) {
+
108  flags = trun.sample_flags[i];
+
109  } else if (tfhd.flags & TrackFragmentHeader::kDefaultSampleFlagsPresentMask) {
+
110  flags = tfhd.default_sample_flags;
+
111  } else {
+
112  flags = trex.default_sample_flags;
+
113  }
+
114  sample_info->is_keyframe = !(flags & TrackFragmentHeader::kNonKeySampleMask);
+
115 }
+
116 
+
117 // In well-structured encrypted media, each track run will be immediately
+
118 // preceded by its auxiliary information; this is the only optimal storage
+
119 // pattern in terms of minimum number of bytes from a serial stream needed to
+
120 // begin playback. It also allows us to optimize caching on memory-constrained
+
121 // architectures, because we can cache the relatively small auxiliary
+
122 // information for an entire run and then discard data from the input stream,
+
123 // instead of retaining the entire 'mdat' box.
+
124 //
+
125 // We optimize for this situation (with no loss of generality) by sorting track
+
126 // runs during iteration in order of their first data offset (either sample data
+
127 // or auxiliary data).
+
128 class CompareMinTrackRunDataOffset {
+
129  public:
+
130  bool operator()(const TrackRunInfo& a, const TrackRunInfo& b) {
+
131  int64_t a_aux = a.aux_info_total_size ? a.aux_info_start_offset : kInvalidOffset;
+
132  int64_t b_aux = b.aux_info_total_size ? b.aux_info_start_offset : kInvalidOffset;
+
133 
+
134  int64_t a_lesser = std::min(a_aux, a.sample_start_offset);
+
135  int64_t a_greater = std::max(a_aux, a.sample_start_offset);
+
136  int64_t b_lesser = std::min(b_aux, b.sample_start_offset);
+
137  int64_t b_greater = std::max(b_aux, b.sample_start_offset);
+
138 
+
139  if (a_lesser == b_lesser)
+
140  return a_greater < b_greater;
+
141  return a_lesser < b_lesser;
+
142  }
+
143 };
+
144 
+ +
146  runs_.clear();
+
147 
+
148  for (std::vector<Track>::const_iterator trak = moov_->tracks.begin();
+
149  trak != moov_->tracks.end(); ++trak) {
+
150  const SampleDescription& stsd =
+
151  trak->media.information.sample_table.description;
+
152  if (stsd.type != kAudio && stsd.type != kVideo) {
+
153  DVLOG(1) << "Skipping unhandled track type";
+
154  continue;
+
155  }
+
156 
+
157  // Edit list is ignored.
+
158  // We may consider supporting the single edit with a nonnegative media time
+
159  // if it is required. Just need to pass the media_time to Muxer and
+
160  // generate the edit list.
+
161  const std::vector<EditListEntry>& edits = trak->edit.list.edits;
+
162  if (!edits.empty()) {
+
163  if (edits.size() > 1)
+
164  DVLOG(1) << "Multi-entry edit box detected.";
+
165 
+
166  DLOG(INFO) << "Edit list with media time " << edits[0].media_time
+
167  << " ignored.";
+
168  }
+
169 
+
170  DecodingTimeIterator decoding_time(
+
171  trak->media.information.sample_table.decoding_time_to_sample);
+
172  CompositionOffsetIterator composition_offset(
+
173  trak->media.information.sample_table.composition_time_to_sample);
+
174  bool has_composition_offset = composition_offset.IsValid();
+
175  ChunkInfoIterator chunk_info(
+
176  trak->media.information.sample_table.sample_to_chunk);
+
177  SyncSampleIterator sync_sample(
+
178  trak->media.information.sample_table.sync_sample);
+
179  // Skip processing saiz and saio boxes for non-fragmented mp4 as we
+
180  // don't support encrypted non-fragmented mp4.
+
181 
+
182  const SampleSize& sample_size =
+
183  trak->media.information.sample_table.sample_size;
+
184  const std::vector<uint64_t>& chunk_offset_vector =
+
185  trak->media.information.sample_table.chunk_large_offset.offsets;
+
186 
+
187  int64_t run_start_dts = 0;
+
188 
+
189  uint32_t num_samples = sample_size.sample_count;
+
190  uint32_t num_chunks = chunk_offset_vector.size();
+
191 
+
192  // Check that total number of samples match.
+
193  DCHECK_EQ(num_samples, decoding_time.NumSamples());
+
194  if (has_composition_offset)
+
195  DCHECK_EQ(num_samples, composition_offset.NumSamples());
+
196  if (num_chunks > 0)
+
197  DCHECK_EQ(num_samples, chunk_info.NumSamples(1, num_chunks));
+
198  DCHECK_GE(num_chunks, chunk_info.LastFirstChunk());
+
199 
+
200  if (num_samples > 0) {
+
201  // Verify relevant tables are not empty.
+
202  RCHECK(decoding_time.IsValid());
+
203  RCHECK(chunk_info.IsValid());
+
204  }
+
205 
+
206  uint32_t sample_index = 0;
+
207  for (uint32_t chunk_index = 0; chunk_index < num_chunks; ++chunk_index) {
+
208  RCHECK(chunk_info.current_chunk() == chunk_index + 1);
+
209 
+
210  TrackRunInfo tri;
+
211  tri.track_id = trak->header.track_id;
+
212  tri.timescale = trak->media.header.timescale;
+
213  tri.start_dts = run_start_dts;
+
214  tri.sample_start_offset = chunk_offset_vector[chunk_index];
+
215 
+
216  uint32_t desc_idx = chunk_info.sample_description_index();
+
217  RCHECK(desc_idx > 0); // Descriptions are one-indexed in the file.
+
218  desc_idx -= 1;
+
219 
+
220  tri.track_type = stsd.type;
+
221  if (tri.track_type == kAudio) {
+
222  RCHECK(!stsd.audio_entries.empty());
+
223  if (desc_idx > stsd.audio_entries.size())
+
224  desc_idx = 0;
+
225  tri.audio_description = &stsd.audio_entries[desc_idx];
+
226  // We don't support encrypted non-fragmented mp4 for now.
+
227  RCHECK(!tri.audio_description->sinf.info.track_encryption.is_encrypted);
+
228  } else if (tri.track_type == kVideo) {
+
229  RCHECK(!stsd.video_entries.empty());
+
230  if (desc_idx > stsd.video_entries.size())
+
231  desc_idx = 0;
+
232  tri.video_description = &stsd.video_entries[desc_idx];
+
233  // We don't support encrypted non-fragmented mp4 for now.
+
234  RCHECK(!tri.video_description->sinf.info.track_encryption.is_encrypted);
+
235  }
+
236 
+
237  uint32_t samples_per_chunk = chunk_info.samples_per_chunk();
+
238  tri.samples.resize(samples_per_chunk);
+
239  for (uint32_t k = 0; k < samples_per_chunk; ++k) {
+
240  SampleInfo& sample = tri.samples[k];
+
241  sample.size = sample_size.sample_size != 0
+
242  ? sample_size.sample_size
+
243  : sample_size.sizes[sample_index];
+
244  sample.duration = decoding_time.sample_delta();
+
245  sample.cts_offset =
+
246  has_composition_offset ? composition_offset.sample_offset() : 0;
+
247  sample.is_keyframe = sync_sample.IsSyncSample();
+
248 
+
249  run_start_dts += sample.duration;
+
250 
+
251  // Advance to next sample. Should success except for last sample.
+
252  ++sample_index;
+
253  RCHECK(chunk_info.AdvanceSample() && sync_sample.AdvanceSample());
+
254  if (sample_index == num_samples) {
+
255  // We should hit end of tables for decoding time and composition
+
256  // offset.
+
257  RCHECK(!decoding_time.AdvanceSample());
+
258  if (has_composition_offset)
+
259  RCHECK(!composition_offset.AdvanceSample());
+
260  } else {
+
261  RCHECK(decoding_time.AdvanceSample());
+
262  if (has_composition_offset)
+
263  RCHECK(composition_offset.AdvanceSample());
+
264  }
+
265  }
+
266 
+
267  runs_.push_back(tri);
+
268  }
+
269  }
+
270 
+
271  std::sort(runs_.begin(), runs_.end(), CompareMinTrackRunDataOffset());
+
272  run_itr_ = runs_.begin();
+
273  ResetRun();
+
274  return true;
+
275 }
+
276 
+ +
278  runs_.clear();
+
279 
+
280  next_fragment_start_dts_.resize(moof.tracks.size(), 0);
+
281  for (size_t i = 0; i < moof.tracks.size(); i++) {
+
282  const TrackFragment& traf = moof.tracks[i];
+
283 
+
284  const Track* trak = NULL;
+
285  for (size_t t = 0; t < moov_->tracks.size(); t++) {
+
286  if (moov_->tracks[t].header.track_id == traf.header.track_id)
+
287  trak = &moov_->tracks[t];
+
288  }
+
289  RCHECK(trak);
+
290 
+
291  const TrackExtends* trex = NULL;
+
292  for (size_t t = 0; t < moov_->extends.tracks.size(); t++) {
+
293  if (moov_->extends.tracks[t].track_id == traf.header.track_id)
+
294  trex = &moov_->extends.tracks[t];
+
295  }
+
296  RCHECK(trex);
+
297 
+
298  const SampleDescription& stsd =
+
299  trak->media.information.sample_table.description;
+
300  if (stsd.type != kAudio && stsd.type != kVideo) {
+
301  DVLOG(1) << "Skipping unhandled track type";
+
302  continue;
+
303  }
+
304  size_t desc_idx = traf.header.sample_description_index;
+
305  if (!desc_idx)
+
306  desc_idx = trex->default_sample_description_index;
+
307  RCHECK(desc_idx > 0); // Descriptions are one-indexed in the file
+
308  desc_idx -= 1;
+
309 
+
310  const AudioSampleEntry* audio_sample_entry = NULL;
+
311  const VideoSampleEntry* video_sample_entry = NULL;
+
312  switch (stsd.type) {
+
313  case kAudio:
+
314  RCHECK(!stsd.audio_entries.empty());
+
315  if (desc_idx > stsd.audio_entries.size())
+
316  desc_idx = 0;
+
317  audio_sample_entry = &stsd.audio_entries[desc_idx];
+
318  break;
+
319  case kVideo:
+
320  RCHECK(!stsd.video_entries.empty());
+
321  if (desc_idx > stsd.video_entries.size())
+
322  desc_idx = 0;
+
323  video_sample_entry = &stsd.video_entries[desc_idx];
+
324  break;
+
325  default:
+
326  NOTREACHED();
+
327  break;
+
328  }
+
329 
+
330  // SampleEncryptionEntries should not have been parsed, without having
+
331  // iv_size. Parse the box now.
+
332  DCHECK(traf.sample_encryption.sample_encryption_entries.empty());
+
333  std::vector<SampleEncryptionEntry> sample_encryption_entries;
+
334  if (!traf.sample_encryption.sample_encryption_data.empty()) {
+
335  RCHECK(audio_sample_entry || video_sample_entry);
+
336  const uint8_t default_iv_size =
+
337  audio_sample_entry
+
338  ? audio_sample_entry->sinf.info.track_encryption.default_iv_size
+
339  : video_sample_entry->sinf.info.track_encryption.default_iv_size;
+
340  RCHECK(traf.sample_encryption.ParseFromSampleEncryptionData(
+
341  default_iv_size, &sample_encryption_entries));
+
342  }
+
343 
+
344  int64_t run_start_dts = traf.decode_time_absent
+
345  ? next_fragment_start_dts_[i]
+
346  : traf.decode_time.decode_time;
+
347  int sample_count_sum = 0;
+
348 
+
349  for (size_t j = 0; j < traf.runs.size(); j++) {
+
350  const TrackFragmentRun& trun = traf.runs[j];
+
351  TrackRunInfo tri;
+
352  tri.track_id = traf.header.track_id;
+
353  tri.timescale = trak->media.header.timescale;
+
354  tri.start_dts = run_start_dts;
+
355  tri.sample_start_offset = trun.data_offset;
+
356 
+
357  tri.track_type = stsd.type;
+
358  tri.audio_description = audio_sample_entry;
+
359  tri.video_description = video_sample_entry;
+
360 
+
361  tri.aux_info_start_offset = -1;
+
362  tri.aux_info_total_size = 0;
+
363  // Populate sample encryption entries from SampleEncryption 'senc' box if
+
364  // it is available; otherwise initialize aux_info variables, which will
+
365  // be used to populate sample encryption entries later in CacheAuxInfo.
+
366  if (!sample_encryption_entries.empty()) {
+
367  RCHECK(sample_encryption_entries.size() >=
+
368  sample_count_sum + trun.sample_count);
+
369  for (size_t k = 0; k < trun.sample_count; ++k) {
+
370  tri.sample_encryption_entries.push_back(
+
371  sample_encryption_entries[sample_count_sum + k]);
+
372  }
+
373  } else if (traf.auxiliary_offset.offsets.size() > j) {
+
374  // Collect information from the auxiliary_offset entry with the same
+
375  // index in the 'saiz' container as the current run's index in the
+
376  // 'trun' container, if it is present.
+
377  tri.aux_info_start_offset = traf.auxiliary_offset.offsets[j];
+
378  // There should be an auxiliary info entry corresponding to each sample
+
379  // in the auxiliary offset entry's corresponding track run.
+
380  RCHECK(traf.auxiliary_size.sample_count >=
+
381  sample_count_sum + trun.sample_count);
+
382  tri.aux_info_default_size =
+
383  traf.auxiliary_size.default_sample_info_size;
+
384  if (tri.aux_info_default_size == 0) {
+
385  const std::vector<uint8_t>& sizes =
+
386  traf.auxiliary_size.sample_info_sizes;
+
387  tri.aux_info_sizes.insert(
+
388  tri.aux_info_sizes.begin(),
+
389  sizes.begin() + sample_count_sum,
+
390  sizes.begin() + sample_count_sum + trun.sample_count);
+
391  }
+
392 
+
393  // If the default info size is positive, find the total size of the aux
+
394  // info block from it, otherwise sum over the individual sizes of each
+
395  // aux info entry in the aux_offset entry.
+
396  if (tri.aux_info_default_size) {
+
397  tri.aux_info_total_size =
+
398  tri.aux_info_default_size * trun.sample_count;
+
399  } else {
+
400  tri.aux_info_total_size = 0;
+
401  for (size_t k = 0; k < trun.sample_count; k++) {
+
402  tri.aux_info_total_size += tri.aux_info_sizes[k];
+
403  }
+
404  }
+
405  }
+
406 
+
407  tri.samples.resize(trun.sample_count);
+
408  for (size_t k = 0; k < trun.sample_count; k++) {
+
409  PopulateSampleInfo(*trex, traf.header, trun, k, &tri.samples[k]);
+
410  run_start_dts += tri.samples[k].duration;
+
411  }
+
412  runs_.push_back(tri);
+
413  sample_count_sum += trun.sample_count;
+
414  }
+
415  next_fragment_start_dts_[i] = run_start_dts;
+
416  }
+
417 
+
418  std::sort(runs_.begin(), runs_.end(), CompareMinTrackRunDataOffset());
+
419  run_itr_ = runs_.begin();
+
420  ResetRun();
+
421  return true;
+
422 }
+
423 
+ +
425  ++run_itr_;
+
426  ResetRun();
+
427 }
+
428 
+
429 void TrackRunIterator::ResetRun() {
+
430  if (!IsRunValid())
+
431  return;
+
432  sample_dts_ = run_itr_->start_dts;
+
433  sample_offset_ = run_itr_->sample_start_offset;
+
434  sample_itr_ = run_itr_->samples.begin();
+
435 }
+
436 
+ +
438  DCHECK(IsSampleValid());
+
439  sample_dts_ += sample_itr_->duration;
+
440  sample_offset_ += sample_itr_->size;
+
441  ++sample_itr_;
+
442 }
+
443 
+
444 // This implementation only indicates a need for caching if CENC auxiliary
+
445 // info is available in the stream.
+ +
447  DCHECK(IsRunValid());
+
448  return is_encrypted() && aux_info_size() > 0 &&
+
449  run_itr_->sample_encryption_entries.size() == 0;
+
450 }
+
451 
+
452 // This implementation currently only caches CENC auxiliary info.
+
453 bool TrackRunIterator::CacheAuxInfo(const uint8_t* buf, int buf_size) {
+
454  RCHECK(AuxInfoNeedsToBeCached() && buf_size >= aux_info_size());
+
455 
+
456  std::vector<SampleEncryptionEntry>& sample_encryption_entries =
+
457  runs_[run_itr_ - runs_.begin()].sample_encryption_entries;
+
458  sample_encryption_entries.resize(run_itr_->samples.size());
+
459  int64_t pos = 0;
+
460  for (size_t i = 0; i < run_itr_->samples.size(); i++) {
+
461  int info_size = run_itr_->aux_info_default_size;
+
462  if (!info_size)
+
463  info_size = run_itr_->aux_info_sizes[i];
+
464 
+
465  BufferReader reader(buf + pos, info_size);
+
466  const bool has_subsamples = info_size > track_encryption().default_iv_size;
+
467  RCHECK(sample_encryption_entries[i].ParseFromBuffer(
+
468  track_encryption().default_iv_size, has_subsamples, &reader));
+
469  pos += info_size;
+
470  }
+
471 
+
472  return true;
+
473 }
+
474 
+
475 bool TrackRunIterator::IsRunValid() const { return run_itr_ != runs_.end(); }
+
476 
+ +
478  return IsRunValid() && (sample_itr_ != run_itr_->samples.end());
+
479 }
+
480 
+
481 // Because tracks are in sorted order and auxiliary information is cached when
+
482 // returning samples, it is guaranteed that no data will be required before the
+
483 // lesser of the minimum data offset of this track and the next in sequence.
+
484 // (The stronger condition - that no data is required before the minimum data
+
485 // offset of this track alone - is not guaranteed, because the BMFF spec does
+
486 // not have any inter-run ordering restrictions.)
+ +
488  int64_t offset = kInvalidOffset;
+
489 
+
490  if (IsSampleValid()) {
+
491  offset = std::min(offset, sample_offset_);
+ +
493  offset = std::min(offset, aux_info_offset());
+
494  }
+
495  if (run_itr_ != runs_.end()) {
+
496  std::vector<TrackRunInfo>::const_iterator next_run = run_itr_ + 1;
+
497  if (next_run != runs_.end()) {
+
498  offset = std::min(offset, next_run->sample_start_offset);
+
499  if (next_run->aux_info_total_size)
+
500  offset = std::min(offset, next_run->aux_info_start_offset);
+
501  }
+
502  }
+
503  if (offset == kInvalidOffset)
+
504  return runs_.empty() ? 0 : runs_[0].sample_start_offset;
+
505  return offset;
+
506 }
+
507 
+
508 uint32_t TrackRunIterator::track_id() const {
+
509  DCHECK(IsRunValid());
+
510  return run_itr_->track_id;
+
511 }
+
512 
+
513 bool TrackRunIterator::is_encrypted() const {
+
514  DCHECK(IsRunValid());
+
515  return track_encryption().is_encrypted;
+
516 }
+
517 
+
518 int64_t TrackRunIterator::aux_info_offset() const {
+
519  return run_itr_->aux_info_start_offset;
+
520 }
+
521 
+
522 int TrackRunIterator::aux_info_size() const {
+
523  return run_itr_->aux_info_total_size;
+
524 }
+
525 
+
526 bool TrackRunIterator::is_audio() const {
+
527  DCHECK(IsRunValid());
+
528  return run_itr_->track_type == kAudio;
+
529 }
+
530 
+
531 bool TrackRunIterator::is_video() const {
+
532  DCHECK(IsRunValid());
+
533  return run_itr_->track_type == kVideo;
+
534 }
+
535 
+ +
537  DCHECK(is_audio());
+
538  DCHECK(run_itr_->audio_description);
+
539  return *run_itr_->audio_description;
+
540 }
+
541 
+ +
543  DCHECK(is_video());
+
544  DCHECK(run_itr_->video_description);
+
545  return *run_itr_->video_description;
+
546 }
+
547 
+
548 int64_t TrackRunIterator::sample_offset() const {
+
549  DCHECK(IsSampleValid());
+
550  return sample_offset_;
+
551 }
+
552 
+
553 int TrackRunIterator::sample_size() const {
+
554  DCHECK(IsSampleValid());
+
555  return sample_itr_->size;
+
556 }
+
557 
+
558 int64_t TrackRunIterator::dts() const {
+
559  DCHECK(IsSampleValid());
+
560  return sample_dts_;
+
561 }
+
562 
+
563 int64_t TrackRunIterator::cts() const {
+
564  DCHECK(IsSampleValid());
+
565  return sample_dts_ + sample_itr_->cts_offset;
+
566 }
+
567 
+
568 int64_t TrackRunIterator::duration() const {
+
569  DCHECK(IsSampleValid());
+
570  return sample_itr_->duration;
+
571 }
+
572 
+
573 bool TrackRunIterator::is_keyframe() const {
+
574  DCHECK(IsSampleValid());
+
575  return sample_itr_->is_keyframe;
+
576 }
+
577 
+
578 const TrackEncryption& TrackRunIterator::track_encryption() const {
+
579  if (is_audio())
+
580  return audio_description().sinf.info.track_encryption;
+
581  DCHECK(is_video());
+
582  return video_description().sinf.info.track_encryption;
+
583 }
+
584 
+
585 scoped_ptr<DecryptConfig> TrackRunIterator::GetDecryptConfig() {
+
586  size_t sample_idx = sample_itr_ - run_itr_->samples.begin();
+
587  DCHECK_LT(sample_idx, run_itr_->sample_encryption_entries.size());
+
588  const SampleEncryptionEntry& sample_encryption_entry =
+
589  run_itr_->sample_encryption_entries[sample_idx];
+
590  DCHECK(is_encrypted());
+
591  DCHECK(!AuxInfoNeedsToBeCached());
+
592 
+
593  const size_t total_size_of_subsamples =
+
594  sample_encryption_entry.GetTotalSizeOfSubsamples();
+
595  if (total_size_of_subsamples != 0 &&
+
596  total_size_of_subsamples != static_cast<size_t>(sample_size())) {
+
597  LOG(ERROR) << "Incorrect CENC subsample size.";
+
598  return scoped_ptr<DecryptConfig>();
+
599  }
+
600 
+
601  FourCC protection_scheme = is_audio() ? audio_description().sinf.type.type
+
602  : video_description().sinf.type.type;
+
603  EncryptionMode decryption_mode;
+
604  switch (protection_scheme) {
+
605  case FOURCC_CENC:
+
606  decryption_mode = kEncryptionModeAesCtr;
+
607  break;
+
608  case FOURCC_CBC1:
+
609  decryption_mode = kEncryptionModeAesCbc;
+
610  break;
+
611  default:
+
612  LOG(ERROR) << "Unsupported protection scheme.";
+
613  return scoped_ptr<DecryptConfig>();
+
614  }
+
615 
+
616  return scoped_ptr<DecryptConfig>(new DecryptConfig(
+
617  track_encryption().default_kid,
+
618  sample_encryption_entry.initialization_vector,
+
619  sample_encryption_entry.subsamples,
+
620  decryption_mode));
+
621 }
+
622 
+
623 } // namespace mp4
+
624 } // namespace media
+
625 } // namespace edash_packager
+ +
const VideoSampleEntry & video_description() const
Only valid if is_video() is true.
- - + + -
scoped_ptr< DecryptConfig > GetDecryptConfig()
+
scoped_ptr< DecryptConfig > GetDecryptConfig()
bool ParseFromSampleEncryptionData(size_t iv_size, std::vector< SampleEncryptionEntry > *sample_encryption_entries) const
-
bool CacheAuxInfo(const uint8_t *buf, int size)
+
bool CacheAuxInfo(const uint8_t *buf, int size)
-
const AudioSampleEntry & audio_description() const
Only valid if is_audio() is true.
- +
const AudioSampleEntry & audio_description() const
Only valid if is_audio() is true.
+ - +
uint32_t NumSamples(uint32_t start_chunk, uint32_t end_chunk) const
@@ -722,17 +739,17 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); - + - + - + @@ -741,12 +758,12 @@ 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 74d92b0711..ede632e80b 100644 --- a/docs/db/d44/structedash__packager_1_1media_1_1mp4_1_1DataReference-members.html +++ b/docs/db/d44/structedash__packager_1_1media_1_1mp4_1_1DataReference-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d45/mpd__notify__muxer__listener_8h_source.html b/docs/db/d45/mpd__notify__muxer__listener_8h_source.html index 45a6a97c48..8d0dd43bbe 100644 --- a/docs/db/d45/mpd__notify__muxer__listener_8h_source.html +++ b/docs/db/d45/mpd__notify__muxer__listener_8h_source.html @@ -179,7 +179,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 e0376ad1ce..37597a6d48 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 871ac59fe0..54c2b51fa7 100644 --- a/docs/db/d51/mp2t__media__parser_8h_source.html +++ b/docs/db/d51/mp2t__media__parser_8h_source.html @@ -193,7 +193,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d51/two__pass__single__segment__segmenter_8h_source.html b/docs/db/d51/two__pass__single__segment__segmenter_8h_source.html index 1b793f7bd6..376d77f8a0 100644 --- a/docs/db/d51/two__pass__single__segment__segmenter_8h_source.html +++ b/docs/db/d51/two__pass__single__segment__segmenter_8h_source.html @@ -145,7 +145,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d52/classedash__packager_1_1media_1_1ProtectionSystemSpecificInfo-members.html b/docs/db/d52/classedash__packager_1_1media_1_1ProtectionSystemSpecificInfo-members.html index e941ca5f24..f118a2e31d 100644 --- a/docs/db/d52/classedash__packager_1_1media_1_1ProtectionSystemSpecificInfo-members.html +++ b/docs/db/d52/classedash__packager_1_1media_1_1ProtectionSystemSpecificInfo-members.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d56/classedash__packager_1_1SimpleMpdNotifier.html b/docs/db/d56/classedash__packager_1_1SimpleMpdNotifier.html index 4e0a5ce395..ce6852afa7 100644 --- a/docs/db/d56/classedash__packager_1_1SimpleMpdNotifier.html +++ b/docs/db/d56/classedash__packager_1_1SimpleMpdNotifier.html @@ -471,7 +471,7 @@ class SimpleMpdNotifierTes diff --git a/docs/db/d5a/structedash__packager_1_1media_1_1mp4_1_1SampleEncryptionEntry-members.html b/docs/db/d5a/structedash__packager_1_1media_1_1mp4_1_1SampleEncryptionEntry-members.html index abb4d4f5fd..f8f195b1c4 100644 --- a/docs/db/d5a/structedash__packager_1_1media_1_1mp4_1_1SampleEncryptionEntry-members.html +++ b/docs/db/d5a/structedash__packager_1_1media_1_1mp4_1_1SampleEncryptionEntry-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d5b/classedash__packager_1_1media_1_1HEVCDecoderConfiguration-members.html b/docs/db/d5b/classedash__packager_1_1media_1_1HEVCDecoderConfiguration-members.html index be7c2e0c97..9f6827b2c8 100644 --- a/docs/db/d5b/classedash__packager_1_1media_1_1HEVCDecoderConfiguration-members.html +++ b/docs/db/d5b/classedash__packager_1_1media_1_1HEVCDecoderConfiguration-members.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d60/mpd__options_8h_source.html b/docs/db/d60/mpd__options_8h_source.html index 13722419dc..48e405d7b9 100644 --- a/docs/db/d60/mpd__options_8h_source.html +++ b/docs/db/d60/mpd__options_8h_source.html @@ -130,7 +130,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d61/classedash__packager_1_1media_1_1mp4_1_1SingleSegmentSegmenter-members.html b/docs/db/d61/classedash__packager_1_1media_1_1mp4_1_1SingleSegmentSegmenter-members.html index 1720bf162a..9b7782c8e6 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 @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); GetIndexRange(size_t *offset, size_t *size) overrideedash_packager::media::mp4::SingleSegmentSegmentervirtual GetInitRange(size_t *offset, size_t *size) overrideedash_packager::media::mp4::SingleSegmentSegmentervirtual GetReferenceTimeScale() const (defined in edash_packager::media::mp4::Segmenter)edash_packager::media::mp4::Segmenter - 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)edash_packager::media::mp4::Segmenter + 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, EncryptionMode encryption_mode)edash_packager::media::mp4::Segmenter moov() (defined in edash_packager::media::mp4::Segmenter)edash_packager::media::mp4::Segmenterinlineprotected muxer_listener() (defined in edash_packager::media::mp4::Segmenter)edash_packager::media::mp4::Segmenterinlineprotected options() const (defined in edash_packager::media::mp4::Segmenter)edash_packager::media::mp4::Segmenterinlineprotected @@ -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 ed2ffad8cf..e4414d6485 100644 --- a/docs/db/d64/webvtt__media__parser_8h_source.html +++ b/docs/db/d64/webvtt__media__parser_8h_source.html @@ -181,7 +181,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d69/classedash__packager_1_1media_1_1mp2t_1_1AdtsHeader.html b/docs/db/d69/classedash__packager_1_1media_1_1mp2t_1_1AdtsHeader.html index 97ec87c84c..10bbb3dc09 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 5ba502fd08..fbaec219ac 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 @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/db/d6c/classedash__packager_1_1media_1_1mp4_1_1BoxReader.html b/docs/db/d6c/classedash__packager_1_1media_1_1mp4_1_1BoxReader.html index aa1b3c7860..5989331a02 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 15f137f582..3063127117 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 b4000e0a5e..60b213a70b 100644 --- a/docs/db/d79/structedash__packager_1_1media_1_1mp4_1_1EditListEntry-members.html +++ b/docs/db/d79/structedash__packager_1_1media_1_1mp4_1_1EditListEntry-members.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d7b/structedash__packager_1_1media_1_1H264Pps.html b/docs/db/d7b/structedash__packager_1_1media_1_1H264Pps.html index 404478f1f0..e3eab3b5d9 100644 --- a/docs/db/d7b/structedash__packager_1_1media_1_1H264Pps.html +++ b/docs/db/d7b/structedash__packager_1_1media_1_1H264Pps.html @@ -167,7 +167,7 @@ int second_chroma_qp_index diff --git a/docs/db/d7e/muxer__options_8cc_source.html b/docs/db/d7e/muxer__options_8cc_source.html index 1db1af7e77..ff3067933c 100644 --- a/docs/db/d7e/muxer__options_8cc_source.html +++ b/docs/db/d7e/muxer__options_8cc_source.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d89/structedash__packager_1_1media_1_1mp4_1_1CompactSampleSize.html b/docs/db/d89/structedash__packager_1_1media_1_1mp4_1_1CompactSampleSize.html index 813bbc86f9..e0674a6fc0 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 @@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/db/d8f/mp4__muxer_8h_source.html b/docs/db/d8f/mp4__muxer_8h_source.html index d88e7f0a32..522c803503 100644 --- a/docs/db/d8f/mp4__muxer_8h_source.html +++ b/docs/db/d8f/mp4__muxer_8h_source.html @@ -166,7 +166,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
Abstract class holds stream information.
Definition: stream_info.h:26
- +
Holds video stream information.
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
@@ -174,7 +174,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 4dbaef8ec8..ca92df2b26 100644 --- a/docs/db/d96/wvm__media__parser_8h_source.html +++ b/docs/db/d96/wvm__media__parser_8h_source.html @@ -363,7 +363,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d97/classedash__packager_1_1media_1_1WebMContentEncodingsClient-members.html b/docs/db/d97/classedash__packager_1_1media_1_1WebMContentEncodingsClient-members.html index 3731b8863b..dc66167212 100644 --- a/docs/db/d97/classedash__packager_1_1media_1_1WebMContentEncodingsClient-members.html +++ b/docs/db/d97/classedash__packager_1_1media_1_1WebMContentEncodingsClient-members.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/da0/classedash__packager_1_1media_1_1ProtectionSystemSpecificInfo.html b/docs/db/da0/classedash__packager_1_1media_1_1ProtectionSystemSpecificInfo.html index f78d4cb61e..37754fd01b 100644 --- a/docs/db/da0/classedash__packager_1_1media_1_1ProtectionSystemSpecificInfo.html +++ b/docs/db/da0/classedash__packager_1_1media_1_1ProtectionSystemSpecificInfo.html @@ -222,7 +222,7 @@ Static Public Member Functions diff --git a/docs/db/da0/classedash__packager_1_1media_1_1WebMClusterParser.html b/docs/db/da0/classedash__packager_1_1media_1_1WebMClusterParser.html index 358cd61a42..281ae1f069 100644 --- a/docs/db/da0/classedash__packager_1_1media_1_1WebMClusterParser.html +++ b/docs/db/da0/classedash__packager_1_1media_1_1WebMClusterParser.html @@ -365,7 +365,7 @@ The number of bytes parsed on success. diff --git a/docs/db/da4/classBandwidthEstimator-members.html b/docs/db/da4/classBandwidthEstimator-members.html index 3b347e05f2..c10115ae65 100644 --- a/docs/db/da4/classBandwidthEstimator-members.html +++ b/docs/db/da4/classBandwidthEstimator-members.html @@ -97,7 +97,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/da4/classedash__packager_1_1media_1_1WidevineKeySource.html b/docs/db/da4/classedash__packager_1_1media_1_1WidevineKeySource.html index 27929fe050..a4f74ab668 100644 --- a/docs/db/da4/classedash__packager_1_1media_1_1WidevineKeySource.html +++ b/docs/db/da4/classedash__packager_1_1media_1_1WidevineKeySource.html @@ -560,7 +560,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 1d8e6e105f..07575b7688 100644 --- a/docs/db/da5/structedash__packager_1_1media_1_1mp4_1_1CencSampleEncryptionInfoEntry-members.html +++ b/docs/db/da5/structedash__packager_1_1media_1_1mp4_1_1CencSampleEncryptionInfoEntry-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/da6/memory__file_8h_source.html b/docs/db/da6/memory__file_8h_source.html index 9f71d446b9..a9e214d6ce 100644 --- a/docs/db/da6/memory__file_8h_source.html +++ b/docs/db/da6/memory__file_8h_source.html @@ -154,7 +154,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/dae/classedash__packager_1_1media_1_1mp4_1_1Fragmenter.html b/docs/db/dae/classedash__packager_1_1media_1_1mp4_1_1Fragmenter.html index 41314a58f5..c4b7dd7a3e 100644 --- a/docs/db/dae/classedash__packager_1_1media_1_1mp4_1_1Fragmenter.html +++ b/docs/db/dae/classedash__packager_1_1media_1_1mp4_1_1Fragmenter.html @@ -299,7 +299,7 @@ template<typename T > diff --git a/docs/db/db8/structedash__packager_1_1media_1_1mp4_1_1ID3v2-members.html b/docs/db/db8/structedash__packager_1_1media_1_1mp4_1_1ID3v2-members.html index 15af0d56d9..e247a03501 100644 --- a/docs/db/db8/structedash__packager_1_1media_1_1mp4_1_1ID3v2-members.html +++ b/docs/db/db8/structedash__packager_1_1media_1_1mp4_1_1ID3v2-members.html @@ -114,7 +114,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/dc8/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPmt-members.html b/docs/db/dc8/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPmt-members.html index 8caf74b11b..c5437d1fa8 100644 --- a/docs/db/dc8/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPmt-members.html +++ b/docs/db/dc8/classedash__packager_1_1media_1_1mp2t_1_1TsSectionPmt-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/dd1/structedash__packager_1_1media_1_1mp4_1_1SampleEncryption-members.html b/docs/db/dd1/structedash__packager_1_1media_1_1mp4_1_1SampleEncryption-members.html index 389550bc65..4dd1a07a71 100644 --- a/docs/db/dd1/structedash__packager_1_1media_1_1mp4_1_1SampleEncryption-members.html +++ b/docs/db/dd1/structedash__packager_1_1media_1_1mp4_1_1SampleEncryption-members.html @@ -118,7 +118,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/dd2/chunk__info__iterator_8h_source.html b/docs/db/dd2/chunk__info__iterator_8h_source.html index caa32b54c7..5083a3fb00 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 e09a38d9a6..9965c6d91b 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 1b5aef3854..c78032d893 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 9952a7ab70..3d4cf04ef1 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 f73ce86e73..6febd579b2 100644 --- a/docs/db/dec/audio__timestamp__helper_8cc_source.html +++ b/docs/db/dec/audio__timestamp__helper_8cc_source.html @@ -165,7 +165,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/df2/classedash__packager_1_1media_1_1mp2t_1_1EsParser.html b/docs/db/df2/classedash__packager_1_1media_1_1mp2t_1_1EsParser.html index 334d2cfbc9..01956a8266 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 d92623d42f..fac1202320 100644 --- a/docs/db/df6/muxer_8h_source.html +++ b/docs/db/df6/muxer_8h_source.html @@ -103,112 +103,116 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
14 #include "packager/base/memory/ref_counted.h"
15 #include "packager/base/memory/scoped_ptr.h"
16 #include "packager/base/time/clock.h"
-
17 #include "packager/media/base/muxer_options.h"
-
18 #include "packager/media/base/status.h"
-
19 #include "packager/media/event/muxer_listener.h"
-
20 #include "packager/media/event/progress_listener.h"
-
21 
-
22 namespace edash_packager {
-
23 namespace media {
-
24 
-
25 class KeySource;
-
26 class MediaSample;
-
27 class MediaStream;
-
28 
-
32 class Muxer {
-
33  public:
-
34  explicit Muxer(const MuxerOptions& options);
-
35  virtual ~Muxer();
-
36 
-
47  void SetKeySource(KeySource* encryption_key_source,
-
48  uint32_t max_sd_pixels,
-
49  double clear_lead_in_seconds,
-
50  double crypto_period_duration_in_seconds);
-
51 
-
53  void AddStream(MediaStream* stream);
-
54 
-
56  Status Run();
-
57 
-
60  void Cancel();
-
61 
-
64  void SetMuxerListener(scoped_ptr<MuxerListener> muxer_listener);
-
65 
-
68  void SetProgressListener(scoped_ptr<ProgressListener> progress_listener);
-
69 
-
70  const std::vector<MediaStream*>& streams() const { return streams_; }
+
17 #include "packager/media/base/encryption_modes.h"
+
18 #include "packager/media/base/muxer_options.h"
+
19 #include "packager/media/base/status.h"
+
20 #include "packager/media/event/muxer_listener.h"
+
21 #include "packager/media/event/progress_listener.h"
+
22 
+
23 namespace edash_packager {
+
24 namespace media {
+
25 
+
26 class KeySource;
+
27 class MediaSample;
+
28 class MediaStream;
+
29 
+
33 class Muxer {
+
34  public:
+
35  explicit Muxer(const MuxerOptions& options);
+
36  virtual ~Muxer();
+
37 
+
48  void SetKeySource(KeySource* encryption_key_source,
+
49  uint32_t max_sd_pixels,
+
50  double clear_lead_in_seconds,
+
51  double crypto_period_duration_in_seconds,
+
52  EncryptionMode encryption_mode);
+
53 
+
55  void AddStream(MediaStream* stream);
+
56 
+
58  Status Run();
+
59 
+
62  void Cancel();
+
63 
+
66  void SetMuxerListener(scoped_ptr<MuxerListener> muxer_listener);
+
67 
+
70  void SetProgressListener(scoped_ptr<ProgressListener> progress_listener);
71 
-
78  void set_clock(base::Clock* clock) {
-
79  clock_ = clock;
-
80  }
-
81 
-
82  protected:
-
83  const MuxerOptions& options() const { return options_; }
-
84  KeySource* encryption_key_source() {
-
85  return encryption_key_source_;
-
86  }
-
87  uint32_t max_sd_pixels() const { return max_sd_pixels_; }
-
88  double clear_lead_in_seconds() const { return clear_lead_in_seconds_; }
-
89  double crypto_period_duration_in_seconds() const {
-
90  return crypto_period_duration_in_seconds_;
-
91  }
-
92  MuxerListener* muxer_listener() { return muxer_listener_.get(); }
-
93  ProgressListener* progress_listener() { return progress_listener_.get(); }
-
94  base::Clock* clock() { return clock_; }
-
95 
-
96  private:
-
97  friend class MediaStream; // Needed to access AddSample.
+
72  const std::vector<MediaStream*>& streams() const { return streams_; }
+
73 
+
80  void set_clock(base::Clock* clock) {
+
81  clock_ = clock;
+
82  }
+
83 
+
84  protected:
+
85  const MuxerOptions& options() const { return options_; }
+
86  KeySource* encryption_key_source() {
+
87  return encryption_key_source_;
+
88  }
+
89  uint32_t max_sd_pixels() const { return max_sd_pixels_; }
+
90  double clear_lead_in_seconds() const { return clear_lead_in_seconds_; }
+
91  double crypto_period_duration_in_seconds() const {
+
92  return crypto_period_duration_in_seconds_;
+
93  }
+
94  MuxerListener* muxer_listener() { return muxer_listener_.get(); }
+
95  ProgressListener* progress_listener() { return progress_listener_.get(); }
+
96  base::Clock* clock() { return clock_; }
+
97  EncryptionMode encryption_mode() const { return encryption_mode_; }
98 
-
99  // Add new media sample.
-
100  Status AddSample(const MediaStream* stream,
-
101  scoped_refptr<MediaSample> sample);
-
102 
-
103  // Initialize the muxer.
-
104  virtual Status Initialize() = 0;
+
99  private:
+
100  friend class MediaStream; // Needed to access AddSample.
+
101 
+
102  // Add new media sample.
+
103  Status AddSample(const MediaStream* stream,
+
104  scoped_refptr<MediaSample> sample);
105 
-
106  // Final clean up.
-
107  virtual Status Finalize() = 0;
+
106  // Initialize the muxer.
+
107  virtual Status Initialize() = 0;
108 
-
109  // AddSample implementation.
-
110  virtual Status DoAddSample(const MediaStream* stream,
-
111  scoped_refptr<MediaSample> sample) = 0;
-
112 
-
113  MuxerOptions options_;
-
114  bool initialized_;
-
115  std::vector<MediaStream*> streams_;
-
116  KeySource* encryption_key_source_;
-
117  uint32_t max_sd_pixels_;
-
118  double clear_lead_in_seconds_;
-
119  double crypto_period_duration_in_seconds_;
-
120  bool cancelled_;
-
121 
-
122  scoped_ptr<MuxerListener> muxer_listener_;
-
123  scoped_ptr<ProgressListener> progress_listener_;
-
124  // An external injected clock, can be NULL.
-
125  base::Clock* clock_;
-
126 
-
127  DISALLOW_COPY_AND_ASSIGN(Muxer);
-
128 };
-
129 
-
130 } // namespace media
-
131 } // namespace edash_packager
-
132 
-
133 #endif // MEDIA_BASE_MUXER_H_
-
void SetMuxerListener(scoped_ptr< MuxerListener > muxer_listener)
Definition: muxer.cc:82
+
109  // Final clean up.
+
110  virtual Status Finalize() = 0;
+
111 
+
112  // AddSample implementation.
+
113  virtual Status DoAddSample(const MediaStream* stream,
+
114  scoped_refptr<MediaSample> sample) = 0;
+
115 
+
116  MuxerOptions options_;
+
117  bool initialized_;
+
118  std::vector<MediaStream*> streams_;
+
119  KeySource* encryption_key_source_;
+
120  uint32_t max_sd_pixels_;
+
121  double clear_lead_in_seconds_;
+
122  double crypto_period_duration_in_seconds_;
+
123  EncryptionMode encryption_mode_;
+
124  bool cancelled_;
+
125 
+
126  scoped_ptr<MuxerListener> muxer_listener_;
+
127  scoped_ptr<ProgressListener> progress_listener_;
+
128  // An external injected clock, can be NULL.
+
129  base::Clock* clock_;
+
130 
+
131  DISALLOW_COPY_AND_ASSIGN(Muxer);
+
132 };
+
133 
+
134 } // namespace media
+
135 } // namespace edash_packager
+
136 
+
137 #endif // MEDIA_BASE_MUXER_H_
+
void SetMuxerListener(scoped_ptr< MuxerListener > muxer_listener)
Definition: muxer.cc:85
-
void set_clock(base::Clock *clock)
Definition: muxer.h:78
-
void SetProgressListener(scoped_ptr< ProgressListener > progress_listener)
Definition: muxer.cc:86
+
void set_clock(base::Clock *clock)
Definition: muxer.h:80
+
void SetProgressListener(scoped_ptr< ProgressListener > progress_listener)
Definition: muxer.cc:89
+
void SetKeySource(KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, EncryptionMode encryption_mode)
Definition: muxer.cc:28
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:35
-
Status Run()
Drive the remuxing from muxer side (pull).
Definition: muxer.cc:44
-
void AddStream(MediaStream *stream)
Add video/audio stream.
Definition: muxer.cc:38
- - +
Status Run()
Drive the remuxing from muxer side (pull).
Definition: muxer.cc:47
+
void AddStream(MediaStream *stream)
Add video/audio stream.
Definition: muxer.cc:41
+ +
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
-
void SetKeySource(KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds)
Definition: muxer.cc:27
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 e6f470262e..b615964914 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 fb52b34951..42fb7b4368 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 @@ -191,7 +191,7 @@ Additional Inherited Members diff --git a/docs/db/dfb/mpd__utils_8cc_source.html b/docs/db/dfb/mpd__utils_8cc_source.html index 637aa802bb..71e54d1c28 100644 --- a/docs/db/dfb/mpd__utils_8cc_source.html +++ b/docs/db/dfb/mpd__utils_8cc_source.html @@ -443,7 +443,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/dfc/mpd__notify__muxer__listener_8cc_source.html b/docs/db/dfc/mpd__notify__muxer__listener_8cc_source.html index 1c566c87ec..ec5e7bdb5d 100644 --- a/docs/db/dfc/mpd__notify__muxer__listener_8cc_source.html +++ b/docs/db/dfc/mpd__notify__muxer__listener_8cc_source.html @@ -259,7 +259,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 1215c8dd97..f738358d46 100644 --- a/docs/db/dfe/classedash__packager_1_1media_1_1AesCbcPkcs5Decryptor.html +++ b/docs/db/dfe/classedash__packager_1_1media_1_1AesCbcPkcs5Decryptor.html @@ -87,105 +87,63 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
edash_packager::media::AesCbcPkcs5Decryptor Class Reference
+
+Inheritance diagram for edash_packager::media::AesCbcPkcs5Decryptor:
+
+
+ + +edash_packager::media::AesDecryptor + +
- - - - - - - + + + + + + + + + + + + - + +

Public Member Functions

bool InitializeWithIv (const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv)
 
bool Decrypt (const std::string &ciphertext, std::string *plaintext)
 
bool SetIv (const std::vector< uint8_t > &iv)
 
+
AesDecryptor implementation overrides.
+bool InitializeWithIv (const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv) override
 
+bool Decrypt (const uint8_t *ciphertext, size_t ciphertext_size, uint8_t *plaintext) override
 
+bool Decrypt (const std::vector< uint8_t > &ciphertext, std::vector< uint8_t > *plaintext) override
 
+bool Decrypt (const std::string &ciphertext, std::string *plaintext) override
 
bool SetIv (const std::vector< uint8_t > &iv) override
 
- Public Member Functions inherited from edash_packager::media::AesDecryptor
const std::vector< uint8_t > & iv () const
 
 
+ + + + + +

+Additional Inherited Members

- Protected Attributes inherited from edash_packager::media::AesDecryptor
+std::vector< uint8_t > iv_
 
+scoped_ptr< AES_KEY > aes_key_
 

Detailed Description

-

Definition at line 147 of file aes_encryptor.h.

+

Definition at line 96 of file aes_decryptor.h.

Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
bool edash_packager::media::AesCbcPkcs5Decryptor::Decrypt (const std::string & ciphertext,
std::string * plaintext 
)
-
-
Parameters
- - - -
ciphertextis expected to be padded with PKCS5 padding.
plaintextshould not be NULL.
-
-
-
Returns
true on success, false otherwise.
- -

Definition at line 218 of file aes_encryptor.cc.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool edash_packager::media::AesCbcPkcs5Decryptor::InitializeWithIv (const std::vector< uint8_t > & key,
const std::vector< uint8_t > & iv 
)
-
-

Initialize the decryptor with specified key and IV.

-
Parameters
- - - -
keyshould be 128 bits or 192 bits or 256 bits in size as defined in AES spec.
ivshould be 16 bytes in size.
-
-
-
Returns
true on successful initialization, false otherwise.
- -

Definition at line 200 of file aes_encryptor.cc.

- -
-
- +
+ + + + + +
@@ -195,21 +153,29 @@ const std::vector< uint8_t > & 
bool edash_packager::media::AesCbcPkcs5Decryptor::SetIv
+
+overridevirtual
+

Set IV. block_offset_ is reset to 0 on success.

Returns
true if successful, false if the input is invalid.
-

Definition at line 248 of file aes_encryptor.cc.

+

Implements edash_packager::media::AesDecryptor.

+ +

Definition at line 129 of file aes_decryptor.cc.


The documentation for this class was generated from the following files:
diff --git a/docs/db/dfe/classedash__packager_1_1media_1_1AesCbcPkcs5Decryptor.png b/docs/db/dfe/classedash__packager_1_1media_1_1AesCbcPkcs5Decryptor.png new file mode 100644 index 0000000000..28d2415138 Binary files /dev/null and b/docs/db/dfe/classedash__packager_1_1media_1_1AesCbcPkcs5Decryptor.png differ 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 56c5d9f6b0..5cc6e795b1 100644 --- a/docs/dc/d05/classedash__packager_1_1xml_1_1RepresentationXmlNode.html +++ b/docs/dc/d05/classedash__packager_1_1xml_1_1RepresentationXmlNode.html @@ -311,7 +311,7 @@ Additional Inherited Members diff --git a/docs/dc/d0c/classedash__packager_1_1media_1_1WebMVideoClient.html b/docs/dc/d0c/classedash__packager_1_1media_1_1WebMVideoClient.html index 640c867a76..9c1499c0e7 100644 --- a/docs/dc/d0c/classedash__packager_1_1media_1_1WebMVideoClient.html +++ b/docs/dc/d0c/classedash__packager_1_1media_1_1WebMVideoClient.html @@ -190,7 +190,7 @@ An empty scoped_refptr if there was unexpected values in the provided parameters diff --git a/docs/dc/d0d/structedash__packager_1_1media_1_1mp4_1_1EditListEntry.html b/docs/dc/d0d/structedash__packager_1_1media_1_1mp4_1_1EditListEntry.html index 05a767353f..908be7ef21 100644 --- a/docs/dc/d0d/structedash__packager_1_1media_1_1mp4_1_1EditListEntry.html +++ b/docs/dc/d0d/structedash__packager_1_1media_1_1mp4_1_1EditListEntry.html @@ -118,7 +118,7 @@ int16_t media_rate_fractio diff --git a/docs/dc/d19/box_8h_source.html b/docs/dc/d19/box_8h_source.html index fa2c6ac69c..5fdfcca026 100644 --- a/docs/dc/d19/box_8h_source.html +++ b/docs/dc/d19/box_8h_source.html @@ -184,7 +184,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d22/dash__iop__mpd__notifier_8cc_source.html b/docs/dc/d22/dash__iop__mpd__notifier_8cc_source.html index c55b905b65..2cd57a9a4c 100644 --- a/docs/dc/d22/dash__iop__mpd__notifier_8cc_source.html +++ b/docs/dc/d22/dash__iop__mpd__notifier_8cc_source.html @@ -397,7 +397,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d23/classedash__packager_1_1MockMpdNotifier-members.html b/docs/dc/d23/classedash__packager_1_1MockMpdNotifier-members.html index e43dd2da3b..851ff5fc54 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 a2148769ec..5343ca4199 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 @@ -115,7 +115,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 39220bc330..c0dfaa408a 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 1772b67e46..df2cfcda85 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 e6d78cb934..fa42455e3b 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 d14b3faba4..fd89d0416b 100644 --- a/docs/dc/d3c/webm__cluster__parser_8h_source.html +++ b/docs/dc/d3c/webm__cluster__parser_8h_source.html @@ -298,7 +298,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d3f/key__source_8h_source.html b/docs/dc/d3f/key__source_8h_source.html index fcc2844964..38e7c80a13 100644 --- a/docs/dc/d3f/key__source_8h_source.html +++ b/docs/dc/d3f/key__source_8h_source.html @@ -187,7 +187,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 059a9c637b..7001a18894 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 be2c02f3a8..7ed5e32bb8 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 b2e1f32f21..6d6b54d42d 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 494fc15471..aa83e4923f 100644 --- a/docs/dc/d48/classedash__packager_1_1media_1_1MediaParser.html +++ b/docs/dc/d48/classedash__packager_1_1media_1_1MediaParser.html @@ -298,7 +298,7 @@ Public Member Functions diff --git a/docs/dc/d4a/structedash__packager_1_1media_1_1mp4_1_1WebVTTConfigurationBox-members.html b/docs/dc/d4a/structedash__packager_1_1media_1_1mp4_1_1WebVTTConfigurationBox-members.html index fec91ddb7e..c008861f0e 100644 --- a/docs/dc/d4a/structedash__packager_1_1media_1_1mp4_1_1WebVTTConfigurationBox-members.html +++ b/docs/dc/d4a/structedash__packager_1_1media_1_1mp4_1_1WebVTTConfigurationBox-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d52/decoding__time__iterator_8h_source.html b/docs/dc/d52/decoding__time__iterator_8h_source.html index 8f95ad541c..5ce81410bc 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 0c8a03b4b0..b21f94a292 100644 --- a/docs/dc/d53/webm_2segmenter_8cc_source.html +++ b/docs/dc/d53/webm_2segmenter_8cc_source.html @@ -132,7 +132,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
43 
44 Segmenter::~Segmenter() {}
45 
-
46 Status Segmenter::Initialize(scoped_ptr<MkvWriter> writer,
+
46 Status Segmenter::Initialize(scoped_ptr<MkvWriter> writer,
47  StreamInfo* info,
48  ProgressListener* progress_listener,
49  MuxerListener* muxer_listener,
@@ -515,18 +515,18 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
Abstract class holds stream information.
Definition: stream_info.h:26
- - + +
std::string packager_version_string
Specify the version string to be embedded in the output files.
Definition: muxer_options.h:71
This class listens to progress updates events.
-
Status AddSample(const MediaStream *stream, scoped_refptr< MediaSample > sample)
Definition: segmenter.cc:258
+
Status AddSample(const MediaStream *stream, scoped_refptr< MediaSample > sample)
Definition: segmenter.cc:268
+
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, EncryptionMode encryption_mode)
Definition: segmenter.cc:133
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:35
virtual void OnProgress(double progress)=0
-
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:325
-
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:124
+
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:335
Holds video stream information.
virtual void OnSampleDurationReady(uint32_t sample_duration)=0
@@ -534,7 +534,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d55/structedash__packager_1_1media_1_1H264SEIMessage-members.html b/docs/dc/d55/structedash__packager_1_1media_1_1H264SEIMessage-members.html index 3c75db372a..824e0c4b35 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 46b8cfd5b3..397e74ad04 100644 --- a/docs/dc/d58/webm__media__parser_8h_source.html +++ b/docs/dc/d58/webm__media__parser_8h_source.html @@ -179,7 +179,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d73/classedash__packager_1_1media_1_1RequestSigner.html b/docs/dc/d73/classedash__packager_1_1media_1_1RequestSigner.html index c30fb123e4..9da85d8113 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 a43d1d27ee..97dff7f609 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 @@ -119,8 +119,8 @@ Public Member Functions  Segmenter (const MuxerOptions &options, scoped_ptr< FileType > ftyp, scoped_ptr< Movie > moov)   -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) -  +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, EncryptionMode encryption_mode) +  Status Finalize ()   Status AddSample (const MediaStream *stream, scoped_refptr< MediaSample > sample) @@ -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 5f2f76da22..84d5f46d79 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 8ca95943e6..db2f3244e8 100644 --- a/docs/dc/d7b/h264__parser_8cc_source.html +++ b/docs/dc/d7b/h264__parser_8cc_source.html @@ -1267,7 +1267,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d81/classedash__packager_1_1MpdWriter.html b/docs/dc/d81/classedash__packager_1_1MpdWriter.html index 668dd46530..23125a48ac 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 a98707ef66..7667e6691c 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: - - + + - - + + @@ -162,9 +162,9 @@ void  - - + + @@ -179,9 +179,9 @@ void 

Public Member Functions

 KeyRotationFragmenter (MovieFragment *moof, scoped_refptr< StreamInfo > info, TrackFragment *traf, KeySource *encryption_key_source, KeySource::TrackType track_type, int64_t crypto_period_duration, int64_t clear_time, MuxerListener *muxer_listener)
 
 KeyRotationFragmenter (MovieFragment *moof, scoped_refptr< StreamInfo > info, TrackFragment *traf, KeySource *encryption_key_source, KeySource::TrackType track_type, int64_t crypto_period_duration, int64_t clear_time, MuxerListener *muxer_listener, EncryptionMode encryption_mode)
 
- Public Member Functions inherited from edash_packager::media::mp4::EncryptingFragmenter
 EncryptingFragmenter (scoped_refptr< StreamInfo > info, TrackFragment *traf, scoped_ptr< EncryptionKey > encryption_key, int64_t clear_time)
 
 EncryptingFragmenter (scoped_refptr< StreamInfo > info, TrackFragment *traf, scoped_ptr< EncryptionKey > encryption_key, int64_t clear_time, EncryptionMode encryption_mode)
 
Status AddSample (scoped_refptr< MediaSample > sample) override
 
Status InitializeFragment (int64_t first_sample_dts) override
EncryptionKeyencryption_key ()
 
-AesCtrEncryptorencryptor ()
 
+AesEncryptorencryptor ()
 
void set_encryption_key (scoped_ptr< EncryptionKey > encryption_key)
 
set_encryption_key

Detailed Description

KeyRotationFragmenter generates MP4 fragments with sample encrypted by rotation keys.

-

Definition at line 22 of file key_rotation_fragmenter.h.

+

Definition at line 23 of file key_rotation_fragmenter.h.

Constructor & Destructor Documentation

- +
@@ -231,7 +231,13 @@ void  - + + + + + + + @@ -284,7 +290,7 @@ void  diff --git a/docs/dc/dbf/box__buffer_8h_source.html b/docs/dc/dbf/box__buffer_8h_source.html index 1a5f76423a..8a4bf8f670 100644 --- a/docs/dc/dbf/box__buffer_8h_source.html +++ b/docs/dc/dbf/box__buffer_8h_source.html @@ -294,7 +294,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/dc6/classedash__packager_1_1media_1_1mp4_1_1AACAudioSpecificConfig.html b/docs/dc/dc6/classedash__packager_1_1media_1_1mp4_1_1AACAudioSpecificConfig.html index df42391d7f..66834babfc 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 
set_encryption_key MuxerListenermuxer_listener muxer_listener,
EncryptionMode encryption_mode 
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.

@@ -295,7 +301,7 @@ void 
set_encryption_key diff --git a/docs/dc/d92/classedash__packager_1_1media_1_1AesEncryptor.html b/docs/dc/d92/classedash__packager_1_1media_1_1AesEncryptor.html new file mode 100644 index 0000000000..968cb4ba95 --- /dev/null +++ b/docs/dc/d92/classedash__packager_1_1media_1_1AesEncryptor.html @@ -0,0 +1,293 @@ + + + + + + +DASH Media Packaging SDK: edash_packager::media::AesEncryptor Class Reference + + + + + + + + + +
+
+ + + + + + +
+
DASH Media Packaging SDK +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
edash_packager::media::AesEncryptor Class Referenceabstract
+
+
+
+Inheritance diagram for edash_packager::media::AesEncryptor:
+
+
+ + +edash_packager::media::AesCbcCtsEncryptor +edash_packager::media::AesCbcPkcs5Encryptor +edash_packager::media::AesCtrEncryptor + +
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual bool InitializeWithRandomIv (const std::vector< uint8_t > &key, uint8_t iv_size)
 
virtual bool InitializeWithIv (const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv)=0
 
+virtual size_t NumPaddingBytes (size_t size)=0
 
virtual void UpdateIv ()=0
 
virtual bool SetIv (const std::vector< uint8_t > &iv)=0
 
+const std::vector< uint8_t > & iv () const
 
Various forms of encrypt and decrypt calls.

The plaintext and ciphertext pointers can be the same address.

+
+virtual bool EncryptData (const uint8_t *plaintext, size_t plaintext_size, uint8_t *ciphertext)=0
 
+bool Encrypt (const std::vector< uint8_t > &plaintext, std::vector< uint8_t > *ciphertext)
 
+bool Encrypt (const std::string &plaintext, std::string *ciphertext)
 
+ + + + + +

+Protected Attributes

+std::vector< uint8_t > iv_
 
+scoped_ptr< AES_KEY > aes_key_
 
+

Detailed Description

+
+

Definition at line 24 of file aes_encryptor.h.

+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool edash_packager::media::AesEncryptor::InitializeWithIv (const std::vector< uint8_t > & key,
const std::vector< uint8_t > & iv 
)
+
+pure virtual
+
+

Initialize the encryptor with specified key and IV.

+
Returns
true on successful initialization, false otherwise.
+ +

Implemented in edash_packager::media::AesCbcCtsEncryptor, edash_packager::media::AesCbcPkcs5Encryptor, and edash_packager::media::AesCtrEncryptor.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool edash_packager::media::AesEncryptor::InitializeWithRandomIv (const std::vector< uint8_t > & key,
uint8_t iv_size 
)
+
+virtual
+
+

Initialize the encryptor with specified key and a random generated IV of the specified size.

+
Returns
true on successful initialization, false otherwise.
+ +

Definition at line 46 of file aes_encryptor.cc.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool edash_packager::media::AesEncryptor::SetIv (const std::vector< uint8_t > & iv)
+
+pure virtual
+
+

Set IV.

+
Returns
true if successful, false if the input is invalid.
+ +

Implemented in edash_packager::media::AesCbcCtsEncryptor, edash_packager::media::AesCbcPkcs5Encryptor, and edash_packager::media::AesCtrEncryptor.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
virtual void edash_packager::media::AesEncryptor::UpdateIv ()
+
+pure virtual
+
+

Update IV for next sample. As recommended in ISO/IEC FDIS 23001-7: IV need to be updated per sample for CENC. IV need not be unique per sample for CBC mode.

+ +

Implemented in edash_packager::media::AesCbcCtsEncryptor, edash_packager::media::AesCbcPkcs5Encryptor, and edash_packager::media::AesCtrEncryptor.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/docs/dc/d92/classedash__packager_1_1media_1_1AesEncryptor.png b/docs/dc/d92/classedash__packager_1_1media_1_1AesEncryptor.png new file mode 100644 index 0000000000..e2c1cf8b49 Binary files /dev/null and b/docs/dc/d92/classedash__packager_1_1media_1_1AesEncryptor.png differ 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 84a347f162..49ddb29d9f 100644 --- a/docs/dc/dab/classedash__packager_1_1media_1_1mp2t_1_1Mp2tMediaParser.html +++ b/docs/dc/dab/classedash__packager_1_1media_1_1mp2t_1_1Mp2tMediaParser.html @@ -256,7 +256,7 @@ track_id, const scoped_refptr
diff --git a/docs/dc/db7/structedash__packager_1_1media_1_1mp4_1_1DecodingTimeToSample.html b/docs/dc/db7/structedash__packager_1_1media_1_1mp4_1_1DecodingTimeToSample.html index fae9746048..a8ed6ed298 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 @@ -182,7 +182,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 ccb853edd9..e0d5c4d1d1 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 c532a848c0..0fc1f64ed0 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 92f44dddeb..c5aa220cc7 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 b036af87d7..0646c792c8 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 3bf8b75d13..103791638a 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 17e5ddbd5f..3302754006 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 @@ -112,8 +112,8 @@ Public Member Functions  Segmenter (const MuxerOptions &options, scoped_ptr< FileType > ftyp, scoped_ptr< Movie > moov)   -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) -  +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, EncryptionMode encryption_mode) +  Status Finalize ()   Status AddSample (const MediaStream *stream, scoped_refptr< MediaSample > sample) @@ -168,7 +168,7 @@ void set_progress_target

Detailed Description

This class defines the Segmenter which is responsible for organizing fragments into segments/subsegments and package them into a MP4 file. Inherited by MultiSegmentSegmenter and SingleSegmentSegmenter. SingleSegmentSegmenter defines the Segmenter for DASH Video-On-Demand with a single segment for each media presentation while MultiSegmentSegmenter handles all other cases including DASH live profile.

-

Definition at line 40 of file segmenter.h.

+

Definition at line 41 of file segmenter.h.

Member Function Documentation

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

Definition at line 258 of file segmenter.cc.

+

Definition at line 268 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 232 of file segmenter.cc.

+

Definition at line 242 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 316 of file segmenter.cc.

+

Definition at line 326 of file segmenter.cc.

@@ -318,7 +318,7 @@ void set_progress_target - +
@@ -362,7 +362,13 @@ void  - + + + + + + + @@ -386,7 +392,7 @@ void 
set_progress_target double crypto_period_duration_in_seconds crypto_period_duration_in_seconds,
EncryptionMode encryption_mode 
set_progress_target
Returns
OK on success, an error status otherwise.
-

Definition at line 124 of file segmenter.cc.

+

Definition at line 133 of file segmenter.cc.

@@ -412,7 +418,7 @@ void 
set_progress_target
Returns
The sample duration in the timescale of the media. Returns 0 if no samples are added yet.
-

Definition at line 97 of file segmenter.h.

+

Definition at line 99 of file segmenter.h.

@@ -423,7 +429,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 ac53b738d5..4da0c849d0 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 f000d529a3..a23d37d8dd 100644 --- a/docs/dc/def/structedash__packager_1_1media_1_1mp4_1_1DataInformation-members.html +++ b/docs/dc/def/structedash__packager_1_1media_1_1mp4_1_1DataInformation-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
diff --git a/docs/dc/df1/classedash__packager_1_1media_1_1DecryptorSource.html b/docs/dc/df1/classedash__packager_1_1media_1_1DecryptorSource.html index 060ef0bfb8..f94dd24434 100644 --- a/docs/dc/df1/classedash__packager_1_1media_1_1DecryptorSource.html +++ b/docs/dc/df1/classedash__packager_1_1media_1_1DecryptorSource.html @@ -119,7 +119,7 @@ bool DecryptSampleBuffer diff --git a/docs/dc/df8/closure__thread_8h_source.html b/docs/dc/df8/closure__thread_8h_source.html index 9ef4ed5515..e8fb231b6a 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 c2aff13511..b756976dbe 100644 --- a/docs/dc/dfa/classedash__packager_1_1media_1_1ThreadedIoFile.html +++ b/docs/dc/dfa/classedash__packager_1_1media_1_1ThreadedIoFile.html @@ -438,7 +438,7 @@ Additional Inherited Members diff --git a/docs/dc/dfc/classedash__packager_1_1media_1_1Muxer-members.html b/docs/dc/dfc/classedash__packager_1_1media_1_1Muxer-members.html index 30fbc79f1a..853626d87a 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 @@ -99,23 +99,24 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); clock() (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinlineprotected crypto_period_duration_in_seconds() const (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinlineprotected encryption_key_source() (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinlineprotected - max_sd_pixels() const (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinlineprotected - MediaStream (defined in edash_packager::media::Muxer)edash_packager::media::Muxerfriend - Muxer(const MuxerOptions &options) (defined in edash_packager::media::Muxer)edash_packager::media::Muxerexplicit - muxer_listener() (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinlineprotected - options() const (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinlineprotected - progress_listener() (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinlineprotected - Run()edash_packager::media::Muxer - set_clock(base::Clock *clock)edash_packager::media::Muxerinline - SetKeySource(KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds)edash_packager::media::Muxer - SetMuxerListener(scoped_ptr< MuxerListener > muxer_listener)edash_packager::media::Muxer - SetProgressListener(scoped_ptr< ProgressListener > progress_listener)edash_packager::media::Muxer - streams() const (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinline - ~Muxer() (defined in edash_packager::media::Muxer)edash_packager::media::Muxervirtual + encryption_mode() const (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinlineprotected + max_sd_pixels() const (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinlineprotected + MediaStream (defined in edash_packager::media::Muxer)edash_packager::media::Muxerfriend + Muxer(const MuxerOptions &options) (defined in edash_packager::media::Muxer)edash_packager::media::Muxerexplicit + muxer_listener() (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinlineprotected + options() const (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinlineprotected + progress_listener() (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinlineprotected + Run()edash_packager::media::Muxer + set_clock(base::Clock *clock)edash_packager::media::Muxerinline + SetKeySource(KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, EncryptionMode encryption_mode)edash_packager::media::Muxer + SetMuxerListener(scoped_ptr< MuxerListener > muxer_listener)edash_packager::media::Muxer + SetProgressListener(scoped_ptr< ProgressListener > progress_listener)edash_packager::media::Muxer + streams() const (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinline + ~Muxer() (defined in edash_packager::media::Muxer)edash_packager::media::Muxervirtual diff --git a/docs/dd/d0c/classedash__packager_1_1media_1_1SegmentTestBase_1_1ClusterParser-members.html b/docs/dd/d0c/classedash__packager_1_1media_1_1SegmentTestBase_1_1ClusterParser-members.html index a01278e25d..13eddc6756 100644 --- a/docs/dd/d0c/classedash__packager_1_1media_1_1SegmentTestBase_1_1ClusterParser-members.html +++ b/docs/dd/d0c/classedash__packager_1_1media_1_1SegmentTestBase_1_1ClusterParser-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d0e/classedash__packager_1_1media_1_1mp2t_1_1EsParserH264.html b/docs/dd/d0e/classedash__packager_1_1media_1_1mp2t_1_1EsParserH264.html index aa077ae5e1..63eefa1519 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 6babfd73cc..4c075feda3 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 83dba016c6..950cdac248 100644 --- a/docs/dd/d11/mpd__builder_8cc_source.html +++ b/docs/dd/d11/mpd__builder_8cc_source.html @@ -1503,7 +1503,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d12/mpd__writer_8cc_source.html b/docs/dd/d12/mpd__writer_8cc_source.html index 2663119b08..f662b8ae1d 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 9f1ae153b2..d9750a2b9e 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 @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/dd/d14/structedash__packager_1_1media_1_1mp4_1_1MovieHeader.html b/docs/dd/d14/structedash__packager_1_1media_1_1mp4_1_1MovieHeader.html index d605c538fa..1c00fb0f83 100644 --- a/docs/dd/d14/structedash__packager_1_1media_1_1mp4_1_1MovieHeader.html +++ b/docs/dd/d14/structedash__packager_1_1media_1_1mp4_1_1MovieHeader.html @@ -200,7 +200,7 @@ Additional Inherited Members diff --git a/docs/dd/d15/structedash__packager_1_1media_1_1mp4_1_1TrackHeader.html b/docs/dd/d15/structedash__packager_1_1media_1_1mp4_1_1TrackHeader.html index 3164316abf..4c39fec626 100644 --- a/docs/dd/d15/structedash__packager_1_1media_1_1mp4_1_1TrackHeader.html +++ b/docs/dd/d15/structedash__packager_1_1media_1_1mp4_1_1TrackHeader.html @@ -215,7 +215,7 @@ Additional Inherited Members diff --git a/docs/dd/d18/es__parser__adts_8h_source.html b/docs/dd/d18/es__parser__adts_8h_source.html index b5daf7f15b..a56ab50f5d 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 3f23bbdd04..42eb0990fa 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 669606509b..051edb8631 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 69d60e0745..d3af6ff701 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 48f611baab..ceccd57f01 100644 --- a/docs/dd/d30/wvm__media__parser_8cc_source.html +++ b/docs/dd/d30/wvm__media__parser_8cc_source.html @@ -98,7 +98,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
9 #include <vector>
10 
11 #include "packager/base/strings/string_number_conversions.h"
-
12 #include "packager/media/base/aes_encryptor.h"
+
12 #include "packager/media/base/aes_decryptor.h"
13 #include "packager/media/base/audio_stream_info.h"
14 #include "packager/media/base/key_source.h"
15 #include "packager/media/base/media_sample.h"
@@ -1260,7 +1260,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d36/classedash__packager_1_1media_1_1MediaSample-members.html b/docs/dd/d36/classedash__packager_1_1media_1_1MediaSample-members.html index da1466deb1..b0fe90ce68 100644 --- a/docs/dd/d36/classedash__packager_1_1media_1_1MediaSample-members.html +++ b/docs/dd/d36/classedash__packager_1_1media_1_1MediaSample-members.html @@ -123,7 +123,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d3b/mp4_2segmenter_8h_source.html b/docs/dd/d3b/mp4_2segmenter_8h_source.html index 198a8de498..501b58dd9b 100644 --- a/docs/dd/d3b/mp4_2segmenter_8h_source.html +++ b/docs/dd/d3b/mp4_2segmenter_8h_source.html @@ -101,125 +101,127 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
12 
13 #include "packager/base/memory/ref_counted.h"
14 #include "packager/base/memory/scoped_ptr.h"
-
15 #include "packager/media/base/status.h"
-
16 #include "packager/media/formats/mp4/box_definitions.h"
-
17 
-
18 namespace edash_packager {
-
19 namespace media {
-
20 
-
21 struct MuxerOptions;
-
22 
-
23 class BufferWriter;
-
24 class KeySource;
-
25 class MediaSample;
-
26 class MediaStream;
-
27 class MuxerListener;
-
28 class ProgressListener;
-
29 
-
30 namespace mp4 {
-
31 
-
32 class Fragmenter;
-
33 
-
40 class Segmenter {
-
41  public:
-
42  Segmenter(const MuxerOptions& options,
-
43  scoped_ptr<FileType> ftyp,
-
44  scoped_ptr<Movie> moov);
-
45  virtual ~Segmenter();
-
46 
-
62  Status Initialize(const std::vector<MediaStream*>& streams,
-
63  MuxerListener* muxer_listener,
-
64  ProgressListener* progress_listener,
-
65  KeySource* encryption_key_source,
-
66  uint32_t max_sd_pixels,
-
67  double clear_lead_in_seconds,
-
68  double crypto_period_duration_in_seconds);
-
69 
-
72  Status Finalize();
-
73 
-
79  Status AddSample(const MediaStream* stream,
-
80  scoped_refptr<MediaSample> sample);
-
81 
-
84  virtual bool GetInitRange(size_t* offset, size_t* size) = 0;
-
85 
-
88  virtual bool GetIndexRange(size_t* offset, size_t* size) = 0;
-
89 
-
90  uint32_t GetReferenceTimeScale() const;
+
15 #include "packager/media/base/encryption_modes.h"
+
16 #include "packager/media/base/status.h"
+
17 #include "packager/media/formats/mp4/box_definitions.h"
+
18 
+
19 namespace edash_packager {
+
20 namespace media {
+
21 
+
22 struct MuxerOptions;
+
23 
+
24 class BufferWriter;
+
25 class KeySource;
+
26 class MediaSample;
+
27 class MediaStream;
+
28 class MuxerListener;
+
29 class ProgressListener;
+
30 
+
31 namespace mp4 {
+
32 
+
33 class Fragmenter;
+
34 
+
41 class Segmenter {
+
42  public:
+
43  Segmenter(const MuxerOptions& options,
+
44  scoped_ptr<FileType> ftyp,
+
45  scoped_ptr<Movie> moov);
+
46  virtual ~Segmenter();
+
47 
+
63  Status Initialize(const std::vector<MediaStream*>& streams,
+
64  MuxerListener* muxer_listener,
+
65  ProgressListener* progress_listener,
+
66  KeySource* encryption_key_source,
+
67  uint32_t max_sd_pixels,
+
68  double clear_lead_in_seconds,
+
69  double crypto_period_duration_in_seconds,
+
70  EncryptionMode encryption_mode);
+
71 
+
74  Status Finalize();
+
75 
+
81  Status AddSample(const MediaStream* stream,
+
82  scoped_refptr<MediaSample> sample);
+
83 
+
86  virtual bool GetInitRange(size_t* offset, size_t* size) = 0;
+
87 
+
90  virtual bool GetIndexRange(size_t* offset, size_t* size) = 0;
91 
-
93  double GetDuration() const;
-
94 
-
97  uint32_t sample_duration() const { return sample_duration_; }
-
98 
-
99  protected:
-
101  void UpdateProgress(uint64_t progress);
-
103  void SetComplete();
-
104 
-
105  const MuxerOptions& options() const { return options_; }
-
106  FileType* ftyp() { return ftyp_.get(); }
-
107  Movie* moov() { return moov_.get(); }
-
108  BufferWriter* fragment_buffer() { return fragment_buffer_.get(); }
-
109  SegmentIndex* sidx() { return sidx_.get(); }
-
110  MuxerListener* muxer_listener() { return muxer_listener_; }
-
111  uint64_t progress_target() { return progress_target_; }
-
112 
-
113  void set_progress_target(uint64_t progress_target) {
-
114  progress_target_ = progress_target;
-
115  }
-
116 
-
117  private:
-
118  virtual Status DoInitialize() = 0;
-
119  virtual Status DoFinalize() = 0;
-
120  virtual Status DoFinalizeSegment() = 0;
-
121 
-
122  Status FinalizeSegment();
-
123  uint32_t GetReferenceStreamId();
-
124 
-
125  Status FinalizeFragment(bool finalize_segment, Fragmenter* fragment);
+
92  uint32_t GetReferenceTimeScale() const;
+
93 
+
95  double GetDuration() const;
+
96 
+
99  uint32_t sample_duration() const { return sample_duration_; }
+
100 
+
101  protected:
+
103  void UpdateProgress(uint64_t progress);
+
105  void SetComplete();
+
106 
+
107  const MuxerOptions& options() const { return options_; }
+
108  FileType* ftyp() { return ftyp_.get(); }
+
109  Movie* moov() { return moov_.get(); }
+
110  BufferWriter* fragment_buffer() { return fragment_buffer_.get(); }
+
111  SegmentIndex* sidx() { return sidx_.get(); }
+
112  MuxerListener* muxer_listener() { return muxer_listener_; }
+
113  uint64_t progress_target() { return progress_target_; }
+
114 
+
115  void set_progress_target(uint64_t progress_target) {
+
116  progress_target_ = progress_target;
+
117  }
+
118 
+
119  private:
+
120  virtual Status DoInitialize() = 0;
+
121  virtual Status DoFinalize() = 0;
+
122  virtual Status DoFinalizeSegment() = 0;
+
123 
+
124  Status FinalizeSegment();
+
125  uint32_t GetReferenceStreamId();
126 
-
127  const MuxerOptions& options_;
-
128  scoped_ptr<FileType> ftyp_;
-
129  scoped_ptr<Movie> moov_;
-
130  scoped_ptr<MovieFragment> moof_;
-
131  scoped_ptr<BufferWriter> fragment_buffer_;
-
132  scoped_ptr<SegmentIndex> sidx_;
-
133  std::vector<Fragmenter*> fragmenters_;
-
134  std::vector<uint64_t> segment_durations_;
-
135  std::map<const MediaStream*, uint32_t> stream_map_;
-
136  bool end_of_segment_;
-
137  MuxerListener* muxer_listener_;
-
138  ProgressListener* progress_listener_;
-
139  uint64_t progress_target_;
-
140  uint64_t accumulated_progress_;
-
141  uint32_t sample_duration_;
-
142 
-
143  DISALLOW_COPY_AND_ASSIGN(Segmenter);
-
144 };
-
145 
-
146 } // namespace mp4
-
147 } // namespace media
-
148 } // namespace edash_packager
-
149 
-
150 #endif // MEDIA_FORMATS_MP4_SEGMENTER_H_
- - +
127  Status FinalizeFragment(bool finalize_segment, Fragmenter* fragment);
+
128 
+
129  const MuxerOptions& options_;
+
130  scoped_ptr<FileType> ftyp_;
+
131  scoped_ptr<Movie> moov_;
+
132  scoped_ptr<MovieFragment> moof_;
+
133  scoped_ptr<BufferWriter> fragment_buffer_;
+
134  scoped_ptr<SegmentIndex> sidx_;
+
135  std::vector<Fragmenter*> fragmenters_;
+
136  std::vector<uint64_t> segment_durations_;
+
137  std::map<const MediaStream*, uint32_t> stream_map_;
+
138  bool end_of_segment_;
+
139  MuxerListener* muxer_listener_;
+
140  ProgressListener* progress_listener_;
+
141  uint64_t progress_target_;
+
142  uint64_t accumulated_progress_;
+
143  uint32_t sample_duration_;
+
144 
+
145  DISALLOW_COPY_AND_ASSIGN(Segmenter);
+
146 };
+
147 
+
148 } // namespace mp4
+
149 } // namespace media
+
150 } // namespace edash_packager
+
151 
+
152 #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:258
- +
Status AddSample(const MediaStream *stream, scoped_refptr< MediaSample > sample)
Definition: segmenter.cc:268
+
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, EncryptionMode encryption_mode)
Definition: segmenter.cc:133
+
virtual bool GetInitRange(size_t *offset, size_t *size)=0
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:35
- -
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:325
-
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:124
+ +
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:335
virtual bool GetIndexRange(size_t *offset, size_t *size)=0
-
void SetComplete()
Set progress to 100%.
Definition: segmenter.cc:341
+
void SetComplete()
Set progress to 100%.
Definition: segmenter.cc:351
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
diff --git a/docs/dd/d42/encryptor_8h_source.html b/docs/dd/d42/encryptor_8h_source.html index 9d57c74cf1..67c998515a 100644 --- a/docs/dd/d42/encryptor_8h_source.html +++ b/docs/dd/d42/encryptor_8h_source.html @@ -151,7 +151,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d44/structedash__packager_1_1media_1_1mp4_1_1SegmentReference-members.html b/docs/dd/d44/structedash__packager_1_1media_1_1mp4_1_1SegmentReference-members.html index 3fb476ae00..7d1c0e66ab 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 e402618b5a..fca36b3c73 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 88b319ad4a..bb7f675296 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 1b40d94c73..8fb9dff0e9 100644 --- a/docs/dd/d4c/structedash__packager_1_1media_1_1mp4_1_1FullBox-members.html +++ b/docs/dd/d4c/structedash__packager_1_1media_1_1mp4_1_1FullBox-members.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d4f/classedash__packager_1_1media_1_1mp4_1_1BoxBuffer.html b/docs/dd/d4f/classedash__packager_1_1media_1_1mp4_1_1BoxBuffer.html index 1d091b588e..b25bf34b1a 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 9ca10dceb5..fbcb6388e1 100644 --- a/docs/dd/d54/widevine__encryption__flags_8h_source.html +++ b/docs/dd/d54/widevine__encryption__flags_8h_source.html @@ -111,19 +111,20 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
22 DECLARE_string(aes_signing_iv);
23 DECLARE_string(rsa_signing_key_path);
24 DECLARE_int32(crypto_period_duration);
-
25 
-
26 namespace edash_packager {
-
27 
- -
31 
-
32 } // namespace edash_packager
-
33 
-
34 #endif // APP_WIDEVINE_ENCRYPTION_FLAGS_H_
- +
25 DECLARE_string(protection_scheme);
+
26 
+
27 namespace edash_packager {
+
28 
+ +
32 
+
33 } // namespace edash_packager
+
34 
+
35 #endif // APP_WIDEVINE_ENCRYPTION_FLAGS_H_
+ 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 40ce5fd41e..d48365e929 100644 --- a/docs/dd/d5e/structedash__packager_1_1media_1_1mp4_1_1CuePayloadBox-members.html +++ b/docs/dd/d5e/structedash__packager_1_1media_1_1mp4_1_1CuePayloadBox-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d60/structedash__packager_1_1media_1_1mp4_1_1VTTEmptyCueBox-members.html b/docs/dd/d60/structedash__packager_1_1media_1_1mp4_1_1VTTEmptyCueBox-members.html index 5745258881..ee86e9a137 100644 --- a/docs/dd/d60/structedash__packager_1_1media_1_1mp4_1_1VTTEmptyCueBox-members.html +++ b/docs/dd/d60/structedash__packager_1_1media_1_1mp4_1_1VTTEmptyCueBox-members.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d65/vp8__parser_8h_source.html b/docs/dd/d65/vp8__parser_8h_source.html index b51a6a4b3a..e52840343f 100644 --- a/docs/dd/d65/vp8__parser_8h_source.html +++ b/docs/dd/d65/vp8__parser_8h_source.html @@ -136,7 +136,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d67/h264__byte__to__unit__stream__converter_8cc_source.html b/docs/dd/d67/h264__byte__to__unit__stream__converter_8cc_source.html index 5507677c99..ca217734ee 100644 --- a/docs/dd/d67/h264__byte__to__unit__stream__converter_8cc_source.html +++ b/docs/dd/d67/h264__byte__to__unit__stream__converter_8cc_source.html @@ -215,7 +215,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d79/classedash__packager_1_1media_1_1AesCtrEncryptor.html b/docs/dd/d79/classedash__packager_1_1media_1_1AesCtrEncryptor.html index 7f1544242b..18b891a48d 100644 --- a/docs/dd/d79/classedash__packager_1_1media_1_1AesCtrEncryptor.html +++ b/docs/dd/d79/classedash__packager_1_1media_1_1AesCtrEncryptor.html @@ -93,52 +93,76 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
edash_packager::media::AesCtrEncryptor Class Reference
+
+Inheritance diagram for edash_packager::media::AesCtrEncryptor:
+
+
+ + +edash_packager::media::AesEncryptor + +
- - - - - - - - - - - - - - - - - - + - - - + + + + + + + + + + + + + + + - - + - + +

Public Member Functions

bool InitializeWithRandomIv (const std::vector< uint8_t > &key, uint8_t iv_size)
 
bool InitializeWithIv (const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv)
 
-bool Decrypt (const uint8_t *ciphertext, size_t ciphertext_size, uint8_t *plaintext)
 
-bool Decrypt (const std::vector< uint8_t > &ciphertext, std::vector< uint8_t > *plaintext)
 
-bool Decrypt (const std::string &ciphertext, std::string *plaintext)
 
void UpdateIv ()
 
bool SetIv (const std::vector< uint8_t > &iv)
 
-const std::vector< uint8_t > & iv () const
 
uint32_t block_offset () const
 
Various forms of encrypt calls.

block_offset() will be updated according to input plaintext size. The plaintext and ciphertext pointers can be the same address.

+
AesEncryptor implementation overrides.
Parameters
+ + + +
keyshould be 16 bytes in size as specified in CENC spec.
iv_sizeshould be either 8 or 16 as specified in CENC spec.
+
+
+
Returns
true on successful initialization, false otherwise.
-bool Encrypt (const uint8_t *plaintext, size_t plaintext_size, uint8_t *ciphertext)
 
+
bool InitializeWithIv (const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv) override
 
+size_t NumPaddingBytes (size_t size) override
 
+bool EncryptData (const uint8_t *plaintext, size_t plaintext_size, uint8_t *ciphertext) override
 
void UpdateIv () override
 
bool SetIv (const std::vector< uint8_t > &iv) override
 
- Public Member Functions inherited from edash_packager::media::AesEncryptor
virtual bool InitializeWithRandomIv (const std::vector< uint8_t > &key, uint8_t iv_size)
 
+const std::vector< uint8_t > & iv () const
 
bool Encrypt (const std::vector< uint8_t > &plaintext, std::vector< uint8_t > *ciphertext)
 
+
 
bool Encrypt (const std::string &plaintext, std::string *ciphertext)
 
 
+ + + + + +

+Additional Inherited Members

- Protected Attributes inherited from edash_packager::media::AesEncryptor
+std::vector< uint8_t > iv_
 
+scoped_ptr< AES_KEY > aes_key_
 

Detailed Description

-

Definition at line 25 of file aes_encryptor.h.

+

Definition at line 78 of file aes_encryptor.h.

Member Function Documentation

- +
+ + + + + +
@@ -158,61 +182,27 @@ bool 
bool edash_packager::media::AesCtrEncryptor::InitializeWithIv Encrypt (const st
+
+overridevirtual
-

Initialize the encryptor with specified key and IV. block_offset() is reset to 0 on success.

-
Parameters
- - - -
keyshould be 16 bytes in size as specified in CENC spec.
ivshould be 8 bytes or 16 bytes in size as specified in CENC spec.
-
-
+

Initialize the encryptor with specified key and IV.

Returns
true on successful initialization, false otherwise.
-

Definition at line 64 of file aes_encryptor.cc.

+

Implements edash_packager::media::AesEncryptor.

+ +

Definition at line 84 of file aes_encryptor.cc.

- -
-
- - - - - - - - - - - - - - - - - - -
bool edash_packager::media::AesCtrEncryptor::InitializeWithRandomIv (const std::vector< uint8_t > & key,
uint8_t iv_size 
)
-
-

Initialize the encryptor with specified key and a random generated IV of the specified size. block_offset() is reset to 0 on success.

-
Parameters
- - - -
keyshould be 16 bytes in size as specified in CENC spec.
iv_sizeshould be either 8 or 16 as specified in CENC spec.
-
-
-
Returns
true on successful initialization, false otherwise.
- -

Definition at line 53 of file aes_encryptor.cc.

- -
-
- +
+ + + + + +
@@ -222,17 +212,27 @@ bool 
bool edash_packager::media::AesCtrEncryptor::SetIv Encrypt (const st
+
+overridevirtual
-

Set IV. block_offset_ is reset to 0 on success.

+

Set IV.

Returns
true if successful, false if the input is invalid.
-

Definition at line 133 of file aes_encryptor.cc.

+

Implements edash_packager::media::AesEncryptor.

+ +

Definition at line 157 of file aes_encryptor.cc.

- +
+ + + + + +
@@ -241,10 +241,17 @@ bool 
void edash_packager::media::AesCtrEncryptor::UpdateIv Encrypt (const st
+
+overridevirtual

Update IV for next sample. block_offset_ is reset to 0. As recommended in ISO/IEC FDIS 23001-7: CENC spec, For 64-bit IV size, new_iv = old_iv + 1; For 128-bit IV size, new_iv = old_iv + previous_sample_block_count.

-

Definition at line 104 of file aes_encryptor.cc.

+

Implements edash_packager::media::AesEncryptor.

+ +

Definition at line 128 of file aes_encryptor.cc.

@@ -255,7 +262,7 @@ bool Encrypt (const st
diff --git a/docs/dd/d79/classedash__packager_1_1media_1_1AesCtrEncryptor.png b/docs/dd/d79/classedash__packager_1_1media_1_1AesCtrEncryptor.png new file mode 100644 index 0000000000..e4b10f6669 Binary files /dev/null and b/docs/dd/d79/classedash__packager_1_1media_1_1AesCtrEncryptor.png differ diff --git a/docs/dd/d7d/structedash__packager_1_1media_1_1mp4_1_1TextSampleEntry.html b/docs/dd/d7d/structedash__packager_1_1media_1_1mp4_1_1TextSampleEntry.html index fdfe83166b..ae3242d2b1 100644 --- a/docs/dd/d7d/structedash__packager_1_1media_1_1mp4_1_1TextSampleEntry.html +++ b/docs/dd/d7d/structedash__packager_1_1media_1_1mp4_1_1TextSampleEntry.html @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/dd/d7f/classedash__packager_1_1media_1_1DecoderConfiguration-members.html b/docs/dd/d7f/classedash__packager_1_1media_1_1DecoderConfiguration-members.html index 9fcba82458..2d9a5ace09 100644 --- a/docs/dd/d7f/classedash__packager_1_1media_1_1DecoderConfiguration-members.html +++ b/docs/dd/d7f/classedash__packager_1_1media_1_1DecoderConfiguration-members.html @@ -107,7 +107,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d80/media__sample_8h_source.html b/docs/dd/d80/media__sample_8h_source.html index 5c5aafebe5..47299a426f 100644 --- a/docs/dd/d80/media__sample_8h_source.html +++ b/docs/dd/d80/media__sample_8h_source.html @@ -260,7 +260,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d85/classedash__packager_1_1xml_1_1XmlNode.html b/docs/dd/d85/classedash__packager_1_1xml_1_1XmlNode.html index 87e0a854d5..2f1c3c4678 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 30623b71b5..449b5b94d9 100644 --- a/docs/dd/d85/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentHeader-members.html +++ b/docs/dd/d85/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentHeader-members.html @@ -133,7 +133,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d87/memory__file_8cc_source.html b/docs/dd/d87/memory__file_8cc_source.html index b484d1c61a..b96d677472 100644 --- a/docs/dd/d87/memory__file_8cc_source.html +++ b/docs/dd/d87/memory__file_8cc_source.html @@ -241,7 +241,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d8c/file__test__util_8h_source.html b/docs/dd/d8c/file__test__util_8h_source.html index 7f81e562f4..a9805e42dd 100644 --- a/docs/dd/d8c/file__test__util_8h_source.html +++ b/docs/dd/d8c/file__test__util_8h_source.html @@ -119,7 +119,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d8e/classedash__packager_1_1media_1_1mp4_1_1KeyRotationFragmenter-members.html b/docs/dd/d8e/classedash__packager_1_1media_1_1mp4_1_1KeyRotationFragmenter-members.html index 52bb30b6fc..b63a223532 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 @@ -97,7 +97,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(scoped_refptr< StreamInfo > info, TrackFragment *traf, scoped_ptr< EncryptionKey > encryption_key, int64_t clear_time)edash_packager::media::mp4::EncryptingFragmenter + EncryptingFragmenter(scoped_refptr< StreamInfo > info, TrackFragment *traf, scoped_ptr< EncryptionKey > encryption_key, int64_t clear_time, EncryptionMode encryption_mode)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 @@ -109,7 +109,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, scoped_refptr< StreamInfo > info, TrackFragment *traf, KeySource *encryption_key_source, KeySource::TrackType track_type, int64_t crypto_period_duration, int64_t clear_time, MuxerListener *muxer_listener)edash_packager::media::mp4::KeyRotationFragmenter + KeyRotationFragmenter(MovieFragment *moof, scoped_refptr< StreamInfo > info, TrackFragment *traf, KeySource *encryption_key_source, KeySource::TrackType track_type, int64_t crypto_period_duration, int64_t clear_time, MuxerListener *muxer_listener, EncryptionMode encryption_mode)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 @@ -120,7 +120,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d96/classedash__packager_1_1media_1_1AesCbcCtsDecryptor.html b/docs/dd/d96/classedash__packager_1_1media_1_1AesCbcCtsDecryptor.html index 07904d7160..0d9fea7439 100644 --- a/docs/dd/d96/classedash__packager_1_1media_1_1AesCbcCtsDecryptor.html +++ b/docs/dd/d96/classedash__packager_1_1media_1_1AesCbcCtsDecryptor.html @@ -87,148 +87,63 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
edash_packager::media::AesCbcCtsDecryptor Class Reference
+
+Inheritance diagram for edash_packager::media::AesCbcCtsDecryptor:
+
+
+ + +edash_packager::media::AesDecryptor + +
- - - - - - - - - + + + + + + + + + + + + - + +

Public Member Functions

bool InitializeWithIv (const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv)
 
void Decrypt (const uint8_t *ciphertext, size_t size, uint8_t *plaintext)
 
void Decrypt (const std::vector< uint8_t > &ciphertext, std::vector< uint8_t > *plaintext)
 
bool SetIv (const std::vector< uint8_t > &iv)
 
+
AesDecryptor implementation overrides.
+bool InitializeWithIv (const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv) override
 
+bool Decrypt (const uint8_t *ciphertext, size_t ciphertext_size, uint8_t *plaintext) override
 
+bool Decrypt (const std::vector< uint8_t > &ciphertext, std::vector< uint8_t > *plaintext) override
 
+bool Decrypt (const std::string &ciphertext, std::string *plaintext) override
 
bool SetIv (const std::vector< uint8_t > &iv) override
 
- Public Member Functions inherited from edash_packager::media::AesDecryptor
const std::vector< uint8_t > & iv () const
 
 
+ + + + + +

+Additional Inherited Members

- Protected Attributes inherited from edash_packager::media::AesDecryptor
+std::vector< uint8_t > iv_
 
+scoped_ptr< AES_KEY > aes_key_
 

Detailed Description

-

Definition at line 220 of file aes_encryptor.h.

+

Definition at line 124 of file aes_decryptor.h.

Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
void edash_packager::media::AesCbcCtsDecryptor::Decrypt (const uint8_t * ciphertext,
size_t size,
uint8_t * plaintext 
)
-
-
Parameters
- - - - -
ciphertextpoints to the data to be decrypted.
sizeis the number of bytes to be decrypted. If less than 16 bytes, it will be copied in the clear.
plaintextshould not be NULL. The buffer should be at least size bytes in length.
-
-
- -

Definition at line 374 of file aes_encryptor.cc.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
void edash_packager::media::AesCbcCtsDecryptor::Decrypt (const std::vector< uint8_t > & ciphertext,
std::vector< uint8_t > * plaintext 
)
-
-
Parameters
- - - -
ciphertextcontains the data to be decrypted. If less than 16 bytes in size, it will be copied in the clear.
plaintextshould not be NULL. Caller retains ownership.
-
-
- -

Definition at line 456 of file aes_encryptor.cc.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
bool edash_packager::media::AesCbcCtsDecryptor::InitializeWithIv (const std::vector< uint8_t > & key,
const std::vector< uint8_t > & iv 
)
-
-

Initialize the decryptor with specified key and IV.

-
Parameters
- - - -
keyshould be 128 bits or 192 bits or 256 bits in size as defined in AES spec.
ivshould be 16 bytes in size.
-
-
-
Returns
true on successful initialization, false otherwise.
- -

Definition at line 356 of file aes_encryptor.cc.

- -
-
- +
+ + + + + +
@@ -238,21 +153,29 @@ const std::vector< uint8_t > & 
bool edash_packager::media::AesCbcCtsDecryptor::SetIv
+
+overridevirtual
+

Set IV. block_offset_ is reset to 0 on success.

Returns
true if successful, false if the input is invalid.
-

Definition at line 467 of file aes_encryptor.cc.

+

Implements edash_packager::media::AesDecryptor.

+ +

Definition at line 257 of file aes_decryptor.cc.


The documentation for this class was generated from the following files:
diff --git a/docs/dd/d96/classedash__packager_1_1media_1_1AesCbcCtsDecryptor.png b/docs/dd/d96/classedash__packager_1_1media_1_1AesCbcCtsDecryptor.png new file mode 100644 index 0000000000..597067ea43 Binary files /dev/null and b/docs/dd/d96/classedash__packager_1_1media_1_1AesCbcCtsDecryptor.png differ 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 7a0b2337f4..293f8d71ab 100644 --- a/docs/dd/d98/classedash__packager_1_1media_1_1LocalFile.html +++ b/docs/dd/d98/classedash__packager_1_1media_1_1LocalFile.html @@ -502,7 +502,7 @@ bool  diff --git a/docs/dd/d98/structedash__packager_1_1media_1_1H264Sps-members.html b/docs/dd/d98/structedash__packager_1_1media_1_1H264Sps-members.html index 38f2b748c6..e1119555d5 100644 --- a/docs/dd/d98/structedash__packager_1_1media_1_1H264Sps-members.html +++ b/docs/dd/d98/structedash__packager_1_1media_1_1H264Sps-members.html @@ -142,7 +142,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d99/classedash__packager_1_1media_1_1WebMMediaParser.html b/docs/dd/d99/classedash__packager_1_1media_1_1WebMMediaParser.html index c7e149e9f7..ba9999f5e6 100644 --- a/docs/dd/d99/classedash__packager_1_1media_1_1WebMMediaParser.html +++ b/docs/dd/d99/classedash__packager_1_1media_1_1WebMMediaParser.html @@ -256,7 +256,7 @@ track_id, const scoped_refptr
diff --git a/docs/dd/d9a/audio__timestamp__helper_8h_source.html b/docs/dd/d9a/audio__timestamp__helper_8h_source.html index 80e46d09ae..3fc96db158 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 12cc8c4475..58c238dc6d 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 @@ -180,7 +180,7 @@ Additional Inherited Members diff --git a/docs/dd/da6/structedash__packager_1_1media_1_1mp4_1_1SegmentType.html b/docs/dd/da6/structedash__packager_1_1media_1_1mp4_1_1SegmentType.html index 79e9d968a5..8f0fa3ef0c 100644 --- a/docs/dd/da6/structedash__packager_1_1media_1_1mp4_1_1SegmentType.html +++ b/docs/dd/da6/structedash__packager_1_1media_1_1mp4_1_1SegmentType.html @@ -177,7 +177,7 @@ std::vector< FourCC > < diff --git a/docs/dd/da8/classedash__packager_1_1media_1_1RsaRequestSigner.html b/docs/dd/da8/classedash__packager_1_1media_1_1RsaRequestSigner.html index bd78b70fd7..1f67a5f972 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 9a1852095e..529e5bd765 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 @@ -171,7 +171,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 50be8ddc60..0bf499fb09 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 2dc62e1b81..5bb16cf66f 100644 --- a/docs/dd/dab/webm__muxer_8h_source.html +++ b/docs/dd/dab/webm__muxer_8h_source.html @@ -132,13 +132,13 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
WebMMuxer(const MuxerOptions &options)
Create a WebMMuxer object from MuxerOptions.
Definition: webm_muxer.cc:21
- +
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
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 e44401740a..8da2eb2471 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 3ed4b276e7..ff07254e50 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 29295188b7..36ba37987e 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 @@ -93,24 +93,26 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');

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

- + + + - - - - - - - - - - - - + + + + + + + + + + + +
AesCtrEncryptor() (defined in edash_packager::media::AesCtrEncryptor)edash_packager::media::AesCtrEncryptor
aes_key_ (defined in edash_packager::media::AesEncryptor)edash_packager::media::AesEncryptorprotected
AesCtrEncryptor() (defined in edash_packager::media::AesCtrEncryptor)edash_packager::media::AesCtrEncryptor
AesEncryptor() (defined in edash_packager::media::AesEncryptor)edash_packager::media::AesEncryptor
block_offset() const (defined in edash_packager::media::AesCtrEncryptor)edash_packager::media::AesCtrEncryptorinline
Decrypt(const uint8_t *ciphertext, size_t ciphertext_size, uint8_t *plaintext) (defined in edash_packager::media::AesCtrEncryptor)edash_packager::media::AesCtrEncryptorinline
Decrypt(const std::vector< uint8_t > &ciphertext, std::vector< uint8_t > *plaintext) (defined in edash_packager::media::AesCtrEncryptor)edash_packager::media::AesCtrEncryptorinline
Decrypt(const std::string &ciphertext, std::string *plaintext) (defined in edash_packager::media::AesCtrEncryptor)edash_packager::media::AesCtrEncryptorinline
Encrypt(const uint8_t *plaintext, size_t plaintext_size, uint8_t *ciphertext) (defined in edash_packager::media::AesCtrEncryptor)edash_packager::media::AesCtrEncryptor
Encrypt(const std::vector< uint8_t > &plaintext, std::vector< uint8_t > *ciphertext) (defined in edash_packager::media::AesCtrEncryptor)edash_packager::media::AesCtrEncryptorinline
Encrypt(const std::string &plaintext, std::string *ciphertext) (defined in edash_packager::media::AesCtrEncryptor)edash_packager::media::AesCtrEncryptorinline
InitializeWithIv(const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv)edash_packager::media::AesCtrEncryptor
InitializeWithRandomIv(const std::vector< uint8_t > &key, uint8_t iv_size)edash_packager::media::AesCtrEncryptor
iv() const (defined in edash_packager::media::AesCtrEncryptor)edash_packager::media::AesCtrEncryptorinline
SetIv(const std::vector< uint8_t > &iv)edash_packager::media::AesCtrEncryptor
UpdateIv()edash_packager::media::AesCtrEncryptor
~AesCtrEncryptor() (defined in edash_packager::media::AesCtrEncryptor)edash_packager::media::AesCtrEncryptor
Encrypt(const std::vector< uint8_t > &plaintext, std::vector< uint8_t > *ciphertext) (defined in edash_packager::media::AesEncryptor)edash_packager::media::AesEncryptor
Encrypt(const std::string &plaintext, std::string *ciphertext) (defined in edash_packager::media::AesEncryptor)edash_packager::media::AesEncryptor
EncryptData(const uint8_t *plaintext, size_t plaintext_size, uint8_t *ciphertext) override (defined in edash_packager::media::AesCtrEncryptor)edash_packager::media::AesCtrEncryptorvirtual
InitializeWithIv(const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv) overrideedash_packager::media::AesCtrEncryptorvirtual
InitializeWithRandomIv(const std::vector< uint8_t > &key, uint8_t iv_size)edash_packager::media::AesEncryptorvirtual
iv() const (defined in edash_packager::media::AesEncryptor)edash_packager::media::AesEncryptorinline
iv_ (defined in edash_packager::media::AesEncryptor)edash_packager::media::AesEncryptorprotected
NumPaddingBytes(size_t size) override (defined in edash_packager::media::AesCtrEncryptor)edash_packager::media::AesCtrEncryptorvirtual
SetIv(const std::vector< uint8_t > &iv) overrideedash_packager::media::AesCtrEncryptorvirtual
UpdateIv() overrideedash_packager::media::AesCtrEncryptorvirtual
~AesCtrEncryptor() override (defined in edash_packager::media::AesCtrEncryptor)edash_packager::media::AesCtrEncryptor
~AesEncryptor() (defined in edash_packager::media::AesEncryptor)edash_packager::media::AesEncryptorvirtual
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 3f60e86541..65a6325028 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 @@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/dd/dbf/classedash__packager_1_1MpdNotifier-members.html b/docs/dd/dbf/classedash__packager_1_1MpdNotifier-members.html index fea1796167..4cba80bb39 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 59fe60d246..6a3661beeb 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 d19edbcb1d..230a212539 100644 --- a/docs/dd/dc9/structedash__packager_1_1media_1_1mp4_1_1ProtectionSchemeInfo.html +++ b/docs/dd/dc9/structedash__packager_1_1media_1_1mp4_1_1ProtectionSchemeInfo.html @@ -179,7 +179,7 @@ Additional Inherited Members diff --git a/docs/dd/dcb/classedash__packager_1_1MpdNotifierFactory.html b/docs/dd/dcb/classedash__packager_1_1MpdNotifierFactory.html index d101807048..641d26955d 100644 --- a/docs/dd/dcb/classedash__packager_1_1MpdNotifierFactory.html +++ b/docs/dd/dcb/classedash__packager_1_1MpdNotifierFactory.html @@ -112,7 +112,7 @@ virtual scoped_ptr< diff --git a/docs/dd/dd2/buffer__writer_8h_source.html b/docs/dd/dd2/buffer__writer_8h_source.html index 89a371d4e9..38bb37647b 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 729fa2014a..a42c004795 100644 --- a/docs/dd/dd3/buffer__writer_8cc_source.html +++ b/docs/dd/dd3/buffer__writer_8cc_source.html @@ -187,7 +187,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/ddb/classedash__packager_1_1media_1_1mp4_1_1VideoSliceHeaderParser-members.html b/docs/dd/ddb/classedash__packager_1_1media_1_1mp4_1_1VideoSliceHeaderParser-members.html index 111eef2ea4..234d52e8a0 100644 --- a/docs/dd/ddb/classedash__packager_1_1media_1_1mp4_1_1VideoSliceHeaderParser-members.html +++ b/docs/dd/ddb/classedash__packager_1_1media_1_1mp4_1_1VideoSliceHeaderParser-members.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/de7/xml__node_8h_source.html b/docs/dd/de7/xml__node_8h_source.html index e28280090a..20d601427d 100644 --- a/docs/dd/de7/xml__node_8h_source.html +++ b/docs/dd/de7/xml__node_8h_source.html @@ -230,7 +230,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/dec/structedash__packager_1_1media_1_1OnMediaEndParameters-members.html b/docs/dd/dec/structedash__packager_1_1media_1_1OnMediaEndParameters-members.html index 60c24a14fb..9a700f124d 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 4f670eaf88..fcdfa0c3c0 100644 --- a/docs/dd/dee/box__definitions_8cc_source.html +++ b/docs/dd/dee/box__definitions_8cc_source.html @@ -539,7 +539,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
450  buffer->PrepareChildren() &&
451  buffer->ReadWriteChild(&format) &&
452  buffer->ReadWriteChild(&type));
-
453  if (type.type == FOURCC_CENC)
+
453  if (type.type == FOURCC_CENC || type.type == FOURCC_CBC1)
454  RCHECK(buffer->ReadWriteChild(&info));
455  // Other protection schemes are silently ignored. Since the protection scheme
456  // type can't be determined until this box is opened, we return 'true' for
@@ -1389,7 +1389,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
1300  if (buffer->Reading()) {
1301  // Continue scanning until a recognized protection scheme is found,
1302  // or until we run out of protection schemes.
-
1303  while (sinf.type.type != FOURCC_CENC) {
+
1303  while (sinf.type.type != FOURCC_CENC && sinf.type.type != FOURCC_CBC1) {
1304  if (!buffer->ReadWriteChild(&sinf))
1305  return false;
1306  }
@@ -1574,7 +1574,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
1485  if (buffer->Reading()) {
1486  // Continue scanning until a recognized protection scheme is found,
1487  // or until we run out of protection schemes.
-
1488  while (sinf.type.type != FOURCC_CENC) {
+
1488  while (sinf.type.type != FOURCC_CENC && sinf.type.type != FOURCC_CBC1) {
1489  if (!buffer->ReadWriteChild(&sinf))
1490  return false;
1491  }
@@ -2751,7 +2751,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 97ab365ced..6e01993358 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 a016647199..55dff6321f 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 d059575246..c959a82f01 100644 --- a/docs/dd/dfa/structedash__packager_1_1media_1_1MuxerOptions-members.html +++ b/docs/dd/dfa/structedash__packager_1_1media_1_1MuxerOptions-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d07/structedash__packager_1_1media_1_1mp4_1_1CueIDBox.html b/docs/de/d07/structedash__packager_1_1media_1_1mp4_1_1CueIDBox.html index 2fb08ae09e..dd36bc1fa1 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 @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/de/d0f/local__file_8h_source.html b/docs/de/d0f/local__file_8h_source.html index 68df0ec8b2..45cd9bbe56 100644 --- a/docs/de/d0f/local__file_8h_source.html +++ b/docs/de/d0f/local__file_8h_source.html @@ -152,7 +152,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d12/container__names_8h_source.html b/docs/de/d12/container__names_8h_source.html index f0f0d97f41..d44672ed24 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 0686824892..d4ee185802 100644 --- a/docs/de/d15/media__stream_8cc_source.html +++ b/docs/de/d15/media__stream_8cc_source.html @@ -205,12 +205,12 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); - +
Status Parse()
Read from the source and send it to the parser.
Definition: demuxer.cc:207
diff --git a/docs/de/d17/cluster__builder_8cc_source.html b/docs/de/d17/cluster__builder_8cc_source.html index 0242dce82a..bcb863137f 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 f02e249a68..57d15099cd 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 bf023a8684..036e8fcc36 100644 --- a/docs/de/d19/classedash__packager_1_1media_1_1File.html +++ b/docs/de/d19/classedash__packager_1_1media_1_1File.html @@ -811,7 +811,7 @@ class ThreadedIoFile diff --git a/docs/de/d1e/mp4_2single__segment__segmenter_8cc_source.html b/docs/de/d1e/mp4_2single__segment__segmenter_8cc_source.html index 9a6afc3cc9..37fe597d99 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 c58fdf3c28..ac838d57f6 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 df7b362e06..dbc5d73bd8 100644 --- a/docs/de/d34/offset__byte__queue_8h_source.html +++ b/docs/de/d34/offset__byte__queue_8h_source.html @@ -143,7 +143,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d3c/macros_8h_source.html b/docs/de/d3c/macros_8h_source.html index f1d823bfe2..32534e4521 100644 --- a/docs/de/d3c/macros_8h_source.html +++ b/docs/de/d3c/macros_8h_source.html @@ -144,7 +144,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d3e/buffer__reader_8h_source.html b/docs/de/d3e/buffer__reader_8h_source.html index d280b4f6f0..eaaf1a08b1 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 3e29da3302..84e0addfac 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 @@ -188,7 +188,7 @@ Additional Inherited Members diff --git a/docs/de/d48/classedash__packager_1_1media_1_1VP8Parser-members.html b/docs/de/d48/classedash__packager_1_1media_1_1VP8Parser-members.html index b55217e776..6b7f6d903e 100644 --- a/docs/de/d48/classedash__packager_1_1media_1_1VP8Parser-members.html +++ b/docs/de/d48/classedash__packager_1_1media_1_1VP8Parser-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d4a/muxer__listener__internal_8h_source.html b/docs/de/d4a/muxer__listener__internal_8h_source.html index ff1d052615..50968b52d1 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 ffd76f37bc..866a01a8b0 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 1227b130f4..e13145fe99 100644 --- a/docs/de/d57/structedash__packager_1_1media_1_1MuxerOptions.html +++ b/docs/de/d57/structedash__packager_1_1media_1_1MuxerOptions.html @@ -275,7 +275,7 @@ std::string  diff --git a/docs/de/d59/classedash__packager_1_1media_1_1mp2t_1_1EsParserAdts.html b/docs/de/d59/classedash__packager_1_1media_1_1mp2t_1_1EsParserAdts.html index 90824695ec..19b9e0eeba 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 d9ad8f2082..7fa615962a 100644 --- a/docs/de/d5a/structedash__packager_1_1media_1_1mp4_1_1SchemeType-members.html +++ b/docs/de/d5a/structedash__packager_1_1media_1_1mp4_1_1SchemeType-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d5b/adts__header_8cc_source.html b/docs/de/d5b/adts__header_8cc_source.html index 121dce8cab..b34221d5a9 100644 --- a/docs/de/d5b/adts__header_8cc_source.html +++ b/docs/de/d5b/adts__header_8cc_source.html @@ -207,7 +207,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d5c/mpd__flags_8h_source.html b/docs/de/d5c/mpd__flags_8h_source.html index 79f6f5f99f..c1c7f003d4 100644 --- a/docs/de/d5c/mpd__flags_8h_source.html +++ b/docs/de/d5c/mpd__flags_8h_source.html @@ -114,7 +114,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d68/structedash__packager_1_1media_1_1mp4_1_1Track-members.html b/docs/de/d68/structedash__packager_1_1media_1_1mp4_1_1Track-members.html index b351bc2cce..325a23c4ef 100644 --- a/docs/de/d68/structedash__packager_1_1media_1_1mp4_1_1Track-members.html +++ b/docs/de/d68/structedash__packager_1_1media_1_1mp4_1_1Track-members.html @@ -112,7 +112,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d6a/classedash__packager_1_1media_1_1webm_1_1WebMMuxer.html b/docs/de/d6a/classedash__packager_1_1media_1_1webm_1_1WebMMuxer.html index 4086b1d1a7..d2e42e96ee 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 @@ -118,8 +118,8 @@ Public Member Functions  Muxer (const MuxerOptions &options)   -void SetKeySource (KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds) -  +void SetKeySource (KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, EncryptionMode encryption_mode) +  void AddStream (MediaStream *stream)  Add video/audio stream.
@@ -167,6 +167,9 @@ double crypto_period_durat base::Clock * clock ()   + +EncryptionMode encryption_mode () const + 

Detailed Description

Implements WebM Muxer.

@@ -179,7 +182,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 75ed288783..de10bc8d80 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 45416f5d75..7a40ddcf2e 100644 --- a/docs/de/d70/http__key__fetcher_8cc_source.html +++ b/docs/de/d70/http__key__fetcher_8cc_source.html @@ -238,7 +238,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d77/classedash__packager_1_1media_1_1VodMediaInfoDumpMuxerListener-members.html b/docs/de/d77/classedash__packager_1_1media_1_1VodMediaInfoDumpMuxerListener-members.html index dec4bb3e9f..fa09b4d73f 100644 --- a/docs/de/d77/classedash__packager_1_1media_1_1VodMediaInfoDumpMuxerListener-members.html +++ b/docs/de/d77/classedash__packager_1_1media_1_1VodMediaInfoDumpMuxerListener-members.html @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d77/webm__content__encodings__client_8cc_source.html b/docs/de/d77/webm__content__encodings__client_8cc_source.html index 546db09e13..35a46cedba 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 c21fabd85b..beb9f8ecc8 100644 --- a/docs/de/d7b/mp4__media__parser_8h_source.html +++ b/docs/de/d7b/mp4__media__parser_8h_source.html @@ -206,7 +206,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 2f31a38d64..b77aa9cf04 100644 --- a/docs/de/d83/box__definitions__comparison_8h_source.html +++ b/docs/de/d83/box__definitions__comparison_8h_source.html @@ -575,7 +575,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d87/structedash__packager_1_1media_1_1mp4_1_1ChunkInfo-members.html b/docs/de/d87/structedash__packager_1_1media_1_1mp4_1_1ChunkInfo-members.html index 440f5722e8..b9c33b53d4 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 36d7f843bb..cff9c338c4 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 657f27d808..6b68a7e92d 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 2009f984b3..f04379e7e3 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 9ee4fcd6e7..b7a4be3d52 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/d9b/structedash__packager_1_1media_1_1H264Sps.html b/docs/de/d9b/structedash__packager_1_1media_1_1H264Sps.html index 3f15b88a7c..471c72a9b6 100644 --- a/docs/de/d9b/structedash__packager_1_1media_1_1H264Sps.html +++ b/docs/de/d9b/structedash__packager_1_1media_1_1H264Sps.html @@ -242,7 +242,7 @@ int chroma_array_type< diff --git a/docs/de/d9d/classedash__packager_1_1media_1_1TracksBuilder-members.html b/docs/de/d9d/classedash__packager_1_1media_1_1TracksBuilder-members.html index be80e15bb6..f069a06af0 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 676910cd68..3b1f54b177 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 3b1e68af1b..72b1ff4b18 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 @@ -93,17 +93,22 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');

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

- - - - - - - + + + + + + + + + + + +
AesCbcCtsDecryptor() (defined in edash_packager::media::AesCbcCtsDecryptor)edash_packager::media::AesCbcCtsDecryptor
Decrypt(const uint8_t *ciphertext, size_t size, uint8_t *plaintext)edash_packager::media::AesCbcCtsDecryptor
Decrypt(const std::vector< uint8_t > &ciphertext, std::vector< uint8_t > *plaintext)edash_packager::media::AesCbcCtsDecryptor
InitializeWithIv(const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv)edash_packager::media::AesCbcCtsDecryptor
iv() const (defined in edash_packager::media::AesCbcCtsDecryptor)edash_packager::media::AesCbcCtsDecryptorinline
SetIv(const std::vector< uint8_t > &iv)edash_packager::media::AesCbcCtsDecryptor
~AesCbcCtsDecryptor() (defined in edash_packager::media::AesCbcCtsDecryptor)edash_packager::media::AesCbcCtsDecryptor
aes_key_ (defined in edash_packager::media::AesDecryptor)edash_packager::media::AesDecryptorprotected
AesCbcCtsDecryptor() (defined in edash_packager::media::AesCbcCtsDecryptor)edash_packager::media::AesCbcCtsDecryptor
AesDecryptor() (defined in edash_packager::media::AesDecryptor)edash_packager::media::AesDecryptor
Decrypt(const uint8_t *ciphertext, size_t ciphertext_size, uint8_t *plaintext) override (defined in edash_packager::media::AesCbcCtsDecryptor)edash_packager::media::AesCbcCtsDecryptorvirtual
Decrypt(const std::vector< uint8_t > &ciphertext, std::vector< uint8_t > *plaintext) override (defined in edash_packager::media::AesCbcCtsDecryptor)edash_packager::media::AesCbcCtsDecryptorvirtual
Decrypt(const std::string &ciphertext, std::string *plaintext) override (defined in edash_packager::media::AesCbcCtsDecryptor)edash_packager::media::AesCbcCtsDecryptorvirtual
InitializeWithIv(const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv) override (defined in edash_packager::media::AesCbcCtsDecryptor)edash_packager::media::AesCbcCtsDecryptorvirtual
iv() const (defined in edash_packager::media::AesDecryptor)edash_packager::media::AesDecryptorinline
iv_ (defined in edash_packager::media::AesDecryptor)edash_packager::media::AesDecryptorprotected
SetIv(const std::vector< uint8_t > &iv) overrideedash_packager::media::AesCbcCtsDecryptorvirtual
~AesCbcCtsDecryptor() override (defined in edash_packager::media::AesCbcCtsDecryptor)edash_packager::media::AesCbcCtsDecryptor
~AesDecryptor() (defined in edash_packager::media::AesDecryptor)edash_packager::media::AesDecryptorvirtual
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 0684c5e552..2629bf0588 100644 --- a/docs/de/da5/classedash__packager_1_1media_1_1WebMParserClient.html +++ b/docs/de/da5/classedash__packager_1_1media_1_1WebMParserClient.html @@ -151,7 +151,7 @@ Protected Member Functions diff --git a/docs/de/da6/classedash__packager_1_1media_1_1mp4_1_1DecodingTimeIterator-members.html b/docs/de/da6/classedash__packager_1_1media_1_1mp4_1_1DecodingTimeIterator-members.html index 411097e0e0..1b8db38ca3 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 7d47e9d4f8..58cf07683e 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 532638dcb2..769aa2b8b9 100644 --- a/docs/de/dab/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentRun-members.html +++ b/docs/de/dab/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentRun-members.html @@ -125,7 +125,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/dad/validate__flag_8cc_source.html b/docs/de/dad/validate__flag_8cc_source.html index 1c7f18dad9..05a7313b8e 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 d3e77e09a5..98c063a76f 100644 --- a/docs/de/db1/classedash__packager_1_1media_1_1mp4_1_1ESDescriptor.html +++ b/docs/de/db1/classedash__packager_1_1media_1_1mp4_1_1ESDescriptor.html @@ -181,7 +181,7 @@ bool IsDTS () const diff --git a/docs/de/db4/structedash__packager_1_1media_1_1mp4_1_1SchemeInfo-members.html b/docs/de/db4/structedash__packager_1_1media_1_1mp4_1_1SchemeInfo-members.html index 6802f6657e..51b6505e3e 100644 --- a/docs/de/db4/structedash__packager_1_1media_1_1mp4_1_1SchemeInfo-members.html +++ b/docs/de/db4/structedash__packager_1_1media_1_1mp4_1_1SchemeInfo-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/dc1/demuxer_8h_source.html b/docs/de/dc1/demuxer_8h_source.html index 4f6cb2bec1..30cf2246f4 100644 --- a/docs/de/dc1/demuxer_8h_source.html +++ b/docs/de/dc1/demuxer_8h_source.html @@ -187,7 +187,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/dc4/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset.html b/docs/de/dc4/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset.html index 413c791d04..2c8ba85d48 100644 --- a/docs/de/dc4/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset.html +++ b/docs/de/dc4/structedash__packager_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset.html @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/de/dcc/mock__mpd__notifier_8cc_source.html b/docs/de/dcc/mock__mpd__notifier_8cc_source.html index e05a4a607a..14ad57080b 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 c96ac63b31..7b4bd0b5d3 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 8099234f3e..e699af7a33 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 @@ -99,24 +99,25 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); clock() (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinlineprotected crypto_period_duration_in_seconds() const (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinlineprotected encryption_key_source() (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinlineprotected - max_sd_pixels() const (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinlineprotected - MP4Muxer(const MuxerOptions &options)edash_packager::media::mp4::MP4Muxerexplicit - Muxer(const MuxerOptions &options) (defined in edash_packager::media::Muxer)edash_packager::media::Muxerexplicit - muxer_listener() (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinlineprotected - options() const (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinlineprotected - progress_listener() (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinlineprotected - Run()edash_packager::media::Muxer - set_clock(base::Clock *clock)edash_packager::media::Muxerinline - SetKeySource(KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds)edash_packager::media::Muxer - SetMuxerListener(scoped_ptr< MuxerListener > muxer_listener)edash_packager::media::Muxer - SetProgressListener(scoped_ptr< ProgressListener > progress_listener)edash_packager::media::Muxer - streams() const (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinline - ~MP4Muxer() override (defined in edash_packager::media::mp4::MP4Muxer)edash_packager::media::mp4::MP4Muxer - ~Muxer() (defined in edash_packager::media::Muxer)edash_packager::media::Muxervirtual + encryption_mode() const (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinlineprotected + max_sd_pixels() const (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinlineprotected + MP4Muxer(const MuxerOptions &options)edash_packager::media::mp4::MP4Muxerexplicit + Muxer(const MuxerOptions &options) (defined in edash_packager::media::Muxer)edash_packager::media::Muxerexplicit + muxer_listener() (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinlineprotected + options() const (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinlineprotected + progress_listener() (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinlineprotected + Run()edash_packager::media::Muxer + set_clock(base::Clock *clock)edash_packager::media::Muxerinline + SetKeySource(KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, EncryptionMode encryption_mode)edash_packager::media::Muxer + SetMuxerListener(scoped_ptr< MuxerListener > muxer_listener)edash_packager::media::Muxer + SetProgressListener(scoped_ptr< ProgressListener > progress_listener)edash_packager::media::Muxer + streams() const (defined in edash_packager::media::Muxer)edash_packager::media::Muxerinline + ~MP4Muxer() override (defined in edash_packager::media::mp4::MP4Muxer)edash_packager::media::mp4::MP4Muxer + ~Muxer() (defined in edash_packager::media::Muxer)edash_packager::media::Muxervirtual diff --git a/docs/de/dd6/content__protection__element_8h_source.html b/docs/de/dd6/content__protection__element_8h_source.html index cc74d1cdb3..199de9fa39 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 0e40045890..fd3bf8c190 100644 --- a/docs/de/dd6/muxer__listener__test__helper_8cc_source.html +++ b/docs/de/dd6/muxer__listener__test__helper_8cc_source.html @@ -218,7 +218,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 3b375d2c0c..1829abe074 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 @@ -179,7 +179,7 @@ Additional Inherited Members diff --git a/docs/de/de9/classedash__packager_1_1media_1_1LibcryptoThreading.html b/docs/de/de9/classedash__packager_1_1media_1_1LibcryptoThreading.html index dfe96063a1..0641ab92fb 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 7cda44b9fc..ab9cd2d358 100644 --- a/docs/de/dfa/muxer__listener_8h_source.html +++ b/docs/de/dfa/muxer__listener_8h_source.html @@ -198,7 +198,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 bdf82ceb47..4a9185a425 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 e9a628bcfb..c2120e7f2e 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 efa638c467..beb68cf92c 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/d06/classedash__packager_1_1media_1_1AesCtrDecryptor.html b/docs/df/d06/classedash__packager_1_1media_1_1AesCtrDecryptor.html new file mode 100644 index 0000000000..6e292f0b1c --- /dev/null +++ b/docs/df/d06/classedash__packager_1_1media_1_1AesCtrDecryptor.html @@ -0,0 +1,187 @@ + + + + + + +DASH Media Packaging SDK: edash_packager::media::AesCtrDecryptor Class Reference + + + + + + + + + +
+
+ + + + + + +
+
DASH Media Packaging SDK +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
edash_packager::media::AesCtrDecryptor Class Reference
+
+
+
+Inheritance diagram for edash_packager::media::AesCtrDecryptor:
+
+
+ + +edash_packager::media::AesDecryptor + +
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

+uint32_t block_offset () const
 
AesDecryptor implementation overrides.
+bool InitializeWithIv (const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv) override
 
+bool Decrypt (const uint8_t *ciphertext, size_t ciphertext_size, uint8_t *plaintext) override
 
+bool Decrypt (const std::vector< uint8_t > &ciphertext, std::vector< uint8_t > *plaintext) override
 
+bool Decrypt (const std::string &ciphertext, std::string *plaintext) override
 
bool SetIv (const std::vector< uint8_t > &iv) override
 
- Public Member Functions inherited from edash_packager::media::AesDecryptor
+const std::vector< uint8_t > & iv () const
 
+ + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from edash_packager::media::AesDecryptor
+std::vector< uint8_t > iv_
 
+scoped_ptr< AES_KEY > aes_key_
 
+

Detailed Description

+
+

Definition at line 64 of file aes_decryptor.h.

+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + + +
bool edash_packager::media::AesCtrDecryptor::SetIv (const std::vector< uint8_t > & iv)
+
+overridevirtual
+
+

Set IV. block_offset_ is reset to 0 on success.

+
Returns
true if successful, false if the input is invalid.
+ +

Implements edash_packager::media::AesDecryptor.

+ +

Definition at line 60 of file aes_decryptor.cc.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/docs/df/d06/classedash__packager_1_1media_1_1AesCtrDecryptor.png b/docs/df/d06/classedash__packager_1_1media_1_1AesCtrDecryptor.png new file mode 100644 index 0000000000..50dc6f3816 Binary files /dev/null and b/docs/df/d06/classedash__packager_1_1media_1_1AesCtrDecryptor.png differ 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 4f308b18b3..acc7cc4610 100644 --- a/docs/df/d0c/classedash__packager_1_1media_1_1VPCodecConfiguration-members.html +++ b/docs/df/d0c/classedash__packager_1_1media_1_1VPCodecConfiguration-members.html @@ -131,7 +131,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d1a/offset__byte__queue_8cc_source.html b/docs/df/d1a/offset__byte__queue_8cc_source.html index d4343c63d8..b703a6520b 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 ad66bfbdd1..f68623ab1c 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 6882ffa82c..bd6477fc61 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 76e269e100..359ff54232 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 @@ -212,7 +212,7 @@ Additional Inherited Members diff --git a/docs/df/d22/validate__flag_8h_source.html b/docs/df/d22/validate__flag_8h_source.html index 70509b0328..9959d220d5 100644 --- a/docs/df/d22/validate__flag_8h_source.html +++ b/docs/df/d22/validate__flag_8h_source.html @@ -120,7 +120,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d2f/structedash__packager_1_1media_1_1mp4_1_1Language.html b/docs/df/d2f/structedash__packager_1_1media_1_1mp4_1_1Language.html index 50f9432069..3f5d0563cc 100644 --- a/docs/df/d2f/structedash__packager_1_1media_1_1mp4_1_1Language.html +++ b/docs/df/d2f/structedash__packager_1_1media_1_1mp4_1_1Language.html @@ -120,7 +120,7 @@ std::string code< diff --git a/docs/df/d30/classedash__packager_1_1media_1_1ContentEncoding.html b/docs/df/d30/classedash__packager_1_1media_1_1ContentEncoding.html index c47c96ed65..7c45205272 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 57bc3f8fec..948396faeb 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 b28d784820..d3686ba73f 100644 --- a/docs/df/d32/audio__stream__info_8h_source.html +++ b/docs/df/d32/audio__stream__info_8h_source.html @@ -187,7 +187,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d3c/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentDecodeTime-members.html b/docs/df/d3c/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentDecodeTime-members.html index 96966bc409..87b70ca53e 100644 --- a/docs/df/d3c/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentDecodeTime-members.html +++ b/docs/df/d3c/structedash__packager_1_1media_1_1mp4_1_1TrackFragmentDecodeTime-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d40/classedash__packager_1_1media_1_1Cluster.html b/docs/df/d40/classedash__packager_1_1media_1_1Cluster.html index 655a4d4cb3..0b449cfc04 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 6063246053..33ed676a69 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 @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); GetIndexRange(size_t *offset, size_t *size)=0edash_packager::media::mp4::Segmenterpure virtual GetInitRange(size_t *offset, size_t *size)=0edash_packager::media::mp4::Segmenterpure virtual GetReferenceTimeScale() const (defined in edash_packager::media::mp4::Segmenter)edash_packager::media::mp4::Segmenter - 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)edash_packager::media::mp4::Segmenter + 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, EncryptionMode encryption_mode)edash_packager::media::mp4::Segmenter moov() (defined in edash_packager::media::mp4::Segmenter)edash_packager::media::mp4::Segmenterinlineprotected muxer_listener() (defined in edash_packager::media::mp4::Segmenter)edash_packager::media::mp4::Segmenterinlineprotected options() const (defined in edash_packager::media::mp4::Segmenter)edash_packager::media::mp4::Segmenterinlineprotected @@ -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 c1e188f9ab..784c64fb38 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 4a0370625d..add99b8c0c 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 843bdae7d4..96cc819489 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 6908f9657c..fe122b3abe 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 @@ -203,7 +203,7 @@ Additional Inherited Members diff --git a/docs/df/d6a/structedash__packager_1_1media_1_1mp4_1_1VideoSampleEntry.html b/docs/df/d6a/structedash__packager_1_1media_1_1mp4_1_1VideoSampleEntry.html index 996769817e..159bff3242 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 @@ -194,7 +194,7 @@ Additional Inherited Members diff --git a/docs/df/d6e/structedash__packager_1_1media_1_1mp4_1_1Language-members.html b/docs/df/d6e/structedash__packager_1_1media_1_1mp4_1_1Language-members.html index 880b485c53..16af5ba26e 100644 --- a/docs/df/d6e/structedash__packager_1_1media_1_1mp4_1_1Language-members.html +++ b/docs/df/d6e/structedash__packager_1_1media_1_1mp4_1_1Language-members.html @@ -99,7 +99,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d76/structedash__packager_1_1media_1_1mp4_1_1SampleToChunk.html b/docs/df/d76/structedash__packager_1_1media_1_1mp4_1_1SampleToChunk.html index e4840ea0d3..330a497a93 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 @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/df/d7d/webm__info__parser_8cc_source.html b/docs/df/d7d/webm__info__parser_8cc_source.html index c14f171c81..22bdc6bc43 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 fb112959ba..e28dfc5c3c 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 @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/df/d89/classedash__packager_1_1media_1_1SegmentTestBase_1_1ClusterParser.html b/docs/df/d89/classedash__packager_1_1media_1_1SegmentTestBase_1_1ClusterParser.html index c752cfa0bd..c52b4892e7 100644 --- a/docs/df/d89/classedash__packager_1_1media_1_1SegmentTestBase_1_1ClusterParser.html +++ b/docs/df/d89/classedash__packager_1_1media_1_1SegmentTestBase_1_1ClusterParser.html @@ -128,7 +128,7 @@ int cluster_count () c diff --git a/docs/df/d8a/vp9__parser_8h_source.html b/docs/df/d8a/vp9__parser_8h_source.html index bfba08a989..df9da335a9 100644 --- a/docs/df/d8a/vp9__parser_8h_source.html +++ b/docs/df/d8a/vp9__parser_8h_source.html @@ -136,7 +136,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d8a/vpx__parser_8h_source.html b/docs/df/d8a/vpx__parser_8h_source.html index 2f239caecf..0fb1129169 100644 --- a/docs/df/d8a/vpx__parser_8h_source.html +++ b/docs/df/d8a/vpx__parser_8h_source.html @@ -145,7 +145,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d96/xml__node_8cc_source.html b/docs/df/d96/xml__node_8cc_source.html index 6463c803d6..17c843f88f 100644 --- a/docs/df/d96/xml__node_8cc_source.html +++ b/docs/df/d96/xml__node_8cc_source.html @@ -492,7 +492,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/da9/classedash__packager_1_1media_1_1mp4_1_1Fragmenter-members.html b/docs/df/da9/classedash__packager_1_1media_1_1mp4_1_1Fragmenter-members.html index 97a46710b8..fcb3257800 100644 --- a/docs/df/da9/classedash__packager_1_1media_1_1mp4_1_1Fragmenter-members.html +++ b/docs/df/da9/classedash__packager_1_1media_1_1mp4_1_1Fragmenter-members.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/da9/structedash__packager_1_1media_1_1mp4_1_1WebVTTSourceLabelBox.html b/docs/df/da9/structedash__packager_1_1media_1_1mp4_1_1WebVTTSourceLabelBox.html index 072478d8d1..59f5418103 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 @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/df/dad/decrypt__config_8h_source.html b/docs/df/dad/decrypt__config_8h_source.html index 1de99e0fa3..cbecb4826e 100644 --- a/docs/df/dad/decrypt__config_8h_source.html +++ b/docs/df/dad/decrypt__config_8h_source.html @@ -100,58 +100,63 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
11 #include <vector>
12 
13 #include "packager/base/memory/scoped_ptr.h"
-
14 
-
15 namespace edash_packager {
-
16 namespace media {
-
17 
- - -
29  : clear_bytes(0), cipher_bytes(0) {}
-
30  SubsampleEntry(uint16_t clear_bytes, uint32_t cipher_bytes)
-
31  : clear_bytes(clear_bytes), cipher_bytes(cipher_bytes) {}
-
32 
-
33  uint16_t clear_bytes;
-
34  uint32_t cipher_bytes;
-
35 };
-
36 
- -
40  public:
-
42  static const size_t kDecryptionKeySize = 16;
-
43 
-
49  DecryptConfig(const std::vector<uint8_t>& key_id,
-
50  const std::vector<uint8_t>& iv,
-
51  const std::vector<SubsampleEntry>& subsamples);
-
52  ~DecryptConfig();
-
53 
-
54  const std::vector<uint8_t>& key_id() const { return key_id_; }
-
55  const std::vector<uint8_t>& iv() const { return iv_; }
-
56  const std::vector<SubsampleEntry>& subsamples() const { return subsamples_; }
+
14 #include "packager/media/base/encryption_modes.h"
+
15 
+
16 namespace edash_packager {
+
17 namespace media {
+
18 
+ + +
30  : clear_bytes(0), cipher_bytes(0) {}
+
31  SubsampleEntry(uint16_t clear_bytes, uint32_t cipher_bytes)
+
32  : clear_bytes(clear_bytes), cipher_bytes(cipher_bytes) {}
+
33 
+
34  uint16_t clear_bytes;
+
35  uint32_t cipher_bytes;
+
36 };
+
37 
+ +
41  public:
+
43  static const size_t kDecryptionKeySize = 16;
+
44 
+
52  DecryptConfig(const std::vector<uint8_t>& key_id,
+
53  const std::vector<uint8_t>& iv,
+
54  const std::vector<SubsampleEntry>& subsamples,
+
55  EncryptionMode decryption_mode);
+
56  ~DecryptConfig();
57 
-
58  private:
-
59  const std::vector<uint8_t> key_id_;
-
60 
-
61  // Initialization vector.
-
62  const std::vector<uint8_t> iv_;
-
63 
-
64  // Subsample information. May be empty for some formats, meaning entire frame
-
65  // (less data ignored by data_offset_) is encrypted.
-
66  const std::vector<SubsampleEntry> subsamples_;
-
67 
-
68  DISALLOW_COPY_AND_ASSIGN(DecryptConfig);
-
69 };
-
70 
-
71 } // namespace media
-
72 } // namespace edash_packager
-
73 
-
74 #endif // MEDIA_BASE_DECRYPT_CONFIG_H_
- -
static const size_t kDecryptionKeySize
Keys are always 128 bits.
- -
DecryptConfig(const std::vector< uint8_t > &key_id, const std::vector< uint8_t > &iv, const std::vector< SubsampleEntry > &subsamples)
+
58  const std::vector<uint8_t>& key_id() const { return key_id_; }
+
59  const std::vector<uint8_t>& iv() const { return iv_; }
+
60  const std::vector<SubsampleEntry>& subsamples() const { return subsamples_; }
+
61  EncryptionMode decryption_mode() const { return decryption_mode_; }
+
62 
+
63  private:
+
64  const std::vector<uint8_t> key_id_;
+
65 
+
66  // Initialization vector.
+
67  const std::vector<uint8_t> iv_;
+
68 
+
69  // Subsample information. May be empty for some formats, meaning entire frame
+
70  // (less data ignored by data_offset_) is encrypted.
+
71  const std::vector<SubsampleEntry> subsamples_;
+
72 
+
73  EncryptionMode decryption_mode_;
+
74 
+
75  DISALLOW_COPY_AND_ASSIGN(DecryptConfig);
+
76 };
+
77 
+
78 } // namespace media
+
79 } // namespace edash_packager
+
80 
+
81 #endif // MEDIA_BASE_DECRYPT_CONFIG_H_
+ +
DecryptConfig(const std::vector< uint8_t > &key_id, const std::vector< uint8_t > &iv, const std::vector< SubsampleEntry > &subsamples, EncryptionMode decryption_mode)
+
static const size_t kDecryptionKeySize
Keys are always 128 bits.
+ 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 646568de53..ad027d0a62 100644 --- a/docs/df/db4/classedash__packager_1_1media_1_1BitReader.html +++ b/docs/df/db4/classedash__packager_1_1media_1_1BitReader.html @@ -362,7 +362,7 @@ template<typename T > diff --git a/docs/df/db8/structedash__packager_1_1media_1_1mp4_1_1AC3Specific-members.html b/docs/df/db8/structedash__packager_1_1media_1_1mp4_1_1AC3Specific-members.html index caa3872785..987a8cb3f2 100644 --- a/docs/df/db8/structedash__packager_1_1media_1_1mp4_1_1AC3Specific-members.html +++ b/docs/df/db8/structedash__packager_1_1media_1_1mp4_1_1AC3Specific-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/dbc/structedash__packager_1_1media_1_1mp4_1_1ChunkLargeOffset-members.html b/docs/df/dbc/structedash__packager_1_1media_1_1mp4_1_1ChunkLargeOffset-members.html index 8c249a5488..b7eecaabcb 100644 --- a/docs/df/dbc/structedash__packager_1_1media_1_1mp4_1_1ChunkLargeOffset-members.html +++ b/docs/df/dbc/structedash__packager_1_1media_1_1mp4_1_1ChunkLargeOffset-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/dd1/structedash__packager_1_1media_1_1mp4_1_1FileType-members.html b/docs/df/dd1/structedash__packager_1_1media_1_1mp4_1_1FileType-members.html index cb9faf3db7..7ce9db74ca 100644 --- a/docs/df/dd1/structedash__packager_1_1media_1_1mp4_1_1FileType-members.html +++ b/docs/df/dd1/structedash__packager_1_1media_1_1mp4_1_1FileType-members.html @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/dd2/classedash__packager_1_1MockMpdBuilder-members.html b/docs/df/dd2/classedash__packager_1_1MockMpdBuilder-members.html index 590249fcd0..b454c67c31 100644 --- a/docs/df/dd2/classedash__packager_1_1MockMpdBuilder-members.html +++ b/docs/df/dd2/classedash__packager_1_1MockMpdBuilder-members.html @@ -112,7 +112,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/dd2/mpd__utils_8h_source.html b/docs/df/dd2/mpd__utils_8h_source.html index f2e2b15fa9..2469371094 100644 --- a/docs/df/dd2/mpd__utils_8h_source.html +++ b/docs/df/dd2/mpd__utils_8h_source.html @@ -175,7 +175,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 207c70dfb5..d72cae135e 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 7ad7fa7388..fb1591403e 100644 --- a/docs/df/ddc/webm_2segmenter_8h_source.html +++ b/docs/df/ddc/webm_2segmenter_8h_source.html @@ -250,7 +250,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/dde/classedash__packager_1_1media_1_1BufferWriter.html b/docs/df/dde/classedash__packager_1_1media_1_1BufferWriter.html index def4259cef..749edd47a7 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 2ac95100f7..e1d85ce07e 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 ce2794852a..321061a956 100644 --- a/docs/df/de3/structedash__packager_1_1media_1_1mp4_1_1TrackHeader-members.html +++ b/docs/df/de3/structedash__packager_1_1media_1_1mp4_1_1TrackHeader-members.html @@ -125,7 +125,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/de3/text__track__config_8cc_source.html b/docs/df/de3/text__track__config_8cc_source.html index 605cf7d479..723550f921 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 66a2b1a533..5e8c313729 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 960fd30e93..ed541482ee 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 f652cf5eb9..6d58f24892 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 a97ebe9b2f..197f8cc39c 100644 --- a/docs/df/df4/classedash__packager_1_1media_1_1SeekHead.html +++ b/docs/df/df4/classedash__packager_1_1media_1_1SeekHead.html @@ -148,7 +148,7 @@ void set_tracks_pos (u diff --git a/docs/df/df8/classedash__packager_1_1media_1_1Nalu-members.html b/docs/df/df8/classedash__packager_1_1media_1_1Nalu-members.html index 44a901effa..6ab10a2a44 100644 --- a/docs/df/df8/classedash__packager_1_1media_1_1Nalu-members.html +++ b/docs/df/df8/classedash__packager_1_1media_1_1Nalu-members.html @@ -129,7 +129,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/dfa/classedash__packager_1_1media_1_1RsaPublicKey-members.html b/docs/df/dfa/classedash__packager_1_1media_1_1RsaPublicKey-members.html index d31877a674..7afead9f32 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 9706f95e2e..ae6a6d4d59 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 33210515a1..b61eb780d3 100644 --- a/docs/dir_279fd47bebb21302c25cfb685e84c359.html +++ b/docs/dir_279fd47bebb21302c25cfb685e84c359.html @@ -119,7 +119,7 @@ Files diff --git a/docs/dir_2eceb70145328c029a5f43350007537a.html b/docs/dir_2eceb70145328c029a5f43350007537a.html index 770c11efdc..649a17da12 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 24fb55d3ce..cf16bbcd10 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 30bca8d1dc..76817a10c3 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 b1f75e6854..bbdcd2d7c7 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 d3e102eadd..597ee86646 100644 --- a/docs/dir_5039d854a18988ed1f1dbebc120ffbf7.html +++ b/docs/dir_5039d854a18988ed1f1dbebc120ffbf7.html @@ -181,7 +181,7 @@ Files diff --git a/docs/dir_5eb2e460866db0ed29e32d64402e5c22.html b/docs/dir_5eb2e460866db0ed29e32d64402e5c22.html index 590eeab8a7..078bc25cb8 100644 --- a/docs/dir_5eb2e460866db0ed29e32d64402e5c22.html +++ b/docs/dir_5eb2e460866db0ed29e32d64402e5c22.html @@ -141,7 +141,7 @@ Files diff --git a/docs/dir_65f7acfa8cf3a5f1edc11faa2428b914.html b/docs/dir_65f7acfa8cf3a5f1edc11faa2428b914.html index 1083ab12da..91badff08f 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 8ee390a6e3..39a6f6f459 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 4f02770518..3f54af5bf0 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 12a0fb0965..2087a5c7ae 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 7dfc7c95f2..ef2c3f91b6 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 c5a12edfc6..0dfd379e73 100644 --- a/docs/dir_c6ada2450b25ab5438a4dba6c9b890af.html +++ b/docs/dir_c6ada2450b25ab5438a4dba6c9b890af.html @@ -85,6 +85,10 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); + + + + @@ -133,6 +137,8 @@ Files + + @@ -225,7 +231,7 @@ Files diff --git a/docs/dir_d422163b96683743ed3963d4aac17747.html b/docs/dir_d422163b96683743ed3963d4aac17747.html index 161e2e90e7..04694e1bd4 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 cde0af37e5..bd27b5d78f 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 d249b8e4d8..ddd011979c 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 eace1bfca5..8aefa3fa71 100644 --- a/docs/files.html +++ b/docs/files.html @@ -109,74 +109,77 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -390,7 +393,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions.html b/docs/functions.html index 4c977ef362..a510794706 100644 --- a/docs/functions.html +++ b/docs/functions.html @@ -220,7 +220,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_b.html b/docs/functions_b.html index f533722f45..134f5381fc 100644 --- a/docs/functions_b.html +++ b/docs/functions_b.html @@ -238,7 +238,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_c.html b/docs/functions_c.html index 7e4e75ca69..b59114e178 100644 --- a/docs/functions_c.html +++ b/docs/functions_c.html @@ -231,7 +231,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_d.html b/docs/functions_d.html index 9a757d7e9e..1166211206 100644 --- a/docs/functions_d.html +++ b/docs/functions_d.html @@ -134,12 +134,10 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : edash_packager::media::mp4::DecodingTimeIterator
  • Decrypt() -: edash_packager::media::AesCbcCtsDecryptor -, edash_packager::media::AesCbcPkcs5Decryptor -, edash_packager::media::RsaPrivateKey +: edash_packager::media::RsaPrivateKey
  • DecryptConfig() -: edash_packager::media::DecryptConfig +: edash_packager::media::DecryptConfig
  • Delete() : edash_packager::media::File @@ -159,7 +157,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_e.html b/docs/functions_e.html index 3984d9e93c..0306bf58bc 100644 --- a/docs/functions_e.html +++ b/docs/functions_e.html @@ -128,21 +128,19 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : edash_packager::media::ProducerConsumerQueue< T >
  • Encrypt() -: edash_packager::media::AesCbcCtsEncryptor -, edash_packager::media::AesCbcPkcs5Encryptor -, edash_packager::media::RsaPublicKey +: edash_packager::media::RsaPublicKey
  • EncryptFrame() : edash_packager::media::webm::Encryptor
  • EncryptingFragmenter() -: edash_packager::media::mp4::EncryptingFragmenter +: edash_packager::media::mp4::EncryptingFragmenter
  • diff --git a/docs/functions_eval.html b/docs/functions_eval.html index ddb64e2516..2c57ede741 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 d4a0c13fdf..6323bad2a2 100644 --- a/docs/functions_f.html +++ b/docs/functions_f.html @@ -187,7 +187,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func.html b/docs/functions_func.html index 0df43c355f..8b4674e30e 100644 --- a/docs/functions_func.html +++ b/docs/functions_func.html @@ -220,7 +220,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_b.html b/docs/functions_func_b.html index b279e4543d..d0d4a8932f 100644 --- a/docs/functions_func_b.html +++ b/docs/functions_func_b.html @@ -235,7 +235,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_c.html b/docs/functions_func_c.html index 4478c6a099..7c02fbecb0 100644 --- a/docs/functions_func_c.html +++ b/docs/functions_func_c.html @@ -231,7 +231,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_d.html b/docs/functions_func_d.html index ec663f93e8..c82a39552c 100644 --- a/docs/functions_func_d.html +++ b/docs/functions_func_d.html @@ -134,12 +134,10 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : edash_packager::media::mp4::DecodingTimeIterator
  • Decrypt() -: edash_packager::media::AesCbcCtsDecryptor -, edash_packager::media::AesCbcPkcs5Decryptor -, edash_packager::media::RsaPrivateKey +: edash_packager::media::RsaPrivateKey
  • DecryptConfig() -: edash_packager::media::DecryptConfig +: edash_packager::media::DecryptConfig
  • Delete() : edash_packager::media::File @@ -159,7 +157,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_e.html b/docs/functions_func_e.html index 57d3abe063..25ce5c98a2 100644 --- a/docs/functions_func_e.html +++ b/docs/functions_func_e.html @@ -128,21 +128,19 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : edash_packager::media::ProducerConsumerQueue< T >
  • Encrypt() -: edash_packager::media::AesCbcCtsEncryptor -, edash_packager::media::AesCbcPkcs5Encryptor -, edash_packager::media::RsaPublicKey +: edash_packager::media::RsaPublicKey
  • EncryptFrame() : edash_packager::media::webm::Encryptor
  • 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 63bb88b870..fb96bfb135 100644 --- a/docs/functions_func_f.html +++ b/docs/functions_func_f.html @@ -181,7 +181,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_g.html b/docs/functions_func_g.html index a327076b46..66aae4ba77 100644 --- a/docs/functions_func_g.html +++ b/docs/functions_func_g.html @@ -238,7 +238,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_h.html b/docs/functions_func_h.html index 9cd2f3fcb3..03592d8e60 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 d2778099bb..2bb40cdd48 100644 --- a/docs/functions_func_i.html +++ b/docs/functions_func_i.html @@ -143,7 +143,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • Initialize() : edash_packager::media::Demuxer , edash_packager::media::mp4::H264VideoSliceHeaderParser -, edash_packager::media::mp4::Segmenter +, edash_packager::media::mp4::Segmenter , edash_packager::media::mp4::VideoSliceHeaderParser , edash_packager::media::NalUnitToByteStreamConverter , edash_packager::media::webm::Encryptor @@ -154,14 +154,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , edash_packager::media::mp4::Fragmenter
  • InitializeWithIv() -: edash_packager::media::AesCbcCtsDecryptor -, edash_packager::media::AesCbcCtsEncryptor -, edash_packager::media::AesCbcPkcs5Decryptor -, edash_packager::media::AesCbcPkcs5Encryptor -, edash_packager::media::AesCtrEncryptor +: edash_packager::media::AesCbcCtsEncryptor +, edash_packager::media::AesCbcPkcs5Encryptor +, edash_packager::media::AesCtrEncryptor +, edash_packager::media::AesEncryptor
  • InitializeWithRandomIv() -: edash_packager::media::AesCtrEncryptor +: edash_packager::media::AesEncryptor
  • InjectClockForTesting() : edash_packager::MpdBuilder @@ -183,7 +182,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 @@ -203,7 +202,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_k.html b/docs/functions_func_k.html index 5d0c761eb6..d8c001cf09 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 a62967852a..78c4d679e2 100644 --- a/docs/functions_func_l.html +++ b/docs/functions_func_l.html @@ -134,7 +134,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_m.html b/docs/functions_func_m.html index 76846dc0e8..eaaf4d0a0e 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 816f560615..3ee07be377 100644 --- a/docs/functions_func_n.html +++ b/docs/functions_func_n.html @@ -165,7 +165,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_o.html b/docs/functions_func_o.html index 0b81d1f3df..8392c1c217 100644 --- a/docs/functions_func_o.html +++ b/docs/functions_func_o.html @@ -161,7 +161,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_p.html b/docs/functions_func_p.html index e6ff3437d6..ce851924da 100644 --- a/docs/functions_func_p.html +++ b/docs/functions_func_p.html @@ -206,7 +206,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_r.html b/docs/functions_func_r.html index f0f0780aef..437f76f2eb 100644 --- a/docs/functions_func_r.html +++ b/docs/functions_func_r.html @@ -200,7 +200,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_s.html b/docs/functions_func_s.html index bbc7f551ea..c592e5189f 100644 --- a/docs/functions_func_s.html +++ b/docs/functions_func_s.html @@ -189,15 +189,18 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : edash_packager::xml::XmlNode
  • SetIv() -: edash_packager::media::AesCbcCtsDecryptor -, edash_packager::media::AesCbcCtsEncryptor -, edash_packager::media::AesCbcPkcs5Decryptor -, edash_packager::media::AesCbcPkcs5Encryptor -, edash_packager::media::AesCtrEncryptor +: edash_packager::media::AesCbcCtsDecryptor +, edash_packager::media::AesCbcCtsEncryptor +, edash_packager::media::AesCbcPkcs5Decryptor +, edash_packager::media::AesCbcPkcs5Encryptor +, edash_packager::media::AesCtrDecryptor +, edash_packager::media::AesCtrEncryptor +, edash_packager::media::AesDecryptor +, edash_packager::media::AesEncryptor
  • SetKeySource() : edash_packager::media::Demuxer -, edash_packager::media::Muxer +, edash_packager::media::Muxer
  • SetMuxerListener() : edash_packager::media::Muxer @@ -240,7 +243,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 > @@ -261,7 +264,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_t.html b/docs/functions_func_t.html index 02539cadb0..d8d78cc5da 100644 --- a/docs/functions_func_t.html +++ b/docs/functions_func_t.html @@ -174,7 +174,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_u.html b/docs/functions_func_u.html index bba43ddd32..ff7937a2cd 100644 --- a/docs/functions_func_u.html +++ b/docs/functions_func_u.html @@ -132,7 +132,10 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , edash_packager::Representation
  • UpdateIv() -: edash_packager::media::AesCtrEncryptor +: edash_packager::media::AesCbcCtsEncryptor +, edash_packager::media::AesCbcPkcs5Encryptor +, edash_packager::media::AesCtrEncryptor +, edash_packager::media::AesEncryptor
  • UpdateProgress() : edash_packager::media::mp4::Segmenter @@ -142,7 +145,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_v.html b/docs/functions_func_v.html index 76ad235548..10deb20db0 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 ad36b4c9fb..7bda9351f3 100644 --- a/docs/functions_func_w.html +++ b/docs/functions_func_w.html @@ -176,7 +176,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_x.html b/docs/functions_func_x.html index e06fb15447..727e1e526d 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 02a8f6c5b9..dbd125d33b 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 2c2a914d0a..37e67f98fb 100644 --- a/docs/functions_g.html +++ b/docs/functions_g.html @@ -238,7 +238,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_h.html b/docs/functions_h.html index 868e81e877..c16e4c68b4 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 af54c67981..4fa04ac170 100644 --- a/docs/functions_i.html +++ b/docs/functions_i.html @@ -146,7 +146,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • Initialize() : edash_packager::media::Demuxer , edash_packager::media::mp4::H264VideoSliceHeaderParser -, edash_packager::media::mp4::Segmenter +, edash_packager::media::mp4::Segmenter , edash_packager::media::mp4::VideoSliceHeaderParser , edash_packager::media::NalUnitToByteStreamConverter , edash_packager::media::webm::Encryptor @@ -157,14 +157,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , edash_packager::media::mp4::Fragmenter
  • InitializeWithIv() -: edash_packager::media::AesCbcCtsDecryptor -, edash_packager::media::AesCbcCtsEncryptor -, edash_packager::media::AesCbcPkcs5Decryptor -, edash_packager::media::AesCbcPkcs5Encryptor -, edash_packager::media::AesCtrEncryptor +: edash_packager::media::AesCbcCtsEncryptor +, edash_packager::media::AesCbcPkcs5Encryptor +, edash_packager::media::AesCtrEncryptor +, edash_packager::media::AesEncryptor
  • InitializeWithRandomIv() -: edash_packager::media::AesCtrEncryptor +: edash_packager::media::AesEncryptor
  • InjectClockForTesting() : edash_packager::MpdBuilder @@ -206,7 +205,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_k.html b/docs/functions_k.html index 5cc02db638..4c34c6da15 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
  • kOrderInvalid : edash_packager::media::ContentEncoding @@ -143,7 +143,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_l.html b/docs/functions_l.html index bdfda5eec7..5f10a52ae9 100644 --- a/docs/functions_l.html +++ b/docs/functions_l.html @@ -134,7 +134,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_m.html b/docs/functions_m.html index cf68fbe2b4..e1c4b0e8e1 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 679e64af3a..aa60d0093a 100644 --- a/docs/functions_n.html +++ b/docs/functions_n.html @@ -171,7 +171,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_o.html b/docs/functions_o.html index 7f87611d9d..8051a2f003 100644 --- a/docs/functions_o.html +++ b/docs/functions_o.html @@ -164,7 +164,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_p.html b/docs/functions_p.html index 68771b8601..9118c2e740 100644 --- a/docs/functions_p.html +++ b/docs/functions_p.html @@ -212,7 +212,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_r.html b/docs/functions_r.html index 2ea45a67fd..3741963e49 100644 --- a/docs/functions_r.html +++ b/docs/functions_r.html @@ -200,7 +200,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_s.html b/docs/functions_s.html index e313cff237..43e31d1a44 100644 --- a/docs/functions_s.html +++ b/docs/functions_s.html @@ -201,15 +201,18 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : edash_packager::xml::XmlNode
  • SetIv() -: edash_packager::media::AesCbcCtsDecryptor -, edash_packager::media::AesCbcCtsEncryptor -, edash_packager::media::AesCbcPkcs5Decryptor -, edash_packager::media::AesCbcPkcs5Encryptor -, edash_packager::media::AesCtrEncryptor +: edash_packager::media::AesCbcCtsDecryptor +, edash_packager::media::AesCbcCtsEncryptor +, edash_packager::media::AesCbcPkcs5Decryptor +, edash_packager::media::AesCbcPkcs5Encryptor +, edash_packager::media::AesCtrDecryptor +, edash_packager::media::AesCtrEncryptor +, edash_packager::media::AesDecryptor +, edash_packager::media::AesEncryptor
  • SetKeySource() : edash_packager::media::Demuxer -, edash_packager::media::Muxer +, edash_packager::media::Muxer
  • SetMuxerListener() : edash_packager::media::Muxer @@ -255,7 +258,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 > @@ -276,7 +279,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_t.html b/docs/functions_t.html index a473902cc7..5916c810b9 100644 --- a/docs/functions_t.html +++ b/docs/functions_t.html @@ -177,7 +177,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_type.html b/docs/functions_type.html index e9d1448a62..7ff621087a 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 ac71eb2329..c26e54302b 100644 --- a/docs/functions_u.html +++ b/docs/functions_u.html @@ -132,7 +132,10 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , edash_packager::Representation
  • UpdateIv() -: edash_packager::media::AesCtrEncryptor +: edash_packager::media::AesCbcCtsEncryptor +, edash_packager::media::AesCbcPkcs5Encryptor +, edash_packager::media::AesCtrEncryptor +, edash_packager::media::AesEncryptor
  • UpdateProgress() : edash_packager::media::mp4::Segmenter @@ -142,7 +145,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_v.html b/docs/functions_v.html index 274365ba96..9a41b4d732 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 0c6ac648c5..437d7626a6 100644 --- a/docs/functions_vars.html +++ b/docs/functions_vars.html @@ -144,7 +144,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_w.html b/docs/functions_w.html index beed9a0877..70fa86bde2 100644 --- a/docs/functions_w.html +++ b/docs/functions_w.html @@ -176,7 +176,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_x.html b/docs/functions_x.html index cd5120425e..873dac681b 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 4dc6a681e9..2ebba7f1ac 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 1e8a8bd725..d9ff6c64df 100644 --- a/docs/hierarchy.html +++ b/docs/hierarchy.html @@ -92,255 +92,258 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Files

    file  aes_decryptor.cc [code]
     
    file  aes_decryptor.h [code]
     
    file  aes_encryptor.cc [code]
     
    file  aes_encryptor.h [code]
     
    file  demuxer.h [code]
     
    file  encryption_modes.h [code]
     
    file  http_key_fetcher.cc [code]
     
    file  http_key_fetcher.h [code]
    |\*widevine_encryption_flags.h
    o-media
    |o+base
    |o+event
    oCedash_packager::AdaptationSet
    oCedash_packager::media::mp2t::AdtsHeader
    oCedash_packager::media::AesCbcCtsDecryptor
    oCedash_packager::media::AesCbcCtsEncryptor
    oCedash_packager::media::AesCbcPkcs5Decryptor
    oCedash_packager::media::AesCbcPkcs5Encryptor
    oCedash_packager::media::AesCtrEncryptor
    oCedash_packager::media::AudioTimestampHelper
    oCBandwidthEstimator
    oCedash_packager::media::BitReaderA class to read bit streams
    oCedash_packager::media::mp4::Box
    oCedash_packager::media::mp4::BoxBuffer
    oCedash_packager::media::BufferReader
    oCedash_packager::media::BufferWriter
    oCedash_packager::media::ByteQueue
    oCedash_packager::media::mp4::CencSampleEncryptionInfoEntry
    oCedash_packager::media::mp4::ChunkInfo
    oCedash_packager::media::mp4::ChunkInfoIterator
    oCedash_packager::media::Cluster
    oCedash_packager::media::ClusterBuilder
    oCedash_packager::media::mp4::CompositionOffset
    oCedash_packager::media::mp4::CompositionOffsetIterator
    oCedash_packager::media::ContentEncoding
    oCedash_packager::ContentProtectionElement
    oCedash_packager::media::Cue
    oCedash_packager::media::DecoderConfiguration
    oCedash_packager::media::mp4::DecodingTime
    oCedash_packager::media::mp4::DecodingTimeIterator
    oCedash_packager::media::DecryptConfig
    oCedash_packager::media::DecryptorSourceDecryptorSource wraps KeySource and is responsible for decryptor management
    oCedash_packager::media::Demuxer
    oCedash_packager::media::wvm::DemuxStreamIdMediaSample
    oCedash_packager::media::mp4::EditListEntry
    oCedash_packager::Element
    oCedash_packager::media::EncryptionKey
    oCedash_packager::media::webm::Encryptor
    oCedash_packager::media::mp4::ESDescriptor
    oCedash_packager::media::mp2t::EsParser
    oCedash_packager::media::FileDefine an abstract file interface
    oCedash_packager::media::FileCloser
    oCedash_packager::media::mp4::Fragmenter
    oCedash_packager::media::H264ByteToUnitStreamConverter
    oCedash_packager::media::H264DecRefPicMarking
    oCedash_packager::media::H264ModificationOfPicNum
    oCedash_packager::media::H264Parser
    oCedash_packager::media::H264Pps
    oCedash_packager::media::H264SEIMessage
    oCedash_packager::media::H264SEIRecoveryPoint
    oCedash_packager::media::H264SliceHeader
    oCedash_packager::media::H264Sps
    oCedash_packager::media::H264WeightingFactors
    oCedash_packager::media::H26xBitReader
    oCIMkvWriter
    oCedash_packager::media::IoCacheDeclaration of class which implements a thread-safe circular buffer
    oCedash_packager::media::KeyFetcherBase class for fetching keys from the license service
    oCedash_packager::media::KeySourceKeySource is responsible for encryption key acquisition
    oCedash_packager::media::mp4::Language
    oCedash_packager::media::LibcryptoThreadingConvenience class which initializes and terminates libcrypto threading
    oCedash_packager::media::MediaParser
    oCedash_packager::media::MediaStream
    oCedash_packager::MpdBuilderThis class generates DASH MPDs (Media Presentation Descriptions)
    oCedash_packager::MpdNotifier
    oCedash_packager::MpdNotifierFactory
    oCedash_packager::MpdOptionsDefines Mpd Options
    oCedash_packager::MpdWriter
    oCedash_packager::media::Muxer
    oCedash_packager::media::MuxerListener
    oCedash_packager::media::MuxerOptionsThis structure contains the list of configuration options for Muxer
    oCedash_packager::media::Nalu
    oCedash_packager::media::NalUnitToByteStreamConverter
    oCedash_packager::media::NaluReader
    oCedash_packager::media::OffsetByteQueue
    oCedash_packager::media::OnMediaEndParameters
    oCedash_packager::media::wvm::PrevSampleData
    oCedash_packager::media::mp4::PrivFrameImplemented per http://id3.org/id3v2.4.0-frames
    oCedash_packager::media::ProducerConsumerQueue< T >
    oCedash_packager::media::ProgressListenerThis class listens to progress updates events
    oCedash_packager::media::ProtectionSystemSpecificInfo
    oCRefCountedThreadSafe
    oCedash_packager::Representation
    oCedash_packager::RepresentationStateChangeListener
    oCedash_packager::media::RequestSignerAbstract class used for signature generation
    oCedash_packager::media::RsaPrivateKeyRsa private key, used for message signing and decryption
    oCedash_packager::media::RsaPublicKeyRsa public key, used for signature verification and encryption
    oCedash_packager::media::mp4::SampleEncryptionEntry
    oCedash_packager::media::mp4::SampleToGroupEntry
    oCedash_packager::media::SeekHead
    oCedash_packager::media::mp4::Segmenter
    oCedash_packager::media::webm::Segmenter
    oCedash_packager::SegmentInfo
    oCedash_packager::media::mp4::SegmentReference
    oCSimpleThread
    oCedash_packager::media::Status
    oCedash_packager::media::StreamDescriptor
    oCedash_packager::media::StreamDescriptorCompareFn
    oCedash_packager::media::SubsampleEntry
    oCedash_packager::media::mp4::SyncSampleIterator
    oCTest
    oCedash_packager::media::TextTrack
    oCedash_packager::media::TextTrackConfig
    oCedash_packager::media::mp4::TrackRunIterator
    oCedash_packager::media::TracksBuilder
    oCedash_packager::media::mp2t::TsPacket
    oCedash_packager::media::mp2t::TsSection
    oCedash_packager::media::mp4::VideoSliceHeaderParser
    oCedash_packager::media::VideoStreamInfoParameters
    oCedash_packager::media::VPCodecConfigurationClass for parsing or writing VP codec configuration data
    oCedash_packager::media::VPxFrameInfo
    oCedash_packager::media::VPxParser
    oCedash_packager::media::WebMListParser
    oCedash_packager::media::WebMParserClient
    oCedash_packager::media::WebMWebVTTParser
    oCedash_packager::xml::XmlDeleter
    \Cedash_packager::xml::XmlNode
    oCedash_packager::media::AesDecryptor
    oCedash_packager::media::AesEncryptor
    oCedash_packager::media::AudioTimestampHelper
    oCBandwidthEstimator
    oCedash_packager::media::BitReaderA class to read bit streams
    oCedash_packager::media::mp4::Box
    oCedash_packager::media::mp4::BoxBuffer
    oCedash_packager::media::BufferReader
    oCedash_packager::media::BufferWriter
    oCedash_packager::media::ByteQueue
    oCedash_packager::media::mp4::CencSampleEncryptionInfoEntry
    oCedash_packager::media::mp4::ChunkInfo
    oCedash_packager::media::mp4::ChunkInfoIterator
    oCedash_packager::media::Cluster
    oCedash_packager::media::ClusterBuilder
    oCedash_packager::media::mp4::CompositionOffset
    oCedash_packager::media::mp4::CompositionOffsetIterator
    oCedash_packager::media::ContentEncoding
    oCedash_packager::ContentProtectionElement
    oCedash_packager::media::Cue
    oCedash_packager::media::DecoderConfiguration
    oCedash_packager::media::mp4::DecodingTime
    oCedash_packager::media::mp4::DecodingTimeIterator
    oCedash_packager::media::DecryptConfig
    oCedash_packager::media::DecryptorSourceDecryptorSource wraps KeySource and is responsible for decryptor management
    oCedash_packager::media::Demuxer
    oCedash_packager::media::wvm::DemuxStreamIdMediaSample
    oCedash_packager::media::mp4::EditListEntry
    oCedash_packager::Element
    oCedash_packager::media::EncryptionKey
    oCedash_packager::media::webm::Encryptor
    oCedash_packager::media::mp4::ESDescriptor
    oCedash_packager::media::mp2t::EsParser
    oCedash_packager::media::FileDefine an abstract file interface
    oCedash_packager::media::FileCloser
    oCedash_packager::media::mp4::Fragmenter
    oCedash_packager::media::H264ByteToUnitStreamConverter
    oCedash_packager::media::H264DecRefPicMarking
    oCedash_packager::media::H264ModificationOfPicNum
    oCedash_packager::media::H264Parser
    oCedash_packager::media::H264Pps
    oCedash_packager::media::H264SEIMessage
    oCedash_packager::media::H264SEIRecoveryPoint
    oCedash_packager::media::H264SliceHeader
    oCedash_packager::media::H264Sps
    oCedash_packager::media::H264WeightingFactors
    oCedash_packager::media::H26xBitReader
    oCIMkvWriter
    oCedash_packager::media::IoCacheDeclaration of class which implements a thread-safe circular buffer
    oCedash_packager::media::KeyFetcherBase class for fetching keys from the license service
    oCedash_packager::media::KeySourceKeySource is responsible for encryption key acquisition
    oCedash_packager::media::mp4::Language
    oCedash_packager::media::LibcryptoThreadingConvenience class which initializes and terminates libcrypto threading
    oCedash_packager::media::MediaParser
    oCedash_packager::media::MediaStream
    oCedash_packager::MpdBuilderThis class generates DASH MPDs (Media Presentation Descriptions)
    oCedash_packager::MpdNotifier
    oCedash_packager::MpdNotifierFactory
    oCedash_packager::MpdOptionsDefines Mpd Options
    oCedash_packager::MpdWriter
    oCedash_packager::media::Muxer
    oCedash_packager::media::MuxerListener
    oCedash_packager::media::MuxerOptionsThis structure contains the list of configuration options for Muxer
    oCedash_packager::media::Nalu
    oCedash_packager::media::NalUnitToByteStreamConverter
    oCedash_packager::media::NaluReader
    oCedash_packager::media::OffsetByteQueue
    oCedash_packager::media::OnMediaEndParameters
    oCedash_packager::media::wvm::PrevSampleData
    oCedash_packager::media::mp4::PrivFrameImplemented per http://id3.org/id3v2.4.0-frames
    oCedash_packager::media::ProducerConsumerQueue< T >
    oCedash_packager::media::ProgressListenerThis class listens to progress updates events
    oCedash_packager::media::ProtectionSystemSpecificInfo
    oCRefCountedThreadSafe
    oCedash_packager::Representation
    oCedash_packager::RepresentationStateChangeListener
    oCedash_packager::media::RequestSignerAbstract class used for signature generation
    oCedash_packager::media::RsaPrivateKeyRsa private key, used for message signing and decryption
    oCedash_packager::media::RsaPublicKeyRsa public key, used for signature verification and encryption
    oCedash_packager::media::mp4::SampleEncryptionEntry
    oCedash_packager::media::mp4::SampleToGroupEntry
    oCedash_packager::media::SeekHead
    oCedash_packager::media::mp4::Segmenter
    oCedash_packager::media::webm::Segmenter
    oCedash_packager::SegmentInfo
    oCedash_packager::media::mp4::SegmentReference
    oCSimpleThread
    oCedash_packager::media::Status
    oCedash_packager::media::StreamDescriptor
    oCedash_packager::media::StreamDescriptorCompareFn
    oCedash_packager::media::SubsampleEntry
    oCedash_packager::media::mp4::SyncSampleIterator
    oCTest
    oCedash_packager::media::TextTrack
    oCedash_packager::media::TextTrackConfig
    oCedash_packager::media::mp4::TrackRunIterator
    oCedash_packager::media::TracksBuilder
    oCedash_packager::media::mp2t::TsPacket
    oCedash_packager::media::mp2t::TsSection
    oCedash_packager::media::mp4::VideoSliceHeaderParser
    oCedash_packager::media::VideoStreamInfoParameters
    oCedash_packager::media::VPCodecConfigurationClass for parsing or writing VP codec configuration data
    oCedash_packager::media::VPxFrameInfo
    oCedash_packager::media::VPxParser
    oCedash_packager::media::WebMListParser
    oCedash_packager::media::WebMParserClient
    oCedash_packager::media::WebMWebVTTParser
    oCedash_packager::xml::XmlDeleter
    \Cedash_packager::xml::XmlNode
    diff --git a/docs/index.html b/docs/index.html index 3e7a2044a8..6f336d8423 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 fb66040d6e..54087356ad 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 f9f7a2a391..fc52775a14 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 91766d670b..c248d29d12 100644 --- a/docs/namespaces.html +++ b/docs/namespaces.html @@ -92,7 +92,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/search/all_0.js b/docs/search/all_0.js index 5c3980a836..ce3d369802 100644 --- a/docs/search/all_0.js +++ b/docs/search/all_0.js @@ -32,15 +32,18 @@ var searchData= ['aescbcctsencryptor',['AesCbcCtsEncryptor',['../d6/da2/classedash__packager_1_1media_1_1AesCbcCtsEncryptor.html',1,'edash_packager::media']]], ['aescbcpkcs5decryptor',['AesCbcPkcs5Decryptor',['../db/dfe/classedash__packager_1_1media_1_1AesCbcPkcs5Decryptor.html',1,'edash_packager::media']]], ['aescbcpkcs5encryptor',['AesCbcPkcs5Encryptor',['../d6/dc4/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor.html',1,'edash_packager::media']]], + ['aesctrdecryptor',['AesCtrDecryptor',['../df/d06/classedash__packager_1_1media_1_1AesCtrDecryptor.html',1,'edash_packager::media']]], ['aesctrencryptor',['AesCtrEncryptor',['../dd/d79/classedash__packager_1_1media_1_1AesCtrEncryptor.html',1,'edash_packager::media']]], + ['aesdecryptor',['AesDecryptor',['../d9/d96/classedash__packager_1_1media_1_1AesDecryptor.html',1,'edash_packager::media']]], + ['aesencryptor',['AesEncryptor',['../dc/d92/classedash__packager_1_1media_1_1AesEncryptor.html',1,'edash_packager::media']]], ['aesrequestsigner',['AesRequestSigner',['../d8/dcc/classedash__packager_1_1media_1_1AesRequestSigner.html',1,'edash_packager::media']]], ['appendint',['AppendInt',['../df/dde/classedash__packager_1_1media_1_1BufferWriter.html#afd1449487750c41331a2d91ac417f115',1,'edash_packager::media::BufferWriter']]], ['appendnbytes',['AppendNBytes',['../df/dde/classedash__packager_1_1media_1_1BufferWriter.html#ac929211fc97bc8ec880109775757bb81',1,'edash_packager::media::BufferWriter']]], ['audio_5fdescription',['audio_description',['../db/d26/classedash__packager_1_1media_1_1mp4_1_1TrackRunIterator.html#a2c58182a77817e4ed4a2860ae3be73df',1,'edash_packager::media::mp4::TrackRunIterator']]], ['audio_5fobject_5ftype',['audio_object_type',['../dc/dc6/classedash__packager_1_1media_1_1mp4_1_1AACAudioSpecificConfig.html#a12bcda441f7745bd70cb9b4fdfb4b9b5',1,'edash_packager::media::mp4::AACAudioSpecificConfig']]], ['audiosampleentry',['AudioSampleEntry',['../df/d62/structedash__packager_1_1media_1_1mp4_1_1AudioSampleEntry.html',1,'edash_packager::media::mp4']]], - ['audiostreaminfo',['AudioStreamInfo',['../da/d27/classedash__packager_1_1media_1_1AudioStreamInfo.html#a3a75339290a004cc4b2dd232e4561ed8',1,'edash_packager::media::AudioStreamInfo']]], ['audiostreaminfo',['AudioStreamInfo',['../da/d27/classedash__packager_1_1media_1_1AudioStreamInfo.html',1,'edash_packager::media']]], + ['audiostreaminfo',['AudioStreamInfo',['../da/d27/classedash__packager_1_1media_1_1AudioStreamInfo.html#a3a75339290a004cc4b2dd232e4561ed8',1,'edash_packager::media::AudioStreamInfo']]], ['audiotimestamphelper',['AudioTimestampHelper',['../da/de4/classedash__packager_1_1media_1_1AudioTimestampHelper.html',1,'edash_packager::media']]], ['auxinfoneedstobecached',['AuxInfoNeedsToBeCached',['../db/d26/classedash__packager_1_1media_1_1mp4_1_1TrackRunIterator.html#a3538a0f31238843afd2dfb4e94587f03',1,'edash_packager::media::mp4::TrackRunIterator']]], ['avcdecoderconfiguration',['AVCDecoderConfiguration',['../d6/d49/classedash__packager_1_1media_1_1AVCDecoderConfiguration.html',1,'edash_packager::media']]] diff --git a/docs/search/all_10.js b/docs/search/all_10.js index 76a45a4952..fb6af9c064 100644 --- a/docs/search/all_10.js +++ b/docs/search/all_10.js @@ -46,8 +46,8 @@ var searchData= ['setgroup',['SetGroup',['../db/de4/classedash__packager_1_1AdaptationSet.html#a3bea0954dfe1781afc1c7a624965bc84',1,'edash_packager::AdaptationSet']]], ['setid',['SetId',['../dd/d85/classedash__packager_1_1xml_1_1XmlNode.html#ab2ce769958718ef73a580e87e296a470',1,'edash_packager::xml::XmlNode']]], ['setintegerattribute',['SetIntegerAttribute',['../dd/d85/classedash__packager_1_1xml_1_1XmlNode.html#a54d635320973dec76f63cf696db3cf2a',1,'edash_packager::xml::XmlNode']]], - ['setiv',['SetIv',['../dd/d79/classedash__packager_1_1media_1_1AesCtrEncryptor.html#a9c68238a73c834fd795d3e4d5e8cfd10',1,'edash_packager::media::AesCtrEncryptor::SetIv()'],['../d6/dc4/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor.html#aca87525a4f8b27efc3e6eefcbe26f55f',1,'edash_packager::media::AesCbcPkcs5Encryptor::SetIv()'],['../db/dfe/classedash__packager_1_1media_1_1AesCbcPkcs5Decryptor.html#a0944b9d110e89fa9d63b03060059954e',1,'edash_packager::media::AesCbcPkcs5Decryptor::SetIv()'],['../d6/da2/classedash__packager_1_1media_1_1AesCbcCtsEncryptor.html#a797a78aad46c2b148398c6d15f2b39e3',1,'edash_packager::media::AesCbcCtsEncryptor::SetIv()'],['../dd/d96/classedash__packager_1_1media_1_1AesCbcCtsDecryptor.html#abcb9af2123d5ae47b2c89cf3feb67e06',1,'edash_packager::media::AesCbcCtsDecryptor::SetIv()']]], - ['setkeysource',['SetKeySource',['../d5/dce/classedash__packager_1_1media_1_1Demuxer.html#aec6a0b843399e2bf752e6fe1f56f02ee',1,'edash_packager::media::Demuxer::SetKeySource()'],['../d4/d1d/classedash__packager_1_1media_1_1Muxer.html#a5452ae82c2f8a0df8f855fc35e717f04',1,'edash_packager::media::Muxer::SetKeySource()']]], + ['setiv',['SetIv',['../d9/d96/classedash__packager_1_1media_1_1AesDecryptor.html#ab81d5f1a5d4b0d01f603b2f06b98b4cd',1,'edash_packager::media::AesDecryptor::SetIv()'],['../df/d06/classedash__packager_1_1media_1_1AesCtrDecryptor.html#ad8a3e36af755f380c62fd1f058ee678b',1,'edash_packager::media::AesCtrDecryptor::SetIv()'],['../db/dfe/classedash__packager_1_1media_1_1AesCbcPkcs5Decryptor.html#ae656e1d162064360bb6adfb90bc8edfb',1,'edash_packager::media::AesCbcPkcs5Decryptor::SetIv()'],['../dd/d96/classedash__packager_1_1media_1_1AesCbcCtsDecryptor.html#a7d8a104a275aac3d21da556c2ad6f86c',1,'edash_packager::media::AesCbcCtsDecryptor::SetIv()'],['../dc/d92/classedash__packager_1_1media_1_1AesEncryptor.html#a90d1ed31ee6c25dd0b27cb48c1366699',1,'edash_packager::media::AesEncryptor::SetIv()'],['../dd/d79/classedash__packager_1_1media_1_1AesCtrEncryptor.html#ac70e6553917ad948fb2c18101de0f8d9',1,'edash_packager::media::AesCtrEncryptor::SetIv()'],['../d6/dc4/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor.html#ad21bb8d1ea5aa49645c9b3476f6bcc8a',1,'edash_packager::media::AesCbcPkcs5Encryptor::SetIv()'],['../d6/da2/classedash__packager_1_1media_1_1AesCbcCtsEncryptor.html#ae6df0c4b5a1db50537f74deb36b96292',1,'edash_packager::media::AesCbcCtsEncryptor::SetIv()']]], + ['setkeysource',['SetKeySource',['../d5/dce/classedash__packager_1_1media_1_1Demuxer.html#aec6a0b843399e2bf752e6fe1f56f02ee',1,'edash_packager::media::Demuxer::SetKeySource()'],['../d4/d1d/classedash__packager_1_1media_1_1Muxer.html#a8376a54357dc92777cc1837b5090bac6',1,'edash_packager::media::Muxer::SetKeySource()']]], ['setmuxerlistener',['SetMuxerListener',['../d4/d1d/classedash__packager_1_1media_1_1Muxer.html#aa8ea4384b819187c51f67ad901aca148',1,'edash_packager::media::Muxer']]], ['setprogresslistener',['SetProgressListener',['../d4/d1d/classedash__packager_1_1media_1_1Muxer.html#a04959bfe66cdb16053326938df9d445a',1,'edash_packager::media::Muxer']]], ['setsampleduration',['SetSampleDuration',['../d7/d15/classedash__packager_1_1Representation.html#a4a81a2db7ec245892334ad927621909c',1,'edash_packager::Representation']]], diff --git a/docs/search/all_12.js b/docs/search/all_12.js index 9f5f3e9a99..527789f41a 100644 --- a/docs/search/all_12.js +++ b/docs/search/all_12.js @@ -5,6 +5,6 @@ var searchData= ['uint8vectortobase64',['Uint8VectorToBase64',['../db/d09/namespaceedash__packager.html#ac77ba3cf9242f2a678ec0ba7c61e5d0a',1,'edash_packager']]], ['update',['Update',['../d2/d90/classedash__packager_1_1media_1_1Status.html#a1c46d74b2d15c4bbcba6d742e82fce34',1,'edash_packager::media::Status']]], ['updatecontentprotectionpssh',['UpdateContentProtectionPssh',['../db/de4/classedash__packager_1_1AdaptationSet.html#a6630f9954b604bee7f90c11778336fdc',1,'edash_packager::AdaptationSet::UpdateContentProtectionPssh()'],['../d7/d15/classedash__packager_1_1Representation.html#a7fc0e59f273082ccf654025486af79ae',1,'edash_packager::Representation::UpdateContentProtectionPssh()']]], - ['updateiv',['UpdateIv',['../dd/d79/classedash__packager_1_1media_1_1AesCtrEncryptor.html#a8310ce3e9ef83a899173bbd1e6ac5583',1,'edash_packager::media::AesCtrEncryptor']]], + ['updateiv',['UpdateIv',['../dc/d92/classedash__packager_1_1media_1_1AesEncryptor.html#a23724f4f7a8a94599ced13878af59d51',1,'edash_packager::media::AesEncryptor::UpdateIv()'],['../dd/d79/classedash__packager_1_1media_1_1AesCtrEncryptor.html#a27cc6076b6f5edd8c096753ae157a1db',1,'edash_packager::media::AesCtrEncryptor::UpdateIv()'],['../d6/dc4/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor.html#aab27a1d7244f1dcdd7aa75b0fc1be995',1,'edash_packager::media::AesCbcPkcs5Encryptor::UpdateIv()'],['../d6/da2/classedash__packager_1_1media_1_1AesCbcCtsEncryptor.html#abd04cf7a533527022735eb79151db262',1,'edash_packager::media::AesCbcCtsEncryptor::UpdateIv()']]], ['updateprogress',['UpdateProgress',['../dc/de1/classedash__packager_1_1media_1_1mp4_1_1Segmenter.html#a287d51571c92704274550d9f1d246cf9',1,'edash_packager::media::mp4::Segmenter::UpdateProgress()'],['../da/d14/classedash__packager_1_1media_1_1webm_1_1Segmenter.html#af7abae8ef77450c272f6ca6ce98df361',1,'edash_packager::media::webm::Segmenter::UpdateProgress()']]] ]; diff --git a/docs/search/all_3.js b/docs/search/all_3.js index b73bb050d4..40b27ab66f 100644 --- a/docs/search/all_3.js +++ b/docs/search/all_3.js @@ -12,9 +12,9 @@ var searchData= ['decodingtimeiterator',['DecodingTimeIterator',['../d4/d90/classedash__packager_1_1media_1_1mp4_1_1DecodingTimeIterator.html#a23d155e855c769a50114d0a720b6aac0',1,'edash_packager::media::mp4::DecodingTimeIterator']]], ['decodingtimeiterator',['DecodingTimeIterator',['../d4/d90/classedash__packager_1_1media_1_1mp4_1_1DecodingTimeIterator.html',1,'edash_packager::media::mp4']]], ['decodingtimetosample',['DecodingTimeToSample',['../dc/db7/structedash__packager_1_1media_1_1mp4_1_1DecodingTimeToSample.html',1,'edash_packager::media::mp4']]], - ['decrypt',['Decrypt',['../db/dfe/classedash__packager_1_1media_1_1AesCbcPkcs5Decryptor.html#a99992a6413029b81074735a74ce392e3',1,'edash_packager::media::AesCbcPkcs5Decryptor::Decrypt()'],['../dd/d96/classedash__packager_1_1media_1_1AesCbcCtsDecryptor.html#ab4401816a4dbae48500ce4e8f011c511',1,'edash_packager::media::AesCbcCtsDecryptor::Decrypt(const uint8_t *ciphertext, size_t size, uint8_t *plaintext)'],['../dd/d96/classedash__packager_1_1media_1_1AesCbcCtsDecryptor.html#a07ead5ae4cff840782578f123a79c5e8',1,'edash_packager::media::AesCbcCtsDecryptor::Decrypt(const std::vector< uint8_t > &ciphertext, std::vector< uint8_t > *plaintext)'],['../d5/d62/classedash__packager_1_1media_1_1RsaPrivateKey.html#a5356e2154dfc0707df39f603932ed96b',1,'edash_packager::media::RsaPrivateKey::Decrypt()']]], + ['decrypt',['Decrypt',['../d5/d62/classedash__packager_1_1media_1_1RsaPrivateKey.html#a5356e2154dfc0707df39f603932ed96b',1,'edash_packager::media::RsaPrivateKey']]], ['decryptconfig',['DecryptConfig',['../d4/da1/classedash__packager_1_1media_1_1DecryptConfig.html',1,'edash_packager::media']]], - ['decryptconfig',['DecryptConfig',['../d4/da1/classedash__packager_1_1media_1_1DecryptConfig.html#a271d0e6319a0542e00a2dd7005293bd2',1,'edash_packager::media::DecryptConfig']]], + ['decryptconfig',['DecryptConfig',['../d4/da1/classedash__packager_1_1media_1_1DecryptConfig.html#ae83fdc91d0d93211c8e0882d6d9da961',1,'edash_packager::media::DecryptConfig']]], ['decryptorsource',['DecryptorSource',['../dc/df1/classedash__packager_1_1media_1_1DecryptorSource.html',1,'edash_packager::media']]], ['delete',['Delete',['../de/d19/classedash__packager_1_1media_1_1File.html#a7e0fcd3c439e810e8e17baf32dcc75af',1,'edash_packager::media::File::Delete()'],['../dd/d98/classedash__packager_1_1media_1_1LocalFile.html#a95e4a5eff87224c9a156b5e2c7824cb9',1,'edash_packager::media::LocalFile::Delete()'],['../d3/d81/classedash__packager_1_1media_1_1MemoryFile.html#a039f71274ee7607087a43d3be67fd6f8',1,'edash_packager::media::MemoryFile::Delete()']]], ['deleteall',['DeleteAll',['../d3/d81/classedash__packager_1_1media_1_1MemoryFile.html#a85b276d2b2d58c6b6a4d599906a510de',1,'edash_packager::media::MemoryFile']]], diff --git a/docs/search/all_4.js b/docs/search/all_4.js index f51256e5a4..90c392c8e6 100644 --- a/docs/search/all_4.js +++ b/docs/search/all_4.js @@ -9,9 +9,9 @@ var searchData= ['elementarystreamdescriptor',['ElementaryStreamDescriptor',['../d9/dcc/structedash__packager_1_1media_1_1mp4_1_1ElementaryStreamDescriptor.html',1,'edash_packager::media::mp4']]], ['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()']]], + ['encrypt',['Encrypt',['../d1/d86/classedash__packager_1_1media_1_1RsaPublicKey.html#a287216e5bb6ac3781388db23329a8f27',1,'edash_packager::media::RsaPublicKey']]], ['encryptframe',['EncryptFrame',['../d2/d76/classedash__packager_1_1media_1_1webm_1_1Encryptor.html#ac7293db5bad8b0cd86ee428efaaf5318',1,'edash_packager::media::webm::Encryptor']]], - ['encryptingfragmenter',['EncryptingFragmenter',['../d8/d1e/classedash__packager_1_1media_1_1mp4_1_1EncryptingFragmenter.html#a35e714ce7885037ea4299f0836e0d058',1,'edash_packager::media::mp4::EncryptingFragmenter']]], + ['encryptingfragmenter',['EncryptingFragmenter',['../d8/d1e/classedash__packager_1_1media_1_1mp4_1_1EncryptingFragmenter.html#a6ab7ed1ca842bc5618f03971911c2457',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']]], ['encryptor',['Encryptor',['../d2/d76/classedash__packager_1_1media_1_1webm_1_1Encryptor.html',1,'edash_packager::media::webm']]], diff --git a/docs/search/all_8.js b/docs/search/all_8.js index fa2cd8694f..5a99c74259 100644 --- a/docs/search/all_8.js +++ b/docs/search/all_8.js @@ -5,10 +5,10 @@ var searchData= ['ignorebytes',['IgnoreBytes',['../dd/d4f/classedash__packager_1_1media_1_1mp4_1_1BoxBuffer.html#a7efa53df1ef135edd31d1e1818b9a884',1,'edash_packager::media::mp4::BoxBuffer']]], ['init',['Init',['../dc/d48/classedash__packager_1_1media_1_1MediaParser.html#a7ac1ee5db298922f094920cd564bfb16',1,'edash_packager::media::MediaParser::Init()'],['../dc/dab/classedash__packager_1_1media_1_1mp2t_1_1Mp2tMediaParser.html#abfcd1be5f00d8091feb044e7199966f5',1,'edash_packager::media::mp2t::Mp2tMediaParser::Init()'],['../d8/d0d/classedash__packager_1_1media_1_1mp4_1_1MP4MediaParser.html#a4ef745c8846adc9e932059a4e91f67c2',1,'edash_packager::media::mp4::MP4MediaParser::Init()'],['../db/d26/classedash__packager_1_1media_1_1mp4_1_1TrackRunIterator.html#a6fd0f1d72f9a31a1c0d26c3b1ae25250',1,'edash_packager::media::mp4::TrackRunIterator::Init()'],['../db/d26/classedash__packager_1_1media_1_1mp4_1_1TrackRunIterator.html#a354985cb4f5eed26e91dbb343a6343a0',1,'edash_packager::media::mp4::TrackRunIterator::Init(const MovieFragment &moof)'],['../dd/d99/classedash__packager_1_1media_1_1WebMMediaParser.html#a8a85bf527013ebbb0b902dcd56039467',1,'edash_packager::media::WebMMediaParser::Init()'],['../d2/d51/classedash__packager_1_1media_1_1WebVttMediaParser.html#a6e678b88894210cd665c1466b0c0fd41',1,'edash_packager::media::WebVttMediaParser::Init()'],['../d8/da0/classedash__packager_1_1media_1_1wvm_1_1WvmMediaParser.html#aef36e6f7cc6bdb2c6b287ae07ef9a55a',1,'edash_packager::media::wvm::WvmMediaParser::Init()'],['../da/d49/classedash__packager_1_1DashIopMpdNotifier.html#ace93090275f0ef9b33cf62648f854690',1,'edash_packager::DashIopMpdNotifier::Init()'],['../d7/d15/classedash__packager_1_1Representation.html#aac7ad6e54e88b4d31196d54ad5fb4a9d',1,'edash_packager::Representation::Init()'],['../da/d38/classedash__packager_1_1MpdNotifier.html#ae7067d35133b0573a2919fb69195328e',1,'edash_packager::MpdNotifier::Init()'],['../db/d56/classedash__packager_1_1SimpleMpdNotifier.html#a8c0efff460547138724769b768ae6341',1,'edash_packager::SimpleMpdNotifier::Init()']]], ['initcb',['InitCB',['../dc/d48/classedash__packager_1_1media_1_1MediaParser.html#af5c74c8723a5306faddcdfdcadb4ab4a',1,'edash_packager::media::MediaParser']]], - ['initialize',['Initialize',['../d5/dce/classedash__packager_1_1media_1_1Demuxer.html#a5b156dbf1d1c86f4d18e137b3f7bc7c9',1,'edash_packager::media::Demuxer::Initialize()'],['../d4/dbe/classedash__packager_1_1media_1_1NalUnitToByteStreamConverter.html#a7f11850cfce911e3aec88974fc76105c',1,'edash_packager::media::NalUnitToByteStreamConverter::Initialize()'],['../dc/de1/classedash__packager_1_1media_1_1mp4_1_1Segmenter.html#ae977765092cab9a566b4a5a3e9184370',1,'edash_packager::media::mp4::Segmenter::Initialize()'],['../d1/dd0/classedash__packager_1_1media_1_1mp4_1_1VideoSliceHeaderParser.html#a4194fd829c0208859ac929b670a6aea7',1,'edash_packager::media::mp4::VideoSliceHeaderParser::Initialize()'],['../d6/dc2/classedash__packager_1_1media_1_1mp4_1_1H264VideoSliceHeaderParser.html#a611fcfffaa2954dd432d421b991ebbf6',1,'edash_packager::media::mp4::H264VideoSliceHeaderParser::Initialize()'],['../d2/d76/classedash__packager_1_1media_1_1webm_1_1Encryptor.html#ab37db1af563c523c84ef1addb9594175',1,'edash_packager::media::webm::Encryptor::Initialize()'],['../da/d14/classedash__packager_1_1media_1_1webm_1_1Segmenter.html#a5918dc2431560b2ae816c0840ddf7728',1,'edash_packager::media::webm::Segmenter::Initialize()']]], + ['initialize',['Initialize',['../d5/dce/classedash__packager_1_1media_1_1Demuxer.html#a5b156dbf1d1c86f4d18e137b3f7bc7c9',1,'edash_packager::media::Demuxer::Initialize()'],['../d4/dbe/classedash__packager_1_1media_1_1NalUnitToByteStreamConverter.html#a7f11850cfce911e3aec88974fc76105c',1,'edash_packager::media::NalUnitToByteStreamConverter::Initialize()'],['../dc/de1/classedash__packager_1_1media_1_1mp4_1_1Segmenter.html#ae35266f50e16bef0443aa909223bd3d1',1,'edash_packager::media::mp4::Segmenter::Initialize()'],['../d1/dd0/classedash__packager_1_1media_1_1mp4_1_1VideoSliceHeaderParser.html#a4194fd829c0208859ac929b670a6aea7',1,'edash_packager::media::mp4::VideoSliceHeaderParser::Initialize()'],['../d6/dc2/classedash__packager_1_1media_1_1mp4_1_1H264VideoSliceHeaderParser.html#a611fcfffaa2954dd432d421b991ebbf6',1,'edash_packager::media::mp4::H264VideoSliceHeaderParser::Initialize()'],['../d2/d76/classedash__packager_1_1media_1_1webm_1_1Encryptor.html#ab37db1af563c523c84ef1addb9594175',1,'edash_packager::media::webm::Encryptor::Initialize()'],['../da/d14/classedash__packager_1_1media_1_1webm_1_1Segmenter.html#a5918dc2431560b2ae816c0840ddf7728',1,'edash_packager::media::webm::Segmenter::Initialize()']]], ['initializefragment',['InitializeFragment',['../d8/d1e/classedash__packager_1_1media_1_1mp4_1_1EncryptingFragmenter.html#a3159dcc8d0f02da113715a97d096afef',1,'edash_packager::media::mp4::EncryptingFragmenter::InitializeFragment()'],['../db/dae/classedash__packager_1_1media_1_1mp4_1_1Fragmenter.html#ab55cbcb40b4c1308d70052a4b8ccd6af',1,'edash_packager::media::mp4::Fragmenter::InitializeFragment()']]], - ['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']]], + ['initializewithiv',['InitializeWithIv',['../dc/d92/classedash__packager_1_1media_1_1AesEncryptor.html#a6c225492907f281a7c08a76e012f8ba7',1,'edash_packager::media::AesEncryptor::InitializeWithIv()'],['../dd/d79/classedash__packager_1_1media_1_1AesCtrEncryptor.html#a2fa3278643f5d2ef4083a04ad44933f3',1,'edash_packager::media::AesCtrEncryptor::InitializeWithIv()'],['../d6/dc4/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor.html#acff7cfca3a800344952a86e13dfad896',1,'edash_packager::media::AesCbcPkcs5Encryptor::InitializeWithIv()'],['../d6/da2/classedash__packager_1_1media_1_1AesCbcCtsEncryptor.html#ad9f134c35f24ebf4c1877ad76f8622b7',1,'edash_packager::media::AesCbcCtsEncryptor::InitializeWithIv()']]], + ['initializewithrandomiv',['InitializeWithRandomIv',['../dc/d92/classedash__packager_1_1media_1_1AesEncryptor.html#a49631d3d3d834bf7d78e0d51d7b33651',1,'edash_packager::media::AesEncryptor']]], ['injectclockfortesting',['InjectClockForTesting',['../d3/dfa/classedash__packager_1_1MpdBuilder.html#a6e789afd6427510a43ce4c45a4ba5143',1,'edash_packager::MpdBuilder']]], ['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']]], diff --git a/docs/search/all_9.js b/docs/search/all_9.js index 3e8e2c9963..52850dd341 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#a48204223314bba946c59c1fbf3fbbf86a32a5cc2c19fb1598071109cad939311a',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#a87edb5bb2ee55f9272fa1feab812beb9',1,'edash_packager::media::mp4::KeyRotationFragmenter']]], + ['keyrotationfragmenter',['KeyRotationFragmenter',['../dc/d8a/classedash__packager_1_1media_1_1mp4_1_1KeyRotationFragmenter.html#a4d61823a814e9f5e0892caa37c3cb7ef',1,'edash_packager::media::mp4::KeyRotationFragmenter']]], ['keysource',['KeySource',['../d9/d8b/classedash__packager_1_1media_1_1KeySource.html',1,'edash_packager::media']]], ['korderinvalid',['kOrderInvalid',['../df/d30/classedash__packager_1_1media_1_1ContentEncoding.html#a4d87c9881d554fbeb6999280d2e463d1',1,'edash_packager::media::ContentEncoding']]] ]; diff --git a/docs/search/all_b.js b/docs/search/all_b.js index e34fbcfb4b..c21e29a262 100644 --- a/docs/search/all_b.js +++ b/docs/search/all_b.js @@ -35,8 +35,8 @@ var searchData= ['mpdnotifymuxerlistener',['MpdNotifyMuxerListener',['../d3/d0e/classedash__packager_1_1media_1_1MpdNotifyMuxerListener.html',1,'edash_packager::media']]], ['mpdoptions',['MpdOptions',['../d1/d5d/structedash__packager_1_1MpdOptions.html',1,'edash_packager']]], ['mpdwriter',['MpdWriter',['../dc/d81/classedash__packager_1_1MpdWriter.html',1,'edash_packager']]], - ['multisegmentsegmenter',['MultiSegmentSegmenter',['../df/d4e/classedash__packager_1_1media_1_1webm_1_1MultiSegmentSegmenter.html',1,'edash_packager::media::webm']]], ['multisegmentsegmenter',['MultiSegmentSegmenter',['../dc/d7a/classedash__packager_1_1media_1_1mp4_1_1MultiSegmentSegmenter.html',1,'edash_packager::media::mp4']]], + ['multisegmentsegmenter',['MultiSegmentSegmenter',['../df/d4e/classedash__packager_1_1media_1_1webm_1_1MultiSegmentSegmenter.html',1,'edash_packager::media::webm']]], ['muxer',['Muxer',['../d4/d1d/classedash__packager_1_1media_1_1Muxer.html',1,'edash_packager::media']]], ['muxerlistener',['MuxerListener',['../df/de7/classedash__packager_1_1media_1_1MuxerListener.html',1,'edash_packager::media']]], ['muxeroptions',['MuxerOptions',['../de/d57/structedash__packager_1_1media_1_1MuxerOptions.html',1,'edash_packager::media']]] diff --git a/docs/search/classes_0.js b/docs/search/classes_0.js index b602ca6af0..17568ce063 100644 --- a/docs/search/classes_0.js +++ b/docs/search/classes_0.js @@ -9,7 +9,10 @@ var searchData= ['aescbcctsencryptor',['AesCbcCtsEncryptor',['../d6/da2/classedash__packager_1_1media_1_1AesCbcCtsEncryptor.html',1,'edash_packager::media']]], ['aescbcpkcs5decryptor',['AesCbcPkcs5Decryptor',['../db/dfe/classedash__packager_1_1media_1_1AesCbcPkcs5Decryptor.html',1,'edash_packager::media']]], ['aescbcpkcs5encryptor',['AesCbcPkcs5Encryptor',['../d6/dc4/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor.html',1,'edash_packager::media']]], + ['aesctrdecryptor',['AesCtrDecryptor',['../df/d06/classedash__packager_1_1media_1_1AesCtrDecryptor.html',1,'edash_packager::media']]], ['aesctrencryptor',['AesCtrEncryptor',['../dd/d79/classedash__packager_1_1media_1_1AesCtrEncryptor.html',1,'edash_packager::media']]], + ['aesdecryptor',['AesDecryptor',['../d9/d96/classedash__packager_1_1media_1_1AesDecryptor.html',1,'edash_packager::media']]], + ['aesencryptor',['AesEncryptor',['../dc/d92/classedash__packager_1_1media_1_1AesEncryptor.html',1,'edash_packager::media']]], ['aesrequestsigner',['AesRequestSigner',['../d8/dcc/classedash__packager_1_1media_1_1AesRequestSigner.html',1,'edash_packager::media']]], ['audiosampleentry',['AudioSampleEntry',['../df/d62/structedash__packager_1_1media_1_1mp4_1_1AudioSampleEntry.html',1,'edash_packager::media::mp4']]], ['audiostreaminfo',['AudioStreamInfo',['../da/d27/classedash__packager_1_1media_1_1AudioStreamInfo.html',1,'edash_packager::media']]], diff --git a/docs/search/classes_a.js b/docs/search/classes_a.js index 9e4d5580e1..589cdc1742 100644 --- a/docs/search/classes_a.js +++ b/docs/search/classes_a.js @@ -29,8 +29,8 @@ var searchData= ['mpdnotifymuxerlistener',['MpdNotifyMuxerListener',['../d3/d0e/classedash__packager_1_1media_1_1MpdNotifyMuxerListener.html',1,'edash_packager::media']]], ['mpdoptions',['MpdOptions',['../d1/d5d/structedash__packager_1_1MpdOptions.html',1,'edash_packager']]], ['mpdwriter',['MpdWriter',['../dc/d81/classedash__packager_1_1MpdWriter.html',1,'edash_packager']]], - ['multisegmentsegmenter',['MultiSegmentSegmenter',['../dc/d7a/classedash__packager_1_1media_1_1mp4_1_1MultiSegmentSegmenter.html',1,'edash_packager::media::mp4']]], ['multisegmentsegmenter',['MultiSegmentSegmenter',['../df/d4e/classedash__packager_1_1media_1_1webm_1_1MultiSegmentSegmenter.html',1,'edash_packager::media::webm']]], + ['multisegmentsegmenter',['MultiSegmentSegmenter',['../dc/d7a/classedash__packager_1_1media_1_1mp4_1_1MultiSegmentSegmenter.html',1,'edash_packager::media::mp4']]], ['muxer',['Muxer',['../d4/d1d/classedash__packager_1_1media_1_1Muxer.html',1,'edash_packager::media']]], ['muxerlistener',['MuxerListener',['../df/de7/classedash__packager_1_1media_1_1MuxerListener.html',1,'edash_packager::media']]], ['muxeroptions',['MuxerOptions',['../de/d57/structedash__packager_1_1media_1_1MuxerOptions.html',1,'edash_packager::media']]] diff --git a/docs/search/functions_10.js b/docs/search/functions_10.js index c2d3a41d6e..67c431abd1 100644 --- a/docs/search/functions_10.js +++ b/docs/search/functions_10.js @@ -21,8 +21,8 @@ var searchData= ['setgroup',['SetGroup',['../db/de4/classedash__packager_1_1AdaptationSet.html#a3bea0954dfe1781afc1c7a624965bc84',1,'edash_packager::AdaptationSet']]], ['setid',['SetId',['../dd/d85/classedash__packager_1_1xml_1_1XmlNode.html#ab2ce769958718ef73a580e87e296a470',1,'edash_packager::xml::XmlNode']]], ['setintegerattribute',['SetIntegerAttribute',['../dd/d85/classedash__packager_1_1xml_1_1XmlNode.html#a54d635320973dec76f63cf696db3cf2a',1,'edash_packager::xml::XmlNode']]], - ['setiv',['SetIv',['../dd/d79/classedash__packager_1_1media_1_1AesCtrEncryptor.html#a9c68238a73c834fd795d3e4d5e8cfd10',1,'edash_packager::media::AesCtrEncryptor::SetIv()'],['../d6/dc4/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor.html#aca87525a4f8b27efc3e6eefcbe26f55f',1,'edash_packager::media::AesCbcPkcs5Encryptor::SetIv()'],['../db/dfe/classedash__packager_1_1media_1_1AesCbcPkcs5Decryptor.html#a0944b9d110e89fa9d63b03060059954e',1,'edash_packager::media::AesCbcPkcs5Decryptor::SetIv()'],['../d6/da2/classedash__packager_1_1media_1_1AesCbcCtsEncryptor.html#a797a78aad46c2b148398c6d15f2b39e3',1,'edash_packager::media::AesCbcCtsEncryptor::SetIv()'],['../dd/d96/classedash__packager_1_1media_1_1AesCbcCtsDecryptor.html#abcb9af2123d5ae47b2c89cf3feb67e06',1,'edash_packager::media::AesCbcCtsDecryptor::SetIv()']]], - ['setkeysource',['SetKeySource',['../d5/dce/classedash__packager_1_1media_1_1Demuxer.html#aec6a0b843399e2bf752e6fe1f56f02ee',1,'edash_packager::media::Demuxer::SetKeySource()'],['../d4/d1d/classedash__packager_1_1media_1_1Muxer.html#a5452ae82c2f8a0df8f855fc35e717f04',1,'edash_packager::media::Muxer::SetKeySource()']]], + ['setiv',['SetIv',['../d9/d96/classedash__packager_1_1media_1_1AesDecryptor.html#ab81d5f1a5d4b0d01f603b2f06b98b4cd',1,'edash_packager::media::AesDecryptor::SetIv()'],['../df/d06/classedash__packager_1_1media_1_1AesCtrDecryptor.html#ad8a3e36af755f380c62fd1f058ee678b',1,'edash_packager::media::AesCtrDecryptor::SetIv()'],['../db/dfe/classedash__packager_1_1media_1_1AesCbcPkcs5Decryptor.html#ae656e1d162064360bb6adfb90bc8edfb',1,'edash_packager::media::AesCbcPkcs5Decryptor::SetIv()'],['../dd/d96/classedash__packager_1_1media_1_1AesCbcCtsDecryptor.html#a7d8a104a275aac3d21da556c2ad6f86c',1,'edash_packager::media::AesCbcCtsDecryptor::SetIv()'],['../dc/d92/classedash__packager_1_1media_1_1AesEncryptor.html#a90d1ed31ee6c25dd0b27cb48c1366699',1,'edash_packager::media::AesEncryptor::SetIv()'],['../dd/d79/classedash__packager_1_1media_1_1AesCtrEncryptor.html#ac70e6553917ad948fb2c18101de0f8d9',1,'edash_packager::media::AesCtrEncryptor::SetIv()'],['../d6/dc4/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor.html#ad21bb8d1ea5aa49645c9b3476f6bcc8a',1,'edash_packager::media::AesCbcPkcs5Encryptor::SetIv()'],['../d6/da2/classedash__packager_1_1media_1_1AesCbcCtsEncryptor.html#ae6df0c4b5a1db50537f74deb36b96292',1,'edash_packager::media::AesCbcCtsEncryptor::SetIv()']]], + ['setkeysource',['SetKeySource',['../d5/dce/classedash__packager_1_1media_1_1Demuxer.html#aec6a0b843399e2bf752e6fe1f56f02ee',1,'edash_packager::media::Demuxer::SetKeySource()'],['../d4/d1d/classedash__packager_1_1media_1_1Muxer.html#a8376a54357dc92777cc1837b5090bac6',1,'edash_packager::media::Muxer::SetKeySource()']]], ['setmuxerlistener',['SetMuxerListener',['../d4/d1d/classedash__packager_1_1media_1_1Muxer.html#aa8ea4384b819187c51f67ad901aca148',1,'edash_packager::media::Muxer']]], ['setprogresslistener',['SetProgressListener',['../d4/d1d/classedash__packager_1_1media_1_1Muxer.html#a04959bfe66cdb16053326938df9d445a',1,'edash_packager::media::Muxer']]], ['setsampleduration',['SetSampleDuration',['../d7/d15/classedash__packager_1_1Representation.html#a4a81a2db7ec245892334ad927621909c',1,'edash_packager::Representation']]], diff --git a/docs/search/functions_12.js b/docs/search/functions_12.js index 6e61f814a0..7d10611092 100644 --- a/docs/search/functions_12.js +++ b/docs/search/functions_12.js @@ -4,6 +4,6 @@ var searchData= ['uint8vectortobase64',['Uint8VectorToBase64',['../db/d09/namespaceedash__packager.html#ac77ba3cf9242f2a678ec0ba7c61e5d0a',1,'edash_packager']]], ['update',['Update',['../d2/d90/classedash__packager_1_1media_1_1Status.html#a1c46d74b2d15c4bbcba6d742e82fce34',1,'edash_packager::media::Status']]], ['updatecontentprotectionpssh',['UpdateContentProtectionPssh',['../db/de4/classedash__packager_1_1AdaptationSet.html#a6630f9954b604bee7f90c11778336fdc',1,'edash_packager::AdaptationSet::UpdateContentProtectionPssh()'],['../d7/d15/classedash__packager_1_1Representation.html#a7fc0e59f273082ccf654025486af79ae',1,'edash_packager::Representation::UpdateContentProtectionPssh()']]], - ['updateiv',['UpdateIv',['../dd/d79/classedash__packager_1_1media_1_1AesCtrEncryptor.html#a8310ce3e9ef83a899173bbd1e6ac5583',1,'edash_packager::media::AesCtrEncryptor']]], + ['updateiv',['UpdateIv',['../dc/d92/classedash__packager_1_1media_1_1AesEncryptor.html#a23724f4f7a8a94599ced13878af59d51',1,'edash_packager::media::AesEncryptor::UpdateIv()'],['../dd/d79/classedash__packager_1_1media_1_1AesCtrEncryptor.html#a27cc6076b6f5edd8c096753ae157a1db',1,'edash_packager::media::AesCtrEncryptor::UpdateIv()'],['../d6/dc4/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor.html#aab27a1d7244f1dcdd7aa75b0fc1be995',1,'edash_packager::media::AesCbcPkcs5Encryptor::UpdateIv()'],['../d6/da2/classedash__packager_1_1media_1_1AesCbcCtsEncryptor.html#abd04cf7a533527022735eb79151db262',1,'edash_packager::media::AesCbcCtsEncryptor::UpdateIv()']]], ['updateprogress',['UpdateProgress',['../dc/de1/classedash__packager_1_1media_1_1mp4_1_1Segmenter.html#a287d51571c92704274550d9f1d246cf9',1,'edash_packager::media::mp4::Segmenter::UpdateProgress()'],['../da/d14/classedash__packager_1_1media_1_1webm_1_1Segmenter.html#af7abae8ef77450c272f6ca6ce98df361',1,'edash_packager::media::webm::Segmenter::UpdateProgress()']]] ]; diff --git a/docs/search/functions_3.js b/docs/search/functions_3.js index f8f855e20f..065d25ef17 100644 --- a/docs/search/functions_3.js +++ b/docs/search/functions_3.js @@ -4,8 +4,8 @@ var searchData= ['data',['data',['../d8/dfb/classedash__packager_1_1media_1_1DecoderConfiguration.html#ae2c11d7dc33c3f90535218797ca6b4d2',1,'edash_packager::media::DecoderConfiguration']]], ['data_5fsize',['data_size',['../d8/dfb/classedash__packager_1_1media_1_1DecoderConfiguration.html#a5233b5e870d55f0487ee0387ad69921f',1,'edash_packager::media::DecoderConfiguration']]], ['decodingtimeiterator',['DecodingTimeIterator',['../d4/d90/classedash__packager_1_1media_1_1mp4_1_1DecodingTimeIterator.html#a23d155e855c769a50114d0a720b6aac0',1,'edash_packager::media::mp4::DecodingTimeIterator']]], - ['decrypt',['Decrypt',['../db/dfe/classedash__packager_1_1media_1_1AesCbcPkcs5Decryptor.html#a99992a6413029b81074735a74ce392e3',1,'edash_packager::media::AesCbcPkcs5Decryptor::Decrypt()'],['../dd/d96/classedash__packager_1_1media_1_1AesCbcCtsDecryptor.html#ab4401816a4dbae48500ce4e8f011c511',1,'edash_packager::media::AesCbcCtsDecryptor::Decrypt(const uint8_t *ciphertext, size_t size, uint8_t *plaintext)'],['../dd/d96/classedash__packager_1_1media_1_1AesCbcCtsDecryptor.html#a07ead5ae4cff840782578f123a79c5e8',1,'edash_packager::media::AesCbcCtsDecryptor::Decrypt(const std::vector< uint8_t > &ciphertext, std::vector< uint8_t > *plaintext)'],['../d5/d62/classedash__packager_1_1media_1_1RsaPrivateKey.html#a5356e2154dfc0707df39f603932ed96b',1,'edash_packager::media::RsaPrivateKey::Decrypt()']]], - ['decryptconfig',['DecryptConfig',['../d4/da1/classedash__packager_1_1media_1_1DecryptConfig.html#a271d0e6319a0542e00a2dd7005293bd2',1,'edash_packager::media::DecryptConfig']]], + ['decrypt',['Decrypt',['../d5/d62/classedash__packager_1_1media_1_1RsaPrivateKey.html#a5356e2154dfc0707df39f603932ed96b',1,'edash_packager::media::RsaPrivateKey']]], + ['decryptconfig',['DecryptConfig',['../d4/da1/classedash__packager_1_1media_1_1DecryptConfig.html#ae83fdc91d0d93211c8e0882d6d9da961',1,'edash_packager::media::DecryptConfig']]], ['delete',['Delete',['../de/d19/classedash__packager_1_1media_1_1File.html#a7e0fcd3c439e810e8e17baf32dcc75af',1,'edash_packager::media::File::Delete()'],['../dd/d98/classedash__packager_1_1media_1_1LocalFile.html#a95e4a5eff87224c9a156b5e2c7824cb9',1,'edash_packager::media::LocalFile::Delete()'],['../d3/d81/classedash__packager_1_1media_1_1MemoryFile.html#a039f71274ee7607087a43d3be67fd6f8',1,'edash_packager::media::MemoryFile::Delete()']]], ['deleteall',['DeleteAll',['../d3/d81/classedash__packager_1_1media_1_1MemoryFile.html#a85b276d2b2d58c6b6a4d599906a510de',1,'edash_packager::media::MemoryFile']]], ['demuxer',['Demuxer',['../d5/dce/classedash__packager_1_1media_1_1Demuxer.html#a5305b2b16956b7ab973eeded4232226e',1,'edash_packager::media::Demuxer']]], diff --git a/docs/search/functions_4.js b/docs/search/functions_4.js index bdec9caa87..7726f148fc 100644 --- a/docs/search/functions_4.js +++ b/docs/search/functions_4.js @@ -2,7 +2,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()']]], + ['encrypt',['Encrypt',['../d1/d86/classedash__packager_1_1media_1_1RsaPublicKey.html#a287216e5bb6ac3781388db23329a8f27',1,'edash_packager::media::RsaPublicKey']]], ['encryptframe',['EncryptFrame',['../d2/d76/classedash__packager_1_1media_1_1webm_1_1Encryptor.html#ac7293db5bad8b0cd86ee428efaaf5318',1,'edash_packager::media::webm::Encryptor']]], - ['encryptingfragmenter',['EncryptingFragmenter',['../d8/d1e/classedash__packager_1_1media_1_1mp4_1_1EncryptingFragmenter.html#a35e714ce7885037ea4299f0836e0d058',1,'edash_packager::media::mp4::EncryptingFragmenter']]] + ['encryptingfragmenter',['EncryptingFragmenter',['../d8/d1e/classedash__packager_1_1media_1_1mp4_1_1EncryptingFragmenter.html#a6ab7ed1ca842bc5618f03971911c2457',1,'edash_packager::media::mp4::EncryptingFragmenter']]] ]; diff --git a/docs/search/functions_8.js b/docs/search/functions_8.js index e33e46b544..5c08fae04c 100644 --- a/docs/search/functions_8.js +++ b/docs/search/functions_8.js @@ -3,10 +3,10 @@ var searchData= ['id',['id',['../d7/d15/classedash__packager_1_1Representation.html#a0a59920aa8a31f1fb2b30a2ee8cc4e95',1,'edash_packager::Representation']]], ['ignorebytes',['IgnoreBytes',['../dd/d4f/classedash__packager_1_1media_1_1mp4_1_1BoxBuffer.html#a7efa53df1ef135edd31d1e1818b9a884',1,'edash_packager::media::mp4::BoxBuffer']]], ['init',['Init',['../dc/d48/classedash__packager_1_1media_1_1MediaParser.html#a7ac1ee5db298922f094920cd564bfb16',1,'edash_packager::media::MediaParser::Init()'],['../dc/dab/classedash__packager_1_1media_1_1mp2t_1_1Mp2tMediaParser.html#abfcd1be5f00d8091feb044e7199966f5',1,'edash_packager::media::mp2t::Mp2tMediaParser::Init()'],['../d8/d0d/classedash__packager_1_1media_1_1mp4_1_1MP4MediaParser.html#a4ef745c8846adc9e932059a4e91f67c2',1,'edash_packager::media::mp4::MP4MediaParser::Init()'],['../db/d26/classedash__packager_1_1media_1_1mp4_1_1TrackRunIterator.html#a6fd0f1d72f9a31a1c0d26c3b1ae25250',1,'edash_packager::media::mp4::TrackRunIterator::Init()'],['../db/d26/classedash__packager_1_1media_1_1mp4_1_1TrackRunIterator.html#a354985cb4f5eed26e91dbb343a6343a0',1,'edash_packager::media::mp4::TrackRunIterator::Init(const MovieFragment &moof)'],['../dd/d99/classedash__packager_1_1media_1_1WebMMediaParser.html#a8a85bf527013ebbb0b902dcd56039467',1,'edash_packager::media::WebMMediaParser::Init()'],['../d2/d51/classedash__packager_1_1media_1_1WebVttMediaParser.html#a6e678b88894210cd665c1466b0c0fd41',1,'edash_packager::media::WebVttMediaParser::Init()'],['../d8/da0/classedash__packager_1_1media_1_1wvm_1_1WvmMediaParser.html#aef36e6f7cc6bdb2c6b287ae07ef9a55a',1,'edash_packager::media::wvm::WvmMediaParser::Init()'],['../da/d49/classedash__packager_1_1DashIopMpdNotifier.html#ace93090275f0ef9b33cf62648f854690',1,'edash_packager::DashIopMpdNotifier::Init()'],['../d7/d15/classedash__packager_1_1Representation.html#aac7ad6e54e88b4d31196d54ad5fb4a9d',1,'edash_packager::Representation::Init()'],['../da/d38/classedash__packager_1_1MpdNotifier.html#ae7067d35133b0573a2919fb69195328e',1,'edash_packager::MpdNotifier::Init()'],['../db/d56/classedash__packager_1_1SimpleMpdNotifier.html#a8c0efff460547138724769b768ae6341',1,'edash_packager::SimpleMpdNotifier::Init()']]], - ['initialize',['Initialize',['../d5/dce/classedash__packager_1_1media_1_1Demuxer.html#a5b156dbf1d1c86f4d18e137b3f7bc7c9',1,'edash_packager::media::Demuxer::Initialize()'],['../d4/dbe/classedash__packager_1_1media_1_1NalUnitToByteStreamConverter.html#a7f11850cfce911e3aec88974fc76105c',1,'edash_packager::media::NalUnitToByteStreamConverter::Initialize()'],['../dc/de1/classedash__packager_1_1media_1_1mp4_1_1Segmenter.html#ae977765092cab9a566b4a5a3e9184370',1,'edash_packager::media::mp4::Segmenter::Initialize()'],['../d1/dd0/classedash__packager_1_1media_1_1mp4_1_1VideoSliceHeaderParser.html#a4194fd829c0208859ac929b670a6aea7',1,'edash_packager::media::mp4::VideoSliceHeaderParser::Initialize()'],['../d6/dc2/classedash__packager_1_1media_1_1mp4_1_1H264VideoSliceHeaderParser.html#a611fcfffaa2954dd432d421b991ebbf6',1,'edash_packager::media::mp4::H264VideoSliceHeaderParser::Initialize()'],['../d2/d76/classedash__packager_1_1media_1_1webm_1_1Encryptor.html#ab37db1af563c523c84ef1addb9594175',1,'edash_packager::media::webm::Encryptor::Initialize()'],['../da/d14/classedash__packager_1_1media_1_1webm_1_1Segmenter.html#a5918dc2431560b2ae816c0840ddf7728',1,'edash_packager::media::webm::Segmenter::Initialize()']]], + ['initialize',['Initialize',['../d5/dce/classedash__packager_1_1media_1_1Demuxer.html#a5b156dbf1d1c86f4d18e137b3f7bc7c9',1,'edash_packager::media::Demuxer::Initialize()'],['../d4/dbe/classedash__packager_1_1media_1_1NalUnitToByteStreamConverter.html#a7f11850cfce911e3aec88974fc76105c',1,'edash_packager::media::NalUnitToByteStreamConverter::Initialize()'],['../dc/de1/classedash__packager_1_1media_1_1mp4_1_1Segmenter.html#ae35266f50e16bef0443aa909223bd3d1',1,'edash_packager::media::mp4::Segmenter::Initialize()'],['../d1/dd0/classedash__packager_1_1media_1_1mp4_1_1VideoSliceHeaderParser.html#a4194fd829c0208859ac929b670a6aea7',1,'edash_packager::media::mp4::VideoSliceHeaderParser::Initialize()'],['../d6/dc2/classedash__packager_1_1media_1_1mp4_1_1H264VideoSliceHeaderParser.html#a611fcfffaa2954dd432d421b991ebbf6',1,'edash_packager::media::mp4::H264VideoSliceHeaderParser::Initialize()'],['../d2/d76/classedash__packager_1_1media_1_1webm_1_1Encryptor.html#ab37db1af563c523c84ef1addb9594175',1,'edash_packager::media::webm::Encryptor::Initialize()'],['../da/d14/classedash__packager_1_1media_1_1webm_1_1Segmenter.html#a5918dc2431560b2ae816c0840ddf7728',1,'edash_packager::media::webm::Segmenter::Initialize()']]], ['initializefragment',['InitializeFragment',['../d8/d1e/classedash__packager_1_1media_1_1mp4_1_1EncryptingFragmenter.html#a3159dcc8d0f02da113715a97d096afef',1,'edash_packager::media::mp4::EncryptingFragmenter::InitializeFragment()'],['../db/dae/classedash__packager_1_1media_1_1mp4_1_1Fragmenter.html#ab55cbcb40b4c1308d70052a4b8ccd6af',1,'edash_packager::media::mp4::Fragmenter::InitializeFragment()']]], - ['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']]], + ['initializewithiv',['InitializeWithIv',['../dc/d92/classedash__packager_1_1media_1_1AesEncryptor.html#a6c225492907f281a7c08a76e012f8ba7',1,'edash_packager::media::AesEncryptor::InitializeWithIv()'],['../dd/d79/classedash__packager_1_1media_1_1AesCtrEncryptor.html#a2fa3278643f5d2ef4083a04ad44933f3',1,'edash_packager::media::AesCtrEncryptor::InitializeWithIv()'],['../d6/dc4/classedash__packager_1_1media_1_1AesCbcPkcs5Encryptor.html#acff7cfca3a800344952a86e13dfad896',1,'edash_packager::media::AesCbcPkcs5Encryptor::InitializeWithIv()'],['../d6/da2/classedash__packager_1_1media_1_1AesCbcCtsEncryptor.html#ad9f134c35f24ebf4c1877ad76f8622b7',1,'edash_packager::media::AesCbcCtsEncryptor::InitializeWithIv()']]], + ['initializewithrandomiv',['InitializeWithRandomIv',['../dc/d92/classedash__packager_1_1media_1_1AesEncryptor.html#a49631d3d3d834bf7d78e0d51d7b33651',1,'edash_packager::media::AesEncryptor']]], ['injectclockfortesting',['InjectClockForTesting',['../d3/dfa/classedash__packager_1_1MpdBuilder.html#a6e789afd6427510a43ce4c45a4ba5143',1,'edash_packager::MpdBuilder']]], ['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()']]], diff --git a/docs/search/functions_9.js b/docs/search/functions_9.js index e5b232fa06..b8f2c77be6 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#a87edb5bb2ee55f9272fa1feab812beb9',1,'edash_packager::media::mp4::KeyRotationFragmenter']]] + ['keyrotationfragmenter',['KeyRotationFragmenter',['../dc/d8a/classedash__packager_1_1media_1_1mp4_1_1KeyRotationFragmenter.html#a4d61823a814e9f5e0892caa37c3cb7ef',1,'edash_packager::media::mp4::KeyRotationFragmenter']]] ];