From 9035bb3e72381f2f11f75e6e4f4713ffe0d53052 Mon Sep 17 00:00:00 2001 From: Widevine Buildbot Date: Wed, 14 Dec 2016 19:38:53 +0000 Subject: [PATCH] Generate SDK documents for commit 0c2ee4c844e2fcda73342c95c586c0da52ab5951 --- docs/annotated.html | 2 +- docs/classes.html | 2 +- ...ia_1_1mp4_1_1HandlerReference-members.html | 2 +- ..._1_1media_1_1RsaRequestSigner-members.html | 2 +- docs/d0/d06/mpd__flags_8cc_source.html | 2 +- ...ka_1_1media_1_1HttpKeyFetcher-members.html | 2 +- ...oder__configuration__record_8h_source.html | 2 +- docs/d0/d0e/muxer__options_8h_source.html | 2 +- ...media_1_1mp2t_1_1TsSectionPmt-members.html | 2 +- .../structshaka_1_1media_1_1VPxFrameInfo.html | 2 +- ...H265ByteToUnitStreamConverter-members.html | 2 +- ..._1_1media_1_1mp4_1_1VTTCueBox-members.html | 2 +- ...haka_1_1media_1_1mp2t_1_1TsSectionPat.html | 2 +- .../structshaka_1_1media_1_1MuxerOptions.html | 2 +- .../d0/d30/mock__mpd__notifier_8h_source.html | 2 +- docs/d0/d32/mp2t__common_8h_source.html | 2 +- .../d33/classshaka_1_1MockRepresentation.html | 2 +- docs/d0/d35/es__descriptor_8cc_source.html | 2 +- ...s__notify__muxer__listener_8cc_source.html | 2 +- docs/d0/d3a/webm__constants_8h_source.html | 2 +- ...mp4_1_1ProtectionSystemSpecificHeader.html | 2 +- docs/d0/d42/aes__cryptor_8h_source.html | 2 +- ...idevine__encryption__flags_8cc_source.html | 268 +++--- docs/d0/d46/fourccs_8h_source.html | 2 +- ...nfo__dump__muxer__listener_8cc_source.html | 2 +- ...ia_1_1mp4_1_1MediaInformation-members.html | 2 +- ...haka_1_1media_1_1AudioTimestampHelper.html | 2 +- .../d4e/libcrypto__threading_8cc_source.html | 2 +- ...a_1_1media_1_1mp2t_1_1TsMuxer-members.html | 8 +- ...dia_1_1MpdNotifyMuxerListener-members.html | 2 +- ...classshaka_1_1media_1_1ThreadedIoFile.html | 2 +- ..._1_1StreamDescriptorCompareFn-members.html | 2 +- ...a_1_1media_1_1mp4_1_1VideoSampleEntry.html | 2 +- ...haka_1_1media_1_1mp4_1_1SampleToGroup.html | 2 +- docs/d0/d7d/decryptor__source_8h_source.html | 2 +- ...a_1_1media_1_1AesCbcEncryptor-members.html | 2 +- ...classshaka_1_1media_1_1Status-members.html | 2 +- .../d0/d93/classshaka_1_1media_1_1Status.html | 2 +- .../structshaka_1_1media_1_1mp4_1_1Movie.html | 2 +- ...ka_1_1media_1_1AACAudioSpecificConfig.html | 2 +- ...aka_1_1media_1_1RequestSigner-members.html | 2 +- ...uctshaka_1_1xml_1_1XmlDeleter-members.html | 2 +- .../d0/da6/stream__descriptor_8cc_source.html | 2 +- ...edia_1_1mp4_1_1SingleSegmentSegmenter.html | 6 +- ...classshaka_1_1media_1_1FixedKeySource.html | 10 +- docs/d0/dae/file__util_8h_source.html | 2 +- ...webm_1_1MultiSegmentSegmenter-members.html | 4 +- ...edia_1_1mp4_1_1VTTEmptyCueBox-members.html | 2 +- ..._1xml_1_1AdaptationSetXmlNode-members.html | 2 +- .../classshaka_1_1media_1_1RsaPrivateKey.html | 2 +- ...aka_1_1media_1_1mp4_1_1CueSettingsBox.html | 2 +- ...media_1_1ProtectionSystemSpecificInfo.html | 2 +- .../dd6/webm__crypto__helpers_8cc_source.html | 2 +- ...lassshaka_1_1media_1_1AesCtrEncryptor.html | 2 +- .../dee/segmenter__test__base_8h_source.html | 113 +-- docs/d0/df3/packager__util_8cc_source.html | 2 +- ...ia_1_1mp4_1_1AudioSampleEntry-members.html | 2 +- .../d0a/classshaka_1_1media_1_1MkvWriter.html | 2 +- .../d0a/structshaka_1_1media_1_1H264Sps.html | 2 +- ...der__configuration__record_8cc_source.html | 2 +- ...media_1_1mp2t_1_1EsParserH264-members.html | 2 +- docs/d1/d13/status_8h_source.html | 2 +- ...single__segment__segmenter_8cc_source.html | 2 +- docs/d1/d1d/muxer__flags_8cc_source.html | 2 +- .../d1f/classshaka_1_1media_1_1KeySource.html | 10 +- ...1media_1_1mp4_1_1DecodingTimeIterator.html | 2 +- docs/d1/d27/key__fetcher_8h_source.html | 2 +- ..._1media_1_1mp2t_1_1AdtsHeader-members.html | 2 +- docs/d1/d2a/decryptor__source_8cc_source.html | 2 +- docs/d1/d2b/file__util_8cc_source.html | 2 +- ...media_1_1mp4_1_1DataReference-members.html | 2 +- .../structshaka_1_1media_1_1mp4_1_1Box.html | 2 +- .../d2f/webvtt__media__parser_8cc_source.html | 2 +- ...haka_1_1media_1_1mp2t_1_1TsSectionPes.html | 2 +- docs/d1/d31/classshaka_1_1xml_1_1XmlNode.html | 2 +- ...tructshaka_1_1media_1_1SubsampleEntry.html | 2 +- docs/d1/d37/es__parser__h264_8h_source.html | 2 +- .../d3b/mpd__generator__flags_8h_source.html | 2 +- ...shaka_1_1media_1_1mp4_1_1MovieExtends.html | 2 +- .../d40/classshaka_1_1MpdWriter-members.html | 2 +- .../decoding__time__iterator_8cc_source.html | 2 +- .../d1/d48/text__track__config_8h_source.html | 2 +- ...a_1_1media_1_1OffsetByteQueue-members.html | 2 +- ...aka_1_1media_1_1EncryptionKey-members.html | 2 +- ..._1media_1_1mp4_1_1TrackFragmentHeader.html | 2 +- docs/d1/d70/vp8__parser_8cc_source.html | 2 +- docs/d1/d72/language__utils_8cc_source.html | 2 +- .../d74/mp2t__media__parser_8cc_source.html | 2 +- ..._1media_1_1H265VideoSliceHeaderParser.html | 2 +- .../d7d/webm__video__client_8cc_source.html | 2 +- ...ia_1_1H265ReferencePictureSet-members.html | 2 +- docs/d1/d82/adts__constants_8h_source.html | 2 +- ..._1_1media_1_1WebMParserClient-members.html | 2 +- ...1mp4_1_1KeyRotationFragmenter-members.html | 2 +- .../d8e/webm__audio__client_8cc_source.html | 2 +- ...aka_1_1media_1_1H26xBitReader-members.html | 2 +- ...ssshaka_1_1media_1_1ByteQueue-members.html | 2 +- docs/d1/d9d/tracks__builder_8h_source.html | 2 +- ..._1_1mp4_1_1CodecConfiguration-members.html | 2 +- ...assshaka_1_1media_1_1mp4_1_1BoxBuffer.html | 2 +- ...ia_1_1wvm_1_1DemuxStreamIdMediaSample.html | 2 +- ...1NalUnitToByteStreamConverter-members.html | 2 +- ..._1media_1_1VPCodecConfigurationRecord.html | 2 +- ...lassshaka_1_1media_1_1Demuxer-members.html | 2 +- ...a_1_1media_1_1mp4_1_1VideoMediaHeader.html | 2 +- ...oder__configuration__record_8h_source.html | 2 +- docs/d1/dc2/h26x__bit__reader_8h_source.html | 2 +- .../dcb/encrypting__fragmenter_8h_source.html | 2 +- .../dd5/classshaka_1_1media_1_1Cluster.html | 2 +- ...dia_1_1mp4_1_1DataInformation-members.html | 2 +- ...a_1_1media_1_1VideoStreamInfo-members.html | 2 +- ...position__offset__iterator_8cc_source.html | 2 +- ...sshaka_1_1media_1_1KeyFetcher-members.html | 2 +- ...sshaka_1_1xml_1_1AdaptationSetXmlNode.html | 2 +- ...rencePictureListModifications-members.html | 2 +- ..._1_1media_1_1ProgressListener-members.html | 2 +- ...assshaka_1_1media_1_1mp4_1_1BoxReader.html | 2 +- ...tshaka_1_1media_1_1mp4_1_1SampleTable.html | 2 +- docs/d1/df0/aes__encryptor_8h_source.html | 2 +- docs/d1/df3/structshaka_1_1MpdOptions.html | 2 +- docs/d1/df5/nalu__reader_8cc_source.html | 2 +- ...ia_1_1mp4_1_1VideoMediaHeader-members.html | 2 +- docs/d2/d02/timestamp_8h_source.html | 2 +- ...assshaka_1_1media_1_1SeekHead-members.html | 2 +- .../d0f/classshaka_1_1MpdBuilder-members.html | 2 +- ...aka_1_1media_1_1wvm_1_1PrevSampleData.html | 2 +- ...aka_1_1media_1_1MuxerListener-members.html | 2 +- docs/d2/d17/ts__section__pat_8cc_source.html | 2 +- .../d2/d23/threaded__io__file_8cc_source.html | 2 +- docs/d2/d24/packager__util_8h_source.html | 2 +- ...media_1_1mp4_1_1KeyRotationFragmenter.html | 2 +- docs/d2/d30/tracks__builder_8cc_source.html | 2 +- ...ideo__slice__header__parser_8h_source.html | 2 +- ...1_1media_1_1WidevineKeySource-members.html | 4 +- ...1_1mp4_1_1TrackFragmentHeader-members.html | 2 +- ...rogram__map__table__writer_8cc_source.html | 2 +- ...o__byte__stream__converter_8cc_source.html | 2 +- docs/d2/d4d/file_8h_source.html | 2 +- .../d4f/structshaka_1_1Element-members.html | 2 +- ...classshaka_1_1MockMpdNotifier-members.html | 2 +- ...ructshaka_1_1media_1_1H264SliceHeader.html | 2 +- ...ssshaka_1_1media_1_1KeySource-members.html | 4 +- ...assshaka_1_1SimpleMpdNotifier-members.html | 2 +- ...a_1_1H264ModificationOfPicNum-members.html | 2 +- .../d62/simple__mpd__notifier_8h_source.html | 2 +- ...haka_1_1media_1_1mp4_1_1Movie-members.html | 2 +- ...sshaka_1_1media_1_1AesCryptor-members.html | 2 +- docs/d2/d6f/classBandwidthEstimator.html | 2 +- ...ctshaka_1_1media_1_1mp4_1_1SchemeInfo.html | 2 +- ...ssshaka_1_1DashIopMpdNotifier-members.html | 2 +- .../d7b/simple__mpd__notifier_8cc_source.html | 2 +- ...ac__audio__specific__config_8h_source.html | 2 +- ...haka_1_1media_1_1mp4_1_1CuePayloadBox.html | 2 +- ...ls__notify__muxer__listener_8h_source.html | 2 +- ...media_1_1mp4_1_1CuePayloadBox-members.html | 2 +- docs/d2/d92/box__reader_8h_source.html | 2 +- ...ssshaka_1_1media_1_1mp2t_1_1PesPacket.html | 2 +- ...uctshaka_1_1media_1_1StreamDescriptor.html | 2 +- docs/d2/da6/threaded__io__file_8h_source.html | 2 +- docs/d2/da8/mp4_2segmenter_8cc_source.html | 625 +++++++------- ...haka_1_1media_1_1BufferWriter-members.html | 2 +- ...assshaka_1_1MockAdaptationSet-members.html | 2 +- docs/d2/dae/webm__muxer_8cc_source.html | 4 +- ...media_1_1mp4_1_1SampleToGroup-members.html | 2 +- ...a_1_1media_1_1mp4_1_1FileType-members.html | 2 +- ...edia_1_1mp4_1_1CueSourceIDBox-members.html | 2 +- ...lassshaka_1_1media_1_1SegmentTestBase.html | 2 +- ...haka_1_1media_1_1mp4_1_1Track-members.html | 2 +- .../structshaka_1_1MpdOptions-members.html | 2 +- ...program__map__table__writer_8h_source.html | 2 +- ...a_1_1media_1_1mp4_1_1EditList-members.html | 2 +- ...edia_1_1webm_1_1MultiSegmentSegmenter.html | 6 +- docs/d2/dd6/mkv__writer_8h_source.html | 2 +- ...lassshaka_1_1media_1_1WebMMediaParser.html | 2 +- ...haka_1_1media_1_1mp2t_1_1TsSectionPmt.html | 2 +- docs/d2/de6/packager__main_8cc_source.html | 494 +++++------ ...ka_1_1media_1_1TextStreamInfo-members.html | 2 +- ...shaka_1_1media_1_1mp4_1_1Edit-members.html | 2 +- .../de9/mock__muxer__listener_8h_source.html | 2 +- docs/d2/deb/es__parser_8h_source.html | 2 +- ...media_1_1mp2t_1_1TsSectionPes-members.html | 2 +- .../pes__packet__generator_8cc_source.html | 2 +- ...a_1_1SegmentTestBase_1_1ClusterParser.html | 4 +- ...ssshaka_1_1media_1_1MkvWriter-members.html | 2 +- docs/d2/dfd/adts__header_8h_source.html | 2 +- ..._1_1media_1_1mp4_1_1BoxReader-members.html | 2 +- ..._1_1mp4_1_1SyncSampleIterator-members.html | 2 +- .../classshaka_1_1media_1_1MediaParser.html | 2 +- ...sshaka_1_1media_1_1mp2t_1_1AdtsHeader.html | 2 +- ..._1media_1_1LibcryptoThreading-members.html | 2 +- docs/d3/d15/udp__file__win_8cc_source.html | 2 +- ...media_1_1mp2t_1_1TsSectionPat-members.html | 2 +- docs/d3/d19/io__cache_8h_source.html | 2 +- ...deo__slice__header__parser_8cc_source.html | 2 +- ...uctshaka_1_1media_1_1mp4_1_1PrivFrame.html | 2 +- ...sshaka_1_1media_1_1LibcryptoThreading.html | 2 +- docs/d3/d56/decrypt__config_8cc_source.html | 2 +- docs/d3/d61/classshaka_1_1media_1_1File.html | 2 +- .../d3/d62/continuity__counter_8h_source.html | 2 +- docs/d3/d62/rcheck_8h_source.html | 2 +- ...1media_1_1mp4_1_1DataEntryUrl-members.html | 2 +- ...lassshaka_1_1media_1_1WebMVideoClient.html | 2 +- .../d3/d6b/fixed__key__source_8cc_source.html | 2 +- ...lassshaka_1_1media_1_1mp2t_1_1TsMuxer.html | 12 +- docs/d3/d72/fixed__key__source_8h_source.html | 2 +- ...ssshaka_1_1media_1_1webm_1_1WebMMuxer.html | 12 +- .../classshaka_1_1media_1_1AesEncryptor.html | 2 +- ...a_1_1mp4_1_1ChunkInfoIterator-members.html | 2 +- docs/d3/d76/muxer__flags_8h_source.html | 2 +- ...dia_1_1mp4_1_1TextSampleEntry-members.html | 2 +- ...haka_1_1media_1_1RsaPublicKey-members.html | 2 +- ...lassshaka_1_1media_1_1WebMAudioClient.html | 2 +- docs/d3/d80/muxer__util_8h_source.html | 18 +- ...haka_1_1media_1_1mp4_1_1SampleToChunk.html | 2 +- .../structshaka_1_1media_1_1FileCloser.html | 2 +- .../d3/d8d/webm__audio__client_8h_source.html | 2 +- docs/d3/d90/ec3__audio__util_8cc_source.html | 2 +- .../classshaka_1_1media_1_1H264Parser.html | 2 +- docs/d3/da0/ec3__audio__util_8h_source.html | 2 +- ...dia_1_1webm_1_1SingleSegmentSegmenter.html | 6 +- ...ctshaka_1_1media_1_1mp4_1_1SchemeType.html | 2 +- .../structshaka_1_1media_1_1mp4_1_1ID3v2.html | 2 +- ..._1_1media_1_1WebMWebVTTParser-members.html | 2 +- .../structshaka_1_1media_1_1mp4_1_1Track.html | 2 +- docs/d3/db6/webm__parser_8cc_source.html | 2 +- docs/d3/dbc/seek__head_8cc_source.html | 2 +- docs/d3/dbe/demuxer_8cc_source.html | 2 +- ...ructshaka_1_1media_1_1mp4_1_1EditList.html | 2 +- ...a_1_1media_1_1mp2t_1_1Mp2tMediaParser.html | 2 +- docs/d3/dd0/classshaka_1_1MpdNotifier.html | 2 +- ...tshaka_1_1media_1_1mp4_1_1SegmentType.html | 2 +- docs/d3/de4/seek__head_8h_source.html | 2 +- ..._1_1media_1_1mp4_1_1BoxBuffer-members.html | 2 +- ...mp4_1_1SampleGroupDescription-members.html | 2 +- docs/d3/df1/box__reader_8cc_source.html | 2 +- ...ssshaka_1_1media_1_1AesPatternCryptor.html | 2 +- ...2multi__segment__segmenter_8cc_source.html | 8 +- ...edia_1_1mp4_1_1MP4MediaParser-members.html | 2 +- .../d0b/classshaka_1_1media_1_1TextTrack.html | 2 +- ...1_1media_1_1WebVttMediaParser-members.html | 2 +- ...haka_1_1media_1_1mp4_1_1EditListEntry.html | 2 +- ...lassshaka_1_1media_1_1AesCbcEncryptor.html | 2 +- ...ia_1_1mp4_1_1ChunkLargeOffset-members.html | 2 +- ...haka_1_1media_1_1mp4_1_1ID3v2-members.html | 2 +- ...1media_1_1mp4_1_1WebVTTSourceLabelBox.html | 2 +- docs/d4/d37/io__cache_8cc_source.html | 2 +- ...ructshaka_1_1media_1_1H264Sps-members.html | 2 +- ...pleAuxiliaryInformationOffset-members.html | 2 +- ...haka_1_1media_1_1H264WeightingFactors.html | 2 +- .../classshaka_1_1media_1_1Nalu-members.html | 2 +- ...assshaka_1_1media_1_1WebMWebVTTParser.html | 2 +- ...aka_1_1media_1_1DecryptConfig-members.html | 2 +- ...lassshaka_1_1media_1_1UdpFile-members.html | 2 +- .../d70/classshaka_1_1DashIopMpdNotifier.html | 2 +- .../structshaka_1_1SegmentInfo-members.html | 2 +- docs/d4/d87/nalu__reader_8h_source.html | 2 +- ...dia_1_1HEVCDecoderConfigurationRecord.html | 2 +- ...tshaka_1_1media_1_1mp4_1_1EC3Specific.html | 2 +- .../classshaka_1_1media_1_1UdpOptions.html | 2 +- .../da7/segmenter__test__base_8cc_source.html | 2 +- ...a_1_1media_1_1mp4_1_1SampleEncryption.html | 2 +- ...a_1_1mp4_1_1CompactSampleSize-members.html | 2 +- docs/d4/db2/cluster__builder_8h_source.html | 2 +- .../db4/classshaka_1_1MpdNotifierFactory.html | 2 +- ...tshaka_1_1media_1_1mp4_1_1MediaHeader.html | 2 +- ...a_1_1mp2t_1_1AacProgramMapTableWriter.html | 2 +- docs/d4/dd3/bit__reader_8h_source.html | 2 +- ...ka_1_1media_1_1mp4_1_1FullBox-members.html | 2 +- ...sshaka_1_1media_1_1MemoryFile-members.html | 2 +- docs/d4/dde/webvtt__util_8h_source.html | 2 +- ...haka_1_1media_1_1mp4_1_1DataReference.html | 2 +- ...assshaka_1_1media_1_1ProgressListener.html | 2 +- ...VodMediaInfoDumpMuxerListener-members.html | 2 +- docs/d4/dec/hls__flags_8h_source.html | 2 +- docs/d4/df5/request__signer_8cc_source.html | 2 +- ...shaka_1_1media_1_1mp4_1_1SegmentIndex.html | 2 +- ...tshaka_1_1media_1_1mp4_1_1AC3Specific.html | 2 +- .../dfd/structshaka_1_1media_1_1H265Sps.html | 2 +- .../dff/webm__media__parser_8cc_source.html | 2 +- ...ructshaka_1_1media_1_1mp4_1_1FileType.html | 2 +- ...aka_1_1media_1_1mp4_1_1OriginalFormat.html | 2 +- ...ructshaka_1_1media_1_1mp4_1_1CueIDBox.html | 2 +- ...ka_1_1media_1_1WebMInfoParser-members.html | 2 +- ..._1_1mp4_1_1ElementaryStreamDescriptor.html | 2 +- .../classshaka_1_1media_1_1ESDescriptor.html | 2 +- .../producer__consumer__queue_8h_source.html | 2 +- docs/d5/d1a/ts__section_8h_source.html | 2 +- ...ia_1_1mp4_1_1TrackRunIterator-members.html | 2 +- docs/d5/d27/key__fetcher_8cc_source.html | 2 +- ...aka_1_1media_1_1ProducerConsumerQueue.html | 2 +- ...haka_1_1media_1_1mp4_1_1Media-members.html | 2 +- ...2single__segment__segmenter_8h_source.html | 2 +- ...media_1_1mp2t_1_1TsSectionPsi-members.html | 2 +- docs/d5/d4d/box_8cc_source.html | 2 +- docs/d5/d52/ts__section__pes_8h_source.html | 2 +- ...ampleAuxiliaryInformationSize-members.html | 2 +- ...esentationStateChangeListener-members.html | 2 +- ...ssshaka_1_1MockRepresentation-members.html | 2 +- .../d5c/continuity__counter_8cc_source.html | 2 +- ...haka_1_1media_1_1mp2t_1_1EsParserH265.html | 2 +- docs/d5/d63/network__util_8cc_source.html | 2 +- ...media_1_1NalUnitToByteStreamConverter.html | 2 +- docs/d5/d6f/vlog__flags_8cc_source.html | 2 +- ...der__configuration__record_8cc_source.html | 2 +- docs/d5/d7b/box__definitions_8h_source.html | 2 +- ...a_1_1media_1_1mp4_1_1MediaInformation.html | 2 +- .../d89/widevine__key__source_8cc_source.html | 412 ++++----- ..._1_1media_1_1mp4_1_1CompositionOffset.html | 2 +- .../d8f/webm__cluster__parser_8cc_source.html | 2 +- docs/d5/d91/es__parser__adts_8cc_source.html | 2 +- ...media_1_1mp4_1_1EditListEntry-members.html | 2 +- docs/d5/d98/encryptor_8cc_source.html | 2 +- ...odec__configuration__record_8h_source.html | 2 +- ...H265ReferencePictureListModifications.html | 2 +- docs/d5/da4/aes__encryptor_8cc_source.html | 2 +- ...a_1_1media_1_1H265ReferencePictureSet.html | 2 +- .../classshaka_1_1media_1_1StreamInfo.html | 2 +- ...haka_1_1media_1_1mp2t_1_1EsParserH264.html | 2 +- docs/d5/dba/ts__packet_8cc_source.html | 2 +- .../dc1/webm__webvtt__parser_8cc_source.html | 2 +- ...media_1_1mp4_1_1TrackFragment-members.html | 2 +- ...4_1_1SampleAuxiliaryInformationOffset.html | 2 +- docs/d5/dcf/rsa__key_8h_source.html | 2 +- docs/d5/dda/ts__section__psi_8h_source.html | 2 +- docs/d5/de0/bit__reader_8cc_source.html | 2 +- ..._1media_1_1mp2t_1_1PesPacketGenerator.html | 2 +- ...assshaka_1_1media_1_1WebMParserClient.html | 2 +- ...der__configuration__record_8cc_source.html | 2 +- ...mp4_1_1WebVTTConfigurationBox-members.html | 2 +- docs/d5/def/ts__section__pmt_8h_source.html | 2 +- ...ka_1_1media_1_1HlsNotifyMuxerListener.html | 2 +- ...shaka_1_1media_1_1MediaParser-members.html | 2 +- docs/d5/dfc/file_8cc_source.html | 2 +- ...a_1_1media_1_1AesCbcDecryptor-members.html | 2 +- .../d09/aes__pattern__cryptor_8h_source.html | 2 +- .../d6/d16/text__stream__info_8cc_source.html | 2 +- docs/d6/d17/es__parser__h264_8cc_source.html | 2 +- ...tshaka_1_1media_1_1mp4_1_1MovieHeader.html | 2 +- .../ts__packet__writer__util_8cc_source.html | 2 +- ...1_1media_1_1VideoStreamInfoParameters.html | 2 +- .../d2e/mpd__notifier__util_8cc_source.html | 2 +- ...ssshaka_1_1media_1_1TextTrack-members.html | 2 +- .../webm__content__encodings_8cc_source.html | 2 +- .../d3b/chunk__info__iterator_8cc_source.html | 2 +- .../encrypting__fragmenter_8cc_source.html | 2 +- ...2multi__segment__segmenter_8cc_source.html | 4 +- docs/d6/d55/aes__cryptor_8cc_source.html | 2 +- ...edia_1_1AVCDecoderConfigurationRecord.html | 2 +- ...ion__system__specific__info_8h_source.html | 2 +- ...1_1VPCodecConfigurationRecord-members.html | 2 +- docs/d6/d6c/h26x__bit__reader_8cc_source.html | 2 +- docs/d6/d6e/ts__section__pes_8cc_source.html | 2 +- docs/d6/d71/scoped__xml__ptr_8h_source.html | 2 +- .../dash__iop__mpd__notifier_8h_source.html | 2 +- ...1media_1_1mp4_1_1VTTAdditionalTextBox.html | 2 +- .../d7b/webm__tracks__parser_8h_source.html | 2 +- ..._1media_1_1mp4_1_1AC3Specific-members.html | 2 +- .../d86/bandwidth__estimator_8cc_source.html | 2 +- docs/d6/d8a/vp9__parser_8cc_source.html | 2 +- ..._1_1RepresentationBaseXmlNode-members.html | 2 +- docs/d6/d9b/h264__parser_8h_source.html | 2 +- docs/d6/d9f/hls__flags_8cc_source.html | 2 +- docs/d6/da0/ts__section__pat_8h_source.html | 2 +- docs/d6/da3/mpd__builder_8h_source.html | 2 +- ...AVCDecoderConfigurationRecord-members.html | 2 +- ...iceHeader_1_1LongTermPicsInfo-members.html | 2 +- .../da9/classshaka_1_1media_1_1BitReader.html | 2 +- ...uctshaka_1_1media_1_1mp4_1_1VTTCueBox.html | 2 +- ...shaka_1_1media_1_1MediaStream-members.html | 2 +- ...lassshaka_1_1media_1_1VideoStreamInfo.html | 2 +- ..._1_1VideoStreamInfoParameters-members.html | 2 +- ...sParserH26x_1_1VideoSliceInfo-members.html | 2 +- ...media_1_1mp2t_1_1EsParserH26x-members.html | 2 +- docs/d6/dc8/mkv__writer_8cc_source.html | 2 +- ...media_1_1mp4_1_1SampleEncryptionEntry.html | 2 +- ...ssshaka_1_1media_1_1VP9Parser-members.html | 2 +- ...ia_1_1mp4_1_1SegmentReference-members.html | 2 +- ...haka_1_1media_1_1mp2t_1_1EsParserAdts.html | 2 +- ...tructshaka_1_1media_1_1H264SEIMessage.html | 2 +- ...1_1media_1_1H265VuiParameters-members.html | 2 +- ...1_1media_1_1mp4_1_1CueTimeBox-members.html | 2 +- ...haka_1_1media_1_1VPxFrameInfo-members.html | 2 +- docs/d6/de8/local__file_8cc_source.html | 2 +- docs/d6/de8/network__util_8h_source.html | 2 +- docs/d6/de9/ts__segmenter_8cc_source.html | 339 ++++---- docs/d6/ded/ts__packet_8h_source.html | 2 +- .../sync__sample__iterator_8cc_source.html | 2 +- docs/d6/dff/classshaka_1_1media_1_1Nalu.html | 2 +- ...edia_1_1mp4_1_1SampleGroupDescription.html | 2 +- ...a_1_1media_1_1mp4_1_1SoundMediaHeader.html | 2 +- ...xer__listener__test__helper_8h_source.html | 2 +- docs/d7/d12/media__parser_8h_source.html | 2 +- docs/d7/d15/mpd__notifier_8h_source.html | 2 +- ...ia_1_1mp4_1_1VideoSampleEntry-members.html | 2 +- .../d22/libcrypto__threading_8h_source.html | 2 +- ...1_1media_1_1mp4_1_1SyncSampleIterator.html | 2 +- ...ructshaka_1_1media_1_1H265Sps-members.html | 2 +- ...p4_1_1CompositionTimeToSample-members.html | 2 +- ...a_1_1media_1_1ContentEncoding-members.html | 2 +- ...on__system__specific__info_8cc_source.html | 2 +- ...ctshaka_1_1media_1_1mp4_1_1SampleSize.html | 2 +- ...ia_1_1mp4_1_1SampleEncryption-members.html | 2 +- ...ka_1_1media_1_1WebMListParser-members.html | 2 +- ...H26xByteToUnitStreamConverter-members.html | 2 +- ...lassshaka_1_1media_1_1DecryptorSource.html | 2 +- .../classshaka_1_1media_1_1MediaSample.html | 2 +- ..._1media_1_1mp4_1_1MediaHeader-members.html | 2 +- ...ka_1_1media_1_1H264SEIMessage-members.html | 2 +- .../d7a/classshaka_1_1media_1_1UdpFile.html | 2 +- docs/d7/d7c/vlog__flags_8h_source.html | 2 +- .../d7/d87/video__stream__info_8h_source.html | 2 +- ..._1H265SliceHeader_1_1LongTermPicsInfo.html | 2 +- docs/d7/d9d/progress__listener_8h_source.html | 2 +- .../da4/track__run__iterator_8h_source.html | 2 +- ...uctshaka_1_1media_1_1mp4_1_1MediaData.html | 2 +- docs/d7/db0/mpd__writer_8h_source.html | 2 +- ...media_1_1mp4_1_1SampleToChunk-members.html | 2 +- ...ka_1_1media_1_1mp4_1_1TextSampleEntry.html | 2 +- docs/d7/dc6/byte__queue_8h_source.html | 2 +- .../d7/dd0/mpd__notifier__util_8h_source.html | 2 +- docs/d7/dd4/request__signer_8h_source.html | 2 +- ...aka_1_1media_1_1mp4_1_1MP4MediaParser.html | 2 +- docs/d7/dd6/key__source_8cc_source.html | 64 +- .../dda/classshaka_1_1media_1_1ByteQueue.html | 2 +- ...assshaka_1_1media_1_1RsaRequestSigner.html | 2 +- ...classshaka_1_1media_1_1HttpKeyFetcher.html | 2 +- ...1_1media_1_1mp4_1_1SampleToGroupEntry.html | 2 +- ...to__unit__stream__converter_8h_source.html | 2 +- docs/d7/dee/mpd__generator_8cc_source.html | 2 +- .../d7/def/mp4__media__parser_8cc_source.html | 2 +- docs/d7/df9/byte__queue_8cc_source.html | 2 +- ...edia_1_1H264ByteToUnitStreamConverter.html | 2 +- ...1_1media_1_1WebMClusterParser-members.html | 2 +- ..._1_1media_1_1mp2t_1_1TsWriter-members.html | 2 +- ..._1media_1_1mp4_1_1MovieHeader-members.html | 2 +- docs/d8/d0d/media__sample_8cc_source.html | 2 +- ...shaka_1_1media_1_1mp4_1_1DecodingTime.html | 2 +- ..._1_1media_1_1mp4_1_1PrivFrame-members.html | 2 +- ...ssshaka_1_1media_1_1BitReader-members.html | 2 +- .../d14/classshaka_1_1media_1_1VP8Parser.html | 2 +- ...haka_1_1media_1_1MuxerOptions-members.html | 2 +- .../d19/bandwidth__estimator_8h_source.html | 2 +- ...edia_1_1mp4_1_1WebVTTConfigurationBox.html | 2 +- ...ka_1_1media_1_1SubsampleEntry-members.html | 2 +- docs/d8/d28/es__parser__h265_8h_source.html | 2 +- ..._content__encodings__client_8h_source.html | 2 +- ...1_1media_1_1StreamDescriptorCompareFn.html | 2 +- docs/d8/d4d/aes__decryptor_8h_source.html | 2 +- ...a_1_1media_1_1mp4_1_1AudioSampleEntry.html | 2 +- .../classshaka_1_1media_1_1MediaStream.html | 2 +- ...ka_1_1media_1_1ClusterBuilder-members.html | 2 +- ...ka_1_1media_1_1mp4_1_1DataInformation.html | 2 +- ...a_1_1media_1_1mp4_1_1Metadata-members.html | 2 +- .../classshaka_1_1media_1_1TracksBuilder.html | 2 +- ...assshaka_1_1media_1_1WebMTracksParser.html | 2 +- ...1media_1_1mp4_1_1MovieExtends-members.html | 2 +- docs/d8/d8e/classshaka_1_1AdaptationSet.html | 2 +- ...a_1_1media_1_1AesCtrEncryptor-members.html | 2 +- ..._1_1media_1_1AesRequestSigner-members.html | 2 +- ...media_1_1H264DecRefPicMarking-members.html | 2 +- ...1_1mp4_1_1SubtitleMediaHeader-members.html | 2 +- docs/d8/d94/adts__constants_8cc_source.html | 2 +- docs/d8/d94/pes__packet_8h_source.html | 2 +- ..._1mp4_1_1VTTAdditionalTextBox-members.html | 2 +- docs/d8/d9a/fragmenter_8cc_source.html | 2 +- .../d9c/webm__tracks__parser_8cc_source.html | 2 +- docs/d8/d9f/udp__file_8h_source.html | 2 +- ...a_1_1media_1_1DecryptorSource-members.html | 2 +- ...1_1media_1_1mp4_1_1SampleSize-members.html | 2 +- ...sshaka_1_1media_1_1NaluReader-members.html | 2 +- docs/d8/daa/stream__info_8h_source.html | 2 +- docs/d8/daf/namespaceshaka.html | 4 +- ...media_1_1mp4_1_1MultiSegmentSegmenter.html | 6 +- ...1_1WebMContentEncodingsClient-members.html | 2 +- ...p2t_1_1EsParserH26x_1_1VideoSliceInfo.html | 2 +- ...ctshaka_1_1media_1_1mp4_1_1CueTimeBox.html | 2 +- docs/d8/dca/ts__writer_8h_source.html | 2 +- ...1media_1_1mp4_1_1DecodingTime-members.html | 2 +- ...1media_1_1mp4_1_1TrackExtends-members.html | 2 +- ...1_1media_1_1mp2t_1_1ContinuityCounter.html | 2 +- ...1mp4_1_1CencSampleEncryptionInfoEntry.html | 2 +- .../de1/classshaka_1_1SimpleMpdNotifier.html | 2 +- .../de6/webm__crypto__helpers_8h_source.html | 2 +- ..._1_1media_1_1mp2t_1_1EsParser-members.html | 2 +- ...media_1_1AudioTimestampHelper-members.html | 2 +- ...ssshaka_1_1media_1_1VPxParser-members.html | 2 +- ...single__segment__segmenter_8cc_source.html | 4 +- ...a_1_1media_1_1SegmentTestBase-members.html | 2 +- ...to__byte__stream__converter_8h_source.html | 2 +- ...media_1_1OnMediaEndParameters-members.html | 2 +- ...2single__segment__segmenter_8h_source.html | 2 +- docs/d9/d08/mock__mpd__builder_8h_source.html | 2 +- ...dia_1_1HlsNotifyMuxerListener-members.html | 2 +- .../classshaka_1_1media_1_1RsaPublicKey.html | 2 +- .../classshaka_1_1media_1_1BufferReader.html | 2 +- .../key__rotation__fragmenter_8cc_source.html | 2 +- ...haka_1_1media_1_1mp4_1_1MovieFragment.html | 2 +- ...haka_1_1media_1_1AesEncryptor-members.html | 2 +- ...assshaka_1_1media_1_1mp4_1_1Segmenter.html | 32 +- ...aka_1_1media_1_1TracksBuilder-members.html | 2 +- .../classshaka_1_1media_1_1File-members.html | 2 +- .../webm__content__encodings_8h_source.html | 2 +- ...aka_1_1media_1_1mp4_1_1VTTEmptyCueBox.html | 2 +- ...aka_1_1media_1_1mp4_1_1CueSourceIDBox.html | 2 +- ..._1_1media_1_1mp4_1_1ChunkInfoIterator.html | 2 +- ...media_1_1mp2t_1_1EsParserAdts-members.html | 2 +- ...ctshaka_1_1media_1_1H265VuiParameters.html | 2 +- ...a_1_1media_1_1H264SliceHeader-members.html | 2 +- docs/d9/d76/ts__muxer_8cc_source.html | 77 +- ...aka_1_1media_1_1ClosureThread-members.html | 2 +- docs/d9/d86/limits_8h_source.html | 2 +- ..._1media_1_1WebMContentEncodingsClient.html | 2 +- ...assshaka_1_1media_1_1AesRequestSigner.html | 2 +- ...1ProtectionSystemSpecificInfo-members.html | 2 +- docs/d9/d90/text__track_8h_source.html | 2 +- docs/d9/d93/media__stream_8h_source.html | 2 +- docs/d9/da4/stream__descriptor_8h_source.html | 2 +- ...ka_1_1media_1_1MpdNotifyMuxerListener.html | 2 +- .../structshaka_1_1media_1_1Cue-members.html | 2 +- ..._1_1media_1_1mp4_1_1Segmenter-members.html | 4 +- ..._1_1CompositionOffsetIterator-members.html | 2 +- ...ntent__protection__element_8cc_source.html | 2 +- docs/d9/db9/muxer_8cc_source.html | 208 ++--- .../classshaka_1_1media_1_1MemoryFile.html | 2 +- ...haka_1_1media_1_1BufferReader-members.html | 2 +- ...1mp4_1_1SampleEncryptionEntry-members.html | 2 +- docs/d9/dc8/webm__constants_8cc_source.html | 2 +- .../d9/dcc/webm__video__client_8h_source.html | 2 +- .../muxer__listener__internal_8cc_source.html | 2 +- .../de6/classshaka_1_1media_1_1LocalFile.html | 2 +- ...ka_1_1media_1_1FixedKeySource-members.html | 4 +- ...c__audio__specific__config_8cc_source.html | 2 +- ...p4_1_1TrackFragmentDecodeTime-members.html | 2 +- ...lassshaka_1_1media_1_1OffsetByteQueue.html | 2 +- ..._1_1media_1_1H264ModificationOfPicNum.html | 2 +- .../d04/audio__stream__info_8cc_source.html | 2 +- ...assshaka_1_1media_1_1mp2t_1_1EsParser.html | 2 +- ...ructshaka_1_1media_1_1mp4_1_1Language.html | 2 +- ...ssshaka_1_1media_1_1mp2t_1_1TsSection.html | 2 +- docs/da/d1d/udp__options_8cc_source.html | 2 +- .../key__rotation__fragmenter_8h_source.html | 2 +- ...haka_1_1media_1_1mp2t_1_1EsParserH26x.html | 2 +- docs/da/d23/ts__muxer_8h_source.html | 2 +- docs/da/d24/h265__parser_8h_source.html | 2 +- docs/da/d2a/text__stream__info_8h_source.html | 2 +- ...1_1media_1_1webm_1_1WebMMuxer-members.html | 8 +- ...ia_1_1mp4_1_1PixelAspectRatio-members.html | 2 +- ..._2multi__segment__segmenter_8h_source.html | 2 +- ...ructshaka_1_1ContentProtectionElement.html | 2 +- ...lassshaka_1_1media_1_1AudioStreamInfo.html | 2 +- ...1_1media_1_1mp4_1_1MovieExtendsHeader.html | 2 +- docs/da/d53/es__parser__h265_8cc_source.html | 2 +- ..._1_1media_1_1mp4_1_1CompactSampleSize.html | 2 +- .../d5c/widevine__key__source_8h_source.html | 2 +- ...1_1H264VideoSliceHeaderParser-members.html | 2 +- ...mp4_1_1SingleSegmentSegmenter-members.html | 4 +- ..._1_1H264ProgramMapTableWriter-members.html | 2 +- ...edia_1_1mp4_1_1AudioRollRecoveryEntry.html | 2 +- ...xed__key__encryption__flags_8h_source.html | 2 +- ...1media_1_1mp2t_1_1TsSegmenter-members.html | 4 +- docs/da/d88/mp4__muxer_8cc_source.html | 521 ++++++------ ...a_1_1media_1_1WebMMediaParser-members.html | 2 +- docs/da/d8e/container__names_8cc_source.html | 2 +- ...a_1_1mp4_1_1CompositionOffset-members.html | 2 +- ..._1media_1_1mp4_1_1EC3Specific-members.html | 2 +- ...ssshaka_1_1MpdNotifierFactory-members.html | 2 +- ...1_1media_1_1MockMuxerListener-members.html | 2 +- ...assshaka_1_1media_1_1mp2t_1_1TsPacket.html | 2 +- .../classshaka_1_1Representation-members.html | 2 +- ...a_1_1media_1_1mp4_1_1HandlerReference.html | 2 +- docs/da/dc3/status_8cc_source.html | 2 +- ...tshaka_1_1media_1_1mp4_1_1TrackHeader.html | 2 +- docs/da/dcb/es__descriptor_8h_source.html | 2 +- .../structshaka_1_1media_1_1mp4_1_1Edit.html | 2 +- docs/da/dd0/webm__info__parser_8h_source.html | 2 +- docs/da/dd1/fragmenter_8h_source.html | 2 +- ..._1_1media_1_1mp2t_1_1TsPacket-members.html | 2 +- ...H264ByteToUnitStreamConverter-members.html | 2 +- ...ia_1_1mp2t_1_1Mp2tMediaParser-members.html | 2 +- ...media_1_1H264SEIRecoveryPoint-members.html | 2 +- ...ssshaka_1_1media_1_1WidevineKeySource.html | 10 +- ...a_1_1mp4_1_1SampleDescription-members.html | 2 +- .../da/de2/mock__mpd__builder_8cc_source.html | 2 +- ...ssshaka_1_1media_1_1WebMClusterParser.html | 2 +- ...1_1media_1_1mp4_1_1SchemeType-members.html | 2 +- ...a_1_1media_1_1AudioStreamInfo-members.html | 2 +- ...1media_1_1mp4_1_1ProtectionSchemeInfo.html | 2 +- ..._1media_1_1H264VideoSliceHeaderParser.html | 2 +- docs/da/df4/aes__decryptor_8cc_source.html | 2 +- ..._1_1media_1_1mp4_1_1SampleDescription.html | 2 +- ...1_1media_1_1AesPatternCryptor-members.html | 2 +- ...ructshaka_1_1media_1_1H265SliceHeader.html | 2 +- ...1_1media_1_1mp4_1_1CodecConfiguration.html | 2 +- ...sshaka_1_1media_1_1H265Parser-members.html | 2 +- ...media_1_1H264WeightingFactors-members.html | 2 +- ..._1media_1_1mp4_1_1SubtitleMediaHeader.html | 2 +- ...lassshaka_1_1media_1_1mp4_1_1MP4Muxer.html | 12 +- ...to__unit__stream__converter_8h_source.html | 2 +- .../d31/track__run__iterator_8cc_source.html | 2 +- ...1_1mp2t_1_1PesPacketGenerator-members.html | 2 +- ...dia_1_1VideoSliceHeaderParser-members.html | 2 +- ...pd__notify__muxer__listener_8h_source.html | 2 +- .../d4b/classshaka_1_1MockAdaptationSet.html | 2 +- ...a_1_1mp4_1_1CompositionOffsetIterator.html | 2 +- .../db/d51/mp2t__media__parser_8h_source.html | 2 +- ..._single__segment__segmenter_8h_source.html | 2 +- .../d5a/classshaka_1_1media_1_1VP9Parser.html | 2 +- docs/db/d60/mpd__options_8h_source.html | 2 +- .../d64/webvtt__media__parser_8h_source.html | 2 +- ..._1media_1_1mp4_1_1SegmentType-members.html | 2 +- docs/db/d71/http__key__fetcher_8h_source.html | 2 +- ...EVCDecoderConfigurationRecord-members.html | 2 +- ...TwoPassSingleSegmentSegmenter-members.html | 4 +- ..._1_1mp2t_1_1ContinuityCounter-members.html | 2 +- docs/db/d7e/muxer__options_8cc_source.html | 2 +- ...dia_1_1AACAudioSpecificConfig-members.html | 2 +- .../classshaka_1_1media_1_1NaluReader.html | 2 +- docs/db/d8f/mp4__muxer_8h_source.html | 2 +- ...classshaka_1_1media_1_1ClusterBuilder.html | 2 +- ...ssshaka_1_1media_1_1mp4_1_1Fragmenter.html | 2 +- ...a_1_1media_1_1mp4_1_1ChunkLargeOffset.html | 2 +- docs/db/d96/wvm__media__parser_8h_source.html | 2 +- .../da4/classBandwidthEstimator-members.html | 2 +- docs/db/da6/memory__file_8h_source.html | 2 +- ...classshaka_1_1media_1_1TextStreamInfo.html | 2 +- ...classshaka_1_1media_1_1WebMInfoParser.html | 2 +- ...ia_1_1mp4_1_1SoundMediaHeader-members.html | 2 +- ...CencSampleEncryptionInfoEntry-members.html | 2 +- ...haka_1_1media_1_1OnMediaEndParameters.html | 2 +- ...ka_1_1media_1_1mp4_1_1TrackEncryption.html | 2 +- .../dcb/classshaka_1_1media_1_1VPxParser.html | 2 +- ...1_1media_1_1webm_1_1Encryptor-members.html | 2 +- docs/db/dcd/classshaka_1_1MpdWriter.html | 2 +- ..._1media_1_1mp4_1_1DTSSpecific-members.html | 2 +- ...edia_1_1VodMediaInfoDumpMuxerListener.html | 2 +- .../dd2/chunk__info__iterator_8h_source.html | 2 +- .../dd9/sync__sample__iterator_8h_source.html | 2 +- docs/db/dde/h265__parser_8cc_source.html | 2 +- .../audio__timestamp__helper_8cc_source.html | 2 +- docs/db/dee/pes__packet_8cc_source.html | 2 +- ...a_1_1media_1_1H265SliceHeader-members.html | 2 +- ...lassshaka_1_1media_1_1Cluster-members.html | 2 +- docs/db/df6/muxer_8h_source.html | 175 ++-- ...edia_1_1H265ByteToUnitStreamConverter.html | 2 +- docs/db/dfb/mpd__utils_8cc_source.html | 2 +- ...d__notify__muxer__listener_8cc_source.html | 2 +- ..._1_1media_1_1mp4_1_1ChunkInfo-members.html | 2 +- ...lassshaka_1_1media_1_1IoCache-members.html | 2 +- ...edia_1_1mp2t_1_1ProgramMapTableWriter.html | 2 +- ...sshaka_1_1media_1_1StreamInfo-members.html | 2 +- ...haka_1_1media_1_1ESDescriptor-members.html | 2 +- .../d16/classshaka_1_1media_1_1SeekHead.html | 2 +- ...aka_1_1media_1_1wvm_1_1WvmMediaParser.html | 2 +- ..._1mp4_1_1ProtectionSchemeInfo-members.html | 2 +- docs/dc/d19/box_8h_source.html | 2 +- .../dash__iop__mpd__notifier_8cc_source.html | 2 +- ...ed__key__encryption__flags_8cc_source.html | 2 +- .../d3c/webm__cluster__parser_8h_source.html | 2 +- docs/dc/d3f/key__source_8h_source.html | 78 +- .../classshaka_1_1xml_1_1XmlNode-members.html | 2 +- .../classshaka_1_1media_1_1BufferWriter.html | 2 +- ...rotectionSystemSpecificHeader-members.html | 2 +- ..._1media_1_1mp4_1_1TrackHeader-members.html | 2 +- ...o__unit__stream__converter_8cc_source.html | 2 +- .../decoding__time__iterator_8h_source.html | 2 +- docs/dc/d53/webm_2segmenter_8cc_source.html | 791 +++++++++--------- ...haka_1_1media_1_1H264DecRefPicMarking.html | 2 +- .../dc/d58/webm__media__parser_8h_source.html | 2 +- .../dc/d5c/classshaka_1_1MockMpdNotifier.html | 2 +- ...edia_1_1mp4_1_1CueSettingsBox-members.html | 2 +- ...1_1media_1_1webm_1_1Segmenter-members.html | 4 +- ...1_1media_1_1mp2t_1_1TsSection-members.html | 2 +- ...ssshaka_1_1media_1_1MockMuxerListener.html | 2 +- docs/dc/d7b/closure__thread_8cc_source.html | 2 +- docs/dc/d7b/h264__parser_8cc_source.html | 2 +- ...1_1ElementaryStreamDescriptor-members.html | 2 +- ..._1media_1_1mp4_1_1MovieFragmentHeader.html | 2 +- ...tshaka_1_1media_1_1mp4_1_1DTSSpecific.html | 2 +- docs/dc/da1/classshaka_1_1MpdBuilder.html | 2 +- ...lassshaka_1_1media_1_1ContentEncoding.html | 2 +- ...tshaka_1_1media_1_1FileCloser-members.html | 2 +- docs/dc/dbf/box__buffer_8h_source.html | 2 +- ...1xml_1_1RepresentationXmlNode-members.html | 2 +- ...classshaka_1_1media_1_1WebMListParser.html | 2 +- docs/dc/dd9/rsa__key_8cc_source.html | 2 +- .../structshaka_1_1media_1_1mp4_1_1Media.html | 2 +- docs/dc/ddf/udp__file__posix_8cc_source.html | 2 +- docs/dc/de1/structshaka_1_1SegmentInfo.html | 2 +- ...1_1media_1_1mp4_1_1Fragmenter-members.html | 2 +- ...to__unit__stream__converter_8h_source.html | 2 +- docs/dc/dec/ts__section__pmt_8cc_source.html | 2 +- .../classshaka_1_1media_1_1ClosureThread.html | 2 +- ...ssshaka_1_1media_1_1WebVttMediaParser.html | 2 +- ...1media_1_1mp4_1_1EncryptingFragmenter.html | 2 +- ...ebm_1_1SingleSegmentSegmenter-members.html | 4 +- ...ia_1_1mp4_1_1TrackFragmentRun-members.html | 2 +- docs/dc/df8/closure__thread_8h_source.html | 2 +- ...tshaka_1_1media_1_1mp4_1_1ChunkOffset.html | 2 +- docs/dd/d11/mpd__builder_8cc_source.html | 2 +- docs/dd/d12/mpd__writer_8cc_source.html | 2 +- ...mp4_1_1SampleAuxiliaryInformationSize.html | 2 +- .../d17/classshaka_1_1media_1_1Demuxer.html | 2 +- docs/dd/d18/es__parser__adts_8h_source.html | 2 +- .../d19/video__stream__info_8cc_source.html | 2 +- .../dd/d30/wvm__media__parser_8cc_source.html | 2 +- docs/dd/d3b/mp4_2segmenter_8h_source.html | 158 ++-- ...ctshaka_1_1media_1_1mp4_1_1SyncSample.html | 2 +- docs/dd/d42/encryptor_8h_source.html | 2 +- docs/dd/d46/webm__parser_8h_source.html | 2 +- ...media_1_1mp4_1_1MovieFragment-members.html | 2 +- ...m_1_1DemuxStreamIdMediaSample-members.html | 2 +- ...widevine__encryption__flags_8h_source.html | 30 +- ...media_1_1mp2t_1_1EsParserH265-members.html | 2 +- ...1_1media_1_1mp4_1_1SchemeInfo-members.html | 2 +- ...1_1media_1_1mp4_1_1SyncSample-members.html | 2 +- docs/dd/d65/vp8__parser_8h_source.html | 2 +- ...o__unit__stream__converter_8cc_source.html | 2 +- ...1_1H265VideoSliceHeaderParser-members.html | 2 +- ...a_1_1media_1_1mp4_1_1PixelAspectRatio.html | 2 +- .../classshaka_1_1media_1_1MuxerListener.html | 2 +- .../d7c/classshaka_1_1media_1_1IoCache.html | 2 +- docs/dd/d80/media__sample_8h_source.html | 2 +- docs/dd/d87/memory__file_8cc_source.html | 2 +- .../d88/pes__packet__generator_8h_source.html | 2 +- docs/dd/d8c/file__test__util_8h_source.html | 2 +- ...1media_1_1mp4_1_1SegmentIndex-members.html | 2 +- .../ts__packet__writer__util_8h_source.html | 2 +- .../audio__timestamp__helper_8h_source.html | 2 +- ...a_1_1media_1_1mp4_1_1SegmentReference.html | 2 +- .../classshaka_1_1MpdNotifier-members.html | 2 +- .../da4/structshaka_1_1xml_1_1XmlDeleter.html | 2 +- ...webm_1_1TwoPassSingleSegmentSegmenter.html | 6 +- ...info__dump__muxer__listener_8h_source.html | 2 +- docs/dd/dab/webm__muxer_8h_source.html | 2 +- ..._1mp4_1_1WebVTTSourceLabelBox-members.html | 2 +- ...a_1_1media_1_1WebMAudioClient-members.html | 2 +- ..._1media_1_1mp4_1_1SampleTable-members.html | 2 +- ...a_1_1xml_1_1RepresentationBaseXmlNode.html | 2 +- docs/dd/dbc/buffer__reader_8cc_source.html | 2 +- ...structshaka_1_1media_1_1EncryptionKey.html | 2 +- ...dia_1_1mp4_1_1TrackEncryption-members.html | 2 +- .../dbf/webm__webvtt__parser_8h_source.html | 2 +- ...tructshaka_1_1media_1_1mp4_1_1FullBox.html | 2 +- ...edia_1_1ProducerConsumerQueue-members.html | 2 +- ...ssshaka_1_1media_1_1webm_1_1Segmenter.html | 32 +- ...edia_1_1mp4_1_1OriginalFormat-members.html | 2 +- docs/dd/dce/structshaka_1_1media_1_1Cue.html | 2 +- docs/dd/dd2/buffer__writer_8h_source.html | 2 +- docs/dd/dd3/buffer__writer_8cc_source.html | 2 +- ...a_1_1media_1_1WebMVideoClient-members.html | 2 +- .../dd8/mock__muxer__listener_8cc_source.html | 2 +- ...tshaka_1_1media_1_1mp4_1_1Box-members.html | 2 +- ...ka_1_1media_1_1VideoSliceHeaderParser.html | 2 +- ...ructshaka_1_1media_1_1H265Pps-members.html | 2 +- docs/dd/de7/xml__node_8h_source.html | 2 +- docs/dd/dee/box__definitions_8cc_source.html | 2 +- ..._2multi__segment__segmenter_8h_source.html | 2 +- ...a_1_1media_1_1mp4_1_1TrackFragmentRun.html | 2 +- ...ructshaka_1_1media_1_1mp4_1_1Metadata.html | 2 +- docs/de/d0f/local__file_8h_source.html | 2 +- docs/de/d12/container__names_8h_source.html | 2 +- docs/de/d13/ts__writer_8cc_source.html | 2 +- docs/de/d15/media__stream_8cc_source.html | 2 +- ...a_1_1media_1_1TextTrackConfig-members.html | 2 +- docs/de/d17/cluster__builder_8cc_source.html | 2 +- ...edia_1_1wvm_1_1WvmMediaParser-members.html | 2 +- ...single__segment__segmenter_8cc_source.html | 4 +- .../d22/aes__pattern__cryptor_8cc_source.html | 2 +- ..._1_1mp2t_1_1H264ProgramMapTableWriter.html | 2 +- ...shaka_1_1media_1_1mp4_1_1TrackExtends.html | 2 +- ..._1_1media_1_1WebMTracksParser-members.html | 2 +- .../d33/structshaka_1_1media_1_1H265Pps.html | 2 +- .../de/d34/offset__byte__queue_8h_source.html | 2 +- ...o__unit__stream__converter_8cc_source.html | 2 +- docs/de/d3c/macros_8h_source.html | 2 +- docs/de/d3e/buffer__reader_8h_source.html | 2 +- ...sshaka_1_1media_1_1H264Parser-members.html | 2 +- ...1_1media_1_1mp2t_1_1PesPacket-members.html | 2 +- .../classshaka_1_1media_1_1DecryptConfig.html | 2 +- .../muxer__listener__internal_8h_source.html | 2 +- docs/de/d52/classshaka_1_1Representation.html | 2 +- ...a_1_1media_1_1mp4_1_1Language-members.html | 2 +- docs/de/d5b/adts__header_8cc_source.html | 2 +- docs/de/d5c/mpd__flags_8h_source.html | 2 +- ...mp2t_1_1ProgramMapTableWriter-members.html | 2 +- ...assshaka_1_1media_1_1mp2t_1_1TsWriter.html | 2 +- ..._1_1mp4_1_1SampleToGroupEntry-members.html | 2 +- docs/de/d6e/language__utils_8h_source.html | 2 +- .../de/d70/http__key__fetcher_8cc_source.html | 2 +- ...content__encodings__client_8cc_source.html | 2 +- docs/de/d7b/mp4__media__parser_8h_source.html | 2 +- ...haka_1_1media_1_1mp2t_1_1TsSectionPsi.html | 2 +- ...ox__definitions__comparison_8h_source.html | 2 +- ...ssshaka_1_1media_1_1LocalFile-members.html | 2 +- ...edia_1_1wvm_1_1PrevSampleData-members.html | 2 +- ...1_1mp4_1_1MovieFragmentHeader-members.html | 2 +- ...ssshaka_1_1media_1_1VP8Parser-members.html | 2 +- docs/de/da9/structshaka_1_1Element.html | 2 +- docs/de/dab/es__parser__h26x_8cc_source.html | 2 +- docs/de/dad/validate__flag_8cc_source.html | 2 +- ...lassshaka_1_1media_1_1TextTrackConfig.html | 2 +- .../classshaka_1_1media_1_1H26xBitReader.html | 2 +- docs/de/dbf/udp__options_8h_source.html | 2 +- docs/de/dc1/demuxer_8h_source.html | 2 +- .../classshaka_1_1media_1_1H265Parser.html | 2 +- ..._1mp4_1_1DecodingTimeToSample-members.html | 2 +- docs/de/dcb/ts__segmenter_8h_source.html | 160 ++-- .../dcc/mock__mpd__notifier_8cc_source.html | 2 +- docs/de/dcf/file__closer_8h_source.html | 2 +- ...ontent__protection__element_8h_source.html | 2 +- ...er__listener__test__helper_8cc_source.html | 2 +- .../classshaka_1_1media_1_1Muxer-members.html | 8 +- ...shaka_1_1media_1_1mp2t_1_1TsSegmenter.html | 24 +- ..._1_1media_1_1mp4_1_1MediaData-members.html | 2 +- ..._1media_1_1DecoderConfigurationRecord.html | 2 +- ...a_1_1media_1_1mp4_1_1MP4Muxer-members.html | 8 +- .../de4/structshaka_1_1media_1_1H264Pps.html | 2 +- ...edia_1_1H26xByteToUnitStreamConverter.html | 2 +- ...1media_1_1mp4_1_1DecodingTimeToSample.html | 2 +- ...a_1_1media_1_1mp4_1_1TrackRunIterator.html | 2 +- ...ssshaka_1_1media_1_1webm_1_1Encryptor.html | 2 +- docs/de/dfa/muxer__listener_8h_source.html | 2 +- ...shaka_1_1media_1_1mp4_1_1OpusSpecific.html | 2 +- docs/de/dfd/stream__info_8cc_source.html | 2 +- ...dec__configuration__record_8cc_source.html | 2 +- .../d1a/offset__byte__queue_8cc_source.html | 2 +- ...shaka_1_1media_1_1MediaSample-members.html | 2 +- ...mposition__offset__iterator_8h_source.html | 2 +- ...mentTestBase_1_1ClusterParser-members.html | 2 +- docs/df/d22/validate__flag_8h_source.html | 2 +- ..._1mp4_1_1DecodingTimeIterator-members.html | 2 +- ...lassshaka_1_1media_1_1AesCbcDecryptor.html | 2 +- docs/df/d31/muxer__util_8cc_source.html | 44 +- .../df/d32/audio__stream__info_8h_source.html | 2 +- .../classshaka_1_1AdaptationSet-members.html | 2 +- ...uctshaka_1_1media_1_1mp4_1_1ChunkInfo.html | 2 +- ..._1_1mp4_1_1MovieExtendsHeader-members.html | 2 +- .../classshaka_1_1media_1_1RequestSigner.html | 2 +- docs/df/d46/classshaka_1_1media_1_1Muxer.html | 40 +- ...ka_1_1media_1_1ThreadedIoFile-members.html | 2 +- ...t_1_1AacProgramMapTableWriter-members.html | 2 +- ...aka_1_1media_1_1RsaPrivateKey-members.html | 2 +- ..._1mp4_1_1EncryptingFragmenter-members.html | 2 +- docs/df/d60/classshaka_1_1MockMpdBuilder.html | 2 +- ...mp4_1_1AudioRollRecoveryEntry-members.html | 2 +- .../classshaka_1_1media_1_1KeyFetcher.html | 2 +- .../classshaka_1_1MockMpdBuilder-members.html | 2 +- ...1media_1_1mp4_1_1OpusSpecific-members.html | 2 +- ...dia_1_1mp4_1_1CompositionTimeToSample.html | 2 +- ...haka_1_1media_1_1mp4_1_1TrackFragment.html | 2 +- .../df/d7d/webm__info__parser_8cc_source.html | 2 +- ...1_1DecoderConfigurationRecord-members.html | 2 +- .../classshaka_1_1media_1_1AesCryptor.html | 2 +- ...shaka_1_1media_1_1mp4_1_1DataEntryUrl.html | 2 +- docs/df/d8a/vp9__parser_8h_source.html | 2 +- docs/df/d8a/vpx__parser_8h_source.html | 2 +- ...1mp4_1_1MultiSegmentSegmenter-members.html | 4 +- docs/df/d8d/es__parser__h26x_8h_source.html | 2 +- ..._1_1RepresentationStateChangeListener.html | 2 +- docs/df/d96/xml__node_8cc_source.html | 2 +- ...dia_1_1mp4_1_1TrackFragmentDecodeTime.html | 2 +- ...shaka_1_1xml_1_1RepresentationXmlNode.html | 2 +- ..._1media_1_1mp4_1_1ChunkOffset-members.html | 2 +- ...a_1_1media_1_1mp4_1_1CueIDBox-members.html | 2 +- docs/df/dad/decrypt__config_8h_source.html | 2 +- ..._1_1media_1_1StreamDescriptor-members.html | 2 +- ...oder__configuration__record_8h_source.html | 2 +- docs/df/dd2/mpd__utils_8h_source.html | 2 +- ...ructshaka_1_1media_1_1H264Pps-members.html | 2 +- docs/df/ddc/webm_2segmenter_8h_source.html | 225 ++--- docs/df/dde/ts__section__psi_8cc_source.html | 2 +- ...haka_1_1media_1_1H264SEIRecoveryPoint.html | 2 +- .../de3/text__track__config_8cc_source.html | 2 +- docs/df/de9/segment__info_8h_source.html | 2 +- ...a_1_1ContentProtectionElement-members.html | 2 +- ...sshaka_1_1media_1_1UdpOptions-members.html | 2 +- .../dir_0494b8c96e3190a776d2b97ade9c8ddf.html | 2 +- .../dir_2618cd273dea54f184e42d7a562af818.html | 2 +- .../dir_279fd47bebb21302c25cfb685e84c359.html | 2 +- .../dir_2eceb70145328c029a5f43350007537a.html | 2 +- .../dir_39dc0668bd5a501998f94e8b4e546c71.html | 2 +- .../dir_3e9291fd7a18fdecc763294cb2628910.html | 2 +- .../dir_49627ef5ef0630f6cf11dd06344c4cf0.html | 2 +- .../dir_5039d854a18988ed1f1dbebc120ffbf7.html | 2 +- .../dir_65f7acfa8cf3a5f1edc11faa2428b914.html | 2 +- .../dir_679a6f4e9fa092b388fc986148018f2a.html | 2 +- .../dir_7f5e01ba7faf319a30cabd201b6ef121.html | 2 +- .../dir_89dd766eb2df7d7257dbe806a34404af.html | 2 +- .../dir_aa73376d632f252584a1c0dfbefab2c4.html | 2 +- .../dir_c6ada2450b25ab5438a4dba6c9b890af.html | 2 +- .../dir_d422163b96683743ed3963d4aac17747.html | 2 +- .../dir_eeaeb49ac3913fcfb450d3ce9cc0141b.html | 2 +- .../dir_f7dcbe7025bbacfc4b9a7dff6ad41d72.html | 2 +- docs/files.html | 2 +- docs/functions.html | 2 +- docs/functions_b.html | 2 +- docs/functions_c.html | 2 +- docs/functions_d.html | 2 +- docs/functions_e.html | 2 +- docs/functions_enum.html | 2 +- docs/functions_eval.html | 2 +- docs/functions_f.html | 2 +- docs/functions_func.html | 2 +- docs/functions_func_b.html | 2 +- docs/functions_func_c.html | 2 +- docs/functions_func_d.html | 2 +- docs/functions_func_e.html | 2 +- docs/functions_func_f.html | 2 +- docs/functions_func_g.html | 2 +- docs/functions_func_h.html | 2 +- docs/functions_func_i.html | 8 +- docs/functions_func_k.html | 2 +- docs/functions_func_l.html | 2 +- docs/functions_func_m.html | 2 +- docs/functions_func_n.html | 2 +- docs/functions_func_o.html | 2 +- docs/functions_func_p.html | 2 +- docs/functions_func_r.html | 2 +- docs/functions_func_s.html | 4 +- docs/functions_func_t.html | 2 +- docs/functions_func_u.html | 2 +- docs/functions_func_v.html | 2 +- docs/functions_func_w.html | 2 +- docs/functions_func_x.html | 2 +- docs/functions_func_~.html | 2 +- docs/functions_g.html | 2 +- docs/functions_h.html | 2 +- docs/functions_i.html | 8 +- docs/functions_k.html | 2 +- docs/functions_l.html | 2 +- docs/functions_m.html | 2 +- docs/functions_n.html | 2 +- docs/functions_o.html | 2 +- docs/functions_p.html | 2 +- docs/functions_r.html | 2 +- docs/functions_s.html | 4 +- docs/functions_t.html | 2 +- docs/functions_type.html | 2 +- docs/functions_u.html | 2 +- docs/functions_v.html | 2 +- docs/functions_vars.html | 2 +- docs/functions_w.html | 2 +- docs/functions_x.html | 2 +- docs/functions_~.html | 2 +- docs/hierarchy.html | 2 +- docs/index.html | 2 +- docs/namespacemembers.html | 2 +- docs/namespacemembers_func.html | 2 +- docs/namespaces.html | 2 +- docs/search/all_10.js | 2 +- docs/search/all_8.js | 2 +- docs/search/functions_10.js | 2 +- docs/search/functions_8.js | 2 +- 953 files changed, 3567 insertions(+), 3375 deletions(-) diff --git a/docs/annotated.html b/docs/annotated.html index eba79570de..f67f10ffb2 100644 --- a/docs/annotated.html +++ b/docs/annotated.html @@ -373,7 +373,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/classes.html b/docs/classes.html index 7ee343f496..c9b6d620a6 100644 --- a/docs/classes.html +++ b/docs/classes.html @@ -179,7 +179,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/d0/d00/structshaka_1_1media_1_1mp4_1_1HandlerReference-members.html b/docs/d0/d00/structshaka_1_1media_1_1mp4_1_1HandlerReference-members.html index df3880c4a5..a503691e8e 100644 --- a/docs/d0/d00/structshaka_1_1media_1_1mp4_1_1HandlerReference-members.html +++ b/docs/d0/d00/structshaka_1_1media_1_1mp4_1_1HandlerReference-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d04/classshaka_1_1media_1_1RsaRequestSigner-members.html b/docs/d0/d04/classshaka_1_1media_1_1RsaRequestSigner-members.html index b4b30e582b..accddc4354 100644 --- a/docs/d0/d04/classshaka_1_1media_1_1RsaRequestSigner-members.html +++ b/docs/d0/d04/classshaka_1_1media_1_1RsaRequestSigner-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d06/mpd__flags_8cc_source.html b/docs/d0/d06/mpd__flags_8cc_source.html index b5ce4f4b54..265ee83f87 100644 --- a/docs/d0/d06/mpd__flags_8cc_source.html +++ b/docs/d0/d06/mpd__flags_8cc_source.html @@ -145,7 +145,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d0e/classshaka_1_1media_1_1HttpKeyFetcher-members.html b/docs/d0/d0e/classshaka_1_1media_1_1HttpKeyFetcher-members.html index 4e4c986ac5..8e3a7960db 100644 --- a/docs/d0/d0e/classshaka_1_1media_1_1HttpKeyFetcher-members.html +++ b/docs/d0/d0e/classshaka_1_1media_1_1HttpKeyFetcher-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d0e/hevc__decoder__configuration__record_8h_source.html b/docs/d0/d0e/hevc__decoder__configuration__record_8h_source.html index 6cb53638b4..2d517fcf4e 100644 --- a/docs/d0/d0e/hevc__decoder__configuration__record_8h_source.html +++ b/docs/d0/d0e/hevc__decoder__configuration__record_8h_source.html @@ -138,7 +138,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 049fc63646..0cedd784e4 100644 --- a/docs/d0/d0e/muxer__options_8h_source.html +++ b/docs/d0/d0e/muxer__options_8h_source.html @@ -152,7 +152,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d0f/classshaka_1_1media_1_1mp2t_1_1TsSectionPmt-members.html b/docs/d0/d0f/classshaka_1_1media_1_1mp2t_1_1TsSectionPmt-members.html index a0a656fa15..dea445300a 100644 --- a/docs/d0/d0f/classshaka_1_1media_1_1mp2t_1_1TsSectionPmt-members.html +++ b/docs/d0/d0f/classshaka_1_1media_1_1mp2t_1_1TsSectionPmt-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d11/structshaka_1_1media_1_1VPxFrameInfo.html b/docs/d0/d11/structshaka_1_1media_1_1VPxFrameInfo.html index 867187cbd1..af53e3285b 100644 --- a/docs/d0/d11/structshaka_1_1media_1_1VPxFrameInfo.html +++ b/docs/d0/d11/structshaka_1_1media_1_1VPxFrameInfo.html @@ -121,7 +121,7 @@ uint32_t height diff --git a/docs/d0/d1e/classshaka_1_1media_1_1H265ByteToUnitStreamConverter-members.html b/docs/d0/d1e/classshaka_1_1media_1_1H265ByteToUnitStreamConverter-members.html index 9319458d09..3a83c34a81 100644 --- a/docs/d0/d1e/classshaka_1_1media_1_1H265ByteToUnitStreamConverter-members.html +++ b/docs/d0/d1e/classshaka_1_1media_1_1H265ByteToUnitStreamConverter-members.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d1f/structshaka_1_1media_1_1mp4_1_1VTTCueBox-members.html b/docs/d0/d1f/structshaka_1_1media_1_1mp4_1_1VTTCueBox-members.html index 0a68b91c06..873c2749c9 100644 --- a/docs/d0/d1f/structshaka_1_1media_1_1mp4_1_1VTTCueBox-members.html +++ b/docs/d0/d1f/structshaka_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/d26/classshaka_1_1media_1_1mp2t_1_1TsSectionPat.html b/docs/d0/d26/classshaka_1_1media_1_1mp2t_1_1TsSectionPat.html index a4f650727c..326f2e65c0 100644 --- a/docs/d0/d26/classshaka_1_1media_1_1mp2t_1_1TsSectionPat.html +++ b/docs/d0/d26/classshaka_1_1media_1_1mp2t_1_1TsSectionPat.html @@ -155,7 +155,7 @@ void Reset () override diff --git a/docs/d0/d27/structshaka_1_1media_1_1MuxerOptions.html b/docs/d0/d27/structshaka_1_1media_1_1MuxerOptions.html index ae216c326e..1ba31fcaed 100644 --- a/docs/d0/d27/structshaka_1_1media_1_1MuxerOptions.html +++ b/docs/d0/d27/structshaka_1_1media_1_1MuxerOptions.html @@ -291,7 +291,7 @@ bool webm_subsample_encryp diff --git a/docs/d0/d30/mock__mpd__notifier_8h_source.html b/docs/d0/d30/mock__mpd__notifier_8h_source.html index 9a3bec5e0a..07f1be261f 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 92772846eb..15cf1fefb8 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/d33/classshaka_1_1MockRepresentation.html b/docs/d0/d33/classshaka_1_1MockRepresentation.html index 123754713e..c7de57a370 100644 --- a/docs/d0/d33/classshaka_1_1MockRepresentation.html +++ b/docs/d0/d33/classshaka_1_1MockRepresentation.html @@ -160,7 +160,7 @@ Additional Inherited Members diff --git a/docs/d0/d35/es__descriptor_8cc_source.html b/docs/d0/d35/es__descriptor_8cc_source.html index e64eecd6e1..04572a5dd5 100644 --- a/docs/d0/d35/es__descriptor_8cc_source.html +++ b/docs/d0/d35/es__descriptor_8cc_source.html @@ -285,7 +285,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d3a/hls__notify__muxer__listener_8cc_source.html b/docs/d0/d3a/hls__notify__muxer__listener_8cc_source.html index e58cf13341..363659134d 100644 --- a/docs/d0/d3a/hls__notify__muxer__listener_8cc_source.html +++ b/docs/d0/d3a/hls__notify__muxer__listener_8cc_source.html @@ -233,7 +233,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 1657300b81..effbd6ffba 100644 --- a/docs/d0/d3a/webm__constants_8h_source.html +++ b/docs/d0/d3a/webm__constants_8h_source.html @@ -318,7 +318,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d3c/structshaka_1_1media_1_1mp4_1_1ProtectionSystemSpecificHeader.html b/docs/d0/d3c/structshaka_1_1media_1_1mp4_1_1ProtectionSystemSpecificHeader.html index 18a2a5a61d..f5cd38d4c3 100644 --- a/docs/d0/d3c/structshaka_1_1media_1_1mp4_1_1ProtectionSystemSpecificHeader.html +++ b/docs/d0/d3c/structshaka_1_1media_1_1mp4_1_1ProtectionSystemSpecificHeader.html @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/d0/d42/aes__cryptor_8h_source.html b/docs/d0/d42/aes__cryptor_8h_source.html index a635bdffc0..b105c46677 100644 --- a/docs/d0/d42/aes__cryptor_8h_source.html +++ b/docs/d0/d42/aes__cryptor_8h_source.html @@ -215,7 +215,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 ef9ba76499..c5ab3b51df 100644 --- a/docs/d0/d42/widevine__encryption__flags_8cc_source.html +++ b/docs/d0/d42/widevine__encryption__flags_8cc_source.html @@ -126,139 +126,165 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
37  "rights.");
38 DEFINE_int32(max_sd_pixels,
39  768 * 576,
-
40  "If the video track has more pixels per frame than max_sd_pixels, "
-
41  "it is considered as HD, SD otherwise. Default: 768 * 576.");
-
42 DEFINE_string(signer, "", "The name of the signer.");
-
43 DEFINE_string(aes_signing_key,
-
44  "",
-
45  "AES signing key in hex string. --aes_signing_iv is required. "
-
46  "Exclusive with --rsa_signing_key_path.");
-
47 DEFINE_string(aes_signing_iv,
-
48  "",
-
49  "AES signing iv in hex string.");
-
50 DEFINE_string(rsa_signing_key_path,
-
51  "",
-
52  "Stores PKCS#1 RSA private key for request signing. Exclusive "
-
53  "with --aes_signing_key.");
-
54 DEFINE_int32(crypto_period_duration,
-
55  0,
-
56  "Crypto period duration in seconds. If it is non-zero, key "
-
57  "rotation is enabled.");
-
58 DEFINE_string(protection_scheme,
-
59  "cenc",
-
60  "Choose protection scheme, 'cenc' or 'cbc1' or pattern-based "
-
61  "protection schemes 'cens' or 'cbcs'.");
-
62 
-
63 namespace shaka {
-
64 
- -
66  bool success = true;
-
67 
-
68  const bool widevine_crypto =
-
69  FLAGS_enable_widevine_encryption || FLAGS_enable_widevine_decryption;
-
70  const char widevine_crypto_label[] =
-
71  "--enable_widevine_encryption/decryption";
-
72  // key_server_url and signer (optional) are associated with
-
73  // enable_widevine_encryption and enable_widevine_descryption.
-
74  if (!ValidateFlag("key_server_url",
-
75  FLAGS_key_server_url,
-
76  widevine_crypto,
-
77  false,
-
78  widevine_crypto_label)) {
-
79  success = false;
-
80  }
-
81  if (!ValidateFlag("signer",
-
82  FLAGS_signer,
-
83  widevine_crypto,
-
84  true,
-
85  widevine_crypto_label)) {
-
86  success = false;
-
87  }
-
88  if (widevine_crypto && FLAGS_signer.empty() &&
-
89  base::StartsWith(base::StringPiece(FLAGS_key_server_url), "http",
-
90  base::CompareCase::INSENSITIVE_ASCII)) {
-
91  LOG(WARNING) << "--signer is likely required with "
-
92  "--enable_widevine_encryption/decryption.";
-
93  }
-
94 
-
95  const char widevine_encryption_label[] = "--enable_widevine_encryption";
-
96  // content_id and policy (optional) are associated with
-
97  // enable_widevine_encryption.
-
98  if (!ValidateFlag("content_id",
-
99  FLAGS_content_id,
-
100  FLAGS_enable_widevine_encryption,
-
101  false,
-
102  widevine_encryption_label)) {
-
103  success = false;
-
104  }
-
105  if (!ValidateFlag("policy",
-
106  FLAGS_policy,
-
107  FLAGS_enable_widevine_encryption,
-
108  true,
-
109  widevine_encryption_label)) {
-
110  success = false;
-
111  }
-
112  if (FLAGS_include_common_pssh && !FLAGS_enable_widevine_encryption) {
-
113  PrintError("--include_common_pssh is only valid with "
-
114  "--enable_widevine_encryption");
-
115  success = false;
-
116  }
-
117 
-
118  if (FLAGS_max_sd_pixels <= 0) {
-
119  PrintError("--max_sd_pixels must be positive.");
+
40  "The video track is considered SD if its max pixels per frame is "
+
41  "no higher than max_sd_pixels. Default: 442368 (768 x 576).");
+
42 DEFINE_int32(max_hd_pixels,
+
43  1920 * 1080,
+
44  "The video track is considered HD if its max pixels per frame is "
+
45  "higher than max_sd_pixels, but no higher than max_hd_pixels. "
+
46  "Default: 2073600 (1920 x 1080).");
+
47 DEFINE_int32(max_uhd1_pixels,
+
48  4096 * 2160,
+
49  "The video track is considered UHD1 if its max pixels per frame "
+
50  "is higher than max_hd_pixels, but no higher than max_uhd1_pixels."
+
51  " Otherwise it is UHD2. Default: 8847360 (4096 x 2160).");
+
52 DEFINE_string(signer, "", "The name of the signer.");
+
53 DEFINE_string(aes_signing_key,
+
54  "",
+
55  "AES signing key in hex string. --aes_signing_iv is required. "
+
56  "Exclusive with --rsa_signing_key_path.");
+
57 DEFINE_string(aes_signing_iv,
+
58  "",
+
59  "AES signing iv in hex string.");
+
60 DEFINE_string(rsa_signing_key_path,
+
61  "",
+
62  "Stores PKCS#1 RSA private key for request signing. Exclusive "
+
63  "with --aes_signing_key.");
+
64 DEFINE_int32(crypto_period_duration,
+
65  0,
+
66  "Crypto period duration in seconds. If it is non-zero, key "
+
67  "rotation is enabled.");
+
68 DEFINE_string(protection_scheme,
+
69  "cenc",
+
70  "Choose protection scheme, 'cenc' or 'cbc1' or pattern-based "
+
71  "protection schemes 'cens' or 'cbcs'.");
+
72 
+
73 namespace shaka {
+
74 
+ +
76  bool success = true;
+
77 
+
78  const bool widevine_crypto =
+
79  FLAGS_enable_widevine_encryption || FLAGS_enable_widevine_decryption;
+
80  const char widevine_crypto_label[] =
+
81  "--enable_widevine_encryption/decryption";
+
82  // key_server_url and signer (optional) are associated with
+
83  // enable_widevine_encryption and enable_widevine_descryption.
+
84  if (!ValidateFlag("key_server_url",
+
85  FLAGS_key_server_url,
+
86  widevine_crypto,
+
87  false,
+
88  widevine_crypto_label)) {
+
89  success = false;
+
90  }
+
91  if (!ValidateFlag("signer",
+
92  FLAGS_signer,
+
93  widevine_crypto,
+
94  true,
+
95  widevine_crypto_label)) {
+
96  success = false;
+
97  }
+
98  if (widevine_crypto && FLAGS_signer.empty() &&
+
99  base::StartsWith(base::StringPiece(FLAGS_key_server_url), "http",
+
100  base::CompareCase::INSENSITIVE_ASCII)) {
+
101  LOG(WARNING) << "--signer is likely required with "
+
102  "--enable_widevine_encryption/decryption.";
+
103  }
+
104 
+
105  const char widevine_encryption_label[] = "--enable_widevine_encryption";
+
106  // content_id and policy (optional) are associated with
+
107  // enable_widevine_encryption.
+
108  if (!ValidateFlag("content_id",
+
109  FLAGS_content_id,
+
110  FLAGS_enable_widevine_encryption,
+
111  false,
+
112  widevine_encryption_label)) {
+
113  success = false;
+
114  }
+
115  if (!ValidateFlag("policy",
+
116  FLAGS_policy,
+
117  FLAGS_enable_widevine_encryption,
+
118  true,
+
119  widevine_encryption_label)) {
120  success = false;
121  }
-
122 
-
123  const bool aes = !FLAGS_signer.empty() && FLAGS_rsa_signing_key_path.empty();
-
124  const char aes_label[] =
-
125  "--signer is specified and exclusive with --rsa_signing_key_path";
-
126  // aes_signer_key and aes_signing_iv are associated with aes signing.
-
127  if (!ValidateFlag(
-
128  "aes_signing_key", FLAGS_aes_signing_key, aes, true, aes_label)) {
-
129  success = false;
-
130  }
-
131  if (!ValidateFlag(
-
132  "aes_signing_iv", FLAGS_aes_signing_iv, aes, true, aes_label)) {
-
133  success = false;
-
134  }
-
135 
-
136  const bool rsa = !FLAGS_signer.empty() && FLAGS_aes_signing_key.empty() &&
-
137  FLAGS_aes_signing_iv.empty();
-
138  const char rsa_label[] =
-
139  "--signer is specified and exclusive with --aes_signing_key/iv";
-
140  // rsa_signing_key_path is associated with rsa_signing.
-
141  if (!ValidateFlag("rsa_signing_key_path",
-
142  FLAGS_rsa_signing_key_path,
-
143  rsa,
-
144  true,
-
145  rsa_label)) {
+
122  if (FLAGS_include_common_pssh && !FLAGS_enable_widevine_encryption) {
+
123  PrintError("--include_common_pssh is only valid with "
+
124  "--enable_widevine_encryption");
+
125  success = false;
+
126  }
+
127 
+
128  if (FLAGS_max_sd_pixels <= 0) {
+
129  PrintError("--max_sd_pixels must be positive.");
+
130  success = false;
+
131  }
+
132  if (FLAGS_max_hd_pixels <= 0) {
+
133  PrintError("--max_hd_pixels must be positive.");
+
134  success = false;
+
135  }
+
136  if (FLAGS_max_uhd1_pixels <= 0) {
+
137  PrintError("--max_uhd1_pixels must be positive.");
+
138  success = false;
+
139  }
+
140  if (FLAGS_max_hd_pixels <= FLAGS_max_sd_pixels) {
+
141  PrintError("--max_hd_pixels must be greater than --max_sd_pixels.");
+
142  success = false;
+
143  }
+
144  if (FLAGS_max_uhd1_pixels <= FLAGS_max_hd_pixels) {
+
145  PrintError("--max_uhd1_pixels must be greater than --max_hd_pixels.");
146  success = false;
147  }
148 
-
149  if (!FLAGS_signer.empty() &&
-
150  (FLAGS_aes_signing_key.empty() || FLAGS_aes_signing_iv.empty()) &&
-
151  FLAGS_rsa_signing_key_path.empty()) {
-
152  PrintError(
-
153  "--aes_signing_key/iv or --rsa_signing_key_path is required with "
-
154  "--signer.");
+
149  const bool aes = !FLAGS_signer.empty() && FLAGS_rsa_signing_key_path.empty();
+
150  const char aes_label[] =
+
151  "--signer is specified and exclusive with --rsa_signing_key_path";
+
152  // aes_signer_key and aes_signing_iv are associated with aes signing.
+
153  if (!ValidateFlag(
+
154  "aes_signing_key", FLAGS_aes_signing_key, aes, true, aes_label)) {
155  success = false;
156  }
-
157 
-
158  if (FLAGS_crypto_period_duration < 0) {
-
159  PrintError("--crypto_period_duration should not be negative.");
-
160  success = false;
-
161  }
-
162  return success;
-
163 }
-
164 
-
165 } // namespace shaka
+
157  if (!ValidateFlag(
+
158  "aes_signing_iv", FLAGS_aes_signing_iv, aes, true, aes_label)) {
+
159  success = false;
+
160  }
+
161 
+
162  const bool rsa = !FLAGS_signer.empty() && FLAGS_aes_signing_key.empty() &&
+
163  FLAGS_aes_signing_iv.empty();
+
164  const char rsa_label[] =
+
165  "--signer is specified and exclusive with --aes_signing_key/iv";
+
166  // rsa_signing_key_path is associated with rsa_signing.
+
167  if (!ValidateFlag("rsa_signing_key_path",
+
168  FLAGS_rsa_signing_key_path,
+
169  rsa,
+
170  true,
+
171  rsa_label)) {
+
172  success = false;
+
173  }
+
174 
+
175  if (!FLAGS_signer.empty() &&
+
176  (FLAGS_aes_signing_key.empty() || FLAGS_aes_signing_iv.empty()) &&
+
177  FLAGS_rsa_signing_key_path.empty()) {
+
178  PrintError(
+
179  "--aes_signing_key/iv or --rsa_signing_key_path is required with "
+
180  "--signer.");
+
181  success = false;
+
182  }
+
183 
+
184  if (FLAGS_crypto_period_duration < 0) {
+
185  PrintError("--crypto_period_duration should not be negative.");
+
186  success = false;
+
187  }
+
188  return success;
+
189 }
+
190 
+
191 } // namespace shaka
void PrintError(const std::string &error_message)
-
bool ValidateWidevineCryptoFlags()
+
bool ValidateWidevineCryptoFlags()
bool ValidateFlag(const char *flag_name, const std::string &flag_value, bool condition, bool optional, const char *label)
diff --git a/docs/d0/d46/fourccs_8h_source.html b/docs/d0/d46/fourccs_8h_source.html index 8ef5ca14d1..f60b05c5ef 100644 --- a/docs/d0/d46/fourccs_8h_source.html +++ b/docs/d0/d46/fourccs_8h_source.html @@ -248,7 +248,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d49/vod__media__info__dump__muxer__listener_8cc_source.html b/docs/d0/d49/vod__media__info__dump__muxer__listener_8cc_source.html index 5a311a5dc9..df41da616f 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 @@ -237,7 +237,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d4b/structshaka_1_1media_1_1mp4_1_1MediaInformation-members.html b/docs/d0/d4b/structshaka_1_1media_1_1mp4_1_1MediaInformation-members.html index 02fd0202c5..a886be2f29 100644 --- a/docs/d0/d4b/structshaka_1_1media_1_1mp4_1_1MediaInformation-members.html +++ b/docs/d0/d4b/structshaka_1_1media_1_1mp4_1_1MediaInformation-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d4d/classshaka_1_1media_1_1AudioTimestampHelper.html b/docs/d0/d4d/classshaka_1_1media_1_1AudioTimestampHelper.html index 2c6e66a1ae..783d06caca 100644 --- a/docs/d0/d4d/classshaka_1_1media_1_1AudioTimestampHelper.html +++ b/docs/d0/d4d/classshaka_1_1media_1_1AudioTimestampHelper.html @@ -131,7 +131,7 @@ int64_t GetFramesToTarget< diff --git a/docs/d0/d4e/libcrypto__threading_8cc_source.html b/docs/d0/d4e/libcrypto__threading_8cc_source.html index 2f0a048d74..adc2b8cd93 100644 --- a/docs/d0/d4e/libcrypto__threading_8cc_source.html +++ b/docs/d0/d4e/libcrypto__threading_8cc_source.html @@ -143,7 +143,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d53/classshaka_1_1media_1_1mp2t_1_1TsMuxer-members.html b/docs/d0/d53/classshaka_1_1media_1_1mp2t_1_1TsMuxer-members.html index 71cdd40b16..0725c253fa 100644 --- a/docs/d0/d53/classshaka_1_1media_1_1mp2t_1_1TsMuxer-members.html +++ b/docs/d0/d53/classshaka_1_1media_1_1mp2t_1_1TsMuxer-members.html @@ -99,7 +99,9 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); clock() (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected crypto_period_duration_in_seconds() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected encryption_key_source() (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected - max_sd_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected + max_hd_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected + max_sd_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected + max_uhd1_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected Muxer(const MuxerOptions &options) (defined in shaka::media::Muxer)shaka::media::Muxerexplicit muxer_listener() (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected options() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected @@ -107,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); protection_scheme() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected Run()shaka::media::Muxer set_clock(base::Clock *clock)shaka::media::Muxerinline - SetKeySource(KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)shaka::media::Muxer + SetKeySource(KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)shaka::media::Muxer SetMuxerListener(std::unique_ptr< MuxerListener > muxer_listener)shaka::media::Muxer SetProgressListener(std::unique_ptr< ProgressListener > progress_listener)shaka::media::Muxer streams() const (defined in shaka::media::Muxer)shaka::media::Muxerinline @@ -117,7 +119,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d5b/classshaka_1_1media_1_1MpdNotifyMuxerListener-members.html b/docs/d0/d5b/classshaka_1_1media_1_1MpdNotifyMuxerListener-members.html index 966b7d7847..795345e50d 100644 --- a/docs/d0/d5b/classshaka_1_1media_1_1MpdNotifyMuxerListener-members.html +++ b/docs/d0/d5b/classshaka_1_1media_1_1MpdNotifyMuxerListener-members.html @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d66/classshaka_1_1media_1_1ThreadedIoFile.html b/docs/d0/d66/classshaka_1_1media_1_1ThreadedIoFile.html index bbe6a96001..47aee9e8c6 100644 --- a/docs/d0/d66/classshaka_1_1media_1_1ThreadedIoFile.html +++ b/docs/d0/d66/classshaka_1_1media_1_1ThreadedIoFile.html @@ -438,7 +438,7 @@ Additional Inherited Members diff --git a/docs/d0/d6a/classshaka_1_1media_1_1StreamDescriptorCompareFn-members.html b/docs/d0/d6a/classshaka_1_1media_1_1StreamDescriptorCompareFn-members.html index 1ba0f5fa62..4df3aaea71 100644 --- a/docs/d0/d6a/classshaka_1_1media_1_1StreamDescriptorCompareFn-members.html +++ b/docs/d0/d6a/classshaka_1_1media_1_1StreamDescriptorCompareFn-members.html @@ -97,7 +97,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d73/structshaka_1_1media_1_1mp4_1_1VideoSampleEntry.html b/docs/d0/d73/structshaka_1_1media_1_1mp4_1_1VideoSampleEntry.html index ecf6c450ee..b44373cdf1 100644 --- a/docs/d0/d73/structshaka_1_1media_1_1mp4_1_1VideoSampleEntry.html +++ b/docs/d0/d73/structshaka_1_1media_1_1mp4_1_1VideoSampleEntry.html @@ -197,7 +197,7 @@ Additional Inherited Members diff --git a/docs/d0/d7c/structshaka_1_1media_1_1mp4_1_1SampleToGroup.html b/docs/d0/d7c/structshaka_1_1media_1_1mp4_1_1SampleToGroup.html index bd6099b990..baaa5b413e 100644 --- a/docs/d0/d7c/structshaka_1_1media_1_1mp4_1_1SampleToGroup.html +++ b/docs/d0/d7c/structshaka_1_1media_1_1mp4_1_1SampleToGroup.html @@ -188,7 +188,7 @@ Additional Inherited Members diff --git a/docs/d0/d7d/decryptor__source_8h_source.html b/docs/d0/d7d/decryptor__source_8h_source.html index b6a3bc3734..a883863709 100644 --- a/docs/d0/d7d/decryptor__source_8h_source.html +++ b/docs/d0/d7d/decryptor__source_8h_source.html @@ -133,7 +133,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d80/classshaka_1_1media_1_1AesCbcEncryptor-members.html b/docs/d0/d80/classshaka_1_1media_1_1AesCbcEncryptor-members.html index 1467cea6bf..3cc8a95240 100644 --- a/docs/d0/d80/classshaka_1_1media_1_1AesCbcEncryptor-members.html +++ b/docs/d0/d80/classshaka_1_1media_1_1AesCbcEncryptor-members.html @@ -118,7 +118,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d80/classshaka_1_1media_1_1Status-members.html b/docs/d0/d80/classshaka_1_1media_1_1Status-members.html index 5adc597a0b..7328712180 100644 --- a/docs/d0/d80/classshaka_1_1media_1_1Status-members.html +++ b/docs/d0/d80/classshaka_1_1media_1_1Status-members.html @@ -112,7 +112,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d93/classshaka_1_1media_1_1Status.html b/docs/d0/d93/classshaka_1_1media_1_1Status.html index 1d3a01033b..930d22a83c 100644 --- a/docs/d0/d93/classshaka_1_1media_1_1Status.html +++ b/docs/d0/d93/classshaka_1_1media_1_1Status.html @@ -302,7 +302,7 @@ static const diff --git a/docs/d0/d9a/structshaka_1_1media_1_1mp4_1_1Movie.html b/docs/d0/d9a/structshaka_1_1media_1_1mp4_1_1Movie.html index 71a6ac8132..a9a6dfd853 100644 --- a/docs/d0/d9a/structshaka_1_1media_1_1mp4_1_1Movie.html +++ b/docs/d0/d9a/structshaka_1_1media_1_1mp4_1_1Movie.html @@ -186,7 +186,7 @@ Additional Inherited Members diff --git a/docs/d0/da2/classshaka_1_1media_1_1AACAudioSpecificConfig.html b/docs/d0/da2/classshaka_1_1media_1_1AACAudioSpecificConfig.html index cb35bd9724..35280e91e0 100644 --- a/docs/d0/da2/classshaka_1_1media_1_1AACAudioSpecificConfig.html +++ b/docs/d0/da2/classshaka_1_1media_1_1AACAudioSpecificConfig.html @@ -329,7 +329,7 @@ static const size_t  diff --git a/docs/d0/da2/classshaka_1_1media_1_1RequestSigner-members.html b/docs/d0/da2/classshaka_1_1media_1_1RequestSigner-members.html index 5bdba1624f..dbc2000d63 100644 --- a/docs/d0/da2/classshaka_1_1media_1_1RequestSigner-members.html +++ b/docs/d0/da2/classshaka_1_1media_1_1RequestSigner-members.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/da2/structshaka_1_1xml_1_1XmlDeleter-members.html b/docs/d0/da2/structshaka_1_1xml_1_1XmlDeleter-members.html index 5548952c69..ecf51f495c 100644 --- a/docs/d0/da2/structshaka_1_1xml_1_1XmlDeleter-members.html +++ b/docs/d0/da2/structshaka_1_1xml_1_1XmlDeleter-members.html @@ -102,7 +102,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 80e188a52c..f767a836a2 100644 --- a/docs/d0/da6/stream__descriptor_8cc_source.html +++ b/docs/d0/da6/stream__descriptor_8cc_source.html @@ -293,7 +293,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/dab/classshaka_1_1media_1_1mp4_1_1SingleSegmentSegmenter.html b/docs/d0/dab/classshaka_1_1media_1_1mp4_1_1SingleSegmentSegmenter.html index c93f6b2296..b8e867bd03 100644 --- a/docs/d0/dab/classshaka_1_1media_1_1mp4_1_1SingleSegmentSegmenter.html +++ b/docs/d0/dab/classshaka_1_1media_1_1mp4_1_1SingleSegmentSegmenter.html @@ -119,8 +119,8 @@ Public Member Functions  Segmenter (const MuxerOptions &options, std::unique_ptr< FileType > ftyp, std::unique_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, FourCC protection_scheme) -  +Status Initialize (const std::vector< MediaStream * > &streams, MuxerListener *muxer_listener, ProgressListener *progress_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme) +  Status Finalize ()   Status AddSample (const MediaStream *stream, scoped_refptr< MediaSample > sample) @@ -259,7 +259,7 @@ void set_progress_target diff --git a/docs/d0/dac/classshaka_1_1media_1_1FixedKeySource.html b/docs/d0/dac/classshaka_1_1media_1_1FixedKeySource.html index 2551c31788..15c142a98b 100644 --- a/docs/d0/dac/classshaka_1_1media_1_1FixedKeySource.html +++ b/docs/d0/dac/classshaka_1_1media_1_1FixedKeySource.html @@ -146,10 +146,12 @@ Additional Inherited Members   TRACK_TYPE_UNKNOWN = 0, TRACK_TYPE_SD = 1, TRACK_TYPE_HD = 2, -TRACK_TYPE_AUDIO = 3, +TRACK_TYPE_UHD1 = 3,
-  TRACK_TYPE_UNSPECIFIED = 4, -NUM_VALID_TRACK_TYPES = 4 +  TRACK_TYPE_UHD2 = 4, +TRACK_TYPE_AUDIO = 5, +TRACK_TYPE_UNSPECIFIED = 6, +NUM_VALID_TRACK_TYPES = 6
}   @@ -480,7 +482,7 @@ Additional Inherited Members diff --git a/docs/d0/dae/file__util_8h_source.html b/docs/d0/dae/file__util_8h_source.html index 1491b5767c..e536005fa1 100644 --- a/docs/d0/dae/file__util_8h_source.html +++ b/docs/d0/dae/file__util_8h_source.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/dbd/classshaka_1_1media_1_1webm_1_1MultiSegmentSegmenter-members.html b/docs/d0/dbd/classshaka_1_1media_1_1webm_1_1MultiSegmentSegmenter-members.html index 88cdccf855..83393b249e 100644 --- a/docs/d0/dbd/classshaka_1_1media_1_1webm_1_1MultiSegmentSegmenter-members.html +++ b/docs/d0/dbd/classshaka_1_1media_1_1webm_1_1MultiSegmentSegmenter-members.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); GetIndexRangeStartAndEnd(uint64_t *start, uint64_t *end) overrideshaka::media::webm::MultiSegmentSegmentervirtual GetInitRangeStartAndEnd(uint64_t *start, uint64_t *end) overrideshaka::media::webm::MultiSegmentSegmentervirtual info() (defined in shaka::media::webm::Segmenter)shaka::media::webm::Segmenterinlineprotected - Initialize(std::unique_ptr< MkvWriter > writer, StreamInfo *info, ProgressListener *progress_listener, MuxerListener *muxer_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds)shaka::media::webm::Segmenter + Initialize(std::unique_ptr< MkvWriter > writer, StreamInfo *info, ProgressListener *progress_listener, MuxerListener *muxer_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds)shaka::media::webm::Segmenter MultiSegmentSegmenter(const MuxerOptions &options) (defined in shaka::media::webm::MultiSegmentSegmenter)shaka::media::webm::MultiSegmentSegmenterexplicit muxer_listener() (defined in shaka::media::webm::Segmenter)shaka::media::webm::Segmenterinlineprotected options() const (defined in shaka::media::webm::Segmenter)shaka::media::webm::Segmenterinlineprotected @@ -123,7 +123,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/dc1/structshaka_1_1media_1_1mp4_1_1VTTEmptyCueBox-members.html b/docs/d0/dc1/structshaka_1_1media_1_1mp4_1_1VTTEmptyCueBox-members.html index e49202d686..c3ebd270fb 100644 --- a/docs/d0/dc1/structshaka_1_1media_1_1mp4_1_1VTTEmptyCueBox-members.html +++ b/docs/d0/dc1/structshaka_1_1media_1_1mp4_1_1VTTEmptyCueBox-members.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/dc8/classshaka_1_1xml_1_1AdaptationSetXmlNode-members.html b/docs/d0/dc8/classshaka_1_1xml_1_1AdaptationSetXmlNode-members.html index 5fe64101ae..8e48c8ed9d 100644 --- a/docs/d0/dc8/classshaka_1_1xml_1_1AdaptationSetXmlNode-members.html +++ b/docs/d0/dc8/classshaka_1_1xml_1_1AdaptationSetXmlNode-members.html @@ -114,7 +114,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/dce/classshaka_1_1media_1_1RsaPrivateKey.html b/docs/d0/dce/classshaka_1_1media_1_1RsaPrivateKey.html index 6e551ba9fd..c1e20d6817 100644 --- a/docs/d0/dce/classshaka_1_1media_1_1RsaPrivateKey.html +++ b/docs/d0/dce/classshaka_1_1media_1_1RsaPrivateKey.html @@ -224,7 +224,7 @@ Static Public Member Functions diff --git a/docs/d0/dd0/structshaka_1_1media_1_1mp4_1_1CueSettingsBox.html b/docs/d0/dd0/structshaka_1_1media_1_1mp4_1_1CueSettingsBox.html index 29cd6edc3b..1a5116fc62 100644 --- a/docs/d0/dd0/structshaka_1_1media_1_1mp4_1_1CueSettingsBox.html +++ b/docs/d0/dd0/structshaka_1_1media_1_1mp4_1_1CueSettingsBox.html @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d0/dd4/classshaka_1_1media_1_1ProtectionSystemSpecificInfo.html b/docs/d0/dd4/classshaka_1_1media_1_1ProtectionSystemSpecificInfo.html index 93ccadd122..68e759f2bf 100644 --- a/docs/d0/dd4/classshaka_1_1media_1_1ProtectionSystemSpecificInfo.html +++ b/docs/d0/dd4/classshaka_1_1media_1_1ProtectionSystemSpecificInfo.html @@ -222,7 +222,7 @@ Static Public Member Functions diff --git a/docs/d0/dd6/webm__crypto__helpers_8cc_source.html b/docs/d0/dd6/webm__crypto__helpers_8cc_source.html index 7184ddef6f..64851ad875 100644 --- a/docs/d0/dd6/webm__crypto__helpers_8cc_source.html +++ b/docs/d0/dd6/webm__crypto__helpers_8cc_source.html @@ -205,7 +205,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/dd8/classshaka_1_1media_1_1AesCtrEncryptor.html b/docs/d0/dd8/classshaka_1_1media_1_1AesCtrEncryptor.html index 7988614b30..80ad5878b3 100644 --- a/docs/d0/dd8/classshaka_1_1media_1_1AesCtrEncryptor.html +++ b/docs/d0/dd8/classshaka_1_1media_1_1AesCtrEncryptor.html @@ -165,7 +165,7 @@ AES_KEY * mutable_aes_key< diff --git a/docs/d0/dee/segmenter__test__base_8h_source.html b/docs/d0/dee/segmenter__test__base_8h_source.html index ee5f9fd1d5..995d28bacb 100644 --- a/docs/d0/dee/segmenter__test__base_8h_source.html +++ b/docs/d0/dee/segmenter__test__base_8h_source.html @@ -144,61 +144,62 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
56  ASSERT_OK(segmenter->Initialize(
57  std::move(writer), info, NULL /* progress_listener */,
58  NULL /* muxer_listener */, key_source, 0 /* max_sd_pixels */,
-
59  1 /* clear_lead_in_seconds */));
-
60  *result = std::move(segmenter);
-
61  }
-
62 
-
64  scoped_refptr<MediaSample> CreateSample(KeyFrameFlag key_frame_flag,
-
65  uint64_t duration,
-
66  SideDataFlag side_data_flag);
- - -
71 
-
73  std::string OutputFileName() const;
-
75  std::string TemplateFileName(int number) const;
-
76 
-
77  protected:
-
78  // A helper class used to determine the number of clusters and frames for a
-
79  // given WebM file.
-
80  class ClusterParser : private WebMParserClient {
-
81  public:
-
82  ClusterParser();
-
83  ~ClusterParser() override;
-
84 
-
85  // Make sure to use ASSERT_NO_FATAL_FAILURE.
-
86  void PopulateFromCluster(const std::string& file_name);
-
87  void PopulateFromSegment(const std::string& file_name);
-
88 
-
89  int GetFrameCountForCluster(size_t i) const;
-
90 
-
91  int cluster_count() const;
-
92 
-
93  private:
-
94  // WebMParserClient overrides.
-
95  WebMParserClient* OnListStart(int id) override;
-
96  bool OnListEnd(int id) override;
-
97  bool OnUInt(int id, int64_t val) override;
-
98  bool OnFloat(int id, double val) override;
-
99  bool OnBinary(int id, const uint8_t* data, int size) override;
-
100  bool OnString(int id, const std::string& str) override;
-
101 
-
102  private:
-
103  std::vector<int> cluster_sizes_;
-
104  bool in_cluster_;
-
105  };
-
106 
-
107  protected:
-
108  std::string output_file_name_;
-
109  std::string segment_template_;
-
110  uint64_t cur_time_timescale_;
-
111  bool single_segment_;
-
112 };
-
113 
-
114 } // namespace media
-
115 } // namespace shaka
-
116 
-
117 #endif // MEDIA_FORMATS_WEBM_SEGMENTER_TEST_UTILS_H_
- +
59  0 /* max_hd_pixels */, 0 /* max_uhd1_pixels */,
+
60  1 /* clear_lead_in_seconds */));
+
61  *result = std::move(segmenter);
+
62  }
+
63 
+
65  scoped_refptr<MediaSample> CreateSample(KeyFrameFlag key_frame_flag,
+
66  uint64_t duration,
+
67  SideDataFlag side_data_flag);
+ + +
72 
+
74  std::string OutputFileName() const;
+
76  std::string TemplateFileName(int number) const;
+
77 
+
78  protected:
+
79  // A helper class used to determine the number of clusters and frames for a
+
80  // given WebM file.
+
81  class ClusterParser : private WebMParserClient {
+
82  public:
+
83  ClusterParser();
+
84  ~ClusterParser() override;
+
85 
+
86  // Make sure to use ASSERT_NO_FATAL_FAILURE.
+
87  void PopulateFromCluster(const std::string& file_name);
+
88  void PopulateFromSegment(const std::string& file_name);
+
89 
+
90  int GetFrameCountForCluster(size_t i) const;
+
91 
+
92  int cluster_count() const;
+
93 
+
94  private:
+
95  // WebMParserClient overrides.
+
96  WebMParserClient* OnListStart(int id) override;
+
97  bool OnListEnd(int id) override;
+
98  bool OnUInt(int id, int64_t val) override;
+
99  bool OnFloat(int id, double val) override;
+
100  bool OnBinary(int id, const uint8_t* data, int size) override;
+
101  bool OnString(int id, const std::string& str) override;
+
102 
+
103  private:
+
104  std::vector<int> cluster_sizes_;
+
105  bool in_cluster_;
+
106  };
+
107 
+
108  protected:
+
109  std::string output_file_name_;
+
110  std::string segment_template_;
+
111  uint64_t cur_time_timescale_;
+
112  bool single_segment_;
+
113 };
+
114 
+
115 } // namespace media
+
116 } // namespace shaka
+
117 
+
118 #endif // MEDIA_FORMATS_WEBM_SEGMENTER_TEST_UTILS_H_
+
Abstract class holds stream information.
Definition: stream_info.h:53
VideoStreamInfo * CreateVideoStreamInfo() const
Creates a video stream info object for testing.
@@ -216,7 +217,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 23efcaf3b6..6690df0964 100644 --- a/docs/d0/df3/packager__util_8cc_source.html +++ b/docs/d0/df3/packager__util_8cc_source.html @@ -337,7 +337,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/dfc/structshaka_1_1media_1_1mp4_1_1AudioSampleEntry-members.html b/docs/d0/dfc/structshaka_1_1media_1_1mp4_1_1AudioSampleEntry-members.html index 050bcfc8ba..f7c34a66d9 100644 --- a/docs/d0/dfc/structshaka_1_1media_1_1mp4_1_1AudioSampleEntry-members.html +++ b/docs/d0/dfc/structshaka_1_1media_1_1mp4_1_1AudioSampleEntry-members.html @@ -120,7 +120,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d0a/classshaka_1_1media_1_1MkvWriter.html b/docs/d1/d0a/classshaka_1_1media_1_1MkvWriter.html index f097336018..8b0a654ecd 100644 --- a/docs/d1/d0a/classshaka_1_1media_1_1MkvWriter.html +++ b/docs/d1/d0a/classshaka_1_1media_1_1MkvWriter.html @@ -376,7 +376,7 @@ Public Member Functions diff --git a/docs/d1/d0a/structshaka_1_1media_1_1H264Sps.html b/docs/d1/d0a/structshaka_1_1media_1_1H264Sps.html index 61498e9d0c..6f55f7c083 100644 --- a/docs/d1/d0a/structshaka_1_1media_1_1H264Sps.html +++ b/docs/d1/d0a/structshaka_1_1media_1_1H264Sps.html @@ -242,7 +242,7 @@ int chroma_array_type< diff --git a/docs/d1/d0b/hevc__decoder__configuration__record_8cc_source.html b/docs/d1/d0b/hevc__decoder__configuration__record_8cc_source.html index ddf85d918d..4506b12a86 100644 --- a/docs/d1/d0b/hevc__decoder__configuration__record_8cc_source.html +++ b/docs/d1/d0b/hevc__decoder__configuration__record_8cc_source.html @@ -256,7 +256,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d12/classshaka_1_1media_1_1mp2t_1_1EsParserH264-members.html b/docs/d1/d12/classshaka_1_1media_1_1mp2t_1_1EsParserH264-members.html index c51d316975..3201d3298a 100644 --- a/docs/d1/d12/classshaka_1_1media_1_1mp2t_1_1EsParserH264-members.html +++ b/docs/d1/d12/classshaka_1_1media_1_1mp2t_1_1EsParserH264-members.html @@ -109,7 +109,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 320a406bd3..3360c01746 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/d1c/two__pass__single__segment__segmenter_8cc_source.html b/docs/d1/d1c/two__pass__single__segment__segmenter_8cc_source.html index c427d7e8d4..3d379da841 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 @@ -284,7 +284,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 a35d58d8c7..ba3cad6df1 100644 --- a/docs/d1/d1d/muxer__flags_8cc_source.html +++ b/docs/d1/d1d/muxer__flags_8cc_source.html @@ -144,7 +144,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d1f/classshaka_1_1media_1_1KeySource.html b/docs/d1/d1f/classshaka_1_1media_1_1KeySource.html index 2ebfbd6822..625858777d 100644 --- a/docs/d1/d1f/classshaka_1_1media_1_1KeySource.html +++ b/docs/d1/d1f/classshaka_1_1media_1_1KeySource.html @@ -117,10 +117,12 @@ Public Types   TRACK_TYPE_UNKNOWN = 0, TRACK_TYPE_SD = 1, TRACK_TYPE_HD = 2, -TRACK_TYPE_AUDIO = 3, +TRACK_TYPE_UHD1 = 3,
-  TRACK_TYPE_UNSPECIFIED = 4, -NUM_VALID_TRACK_TYPES = 4 +  TRACK_TYPE_UHD2 = 4, +TRACK_TYPE_AUDIO = 5, +TRACK_TYPE_UNSPECIFIED = 6, +NUM_VALID_TRACK_TYPES = 6
}   @@ -407,7 +409,7 @@ static std::string  diff --git a/docs/d1/d20/classshaka_1_1media_1_1mp4_1_1DecodingTimeIterator.html b/docs/d1/d20/classshaka_1_1media_1_1mp4_1_1DecodingTimeIterator.html index f07725b0f7..4e14ef26be 100644 --- a/docs/d1/d20/classshaka_1_1media_1_1mp4_1_1DecodingTimeIterator.html +++ b/docs/d1/d20/classshaka_1_1media_1_1mp4_1_1DecodingTimeIterator.html @@ -235,7 +235,7 @@ Public Member Functions diff --git a/docs/d1/d27/key__fetcher_8h_source.html b/docs/d1/d27/key__fetcher_8h_source.html index 7bc61aedc8..0b1e3d0426 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/classshaka_1_1media_1_1mp2t_1_1AdtsHeader-members.html b/docs/d1/d28/classshaka_1_1media_1_1mp2t_1_1AdtsHeader-members.html index 6976a8ae6b..efc5e71371 100644 --- a/docs/d1/d28/classshaka_1_1media_1_1mp2t_1_1AdtsHeader-members.html +++ b/docs/d1/d28/classshaka_1_1media_1_1mp2t_1_1AdtsHeader-members.html @@ -105,7 +105,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 a9a2ebb511..227ed2072e 100644 --- a/docs/d1/d2a/decryptor__source_8cc_source.html +++ b/docs/d1/d2a/decryptor__source_8cc_source.html @@ -206,7 +206,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d2b/file__util_8cc_source.html b/docs/d1/d2b/file__util_8cc_source.html index ad89195e60..5e1a0fb6a9 100644 --- a/docs/d1/d2b/file__util_8cc_source.html +++ b/docs/d1/d2b/file__util_8cc_source.html @@ -135,7 +135,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d2c/structshaka_1_1media_1_1mp4_1_1DataReference-members.html b/docs/d1/d2c/structshaka_1_1media_1_1mp4_1_1DataReference-members.html index 2971e78d6b..e6da448264 100644 --- a/docs/d1/d2c/structshaka_1_1media_1_1mp4_1_1DataReference-members.html +++ b/docs/d1/d2c/structshaka_1_1media_1_1mp4_1_1DataReference-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d2d/structshaka_1_1media_1_1mp4_1_1Box.html b/docs/d1/d2d/structshaka_1_1media_1_1mp4_1_1Box.html index 4f9197a85c..6388d78f04 100644 --- a/docs/d1/d2d/structshaka_1_1media_1_1mp4_1_1Box.html +++ b/docs/d1/d2d/structshaka_1_1media_1_1mp4_1_1Box.html @@ -385,7 +385,7 @@ class BoxBuffer diff --git a/docs/d1/d2f/webvtt__media__parser_8cc_source.html b/docs/d1/d2f/webvtt__media__parser_8cc_source.html index 3d3aa25ceb..a02cf92e0e 100644 --- a/docs/d1/d2f/webvtt__media__parser_8cc_source.html +++ b/docs/d1/d2f/webvtt__media__parser_8cc_source.html @@ -488,7 +488,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d30/classshaka_1_1media_1_1mp2t_1_1TsSectionPes.html b/docs/d1/d30/classshaka_1_1media_1_1mp2t_1_1TsSectionPes.html index ddeac906ad..228a8dba75 100644 --- a/docs/d1/d30/classshaka_1_1media_1_1mp2t_1_1TsSectionPes.html +++ b/docs/d1/d30/classshaka_1_1media_1_1mp2t_1_1TsSectionPes.html @@ -142,7 +142,7 @@ Additional Inherited Members diff --git a/docs/d1/d31/classshaka_1_1xml_1_1XmlNode.html b/docs/d1/d31/classshaka_1_1xml_1_1XmlNode.html index 26b43c3aee..31f2884e95 100644 --- a/docs/d1/d31/classshaka_1_1xml_1_1XmlNode.html +++ b/docs/d1/d31/classshaka_1_1xml_1_1XmlNode.html @@ -419,7 +419,7 @@ bool  diff --git a/docs/d1/d34/structshaka_1_1media_1_1SubsampleEntry.html b/docs/d1/d34/structshaka_1_1media_1_1SubsampleEntry.html index aec8e885c7..3b575c0772 100644 --- a/docs/d1/d34/structshaka_1_1media_1_1SubsampleEntry.html +++ b/docs/d1/d34/structshaka_1_1media_1_1SubsampleEntry.html @@ -122,7 +122,7 @@ uint32_t cipher_bytes< diff --git a/docs/d1/d37/es__parser__h264_8h_source.html b/docs/d1/d37/es__parser__h264_8h_source.html index b38659a730..aa60c063f7 100644 --- a/docs/d1/d37/es__parser__h264_8h_source.html +++ b/docs/d1/d37/es__parser__h264_8h_source.html @@ -150,7 +150,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 bb1d603f7e..6db3d4705b 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/d3e/structshaka_1_1media_1_1mp4_1_1MovieExtends.html b/docs/d1/d3e/structshaka_1_1media_1_1mp4_1_1MovieExtends.html index cb0534553e..0478b8703d 100644 --- a/docs/d1/d3e/structshaka_1_1media_1_1mp4_1_1MovieExtends.html +++ b/docs/d1/d3e/structshaka_1_1media_1_1mp4_1_1MovieExtends.html @@ -176,7 +176,7 @@ Additional Inherited Members diff --git a/docs/d1/d40/classshaka_1_1MpdWriter-members.html b/docs/d1/d40/classshaka_1_1MpdWriter-members.html index 646fabe039..2e68f1f370 100644 --- a/docs/d1/d40/classshaka_1_1MpdWriter-members.html +++ b/docs/d1/d40/classshaka_1_1MpdWriter-members.html @@ -102,7 +102,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 f9ca4ff46b..00b1aeb91c 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 4118615748..d8e9286bd3 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/d4f/classshaka_1_1media_1_1OffsetByteQueue-members.html b/docs/d1/d4f/classshaka_1_1media_1_1OffsetByteQueue-members.html index 7505f19318..67a74d4dcb 100644 --- a/docs/d1/d4f/classshaka_1_1media_1_1OffsetByteQueue-members.html +++ b/docs/d1/d4f/classshaka_1_1media_1_1OffsetByteQueue-members.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d5a/structshaka_1_1media_1_1EncryptionKey-members.html b/docs/d1/d5a/structshaka_1_1media_1_1EncryptionKey-members.html index c5023018b1..5a65f02c68 100644 --- a/docs/d1/d5a/structshaka_1_1media_1_1EncryptionKey-members.html +++ b/docs/d1/d5a/structshaka_1_1media_1_1EncryptionKey-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d6e/structshaka_1_1media_1_1mp4_1_1TrackFragmentHeader.html b/docs/d1/d6e/structshaka_1_1media_1_1mp4_1_1TrackFragmentHeader.html index f7b062d44f..e3afcadb18 100644 --- a/docs/d1/d6e/structshaka_1_1media_1_1mp4_1_1TrackFragmentHeader.html +++ b/docs/d1/d6e/structshaka_1_1media_1_1mp4_1_1TrackFragmentHeader.html @@ -222,7 +222,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 f637e0e500..b6e725614c 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 a7e14391ad..37e54a0006 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/d74/mp2t__media__parser_8cc_source.html b/docs/d1/d74/mp2t__media__parser_8cc_source.html index 92aa1824a8..f131fe7f83 100644 --- a/docs/d1/d74/mp2t__media__parser_8cc_source.html +++ b/docs/d1/d74/mp2t__media__parser_8cc_source.html @@ -531,7 +531,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d79/classshaka_1_1media_1_1H265VideoSliceHeaderParser.html b/docs/d1/d79/classshaka_1_1media_1_1H265VideoSliceHeaderParser.html index bc310a30d2..601f488b1d 100644 --- a/docs/d1/d79/classshaka_1_1media_1_1H265VideoSliceHeaderParser.html +++ b/docs/d1/d79/classshaka_1_1media_1_1H265VideoSliceHeaderParser.html @@ -152,7 +152,7 @@ int64_t  diff --git a/docs/d1/d7d/webm__video__client_8cc_source.html b/docs/d1/d7d/webm__video__client_8cc_source.html index b0f5810842..747afd81a0 100644 --- a/docs/d1/d7d/webm__video__client_8cc_source.html +++ b/docs/d1/d7d/webm__video__client_8cc_source.html @@ -269,7 +269,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d81/structshaka_1_1media_1_1H265ReferencePictureSet-members.html b/docs/d1/d81/structshaka_1_1media_1_1H265ReferencePictureSet-members.html index 28d6b6f531..efa3cf1409 100644 --- a/docs/d1/d81/structshaka_1_1media_1_1H265ReferencePictureSet-members.html +++ b/docs/d1/d81/structshaka_1_1media_1_1H265ReferencePictureSet-members.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d82/adts__constants_8h_source.html b/docs/d1/d82/adts__constants_8h_source.html index f68a0fd120..0472c59381 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/d82/classshaka_1_1media_1_1WebMParserClient-members.html b/docs/d1/d82/classshaka_1_1media_1_1WebMParserClient-members.html index 26d346b266..2c304b6674 100644 --- a/docs/d1/d82/classshaka_1_1media_1_1WebMParserClient-members.html +++ b/docs/d1/d82/classshaka_1_1media_1_1WebMParserClient-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d86/classshaka_1_1media_1_1mp4_1_1KeyRotationFragmenter-members.html b/docs/d1/d86/classshaka_1_1media_1_1mp4_1_1KeyRotationFragmenter-members.html index ff24be6e7d..8891a63f59 100644 --- a/docs/d1/d86/classshaka_1_1media_1_1mp4_1_1KeyRotationFragmenter-members.html +++ b/docs/d1/d86/classshaka_1_1media_1_1mp4_1_1KeyRotationFragmenter-members.html @@ -124,7 +124,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 9903e5f200..1c8f883562 100644 --- a/docs/d1/d8e/webm__audio__client_8cc_source.html +++ b/docs/d1/d8e/webm__audio__client_8cc_source.html @@ -214,7 +214,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d91/classshaka_1_1media_1_1H26xBitReader-members.html b/docs/d1/d91/classshaka_1_1media_1_1H26xBitReader-members.html index 1c29dd3804..a994836fbf 100644 --- a/docs/d1/d91/classshaka_1_1media_1_1H26xBitReader-members.html +++ b/docs/d1/d91/classshaka_1_1media_1_1H26xBitReader-members.html @@ -107,7 +107,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d9d/classshaka_1_1media_1_1ByteQueue-members.html b/docs/d1/d9d/classshaka_1_1media_1_1ByteQueue-members.html index f5f35ed7e5..52baea9fa6 100644 --- a/docs/d1/d9d/classshaka_1_1media_1_1ByteQueue-members.html +++ b/docs/d1/d9d/classshaka_1_1media_1_1ByteQueue-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d9d/tracks__builder_8h_source.html b/docs/d1/d9d/tracks__builder_8h_source.html index 270fe9056f..a17a1c0ccb 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/d9e/structshaka_1_1media_1_1mp4_1_1CodecConfiguration-members.html b/docs/d1/d9e/structshaka_1_1media_1_1mp4_1_1CodecConfiguration-members.html index 971a8b0fa0..ddda728b04 100644 --- a/docs/d1/d9e/structshaka_1_1media_1_1mp4_1_1CodecConfiguration-members.html +++ b/docs/d1/d9e/structshaka_1_1media_1_1mp4_1_1CodecConfiguration-members.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/da1/classshaka_1_1media_1_1mp4_1_1BoxBuffer.html b/docs/d1/da1/classshaka_1_1media_1_1mp4_1_1BoxBuffer.html index 59811b5b21..8de713011f 100644 --- a/docs/d1/da1/classshaka_1_1media_1_1mp4_1_1BoxBuffer.html +++ b/docs/d1/da1/classshaka_1_1media_1_1mp4_1_1BoxBuffer.html @@ -589,7 +589,7 @@ bool ReadWriteInt64 (i diff --git a/docs/d1/da1/structshaka_1_1media_1_1wvm_1_1DemuxStreamIdMediaSample.html b/docs/d1/da1/structshaka_1_1media_1_1wvm_1_1DemuxStreamIdMediaSample.html index 166820a190..2ade2cb564 100644 --- a/docs/d1/da1/structshaka_1_1media_1_1wvm_1_1DemuxStreamIdMediaSample.html +++ b/docs/d1/da1/structshaka_1_1media_1_1wvm_1_1DemuxStreamIdMediaSample.html @@ -116,7 +116,7 @@ scoped_refptr< diff --git a/docs/d1/da2/classshaka_1_1media_1_1NalUnitToByteStreamConverter-members.html b/docs/d1/da2/classshaka_1_1media_1_1NalUnitToByteStreamConverter-members.html index 09cb882b3a..6446feba95 100644 --- a/docs/d1/da2/classshaka_1_1media_1_1NalUnitToByteStreamConverter-members.html +++ b/docs/d1/da2/classshaka_1_1media_1_1NalUnitToByteStreamConverter-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/da5/classshaka_1_1media_1_1VPCodecConfigurationRecord.html b/docs/d1/da5/classshaka_1_1media_1_1VPCodecConfigurationRecord.html index b31470c99e..21045bc1ee 100644 --- a/docs/d1/da5/classshaka_1_1media_1_1VPCodecConfigurationRecord.html +++ b/docs/d1/da5/classshaka_1_1media_1_1VPCodecConfigurationRecord.html @@ -306,7 +306,7 @@ bool video_full_range_flag diff --git a/docs/d1/dad/classshaka_1_1media_1_1Demuxer-members.html b/docs/d1/dad/classshaka_1_1media_1_1Demuxer-members.html index 5875396c10..ca7f12325b 100644 --- a/docs/d1/dad/classshaka_1_1media_1_1Demuxer-members.html +++ b/docs/d1/dad/classshaka_1_1media_1_1Demuxer-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/db0/structshaka_1_1media_1_1mp4_1_1VideoMediaHeader.html b/docs/d1/db0/structshaka_1_1media_1_1mp4_1_1VideoMediaHeader.html index 2c3bf83687..9818b8d5e7 100644 --- a/docs/d1/db0/structshaka_1_1media_1_1mp4_1_1VideoMediaHeader.html +++ b/docs/d1/db0/structshaka_1_1media_1_1mp4_1_1VideoMediaHeader.html @@ -191,7 +191,7 @@ Additional Inherited Members diff --git a/docs/d1/db2/decoder__configuration__record_8h_source.html b/docs/d1/db2/decoder__configuration__record_8h_source.html index 1e1af2abdc..90d7111d49 100644 --- a/docs/d1/db2/decoder__configuration__record_8h_source.html +++ b/docs/d1/db2/decoder__configuration__record_8h_source.html @@ -166,7 +166,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 61751950e2..8c804c55c4 100644 --- a/docs/d1/dc2/h26x__bit__reader_8h_source.html +++ b/docs/d1/dc2/h26x__bit__reader_8h_source.html @@ -192,7 +192,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/dcb/encrypting__fragmenter_8h_source.html b/docs/d1/dcb/encrypting__fragmenter_8h_source.html index 35d5d8806f..e96068a6f6 100644 --- a/docs/d1/dcb/encrypting__fragmenter_8h_source.html +++ b/docs/d1/dcb/encrypting__fragmenter_8h_source.html @@ -195,7 +195,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/dd5/classshaka_1_1media_1_1Cluster.html b/docs/d1/dd5/classshaka_1_1media_1_1Cluster.html index f9f19a9828..41eb622c63 100644 --- a/docs/d1/dd5/classshaka_1_1media_1_1Cluster.html +++ b/docs/d1/dd5/classshaka_1_1media_1_1Cluster.html @@ -116,7 +116,7 @@ int size () const diff --git a/docs/d1/dd6/structshaka_1_1media_1_1mp4_1_1DataInformation-members.html b/docs/d1/dd6/structshaka_1_1media_1_1mp4_1_1DataInformation-members.html index 2e5bda30a4..aa0b6e5da2 100644 --- a/docs/d1/dd6/structshaka_1_1media_1_1mp4_1_1DataInformation-members.html +++ b/docs/d1/dd6/structshaka_1_1media_1_1mp4_1_1DataInformation-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/de2/classshaka_1_1media_1_1VideoStreamInfo-members.html b/docs/d1/de2/classshaka_1_1media_1_1VideoStreamInfo-members.html index 8e8175c494..ae76807420 100644 --- a/docs/d1/de2/classshaka_1_1media_1_1VideoStreamInfo-members.html +++ b/docs/d1/de2/classshaka_1_1media_1_1VideoStreamInfo-members.html @@ -127,7 +127,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 7fcd79d21f..e892452da2 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/de4/classshaka_1_1media_1_1KeyFetcher-members.html b/docs/d1/de4/classshaka_1_1media_1_1KeyFetcher-members.html index 3ce3b04487..2fa49286ef 100644 --- a/docs/d1/de4/classshaka_1_1media_1_1KeyFetcher-members.html +++ b/docs/d1/de4/classshaka_1_1media_1_1KeyFetcher-members.html @@ -99,7 +99,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/de7/classshaka_1_1xml_1_1AdaptationSetXmlNode.html b/docs/d1/de7/classshaka_1_1xml_1_1AdaptationSetXmlNode.html index a9f4fb4019..74b34cb306 100644 --- a/docs/d1/de7/classshaka_1_1xml_1_1AdaptationSetXmlNode.html +++ b/docs/d1/de7/classshaka_1_1xml_1_1AdaptationSetXmlNode.html @@ -197,7 +197,7 @@ Additional Inherited Members diff --git a/docs/d1/de7/structshaka_1_1media_1_1H265ReferencePictureListModifications-members.html b/docs/d1/de7/structshaka_1_1media_1_1H265ReferencePictureListModifications-members.html index e20dc96479..862945532a 100644 --- a/docs/d1/de7/structshaka_1_1media_1_1H265ReferencePictureListModifications-members.html +++ b/docs/d1/de7/structshaka_1_1media_1_1H265ReferencePictureListModifications-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/de9/classshaka_1_1media_1_1ProgressListener-members.html b/docs/d1/de9/classshaka_1_1media_1_1ProgressListener-members.html index bdb9ec2864..7a752af3b6 100644 --- a/docs/d1/de9/classshaka_1_1media_1_1ProgressListener-members.html +++ b/docs/d1/de9/classshaka_1_1media_1_1ProgressListener-members.html @@ -99,7 +99,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/dee/classshaka_1_1media_1_1mp4_1_1BoxReader.html b/docs/d1/dee/classshaka_1_1media_1_1mp4_1_1BoxReader.html index b8daf280ef..fc4736c9da 100644 --- a/docs/d1/dee/classshaka_1_1media_1_1mp4_1_1BoxReader.html +++ b/docs/d1/dee/classshaka_1_1media_1_1mp4_1_1BoxReader.html @@ -468,7 +468,7 @@ template<typename T > diff --git a/docs/d1/dee/structshaka_1_1media_1_1mp4_1_1SampleTable.html b/docs/d1/dee/structshaka_1_1media_1_1mp4_1_1SampleTable.html index ec1dd523b1..69c72e2bfb 100644 --- a/docs/d1/dee/structshaka_1_1media_1_1mp4_1_1SampleTable.html +++ b/docs/d1/dee/structshaka_1_1media_1_1mp4_1_1SampleTable.html @@ -198,7 +198,7 @@ Additional Inherited Members diff --git a/docs/d1/df0/aes__encryptor_8h_source.html b/docs/d1/df0/aes__encryptor_8h_source.html index 3469801b41..0363cce841 100644 --- a/docs/d1/df0/aes__encryptor_8h_source.html +++ b/docs/d1/df0/aes__encryptor_8h_source.html @@ -194,7 +194,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/df3/structshaka_1_1MpdOptions.html b/docs/d1/df3/structshaka_1_1MpdOptions.html index 8176346b14..7deaff9321 100644 --- a/docs/d1/df3/structshaka_1_1MpdOptions.html +++ b/docs/d1/df3/structshaka_1_1MpdOptions.html @@ -130,7 +130,7 @@ std::string default_langua diff --git a/docs/d1/df5/nalu__reader_8cc_source.html b/docs/d1/df5/nalu__reader_8cc_source.html index 4d4fdeb335..dbd4c0888d 100644 --- a/docs/d1/df5/nalu__reader_8cc_source.html +++ b/docs/d1/df5/nalu__reader_8cc_source.html @@ -428,7 +428,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/df9/structshaka_1_1media_1_1mp4_1_1VideoMediaHeader-members.html b/docs/d1/df9/structshaka_1_1media_1_1mp4_1_1VideoMediaHeader-members.html index 23ab368320..2f1e380ea9 100644 --- a/docs/d1/df9/structshaka_1_1media_1_1mp4_1_1VideoMediaHeader-members.html +++ b/docs/d1/df9/structshaka_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/d02/timestamp_8h_source.html b/docs/d2/d02/timestamp_8h_source.html index d8ad29d882..083dc53f90 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/d0b/classshaka_1_1media_1_1SeekHead-members.html b/docs/d2/d0b/classshaka_1_1media_1_1SeekHead-members.html index 68b6c4796e..81369250aa 100644 --- a/docs/d2/d0b/classshaka_1_1media_1_1SeekHead-members.html +++ b/docs/d2/d0b/classshaka_1_1media_1_1SeekHead-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d0f/classshaka_1_1MpdBuilder-members.html b/docs/d2/d0f/classshaka_1_1MpdBuilder-members.html index 8ad00b4dc2..2f1c78b14d 100644 --- a/docs/d2/d0f/classshaka_1_1MpdBuilder-members.html +++ b/docs/d2/d0f/classshaka_1_1MpdBuilder-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d0f/structshaka_1_1media_1_1wvm_1_1PrevSampleData.html b/docs/d2/d0f/structshaka_1_1media_1_1wvm_1_1PrevSampleData.html index 244eb56b23..1f4cabe327 100644 --- a/docs/d2/d0f/structshaka_1_1media_1_1wvm_1_1PrevSampleData.html +++ b/docs/d2/d0f/structshaka_1_1media_1_1wvm_1_1PrevSampleData.html @@ -132,7 +132,7 @@ int64_t video_sample_durat diff --git a/docs/d2/d11/classshaka_1_1media_1_1MuxerListener-members.html b/docs/d2/d11/classshaka_1_1media_1_1MuxerListener-members.html index 1b80288bc2..52ab1157e6 100644 --- a/docs/d2/d11/classshaka_1_1media_1_1MuxerListener-members.html +++ b/docs/d2/d11/classshaka_1_1media_1_1MuxerListener-members.html @@ -109,7 +109,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 c972eed6de..61ec9eea7b 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 746d4fbfa4..5b6bfaa3c4 100644 --- a/docs/d2/d23/threaded__io__file_8cc_source.html +++ b/docs/d2/d23/threaded__io__file_8cc_source.html @@ -317,7 +317,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d24/packager__util_8h_source.html b/docs/d2/d24/packager__util_8h_source.html index 732739d3ea..4c56ccbbcc 100644 --- a/docs/d2/d24/packager__util_8h_source.html +++ b/docs/d2/d24/packager__util_8h_source.html @@ -140,7 +140,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d29/classshaka_1_1media_1_1mp4_1_1KeyRotationFragmenter.html b/docs/d2/d29/classshaka_1_1media_1_1mp4_1_1KeyRotationFragmenter.html index 85a9dd955f..a89a6db516 100644 --- a/docs/d2/d29/classshaka_1_1media_1_1mp4_1_1KeyRotationFragmenter.html +++ b/docs/d2/d29/classshaka_1_1media_1_1mp4_1_1KeyRotationFragmenter.html @@ -328,7 +328,7 @@ void set_encryption_key diff --git a/docs/d2/d30/tracks__builder_8cc_source.html b/docs/d2/d30/tracks__builder_8cc_source.html index e28d944cd9..b5c7677417 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 3642af2c1f..3f1a3daabb 100644 --- a/docs/d2/d33/video__slice__header__parser_8h_source.html +++ b/docs/d2/d33/video__slice__header__parser_8h_source.html @@ -167,7 +167,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d35/classshaka_1_1media_1_1WidevineKeySource-members.html b/docs/d2/d35/classshaka_1_1media_1_1WidevineKeySource-members.html index e0c56f1018..cd763faa67 100644 --- a/docs/d2/d35/classshaka_1_1media_1_1WidevineKeySource-members.html +++ b/docs/d2/d35/classshaka_1_1media_1_1WidevineKeySource-members.html @@ -109,6 +109,8 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); TRACK_TYPE_AUDIO enum value (defined in shaka::media::KeySource)shaka::media::KeySource TRACK_TYPE_HD enum value (defined in shaka::media::KeySource)shaka::media::KeySource TRACK_TYPE_SD enum value (defined in shaka::media::KeySource)shaka::media::KeySource + TRACK_TYPE_UHD1 enum value (defined in shaka::media::KeySource)shaka::media::KeySource + TRACK_TYPE_UHD2 enum value (defined in shaka::media::KeySource)shaka::media::KeySource TRACK_TYPE_UNKNOWN enum value (defined in shaka::media::KeySource)shaka::media::KeySource TRACK_TYPE_UNSPECIFIED enum value (defined in shaka::media::KeySource)shaka::media::KeySource TrackType enum name (defined in shaka::media::KeySource)shaka::media::KeySource @@ -119,7 +121,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d3c/structshaka_1_1media_1_1mp4_1_1TrackFragmentHeader-members.html b/docs/d2/d3c/structshaka_1_1media_1_1mp4_1_1TrackFragmentHeader-members.html index b8bc88fbdc..bf755bfab5 100644 --- a/docs/d2/d3c/structshaka_1_1media_1_1mp4_1_1TrackFragmentHeader-members.html +++ b/docs/d2/d3c/structshaka_1_1media_1_1mp4_1_1TrackFragmentHeader-members.html @@ -133,7 +133,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d45/program__map__table__writer_8cc_source.html b/docs/d2/d45/program__map__table__writer_8cc_source.html index 267e3d91ec..e399f243da 100644 --- a/docs/d2/d45/program__map__table__writer_8cc_source.html +++ b/docs/d2/d45/program__map__table__writer_8cc_source.html @@ -500,7 +500,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 f6e8ac95ff..f8f574b426 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 @@ -379,7 +379,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 5f2a39c8fd..d377ba5f53 100644 --- a/docs/d2/d4d/file_8h_source.html +++ b/docs/d2/d4d/file_8h_source.html @@ -191,7 +191,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d4f/structshaka_1_1Element-members.html b/docs/d2/d4f/structshaka_1_1Element-members.html index a3ea50e30b..322281ecc8 100644 --- a/docs/d2/d4f/structshaka_1_1Element-members.html +++ b/docs/d2/d4f/structshaka_1_1Element-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d51/classshaka_1_1MockMpdNotifier-members.html b/docs/d2/d51/classshaka_1_1MockMpdNotifier-members.html index 98a7fe3433..7074472adc 100644 --- a/docs/d2/d51/classshaka_1_1MockMpdNotifier-members.html +++ b/docs/d2/d51/classshaka_1_1MockMpdNotifier-members.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d59/structshaka_1_1media_1_1H264SliceHeader.html b/docs/d2/d59/structshaka_1_1media_1_1H264SliceHeader.html index 758550e41b..c77913d448 100644 --- a/docs/d2/d59/structshaka_1_1media_1_1H264SliceHeader.html +++ b/docs/d2/d59/structshaka_1_1media_1_1H264SliceHeader.html @@ -276,7 +276,7 @@ int slice_beta_offset_div2 diff --git a/docs/d2/d5b/classshaka_1_1media_1_1KeySource-members.html b/docs/d2/d5b/classshaka_1_1media_1_1KeySource-members.html index 7998930bb5..ed38ee108e 100644 --- a/docs/d2/d5b/classshaka_1_1media_1_1KeySource-members.html +++ b/docs/d2/d5b/classshaka_1_1media_1_1KeySource-members.html @@ -105,6 +105,8 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); TRACK_TYPE_AUDIO enum value (defined in shaka::media::KeySource)shaka::media::KeySource TRACK_TYPE_HD enum value (defined in shaka::media::KeySource)shaka::media::KeySource TRACK_TYPE_SD enum value (defined in shaka::media::KeySource)shaka::media::KeySource + TRACK_TYPE_UHD1 enum value (defined in shaka::media::KeySource)shaka::media::KeySource + TRACK_TYPE_UHD2 enum value (defined in shaka::media::KeySource)shaka::media::KeySource TRACK_TYPE_UNKNOWN enum value (defined in shaka::media::KeySource)shaka::media::KeySource TRACK_TYPE_UNSPECIFIED enum value (defined in shaka::media::KeySource)shaka::media::KeySource TrackType enum name (defined in shaka::media::KeySource)shaka::media::KeySource @@ -113,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d5c/classshaka_1_1SimpleMpdNotifier-members.html b/docs/d2/d5c/classshaka_1_1SimpleMpdNotifier-members.html index 2573faca25..fcddecf7e0 100644 --- a/docs/d2/d5c/classshaka_1_1SimpleMpdNotifier-members.html +++ b/docs/d2/d5c/classshaka_1_1SimpleMpdNotifier-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d61/structshaka_1_1media_1_1H264ModificationOfPicNum-members.html b/docs/d2/d61/structshaka_1_1media_1_1H264ModificationOfPicNum-members.html index 21ccd4008e..065157a740 100644 --- a/docs/d2/d61/structshaka_1_1media_1_1H264ModificationOfPicNum-members.html +++ b/docs/d2/d61/structshaka_1_1media_1_1H264ModificationOfPicNum-members.html @@ -99,7 +99,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 bccce058cf..599a2015ec 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/d62/structshaka_1_1media_1_1mp4_1_1Movie-members.html b/docs/d2/d62/structshaka_1_1media_1_1mp4_1_1Movie-members.html index b288316643..a4da7c2349 100644 --- a/docs/d2/d62/structshaka_1_1media_1_1mp4_1_1Movie-members.html +++ b/docs/d2/d62/structshaka_1_1media_1_1mp4_1_1Movie-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d6a/classshaka_1_1media_1_1AesCryptor-members.html b/docs/d2/d6a/classshaka_1_1media_1_1AesCryptor-members.html index 3831f031b9..0b54de3059 100644 --- a/docs/d2/d6a/classshaka_1_1media_1_1AesCryptor-members.html +++ b/docs/d2/d6a/classshaka_1_1media_1_1AesCryptor-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d6f/classBandwidthEstimator.html b/docs/d2/d6f/classBandwidthEstimator.html index 2b31c2dfaa..9a8dff9852 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/d70/structshaka_1_1media_1_1mp4_1_1SchemeInfo.html b/docs/d2/d70/structshaka_1_1media_1_1mp4_1_1SchemeInfo.html index 7299f0a166..2f7b7d00d1 100644 --- a/docs/d2/d70/structshaka_1_1media_1_1mp4_1_1SchemeInfo.html +++ b/docs/d2/d70/structshaka_1_1media_1_1mp4_1_1SchemeInfo.html @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d2/d7b/classshaka_1_1DashIopMpdNotifier-members.html b/docs/d2/d7b/classshaka_1_1DashIopMpdNotifier-members.html index e8e89a7973..73e1818afb 100644 --- a/docs/d2/d7b/classshaka_1_1DashIopMpdNotifier-members.html +++ b/docs/d2/d7b/classshaka_1_1DashIopMpdNotifier-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d7b/simple__mpd__notifier_8cc_source.html b/docs/d2/d7b/simple__mpd__notifier_8cc_source.html index 6014107876..18f2f2df7c 100644 --- a/docs/d2/d7b/simple__mpd__notifier_8cc_source.html +++ b/docs/d2/d7b/simple__mpd__notifier_8cc_source.html @@ -240,7 +240,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 4659a498fc..da0b7e8aba 100644 --- a/docs/d2/d7e/aac__audio__specific__config_8h_source.html +++ b/docs/d2/d7e/aac__audio__specific__config_8h_source.html @@ -164,7 +164,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d7f/structshaka_1_1media_1_1mp4_1_1CuePayloadBox.html b/docs/d2/d7f/structshaka_1_1media_1_1mp4_1_1CuePayloadBox.html index b18e058eca..bd29fef331 100644 --- a/docs/d2/d7f/structshaka_1_1media_1_1mp4_1_1CuePayloadBox.html +++ b/docs/d2/d7f/structshaka_1_1media_1_1mp4_1_1CuePayloadBox.html @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d2/d8a/hls__notify__muxer__listener_8h_source.html b/docs/d2/d8a/hls__notify__muxer__listener_8h_source.html index f4e97abb03..cc9422f808 100644 --- a/docs/d2/d8a/hls__notify__muxer__listener_8h_source.html +++ b/docs/d2/d8a/hls__notify__muxer__listener_8h_source.html @@ -176,7 +176,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d91/structshaka_1_1media_1_1mp4_1_1CuePayloadBox-members.html b/docs/d2/d91/structshaka_1_1media_1_1mp4_1_1CuePayloadBox-members.html index 5e313c3e0e..52731ca89e 100644 --- a/docs/d2/d91/structshaka_1_1media_1_1mp4_1_1CuePayloadBox-members.html +++ b/docs/d2/d91/structshaka_1_1media_1_1mp4_1_1CuePayloadBox-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d92/box__reader_8h_source.html b/docs/d2/d92/box__reader_8h_source.html index 6b88793e69..8166db0a3c 100644 --- a/docs/d2/d92/box__reader_8h_source.html +++ b/docs/d2/d92/box__reader_8h_source.html @@ -246,7 +246,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d93/classshaka_1_1media_1_1mp2t_1_1PesPacket.html b/docs/d2/d93/classshaka_1_1media_1_1mp2t_1_1PesPacket.html index af4f1f0a0f..a0e3f239aa 100644 --- a/docs/d2/d93/classshaka_1_1media_1_1mp2t_1_1PesPacket.html +++ b/docs/d2/d93/classshaka_1_1media_1_1mp2t_1_1PesPacket.html @@ -387,7 +387,7 @@ const std::vector< uint8_t > &  diff --git a/docs/d2/d95/structshaka_1_1media_1_1StreamDescriptor.html b/docs/d2/d95/structshaka_1_1media_1_1StreamDescriptor.html index adac129816..39aac1e5d8 100644 --- a/docs/d2/d95/structshaka_1_1media_1_1StreamDescriptor.html +++ b/docs/d2/d95/structshaka_1_1media_1_1StreamDescriptor.html @@ -140,7 +140,7 @@ std::string hls_playlist_n diff --git a/docs/d2/da6/threaded__io__file_8h_source.html b/docs/d2/da6/threaded__io__file_8h_source.html index 5936f5307f..681ffd74f5 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 f0d990695a..e9d0dfc1bd 100644 --- a/docs/d2/da8/mp4_2segmenter_8cc_source.html +++ b/docs/d2/da8/mp4_2segmenter_8cc_source.html @@ -251,328 +251,332 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
162 
163 Segmenter::~Segmenter() {}
164 
-
165 Status Segmenter::Initialize(const std::vector<MediaStream*>& streams,
+
165 Status Segmenter::Initialize(const std::vector<MediaStream*>& streams,
166  MuxerListener* muxer_listener,
167  ProgressListener* progress_listener,
168  KeySource* encryption_key_source,
169  uint32_t max_sd_pixels,
-
170  double clear_lead_in_seconds,
-
171  double crypto_period_duration_in_seconds,
-
172  FourCC protection_scheme) {
-
173  DCHECK_LT(0u, streams.size());
-
174  muxer_listener_ = muxer_listener;
-
175  progress_listener_ = progress_listener;
-
176  moof_->header.sequence_number = 0;
-
177 
-
178  moof_->tracks.resize(streams.size());
-
179  segment_durations_.resize(streams.size());
-
180  fragmenters_.resize(streams.size());
-
181  const bool key_rotation_enabled = crypto_period_duration_in_seconds != 0;
-
182  const bool kInitialEncryptionInfo = true;
-
183 
-
184  for (uint32_t i = 0; i < streams.size(); ++i) {
-
185  stream_map_[streams[i]] = i;
-
186  moof_->tracks[i].header.track_id = i + 1;
-
187  if (streams[i]->info()->stream_type() == kStreamVideo) {
-
188  // Use the first video stream as the reference stream (which is 1-based).
-
189  if (sidx_->reference_id == 0)
-
190  sidx_->reference_id = i + 1;
-
191  }
-
192  if (!encryption_key_source) {
-
193  fragmenters_[i].reset(
-
194  new Fragmenter(streams[i]->info(), &moof_->tracks[i]));
-
195  continue;
-
196  }
-
197 
-
198  KeySource::TrackType track_type =
-
199  GetTrackTypeForEncryption(*streams[i]->info(), max_sd_pixels);
-
200  SampleDescription& description =
-
201  moov_->tracks[i].media.information.sample_table.description;
-
202  ProtectionPattern pattern =
-
203  GetProtectionPattern(protection_scheme, description.type);
-
204 
-
205  if (key_rotation_enabled) {
-
206  // Fill encrypted sample entry with default key.
-
207  EncryptionKey encryption_key;
-
208  encryption_key.key_id.assign(
-
209  kKeyRotationDefaultKeyId,
-
210  kKeyRotationDefaultKeyId + arraysize(kKeyRotationDefaultKeyId));
-
211  if (!AesCryptor::GenerateRandomIv(protection_scheme,
-
212  &encryption_key.iv)) {
-
213  return Status(error::INTERNAL_ERROR, "Failed to generate random iv.");
-
214  }
-
215  GenerateEncryptedSampleEntry(encryption_key, clear_lead_in_seconds,
-
216  protection_scheme, pattern, &description);
-
217  if (muxer_listener_) {
-
218  muxer_listener_->OnEncryptionInfoReady(
-
219  kInitialEncryptionInfo, protection_scheme, encryption_key.key_id,
-
220  encryption_key.iv, encryption_key.key_system_info);
-
221  }
-
222 
-
223  fragmenters_[i].reset(new KeyRotationFragmenter(
-
224  moof_.get(), streams[i]->info(), &moof_->tracks[i],
-
225  encryption_key_source, track_type,
-
226  crypto_period_duration_in_seconds * streams[i]->info()->time_scale(),
-
227  clear_lead_in_seconds * streams[i]->info()->time_scale(),
-
228  protection_scheme, pattern.crypt_byte_block, pattern.skip_byte_block,
-
229  muxer_listener_));
-
230  continue;
-
231  }
-
232 
-
233  std::unique_ptr<EncryptionKey> encryption_key(new EncryptionKey());
-
234  Status status =
-
235  encryption_key_source->GetKey(track_type, encryption_key.get());
-
236  if (!status.ok())
-
237  return status;
-
238  if (encryption_key->iv.empty()) {
-
239  if (!AesCryptor::GenerateRandomIv(protection_scheme,
-
240  &encryption_key->iv)) {
-
241  return Status(error::INTERNAL_ERROR, "Failed to generate random iv.");
-
242  }
-
243  }
-
244 
-
245  GenerateEncryptedSampleEntry(*encryption_key, clear_lead_in_seconds,
-
246  protection_scheme, pattern, &description);
+
170  uint32_t max_hd_pixels,
+
171  uint32_t max_uhd1_pixels,
+
172  double clear_lead_in_seconds,
+
173  double crypto_period_duration_in_seconds,
+
174  FourCC protection_scheme) {
+
175  DCHECK_LT(0u, streams.size());
+
176  muxer_listener_ = muxer_listener;
+
177  progress_listener_ = progress_listener;
+
178  moof_->header.sequence_number = 0;
+
179 
+
180  moof_->tracks.resize(streams.size());
+
181  segment_durations_.resize(streams.size());
+
182  fragmenters_.resize(streams.size());
+
183  const bool key_rotation_enabled = crypto_period_duration_in_seconds != 0;
+
184  const bool kInitialEncryptionInfo = true;
+
185 
+
186  for (uint32_t i = 0; i < streams.size(); ++i) {
+
187  stream_map_[streams[i]] = i;
+
188  moof_->tracks[i].header.track_id = i + 1;
+
189  if (streams[i]->info()->stream_type() == kStreamVideo) {
+
190  // Use the first video stream as the reference stream (which is 1-based).
+
191  if (sidx_->reference_id == 0)
+
192  sidx_->reference_id = i + 1;
+
193  }
+
194  if (!encryption_key_source) {
+
195  fragmenters_[i].reset(
+
196  new Fragmenter(streams[i]->info(), &moof_->tracks[i]));
+
197  continue;
+
198  }
+
199 
+
200  KeySource::TrackType track_type =
+
201  GetTrackTypeForEncryption(*streams[i]->info(), max_sd_pixels,
+
202  max_hd_pixels, max_uhd1_pixels);
+
203  SampleDescription& description =
+
204  moov_->tracks[i].media.information.sample_table.description;
+
205  ProtectionPattern pattern =
+
206  GetProtectionPattern(protection_scheme, description.type);
+
207 
+
208  if (key_rotation_enabled) {
+
209  // Fill encrypted sample entry with default key.
+
210  EncryptionKey encryption_key;
+
211  encryption_key.key_id.assign(
+
212  kKeyRotationDefaultKeyId,
+
213  kKeyRotationDefaultKeyId + arraysize(kKeyRotationDefaultKeyId));
+
214  if (!AesCryptor::GenerateRandomIv(protection_scheme,
+
215  &encryption_key.iv)) {
+
216  return Status(error::INTERNAL_ERROR, "Failed to generate random iv.");
+
217  }
+
218  GenerateEncryptedSampleEntry(encryption_key, clear_lead_in_seconds,
+
219  protection_scheme, pattern, &description);
+
220  if (muxer_listener_) {
+
221  muxer_listener_->OnEncryptionInfoReady(
+
222  kInitialEncryptionInfo, protection_scheme, encryption_key.key_id,
+
223  encryption_key.iv, encryption_key.key_system_info);
+
224  }
+
225 
+
226  fragmenters_[i].reset(new KeyRotationFragmenter(
+
227  moof_.get(), streams[i]->info(), &moof_->tracks[i],
+
228  encryption_key_source, track_type,
+
229  crypto_period_duration_in_seconds * streams[i]->info()->time_scale(),
+
230  clear_lead_in_seconds * streams[i]->info()->time_scale(),
+
231  protection_scheme, pattern.crypt_byte_block, pattern.skip_byte_block,
+
232  muxer_listener_));
+
233  continue;
+
234  }
+
235 
+
236  std::unique_ptr<EncryptionKey> encryption_key(new EncryptionKey());
+
237  Status status =
+
238  encryption_key_source->GetKey(track_type, encryption_key.get());
+
239  if (!status.ok())
+
240  return status;
+
241  if (encryption_key->iv.empty()) {
+
242  if (!AesCryptor::GenerateRandomIv(protection_scheme,
+
243  &encryption_key->iv)) {
+
244  return Status(error::INTERNAL_ERROR, "Failed to generate random iv.");
+
245  }
+
246  }
247 
-
248  if (moov_->pssh.empty()) {
-
249  moov_->pssh.resize(encryption_key->key_system_info.size());
-
250  for (size_t i = 0; i < encryption_key->key_system_info.size(); i++) {
-
251  moov_->pssh[i].raw_box = encryption_key->key_system_info[i].CreateBox();
-
252  }
-
253 
-
254  if (muxer_listener_) {
-
255  muxer_listener_->OnEncryptionInfoReady(
-
256  kInitialEncryptionInfo, protection_scheme, encryption_key->key_id,
-
257  encryption_key->iv, encryption_key->key_system_info);
-
258  }
-
259  }
-
260 
-
261  fragmenters_[i].reset(new EncryptingFragmenter(
-
262  streams[i]->info(), &moof_->tracks[i], std::move(encryption_key),
-
263  clear_lead_in_seconds * streams[i]->info()->time_scale(),
-
264  protection_scheme, pattern.crypt_byte_block, pattern.skip_byte_block,
-
265  muxer_listener_));
-
266  }
-
267 
- -
269  for (uint32_t i = 0; i < streams.size(); ++i)
-
270  fragmenters_[i]->set_use_decoding_timestamp_in_timeline(true);
-
271  }
-
272 
-
273  // Choose the first stream if there is no VIDEO.
-
274  if (sidx_->reference_id == 0)
-
275  sidx_->reference_id = 1;
-
276  sidx_->timescale = streams[GetReferenceStreamId()]->info()->time_scale();
-
277 
-
278  // Use media duration as progress target.
-
279  progress_target_ = streams[GetReferenceStreamId()]->info()->duration();
+
248  GenerateEncryptedSampleEntry(*encryption_key, clear_lead_in_seconds,
+
249  protection_scheme, pattern, &description);
+
250 
+
251  if (moov_->pssh.empty()) {
+
252  moov_->pssh.resize(encryption_key->key_system_info.size());
+
253  for (size_t i = 0; i < encryption_key->key_system_info.size(); i++) {
+
254  moov_->pssh[i].raw_box = encryption_key->key_system_info[i].CreateBox();
+
255  }
+
256 
+
257  if (muxer_listener_) {
+
258  muxer_listener_->OnEncryptionInfoReady(
+
259  kInitialEncryptionInfo, protection_scheme, encryption_key->key_id,
+
260  encryption_key->iv, encryption_key->key_system_info);
+
261  }
+
262  }
+
263 
+
264  fragmenters_[i].reset(new EncryptingFragmenter(
+
265  streams[i]->info(), &moof_->tracks[i], std::move(encryption_key),
+
266  clear_lead_in_seconds * streams[i]->info()->time_scale(),
+
267  protection_scheme, pattern.crypt_byte_block, pattern.skip_byte_block,
+
268  muxer_listener_));
+
269  }
+
270 
+ +
272  for (uint32_t i = 0; i < streams.size(); ++i)
+
273  fragmenters_[i]->set_use_decoding_timestamp_in_timeline(true);
+
274  }
+
275 
+
276  // Choose the first stream if there is no VIDEO.
+
277  if (sidx_->reference_id == 0)
+
278  sidx_->reference_id = 1;
+
279  sidx_->timescale = streams[GetReferenceStreamId()]->info()->time_scale();
280 
-
281  // Use the reference stream's time scale as movie time scale.
-
282  moov_->header.timescale = sidx_->timescale;
-
283  moof_->header.sequence_number = 1;
-
284 
-
285  // Fill in version information.
-
286  const std::string version = GetPackagerVersion();
-
287  if (!version.empty()) {
-
288  moov_->metadata.handler.handler_type = FOURCC_ID32;
-
289  moov_->metadata.id3v2.language.code = "eng";
-
290  moov_->metadata.id3v2.private_frame.owner = GetPackagerProjectUrl();
-
291  moov_->metadata.id3v2.private_frame.value = version;
-
292  }
-
293  return DoInitialize();
-
294 }
-
295 
- -
297  for (const std::unique_ptr<Fragmenter>& fragmenter : fragmenters_) {
-
298  Status status = FinalizeFragment(true, fragmenter.get());
-
299  if (!status.ok())
-
300  return status;
-
301  }
-
302 
-
303  // Set tracks and moov durations.
-
304  // Note that the updated moov box will be written to output file for VOD case
-
305  // only.
-
306  for (std::vector<Track>::iterator track = moov_->tracks.begin();
-
307  track != moov_->tracks.end();
-
308  ++track) {
-
309  track->header.duration = Rescale(track->media.header.duration,
-
310  track->media.header.timescale,
-
311  moov_->header.timescale);
-
312  if (track->header.duration > moov_->header.duration)
-
313  moov_->header.duration = track->header.duration;
-
314  }
-
315  moov_->extends.header.fragment_duration = moov_->header.duration;
-
316 
-
317  return DoFinalize();
-
318 }
+
281  // Use media duration as progress target.
+
282  progress_target_ = streams[GetReferenceStreamId()]->info()->duration();
+
283 
+
284  // Use the reference stream's time scale as movie time scale.
+
285  moov_->header.timescale = sidx_->timescale;
+
286  moof_->header.sequence_number = 1;
+
287 
+
288  // Fill in version information.
+
289  const std::string version = GetPackagerVersion();
+
290  if (!version.empty()) {
+
291  moov_->metadata.handler.handler_type = FOURCC_ID32;
+
292  moov_->metadata.id3v2.language.code = "eng";
+
293  moov_->metadata.id3v2.private_frame.owner = GetPackagerProjectUrl();
+
294  moov_->metadata.id3v2.private_frame.value = version;
+
295  }
+
296  return DoInitialize();
+
297 }
+
298 
+ +
300  for (const std::unique_ptr<Fragmenter>& fragmenter : fragmenters_) {
+
301  Status status = FinalizeFragment(true, fragmenter.get());
+
302  if (!status.ok())
+
303  return status;
+
304  }
+
305 
+
306  // Set tracks and moov durations.
+
307  // Note that the updated moov box will be written to output file for VOD case
+
308  // only.
+
309  for (std::vector<Track>::iterator track = moov_->tracks.begin();
+
310  track != moov_->tracks.end();
+
311  ++track) {
+
312  track->header.duration = Rescale(track->media.header.duration,
+
313  track->media.header.timescale,
+
314  moov_->header.timescale);
+
315  if (track->header.duration > moov_->header.duration)
+
316  moov_->header.duration = track->header.duration;
+
317  }
+
318  moov_->extends.header.fragment_duration = moov_->header.duration;
319 
- -
321  scoped_refptr<MediaSample> sample) {
-
322  // Find the fragmenter for this stream.
-
323  DCHECK(stream);
-
324  DCHECK(stream_map_.find(stream) != stream_map_.end());
-
325  uint32_t stream_id = stream_map_[stream];
-
326  Fragmenter* fragmenter = fragmenters_[stream_id].get();
-
327 
-
328  // Set default sample duration if it has not been set yet.
-
329  if (moov_->extends.tracks[stream_id].default_sample_duration == 0) {
-
330  moov_->extends.tracks[stream_id].default_sample_duration =
-
331  sample->duration();
-
332  }
-
333 
-
334  if (fragmenter->fragment_finalized()) {
-
335  return Status(error::FRAGMENT_FINALIZED,
-
336  "Current fragment is finalized already.");
-
337  }
-
338 
-
339  bool finalize_fragment = false;
-
340  if (fragmenter->fragment_duration() >=
-
341  options_.fragment_duration * stream->info()->time_scale()) {
-
342  if (sample->is_key_frame() || !options_.fragment_sap_aligned) {
-
343  finalize_fragment = true;
-
344  }
-
345  }
-
346  bool finalize_segment = false;
-
347  if (segment_durations_[stream_id] >=
-
348  options_.segment_duration * stream->info()->time_scale()) {
-
349  if (sample->is_key_frame() || !options_.segment_sap_aligned) {
-
350  finalize_segment = true;
-
351  finalize_fragment = true;
-
352  }
-
353  }
-
354 
-
355  Status status;
-
356  if (finalize_fragment) {
-
357  status = FinalizeFragment(finalize_segment, fragmenter);
-
358  if (!status.ok())
-
359  return status;
-
360  }
-
361 
-
362  status = fragmenter->AddSample(sample);
-
363  if (!status.ok())
-
364  return status;
-
365 
-
366  if (sample_duration_ == 0)
-
367  sample_duration_ = sample->duration();
-
368  moov_->tracks[stream_id].media.header.duration += sample->duration();
-
369  segment_durations_[stream_id] += sample->duration();
-
370  DCHECK_GE(segment_durations_[stream_id], fragmenter->fragment_duration());
-
371  return Status::OK;
-
372 }
-
373 
-
374 uint32_t Segmenter::GetReferenceTimeScale() const {
-
375  return moov_->header.timescale;
-
376 }
-
377 
-
378 double Segmenter::GetDuration() const {
-
379  if (moov_->header.timescale == 0) {
-
380  // Handling the case where this is not properly initialized.
-
381  return 0.0;
-
382  }
-
383 
-
384  return static_cast<double>(moov_->header.duration) / moov_->header.timescale;
-
385 }
+
320  return DoFinalize();
+
321 }
+
322 
+ +
324  scoped_refptr<MediaSample> sample) {
+
325  // Find the fragmenter for this stream.
+
326  DCHECK(stream);
+
327  DCHECK(stream_map_.find(stream) != stream_map_.end());
+
328  uint32_t stream_id = stream_map_[stream];
+
329  Fragmenter* fragmenter = fragmenters_[stream_id].get();
+
330 
+
331  // Set default sample duration if it has not been set yet.
+
332  if (moov_->extends.tracks[stream_id].default_sample_duration == 0) {
+
333  moov_->extends.tracks[stream_id].default_sample_duration =
+
334  sample->duration();
+
335  }
+
336 
+
337  if (fragmenter->fragment_finalized()) {
+
338  return Status(error::FRAGMENT_FINALIZED,
+
339  "Current fragment is finalized already.");
+
340  }
+
341 
+
342  bool finalize_fragment = false;
+
343  if (fragmenter->fragment_duration() >=
+
344  options_.fragment_duration * stream->info()->time_scale()) {
+
345  if (sample->is_key_frame() || !options_.fragment_sap_aligned) {
+
346  finalize_fragment = true;
+
347  }
+
348  }
+
349  bool finalize_segment = false;
+
350  if (segment_durations_[stream_id] >=
+
351  options_.segment_duration * stream->info()->time_scale()) {
+
352  if (sample->is_key_frame() || !options_.segment_sap_aligned) {
+
353  finalize_segment = true;
+
354  finalize_fragment = true;
+
355  }
+
356  }
+
357 
+
358  Status status;
+
359  if (finalize_fragment) {
+
360  status = FinalizeFragment(finalize_segment, fragmenter);
+
361  if (!status.ok())
+
362  return status;
+
363  }
+
364 
+
365  status = fragmenter->AddSample(sample);
+
366  if (!status.ok())
+
367  return status;
+
368 
+
369  if (sample_duration_ == 0)
+
370  sample_duration_ = sample->duration();
+
371  moov_->tracks[stream_id].media.header.duration += sample->duration();
+
372  segment_durations_[stream_id] += sample->duration();
+
373  DCHECK_GE(segment_durations_[stream_id], fragmenter->fragment_duration());
+
374  return Status::OK;
+
375 }
+
376 
+
377 uint32_t Segmenter::GetReferenceTimeScale() const {
+
378  return moov_->header.timescale;
+
379 }
+
380 
+
381 double Segmenter::GetDuration() const {
+
382  if (moov_->header.timescale == 0) {
+
383  // Handling the case where this is not properly initialized.
+
384  return 0.0;
+
385  }
386 
-
387 void Segmenter::UpdateProgress(uint64_t progress) {
-
388  accumulated_progress_ += progress;
+
387  return static_cast<double>(moov_->header.duration) / moov_->header.timescale;
+
388 }
389 
-
390  if (!progress_listener_) return;
-
391  if (progress_target_ == 0) return;
-
392  // It might happen that accumulated progress exceeds progress_target due to
-
393  // computation errors, e.g. rounding error. Cap it so it never reports > 100%
-
394  // progress.
-
395  if (accumulated_progress_ >= progress_target_) {
-
396  progress_listener_->OnProgress(1.0);
-
397  } else {
-
398  progress_listener_->OnProgress(static_cast<double>(accumulated_progress_) /
-
399  progress_target_);
-
400  }
-
401 }
-
402 
-
403 void Segmenter::SetComplete() {
-
404  if (!progress_listener_) return;
-
405  progress_listener_->OnProgress(1.0);
-
406 }
-
407 
-
408 Status Segmenter::FinalizeSegment() {
-
409  Status status = DoFinalizeSegment();
+
390 void Segmenter::UpdateProgress(uint64_t progress) {
+
391  accumulated_progress_ += progress;
+
392 
+
393  if (!progress_listener_) return;
+
394  if (progress_target_ == 0) return;
+
395  // It might happen that accumulated progress exceeds progress_target due to
+
396  // computation errors, e.g. rounding error. Cap it so it never reports > 100%
+
397  // progress.
+
398  if (accumulated_progress_ >= progress_target_) {
+
399  progress_listener_->OnProgress(1.0);
+
400  } else {
+
401  progress_listener_->OnProgress(static_cast<double>(accumulated_progress_) /
+
402  progress_target_);
+
403  }
+
404 }
+
405 
+
406 void Segmenter::SetComplete() {
+
407  if (!progress_listener_) return;
+
408  progress_listener_->OnProgress(1.0);
+
409 }
410 
-
411  // Reset segment information to initial state.
-
412  sidx_->references.clear();
-
413  std::vector<uint64_t>::iterator it = segment_durations_.begin();
-
414  for (; it != segment_durations_.end(); ++it)
-
415  *it = 0;
-
416 
-
417  return status;
-
418 }
+
411 Status Segmenter::FinalizeSegment() {
+
412  Status status = DoFinalizeSegment();
+
413 
+
414  // Reset segment information to initial state.
+
415  sidx_->references.clear();
+
416  std::vector<uint64_t>::iterator it = segment_durations_.begin();
+
417  for (; it != segment_durations_.end(); ++it)
+
418  *it = 0;
419 
-
420 uint32_t Segmenter::GetReferenceStreamId() {
-
421  DCHECK(sidx_);
-
422  return sidx_->reference_id - 1;
-
423 }
-
424 
-
425 Status Segmenter::FinalizeFragment(bool finalize_segment,
-
426  Fragmenter* fragmenter) {
-
427  fragmenter->FinalizeFragment();
-
428 
-
429  // Check if all tracks are ready for fragmentation.
-
430  for (const std::unique_ptr<Fragmenter>& fragmenter : fragmenters_) {
-
431  if (!fragmenter->fragment_finalized())
-
432  return Status::OK;
-
433  }
-
434 
-
435  MediaData mdat;
-
436  // Data offset relative to 'moof': moof size + mdat header size.
-
437  // The code will also update box sizes for moof_ and its child boxes.
-
438  uint64_t data_offset = moof_->ComputeSize() + mdat.HeaderSize();
-
439  // 'traf' should follow 'mfhd' moof header box.
-
440  uint64_t next_traf_position = moof_->HeaderSize() + moof_->header.box_size();
-
441  for (size_t i = 0; i < moof_->tracks.size(); ++i) {
-
442  TrackFragment& traf = moof_->tracks[i];
-
443  if (traf.auxiliary_offset.offsets.size() > 0) {
-
444  DCHECK_EQ(traf.auxiliary_offset.offsets.size(), 1u);
-
445  DCHECK(!traf.sample_encryption.sample_encryption_entries.empty());
-
446 
-
447  next_traf_position += traf.box_size();
-
448  // SampleEncryption 'senc' box should be the last box in 'traf'.
-
449  // |auxiliary_offset| should point to the data of SampleEncryption.
-
450  traf.auxiliary_offset.offsets[0] =
-
451  next_traf_position - traf.sample_encryption.box_size() +
-
452  traf.sample_encryption.HeaderSize() +
-
453  sizeof(uint32_t); // for sample count field in 'senc'
-
454  }
-
455  traf.runs[0].data_offset = data_offset + mdat.data_size;
-
456  mdat.data_size += fragmenters_[i]->data()->Size();
-
457  }
-
458 
-
459  // Generate segment reference.
-
460  sidx_->references.resize(sidx_->references.size() + 1);
-
461  fragmenters_[GetReferenceStreamId()]->GenerateSegmentReference(
-
462  &sidx_->references[sidx_->references.size() - 1]);
-
463  sidx_->references[sidx_->references.size() - 1].referenced_size =
-
464  data_offset + mdat.data_size;
-
465 
-
466  // Write the fragment to buffer.
-
467  moof_->Write(fragment_buffer_.get());
-
468  mdat.WriteHeader(fragment_buffer_.get());
-
469  for (const std::unique_ptr<Fragmenter>& fragmenter : fragmenters_)
-
470  fragment_buffer_->AppendBuffer(*fragmenter->data());
-
471 
-
472  // Increase sequence_number for next fragment.
-
473  ++moof_->header.sequence_number;
+
420  return status;
+
421 }
+
422 
+
423 uint32_t Segmenter::GetReferenceStreamId() {
+
424  DCHECK(sidx_);
+
425  return sidx_->reference_id - 1;
+
426 }
+
427 
+
428 Status Segmenter::FinalizeFragment(bool finalize_segment,
+
429  Fragmenter* fragmenter) {
+
430  fragmenter->FinalizeFragment();
+
431 
+
432  // Check if all tracks are ready for fragmentation.
+
433  for (const std::unique_ptr<Fragmenter>& fragmenter : fragmenters_) {
+
434  if (!fragmenter->fragment_finalized())
+
435  return Status::OK;
+
436  }
+
437 
+
438  MediaData mdat;
+
439  // Data offset relative to 'moof': moof size + mdat header size.
+
440  // The code will also update box sizes for moof_ and its child boxes.
+
441  uint64_t data_offset = moof_->ComputeSize() + mdat.HeaderSize();
+
442  // 'traf' should follow 'mfhd' moof header box.
+
443  uint64_t next_traf_position = moof_->HeaderSize() + moof_->header.box_size();
+
444  for (size_t i = 0; i < moof_->tracks.size(); ++i) {
+
445  TrackFragment& traf = moof_->tracks[i];
+
446  if (traf.auxiliary_offset.offsets.size() > 0) {
+
447  DCHECK_EQ(traf.auxiliary_offset.offsets.size(), 1u);
+
448  DCHECK(!traf.sample_encryption.sample_encryption_entries.empty());
+
449 
+
450  next_traf_position += traf.box_size();
+
451  // SampleEncryption 'senc' box should be the last box in 'traf'.
+
452  // |auxiliary_offset| should point to the data of SampleEncryption.
+
453  traf.auxiliary_offset.offsets[0] =
+
454  next_traf_position - traf.sample_encryption.box_size() +
+
455  traf.sample_encryption.HeaderSize() +
+
456  sizeof(uint32_t); // for sample count field in 'senc'
+
457  }
+
458  traf.runs[0].data_offset = data_offset + mdat.data_size;
+
459  mdat.data_size += fragmenters_[i]->data()->Size();
+
460  }
+
461 
+
462  // Generate segment reference.
+
463  sidx_->references.resize(sidx_->references.size() + 1);
+
464  fragmenters_[GetReferenceStreamId()]->GenerateSegmentReference(
+
465  &sidx_->references[sidx_->references.size() - 1]);
+
466  sidx_->references[sidx_->references.size() - 1].referenced_size =
+
467  data_offset + mdat.data_size;
+
468 
+
469  // Write the fragment to buffer.
+
470  moof_->Write(fragment_buffer_.get());
+
471  mdat.WriteHeader(fragment_buffer_.get());
+
472  for (const std::unique_ptr<Fragmenter>& fragmenter : fragmenters_)
+
473  fragment_buffer_->AppendBuffer(*fragmenter->data());
474 
-
475  if (finalize_segment)
-
476  return FinalizeSegment();
+
475  // Increase sequence_number for next fragment.
+
476  ++moof_->header.sequence_number;
477 
-
478  return Status::OK;
-
479 }
+
478  if (finalize_segment)
+
479  return FinalizeSegment();
480 
-
481 } // namespace mp4
-
482 } // namespace media
-
483 } // namespace shaka
+
481  return Status::OK;
+
482 }
+
483 
+
484 } // namespace mp4
+
485 } // namespace media
+
486 } // namespace shaka
- -
Status AddSample(scoped_refptr< MediaSample > sample)
Definition: segmenter.cc:120
+ +
Status AddSample(scoped_refptr< MediaSample > sample)
Definition: segmenter.cc:124
+
Status Initialize(std::unique_ptr< MkvWriter > writer, StreamInfo *info, ProgressListener *progress_listener, MuxerListener *muxer_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds)
Definition: segmenter.cc:51
virtual Status AddSample(scoped_refptr< MediaSample > sample)
Definition: fragmenter.cc:46
@@ -582,22 +586,21 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
static bool GenerateRandomIv(FourCC protection_scheme, std::vector< uint8_t > *iv)
Definition: aes_cryptor.cc:107
-
Status Initialize(std::unique_ptr< MkvWriter > writer, StreamInfo *info, ProgressListener *progress_listener, MuxerListener *muxer_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds)
Definition: segmenter.cc:51
EncryptingFragmenter generates MP4 fragments with sample encrypted.
virtual void OnProgress(double progress)=0
- +
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:30
-
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:264
+
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:268
diff --git a/docs/d2/da9/classshaka_1_1media_1_1BufferWriter-members.html b/docs/d2/da9/classshaka_1_1media_1_1BufferWriter-members.html index c2beab6993..297e022225 100644 --- a/docs/d2/da9/classshaka_1_1media_1_1BufferWriter-members.html +++ b/docs/d2/da9/classshaka_1_1media_1_1BufferWriter-members.html @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/dae/classshaka_1_1MockAdaptationSet-members.html b/docs/d2/dae/classshaka_1_1MockAdaptationSet-members.html index 28d315ec0a..ed7bc3d98a 100644 --- a/docs/d2/dae/classshaka_1_1MockAdaptationSet-members.html +++ b/docs/d2/dae/classshaka_1_1MockAdaptationSet-members.html @@ -126,7 +126,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 ac15e2a92a..bf32d958ae 100644 --- a/docs/d2/dae/webm__muxer_8cc_source.html +++ b/docs/d2/dae/webm__muxer_8cc_source.html @@ -141,7 +141,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
52  Status initialized = segmenter_->Initialize(
53  std::move(writer), streams()[0]->info().get(), progress_listener(),
54  muxer_listener(), encryption_key_source(), max_sd_pixels(),
-
55  clear_lead_in_seconds());
+
55  max_hd_pixels(), max_uhd1_pixels(), clear_lead_in_seconds());
56 
57  if (!initialized.ok())
58  return initialized;
@@ -223,7 +223,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/db1/structshaka_1_1media_1_1mp4_1_1SampleToGroup-members.html b/docs/d2/db1/structshaka_1_1media_1_1mp4_1_1SampleToGroup-members.html index 69e0e40513..aef002a7f3 100644 --- a/docs/d2/db1/structshaka_1_1media_1_1mp4_1_1SampleToGroup-members.html +++ b/docs/d2/db1/structshaka_1_1media_1_1mp4_1_1SampleToGroup-members.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/db6/structshaka_1_1media_1_1mp4_1_1FileType-members.html b/docs/d2/db6/structshaka_1_1media_1_1mp4_1_1FileType-members.html index a35077beb3..9308488d69 100644 --- a/docs/d2/db6/structshaka_1_1media_1_1mp4_1_1FileType-members.html +++ b/docs/d2/db6/structshaka_1_1media_1_1mp4_1_1FileType-members.html @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/db8/structshaka_1_1media_1_1mp4_1_1CueSourceIDBox-members.html b/docs/d2/db8/structshaka_1_1media_1_1mp4_1_1CueSourceIDBox-members.html index 39c24da4e1..c1ff71f36f 100644 --- a/docs/d2/db8/structshaka_1_1media_1_1mp4_1_1CueSourceIDBox-members.html +++ b/docs/d2/db8/structshaka_1_1media_1_1mp4_1_1CueSourceIDBox-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/dba/classshaka_1_1media_1_1SegmentTestBase.html b/docs/d2/dba/classshaka_1_1media_1_1SegmentTestBase.html index 5d62ef7b56..d16288f5ef 100644 --- a/docs/d2/dba/classshaka_1_1media_1_1SegmentTestBase.html +++ b/docs/d2/dba/classshaka_1_1media_1_1SegmentTestBase.html @@ -180,7 +180,7 @@ bool single_segment_ diff --git a/docs/d2/dc3/structshaka_1_1media_1_1mp4_1_1Track-members.html b/docs/d2/dc3/structshaka_1_1media_1_1mp4_1_1Track-members.html index c49d9cfe75..a0812c4d43 100644 --- a/docs/d2/dc3/structshaka_1_1media_1_1mp4_1_1Track-members.html +++ b/docs/d2/dc3/structshaka_1_1media_1_1mp4_1_1Track-members.html @@ -112,7 +112,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/dc7/structshaka_1_1MpdOptions-members.html b/docs/d2/dc7/structshaka_1_1MpdOptions-members.html index 8ec3c82ec0..a7ba128ca7 100644 --- a/docs/d2/dc7/structshaka_1_1MpdOptions-members.html +++ b/docs/d2/dc7/structshaka_1_1MpdOptions-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/dcd/program__map__table__writer_8h_source.html b/docs/d2/dcd/program__map__table__writer_8h_source.html index 61fb9d7241..b195c31f2d 100644 --- a/docs/d2/dcd/program__map__table__writer_8h_source.html +++ b/docs/d2/dcd/program__map__table__writer_8h_source.html @@ -190,7 +190,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/dcd/structshaka_1_1media_1_1mp4_1_1EditList-members.html b/docs/d2/dcd/structshaka_1_1media_1_1mp4_1_1EditList-members.html index 9fa00066c3..901f690e0e 100644 --- a/docs/d2/dcd/structshaka_1_1media_1_1mp4_1_1EditList-members.html +++ b/docs/d2/dcd/structshaka_1_1media_1_1mp4_1_1EditList-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/dd5/classshaka_1_1media_1_1webm_1_1MultiSegmentSegmenter.html b/docs/d2/dd5/classshaka_1_1media_1_1webm_1_1MultiSegmentSegmenter.html index 59f078664d..811b803389 100644 --- a/docs/d2/dd5/classshaka_1_1media_1_1webm_1_1MultiSegmentSegmenter.html +++ b/docs/d2/dd5/classshaka_1_1media_1_1webm_1_1MultiSegmentSegmenter.html @@ -120,8 +120,8 @@ Public Member Functions  Segmenter (const MuxerOptions &options)   -Status Initialize (std::unique_ptr< MkvWriter > writer, StreamInfo *info, ProgressListener *progress_listener, MuxerListener *muxer_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds) -  +Status Initialize (std::unique_ptr< MkvWriter > writer, StreamInfo *info, ProgressListener *progress_listener, MuxerListener *muxer_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds) +  Status Finalize ()   Status AddSample (scoped_refptr< MediaSample > sample) @@ -277,7 +277,7 @@ uint64_t cluster_length_in diff --git a/docs/d2/dd6/mkv__writer_8h_source.html b/docs/d2/dd6/mkv__writer_8h_source.html index 25fad0d7cf..6b409ab43a 100644 --- a/docs/d2/dd6/mkv__writer_8h_source.html +++ b/docs/d2/dd6/mkv__writer_8h_source.html @@ -152,7 +152,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/ddb/classshaka_1_1media_1_1WebMMediaParser.html b/docs/d2/ddb/classshaka_1_1media_1_1WebMMediaParser.html index 57fa7d03ba..acd5a9fe01 100644 --- a/docs/d2/ddb/classshaka_1_1media_1_1WebMMediaParser.html +++ b/docs/d2/ddb/classshaka_1_1media_1_1WebMMediaParser.html @@ -256,7 +256,7 @@ track_id, const scoped_refptr
diff --git a/docs/d2/de3/classshaka_1_1media_1_1mp2t_1_1TsSectionPmt.html b/docs/d2/de3/classshaka_1_1media_1_1mp2t_1_1TsSectionPmt.html index 43557d2533..ef8c46af93 100644 --- a/docs/d2/de3/classshaka_1_1media_1_1mp2t_1_1TsSectionPmt.html +++ b/docs/d2/de3/classshaka_1_1media_1_1mp2t_1_1TsSectionPmt.html @@ -155,7 +155,7 @@ void Reset () override diff --git a/docs/d2/de6/packager__main_8cc_source.html b/docs/d2/de6/packager__main_8cc_source.html index 2ce12c867b..1da9ce04ca 100644 --- a/docs/d2/de6/packager__main_8cc_source.html +++ b/docs/d2/de6/packager__main_8cc_source.html @@ -423,259 +423,261 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
334  if (key_source) {
335  muxer->SetKeySource(key_source,
336  FLAGS_max_sd_pixels,
-
337  FLAGS_clear_lead,
-
338  FLAGS_crypto_period_duration,
-
339  GetProtectionScheme(FLAGS_protection_scheme));
-
340  }
-
341 
-
342  std::unique_ptr<MuxerListener> muxer_listener;
-
343  DCHECK(!(FLAGS_output_media_info && mpd_notifier));
-
344  if (FLAGS_output_media_info) {
-
345  const std::string output_media_info_file_name =
-
346  stream_muxer_options.output_file_name + kMediaInfoSuffix;
-
347  std::unique_ptr<VodMediaInfoDumpMuxerListener>
-
348  vod_media_info_dump_muxer_listener(
-
349  new VodMediaInfoDumpMuxerListener(output_media_info_file_name));
-
350  muxer_listener = std::move(vod_media_info_dump_muxer_listener);
-
351  }
-
352  if (mpd_notifier) {
-
353  std::unique_ptr<MpdNotifyMuxerListener> mpd_notify_muxer_listener(
-
354  new MpdNotifyMuxerListener(mpd_notifier));
-
355  muxer_listener = std::move(mpd_notify_muxer_listener);
-
356  }
-
357 
-
358  if (hls_notifier) {
-
359  // TODO(rkuroiwa): Do some smart stuff to group the audios, e.g. detect
-
360  // languages.
-
361  std::string group_id = stream_iter->hls_group_id;
-
362  std::string name = stream_iter->hls_name;
-
363  std::string hls_playlist_name = stream_iter->hls_playlist_name;
-
364  if (group_id.empty())
-
365  group_id = "audio";
-
366  if (name.empty())
-
367  name = base::StringPrintf("stream_%d", stream_number);
-
368  if (hls_playlist_name.empty())
-
369  hls_playlist_name = base::StringPrintf("stream_%d.m3u8", stream_number);
-
370 
-
371  muxer_listener.reset(new HlsNotifyMuxerListener(hls_playlist_name, name,
-
372  group_id, hls_notifier));
-
373  }
-
374 
-
375  if (muxer_listener)
-
376  muxer->SetMuxerListener(std::move(muxer_listener));
-
377 
-
378  if (!AddStreamToMuxer(remux_jobs->back()->demuxer()->streams(),
-
379  stream_iter->stream_selector,
-
380  stream_iter->language,
-
381  muxer.get())) {
-
382  return false;
-
383  }
-
384  remux_jobs->back()->AddMuxer(std::move(muxer));
-
385  }
-
386 
-
387  return true;
-
388 }
-
389 
-
390 Status RunRemuxJobs(const std::vector<std::unique_ptr<RemuxJob>>& remux_jobs) {
-
391  // Start the job threads.
-
392  for (const std::unique_ptr<RemuxJob>& job : remux_jobs)
-
393  job->Start();
-
394 
-
395  // Wait for all jobs to complete or an error occurs.
-
396  Status status;
-
397  bool all_joined;
-
398  do {
-
399  all_joined = true;
-
400  for (const std::unique_ptr<RemuxJob>& job : remux_jobs) {
-
401  if (job->HasBeenJoined()) {
-
402  status = job->status();
-
403  if (!status.ok())
-
404  break;
-
405  } else {
-
406  all_joined = false;
-
407  job->Join();
-
408  }
-
409  }
-
410  } while (!all_joined && status.ok());
-
411 
-
412  return status;
-
413 }
-
414 
-
415 bool RunPackager(const StreamDescriptorList& stream_descriptors) {
-
416  const FourCC protection_scheme = GetProtectionScheme(FLAGS_protection_scheme);
-
417  if (protection_scheme == FOURCC_NULL)
-
418  return false;
-
419 
-
420  if (!AssignFlagsFromProfile())
-
421  return false;
-
422 
-
423  if (FLAGS_output_media_info && !FLAGS_mpd_output.empty()) {
-
424  NOTIMPLEMENTED() << "ERROR: --output_media_info and --mpd_output do not "
-
425  "work together.";
-
426  return false;
-
427  }
-
428  if (FLAGS_output_media_info && !FLAGS_single_segment) {
-
429  // TODO(rkuroiwa, kqyang): Support partial media info dump for live.
-
430  NOTIMPLEMENTED() << "ERROR: --output_media_info is only supported if "
-
431  "--single_segment is true.";
-
432  return false;
-
433  }
-
434 
-
435  // Since there isn't a muxer listener that can output both MPD and HLS,
-
436  // disallow specifying both MPD and HLS flags.
-
437  if (!FLAGS_mpd_output.empty() && !FLAGS_hls_master_playlist_output.empty()) {
-
438  LOG(ERROR) << "Cannot output both MPD and HLS.";
-
439  return false;
-
440  }
-
441 
-
442  // Get basic muxer options.
-
443  MuxerOptions muxer_options;
-
444  if (!GetMuxerOptions(&muxer_options))
-
445  return false;
-
446 
-
447  MpdOptions mpd_options;
-
448  if (!GetMpdOptions(&mpd_options))
-
449  return false;
-
450 
-
451  // Create encryption key source if needed.
-
452  std::unique_ptr<KeySource> encryption_key_source;
-
453  if (FLAGS_enable_widevine_encryption || FLAGS_enable_fixed_key_encryption) {
-
454  encryption_key_source = CreateEncryptionKeySource();
-
455  if (!encryption_key_source)
-
456  return false;
-
457  }
-
458 
-
459  std::unique_ptr<MpdNotifier> mpd_notifier;
-
460  if (!FLAGS_mpd_output.empty()) {
-
461  DashProfile profile =
-
462  FLAGS_single_segment ? kOnDemandProfile : kLiveProfile;
-
463  std::vector<std::string> base_urls = base::SplitString(
-
464  FLAGS_base_urls, ",", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
-
465  if (FLAGS_generate_dash_if_iop_compliant_mpd) {
-
466  mpd_notifier.reset(new DashIopMpdNotifier(profile, mpd_options, base_urls,
-
467  FLAGS_mpd_output));
-
468  } else {
-
469  mpd_notifier.reset(new SimpleMpdNotifier(profile, mpd_options, base_urls,
-
470  FLAGS_mpd_output));
-
471  }
-
472  if (!mpd_notifier->Init()) {
-
473  LOG(ERROR) << "MpdNotifier failed to initialize.";
-
474  return false;
-
475  }
-
476  }
-
477 
-
478  std::unique_ptr<hls::HlsNotifier> hls_notifier;
-
479  if (!FLAGS_hls_master_playlist_output.empty()) {
-
480  base::FilePath master_playlist_path(
-
481  base::FilePath::FromUTF8Unsafe(FLAGS_hls_master_playlist_output));
-
482  base::FilePath master_playlist_name = master_playlist_path.BaseName();
-
483 
-
484  hls_notifier.reset(new hls::SimpleHlsNotifier(
-
485  hls::HlsNotifier::HlsProfile::kOnDemandProfile, FLAGS_hls_base_url,
-
486  master_playlist_path.DirName().AsEndingWithSeparator().AsUTF8Unsafe(),
-
487  master_playlist_name.AsUTF8Unsafe()));
-
488  }
-
489 
-
490  std::vector<std::unique_ptr<RemuxJob>> remux_jobs;
-
491  FakeClock fake_clock;
-
492  if (!CreateRemuxJobs(stream_descriptors, muxer_options, &fake_clock,
-
493  encryption_key_source.get(), mpd_notifier.get(),
-
494  hls_notifier.get(), &remux_jobs)) {
-
495  return false;
-
496  }
-
497 
-
498  Status status = RunRemuxJobs(remux_jobs);
-
499  if (!status.ok()) {
-
500  LOG(ERROR) << "Packaging Error: " << status.ToString();
-
501  return false;
-
502  }
-
503 
-
504  if (hls_notifier) {
-
505  if (!hls_notifier->Flush())
-
506  return false;
-
507  }
-
508  if (mpd_notifier) {
-
509  if (!mpd_notifier->Flush())
-
510  return false;
-
511  }
-
512 
-
513  printf("Packaging completed successfully.\n");
-
514  return true;
-
515 }
-
516 
-
517 int PackagerMain(int argc, char** argv) {
-
518  base::AtExitManager exit;
-
519  // Needed to enable VLOG/DVLOG through --vmodule or --v.
-
520  base::CommandLine::Init(argc, argv);
-
521 
-
522  // Set up logging.
-
523  logging::LoggingSettings log_settings;
-
524  log_settings.logging_dest = logging::LOG_TO_SYSTEM_DEBUG_LOG;
-
525  CHECK(logging::InitLogging(log_settings));
-
526 
-
527  google::SetVersionString(GetPackagerVersion());
-
528  google::SetUsageMessage(base::StringPrintf(kUsage, argv[0]));
-
529  google::ParseCommandLineFlags(&argc, &argv, true);
-
530  if (argc < 2) {
-
531  google::ShowUsageWithFlags("Usage");
-
532  return kSuccess;
-
533  }
-
534 
- -
536  return kArgumentValidationFailed;
-
537 
-
538  if (FLAGS_override_version)
-
539  SetPackagerVersionForTesting(FLAGS_test_version);
-
540 
-
541  LibcryptoThreading libcrypto_threading;
-
542  // TODO(tinskip): Make InsertStreamDescriptor a member of
-
543  // StreamDescriptorList.
-
544  StreamDescriptorList stream_descriptors;
-
545  for (int i = 1; i < argc; ++i) {
-
546  if (!InsertStreamDescriptor(argv[i], &stream_descriptors))
-
547  return kArgumentValidationFailed;
-
548  }
-
549  return RunPackager(stream_descriptors) ? kSuccess : kPackagingFailed;
-
550 }
-
551 
-
552 } // namespace media
-
553 } // namespace shaka
-
554 
-
555 #if defined(OS_WIN)
-
556 // Windows wmain, which converts wide character arguments to UTF-8.
-
557 int wmain(int argc, wchar_t* argv[], wchar_t* envp[]) {
-
558  std::unique_ptr<char* [], std::function<void(char**)>> utf8_argv(
-
559  new char*[argc], [argc](char** utf8_args) {
-
560  // TODO(tinskip): This leaks, but if this code is enabled, it crashes.
-
561  // Figure out why. I suspect gflags does something funny with the
-
562  // argument array.
-
563  // for (int idx = 0; idx < argc; ++idx)
-
564  // delete[] utf8_args[idx];
-
565  delete[] utf8_args;
-
566  });
-
567  std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;
-
568  for (int idx = 0; idx < argc; ++idx) {
-
569  std::string utf8_arg(converter.to_bytes(argv[idx]));
-
570  utf8_arg += '\0';
-
571  utf8_argv[idx] = new char[utf8_arg.size()];
-
572  memcpy(utf8_argv[idx], &utf8_arg[0], utf8_arg.size());
-
573  }
-
574  return shaka::media::PackagerMain(argc, utf8_argv.get());
-
575 }
-
576 #else
-
577 int main(int argc, char** argv) {
-
578  return shaka::media::PackagerMain(argc, argv);
-
579 }
-
580 #endif // defined(OS_WIN)
+
337  FLAGS_max_hd_pixels,
+
338  FLAGS_max_uhd1_pixels,
+
339  FLAGS_clear_lead,
+
340  FLAGS_crypto_period_duration,
+
341  GetProtectionScheme(FLAGS_protection_scheme));
+
342  }
+
343 
+
344  std::unique_ptr<MuxerListener> muxer_listener;
+
345  DCHECK(!(FLAGS_output_media_info && mpd_notifier));
+
346  if (FLAGS_output_media_info) {
+
347  const std::string output_media_info_file_name =
+
348  stream_muxer_options.output_file_name + kMediaInfoSuffix;
+
349  std::unique_ptr<VodMediaInfoDumpMuxerListener>
+
350  vod_media_info_dump_muxer_listener(
+
351  new VodMediaInfoDumpMuxerListener(output_media_info_file_name));
+
352  muxer_listener = std::move(vod_media_info_dump_muxer_listener);
+
353  }
+
354  if (mpd_notifier) {
+
355  std::unique_ptr<MpdNotifyMuxerListener> mpd_notify_muxer_listener(
+
356  new MpdNotifyMuxerListener(mpd_notifier));
+
357  muxer_listener = std::move(mpd_notify_muxer_listener);
+
358  }
+
359 
+
360  if (hls_notifier) {
+
361  // TODO(rkuroiwa): Do some smart stuff to group the audios, e.g. detect
+
362  // languages.
+
363  std::string group_id = stream_iter->hls_group_id;
+
364  std::string name = stream_iter->hls_name;
+
365  std::string hls_playlist_name = stream_iter->hls_playlist_name;
+
366  if (group_id.empty())
+
367  group_id = "audio";
+
368  if (name.empty())
+
369  name = base::StringPrintf("stream_%d", stream_number);
+
370  if (hls_playlist_name.empty())
+
371  hls_playlist_name = base::StringPrintf("stream_%d.m3u8", stream_number);
+
372 
+
373  muxer_listener.reset(new HlsNotifyMuxerListener(hls_playlist_name, name,
+
374  group_id, hls_notifier));
+
375  }
+
376 
+
377  if (muxer_listener)
+
378  muxer->SetMuxerListener(std::move(muxer_listener));
+
379 
+
380  if (!AddStreamToMuxer(remux_jobs->back()->demuxer()->streams(),
+
381  stream_iter->stream_selector,
+
382  stream_iter->language,
+
383  muxer.get())) {
+
384  return false;
+
385  }
+
386  remux_jobs->back()->AddMuxer(std::move(muxer));
+
387  }
+
388 
+
389  return true;
+
390 }
+
391 
+
392 Status RunRemuxJobs(const std::vector<std::unique_ptr<RemuxJob>>& remux_jobs) {
+
393  // Start the job threads.
+
394  for (const std::unique_ptr<RemuxJob>& job : remux_jobs)
+
395  job->Start();
+
396 
+
397  // Wait for all jobs to complete or an error occurs.
+
398  Status status;
+
399  bool all_joined;
+
400  do {
+
401  all_joined = true;
+
402  for (const std::unique_ptr<RemuxJob>& job : remux_jobs) {
+
403  if (job->HasBeenJoined()) {
+
404  status = job->status();
+
405  if (!status.ok())
+
406  break;
+
407  } else {
+
408  all_joined = false;
+
409  job->Join();
+
410  }
+
411  }
+
412  } while (!all_joined && status.ok());
+
413 
+
414  return status;
+
415 }
+
416 
+
417 bool RunPackager(const StreamDescriptorList& stream_descriptors) {
+
418  const FourCC protection_scheme = GetProtectionScheme(FLAGS_protection_scheme);
+
419  if (protection_scheme == FOURCC_NULL)
+
420  return false;
+
421 
+
422  if (!AssignFlagsFromProfile())
+
423  return false;
+
424 
+
425  if (FLAGS_output_media_info && !FLAGS_mpd_output.empty()) {
+
426  NOTIMPLEMENTED() << "ERROR: --output_media_info and --mpd_output do not "
+
427  "work together.";
+
428  return false;
+
429  }
+
430  if (FLAGS_output_media_info && !FLAGS_single_segment) {
+
431  // TODO(rkuroiwa, kqyang): Support partial media info dump for live.
+
432  NOTIMPLEMENTED() << "ERROR: --output_media_info is only supported if "
+
433  "--single_segment is true.";
+
434  return false;
+
435  }
+
436 
+
437  // Since there isn't a muxer listener that can output both MPD and HLS,
+
438  // disallow specifying both MPD and HLS flags.
+
439  if (!FLAGS_mpd_output.empty() && !FLAGS_hls_master_playlist_output.empty()) {
+
440  LOG(ERROR) << "Cannot output both MPD and HLS.";
+
441  return false;
+
442  }
+
443 
+
444  // Get basic muxer options.
+
445  MuxerOptions muxer_options;
+
446  if (!GetMuxerOptions(&muxer_options))
+
447  return false;
+
448 
+
449  MpdOptions mpd_options;
+
450  if (!GetMpdOptions(&mpd_options))
+
451  return false;
+
452 
+
453  // Create encryption key source if needed.
+
454  std::unique_ptr<KeySource> encryption_key_source;
+
455  if (FLAGS_enable_widevine_encryption || FLAGS_enable_fixed_key_encryption) {
+
456  encryption_key_source = CreateEncryptionKeySource();
+
457  if (!encryption_key_source)
+
458  return false;
+
459  }
+
460 
+
461  std::unique_ptr<MpdNotifier> mpd_notifier;
+
462  if (!FLAGS_mpd_output.empty()) {
+
463  DashProfile profile =
+
464  FLAGS_single_segment ? kOnDemandProfile : kLiveProfile;
+
465  std::vector<std::string> base_urls = base::SplitString(
+
466  FLAGS_base_urls, ",", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
+
467  if (FLAGS_generate_dash_if_iop_compliant_mpd) {
+
468  mpd_notifier.reset(new DashIopMpdNotifier(profile, mpd_options, base_urls,
+
469  FLAGS_mpd_output));
+
470  } else {
+
471  mpd_notifier.reset(new SimpleMpdNotifier(profile, mpd_options, base_urls,
+
472  FLAGS_mpd_output));
+
473  }
+
474  if (!mpd_notifier->Init()) {
+
475  LOG(ERROR) << "MpdNotifier failed to initialize.";
+
476  return false;
+
477  }
+
478  }
+
479 
+
480  std::unique_ptr<hls::HlsNotifier> hls_notifier;
+
481  if (!FLAGS_hls_master_playlist_output.empty()) {
+
482  base::FilePath master_playlist_path(
+
483  base::FilePath::FromUTF8Unsafe(FLAGS_hls_master_playlist_output));
+
484  base::FilePath master_playlist_name = master_playlist_path.BaseName();
+
485 
+
486  hls_notifier.reset(new hls::SimpleHlsNotifier(
+
487  hls::HlsNotifier::HlsProfile::kOnDemandProfile, FLAGS_hls_base_url,
+
488  master_playlist_path.DirName().AsEndingWithSeparator().AsUTF8Unsafe(),
+
489  master_playlist_name.AsUTF8Unsafe()));
+
490  }
+
491 
+
492  std::vector<std::unique_ptr<RemuxJob>> remux_jobs;
+
493  FakeClock fake_clock;
+
494  if (!CreateRemuxJobs(stream_descriptors, muxer_options, &fake_clock,
+
495  encryption_key_source.get(), mpd_notifier.get(),
+
496  hls_notifier.get(), &remux_jobs)) {
+
497  return false;
+
498  }
+
499 
+
500  Status status = RunRemuxJobs(remux_jobs);
+
501  if (!status.ok()) {
+
502  LOG(ERROR) << "Packaging Error: " << status.ToString();
+
503  return false;
+
504  }
+
505 
+
506  if (hls_notifier) {
+
507  if (!hls_notifier->Flush())
+
508  return false;
+
509  }
+
510  if (mpd_notifier) {
+
511  if (!mpd_notifier->Flush())
+
512  return false;
+
513  }
+
514 
+
515  printf("Packaging completed successfully.\n");
+
516  return true;
+
517 }
+
518 
+
519 int PackagerMain(int argc, char** argv) {
+
520  base::AtExitManager exit;
+
521  // Needed to enable VLOG/DVLOG through --vmodule or --v.
+
522  base::CommandLine::Init(argc, argv);
+
523 
+
524  // Set up logging.
+
525  logging::LoggingSettings log_settings;
+
526  log_settings.logging_dest = logging::LOG_TO_SYSTEM_DEBUG_LOG;
+
527  CHECK(logging::InitLogging(log_settings));
+
528 
+
529  google::SetVersionString(GetPackagerVersion());
+
530  google::SetUsageMessage(base::StringPrintf(kUsage, argv[0]));
+
531  google::ParseCommandLineFlags(&argc, &argv, true);
+
532  if (argc < 2) {
+
533  google::ShowUsageWithFlags("Usage");
+
534  return kSuccess;
+
535  }
+
536 
+ +
538  return kArgumentValidationFailed;
+
539 
+
540  if (FLAGS_override_version)
+
541  SetPackagerVersionForTesting(FLAGS_test_version);
+
542 
+
543  LibcryptoThreading libcrypto_threading;
+
544  // TODO(tinskip): Make InsertStreamDescriptor a member of
+
545  // StreamDescriptorList.
+
546  StreamDescriptorList stream_descriptors;
+
547  for (int i = 1; i < argc; ++i) {
+
548  if (!InsertStreamDescriptor(argv[i], &stream_descriptors))
+
549  return kArgumentValidationFailed;
+
550  }
+
551  return RunPackager(stream_descriptors) ? kSuccess : kPackagingFailed;
+
552 }
+
553 
+
554 } // namespace media
+
555 } // namespace shaka
+
556 
+
557 #if defined(OS_WIN)
+
558 // Windows wmain, which converts wide character arguments to UTF-8.
+
559 int wmain(int argc, wchar_t* argv[], wchar_t* envp[]) {
+
560  std::unique_ptr<char* [], std::function<void(char**)>> utf8_argv(
+
561  new char*[argc], [argc](char** utf8_args) {
+
562  // TODO(tinskip): This leaks, but if this code is enabled, it crashes.
+
563  // Figure out why. I suspect gflags does something funny with the
+
564  // argument array.
+
565  // for (int idx = 0; idx < argc; ++idx)
+
566  // delete[] utf8_args[idx];
+
567  delete[] utf8_args;
+
568  });
+
569  std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;
+
570  for (int idx = 0; idx < argc; ++idx) {
+
571  std::string utf8_arg(converter.to_bytes(argv[idx]));
+
572  utf8_arg += '\0';
+
573  utf8_argv[idx] = new char[utf8_arg.size()];
+
574  memcpy(utf8_argv[idx], &utf8_arg[0], utf8_arg.size());
+
575  }
+
576  return shaka::media::PackagerMain(argc, utf8_argv.get());
+
577 }
+
578 #else
+
579 int main(int argc, char** argv) {
+
580  return shaka::media::PackagerMain(argc, argv);
+
581 }
+
582 #endif // defined(OS_WIN)
static bool Copy(const char *from_file_name, const char *to_file_name)
Definition: file.cc:203
-
bool ValidateWidevineCryptoFlags()
+
bool ValidateWidevineCryptoFlags()
static bool WriteMediaInfoToFile(const MediaInfo &media_info, const std::string &output_file_path)
static bool ReadFileToString(const char *file_name, std::string *contents)
Definition: file.cc:185
bool ValidateFixedCryptoFlags()
diff --git a/docs/d2/de7/classshaka_1_1media_1_1TextStreamInfo-members.html b/docs/d2/de7/classshaka_1_1media_1_1TextStreamInfo-members.html index 04fb308851..025bcf4618 100644 --- a/docs/d2/de7/classshaka_1_1media_1_1TextStreamInfo-members.html +++ b/docs/d2/de7/classshaka_1_1media_1_1TextStreamInfo-members.html @@ -118,7 +118,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/de7/structshaka_1_1media_1_1mp4_1_1Edit-members.html b/docs/d2/de7/structshaka_1_1media_1_1mp4_1_1Edit-members.html index b27ef93d3b..fe8e3c0906 100644 --- a/docs/d2/de7/structshaka_1_1media_1_1mp4_1_1Edit-members.html +++ b/docs/d2/de7/structshaka_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/de9/mock__muxer__listener_8h_source.html b/docs/d2/de9/mock__muxer__listener_8h_source.html index 4069feacfa..529b84c592 100644 --- a/docs/d2/de9/mock__muxer__listener_8h_source.html +++ b/docs/d2/de9/mock__muxer__listener_8h_source.html @@ -163,7 +163,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/deb/es__parser_8h_source.html b/docs/d2/deb/es__parser_8h_source.html index e9df68215a..252ed5dd8c 100644 --- a/docs/d2/deb/es__parser_8h_source.html +++ b/docs/d2/deb/es__parser_8h_source.html @@ -145,7 +145,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/dee/classshaka_1_1media_1_1mp2t_1_1TsSectionPes-members.html b/docs/d2/dee/classshaka_1_1media_1_1mp2t_1_1TsSectionPes-members.html index 5014ce55dc..ca7469d61e 100644 --- a/docs/d2/dee/classshaka_1_1media_1_1mp2t_1_1TsSectionPes-members.html +++ b/docs/d2/dee/classshaka_1_1media_1_1mp2t_1_1TsSectionPes-members.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/dee/pes__packet__generator_8cc_source.html b/docs/d2/dee/pes__packet__generator_8cc_source.html index 2684979b0c..3b63efd75d 100644 --- a/docs/d2/dee/pes__packet__generator_8cc_source.html +++ b/docs/d2/dee/pes__packet__generator_8cc_source.html @@ -328,7 +328,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/df8/classshaka_1_1media_1_1SegmentTestBase_1_1ClusterParser.html b/docs/d2/df8/classshaka_1_1media_1_1SegmentTestBase_1_1ClusterParser.html index dd36079fb3..491d42f990 100644 --- a/docs/d2/df8/classshaka_1_1media_1_1SegmentTestBase_1_1ClusterParser.html +++ b/docs/d2/df8/classshaka_1_1media_1_1SegmentTestBase_1_1ClusterParser.html @@ -120,7 +120,7 @@ int cluster_count () c

Detailed Description

-

Definition at line 80 of file segmenter_test_base.h.

+

Definition at line 81 of file segmenter_test_base.h.


The documentation for this class was generated from the following files:
  • media/formats/webm/segmenter_test_base.h
  • media/formats/webm/segmenter_test_base.cc
  • @@ -128,7 +128,7 @@ int cluster_count () c diff --git a/docs/d2/dfc/classshaka_1_1media_1_1MkvWriter-members.html b/docs/d2/dfc/classshaka_1_1media_1_1MkvWriter-members.html index 295096ad90..ea1c323bb6 100644 --- a/docs/d2/dfc/classshaka_1_1media_1_1MkvWriter-members.html +++ b/docs/d2/dfc/classshaka_1_1media_1_1MkvWriter-members.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/dfd/adts__header_8h_source.html b/docs/d2/dfd/adts__header_8h_source.html index 51a46e3c3c..4a8388c838 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/d3/d07/classshaka_1_1media_1_1mp4_1_1BoxReader-members.html b/docs/d3/d07/classshaka_1_1media_1_1mp4_1_1BoxReader-members.html index b97dbe9c8a..81c141e438 100644 --- a/docs/d3/d07/classshaka_1_1media_1_1mp4_1_1BoxReader-members.html +++ b/docs/d3/d07/classshaka_1_1media_1_1mp4_1_1BoxReader-members.html @@ -127,7 +127,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d09/classshaka_1_1media_1_1mp4_1_1SyncSampleIterator-members.html b/docs/d3/d09/classshaka_1_1media_1_1mp4_1_1SyncSampleIterator-members.html index 8cd380649a..db74784ab4 100644 --- a/docs/d3/d09/classshaka_1_1media_1_1mp4_1_1SyncSampleIterator-members.html +++ b/docs/d3/d09/classshaka_1_1media_1_1mp4_1_1SyncSampleIterator-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d0a/classshaka_1_1media_1_1MediaParser.html b/docs/d3/d0a/classshaka_1_1media_1_1MediaParser.html index 32092ffad1..9d0281228b 100644 --- a/docs/d3/d0a/classshaka_1_1media_1_1MediaParser.html +++ b/docs/d3/d0a/classshaka_1_1media_1_1MediaParser.html @@ -298,7 +298,7 @@ Public Member Functions diff --git a/docs/d3/d0c/classshaka_1_1media_1_1mp2t_1_1AdtsHeader.html b/docs/d3/d0c/classshaka_1_1media_1_1mp2t_1_1AdtsHeader.html index 4a5989549e..e777997435 100644 --- a/docs/d3/d0c/classshaka_1_1media_1_1mp2t_1_1AdtsHeader.html +++ b/docs/d3/d0c/classshaka_1_1media_1_1mp2t_1_1AdtsHeader.html @@ -336,7 +336,7 @@ Static Public Member Functions diff --git a/docs/d3/d12/classshaka_1_1media_1_1LibcryptoThreading-members.html b/docs/d3/d12/classshaka_1_1media_1_1LibcryptoThreading-members.html index be72b48c78..35eb404b93 100644 --- a/docs/d3/d12/classshaka_1_1media_1_1LibcryptoThreading-members.html +++ b/docs/d3/d12/classshaka_1_1media_1_1LibcryptoThreading-members.html @@ -98,7 +98,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d15/udp__file__win_8cc_source.html b/docs/d3/d15/udp__file__win_8cc_source.html index 212b3cad01..8a7f84e11c 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/d18/classshaka_1_1media_1_1mp2t_1_1TsSectionPat-members.html b/docs/d3/d18/classshaka_1_1media_1_1mp2t_1_1TsSectionPat-members.html index 080db1d4b6..74af146094 100644 --- a/docs/d3/d18/classshaka_1_1media_1_1mp2t_1_1TsSectionPat-members.html +++ b/docs/d3/d18/classshaka_1_1media_1_1mp2t_1_1TsSectionPat-members.html @@ -113,7 +113,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 fb3e852a4f..910afb5ca5 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/d35/video__slice__header__parser_8cc_source.html b/docs/d3/d35/video__slice__header__parser_8cc_source.html index 956b09c0f4..a389f7f812 100644 --- a/docs/d3/d35/video__slice__header__parser_8cc_source.html +++ b/docs/d3/d35/video__slice__header__parser_8cc_source.html @@ -200,7 +200,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d47/structshaka_1_1media_1_1mp4_1_1PrivFrame.html b/docs/d3/d47/structshaka_1_1media_1_1mp4_1_1PrivFrame.html index 7e5d03a9c4..3751550eb5 100644 --- a/docs/d3/d47/structshaka_1_1media_1_1mp4_1_1PrivFrame.html +++ b/docs/d3/d47/structshaka_1_1media_1_1mp4_1_1PrivFrame.html @@ -129,7 +129,7 @@ std::string value diff --git a/docs/d3/d51/classshaka_1_1media_1_1LibcryptoThreading.html b/docs/d3/d51/classshaka_1_1media_1_1LibcryptoThreading.html index 2ba892172f..2a148065b9 100644 --- a/docs/d3/d51/classshaka_1_1media_1_1LibcryptoThreading.html +++ b/docs/d3/d51/classshaka_1_1media_1_1LibcryptoThreading.html @@ -108,7 +108,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 5f14891f6f..93e1307b3a 100644 --- a/docs/d3/d56/decrypt__config_8cc_source.html +++ b/docs/d3/d56/decrypt__config_8cc_source.html @@ -127,7 +127,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d61/classshaka_1_1media_1_1File.html b/docs/d3/d61/classshaka_1_1media_1_1File.html index bc6227f20a..87df868dec 100644 --- a/docs/d3/d61/classshaka_1_1media_1_1File.html +++ b/docs/d3/d61/classshaka_1_1media_1_1File.html @@ -811,7 +811,7 @@ class ThreadedIoFile diff --git a/docs/d3/d62/continuity__counter_8h_source.html b/docs/d3/d62/continuity__counter_8h_source.html index 2478c2b0d6..03c275258b 100644 --- a/docs/d3/d62/continuity__counter_8h_source.html +++ b/docs/d3/d62/continuity__counter_8h_source.html @@ -124,7 +124,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d62/rcheck_8h_source.html b/docs/d3/d62/rcheck_8h_source.html index f4db54949b..c90edb2aac 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/d66/structshaka_1_1media_1_1mp4_1_1DataEntryUrl-members.html b/docs/d3/d66/structshaka_1_1media_1_1mp4_1_1DataEntryUrl-members.html index b10f250246..22163f45b5 100644 --- a/docs/d3/d66/structshaka_1_1media_1_1mp4_1_1DataEntryUrl-members.html +++ b/docs/d3/d66/structshaka_1_1media_1_1mp4_1_1DataEntryUrl-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d67/classshaka_1_1media_1_1WebMVideoClient.html b/docs/d3/d67/classshaka_1_1media_1_1WebMVideoClient.html index d652e371d8..87583779ab 100644 --- a/docs/d3/d67/classshaka_1_1media_1_1WebMVideoClient.html +++ b/docs/d3/d67/classshaka_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/d3/d6b/fixed__key__source_8cc_source.html b/docs/d3/d6b/fixed__key__source_8cc_source.html index 9f7e74e807..8ee3dcc11d 100644 --- a/docs/d3/d6b/fixed__key__source_8cc_source.html +++ b/docs/d3/d6b/fixed__key__source_8cc_source.html @@ -247,7 +247,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d71/classshaka_1_1media_1_1mp2t_1_1TsMuxer.html b/docs/d3/d71/classshaka_1_1media_1_1mp2t_1_1TsMuxer.html index 340c03c881..f4c3097b8a 100644 --- a/docs/d3/d71/classshaka_1_1media_1_1mp2t_1_1TsMuxer.html +++ b/docs/d3/d71/classshaka_1_1media_1_1mp2t_1_1TsMuxer.html @@ -114,8 +114,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, FourCC protection_scheme) -  +void SetKeySource (KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme) +  void AddStream (MediaStream *stream)  Add video/audio stream.
    @@ -148,6 +148,12 @@ const uint32_t max_sd_pixels () const   + +uint32_t max_hd_pixels () const +  + +uint32_t max_uhd1_pixels () const +  double clear_lead_in_seconds () const   @@ -178,7 +184,7 @@ FourCC protection_scheme diff --git a/docs/d3/d72/fixed__key__source_8h_source.html b/docs/d3/d72/fixed__key__source_8h_source.html index f52634da41..36430cbfa2 100644 --- a/docs/d3/d72/fixed__key__source_8h_source.html +++ b/docs/d3/d72/fixed__key__source_8h_source.html @@ -160,7 +160,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d73/classshaka_1_1media_1_1webm_1_1WebMMuxer.html b/docs/d3/d73/classshaka_1_1media_1_1webm_1_1WebMMuxer.html index 9659b3308d..3ee445ecd1 100644 --- a/docs/d3/d73/classshaka_1_1media_1_1webm_1_1WebMMuxer.html +++ b/docs/d3/d73/classshaka_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, FourCC protection_scheme) -  +void SetKeySource (KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme) +  void AddStream (MediaStream *stream)  Add video/audio stream.
    @@ -152,6 +152,12 @@ const uint32_t max_sd_pixels () const   + +uint32_t max_hd_pixels () const +  + +uint32_t max_uhd1_pixels () const +  double clear_lead_in_seconds () const   @@ -182,7 +188,7 @@ FourCC protection_scheme diff --git a/docs/d3/d75/classshaka_1_1media_1_1AesEncryptor.html b/docs/d3/d75/classshaka_1_1media_1_1AesEncryptor.html index a425a5b8f7..9e29e3bce6 100644 --- a/docs/d3/d75/classshaka_1_1media_1_1AesEncryptor.html +++ b/docs/d3/d75/classshaka_1_1media_1_1AesEncryptor.html @@ -236,7 +236,7 @@ AES_KEY * mutable_aes_key< diff --git a/docs/d3/d75/classshaka_1_1media_1_1mp4_1_1ChunkInfoIterator-members.html b/docs/d3/d75/classshaka_1_1media_1_1mp4_1_1ChunkInfoIterator-members.html index 5ba6ad1cb5..0d126d001c 100644 --- a/docs/d3/d75/classshaka_1_1media_1_1mp4_1_1ChunkInfoIterator-members.html +++ b/docs/d3/d75/classshaka_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/d76/muxer__flags_8h_source.html b/docs/d3/d76/muxer__flags_8h_source.html index 7391f17a74..12b772fc08 100644 --- a/docs/d3/d76/muxer__flags_8h_source.html +++ b/docs/d3/d76/muxer__flags_8h_source.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d77/structshaka_1_1media_1_1mp4_1_1TextSampleEntry-members.html b/docs/d3/d77/structshaka_1_1media_1_1mp4_1_1TextSampleEntry-members.html index c79ebd8337..70553d7469 100644 --- a/docs/d3/d77/structshaka_1_1media_1_1mp4_1_1TextSampleEntry-members.html +++ b/docs/d3/d77/structshaka_1_1media_1_1mp4_1_1TextSampleEntry-members.html @@ -112,7 +112,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d7b/classshaka_1_1media_1_1RsaPublicKey-members.html b/docs/d3/d7b/classshaka_1_1media_1_1RsaPublicKey-members.html index a3a6f24b16..fc6a46c9ab 100644 --- a/docs/d3/d7b/classshaka_1_1media_1_1RsaPublicKey-members.html +++ b/docs/d3/d7b/classshaka_1_1media_1_1RsaPublicKey-members.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d7c/classshaka_1_1media_1_1WebMAudioClient.html b/docs/d3/d7c/classshaka_1_1media_1_1WebMAudioClient.html index 79d0ff7eee..950e9948de 100644 --- a/docs/d3/d7c/classshaka_1_1media_1_1WebMAudioClient.html +++ b/docs/d3/d7c/classshaka_1_1media_1_1WebMAudioClient.html @@ -223,7 +223,7 @@ An empty scoped_refptr if there was unexpected values in the provided parameters diff --git a/docs/d3/d80/muxer__util_8h_source.html b/docs/d3/d80/muxer__util_8h_source.html index 1cfdc67877..a3cc73ddd8 100644 --- a/docs/d3/d80/muxer__util_8h_source.html +++ b/docs/d3/d80/muxer__util_8h_source.html @@ -117,17 +117,19 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
    39  uint32_t segment_index,
    40  uint32_t bandwidth);
    41 
    -
    47 KeySource::TrackType GetTrackTypeForEncryption(const StreamInfo& stream_info,
    -
    48  uint32_t max_sd_pixels);
    -
    49 
    -
    50 } // namespace media
    -
    51 } // namespace shaka
    -
    52 
    -
    53 #endif // MEDIA_BASE_MUXER_UTIL_H_
    +
    49 KeySource::TrackType GetTrackTypeForEncryption(const StreamInfo& stream_info,
    +
    50  uint32_t max_sd_pixels,
    +
    51  uint32_t max_hd_pixels,
    +
    52  uint32_t max_uhd1_pixels);
    +
    53 
    +
    54 } // namespace media
    +
    55 } // namespace shaka
    +
    56 
    +
    57 #endif // MEDIA_BASE_MUXER_UTIL_H_
    diff --git a/docs/d3/d87/structshaka_1_1media_1_1mp4_1_1SampleToChunk.html b/docs/d3/d87/structshaka_1_1media_1_1mp4_1_1SampleToChunk.html index 0adab4a4f0..b636bd3b7f 100644 --- a/docs/d3/d87/structshaka_1_1media_1_1mp4_1_1SampleToChunk.html +++ b/docs/d3/d87/structshaka_1_1media_1_1mp4_1_1SampleToChunk.html @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/d3/d8b/structshaka_1_1media_1_1FileCloser.html b/docs/d3/d8b/structshaka_1_1media_1_1FileCloser.html index 863e231e55..34458dcb9b 100644 --- a/docs/d3/d8b/structshaka_1_1media_1_1FileCloser.html +++ b/docs/d3/d8b/structshaka_1_1media_1_1FileCloser.html @@ -112,7 +112,7 @@ void operator() ( diff --git a/docs/d3/d8d/webm__audio__client_8h_source.html b/docs/d3/d8d/webm__audio__client_8h_source.html index a7654b39e3..2fe68e58e0 100644 --- a/docs/d3/d8d/webm__audio__client_8h_source.html +++ b/docs/d3/d8d/webm__audio__client_8h_source.html @@ -144,7 +144,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 377f7073fa..986699b636 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/d91/classshaka_1_1media_1_1H264Parser.html b/docs/d3/d91/classshaka_1_1media_1_1H264Parser.html index 46dc2bc387..3637893427 100644 --- a/docs/d3/d91/classshaka_1_1media_1_1H264Parser.html +++ b/docs/d3/d91/classshaka_1_1media_1_1H264Parser.html @@ -135,7 +135,7 @@ Result ParseSEI (const diff --git a/docs/d3/da0/ec3__audio__util_8h_source.html b/docs/d3/da0/ec3__audio__util_8h_source.html index 1eb1cd2bea..87ae062a95 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/da1/classshaka_1_1media_1_1webm_1_1SingleSegmentSegmenter.html b/docs/d3/da1/classshaka_1_1media_1_1webm_1_1SingleSegmentSegmenter.html index aeb1449ed8..8eb441ec51 100644 --- a/docs/d3/da1/classshaka_1_1media_1_1webm_1_1SingleSegmentSegmenter.html +++ b/docs/d3/da1/classshaka_1_1media_1_1webm_1_1SingleSegmentSegmenter.html @@ -121,8 +121,8 @@ Public Member Functions  Segmenter (const MuxerOptions &options)   -Status Initialize (std::unique_ptr< MkvWriter > writer, StreamInfo *info, ProgressListener *progress_listener, MuxerListener *muxer_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds) -  +Status Initialize (std::unique_ptr< MkvWriter > writer, StreamInfo *info, ProgressListener *progress_listener, MuxerListener *muxer_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds) +  Status Finalize ()   Status AddSample (scoped_refptr< MediaSample > sample) @@ -296,7 +296,7 @@ uint64_t cluster_length_in diff --git a/docs/d3/da2/structshaka_1_1media_1_1mp4_1_1SchemeType.html b/docs/d3/da2/structshaka_1_1media_1_1mp4_1_1SchemeType.html index 4c9da0e753..2c8240c7f6 100644 --- a/docs/d3/da2/structshaka_1_1media_1_1mp4_1_1SchemeType.html +++ b/docs/d3/da2/structshaka_1_1media_1_1mp4_1_1SchemeType.html @@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/d3/dad/structshaka_1_1media_1_1mp4_1_1ID3v2.html b/docs/d3/dad/structshaka_1_1media_1_1mp4_1_1ID3v2.html index 5eab83a7da..2938643f5d 100644 --- a/docs/d3/dad/structshaka_1_1media_1_1mp4_1_1ID3v2.html +++ b/docs/d3/dad/structshaka_1_1media_1_1mp4_1_1ID3v2.html @@ -189,7 +189,7 @@ Additional Inherited Members diff --git a/docs/d3/db4/classshaka_1_1media_1_1WebMWebVTTParser-members.html b/docs/d3/db4/classshaka_1_1media_1_1WebMWebVTTParser-members.html index 9df14d76e6..f160fd95df 100644 --- a/docs/d3/db4/classshaka_1_1media_1_1WebMWebVTTParser-members.html +++ b/docs/d3/db4/classshaka_1_1media_1_1WebMWebVTTParser-members.html @@ -97,7 +97,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/db5/structshaka_1_1media_1_1mp4_1_1Track.html b/docs/d3/db5/structshaka_1_1media_1_1mp4_1_1Track.html index ab8c4df24e..94e83ebf12 100644 --- a/docs/d3/db5/structshaka_1_1media_1_1mp4_1_1Track.html +++ b/docs/d3/db5/structshaka_1_1media_1_1mp4_1_1Track.html @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/d3/db6/webm__parser_8cc_source.html b/docs/d3/db6/webm__parser_8cc_source.html index 5a965f6d68..d9b0210e61 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 7b4be67a38..3e1d5f223f 100644 --- a/docs/d3/dbc/seek__head_8cc_source.html +++ b/docs/d3/dbc/seek__head_8cc_source.html @@ -206,7 +206,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 53a61b3646..c7a388bcc7 100644 --- a/docs/d3/dbe/demuxer_8cc_source.html +++ b/docs/d3/dbe/demuxer_8cc_source.html @@ -334,7 +334,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/dbe/structshaka_1_1media_1_1mp4_1_1EditList.html b/docs/d3/dbe/structshaka_1_1media_1_1mp4_1_1EditList.html index 59b37c827d..6affb4481d 100644 --- a/docs/d3/dbe/structshaka_1_1media_1_1mp4_1_1EditList.html +++ b/docs/d3/dbe/structshaka_1_1media_1_1mp4_1_1EditList.html @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/d3/dc1/classshaka_1_1media_1_1mp2t_1_1Mp2tMediaParser.html b/docs/d3/dc1/classshaka_1_1media_1_1mp2t_1_1Mp2tMediaParser.html index e203d1feae..312e04a94f 100644 --- a/docs/d3/dc1/classshaka_1_1media_1_1mp2t_1_1Mp2tMediaParser.html +++ b/docs/d3/dc1/classshaka_1_1media_1_1mp2t_1_1Mp2tMediaParser.html @@ -256,7 +256,7 @@ track_id, const scoped_refptr
    diff --git a/docs/d3/dd0/classshaka_1_1MpdNotifier.html b/docs/d3/dd0/classshaka_1_1MpdNotifier.html index c1c510fe7a..6c8dee417b 100644 --- a/docs/d3/dd0/classshaka_1_1MpdNotifier.html +++ b/docs/d3/dd0/classshaka_1_1MpdNotifier.html @@ -472,7 +472,7 @@ Public Member Functions diff --git a/docs/d3/dd0/structshaka_1_1media_1_1mp4_1_1SegmentType.html b/docs/d3/dd0/structshaka_1_1media_1_1mp4_1_1SegmentType.html index d4769f5416..851ba895fb 100644 --- a/docs/d3/dd0/structshaka_1_1media_1_1mp4_1_1SegmentType.html +++ b/docs/d3/dd0/structshaka_1_1media_1_1mp4_1_1SegmentType.html @@ -177,7 +177,7 @@ std::vector< FourCC > < diff --git a/docs/d3/de4/seek__head_8h_source.html b/docs/d3/de4/seek__head_8h_source.html index 85582c5afe..fd11f10324 100644 --- a/docs/d3/de4/seek__head_8h_source.html +++ b/docs/d3/de4/seek__head_8h_source.html @@ -153,7 +153,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/de9/classshaka_1_1media_1_1mp4_1_1BoxBuffer-members.html b/docs/d3/de9/classshaka_1_1media_1_1mp4_1_1BoxBuffer-members.html index cf2d65789c..6092863d51 100644 --- a/docs/d3/de9/classshaka_1_1media_1_1mp4_1_1BoxBuffer-members.html +++ b/docs/d3/de9/classshaka_1_1media_1_1mp4_1_1BoxBuffer-members.html @@ -121,7 +121,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/de9/structshaka_1_1media_1_1mp4_1_1SampleGroupDescription-members.html b/docs/d3/de9/structshaka_1_1media_1_1mp4_1_1SampleGroupDescription-members.html index 9c31592b60..339bbf13ce 100644 --- a/docs/d3/de9/structshaka_1_1media_1_1mp4_1_1SampleGroupDescription-members.html +++ b/docs/d3/de9/structshaka_1_1media_1_1mp4_1_1SampleGroupDescription-members.html @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/df1/box__reader_8cc_source.html b/docs/d3/df1/box__reader_8cc_source.html index d48602fbe5..a81f584b49 100644 --- a/docs/d3/df1/box__reader_8cc_source.html +++ b/docs/d3/df1/box__reader_8cc_source.html @@ -259,7 +259,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/dfe/classshaka_1_1media_1_1AesPatternCryptor.html b/docs/d3/dfe/classshaka_1_1media_1_1AesPatternCryptor.html index 66d12be08f..2479e6cb08 100644 --- a/docs/d3/dfe/classshaka_1_1media_1_1AesPatternCryptor.html +++ b/docs/d3/dfe/classshaka_1_1media_1_1AesPatternCryptor.html @@ -297,7 +297,7 @@ AES_KEY * mutable_aes_key< 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 d75f4960fa..26e5a8f8cc 100644 --- a/docs/d4/d00/mp4_2multi__segment__segmenter_8cc_source.html +++ b/docs/d4/d00/mp4_2multi__segment__segmenter_8cc_source.html @@ -289,13 +289,13 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
    200 } // namespace shaka
    virtual void OnNewSegment(const std::string &segment_name, uint64_t start_time, uint64_t duration, uint64_t segment_file_size)=0
    virtual bool Open()=0
    Internal open. Should not be used directly.
    -
    void UpdateProgress(uint64_t progress)
    Update segmentation progress using ProgressListener.
    Definition: segmenter.cc:387
    -
    void SetComplete()
    Set progress to 100%.
    Definition: segmenter.cc:403
    +
    void UpdateProgress(uint64_t progress)
    Update segmentation progress using ProgressListener.
    Definition: segmenter.cc:390
    +
    void SetComplete()
    Set progress to 100%.
    Definition: segmenter.cc:406
    virtual void OnSampleDurationReady(uint32_t sample_duration)=0
    virtual bool Close()=0
    Define an abstract file interface.
    Definition: file.h:24
    -
    uint32_t sample_duration() const
    Definition: segmenter.h:101
    +
    uint32_t sample_duration() const
    Definition: segmenter.h:111
    bool GetInitRange(size_t *offset, size_t *size) override
    bool GetIndexRange(size_t *offset, size_t *size) override
    @@ -306,7 +306,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d08/classshaka_1_1media_1_1mp4_1_1MP4MediaParser-members.html b/docs/d4/d08/classshaka_1_1media_1_1mp4_1_1MP4MediaParser-members.html index afcd672aae..92e4ce8fe4 100644 --- a/docs/d4/d08/classshaka_1_1media_1_1mp4_1_1MP4MediaParser-members.html +++ b/docs/d4/d08/classshaka_1_1media_1_1mp4_1_1MP4MediaParser-members.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d0b/classshaka_1_1media_1_1TextTrack.html b/docs/d4/d0b/classshaka_1_1media_1_1TextTrack.html index 6bee3e2366..73041edbe5 100644 --- a/docs/d4/d0b/classshaka_1_1media_1_1TextTrack.html +++ b/docs/d4/d0b/classshaka_1_1media_1_1TextTrack.html @@ -109,7 +109,7 @@ virtual void addWebVTTCue< diff --git a/docs/d4/d14/classshaka_1_1media_1_1WebVttMediaParser-members.html b/docs/d4/d14/classshaka_1_1media_1_1WebVttMediaParser-members.html index 2bc20b9f49..03105e0d6b 100644 --- a/docs/d4/d14/classshaka_1_1media_1_1WebVttMediaParser-members.html +++ b/docs/d4/d14/classshaka_1_1media_1_1WebVttMediaParser-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d18/structshaka_1_1media_1_1mp4_1_1EditListEntry.html b/docs/d4/d18/structshaka_1_1media_1_1mp4_1_1EditListEntry.html index a85205cdd1..de9e531ae9 100644 --- a/docs/d4/d18/structshaka_1_1media_1_1mp4_1_1EditListEntry.html +++ b/docs/d4/d18/structshaka_1_1media_1_1mp4_1_1EditListEntry.html @@ -118,7 +118,7 @@ int16_t media_rate_fractio diff --git a/docs/d4/d20/classshaka_1_1media_1_1AesCbcEncryptor.html b/docs/d4/d20/classshaka_1_1media_1_1AesCbcEncryptor.html index 4452cd9a1d..af01068f4a 100644 --- a/docs/d4/d20/classshaka_1_1media_1_1AesCbcEncryptor.html +++ b/docs/d4/d20/classshaka_1_1media_1_1AesCbcEncryptor.html @@ -235,7 +235,7 @@ AES_KEY * mutable_aes_key< diff --git a/docs/d4/d20/structshaka_1_1media_1_1mp4_1_1ChunkLargeOffset-members.html b/docs/d4/d20/structshaka_1_1media_1_1mp4_1_1ChunkLargeOffset-members.html index ae40de52df..311fd58c74 100644 --- a/docs/d4/d20/structshaka_1_1media_1_1mp4_1_1ChunkLargeOffset-members.html +++ b/docs/d4/d20/structshaka_1_1media_1_1mp4_1_1ChunkLargeOffset-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d2c/structshaka_1_1media_1_1mp4_1_1ID3v2-members.html b/docs/d4/d2c/structshaka_1_1media_1_1mp4_1_1ID3v2-members.html index 015f1763b6..21f8181cec 100644 --- a/docs/d4/d2c/structshaka_1_1media_1_1mp4_1_1ID3v2-members.html +++ b/docs/d4/d2c/structshaka_1_1media_1_1mp4_1_1ID3v2-members.html @@ -114,7 +114,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d33/structshaka_1_1media_1_1mp4_1_1WebVTTSourceLabelBox.html b/docs/d4/d33/structshaka_1_1media_1_1mp4_1_1WebVTTSourceLabelBox.html index d924ace3fc..ec996bda14 100644 --- a/docs/d4/d33/structshaka_1_1media_1_1mp4_1_1WebVTTSourceLabelBox.html +++ b/docs/d4/d33/structshaka_1_1media_1_1mp4_1_1WebVTTSourceLabelBox.html @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d4/d37/io__cache_8cc_source.html b/docs/d4/d37/io__cache_8cc_source.html index efd2aa1552..636bcf703b 100644 --- a/docs/d4/d37/io__cache_8cc_source.html +++ b/docs/d4/d37/io__cache_8cc_source.html @@ -246,7 +246,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d3a/structshaka_1_1media_1_1H264Sps-members.html b/docs/d4/d3a/structshaka_1_1media_1_1H264Sps-members.html index 74c7f213de..b945ef2922 100644 --- a/docs/d4/d3a/structshaka_1_1media_1_1H264Sps-members.html +++ b/docs/d4/d3a/structshaka_1_1media_1_1H264Sps-members.html @@ -142,7 +142,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d4a/structshaka_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset-members.html b/docs/d4/d4a/structshaka_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset-members.html index 18f6c9d33f..59644c14f1 100644 --- a/docs/d4/d4a/structshaka_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset-members.html +++ b/docs/d4/d4a/structshaka_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d4c/structshaka_1_1media_1_1H264WeightingFactors.html b/docs/d4/d4c/structshaka_1_1media_1_1H264WeightingFactors.html index 7e03bb5f01..ff8de95cb1 100644 --- a/docs/d4/d4c/structshaka_1_1media_1_1H264WeightingFactors.html +++ b/docs/d4/d4c/structshaka_1_1media_1_1H264WeightingFactors.html @@ -124,7 +124,7 @@ int chroma_offset [32] diff --git a/docs/d4/d58/classshaka_1_1media_1_1Nalu-members.html b/docs/d4/d58/classshaka_1_1media_1_1Nalu-members.html index 4a563db2fe..492f64b0e4 100644 --- a/docs/d4/d58/classshaka_1_1media_1_1Nalu-members.html +++ b/docs/d4/d58/classshaka_1_1media_1_1Nalu-members.html @@ -158,7 +158,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d59/classshaka_1_1media_1_1WebMWebVTTParser.html b/docs/d4/d59/classshaka_1_1media_1_1WebMWebVTTParser.html index 8e32f5ae0f..9582c0fdef 100644 --- a/docs/d4/d59/classshaka_1_1media_1_1WebMWebVTTParser.html +++ b/docs/d4/d59/classshaka_1_1media_1_1WebMWebVTTParser.html @@ -111,7 +111,7 @@ static void  diff --git a/docs/d4/d5c/classshaka_1_1media_1_1DecryptConfig-members.html b/docs/d4/d5c/classshaka_1_1media_1_1DecryptConfig-members.html index 55bc45d9af..434dc87863 100644 --- a/docs/d4/d5c/classshaka_1_1media_1_1DecryptConfig-members.html +++ b/docs/d4/d5c/classshaka_1_1media_1_1DecryptConfig-members.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d5d/classshaka_1_1media_1_1UdpFile-members.html b/docs/d4/d5d/classshaka_1_1media_1_1UdpFile-members.html index 4789c0d49d..3124dcb763 100644 --- a/docs/d4/d5d/classshaka_1_1media_1_1UdpFile-members.html +++ b/docs/d4/d5d/classshaka_1_1media_1_1UdpFile-members.html @@ -117,7 +117,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d70/classshaka_1_1DashIopMpdNotifier.html b/docs/d4/d70/classshaka_1_1DashIopMpdNotifier.html index fab4353f60..e9505178c7 100644 --- a/docs/d4/d70/classshaka_1_1DashIopMpdNotifier.html +++ b/docs/d4/d70/classshaka_1_1DashIopMpdNotifier.html @@ -473,7 +473,7 @@ class DashIopMpdNotifierTe diff --git a/docs/d4/d70/structshaka_1_1SegmentInfo-members.html b/docs/d4/d70/structshaka_1_1SegmentInfo-members.html index 954f3e9742..3cf77a7df4 100644 --- a/docs/d4/d70/structshaka_1_1SegmentInfo-members.html +++ b/docs/d4/d70/structshaka_1_1SegmentInfo-members.html @@ -99,7 +99,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 ec0dd7691b..b294054610 100644 --- a/docs/d4/d87/nalu__reader_8h_source.html +++ b/docs/d4/d87/nalu__reader_8h_source.html @@ -299,7 +299,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d8a/classshaka_1_1media_1_1HEVCDecoderConfigurationRecord.html b/docs/d4/d8a/classshaka_1_1media_1_1HEVCDecoderConfigurationRecord.html index 59292cc12d..d11a1cf7b4 100644 --- a/docs/d4/d8a/classshaka_1_1media_1_1HEVCDecoderConfigurationRecord.html +++ b/docs/d4/d8a/classshaka_1_1media_1_1HEVCDecoderConfigurationRecord.html @@ -171,7 +171,7 @@ void  diff --git a/docs/d4/d8d/structshaka_1_1media_1_1mp4_1_1EC3Specific.html b/docs/d4/d8d/structshaka_1_1media_1_1mp4_1_1EC3Specific.html index c99ed05e23..8f3f32a88e 100644 --- a/docs/d4/d8d/structshaka_1_1media_1_1mp4_1_1EC3Specific.html +++ b/docs/d4/d8d/structshaka_1_1media_1_1mp4_1_1EC3Specific.html @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d4/d8e/classshaka_1_1media_1_1UdpOptions.html b/docs/d4/d8e/classshaka_1_1media_1_1UdpOptions.html index e9916f22f3..33beab5c35 100644 --- a/docs/d4/d8e/classshaka_1_1media_1_1UdpOptions.html +++ b/docs/d4/d8e/classshaka_1_1media_1_1UdpOptions.html @@ -170,7 +170,7 @@ Static Public Member Functions diff --git a/docs/d4/da7/segmenter__test__base_8cc_source.html b/docs/d4/da7/segmenter__test__base_8cc_source.html index bd2965863c..c0e922b64c 100644 --- a/docs/d4/da7/segmenter__test__base_8cc_source.html +++ b/docs/d4/da7/segmenter__test__base_8cc_source.html @@ -310,7 +310,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/dad/structshaka_1_1media_1_1mp4_1_1SampleEncryption.html b/docs/d4/dad/structshaka_1_1media_1_1mp4_1_1SampleEncryption.html index 89e3a0925a..254ff4fa95 100644 --- a/docs/d4/dad/structshaka_1_1media_1_1mp4_1_1SampleEncryption.html +++ b/docs/d4/dad/structshaka_1_1media_1_1mp4_1_1SampleEncryption.html @@ -250,7 +250,7 @@ Additional Inherited Members diff --git a/docs/d4/db1/structshaka_1_1media_1_1mp4_1_1CompactSampleSize-members.html b/docs/d4/db1/structshaka_1_1media_1_1mp4_1_1CompactSampleSize-members.html index 9f777dc331..5627cf2647 100644 --- a/docs/d4/db1/structshaka_1_1media_1_1mp4_1_1CompactSampleSize-members.html +++ b/docs/d4/db1/structshaka_1_1media_1_1mp4_1_1CompactSampleSize-members.html @@ -114,7 +114,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 1783767edb..820645f5e5 100644 --- a/docs/d4/db2/cluster__builder_8h_source.html +++ b/docs/d4/db2/cluster__builder_8h_source.html @@ -181,7 +181,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/db4/classshaka_1_1MpdNotifierFactory.html b/docs/d4/db4/classshaka_1_1MpdNotifierFactory.html index 313d0fea13..83da2e4e13 100644 --- a/docs/d4/db4/classshaka_1_1MpdNotifierFactory.html +++ b/docs/d4/db4/classshaka_1_1MpdNotifierFactory.html @@ -113,7 +113,7 @@ virtual std::unique_ptr
    diff --git a/docs/d4/db9/structshaka_1_1media_1_1mp4_1_1MediaHeader.html b/docs/d4/db9/structshaka_1_1media_1_1mp4_1_1MediaHeader.html index 711ab15f71..603d1c0c54 100644 --- a/docs/d4/db9/structshaka_1_1media_1_1mp4_1_1MediaHeader.html +++ b/docs/d4/db9/structshaka_1_1media_1_1mp4_1_1MediaHeader.html @@ -194,7 +194,7 @@ Additional Inherited Members diff --git a/docs/d4/dc8/classshaka_1_1media_1_1mp2t_1_1AacProgramMapTableWriter.html b/docs/d4/dc8/classshaka_1_1media_1_1mp2t_1_1AacProgramMapTableWriter.html index a1e35a1f5b..bfe2bc793b 100644 --- a/docs/d4/dc8/classshaka_1_1media_1_1mp2t_1_1AacProgramMapTableWriter.html +++ b/docs/d4/dc8/classshaka_1_1media_1_1mp2t_1_1AacProgramMapTableWriter.html @@ -140,7 +140,7 @@ static const uint8_t kElem diff --git a/docs/d4/dd3/bit__reader_8h_source.html b/docs/d4/dd3/bit__reader_8h_source.html index c45c394fe9..b428dbf7c2 100644 --- a/docs/d4/dd3/bit__reader_8h_source.html +++ b/docs/d4/dd3/bit__reader_8h_source.html @@ -187,7 +187,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/dd4/structshaka_1_1media_1_1mp4_1_1FullBox-members.html b/docs/d4/dd4/structshaka_1_1media_1_1mp4_1_1FullBox-members.html index c180a388d8..a4a37a6b63 100644 --- a/docs/d4/dd4/structshaka_1_1media_1_1mp4_1_1FullBox-members.html +++ b/docs/d4/dd4/structshaka_1_1media_1_1mp4_1_1FullBox-members.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/ddb/classshaka_1_1media_1_1MemoryFile-members.html b/docs/d4/ddb/classshaka_1_1media_1_1MemoryFile-members.html index 58591edbb1..1eb6dc9239 100644 --- a/docs/d4/ddb/classshaka_1_1media_1_1MemoryFile-members.html +++ b/docs/d4/ddb/classshaka_1_1media_1_1MemoryFile-members.html @@ -119,7 +119,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/dde/webvtt__util_8h_source.html b/docs/d4/dde/webvtt__util_8h_source.html index 0a6ffc47e2..ce2d7b2f80 100644 --- a/docs/d4/dde/webvtt__util_8h_source.html +++ b/docs/d4/dde/webvtt__util_8h_source.html @@ -124,7 +124,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/de3/structshaka_1_1media_1_1mp4_1_1DataReference.html b/docs/d4/de3/structshaka_1_1media_1_1mp4_1_1DataReference.html index 1ca20e3b3f..9f72b196bd 100644 --- a/docs/d4/de3/structshaka_1_1media_1_1mp4_1_1DataReference.html +++ b/docs/d4/de3/structshaka_1_1media_1_1mp4_1_1DataReference.html @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/d4/de6/classshaka_1_1media_1_1ProgressListener.html b/docs/d4/de6/classshaka_1_1media_1_1ProgressListener.html index 0f7d9716d8..64322395b0 100644 --- a/docs/d4/de6/classshaka_1_1media_1_1ProgressListener.html +++ b/docs/d4/de6/classshaka_1_1media_1_1ProgressListener.html @@ -146,7 +146,7 @@ Public Member Functions diff --git a/docs/d4/de7/classshaka_1_1media_1_1VodMediaInfoDumpMuxerListener-members.html b/docs/d4/de7/classshaka_1_1media_1_1VodMediaInfoDumpMuxerListener-members.html index 295bfd175a..9c93504259 100644 --- a/docs/d4/de7/classshaka_1_1media_1_1VodMediaInfoDumpMuxerListener-members.html +++ b/docs/d4/de7/classshaka_1_1media_1_1VodMediaInfoDumpMuxerListener-members.html @@ -112,7 +112,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/dec/hls__flags_8h_source.html b/docs/d4/dec/hls__flags_8h_source.html index 3b9a2bdf9c..8146cf78d8 100644 --- a/docs/d4/dec/hls__flags_8h_source.html +++ b/docs/d4/dec/hls__flags_8h_source.html @@ -105,7 +105,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 4547e24aff..53c3d9fd88 100644 --- a/docs/d4/df5/request__signer_8cc_source.html +++ b/docs/d4/df5/request__signer_8cc_source.html @@ -179,7 +179,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/df9/structshaka_1_1media_1_1mp4_1_1SegmentIndex.html b/docs/d4/df9/structshaka_1_1media_1_1mp4_1_1SegmentIndex.html index d35f6b3fa8..2dac0d1f3f 100644 --- a/docs/d4/df9/structshaka_1_1media_1_1mp4_1_1SegmentIndex.html +++ b/docs/d4/df9/structshaka_1_1media_1_1mp4_1_1SegmentIndex.html @@ -194,7 +194,7 @@ Additional Inherited Members diff --git a/docs/d4/dfa/structshaka_1_1media_1_1mp4_1_1AC3Specific.html b/docs/d4/dfa/structshaka_1_1media_1_1mp4_1_1AC3Specific.html index 3b3f1c6485..b7d9c4458c 100644 --- a/docs/d4/dfa/structshaka_1_1media_1_1mp4_1_1AC3Specific.html +++ b/docs/d4/dfa/structshaka_1_1media_1_1mp4_1_1AC3Specific.html @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d4/dfd/structshaka_1_1media_1_1H265Sps.html b/docs/d4/dfd/structshaka_1_1media_1_1H265Sps.html index fd5f619056..9d077c6246 100644 --- a/docs/d4/dfd/structshaka_1_1media_1_1H265Sps.html +++ b/docs/d4/dfd/structshaka_1_1media_1_1H265Sps.html @@ -256,7 +256,7 @@ bool vui_parameters_presen diff --git a/docs/d4/dff/webm__media__parser_8cc_source.html b/docs/d4/dff/webm__media__parser_8cc_source.html index 73eadb8bcc..d204a9712e 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/d03/structshaka_1_1media_1_1mp4_1_1FileType.html b/docs/d5/d03/structshaka_1_1media_1_1mp4_1_1FileType.html index 1cc6bdabc8..28e151c851 100644 --- a/docs/d5/d03/structshaka_1_1media_1_1mp4_1_1FileType.html +++ b/docs/d5/d03/structshaka_1_1media_1_1mp4_1_1FileType.html @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/d5/d05/structshaka_1_1media_1_1mp4_1_1OriginalFormat.html b/docs/d5/d05/structshaka_1_1media_1_1mp4_1_1OriginalFormat.html index 0902b79062..824df99d82 100644 --- a/docs/d5/d05/structshaka_1_1media_1_1mp4_1_1OriginalFormat.html +++ b/docs/d5/d05/structshaka_1_1media_1_1mp4_1_1OriginalFormat.html @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d5/d09/structshaka_1_1media_1_1mp4_1_1CueIDBox.html b/docs/d5/d09/structshaka_1_1media_1_1mp4_1_1CueIDBox.html index ae509a4431..8c94bc76c9 100644 --- a/docs/d5/d09/structshaka_1_1media_1_1mp4_1_1CueIDBox.html +++ b/docs/d5/d09/structshaka_1_1media_1_1mp4_1_1CueIDBox.html @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d5/d11/classshaka_1_1media_1_1WebMInfoParser-members.html b/docs/d5/d11/classshaka_1_1media_1_1WebMInfoParser-members.html index 24e2d1b30c..37bba7ddd8 100644 --- a/docs/d5/d11/classshaka_1_1media_1_1WebMInfoParser-members.html +++ b/docs/d5/d11/classshaka_1_1media_1_1WebMInfoParser-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d11/structshaka_1_1media_1_1mp4_1_1ElementaryStreamDescriptor.html b/docs/d5/d11/structshaka_1_1media_1_1mp4_1_1ElementaryStreamDescriptor.html index 6f4fce711f..1e4b44ccdc 100644 --- a/docs/d5/d11/structshaka_1_1media_1_1mp4_1_1ElementaryStreamDescriptor.html +++ b/docs/d5/d11/structshaka_1_1media_1_1mp4_1_1ElementaryStreamDescriptor.html @@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/d5/d13/classshaka_1_1media_1_1ESDescriptor.html b/docs/d5/d13/classshaka_1_1media_1_1ESDescriptor.html index d70724ea94..2516820781 100644 --- a/docs/d5/d13/classshaka_1_1media_1_1ESDescriptor.html +++ b/docs/d5/d13/classshaka_1_1media_1_1ESDescriptor.html @@ -181,7 +181,7 @@ bool IsDTS () const diff --git a/docs/d5/d15/producer__consumer__queue_8h_source.html b/docs/d5/d15/producer__consumer__queue_8h_source.html index 8bea438fc4..afa75d011d 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/d1a/ts__section_8h_source.html b/docs/d5/d1a/ts__section_8h_source.html index 6d2c95d087..4052a4df46 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/d26/classshaka_1_1media_1_1mp4_1_1TrackRunIterator-members.html b/docs/d5/d26/classshaka_1_1media_1_1mp4_1_1TrackRunIterator-members.html index ca192998f4..88824e5f33 100644 --- a/docs/d5/d26/classshaka_1_1media_1_1mp4_1_1TrackRunIterator-members.html +++ b/docs/d5/d26/classshaka_1_1media_1_1mp4_1_1TrackRunIterator-members.html @@ -122,7 +122,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 24a8f823f3..bf5f370686 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/d33/classshaka_1_1media_1_1ProducerConsumerQueue.html b/docs/d5/d33/classshaka_1_1media_1_1ProducerConsumerQueue.html index 3e340c3557..b011b24ff1 100644 --- a/docs/d5/d33/classshaka_1_1media_1_1ProducerConsumerQueue.html +++ b/docs/d5/d33/classshaka_1_1media_1_1ProducerConsumerQueue.html @@ -501,7 +501,7 @@ template<class T > diff --git a/docs/d5/d3b/structshaka_1_1media_1_1mp4_1_1Media-members.html b/docs/d5/d3b/structshaka_1_1media_1_1mp4_1_1Media-members.html index 5b25ea0fb6..932e4a9471 100644 --- a/docs/d5/d3b/structshaka_1_1media_1_1mp4_1_1Media-members.html +++ b/docs/d5/d3b/structshaka_1_1media_1_1mp4_1_1Media-members.html @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d40/webm_2single__segment__segmenter_8h_source.html b/docs/d5/d40/webm_2single__segment__segmenter_8h_source.html index 195f54001a..70ce9adbe6 100644 --- a/docs/d5/d40/webm_2single__segment__segmenter_8h_source.html +++ b/docs/d5/d40/webm_2single__segment__segmenter_8h_source.html @@ -159,7 +159,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d4b/classshaka_1_1media_1_1mp2t_1_1TsSectionPsi-members.html b/docs/d5/d4b/classshaka_1_1media_1_1mp2t_1_1TsSectionPsi-members.html index 7e314840e5..dde690ea73 100644 --- a/docs/d5/d4b/classshaka_1_1media_1_1mp2t_1_1TsSectionPsi-members.html +++ b/docs/d5/d4b/classshaka_1_1media_1_1mp2t_1_1TsSectionPsi-members.html @@ -110,7 +110,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 5bbeedeb0d..ced6f48d29 100644 --- a/docs/d5/d4d/box_8cc_source.html +++ b/docs/d5/d4d/box_8cc_source.html @@ -195,7 +195,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 e8886010b5..37d9b11894 100644 --- a/docs/d5/d52/ts__section__pes_8h_source.html +++ b/docs/d5/d52/ts__section__pes_8h_source.html @@ -160,7 +160,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d53/structshaka_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize-members.html b/docs/d5/d53/structshaka_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize-members.html index c4a19d4046..8debeddeba 100644 --- a/docs/d5/d53/structshaka_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize-members.html +++ b/docs/d5/d53/structshaka_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize-members.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d57/classshaka_1_1RepresentationStateChangeListener-members.html b/docs/d5/d57/classshaka_1_1RepresentationStateChangeListener-members.html index 89e60c308b..44daed6649 100644 --- a/docs/d5/d57/classshaka_1_1RepresentationStateChangeListener-members.html +++ b/docs/d5/d57/classshaka_1_1RepresentationStateChangeListener-members.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d59/classshaka_1_1MockRepresentation-members.html b/docs/d5/d59/classshaka_1_1MockRepresentation-members.html index d60723b65d..98190aad2e 100644 --- a/docs/d5/d59/classshaka_1_1MockRepresentation-members.html +++ b/docs/d5/d59/classshaka_1_1MockRepresentation-members.html @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d5c/continuity__counter_8cc_source.html b/docs/d5/d5c/continuity__counter_8cc_source.html index b2f94b81b8..7b26ef3151 100644 --- a/docs/d5/d5c/continuity__counter_8cc_source.html +++ b/docs/d5/d5c/continuity__counter_8cc_source.html @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d63/classshaka_1_1media_1_1mp2t_1_1EsParserH265.html b/docs/d5/d63/classshaka_1_1media_1_1mp2t_1_1EsParserH265.html index a7a4657ddf..df7e467c17 100644 --- a/docs/d5/d63/classshaka_1_1media_1_1mp2t_1_1EsParserH265.html +++ b/docs/d5/d63/classshaka_1_1media_1_1mp2t_1_1EsParserH265.html @@ -161,7 +161,7 @@ const
    diff --git a/docs/d5/d63/network__util_8cc_source.html b/docs/d5/d63/network__util_8cc_source.html index 949407e85c..b2329a5243 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/d66/classshaka_1_1media_1_1NalUnitToByteStreamConverter.html b/docs/d5/d66/classshaka_1_1media_1_1NalUnitToByteStreamConverter.html index 8f29a10b61..30cc5a31ae 100644 --- a/docs/d5/d66/classshaka_1_1media_1_1NalUnitToByteStreamConverter.html +++ b/docs/d5/d66/classshaka_1_1media_1_1NalUnitToByteStreamConverter.html @@ -296,7 +296,7 @@ class NalUnitToByteStreamC diff --git a/docs/d5/d6f/vlog__flags_8cc_source.html b/docs/d5/d6f/vlog__flags_8cc_source.html index 3de3c285d4..bbca4fcda4 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/d72/avc__decoder__configuration__record_8cc_source.html b/docs/d5/d72/avc__decoder__configuration__record_8cc_source.html index 47d7605cdf..c1738b5257 100644 --- a/docs/d5/d72/avc__decoder__configuration__record_8cc_source.html +++ b/docs/d5/d72/avc__decoder__configuration__record_8cc_source.html @@ -202,7 +202,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d7b/box__definitions_8h_source.html b/docs/d5/d7b/box__definitions_8h_source.html index 77adf54ef8..b18197971f 100644 --- a/docs/d5/d7b/box__definitions_8h_source.html +++ b/docs/d5/d7b/box__definitions_8h_source.html @@ -1000,7 +1000,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d86/structshaka_1_1media_1_1mp4_1_1MediaInformation.html b/docs/d5/d86/structshaka_1_1media_1_1mp4_1_1MediaInformation.html index 5b19108f2b..b1dbe049ea 100644 --- a/docs/d5/d86/structshaka_1_1media_1_1mp4_1_1MediaInformation.html +++ b/docs/d5/d86/structshaka_1_1media_1_1mp4_1_1MediaInformation.html @@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/d5/d89/widevine__key__source_8cc_source.html b/docs/d5/d89/widevine__key__source_8cc_source.html index 012f424f2e..5a98d540bb 100644 --- a/docs/d5/d89/widevine__key__source_8cc_source.html +++ b/docs/d5/d89/widevine__key__source_8cc_source.html @@ -490,219 +490,225 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
    401  base::DictionaryValue* track_hd = new base::DictionaryValue();
    402  track_hd->SetString("type", "HD");
    403  tracks->Append(track_hd);
    -
    404  base::DictionaryValue* track_audio = new base::DictionaryValue();
    -
    405  track_audio->SetString("type", "AUDIO");
    -
    406  tracks->Append(track_audio);
    -
    407 
    -
    408  request_dict_.Set("tracks", tracks);
    -
    409 
    -
    410  // Build DRM types.
    -
    411  base::ListValue* drm_types = new base::ListValue();
    -
    412  drm_types->AppendString("WIDEVINE");
    -
    413  request_dict_.Set("drm_types", drm_types);
    -
    414 
    -
    415  // Build key rotation fields.
    -
    416  if (enable_key_rotation) {
    -
    417  // Javascript/JSON does not support int64_t or unsigned numbers. Use double
    -
    418  // instead as 32-bit integer can be lossless represented using double.
    -
    419  request_dict_.SetDouble("first_crypto_period_index",
    -
    420  first_crypto_period_index);
    -
    421  request_dict_.SetInteger("crypto_period_count", crypto_period_count_);
    -
    422  }
    -
    423 
    -
    424  base::JSONWriter::WriteWithOptions(
    -
    425  request_dict_,
    -
    426  // Write doubles that have no fractional part as a normal integer, i.e.
    -
    427  // without using exponential notation or appending a '.0'.
    -
    428  base::JSONWriter::OPTIONS_OMIT_DOUBLE_TYPE_PRESERVATION, request);
    -
    429 }
    -
    430 
    -
    431 Status WidevineKeySource::GenerateKeyMessage(const std::string& request,
    -
    432  std::string* message) {
    -
    433  DCHECK(message);
    -
    434 
    -
    435  std::string request_base64_string;
    -
    436  base::Base64Encode(request, &request_base64_string);
    -
    437 
    -
    438  base::DictionaryValue request_dict;
    -
    439  request_dict.SetString("request", request_base64_string);
    +
    404  base::DictionaryValue* track_uhd1 = new base::DictionaryValue();
    +
    405  track_uhd1->SetString("type", "UHD1");
    +
    406  tracks->Append(track_uhd1);
    +
    407  base::DictionaryValue* track_uhd2 = new base::DictionaryValue();
    +
    408  track_uhd2->SetString("type", "UHD2");
    +
    409  tracks->Append(track_uhd2);
    +
    410  base::DictionaryValue* track_audio = new base::DictionaryValue();
    +
    411  track_audio->SetString("type", "AUDIO");
    +
    412  tracks->Append(track_audio);
    +
    413 
    +
    414  request_dict_.Set("tracks", tracks);
    +
    415 
    +
    416  // Build DRM types.
    +
    417  base::ListValue* drm_types = new base::ListValue();
    +
    418  drm_types->AppendString("WIDEVINE");
    +
    419  request_dict_.Set("drm_types", drm_types);
    +
    420 
    +
    421  // Build key rotation fields.
    +
    422  if (enable_key_rotation) {
    +
    423  // Javascript/JSON does not support int64_t or unsigned numbers. Use double
    +
    424  // instead as 32-bit integer can be lossless represented using double.
    +
    425  request_dict_.SetDouble("first_crypto_period_index",
    +
    426  first_crypto_period_index);
    +
    427  request_dict_.SetInteger("crypto_period_count", crypto_period_count_);
    +
    428  }
    +
    429 
    +
    430  base::JSONWriter::WriteWithOptions(
    +
    431  request_dict_,
    +
    432  // Write doubles that have no fractional part as a normal integer, i.e.
    +
    433  // without using exponential notation or appending a '.0'.
    +
    434  base::JSONWriter::OPTIONS_OMIT_DOUBLE_TYPE_PRESERVATION, request);
    +
    435 }
    +
    436 
    +
    437 Status WidevineKeySource::GenerateKeyMessage(const std::string& request,
    +
    438  std::string* message) {
    +
    439  DCHECK(message);
    440 
    -
    441  // Sign the request.
    -
    442  if (signer_) {
    -
    443  std::string signature;
    -
    444  if (!signer_->GenerateSignature(request, &signature))
    -
    445  return Status(error::INTERNAL_ERROR, "Signature generation failed.");
    +
    441  std::string request_base64_string;
    +
    442  base::Base64Encode(request, &request_base64_string);
    +
    443 
    +
    444  base::DictionaryValue request_dict;
    +
    445  request_dict.SetString("request", request_base64_string);
    446 
    -
    447  std::string signature_base64_string;
    -
    448  base::Base64Encode(signature, &signature_base64_string);
    -
    449 
    -
    450  request_dict.SetString("signature", signature_base64_string);
    -
    451  request_dict.SetString("signer", signer_->signer_name());
    -
    452  }
    -
    453 
    -
    454  base::JSONWriter::Write(request_dict, message);
    -
    455  return Status::OK;
    -
    456 }
    -
    457 
    -
    458 bool WidevineKeySource::DecodeResponse(
    -
    459  const std::string& raw_response,
    -
    460  std::string* response) {
    -
    461  DCHECK(response);
    -
    462 
    -
    463  // Extract base64 formatted response from JSON formatted raw response.
    -
    464  std::unique_ptr<base::Value> root(base::JSONReader::Read(raw_response));
    -
    465  if (!root) {
    -
    466  LOG(ERROR) << "'" << raw_response << "' is not in JSON format.";
    -
    467  return false;
    -
    468  }
    -
    469  const base::DictionaryValue* response_dict = NULL;
    -
    470  RCHECK(root->GetAsDictionary(&response_dict));
    -
    471 
    -
    472  std::string response_base64_string;
    -
    473  RCHECK(response_dict->GetString("response", &response_base64_string));
    -
    474  RCHECK(base::Base64Decode(response_base64_string, response));
    -
    475  return true;
    -
    476 }
    +
    447  // Sign the request.
    +
    448  if (signer_) {
    +
    449  std::string signature;
    +
    450  if (!signer_->GenerateSignature(request, &signature))
    +
    451  return Status(error::INTERNAL_ERROR, "Signature generation failed.");
    +
    452 
    +
    453  std::string signature_base64_string;
    +
    454  base::Base64Encode(signature, &signature_base64_string);
    +
    455 
    +
    456  request_dict.SetString("signature", signature_base64_string);
    +
    457  request_dict.SetString("signer", signer_->signer_name());
    +
    458  }
    +
    459 
    +
    460  base::JSONWriter::Write(request_dict, message);
    +
    461  return Status::OK;
    +
    462 }
    +
    463 
    +
    464 bool WidevineKeySource::DecodeResponse(
    +
    465  const std::string& raw_response,
    +
    466  std::string* response) {
    +
    467  DCHECK(response);
    +
    468 
    +
    469  // Extract base64 formatted response from JSON formatted raw response.
    +
    470  std::unique_ptr<base::Value> root(base::JSONReader::Read(raw_response));
    +
    471  if (!root) {
    +
    472  LOG(ERROR) << "'" << raw_response << "' is not in JSON format.";
    +
    473  return false;
    +
    474  }
    +
    475  const base::DictionaryValue* response_dict = NULL;
    +
    476  RCHECK(root->GetAsDictionary(&response_dict));
    477 
    -
    478 bool WidevineKeySource::ExtractEncryptionKey(
    -
    479  bool enable_key_rotation,
    -
    480  bool widevine_classic,
    -
    481  const std::string& response,
    -
    482  bool* transient_error) {
    -
    483  DCHECK(transient_error);
    -
    484  *transient_error = false;
    -
    485 
    -
    486  std::unique_ptr<base::Value> root(base::JSONReader::Read(response));
    -
    487  if (!root) {
    -
    488  LOG(ERROR) << "'" << response << "' is not in JSON format.";
    -
    489  return false;
    -
    490  }
    +
    478  std::string response_base64_string;
    +
    479  RCHECK(response_dict->GetString("response", &response_base64_string));
    +
    480  RCHECK(base::Base64Decode(response_base64_string, response));
    +
    481  return true;
    +
    482 }
    +
    483 
    +
    484 bool WidevineKeySource::ExtractEncryptionKey(
    +
    485  bool enable_key_rotation,
    +
    486  bool widevine_classic,
    +
    487  const std::string& response,
    +
    488  bool* transient_error) {
    +
    489  DCHECK(transient_error);
    +
    490  *transient_error = false;
    491 
    -
    492  const base::DictionaryValue* license_dict = NULL;
    -
    493  RCHECK(root->GetAsDictionary(&license_dict));
    -
    494 
    -
    495  std::string license_status;
    -
    496  RCHECK(license_dict->GetString("status", &license_status));
    -
    497  if (license_status != kLicenseStatusOK) {
    -
    498  LOG(ERROR) << "Received non-OK license response: " << response;
    -
    499  *transient_error = (license_status == kLicenseStatusTransientError);
    -
    500  return false;
    -
    501  }
    -
    502 
    -
    503  const base::ListValue* tracks;
    -
    504  RCHECK(license_dict->GetList("tracks", &tracks));
    -
    505  // Should have at least one track per crypto_period.
    -
    506  RCHECK(enable_key_rotation ? tracks->GetSize() >= 1 * crypto_period_count_
    -
    507  : tracks->GetSize() >= 1);
    +
    492  std::unique_ptr<base::Value> root(base::JSONReader::Read(response));
    +
    493  if (!root) {
    +
    494  LOG(ERROR) << "'" << response << "' is not in JSON format.";
    +
    495  return false;
    +
    496  }
    +
    497 
    +
    498  const base::DictionaryValue* license_dict = NULL;
    +
    499  RCHECK(root->GetAsDictionary(&license_dict));
    +
    500 
    +
    501  std::string license_status;
    +
    502  RCHECK(license_dict->GetString("status", &license_status));
    +
    503  if (license_status != kLicenseStatusOK) {
    +
    504  LOG(ERROR) << "Received non-OK license response: " << response;
    +
    505  *transient_error = (license_status == kLicenseStatusTransientError);
    +
    506  return false;
    +
    507  }
    508 
    -
    509  int current_crypto_period_index = first_crypto_period_index_;
    -
    510 
    -
    511  EncryptionKeyMap encryption_key_map;
    -
    512  for (size_t i = 0; i < tracks->GetSize(); ++i) {
    -
    513  const base::DictionaryValue* track_dict;
    -
    514  RCHECK(tracks->GetDictionary(i, &track_dict));
    -
    515 
    -
    516  if (enable_key_rotation) {
    -
    517  int crypto_period_index;
    -
    518  RCHECK(
    -
    519  track_dict->GetInteger("crypto_period_index", &crypto_period_index));
    -
    520  if (crypto_period_index != current_crypto_period_index) {
    -
    521  if (crypto_period_index != current_crypto_period_index + 1) {
    -
    522  LOG(ERROR) << "Expecting crypto period index "
    -
    523  << current_crypto_period_index << " or "
    -
    524  << current_crypto_period_index + 1 << "; Seen "
    -
    525  << crypto_period_index << " at track " << i;
    -
    526  return false;
    -
    527  }
    -
    528  if (!PushToKeyPool(&encryption_key_map))
    -
    529  return false;
    -
    530  ++current_crypto_period_index;
    -
    531  }
    -
    532  }
    -
    533 
    -
    534  std::string track_type_str;
    -
    535  RCHECK(track_dict->GetString("type", &track_type_str));
    -
    536  TrackType track_type = GetTrackTypeFromString(track_type_str);
    -
    537  DCHECK_NE(TRACK_TYPE_UNKNOWN, track_type);
    -
    538  RCHECK(encryption_key_map.find(track_type) == encryption_key_map.end());
    +
    509  const base::ListValue* tracks;
    +
    510  RCHECK(license_dict->GetList("tracks", &tracks));
    +
    511  // Should have at least one track per crypto_period.
    +
    512  RCHECK(enable_key_rotation ? tracks->GetSize() >= 1 * crypto_period_count_
    +
    513  : tracks->GetSize() >= 1);
    +
    514 
    +
    515  int current_crypto_period_index = first_crypto_period_index_;
    +
    516 
    +
    517  EncryptionKeyMap encryption_key_map;
    +
    518  for (size_t i = 0; i < tracks->GetSize(); ++i) {
    +
    519  const base::DictionaryValue* track_dict;
    +
    520  RCHECK(tracks->GetDictionary(i, &track_dict));
    +
    521 
    +
    522  if (enable_key_rotation) {
    +
    523  int crypto_period_index;
    +
    524  RCHECK(
    +
    525  track_dict->GetInteger("crypto_period_index", &crypto_period_index));
    +
    526  if (crypto_period_index != current_crypto_period_index) {
    +
    527  if (crypto_period_index != current_crypto_period_index + 1) {
    +
    528  LOG(ERROR) << "Expecting crypto period index "
    +
    529  << current_crypto_period_index << " or "
    +
    530  << current_crypto_period_index + 1 << "; Seen "
    +
    531  << crypto_period_index << " at track " << i;
    +
    532  return false;
    +
    533  }
    +
    534  if (!PushToKeyPool(&encryption_key_map))
    +
    535  return false;
    +
    536  ++current_crypto_period_index;
    +
    537  }
    +
    538  }
    539 
    -
    540  std::unique_ptr<EncryptionKey> encryption_key(new EncryptionKey());
    -
    541 
    -
    542  if (!GetKeyFromTrack(*track_dict, &encryption_key->key))
    -
    543  return false;
    -
    544 
    -
    545  // Get key ID and PSSH data for CENC content only.
    -
    546  if (!widevine_classic) {
    -
    547  if (!GetKeyIdFromTrack(*track_dict, &encryption_key->key_id))
    -
    548  return false;
    -
    549 
    -
    550  ProtectionSystemSpecificInfo info;
    -
    551  info.add_key_id(encryption_key->key_id);
    -
    552  info.set_system_id(kWidevineSystemId, arraysize(kWidevineSystemId));
    -
    553  info.set_pssh_box_version(0);
    -
    554 
    -
    555  std::vector<uint8_t> pssh_data;
    -
    556  if (!GetPsshDataFromTrack(*track_dict, &pssh_data))
    -
    557  return false;
    -
    558  info.set_pssh_data(pssh_data);
    -
    559 
    -
    560  encryption_key->key_system_info.push_back(info);
    -
    561  }
    -
    562  encryption_key_map[track_type] = std::move(encryption_key);
    -
    563  }
    -
    564 
    -
    565  // If the flag exists, create a common system ID PSSH box that contains the
    -
    566  // key IDs of all the keys.
    -
    567  if (add_common_pssh_ && !widevine_classic) {
    -
    568  std::set<std::vector<uint8_t>> key_ids;
    -
    569  for (const EncryptionKeyMap::value_type& pair : encryption_key_map) {
    -
    570  key_ids.insert(pair.second->key_id);
    -
    571  }
    -
    572 
    -
    573  // Create a common system PSSH box.
    -
    574  ProtectionSystemSpecificInfo info;
    -
    575  info.set_system_id(kCommonSystemId, arraysize(kCommonSystemId));
    -
    576  info.set_pssh_box_version(1);
    -
    577  for (const std::vector<uint8_t>& key_id : key_ids) {
    -
    578  info.add_key_id(key_id);
    -
    579  }
    -
    580 
    -
    581  for (const EncryptionKeyMap::value_type& pair : encryption_key_map) {
    -
    582  pair.second->key_system_info.push_back(info);
    -
    583  }
    -
    584  }
    -
    585 
    -
    586  DCHECK(!encryption_key_map.empty());
    -
    587  if (!enable_key_rotation) {
    -
    588  encryption_key_map_.swap(encryption_key_map);
    -
    589  return true;
    +
    540  std::string track_type_str;
    +
    541  RCHECK(track_dict->GetString("type", &track_type_str));
    +
    542  TrackType track_type = GetTrackTypeFromString(track_type_str);
    +
    543  DCHECK_NE(TRACK_TYPE_UNKNOWN, track_type);
    +
    544  RCHECK(encryption_key_map.find(track_type) == encryption_key_map.end());
    +
    545 
    +
    546  std::unique_ptr<EncryptionKey> encryption_key(new EncryptionKey());
    +
    547 
    +
    548  if (!GetKeyFromTrack(*track_dict, &encryption_key->key))
    +
    549  return false;
    +
    550 
    +
    551  // Get key ID and PSSH data for CENC content only.
    +
    552  if (!widevine_classic) {
    +
    553  if (!GetKeyIdFromTrack(*track_dict, &encryption_key->key_id))
    +
    554  return false;
    +
    555 
    +
    556  ProtectionSystemSpecificInfo info;
    +
    557  info.add_key_id(encryption_key->key_id);
    +
    558  info.set_system_id(kWidevineSystemId, arraysize(kWidevineSystemId));
    +
    559  info.set_pssh_box_version(0);
    +
    560 
    +
    561  std::vector<uint8_t> pssh_data;
    +
    562  if (!GetPsshDataFromTrack(*track_dict, &pssh_data))
    +
    563  return false;
    +
    564  info.set_pssh_data(pssh_data);
    +
    565 
    +
    566  encryption_key->key_system_info.push_back(info);
    +
    567  }
    +
    568  encryption_key_map[track_type] = std::move(encryption_key);
    +
    569  }
    +
    570 
    +
    571  // If the flag exists, create a common system ID PSSH box that contains the
    +
    572  // key IDs of all the keys.
    +
    573  if (add_common_pssh_ && !widevine_classic) {
    +
    574  std::set<std::vector<uint8_t>> key_ids;
    +
    575  for (const EncryptionKeyMap::value_type& pair : encryption_key_map) {
    +
    576  key_ids.insert(pair.second->key_id);
    +
    577  }
    +
    578 
    +
    579  // Create a common system PSSH box.
    +
    580  ProtectionSystemSpecificInfo info;
    +
    581  info.set_system_id(kCommonSystemId, arraysize(kCommonSystemId));
    +
    582  info.set_pssh_box_version(1);
    +
    583  for (const std::vector<uint8_t>& key_id : key_ids) {
    +
    584  info.add_key_id(key_id);
    +
    585  }
    +
    586 
    +
    587  for (const EncryptionKeyMap::value_type& pair : encryption_key_map) {
    +
    588  pair.second->key_system_info.push_back(info);
    +
    589  }
    590  }
    -
    591  return PushToKeyPool(&encryption_key_map);
    -
    592 }
    -
    593 
    -
    594 bool WidevineKeySource::PushToKeyPool(
    -
    595  EncryptionKeyMap* encryption_key_map) {
    -
    596  DCHECK(key_pool_);
    -
    597  DCHECK(encryption_key_map);
    -
    598  Status status =
    -
    599  key_pool_->Push(scoped_refptr<RefCountedEncryptionKeyMap>(
    -
    600  new RefCountedEncryptionKeyMap(encryption_key_map)),
    -
    601  kInfiniteTimeout);
    -
    602  encryption_key_map->clear();
    -
    603  if (!status.ok()) {
    -
    604  DCHECK_EQ(error::STOPPED, status.error_code());
    -
    605  return false;
    -
    606  }
    -
    607  return true;
    -
    608 }
    -
    609 
    -
    610 } // namespace media
    -
    611 } // namespace shaka
    +
    591 
    +
    592  DCHECK(!encryption_key_map.empty());
    +
    593  if (!enable_key_rotation) {
    +
    594  encryption_key_map_.swap(encryption_key_map);
    +
    595  return true;
    +
    596  }
    +
    597  return PushToKeyPool(&encryption_key_map);
    +
    598 }
    +
    599 
    +
    600 bool WidevineKeySource::PushToKeyPool(
    +
    601  EncryptionKeyMap* encryption_key_map) {
    +
    602  DCHECK(key_pool_);
    +
    603  DCHECK(encryption_key_map);
    +
    604  Status status =
    +
    605  key_pool_->Push(scoped_refptr<RefCountedEncryptionKeyMap>(
    +
    606  new RefCountedEncryptionKeyMap(encryption_key_map)),
    +
    607  kInfiniteTimeout);
    +
    608  encryption_key_map->clear();
    +
    609  if (!status.ok()) {
    +
    610  DCHECK_EQ(error::STOPPED, status.error_code());
    +
    611  return false;
    +
    612  }
    +
    613  return true;
    +
    614 }
    +
    615 
    +
    616 } // namespace media
    +
    617 } // namespace shaka
    Status FetchKeys(const std::vector< uint8_t > &pssh_box) override
    Status GetCryptoPeriodKey(uint32_t crypto_period_index, TrackType track_type, EncryptionKey *key) override
    Status GetKey(TrackType track_type, EncryptionKey *key) override
    -
    static std::string TrackTypeToString(TrackType track_type)
    Convert TrackType to string.
    Definition: key_source.cc:33
    +
    static std::string TrackTypeToString(TrackType track_type)
    Convert TrackType to string.
    Definition: key_source.cc:37
    static TrackType GetTrackTypeFromString(const std::string &track_type_string)
    Convert string representation of track type to enum representation.
    Definition: key_source.cc:19
    @@ -716,7 +722,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d8c/structshaka_1_1media_1_1mp4_1_1CompositionOffset.html b/docs/d5/d8c/structshaka_1_1media_1_1mp4_1_1CompositionOffset.html index 5e7988a454..321f050e20 100644 --- a/docs/d5/d8c/structshaka_1_1media_1_1mp4_1_1CompositionOffset.html +++ b/docs/d5/d8c/structshaka_1_1media_1_1mp4_1_1CompositionOffset.html @@ -112,7 +112,7 @@ int64_t sample_offset< diff --git a/docs/d5/d8f/webm__cluster__parser_8cc_source.html b/docs/d5/d8f/webm__cluster__parser_8cc_source.html index cfe75224db..e16aa7a4d4 100644 --- a/docs/d5/d8f/webm__cluster__parser_8cc_source.html +++ b/docs/d5/d8f/webm__cluster__parser_8cc_source.html @@ -722,7 +722,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 18fadd95d9..ff763ef27a 100644 --- a/docs/d5/d91/es__parser__adts_8cc_source.html +++ b/docs/d5/d91/es__parser__adts_8cc_source.html @@ -367,7 +367,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d95/structshaka_1_1media_1_1mp4_1_1EditListEntry-members.html b/docs/d5/d95/structshaka_1_1media_1_1mp4_1_1EditListEntry-members.html index ba63fa35db..8ee2809fcb 100644 --- a/docs/d5/d95/structshaka_1_1media_1_1mp4_1_1EditListEntry-members.html +++ b/docs/d5/d95/structshaka_1_1media_1_1mp4_1_1EditListEntry-members.html @@ -100,7 +100,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 bbf3f51bad..5ad35a7b00 100644 --- a/docs/d5/d98/encryptor_8cc_source.html +++ b/docs/d5/d98/encryptor_8cc_source.html @@ -317,7 +317,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d9b/vp__codec__configuration__record_8h_source.html b/docs/d5/d9b/vp__codec__configuration__record_8h_source.html index 35e520d288..0b8299c647 100644 --- a/docs/d5/d9b/vp__codec__configuration__record_8h_source.html +++ b/docs/d5/d9b/vp__codec__configuration__record_8h_source.html @@ -224,7 +224,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d9d/structshaka_1_1media_1_1H265ReferencePictureListModifications.html b/docs/d5/d9d/structshaka_1_1media_1_1H265ReferencePictureListModifications.html index be204090ce..8ead49e424 100644 --- a/docs/d5/d9d/structshaka_1_1media_1_1H265ReferencePictureListModifications.html +++ b/docs/d5/d9d/structshaka_1_1media_1_1H265ReferencePictureListModifications.html @@ -119,7 +119,7 @@ std::vector< int > l diff --git a/docs/d5/da4/aes__encryptor_8cc_source.html b/docs/d5/da4/aes__encryptor_8cc_source.html index 004b23c009..65dbd9727c 100644 --- a/docs/d5/da4/aes__encryptor_8cc_source.html +++ b/docs/d5/da4/aes__encryptor_8cc_source.html @@ -297,7 +297,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/dad/structshaka_1_1media_1_1H265ReferencePictureSet.html b/docs/d5/dad/structshaka_1_1media_1_1H265ReferencePictureSet.html index 1bcbbce2ac..a234c6d1cf 100644 --- a/docs/d5/dad/structshaka_1_1media_1_1H265ReferencePictureSet.html +++ b/docs/d5/dad/structshaka_1_1media_1_1H265ReferencePictureSet.html @@ -127,7 +127,7 @@ int num_delta_pocs diff --git a/docs/d5/db1/classshaka_1_1media_1_1StreamInfo.html b/docs/d5/db1/classshaka_1_1media_1_1StreamInfo.html index 2875baeb1e..e1402cfcae 100644 --- a/docs/d5/db1/classshaka_1_1media_1_1StreamInfo.html +++ b/docs/d5/db1/classshaka_1_1media_1_1StreamInfo.html @@ -235,7 +235,7 @@ class base::RefCountedThre diff --git a/docs/d5/db9/classshaka_1_1media_1_1mp2t_1_1EsParserH264.html b/docs/d5/db9/classshaka_1_1media_1_1mp2t_1_1EsParserH264.html index 478c3b2eab..6b0892ee58 100644 --- a/docs/d5/db9/classshaka_1_1media_1_1mp2t_1_1EsParserH264.html +++ b/docs/d5/db9/classshaka_1_1media_1_1mp2t_1_1EsParserH264.html @@ -161,7 +161,7 @@ const
    diff --git a/docs/d5/dba/ts__packet_8cc_source.html b/docs/d5/dba/ts__packet_8cc_source.html index 7ed7f8cdad..b4562410a1 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 48519f3c46..95061e1514 100644 --- a/docs/d5/dc1/webm__webvtt__parser_8cc_source.html +++ b/docs/d5/dc1/webm__webvtt__parser_8cc_source.html @@ -171,7 +171,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/dc8/structshaka_1_1media_1_1mp4_1_1TrackFragment-members.html b/docs/d5/dc8/structshaka_1_1media_1_1mp4_1_1TrackFragment-members.html index 7cd75a081d..cd71b502ce 100644 --- a/docs/d5/dc8/structshaka_1_1media_1_1mp4_1_1TrackFragment-members.html +++ b/docs/d5/dc8/structshaka_1_1media_1_1mp4_1_1TrackFragment-members.html @@ -117,7 +117,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/dca/structshaka_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset.html b/docs/d5/dca/structshaka_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset.html index 680c6ffe30..79f167203e 100644 --- a/docs/d5/dca/structshaka_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset.html +++ b/docs/d5/dca/structshaka_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset.html @@ -182,7 +182,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 adbe669976..24a783ab0e 100644 --- a/docs/d5/dcf/rsa__key_8h_source.html +++ b/docs/d5/dcf/rsa__key_8h_source.html @@ -165,7 +165,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/dda/ts__section__psi_8h_source.html b/docs/d5/dda/ts__section__psi_8h_source.html index 600539e2db..a5846d0206 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 ca3d8c47d8..2923a1e379 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/de0/classshaka_1_1media_1_1mp2t_1_1PesPacketGenerator.html b/docs/d5/de0/classshaka_1_1media_1_1mp2t_1_1PesPacketGenerator.html index cd7a96609e..21ad5e3b23 100644 --- a/docs/d5/de0/classshaka_1_1media_1_1mp2t_1_1PesPacketGenerator.html +++ b/docs/d5/de0/classshaka_1_1media_1_1mp2t_1_1PesPacketGenerator.html @@ -307,7 +307,7 @@ class PesPacketGeneratorTe diff --git a/docs/d5/dec/classshaka_1_1media_1_1WebMParserClient.html b/docs/d5/dec/classshaka_1_1media_1_1WebMParserClient.html index 9d95867934..47e2d289b7 100644 --- a/docs/d5/dec/classshaka_1_1media_1_1WebMParserClient.html +++ b/docs/d5/dec/classshaka_1_1media_1_1WebMParserClient.html @@ -151,7 +151,7 @@ Protected Member Functions diff --git a/docs/d5/dec/decoder__configuration__record_8cc_source.html b/docs/d5/dec/decoder__configuration__record_8cc_source.html index 65fd01f2a2..b56da06467 100644 --- a/docs/d5/dec/decoder__configuration__record_8cc_source.html +++ b/docs/d5/dec/decoder__configuration__record_8cc_source.html @@ -120,7 +120,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/dec/structshaka_1_1media_1_1mp4_1_1WebVTTConfigurationBox-members.html b/docs/d5/dec/structshaka_1_1media_1_1mp4_1_1WebVTTConfigurationBox-members.html index 22cf079858..1ef0c12992 100644 --- a/docs/d5/dec/structshaka_1_1media_1_1mp4_1_1WebVTTConfigurationBox-members.html +++ b/docs/d5/dec/structshaka_1_1media_1_1mp4_1_1WebVTTConfigurationBox-members.html @@ -109,7 +109,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 4fb71db7d8..71c3eebf24 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/dfa/classshaka_1_1media_1_1HlsNotifyMuxerListener.html b/docs/d5/dfa/classshaka_1_1media_1_1HlsNotifyMuxerListener.html index 71204cee65..77d4a27ab5 100644 --- a/docs/d5/dfa/classshaka_1_1media_1_1HlsNotifyMuxerListener.html +++ b/docs/d5/dfa/classshaka_1_1media_1_1HlsNotifyMuxerListener.html @@ -535,7 +535,7 @@ Additional Inherited Members diff --git a/docs/d5/dfa/classshaka_1_1media_1_1MediaParser-members.html b/docs/d5/dfa/classshaka_1_1media_1_1MediaParser-members.html index 669d261b30..3df7ad8553 100644 --- a/docs/d5/dfa/classshaka_1_1media_1_1MediaParser-members.html +++ b/docs/d5/dfa/classshaka_1_1media_1_1MediaParser-members.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/dfc/file_8cc_source.html b/docs/d5/dfc/file_8cc_source.html index 8e65ee5b2c..793bb6da4c 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/d03/classshaka_1_1media_1_1AesCbcDecryptor-members.html b/docs/d6/d03/classshaka_1_1media_1_1AesCbcDecryptor-members.html index 7eeca7c046..965b575bcf 100644 --- a/docs/d6/d03/classshaka_1_1media_1_1AesCbcDecryptor-members.html +++ b/docs/d6/d03/classshaka_1_1media_1_1AesCbcDecryptor-members.html @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d09/aes__pattern__cryptor_8h_source.html b/docs/d6/d09/aes__pattern__cryptor_8h_source.html index 6a588b39c0..87cca7c2be 100644 --- a/docs/d6/d09/aes__pattern__cryptor_8h_source.html +++ b/docs/d6/d09/aes__pattern__cryptor_8h_source.html @@ -149,7 +149,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 c104067b90..3d562a6d88 100644 --- a/docs/d6/d16/text__stream__info_8cc_source.html +++ b/docs/d6/d16/text__stream__info_8cc_source.html @@ -124,7 +124,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 bf48521dc8..6e535e4060 100644 --- a/docs/d6/d17/es__parser__h264_8cc_source.html +++ b/docs/d6/d17/es__parser__h264_8cc_source.html @@ -261,7 +261,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d1a/structshaka_1_1media_1_1mp4_1_1MovieHeader.html b/docs/d6/d1a/structshaka_1_1media_1_1mp4_1_1MovieHeader.html index 1ceea95864..481dd3aedf 100644 --- a/docs/d6/d1a/structshaka_1_1media_1_1mp4_1_1MovieHeader.html +++ b/docs/d6/d1a/structshaka_1_1media_1_1mp4_1_1MovieHeader.html @@ -200,7 +200,7 @@ Additional Inherited Members diff --git a/docs/d6/d1a/ts__packet__writer__util_8cc_source.html b/docs/d6/d1a/ts__packet__writer__util_8cc_source.html index 4415ce11a7..ce636b0dc2 100644 --- a/docs/d6/d1a/ts__packet__writer__util_8cc_source.html +++ b/docs/d6/d1a/ts__packet__writer__util_8cc_source.html @@ -255,7 +255,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d26/structshaka_1_1media_1_1VideoStreamInfoParameters.html b/docs/d6/d26/structshaka_1_1media_1_1VideoStreamInfoParameters.html index 366237fbeb..bf60ee4a8e 100644 --- a/docs/d6/d26/structshaka_1_1media_1_1VideoStreamInfoParameters.html +++ b/docs/d6/d26/structshaka_1_1media_1_1VideoStreamInfoParameters.html @@ -146,7 +146,7 @@ bool is_encrypted diff --git a/docs/d6/d2e/mpd__notifier__util_8cc_source.html b/docs/d6/d2e/mpd__notifier__util_8cc_source.html index 0a4b3276ec..07ad6c1b83 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/d32/classshaka_1_1media_1_1TextTrack-members.html b/docs/d6/d32/classshaka_1_1media_1_1TextTrack-members.html index 52a821de63..d9c8d5c048 100644 --- a/docs/d6/d32/classshaka_1_1media_1_1TextTrack-members.html +++ b/docs/d6/d32/classshaka_1_1media_1_1TextTrack-members.html @@ -98,7 +98,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 2787d4122e..52cb0a6cdd 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/d3b/chunk__info__iterator_8cc_source.html b/docs/d6/d3b/chunk__info__iterator_8cc_source.html index 0d81359633..5f50fb227a 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 c43879c414..e95c5b6919 100644 --- a/docs/d6/d41/encrypting__fragmenter_8cc_source.html +++ b/docs/d6/d41/encrypting__fragmenter_8cc_source.html @@ -499,7 +499,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); 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 d9d2dadf94..f48e1e6ea4 100644 --- a/docs/d6/d4e/webm_2multi__segment__segmenter_8cc_source.html +++ b/docs/d6/d4e/webm_2multi__segment__segmenter_8cc_source.html @@ -182,12 +182,12 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
    93 } // namespace shaka
    virtual void OnNewSegment(const std::string &segment_name, uint64_t start_time, uint64_t duration, uint64_t segment_file_size)=0
    void Update(const Status &new_status)
    Definition: status.h:117
    - + diff --git a/docs/d6/d55/aes__cryptor_8cc_source.html b/docs/d6/d55/aes__cryptor_8cc_source.html index 207ccf11d8..2c910cf7b9 100644 --- a/docs/d6/d55/aes__cryptor_8cc_source.html +++ b/docs/d6/d55/aes__cryptor_8cc_source.html @@ -227,7 +227,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d57/classshaka_1_1media_1_1AVCDecoderConfigurationRecord.html b/docs/d6/d57/classshaka_1_1media_1_1AVCDecoderConfigurationRecord.html index 53a3c38a18..237bfba759 100644 --- a/docs/d6/d57/classshaka_1_1media_1_1AVCDecoderConfigurationRecord.html +++ b/docs/d6/d57/classshaka_1_1media_1_1AVCDecoderConfigurationRecord.html @@ -244,7 +244,7 @@ void  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 35efa82ff3..0af60a6a30 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/d60/classshaka_1_1media_1_1VPCodecConfigurationRecord-members.html b/docs/d6/d60/classshaka_1_1media_1_1VPCodecConfigurationRecord-members.html index a2a1ccd89b..48eee73443 100644 --- a/docs/d6/d60/classshaka_1_1media_1_1VPCodecConfigurationRecord-members.html +++ b/docs/d6/d60/classshaka_1_1media_1_1VPCodecConfigurationRecord-members.html @@ -134,7 +134,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 d01b3bb30f..6d64487e5f 100644 --- a/docs/d6/d6c/h26x__bit__reader_8cc_source.html +++ b/docs/d6/d6c/h26x__bit__reader_8cc_source.html @@ -259,7 +259,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d6e/ts__section__pes_8cc_source.html b/docs/d6/d6e/ts__section__pes_8cc_source.html index 766234c244..60d5e7ea49 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 65ad1768f7..5423b7ab50 100644 --- a/docs/d6/d71/scoped__xml__ptr_8h_source.html +++ b/docs/d6/d71/scoped__xml__ptr_8h_source.html @@ -132,7 +132,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d77/dash__iop__mpd__notifier_8h_source.html b/docs/d6/d77/dash__iop__mpd__notifier_8h_source.html index 6c61d47550..2d130a678c 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/structshaka_1_1media_1_1mp4_1_1VTTAdditionalTextBox.html b/docs/d6/d79/structshaka_1_1media_1_1mp4_1_1VTTAdditionalTextBox.html index 234fe7947f..ccda8f3e47 100644 --- a/docs/d6/d79/structshaka_1_1media_1_1mp4_1_1VTTAdditionalTextBox.html +++ b/docs/d6/d79/structshaka_1_1media_1_1mp4_1_1VTTAdditionalTextBox.html @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d6/d7b/webm__tracks__parser_8h_source.html b/docs/d6/d7b/webm__tracks__parser_8h_source.html index 6055c89e4b..76695fd43e 100644 --- a/docs/d6/d7b/webm__tracks__parser_8h_source.html +++ b/docs/d6/d7b/webm__tracks__parser_8h_source.html @@ -201,7 +201,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d7c/structshaka_1_1media_1_1mp4_1_1AC3Specific-members.html b/docs/d6/d7c/structshaka_1_1media_1_1mp4_1_1AC3Specific-members.html index ab44f525f1..e2d8e3140d 100644 --- a/docs/d6/d7c/structshaka_1_1media_1_1mp4_1_1AC3Specific-members.html +++ b/docs/d6/d7c/structshaka_1_1media_1_1mp4_1_1AC3Specific-members.html @@ -109,7 +109,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 0503019dea..2e6c233063 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 36d7fa4df3..378127a419 100644 --- a/docs/d6/d8a/vp9__parser_8cc_source.html +++ b/docs/d6/d8a/vp9__parser_8cc_source.html @@ -660,7 +660,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d8f/classshaka_1_1xml_1_1RepresentationBaseXmlNode-members.html b/docs/d6/d8f/classshaka_1_1xml_1_1RepresentationBaseXmlNode-members.html index c60892411f..37ef99fcbb 100644 --- a/docs/d6/d8f/classshaka_1_1xml_1_1RepresentationBaseXmlNode-members.html +++ b/docs/d6/d8f/classshaka_1_1xml_1_1RepresentationBaseXmlNode-members.html @@ -111,7 +111,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 76d0418503..5a2f1287f9 100644 --- a/docs/d6/d9b/h264__parser_8h_source.html +++ b/docs/d6/d9b/h264__parser_8h_source.html @@ -440,7 +440,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d9f/hls__flags_8cc_source.html b/docs/d6/d9f/hls__flags_8cc_source.html index 2054933b21..7dd93d02b0 100644 --- a/docs/d6/d9f/hls__flags_8cc_source.html +++ b/docs/d6/d9f/hls__flags_8cc_source.html @@ -107,7 +107,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 e83b489255..c4de2908da 100644 --- a/docs/d6/da0/ts__section__pat_8h_source.html +++ b/docs/d6/da0/ts__section__pat_8h_source.html @@ -135,7 +135,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/da3/mpd__builder_8h_source.html b/docs/d6/da3/mpd__builder_8h_source.html index 23f3d705f5..dc840d6994 100644 --- a/docs/d6/da3/mpd__builder_8h_source.html +++ b/docs/d6/da3/mpd__builder_8h_source.html @@ -531,7 +531,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/da4/classshaka_1_1media_1_1AVCDecoderConfigurationRecord-members.html b/docs/d6/da4/classshaka_1_1media_1_1AVCDecoderConfigurationRecord-members.html index a79a7a1d92..ea2e3511bb 100644 --- a/docs/d6/da4/classshaka_1_1media_1_1AVCDecoderConfigurationRecord-members.html +++ b/docs/d6/da4/classshaka_1_1media_1_1AVCDecoderConfigurationRecord-members.html @@ -119,7 +119,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/da6/structshaka_1_1media_1_1H265SliceHeader_1_1LongTermPicsInfo-members.html b/docs/d6/da6/structshaka_1_1media_1_1H265SliceHeader_1_1LongTermPicsInfo-members.html index f490302231..5c5257f0d1 100644 --- a/docs/d6/da6/structshaka_1_1media_1_1H265SliceHeader_1_1LongTermPicsInfo-members.html +++ b/docs/d6/da6/structshaka_1_1media_1_1H265SliceHeader_1_1LongTermPicsInfo-members.html @@ -98,7 +98,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/da9/classshaka_1_1media_1_1BitReader.html b/docs/d6/da9/classshaka_1_1media_1_1BitReader.html index 5e85f909f0..a9e9922147 100644 --- a/docs/d6/da9/classshaka_1_1media_1_1BitReader.html +++ b/docs/d6/da9/classshaka_1_1media_1_1BitReader.html @@ -365,7 +365,7 @@ template<typename T > diff --git a/docs/d6/daa/structshaka_1_1media_1_1mp4_1_1VTTCueBox.html b/docs/d6/daa/structshaka_1_1media_1_1mp4_1_1VTTCueBox.html index 4edfa103aa..2c34de3e9d 100644 --- a/docs/d6/daa/structshaka_1_1media_1_1mp4_1_1VTTCueBox.html +++ b/docs/d6/daa/structshaka_1_1media_1_1mp4_1_1VTTCueBox.html @@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/d6/db1/classshaka_1_1media_1_1MediaStream-members.html b/docs/d6/db1/classshaka_1_1media_1_1MediaStream-members.html index fb662e262e..c50aa86a02 100644 --- a/docs/d6/db1/classshaka_1_1media_1_1MediaStream-members.html +++ b/docs/d6/db1/classshaka_1_1media_1_1MediaStream-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/db1/classshaka_1_1media_1_1VideoStreamInfo.html b/docs/d6/db1/classshaka_1_1media_1_1VideoStreamInfo.html index 1e08e57427..a2221d527c 100644 --- a/docs/d6/db1/classshaka_1_1media_1_1VideoStreamInfo.html +++ b/docs/d6/db1/classshaka_1_1media_1_1VideoStreamInfo.html @@ -435,7 +435,7 @@ void set_language (con diff --git a/docs/d6/db1/structshaka_1_1media_1_1VideoStreamInfoParameters-members.html b/docs/d6/db1/structshaka_1_1media_1_1VideoStreamInfoParameters-members.html index eb42022b83..27164d49fa 100644 --- a/docs/d6/db1/structshaka_1_1media_1_1VideoStreamInfoParameters-members.html +++ b/docs/d6/db1/structshaka_1_1media_1_1VideoStreamInfoParameters-members.html @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/dc6/structshaka_1_1media_1_1mp2t_1_1EsParserH26x_1_1VideoSliceInfo-members.html b/docs/d6/dc6/structshaka_1_1media_1_1mp2t_1_1EsParserH26x_1_1VideoSliceInfo-members.html index e59b6f04e5..5814da51c3 100644 --- a/docs/d6/dc6/structshaka_1_1media_1_1mp2t_1_1EsParserH26x_1_1VideoSliceInfo-members.html +++ b/docs/d6/dc6/structshaka_1_1media_1_1mp2t_1_1EsParserH26x_1_1VideoSliceInfo-members.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/dc7/classshaka_1_1media_1_1mp2t_1_1EsParserH26x-members.html b/docs/d6/dc7/classshaka_1_1media_1_1mp2t_1_1EsParserH26x-members.html index e2773e2163..cdc9f20955 100644 --- a/docs/d6/dc7/classshaka_1_1media_1_1mp2t_1_1EsParserH26x-members.html +++ b/docs/d6/dc7/classshaka_1_1media_1_1mp2t_1_1EsParserH26x-members.html @@ -107,7 +107,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/dc8/mkv__writer_8cc_source.html b/docs/d6/dc8/mkv__writer_8cc_source.html index 2dacfee63b..d2508f903e 100644 --- a/docs/d6/dc8/mkv__writer_8cc_source.html +++ b/docs/d6/dc8/mkv__writer_8cc_source.html @@ -195,7 +195,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/dcb/structshaka_1_1media_1_1mp4_1_1SampleEncryptionEntry.html b/docs/d6/dcb/structshaka_1_1media_1_1mp4_1_1SampleEncryptionEntry.html index f3a3b52ef5..555b624c95 100644 --- a/docs/d6/dcb/structshaka_1_1media_1_1mp4_1_1SampleEncryptionEntry.html +++ b/docs/d6/dcb/structshaka_1_1media_1_1mp4_1_1SampleEncryptionEntry.html @@ -250,7 +250,7 @@ std::vector< diff --git a/docs/d6/dcc/classshaka_1_1media_1_1VP9Parser-members.html b/docs/d6/dcc/classshaka_1_1media_1_1VP9Parser-members.html index 7c3983c1df..a271b9b831 100644 --- a/docs/d6/dcc/classshaka_1_1media_1_1VP9Parser-members.html +++ b/docs/d6/dcc/classshaka_1_1media_1_1VP9Parser-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/dce/structshaka_1_1media_1_1mp4_1_1SegmentReference-members.html b/docs/d6/dce/structshaka_1_1media_1_1mp4_1_1SegmentReference-members.html index eb7616f69d..b1a36e422f 100644 --- a/docs/d6/dce/structshaka_1_1media_1_1mp4_1_1SegmentReference-members.html +++ b/docs/d6/dce/structshaka_1_1media_1_1mp4_1_1SegmentReference-members.html @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/dcf/classshaka_1_1media_1_1mp2t_1_1EsParserAdts.html b/docs/d6/dcf/classshaka_1_1media_1_1mp2t_1_1EsParserAdts.html index 552910d7b8..44d547a0d4 100644 --- a/docs/d6/dcf/classshaka_1_1media_1_1mp2t_1_1EsParserAdts.html +++ b/docs/d6/dcf/classshaka_1_1media_1_1mp2t_1_1EsParserAdts.html @@ -148,7 +148,7 @@ const scoped_refptr
    diff --git a/docs/d6/dd0/structshaka_1_1media_1_1H264SEIMessage.html b/docs/d6/dd0/structshaka_1_1media_1_1H264SEIMessage.html index f8551d5c5b..9db188cb5d 100644 --- a/docs/d6/dd0/structshaka_1_1media_1_1H264SEIMessage.html +++ b/docs/d6/dd0/structshaka_1_1media_1_1H264SEIMessage.html @@ -127,7 +127,7 @@ union { diff --git a/docs/d6/dde/structshaka_1_1media_1_1H265VuiParameters-members.html b/docs/d6/dde/structshaka_1_1media_1_1H265VuiParameters-members.html index 796f72d6e8..a65c711aee 100644 --- a/docs/d6/dde/structshaka_1_1media_1_1H265VuiParameters-members.html +++ b/docs/d6/dde/structshaka_1_1media_1_1H265VuiParameters-members.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/de4/structshaka_1_1media_1_1mp4_1_1CueTimeBox-members.html b/docs/d6/de4/structshaka_1_1media_1_1mp4_1_1CueTimeBox-members.html index 6462318e6a..d628fbd7ac 100644 --- a/docs/d6/de4/structshaka_1_1media_1_1mp4_1_1CueTimeBox-members.html +++ b/docs/d6/de4/structshaka_1_1media_1_1mp4_1_1CueTimeBox-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/de7/structshaka_1_1media_1_1VPxFrameInfo-members.html b/docs/d6/de7/structshaka_1_1media_1_1VPxFrameInfo-members.html index ca25eef37e..840e6aa6e1 100644 --- a/docs/d6/de7/structshaka_1_1media_1_1VPxFrameInfo-members.html +++ b/docs/d6/de7/structshaka_1_1media_1_1VPxFrameInfo-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/de8/local__file_8cc_source.html b/docs/d6/de8/local__file_8cc_source.html index 6b5aef1e50..59f078e8e5 100644 --- a/docs/d6/de8/local__file_8cc_source.html +++ b/docs/d6/de8/local__file_8cc_source.html @@ -211,7 +211,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 c76ee717f2..a00a702233 100644 --- a/docs/d6/de8/network__util_8h_source.html +++ b/docs/d6/de8/network__util_8h_source.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/de9/ts__segmenter_8cc_source.html b/docs/d6/de9/ts__segmenter_8cc_source.html index f9532fabad..c41cb9e69a 100644 --- a/docs/d6/de9/ts__segmenter_8cc_source.html +++ b/docs/d6/de9/ts__segmenter_8cc_source.html @@ -120,200 +120,203 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
    31  pes_packet_generator_(new PesPacketGenerator()) {}
    32 TsSegmenter::~TsSegmenter() {}
    33 
    - +
    35  KeySource* encryption_key_source,
    36  uint32_t max_sd_pixels,
    -
    37  double clear_lead_in_seconds) {
    -
    38  if (muxer_options_.segment_template.empty())
    -
    39  return Status(error::MUXER_FAILURE, "Segment template not specified.");
    -
    40  if (!ts_writer_->Initialize(stream_info))
    -
    41  return Status(error::MUXER_FAILURE, "Failed to initialize TsWriter.");
    -
    42  if (!pes_packet_generator_->Initialize(stream_info)) {
    -
    43  return Status(error::MUXER_FAILURE,
    -
    44  "Failed to initialize PesPacketGenerator.");
    -
    45  }
    -
    46 
    -
    47  if (encryption_key_source) {
    -
    48  std::unique_ptr<EncryptionKey> encryption_key(new EncryptionKey());
    -
    49  const KeySource::TrackType type =
    -
    50  GetTrackTypeForEncryption(stream_info, max_sd_pixels);
    -
    51  Status status = encryption_key_source->GetKey(type, encryption_key.get());
    -
    52 
    -
    53  if (encryption_key->iv.empty()) {
    -
    54  if (!AesCryptor::GenerateRandomIv(FOURCC_cbcs, &encryption_key->iv)) {
    -
    55  return Status(error::INTERNAL_ERROR, "Failed to generate random iv.");
    -
    56  }
    -
    57  }
    -
    58  if (!status.ok())
    -
    59  return status;
    -
    60 
    -
    61  encryption_key_ = std::move(encryption_key);
    -
    62  clear_lead_in_seconds_ = clear_lead_in_seconds;
    +
    37  uint32_t max_hd_pixels,
    +
    38  uint32_t max_uhd1_pixels,
    +
    39  double clear_lead_in_seconds) {
    +
    40  if (muxer_options_.segment_template.empty())
    +
    41  return Status(error::MUXER_FAILURE, "Segment template not specified.");
    +
    42  if (!ts_writer_->Initialize(stream_info))
    +
    43  return Status(error::MUXER_FAILURE, "Failed to initialize TsWriter.");
    +
    44  if (!pes_packet_generator_->Initialize(stream_info)) {
    +
    45  return Status(error::MUXER_FAILURE,
    +
    46  "Failed to initialize PesPacketGenerator.");
    +
    47  }
    +
    48 
    +
    49  if (encryption_key_source) {
    +
    50  std::unique_ptr<EncryptionKey> encryption_key(new EncryptionKey());
    +
    51  const KeySource::TrackType type =
    +
    52  GetTrackTypeForEncryption(stream_info, max_sd_pixels,
    +
    53  max_hd_pixels, max_uhd1_pixels);
    +
    54  Status status = encryption_key_source->GetKey(type, encryption_key.get());
    +
    55 
    +
    56  if (encryption_key->iv.empty()) {
    +
    57  if (!AesCryptor::GenerateRandomIv(FOURCC_cbcs, &encryption_key->iv)) {
    +
    58  return Status(error::INTERNAL_ERROR, "Failed to generate random iv.");
    +
    59  }
    +
    60  }
    +
    61  if (!status.ok())
    +
    62  return status;
    63 
    -
    64  if (listener_) {
    -
    65  // For now this only happens once, so send true.
    -
    66  const bool kIsInitialEncryptionInfo = true;
    -
    67  listener_->OnEncryptionInfoReady(
    -
    68  kIsInitialEncryptionInfo, FOURCC_cbcs, encryption_key_->key_id,
    -
    69  encryption_key_->iv, encryption_key_->key_system_info);
    -
    70  }
    -
    71 
    -
    72  status = NotifyEncrypted();
    -
    73  if (!status.ok())
    -
    74  return status;
    -
    75  }
    -
    76 
    -
    77  timescale_scale_ = kTsTimescale / stream_info.time_scale();
    -
    78  return Status::OK;
    -
    79 }
    -
    80 
    - -
    82  return Flush();
    -
    83 }
    -
    84 
    -
    85 // First checks whether the sample is a key frame. If so and the segment has
    -
    86 // passed the segment duration, then flush the generator and write all the data
    -
    87 // to file.
    -
    88 Status TsSegmenter::AddSample(scoped_refptr<MediaSample> sample) {
    -
    89  const bool passed_segment_duration =
    -
    90  current_segment_total_sample_duration_ > muxer_options_.segment_duration;
    -
    91  if (sample->is_key_frame() && passed_segment_duration) {
    -
    92  Status status = Flush();
    -
    93  if (!status.ok())
    -
    94  return status;
    -
    95  }
    -
    96 
    -
    97  if (!ts_writer_file_opened_ && !sample->is_key_frame())
    -
    98  LOG(WARNING) << "A segment will start with a non key frame.";
    +
    64  encryption_key_ = std::move(encryption_key);
    +
    65  clear_lead_in_seconds_ = clear_lead_in_seconds;
    +
    66 
    +
    67  if (listener_) {
    +
    68  // For now this only happens once, so send true.
    +
    69  const bool kIsInitialEncryptionInfo = true;
    +
    70  listener_->OnEncryptionInfoReady(
    +
    71  kIsInitialEncryptionInfo, FOURCC_cbcs, encryption_key_->key_id,
    +
    72  encryption_key_->iv, encryption_key_->key_system_info);
    +
    73  }
    +
    74 
    +
    75  status = NotifyEncrypted();
    +
    76  if (!status.ok())
    +
    77  return status;
    +
    78  }
    +
    79 
    +
    80  timescale_scale_ = kTsTimescale / stream_info.time_scale();
    +
    81  return Status::OK;
    +
    82 }
    +
    83 
    + +
    85  return Flush();
    +
    86 }
    +
    87 
    +
    88 // First checks whether the sample is a key frame. If so and the segment has
    +
    89 // passed the segment duration, then flush the generator and write all the data
    +
    90 // to file.
    +
    91 Status TsSegmenter::AddSample(scoped_refptr<MediaSample> sample) {
    +
    92  const bool passed_segment_duration =
    +
    93  current_segment_total_sample_duration_ > muxer_options_.segment_duration;
    +
    94  if (sample->is_key_frame() && passed_segment_duration) {
    +
    95  Status status = Flush();
    +
    96  if (!status.ok())
    +
    97  return status;
    +
    98  }
    99 
    -
    100  if (!pes_packet_generator_->PushSample(sample)) {
    -
    101  return Status(error::MUXER_FAILURE,
    -
    102  "Failed to add sample to PesPacketGenerator.");
    -
    103  }
    -
    104 
    -
    105  const double scaled_sample_duration = sample->duration() * timescale_scale_;
    -
    106  current_segment_total_sample_duration_ +=
    -
    107  scaled_sample_duration / kTsTimescale;
    -
    108 
    -
    109  return WritePesPacketsToFile();
    -
    110 }
    +
    100  if (!ts_writer_file_opened_ && !sample->is_key_frame())
    +
    101  LOG(WARNING) << "A segment will start with a non key frame.";
    +
    102 
    +
    103  if (!pes_packet_generator_->PushSample(sample)) {
    +
    104  return Status(error::MUXER_FAILURE,
    +
    105  "Failed to add sample to PesPacketGenerator.");
    +
    106  }
    +
    107 
    +
    108  const double scaled_sample_duration = sample->duration() * timescale_scale_;
    +
    109  current_segment_total_sample_duration_ +=
    +
    110  scaled_sample_duration / kTsTimescale;
    111 
    -
    112 void TsSegmenter::InjectTsWriterForTesting(std::unique_ptr<TsWriter> writer) {
    -
    113  ts_writer_ = std::move(writer);
    -
    114 }
    -
    115 
    - -
    117  std::unique_ptr<PesPacketGenerator> generator) {
    -
    118  pes_packet_generator_ = std::move(generator);
    -
    119 }
    -
    120 
    - -
    122  ts_writer_file_opened_ = value;
    -
    123 }
    -
    124 
    -
    125 Status TsSegmenter::OpenNewSegmentIfClosed(uint32_t next_pts) {
    -
    126  if (ts_writer_file_opened_)
    -
    127  return Status::OK;
    -
    128  const std::string segment_name =
    -
    129  GetSegmentName(muxer_options_.segment_template, next_pts,
    -
    130  segment_number_++, muxer_options_.bandwidth);
    -
    131  if (!ts_writer_->NewSegment(segment_name))
    -
    132  return Status(error::MUXER_FAILURE, "Failed to initilize TsPacketWriter.");
    -
    133  current_segment_start_time_ = next_pts;
    -
    134  current_segment_path_ = segment_name;
    -
    135  ts_writer_file_opened_ = true;
    -
    136  return Status::OK;
    -
    137 }
    -
    138 
    -
    139 Status TsSegmenter::WritePesPacketsToFile() {
    -
    140  while (pes_packet_generator_->NumberOfReadyPesPackets() > 0u) {
    -
    141  std::unique_ptr<PesPacket> pes_packet =
    -
    142  pes_packet_generator_->GetNextPesPacket();
    -
    143 
    -
    144  Status status = OpenNewSegmentIfClosed(pes_packet->pts());
    -
    145  if (!status.ok())
    -
    146  return status;
    -
    147 
    -
    148  if (!ts_writer_->AddPesPacket(std::move(pes_packet)))
    -
    149  return Status(error::MUXER_FAILURE, "Failed to add PES packet.");
    -
    150  }
    -
    151  return Status::OK;
    -
    152 }
    -
    153 
    -
    154 Status TsSegmenter::Flush() {
    -
    155  if (!pes_packet_generator_->Flush()) {
    -
    156  return Status(error::MUXER_FAILURE,
    -
    157  "Failed to flush PesPacketGenerator.");
    -
    158  }
    -
    159  Status status = WritePesPacketsToFile();
    -
    160  if (!status.ok())
    -
    161  return status;
    -
    162 
    -
    163  // This method may be called from Finalize() so ts_writer_file_opened_ could
    -
    164  // be false.
    -
    165  if (ts_writer_file_opened_) {
    -
    166  if (!ts_writer_->FinalizeSegment()) {
    -
    167  return Status(error::MUXER_FAILURE, "Failed to finalize TsWriter.");
    -
    168  }
    -
    169  if (listener_) {
    -
    170  const int64_t file_size =
    -
    171  File::GetFileSize(current_segment_path_.c_str());
    -
    172  listener_->OnNewSegment(
    -
    173  current_segment_path_, current_segment_start_time_,
    -
    174  current_segment_total_sample_duration_ * kTsTimescale, file_size);
    -
    175  }
    -
    176  ts_writer_file_opened_ = false;
    -
    177  total_duration_in_seconds_ += current_segment_total_sample_duration_;
    -
    178  }
    -
    179  current_segment_total_sample_duration_ = 0.0;
    -
    180  current_segment_start_time_ = 0;
    -
    181  current_segment_path_.clear();
    -
    182  return NotifyEncrypted();
    -
    183 }
    -
    184 
    -
    185 Status TsSegmenter::NotifyEncrypted() {
    -
    186  if (encryption_key_ && total_duration_in_seconds_ >= clear_lead_in_seconds_) {
    -
    187  if (listener_)
    -
    188  listener_->OnEncryptionStart();
    -
    189 
    -
    190  if (!pes_packet_generator_->SetEncryptionKey(std::move(encryption_key_)))
    -
    191  return Status(error::INTERNAL_ERROR, "Failed to set encryption key.");
    -
    192  ts_writer_->SignalEncrypted();
    -
    193  }
    -
    194  return Status::OK;
    -
    195 }
    -
    196 
    -
    197 } // namespace mp2t
    -
    198 } // namespace media
    -
    199 } // namespace shaka
    +
    112  return WritePesPacketsToFile();
    +
    113 }
    +
    114 
    +
    115 void TsSegmenter::InjectTsWriterForTesting(std::unique_ptr<TsWriter> writer) {
    +
    116  ts_writer_ = std::move(writer);
    +
    117 }
    +
    118 
    + +
    120  std::unique_ptr<PesPacketGenerator> generator) {
    +
    121  pes_packet_generator_ = std::move(generator);
    +
    122 }
    +
    123 
    + +
    125  ts_writer_file_opened_ = value;
    +
    126 }
    +
    127 
    +
    128 Status TsSegmenter::OpenNewSegmentIfClosed(uint32_t next_pts) {
    +
    129  if (ts_writer_file_opened_)
    +
    130  return Status::OK;
    +
    131  const std::string segment_name =
    +
    132  GetSegmentName(muxer_options_.segment_template, next_pts,
    +
    133  segment_number_++, muxer_options_.bandwidth);
    +
    134  if (!ts_writer_->NewSegment(segment_name))
    +
    135  return Status(error::MUXER_FAILURE, "Failed to initilize TsPacketWriter.");
    +
    136  current_segment_start_time_ = next_pts;
    +
    137  current_segment_path_ = segment_name;
    +
    138  ts_writer_file_opened_ = true;
    +
    139  return Status::OK;
    +
    140 }
    +
    141 
    +
    142 Status TsSegmenter::WritePesPacketsToFile() {
    +
    143  while (pes_packet_generator_->NumberOfReadyPesPackets() > 0u) {
    +
    144  std::unique_ptr<PesPacket> pes_packet =
    +
    145  pes_packet_generator_->GetNextPesPacket();
    +
    146 
    +
    147  Status status = OpenNewSegmentIfClosed(pes_packet->pts());
    +
    148  if (!status.ok())
    +
    149  return status;
    +
    150 
    +
    151  if (!ts_writer_->AddPesPacket(std::move(pes_packet)))
    +
    152  return Status(error::MUXER_FAILURE, "Failed to add PES packet.");
    +
    153  }
    +
    154  return Status::OK;
    +
    155 }
    +
    156 
    +
    157 Status TsSegmenter::Flush() {
    +
    158  if (!pes_packet_generator_->Flush()) {
    +
    159  return Status(error::MUXER_FAILURE,
    +
    160  "Failed to flush PesPacketGenerator.");
    +
    161  }
    +
    162  Status status = WritePesPacketsToFile();
    +
    163  if (!status.ok())
    +
    164  return status;
    +
    165 
    +
    166  // This method may be called from Finalize() so ts_writer_file_opened_ could
    +
    167  // be false.
    +
    168  if (ts_writer_file_opened_) {
    +
    169  if (!ts_writer_->FinalizeSegment()) {
    +
    170  return Status(error::MUXER_FAILURE, "Failed to finalize TsWriter.");
    +
    171  }
    +
    172  if (listener_) {
    +
    173  const int64_t file_size =
    +
    174  File::GetFileSize(current_segment_path_.c_str());
    +
    175  listener_->OnNewSegment(
    +
    176  current_segment_path_, current_segment_start_time_,
    +
    177  current_segment_total_sample_duration_ * kTsTimescale, file_size);
    +
    178  }
    +
    179  ts_writer_file_opened_ = false;
    +
    180  total_duration_in_seconds_ += current_segment_total_sample_duration_;
    +
    181  }
    +
    182  current_segment_total_sample_duration_ = 0.0;
    +
    183  current_segment_start_time_ = 0;
    +
    184  current_segment_path_.clear();
    +
    185  return NotifyEncrypted();
    +
    186 }
    +
    187 
    +
    188 Status TsSegmenter::NotifyEncrypted() {
    +
    189  if (encryption_key_ && total_duration_in_seconds_ >= clear_lead_in_seconds_) {
    +
    190  if (listener_)
    +
    191  listener_->OnEncryptionStart();
    +
    192 
    +
    193  if (!pes_packet_generator_->SetEncryptionKey(std::move(encryption_key_)))
    +
    194  return Status(error::INTERNAL_ERROR, "Failed to set encryption key.");
    +
    195  ts_writer_->SignalEncrypted();
    +
    196  }
    +
    197  return Status::OK;
    +
    198 }
    +
    199 
    +
    200 } // namespace mp2t
    +
    201 } // namespace media
    +
    202 } // namespace shaka
    virtual void OnNewSegment(const std::string &segment_name, uint64_t start_time, uint64_t duration, uint64_t segment_file_size)=0
    virtual void OnEncryptionInfoReady(bool is_initial_encryption_info, FourCC protection_scheme, const std::vector< uint8_t > &key_id, const std::vector< uint8_t > &iv, const std::vector< ProtectionSystemSpecificInfo > &key_system_info)=0
    Abstract class holds stream information.
    Definition: stream_info.h:53
    -
    Status AddSample(scoped_refptr< MediaSample > sample)
    Definition: ts_segmenter.cc:88
    - +
    Status AddSample(scoped_refptr< MediaSample > sample)
    Definition: ts_segmenter.cc:91
    +
    virtual void OnEncryptionStart()=0
    This structure contains the list of configuration options for Muxer.
    Definition: muxer_options.h:18
    virtual Status GetKey(TrackType track_type, EncryptionKey *key)=0
    TsSegmenter(const MuxerOptions &options, MuxerListener *listener)
    Definition: ts_segmenter.cc:27
    static bool GenerateRandomIv(FourCC protection_scheme, std::vector< uint8_t > *iv)
    Definition: aes_cryptor.cc:107
    -
    void InjectPesPacketGeneratorForTesting(std::unique_ptr< PesPacketGenerator > generator)
    Only for testing.
    -
    void SetTsWriterFileOpenedForTesting(bool value)
    Only for testing.
    -
    void InjectTsWriterForTesting(std::unique_ptr< TsWriter > writer)
    Only for testing.
    +
    void InjectPesPacketGeneratorForTesting(std::unique_ptr< PesPacketGenerator > generator)
    Only for testing.
    +
    void SetTsWriterFileOpenedForTesting(bool value)
    Only for testing.
    +
    void InjectTsWriterForTesting(std::unique_ptr< TsWriter > writer)
    Only for testing.
    +
    Status Initialize(const StreamInfo &stream_info, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds)
    Definition: ts_segmenter.cc:34
    static int64_t GetFileSize(const char *file_name)
    Definition: file.cc:176
    KeySource is responsible for encryption key acquisition.
    Definition: key_source.h:30
    -
    Status Initialize(const StreamInfo &stream_info, KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds)
    Definition: ts_segmenter.cc:34
    diff --git a/docs/d6/ded/ts__packet_8h_source.html b/docs/d6/ded/ts__packet_8h_source.html index 47e4db9acf..b59d6e0d0c 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 0231bf1421..c7a25bbcf0 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/dff/classshaka_1_1media_1_1Nalu.html b/docs/d6/dff/classshaka_1_1media_1_1Nalu.html index a422c32e4c..4858ae32db 100644 --- a/docs/d6/dff/classshaka_1_1media_1_1Nalu.html +++ b/docs/d6/dff/classshaka_1_1media_1_1Nalu.html @@ -243,7 +243,7 @@ bool can_start_access_unit diff --git a/docs/d7/d01/structshaka_1_1media_1_1mp4_1_1SampleGroupDescription.html b/docs/d7/d01/structshaka_1_1media_1_1mp4_1_1SampleGroupDescription.html index 570cd87735..834a30df00 100644 --- a/docs/d7/d01/structshaka_1_1media_1_1mp4_1_1SampleGroupDescription.html +++ b/docs/d7/d01/structshaka_1_1media_1_1mp4_1_1SampleGroupDescription.html @@ -194,7 +194,7 @@ Additional Inherited Members diff --git a/docs/d7/d07/structshaka_1_1media_1_1mp4_1_1SoundMediaHeader.html b/docs/d7/d07/structshaka_1_1media_1_1mp4_1_1SoundMediaHeader.html index df962027c8..d2f69b6497 100644 --- a/docs/d7/d07/structshaka_1_1media_1_1mp4_1_1SoundMediaHeader.html +++ b/docs/d7/d07/structshaka_1_1media_1_1mp4_1_1SoundMediaHeader.html @@ -182,7 +182,7 @@ Additional Inherited Members 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 058568b9f4..a6f6372cd7 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/d12/media__parser_8h_source.html b/docs/d7/d12/media__parser_8h_source.html index d8029c26f4..d8f3170a21 100644 --- a/docs/d7/d12/media__parser_8h_source.html +++ b/docs/d7/d12/media__parser_8h_source.html @@ -149,7 +149,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d15/mpd__notifier_8h_source.html b/docs/d7/d15/mpd__notifier_8h_source.html index 1dfd3ff1d0..f698684f67 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/d16/structshaka_1_1media_1_1mp4_1_1VideoSampleEntry-members.html b/docs/d7/d16/structshaka_1_1media_1_1mp4_1_1VideoSampleEntry-members.html index 1acf9e8724..04655262cd 100644 --- a/docs/d7/d16/structshaka_1_1media_1_1mp4_1_1VideoSampleEntry-members.html +++ b/docs/d7/d16/structshaka_1_1media_1_1mp4_1_1VideoSampleEntry-members.html @@ -117,7 +117,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d22/libcrypto__threading_8h_source.html b/docs/d7/d22/libcrypto__threading_8h_source.html index d2e1816e97..b12e15e040 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/d26/classshaka_1_1media_1_1mp4_1_1SyncSampleIterator.html b/docs/d7/d26/classshaka_1_1media_1_1mp4_1_1SyncSampleIterator.html index 381b901f71..c88336f3e3 100644 --- a/docs/d7/d26/classshaka_1_1media_1_1mp4_1_1SyncSampleIterator.html +++ b/docs/d7/d26/classshaka_1_1media_1_1mp4_1_1SyncSampleIterator.html @@ -177,7 +177,7 @@ Public Member Functions diff --git a/docs/d7/d29/structshaka_1_1media_1_1H265Sps-members.html b/docs/d7/d29/structshaka_1_1media_1_1H265Sps-members.html index 0d03e81b08..3f9dd1db57 100644 --- a/docs/d7/d29/structshaka_1_1media_1_1H265Sps-members.html +++ b/docs/d7/d29/structshaka_1_1media_1_1H265Sps-members.html @@ -146,7 +146,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d29/structshaka_1_1media_1_1mp4_1_1CompositionTimeToSample-members.html b/docs/d7/d29/structshaka_1_1media_1_1mp4_1_1CompositionTimeToSample-members.html index ca814973e8..ab28b121ca 100644 --- a/docs/d7/d29/structshaka_1_1media_1_1mp4_1_1CompositionTimeToSample-members.html +++ b/docs/d7/d29/structshaka_1_1media_1_1mp4_1_1CompositionTimeToSample-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d36/classshaka_1_1media_1_1ContentEncoding-members.html b/docs/d7/d36/classshaka_1_1media_1_1ContentEncoding-members.html index 9115b085a9..89328d2579 100644 --- a/docs/d7/d36/classshaka_1_1media_1_1ContentEncoding-members.html +++ b/docs/d7/d36/classshaka_1_1media_1_1ContentEncoding-members.html @@ -132,7 +132,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 dac8e41e85..395845012f 100644 --- a/docs/d7/d42/protection__system__specific__info_8cc_source.html +++ b/docs/d7/d42/protection__system__specific__info_8cc_source.html @@ -219,7 +219,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d42/structshaka_1_1media_1_1mp4_1_1SampleSize.html b/docs/d7/d42/structshaka_1_1media_1_1mp4_1_1SampleSize.html index b233fd1658..1e8957a6e3 100644 --- a/docs/d7/d42/structshaka_1_1media_1_1mp4_1_1SampleSize.html +++ b/docs/d7/d42/structshaka_1_1media_1_1mp4_1_1SampleSize.html @@ -188,7 +188,7 @@ Additional Inherited Members diff --git a/docs/d7/d44/structshaka_1_1media_1_1mp4_1_1SampleEncryption-members.html b/docs/d7/d44/structshaka_1_1media_1_1mp4_1_1SampleEncryption-members.html index a55c195fde..d8d7516a0a 100644 --- a/docs/d7/d44/structshaka_1_1media_1_1mp4_1_1SampleEncryption-members.html +++ b/docs/d7/d44/structshaka_1_1media_1_1mp4_1_1SampleEncryption-members.html @@ -118,7 +118,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d46/classshaka_1_1media_1_1WebMListParser-members.html b/docs/d7/d46/classshaka_1_1media_1_1WebMListParser-members.html index 6013faf833..66e62b3c98 100644 --- a/docs/d7/d46/classshaka_1_1media_1_1WebMListParser-members.html +++ b/docs/d7/d46/classshaka_1_1media_1_1WebMListParser-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d54/classshaka_1_1media_1_1H26xByteToUnitStreamConverter-members.html b/docs/d7/d54/classshaka_1_1media_1_1H26xByteToUnitStreamConverter-members.html index ee031b101c..e00d88cdeb 100644 --- a/docs/d7/d54/classshaka_1_1media_1_1H26xByteToUnitStreamConverter-members.html +++ b/docs/d7/d54/classshaka_1_1media_1_1H26xByteToUnitStreamConverter-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d59/classshaka_1_1media_1_1DecryptorSource.html b/docs/d7/d59/classshaka_1_1media_1_1DecryptorSource.html index 811945b227..3651c96d6d 100644 --- a/docs/d7/d59/classshaka_1_1media_1_1DecryptorSource.html +++ b/docs/d7/d59/classshaka_1_1media_1_1DecryptorSource.html @@ -119,7 +119,7 @@ bool DecryptSampleBuffer diff --git a/docs/d7/d6d/classshaka_1_1media_1_1MediaSample.html b/docs/d7/d6d/classshaka_1_1media_1_1MediaSample.html index d0163df92a..94958e66b5 100644 --- a/docs/d7/d6d/classshaka_1_1media_1_1MediaSample.html +++ b/docs/d7/d6d/classshaka_1_1media_1_1MediaSample.html @@ -417,7 +417,7 @@ class base::RefCountedThre diff --git a/docs/d7/d75/structshaka_1_1media_1_1mp4_1_1MediaHeader-members.html b/docs/d7/d75/structshaka_1_1media_1_1mp4_1_1MediaHeader-members.html index a4ba1e7b81..9af2783e75 100644 --- a/docs/d7/d75/structshaka_1_1media_1_1mp4_1_1MediaHeader-members.html +++ b/docs/d7/d75/structshaka_1_1media_1_1mp4_1_1MediaHeader-members.html @@ -117,7 +117,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d78/structshaka_1_1media_1_1H264SEIMessage-members.html b/docs/d7/d78/structshaka_1_1media_1_1H264SEIMessage-members.html index 847559fc13..0f951733db 100644 --- a/docs/d7/d78/structshaka_1_1media_1_1H264SEIMessage-members.html +++ b/docs/d7/d78/structshaka_1_1media_1_1H264SEIMessage-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d7a/classshaka_1_1media_1_1UdpFile.html b/docs/d7/d7a/classshaka_1_1media_1_1UdpFile.html index 74702e0ab9..7a22e4b0e3 100644 --- a/docs/d7/d7a/classshaka_1_1media_1_1UdpFile.html +++ b/docs/d7/d7a/classshaka_1_1media_1_1UdpFile.html @@ -463,7 +463,7 @@ Additional Inherited Members diff --git a/docs/d7/d7c/vlog__flags_8h_source.html b/docs/d7/d7c/vlog__flags_8h_source.html index 2d1ecacff8..939a45b020 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/d87/video__stream__info_8h_source.html b/docs/d7/d87/video__stream__info_8h_source.html index e0b11002ae..434c01c5f1 100644 --- a/docs/d7/d87/video__stream__info_8h_source.html +++ b/docs/d7/d87/video__stream__info_8h_source.html @@ -171,7 +171,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d9c/structshaka_1_1media_1_1H265SliceHeader_1_1LongTermPicsInfo.html b/docs/d7/d9c/structshaka_1_1media_1_1H265SliceHeader_1_1LongTermPicsInfo.html index e17d8258d8..22bd392a8f 100644 --- a/docs/d7/d9c/structshaka_1_1media_1_1H265SliceHeader_1_1LongTermPicsInfo.html +++ b/docs/d7/d9c/structshaka_1_1media_1_1H265SliceHeader_1_1LongTermPicsInfo.html @@ -112,7 +112,7 @@ int delta_poc_msb_cycle_lt diff --git a/docs/d7/d9d/progress__listener_8h_source.html b/docs/d7/d9d/progress__listener_8h_source.html index bb48ec38ad..19087c4d8a 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 d56c33b6cc..53c73b46fd 100644 --- a/docs/d7/da4/track__run__iterator_8h_source.html +++ b/docs/d7/da4/track__run__iterator_8h_source.html @@ -195,7 +195,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/dae/structshaka_1_1media_1_1mp4_1_1MediaData.html b/docs/d7/dae/structshaka_1_1media_1_1mp4_1_1MediaData.html index 63ff356d45..89f7450ec0 100644 --- a/docs/d7/dae/structshaka_1_1media_1_1mp4_1_1MediaData.html +++ b/docs/d7/dae/structshaka_1_1media_1_1mp4_1_1MediaData.html @@ -173,7 +173,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 27985077de..85f23251d7 100644 --- a/docs/d7/db0/mpd__writer_8h_source.html +++ b/docs/d7/db0/mpd__writer_8h_source.html @@ -183,7 +183,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/db7/structshaka_1_1media_1_1mp4_1_1SampleToChunk-members.html b/docs/d7/db7/structshaka_1_1media_1_1mp4_1_1SampleToChunk-members.html index f2e59362cd..1f5676046b 100644 --- a/docs/d7/db7/structshaka_1_1media_1_1mp4_1_1SampleToChunk-members.html +++ b/docs/d7/db7/structshaka_1_1media_1_1mp4_1_1SampleToChunk-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/dc3/structshaka_1_1media_1_1mp4_1_1TextSampleEntry.html b/docs/d7/dc3/structshaka_1_1media_1_1mp4_1_1TextSampleEntry.html index c1cb507850..657cf8f767 100644 --- a/docs/d7/dc3/structshaka_1_1media_1_1mp4_1_1TextSampleEntry.html +++ b/docs/d7/dc3/structshaka_1_1media_1_1mp4_1_1TextSampleEntry.html @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/d7/dc6/byte__queue_8h_source.html b/docs/d7/dc6/byte__queue_8h_source.html index 6b172ea229..d1610d2267 100644 --- a/docs/d7/dc6/byte__queue_8h_source.html +++ b/docs/d7/dc6/byte__queue_8h_source.html @@ -146,7 +146,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/dd0/mpd__notifier__util_8h_source.html b/docs/d7/dd0/mpd__notifier__util_8h_source.html index a5030b9c9a..b5c1cfe2de 100644 --- a/docs/d7/dd0/mpd__notifier__util_8h_source.html +++ b/docs/d7/dd0/mpd__notifier__util_8h_source.html @@ -128,7 +128,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/dd4/request__signer_8h_source.html b/docs/d7/dd4/request__signer_8h_source.html index 36781ec32c..7942817df0 100644 --- a/docs/d7/dd4/request__signer_8h_source.html +++ b/docs/d7/dd4/request__signer_8h_source.html @@ -179,7 +179,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/dd5/classshaka_1_1media_1_1mp4_1_1MP4MediaParser.html b/docs/d7/dd5/classshaka_1_1media_1_1mp4_1_1MP4MediaParser.html index 7e0cdd6c85..c99a072139 100644 --- a/docs/d7/dd5/classshaka_1_1media_1_1mp4_1_1MP4MediaParser.html +++ b/docs/d7/dd5/classshaka_1_1media_1_1mp4_1_1MP4MediaParser.html @@ -285,7 +285,7 @@ track_id, const scoped_refptr
    diff --git a/docs/d7/dd6/key__source_8cc_source.html b/docs/d7/dd6/key__source_8cc_source.html index 95de41605a..83438ba566 100644 --- a/docs/d7/dd6/key__source_8cc_source.html +++ b/docs/d7/dd6/key__source_8cc_source.html @@ -111,38 +111,46 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
    22  return TRACK_TYPE_SD;
    23  if (track_type_string == "HD")
    24  return TRACK_TYPE_HD;
    -
    25  if (track_type_string == "AUDIO")
    -
    26  return TRACK_TYPE_AUDIO;
    -
    27  if (track_type_string == "UNSPECIFIED")
    -
    28  return TRACK_TYPE_UNSPECIFIED;
    -
    29  LOG(WARNING) << "Unexpected track type: " << track_type_string;
    -
    30  return TRACK_TYPE_UNKNOWN;
    -
    31 }
    -
    32 
    -
    33 std::string KeySource::TrackTypeToString(TrackType track_type) {
    -
    34  switch (track_type) {
    -
    35  case TRACK_TYPE_SD:
    -
    36  return "SD";
    -
    37  case TRACK_TYPE_HD:
    -
    38  return "HD";
    -
    39  case TRACK_TYPE_AUDIO:
    -
    40  return "AUDIO";
    -
    41  default:
    -
    42  NOTIMPLEMENTED() << "Unknown track type: " << track_type;
    -
    43  return "UNKNOWN";
    -
    44  }
    -
    45 }
    -
    46 
    -
    47 KeySource::KeySource() {}
    -
    48 
    -
    49 } // namespace media
    -
    50 } // namespace shaka
    -
    static std::string TrackTypeToString(TrackType track_type)
    Convert TrackType to string.
    Definition: key_source.cc:33
    +
    25  if (track_type_string == "UHD1")
    +
    26  return TRACK_TYPE_UHD1;
    +
    27  if (track_type_string == "UHD2")
    +
    28  return TRACK_TYPE_UHD2;
    +
    29  if (track_type_string == "AUDIO")
    +
    30  return TRACK_TYPE_AUDIO;
    +
    31  if (track_type_string == "UNSPECIFIED")
    +
    32  return TRACK_TYPE_UNSPECIFIED;
    +
    33  LOG(WARNING) << "Unexpected track type: " << track_type_string;
    +
    34  return TRACK_TYPE_UNKNOWN;
    +
    35 }
    +
    36 
    +
    37 std::string KeySource::TrackTypeToString(TrackType track_type) {
    +
    38  switch (track_type) {
    +
    39  case TRACK_TYPE_SD:
    +
    40  return "SD";
    +
    41  case TRACK_TYPE_HD:
    +
    42  return "HD";
    +
    43  case TRACK_TYPE_UHD1:
    +
    44  return "UHD1";
    +
    45  case TRACK_TYPE_UHD2:
    +
    46  return "UHD2";
    +
    47  case TRACK_TYPE_AUDIO:
    +
    48  return "AUDIO";
    +
    49  default:
    +
    50  NOTIMPLEMENTED() << "Unknown track type: " << track_type;
    +
    51  return "UNKNOWN";
    +
    52  }
    +
    53 }
    +
    54 
    +
    55 KeySource::KeySource() {}
    +
    56 
    +
    57 } // namespace media
    +
    58 } // namespace shaka
    +
    static std::string TrackTypeToString(TrackType track_type)
    Convert TrackType to string.
    Definition: key_source.cc:37
    static TrackType GetTrackTypeFromString(const std::string &track_type_string)
    Convert string representation of track type to enum representation.
    Definition: key_source.cc:19
    diff --git a/docs/d7/dda/classshaka_1_1media_1_1ByteQueue.html b/docs/d7/dda/classshaka_1_1media_1_1ByteQueue.html index 0482c41cad..c00e23660b 100644 --- a/docs/d7/dda/classshaka_1_1media_1_1ByteQueue.html +++ b/docs/d7/dda/classshaka_1_1media_1_1ByteQueue.html @@ -177,7 +177,7 @@ void  diff --git a/docs/d7/ddd/classshaka_1_1media_1_1RsaRequestSigner.html b/docs/d7/ddd/classshaka_1_1media_1_1RsaRequestSigner.html index 6efd8c5821..c9b8237abc 100644 --- a/docs/d7/ddd/classshaka_1_1media_1_1RsaRequestSigner.html +++ b/docs/d7/ddd/classshaka_1_1media_1_1RsaRequestSigner.html @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/d7/de0/classshaka_1_1media_1_1HttpKeyFetcher.html b/docs/d7/de0/classshaka_1_1media_1_1HttpKeyFetcher.html index f9e8f6ccd4..2348d539a9 100644 --- a/docs/d7/de0/classshaka_1_1media_1_1HttpKeyFetcher.html +++ b/docs/d7/de0/classshaka_1_1media_1_1HttpKeyFetcher.html @@ -311,7 +311,7 @@ KeyFetcher implementation overrides. diff --git a/docs/d7/de0/structshaka_1_1media_1_1mp4_1_1SampleToGroupEntry.html b/docs/d7/de0/structshaka_1_1media_1_1mp4_1_1SampleToGroupEntry.html index 1f5431c0c5..ffe7897fb8 100644 --- a/docs/d7/de0/structshaka_1_1media_1_1mp4_1_1SampleToGroupEntry.html +++ b/docs/d7/de0/structshaka_1_1media_1_1mp4_1_1SampleToGroupEntry.html @@ -120,7 +120,7 @@ uint32_t group_description 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 2324ec7d47..8405e7eb9e 100644 --- a/docs/d7/dec/h264__byte__to__unit__stream__converter_8h_source.html +++ b/docs/d7/dec/h264__byte__to__unit__stream__converter_8h_source.html @@ -134,7 +134,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/dee/mpd__generator_8cc_source.html b/docs/d7/dee/mpd__generator_8cc_source.html index 18dfaf7877..0d04c14126 100644 --- a/docs/d7/dee/mpd__generator_8cc_source.html +++ b/docs/d7/dee/mpd__generator_8cc_source.html @@ -231,7 +231,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 d7ac335059..9669c327b4 100644 --- a/docs/d7/def/mp4__media__parser_8cc_source.html +++ b/docs/d7/def/mp4__media__parser_8cc_source.html @@ -872,7 +872,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 f0dbf2c6c2..f4d636b355 100644 --- a/docs/d7/df9/byte__queue_8cc_source.html +++ b/docs/d7/df9/byte__queue_8cc_source.html @@ -182,7 +182,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d08/classshaka_1_1media_1_1H264ByteToUnitStreamConverter.html b/docs/d8/d08/classshaka_1_1media_1_1H264ByteToUnitStreamConverter.html index fa1ffb462c..89ff6bcbb2 100644 --- a/docs/d8/d08/classshaka_1_1media_1_1H264ByteToUnitStreamConverter.html +++ b/docs/d8/d08/classshaka_1_1media_1_1H264ByteToUnitStreamConverter.html @@ -171,7 +171,7 @@ static const size_t kUnitS diff --git a/docs/d8/d08/classshaka_1_1media_1_1WebMClusterParser-members.html b/docs/d8/d08/classshaka_1_1media_1_1WebMClusterParser-members.html index 0ab17fe309..e145de09c7 100644 --- a/docs/d8/d08/classshaka_1_1media_1_1WebMClusterParser-members.html +++ b/docs/d8/d08/classshaka_1_1media_1_1WebMClusterParser-members.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d08/classshaka_1_1media_1_1mp2t_1_1TsWriter-members.html b/docs/d8/d08/classshaka_1_1media_1_1mp2t_1_1TsWriter-members.html index eebef1011e..d954e35a20 100644 --- a/docs/d8/d08/classshaka_1_1media_1_1mp2t_1_1TsWriter-members.html +++ b/docs/d8/d08/classshaka_1_1media_1_1mp2t_1_1TsWriter-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d08/structshaka_1_1media_1_1mp4_1_1MovieHeader-members.html b/docs/d8/d08/structshaka_1_1media_1_1mp4_1_1MovieHeader-members.html index dea726a236..0eee2c3a79 100644 --- a/docs/d8/d08/structshaka_1_1media_1_1mp4_1_1MovieHeader-members.html +++ b/docs/d8/d08/structshaka_1_1media_1_1mp4_1_1MovieHeader-members.html @@ -119,7 +119,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d0d/media__sample_8cc_source.html b/docs/d8/d0d/media__sample_8cc_source.html index 50ff66a1c1..6bc7858c4e 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/d12/structshaka_1_1media_1_1mp4_1_1DecodingTime.html b/docs/d8/d12/structshaka_1_1media_1_1mp4_1_1DecodingTime.html index 3ef3f76f2f..e23fcfd5e4 100644 --- a/docs/d8/d12/structshaka_1_1media_1_1mp4_1_1DecodingTime.html +++ b/docs/d8/d12/structshaka_1_1media_1_1mp4_1_1DecodingTime.html @@ -112,7 +112,7 @@ uint32_t sample_delta< diff --git a/docs/d8/d12/structshaka_1_1media_1_1mp4_1_1PrivFrame-members.html b/docs/d8/d12/structshaka_1_1media_1_1mp4_1_1PrivFrame-members.html index f112800a20..145f1ebfd2 100644 --- a/docs/d8/d12/structshaka_1_1media_1_1mp4_1_1PrivFrame-members.html +++ b/docs/d8/d12/structshaka_1_1media_1_1mp4_1_1PrivFrame-members.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d13/classshaka_1_1media_1_1BitReader-members.html b/docs/d8/d13/classshaka_1_1media_1_1BitReader-members.html index 4ebc77f00b..a33ee77892 100644 --- a/docs/d8/d13/classshaka_1_1media_1_1BitReader-members.html +++ b/docs/d8/d13/classshaka_1_1media_1_1BitReader-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d14/classshaka_1_1media_1_1VP8Parser.html b/docs/d8/d14/classshaka_1_1media_1_1VP8Parser.html index e64114c202..151b406cb8 100644 --- a/docs/d8/d14/classshaka_1_1media_1_1VP8Parser.html +++ b/docs/d8/d14/classshaka_1_1media_1_1VP8Parser.html @@ -235,7 +235,7 @@ Additional Inherited Members diff --git a/docs/d8/d16/structshaka_1_1media_1_1MuxerOptions-members.html b/docs/d8/d16/structshaka_1_1media_1_1MuxerOptions-members.html index 10d75f7436..c80d46620a 100644 --- a/docs/d8/d16/structshaka_1_1media_1_1MuxerOptions-members.html +++ b/docs/d8/d16/structshaka_1_1media_1_1MuxerOptions-members.html @@ -110,7 +110,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 c20ddf31ba..3fcf649d87 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/d20/structshaka_1_1media_1_1mp4_1_1WebVTTConfigurationBox.html b/docs/d8/d20/structshaka_1_1media_1_1mp4_1_1WebVTTConfigurationBox.html index acd7481d8f..ee2dea4930 100644 --- a/docs/d8/d20/structshaka_1_1media_1_1mp4_1_1WebVTTConfigurationBox.html +++ b/docs/d8/d20/structshaka_1_1media_1_1mp4_1_1WebVTTConfigurationBox.html @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d8/d23/structshaka_1_1media_1_1SubsampleEntry-members.html b/docs/d8/d23/structshaka_1_1media_1_1SubsampleEntry-members.html index 8459d1249b..aca03f5d35 100644 --- a/docs/d8/d23/structshaka_1_1media_1_1SubsampleEntry-members.html +++ b/docs/d8/d23/structshaka_1_1media_1_1SubsampleEntry-members.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d28/es__parser__h265_8h_source.html b/docs/d8/d28/es__parser__h265_8h_source.html index 21661cb82f..e0574a9578 100644 --- a/docs/d8/d28/es__parser__h265_8h_source.html +++ b/docs/d8/d28/es__parser__h265_8h_source.html @@ -153,7 +153,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 fd99429a3b..2100332266 100644 --- a/docs/d8/d33/webm__content__encodings__client_8h_source.html +++ b/docs/d8/d33/webm__content__encodings__client_8h_source.html @@ -139,7 +139,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d3e/classshaka_1_1media_1_1StreamDescriptorCompareFn.html b/docs/d8/d3e/classshaka_1_1media_1_1StreamDescriptorCompareFn.html index 247ef93eb0..49502a1214 100644 --- a/docs/d8/d3e/classshaka_1_1media_1_1StreamDescriptorCompareFn.html +++ b/docs/d8/d3e/classshaka_1_1media_1_1StreamDescriptorCompareFn.html @@ -109,7 +109,7 @@ bool operator() (const diff --git a/docs/d8/d4d/aes__decryptor_8h_source.html b/docs/d8/d4d/aes__decryptor_8h_source.html index 38d2ee6fef..faabcd75f1 100644 --- a/docs/d8/d4d/aes__decryptor_8h_source.html +++ b/docs/d8/d4d/aes__decryptor_8h_source.html @@ -147,7 +147,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d5b/structshaka_1_1media_1_1mp4_1_1AudioSampleEntry.html b/docs/d8/d5b/structshaka_1_1media_1_1mp4_1_1AudioSampleEntry.html index 292c28f699..91060cbdee 100644 --- a/docs/d8/d5b/structshaka_1_1media_1_1mp4_1_1AudioSampleEntry.html +++ b/docs/d8/d5b/structshaka_1_1media_1_1mp4_1_1AudioSampleEntry.html @@ -206,7 +206,7 @@ Additional Inherited Members diff --git a/docs/d8/d5c/classshaka_1_1media_1_1MediaStream.html b/docs/d8/d5c/classshaka_1_1media_1_1MediaStream.html index 704672159e..f57fdc34d8 100644 --- a/docs/d8/d5c/classshaka_1_1media_1_1MediaStream.html +++ b/docs/d8/d5c/classshaka_1_1media_1_1MediaStream.html @@ -225,7 +225,7 @@ const scoped_refptr< diff --git a/docs/d8/d6a/classshaka_1_1media_1_1ClusterBuilder-members.html b/docs/d8/d6a/classshaka_1_1media_1_1ClusterBuilder-members.html index 52edbc4e78..fe752c7044 100644 --- a/docs/d8/d6a/classshaka_1_1media_1_1ClusterBuilder-members.html +++ b/docs/d8/d6a/classshaka_1_1media_1_1ClusterBuilder-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d6d/structshaka_1_1media_1_1mp4_1_1DataInformation.html b/docs/d8/d6d/structshaka_1_1media_1_1mp4_1_1DataInformation.html index 2066af233d..cce0ce131f 100644 --- a/docs/d8/d6d/structshaka_1_1media_1_1mp4_1_1DataInformation.html +++ b/docs/d8/d6d/structshaka_1_1media_1_1mp4_1_1DataInformation.html @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d8/d70/structshaka_1_1media_1_1mp4_1_1Metadata-members.html b/docs/d8/d70/structshaka_1_1media_1_1mp4_1_1Metadata-members.html index 0ad015d142..3c08330ab0 100644 --- a/docs/d8/d70/structshaka_1_1media_1_1mp4_1_1Metadata-members.html +++ b/docs/d8/d70/structshaka_1_1media_1_1mp4_1_1Metadata-members.html @@ -114,7 +114,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d74/classshaka_1_1media_1_1TracksBuilder.html b/docs/d8/d74/classshaka_1_1media_1_1TracksBuilder.html index 0d7d6b9415..ecb3ae0eeb 100644 --- a/docs/d8/d74/classshaka_1_1media_1_1TracksBuilder.html +++ b/docs/d8/d74/classshaka_1_1media_1_1TracksBuilder.html @@ -123,7 +123,7 @@ std::vector< uint8_t >  diff --git a/docs/d8/d86/classshaka_1_1media_1_1WebMTracksParser.html b/docs/d8/d86/classshaka_1_1media_1_1WebMTracksParser.html index 8dbfb5c079..6bf4c46213 100644 --- a/docs/d8/d86/classshaka_1_1media_1_1WebMTracksParser.html +++ b/docs/d8/d86/classshaka_1_1media_1_1WebMTracksParser.html @@ -225,7 +225,7 @@ The number of bytes parsed on success. diff --git a/docs/d8/d88/structshaka_1_1media_1_1mp4_1_1MovieExtends-members.html b/docs/d8/d88/structshaka_1_1media_1_1mp4_1_1MovieExtends-members.html index 6b9e0a1e0b..dbe7924588 100644 --- a/docs/d8/d88/structshaka_1_1media_1_1mp4_1_1MovieExtends-members.html +++ b/docs/d8/d88/structshaka_1_1media_1_1mp4_1_1MovieExtends-members.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d8e/classshaka_1_1AdaptationSet.html b/docs/d8/d8e/classshaka_1_1AdaptationSet.html index 044319195e..d88910d726 100644 --- a/docs/d8/d8e/classshaka_1_1AdaptationSet.html +++ b/docs/d8/d8e/classshaka_1_1AdaptationSet.html @@ -582,7 +582,7 @@ template<MpdBuilder::MpdType type> diff --git a/docs/d8/d91/classshaka_1_1media_1_1AesCtrEncryptor-members.html b/docs/d8/d91/classshaka_1_1media_1_1AesCtrEncryptor-members.html index a556c5e34f..ff7c9d9c57 100644 --- a/docs/d8/d91/classshaka_1_1media_1_1AesCtrEncryptor-members.html +++ b/docs/d8/d91/classshaka_1_1media_1_1AesCtrEncryptor-members.html @@ -118,7 +118,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d92/classshaka_1_1media_1_1AesRequestSigner-members.html b/docs/d8/d92/classshaka_1_1media_1_1AesRequestSigner-members.html index b642743572..087de367fb 100644 --- a/docs/d8/d92/classshaka_1_1media_1_1AesRequestSigner-members.html +++ b/docs/d8/d92/classshaka_1_1media_1_1AesRequestSigner-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d92/structshaka_1_1media_1_1H264DecRefPicMarking-members.html b/docs/d8/d92/structshaka_1_1media_1_1H264DecRefPicMarking-members.html index 6c49bfa6a0..939e0f7d38 100644 --- a/docs/d8/d92/structshaka_1_1media_1_1H264DecRefPicMarking-members.html +++ b/docs/d8/d92/structshaka_1_1media_1_1H264DecRefPicMarking-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d93/structshaka_1_1media_1_1mp4_1_1SubtitleMediaHeader-members.html b/docs/d8/d93/structshaka_1_1media_1_1mp4_1_1SubtitleMediaHeader-members.html index 221ecf28ba..7aede4791d 100644 --- a/docs/d8/d93/structshaka_1_1media_1_1mp4_1_1SubtitleMediaHeader-members.html +++ b/docs/d8/d93/structshaka_1_1media_1_1mp4_1_1SubtitleMediaHeader-members.html @@ -112,7 +112,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d94/adts__constants_8cc_source.html b/docs/d8/d94/adts__constants_8cc_source.html index 648aa15786..01c6726734 100644 --- a/docs/d8/d94/adts__constants_8cc_source.html +++ b/docs/d8/d94/adts__constants_8cc_source.html @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d94/pes__packet_8h_source.html b/docs/d8/d94/pes__packet_8h_source.html index 4fafdb3e3e..92781bfda5 100644 --- a/docs/d8/d94/pes__packet_8h_source.html +++ b/docs/d8/d94/pes__packet_8h_source.html @@ -159,7 +159,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d99/structshaka_1_1media_1_1mp4_1_1VTTAdditionalTextBox-members.html b/docs/d8/d99/structshaka_1_1media_1_1mp4_1_1VTTAdditionalTextBox-members.html index eee25298b5..5baa2761a1 100644 --- a/docs/d8/d99/structshaka_1_1media_1_1mp4_1_1VTTAdditionalTextBox-members.html +++ b/docs/d8/d99/structshaka_1_1media_1_1mp4_1_1VTTAdditionalTextBox-members.html @@ -109,7 +109,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 0133b4afb5..2fe4461d0a 100644 --- a/docs/d8/d9a/fragmenter_8cc_source.html +++ b/docs/d8/d9a/fragmenter_8cc_source.html @@ -300,7 +300,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 d963eb56ea..273b54b8dc 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 f554b60b68..5fd5943ba5 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/da3/classshaka_1_1media_1_1DecryptorSource-members.html b/docs/d8/da3/classshaka_1_1media_1_1DecryptorSource-members.html index d4fdc86ced..4443943174 100644 --- a/docs/d8/da3/classshaka_1_1media_1_1DecryptorSource-members.html +++ b/docs/d8/da3/classshaka_1_1media_1_1DecryptorSource-members.html @@ -99,7 +99,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/da5/structshaka_1_1media_1_1mp4_1_1SampleSize-members.html b/docs/d8/da5/structshaka_1_1media_1_1mp4_1_1SampleSize-members.html index 156d15a2e0..ef5cd65e61 100644 --- a/docs/d8/da5/structshaka_1_1media_1_1mp4_1_1SampleSize-members.html +++ b/docs/d8/da5/structshaka_1_1media_1_1mp4_1_1SampleSize-members.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/da6/classshaka_1_1media_1_1NaluReader-members.html b/docs/d8/da6/classshaka_1_1media_1_1NaluReader-members.html index 644cf25d4c..d90c8f4131 100644 --- a/docs/d8/da6/classshaka_1_1media_1_1NaluReader-members.html +++ b/docs/d8/da6/classshaka_1_1media_1_1NaluReader-members.html @@ -105,7 +105,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 9ebd3aec6b..43dde12fdf 100644 --- a/docs/d8/daa/stream__info_8h_source.html +++ b/docs/d8/daa/stream__info_8h_source.html @@ -205,7 +205,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/daf/namespaceshaka.html b/docs/d8/daf/namespaceshaka.html index aeee140466..692b826101 100644 --- a/docs/d8/daf/namespaceshaka.html +++ b/docs/d8/daf/namespaceshaka.html @@ -590,7 +590,7 @@ const char kPsshElementNam

    Validate widevine encryption/decryption flags.

    Returns
    true on success, false otherwise.
    -

    Definition at line 65 of file widevine_encryption_flags.cc.

    +

    Definition at line 75 of file widevine_encryption_flags.cc.

    @@ -633,7 +633,7 @@ const char kPsshElementNam diff --git a/docs/d8/db7/classshaka_1_1media_1_1mp4_1_1MultiSegmentSegmenter.html b/docs/d8/db7/classshaka_1_1media_1_1mp4_1_1MultiSegmentSegmenter.html index 99164518eb..780f84824a 100644 --- a/docs/d8/db7/classshaka_1_1media_1_1mp4_1_1MultiSegmentSegmenter.html +++ b/docs/d8/db7/classshaka_1_1media_1_1mp4_1_1MultiSegmentSegmenter.html @@ -119,8 +119,8 @@ Public Member Functions  Segmenter (const MuxerOptions &options, std::unique_ptr< FileType > ftyp, std::unique_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, FourCC protection_scheme) -  +Status Initialize (const std::vector< MediaStream * > &streams, MuxerListener *muxer_listener, ProgressListener *progress_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme) +  Status Finalize ()   Status AddSample (const MediaStream *stream, scoped_refptr< MediaSample > sample) @@ -259,7 +259,7 @@ void set_progress_target diff --git a/docs/d8/db9/classshaka_1_1media_1_1WebMContentEncodingsClient-members.html b/docs/d8/db9/classshaka_1_1media_1_1WebMContentEncodingsClient-members.html index 76d84754da..9c33659633 100644 --- a/docs/d8/db9/classshaka_1_1media_1_1WebMContentEncodingsClient-members.html +++ b/docs/d8/db9/classshaka_1_1media_1_1WebMContentEncodingsClient-members.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/dc2/structshaka_1_1media_1_1mp2t_1_1EsParserH26x_1_1VideoSliceInfo.html b/docs/d8/dc2/structshaka_1_1media_1_1mp2t_1_1EsParserH26x_1_1VideoSliceInfo.html index e15bd862b7..a51d909b18 100644 --- a/docs/d8/dc2/structshaka_1_1media_1_1mp2t_1_1EsParserH26x_1_1VideoSliceInfo.html +++ b/docs/d8/dc2/structshaka_1_1media_1_1mp2t_1_1EsParserH26x_1_1VideoSliceInfo.html @@ -118,7 +118,7 @@ int frame_num = 0 diff --git a/docs/d8/dc3/structshaka_1_1media_1_1mp4_1_1CueTimeBox.html b/docs/d8/dc3/structshaka_1_1media_1_1mp4_1_1CueTimeBox.html index 98d21e12c8..7c96942d34 100644 --- a/docs/d8/dc3/structshaka_1_1media_1_1mp4_1_1CueTimeBox.html +++ b/docs/d8/dc3/structshaka_1_1media_1_1mp4_1_1CueTimeBox.html @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d8/dca/ts__writer_8h_source.html b/docs/d8/dca/ts__writer_8h_source.html index 5d6f3e1071..d1bc4c83d8 100644 --- a/docs/d8/dca/ts__writer_8h_source.html +++ b/docs/d8/dca/ts__writer_8h_source.html @@ -162,7 +162,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/dcd/structshaka_1_1media_1_1mp4_1_1DecodingTime-members.html b/docs/d8/dcd/structshaka_1_1media_1_1mp4_1_1DecodingTime-members.html index 0cd3765e62..9d2a31f3f3 100644 --- a/docs/d8/dcd/structshaka_1_1media_1_1mp4_1_1DecodingTime-members.html +++ b/docs/d8/dcd/structshaka_1_1media_1_1mp4_1_1DecodingTime-members.html @@ -98,7 +98,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/dcd/structshaka_1_1media_1_1mp4_1_1TrackExtends-members.html b/docs/d8/dcd/structshaka_1_1media_1_1mp4_1_1TrackExtends-members.html index b54760160d..d79781a78d 100644 --- a/docs/d8/dcd/structshaka_1_1media_1_1mp4_1_1TrackExtends-members.html +++ b/docs/d8/dcd/structshaka_1_1media_1_1mp4_1_1TrackExtends-members.html @@ -117,7 +117,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/dd6/classshaka_1_1media_1_1mp2t_1_1ContinuityCounter.html b/docs/d8/dd6/classshaka_1_1media_1_1mp2t_1_1ContinuityCounter.html index d5b8a7e3ba..68133b675a 100644 --- a/docs/d8/dd6/classshaka_1_1media_1_1mp2t_1_1ContinuityCounter.html +++ b/docs/d8/dd6/classshaka_1_1media_1_1mp2t_1_1ContinuityCounter.html @@ -129,7 +129,7 @@ Public Member Functions diff --git a/docs/d8/dd6/structshaka_1_1media_1_1mp4_1_1CencSampleEncryptionInfoEntry.html b/docs/d8/dd6/structshaka_1_1media_1_1mp4_1_1CencSampleEncryptionInfoEntry.html index fdb641f885..690ef946ec 100644 --- a/docs/d8/dd6/structshaka_1_1media_1_1mp4_1_1CencSampleEncryptionInfoEntry.html +++ b/docs/d8/dd6/structshaka_1_1media_1_1mp4_1_1CencSampleEncryptionInfoEntry.html @@ -135,7 +135,7 @@ std::vector< uint8_t >  diff --git a/docs/d8/de1/classshaka_1_1SimpleMpdNotifier.html b/docs/d8/de1/classshaka_1_1SimpleMpdNotifier.html index dfbdd5f8c5..391bd3c7bd 100644 --- a/docs/d8/de1/classshaka_1_1SimpleMpdNotifier.html +++ b/docs/d8/de1/classshaka_1_1SimpleMpdNotifier.html @@ -471,7 +471,7 @@ class SimpleMpdNotifierTes diff --git a/docs/d8/de6/webm__crypto__helpers_8h_source.html b/docs/d8/de6/webm__crypto__helpers_8h_source.html index 3f5aa9c06d..2bd4aa8975 100644 --- a/docs/d8/de6/webm__crypto__helpers_8h_source.html +++ b/docs/d8/de6/webm__crypto__helpers_8h_source.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/deb/classshaka_1_1media_1_1mp2t_1_1EsParser-members.html b/docs/d8/deb/classshaka_1_1media_1_1mp2t_1_1EsParser-members.html index f2632a1cec..c9eb4b3166 100644 --- a/docs/d8/deb/classshaka_1_1media_1_1mp2t_1_1EsParser-members.html +++ b/docs/d8/deb/classshaka_1_1media_1_1mp2t_1_1EsParser-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/dee/classshaka_1_1media_1_1AudioTimestampHelper-members.html b/docs/d8/dee/classshaka_1_1media_1_1AudioTimestampHelper-members.html index 8c34801e7d..25bc322e75 100644 --- a/docs/d8/dee/classshaka_1_1media_1_1AudioTimestampHelper-members.html +++ b/docs/d8/dee/classshaka_1_1media_1_1AudioTimestampHelper-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/dee/classshaka_1_1media_1_1VPxParser-members.html b/docs/d8/dee/classshaka_1_1media_1_1VPxParser-members.html index fdd3041433..6178abdeff 100644 --- a/docs/d8/dee/classshaka_1_1media_1_1VPxParser-members.html +++ b/docs/d8/dee/classshaka_1_1media_1_1VPxParser-members.html @@ -101,7 +101,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 1fd64971f3..b1aff60749 100644 --- a/docs/d8/df0/webm_2single__segment__segmenter_8cc_source.html +++ b/docs/d8/df0/webm_2single__segment__segmenter_8cc_source.html @@ -177,11 +177,11 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
    88 } // namespace webm
    89 } // namespace media
    90 } // namespace shaka
    - + diff --git a/docs/d8/df7/classshaka_1_1media_1_1SegmentTestBase-members.html b/docs/d8/df7/classshaka_1_1media_1_1SegmentTestBase-members.html index 1680e166fb..b9f2672d0f 100644 --- a/docs/d8/df7/classshaka_1_1media_1_1SegmentTestBase-members.html +++ b/docs/d8/df7/classshaka_1_1media_1_1SegmentTestBase-members.html @@ -115,7 +115,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 95ac7f174d..89900addc5 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 @@ -156,7 +156,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d00/structshaka_1_1media_1_1OnMediaEndParameters-members.html b/docs/d9/d00/structshaka_1_1media_1_1OnMediaEndParameters-members.html index d8add64413..382d14ee3f 100644 --- a/docs/d9/d00/structshaka_1_1media_1_1OnMediaEndParameters-members.html +++ b/docs/d9/d00/structshaka_1_1media_1_1OnMediaEndParameters-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); 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 01382f9ab7..1889446a08 100644 --- a/docs/d9/d01/mp4_2single__segment__segmenter_8h_source.html +++ b/docs/d9/d01/mp4_2single__segment__segmenter_8h_source.html @@ -140,7 +140,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d08/mock__mpd__builder_8h_source.html b/docs/d9/d08/mock__mpd__builder_8h_source.html index af3690c31a..90e46b9e93 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/d0b/classshaka_1_1media_1_1HlsNotifyMuxerListener-members.html b/docs/d9/d0b/classshaka_1_1media_1_1HlsNotifyMuxerListener-members.html index 19a00cff19..7234c69361 100644 --- a/docs/d9/d0b/classshaka_1_1media_1_1HlsNotifyMuxerListener-members.html +++ b/docs/d9/d0b/classshaka_1_1media_1_1HlsNotifyMuxerListener-members.html @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d0c/classshaka_1_1media_1_1RsaPublicKey.html b/docs/d9/d0c/classshaka_1_1media_1_1RsaPublicKey.html index 7a978ea3e3..7c3323eff9 100644 --- a/docs/d9/d0c/classshaka_1_1media_1_1RsaPublicKey.html +++ b/docs/d9/d0c/classshaka_1_1media_1_1RsaPublicKey.html @@ -218,7 +218,7 @@ Static Public Member Functions diff --git a/docs/d9/d13/classshaka_1_1media_1_1BufferReader.html b/docs/d9/d13/classshaka_1_1media_1_1BufferReader.html index e85519fcf4..19717e13a9 100644 --- a/docs/d9/d13/classshaka_1_1media_1_1BufferReader.html +++ b/docs/d9/d13/classshaka_1_1media_1_1BufferReader.html @@ -276,7 +276,7 @@ bool ReadNBytesInto8s diff --git a/docs/d9/d15/key__rotation__fragmenter_8cc_source.html b/docs/d9/d15/key__rotation__fragmenter_8cc_source.html index 96ee678989..6137ae453d 100644 --- a/docs/d9/d15/key__rotation__fragmenter_8cc_source.html +++ b/docs/d9/d15/key__rotation__fragmenter_8cc_source.html @@ -244,7 +244,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d1f/structshaka_1_1media_1_1mp4_1_1MovieFragment.html b/docs/d9/d1f/structshaka_1_1media_1_1mp4_1_1MovieFragment.html index 3e1f1e3a02..e9c7a4f974 100644 --- a/docs/d9/d1f/structshaka_1_1media_1_1mp4_1_1MovieFragment.html +++ b/docs/d9/d1f/structshaka_1_1media_1_1mp4_1_1MovieFragment.html @@ -180,7 +180,7 @@ Additional Inherited Members diff --git a/docs/d9/d26/classshaka_1_1media_1_1AesEncryptor-members.html b/docs/d9/d26/classshaka_1_1media_1_1AesEncryptor-members.html index 924f8335b2..2f09441aea 100644 --- a/docs/d9/d26/classshaka_1_1media_1_1AesEncryptor-members.html +++ b/docs/d9/d26/classshaka_1_1media_1_1AesEncryptor-members.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d26/classshaka_1_1media_1_1mp4_1_1Segmenter.html b/docs/d9/d26/classshaka_1_1media_1_1mp4_1_1Segmenter.html index a9ce78d959..2bc9e87d89 100644 --- a/docs/d9/d26/classshaka_1_1media_1_1mp4_1_1Segmenter.html +++ b/docs/d9/d26/classshaka_1_1media_1_1mp4_1_1Segmenter.html @@ -112,8 +112,8 @@ Public Member Functions  Segmenter (const MuxerOptions &options, std::unique_ptr< FileType > ftyp, std::unique_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, FourCC protection_scheme) -  +Status Initialize (const std::vector< MediaStream * > &streams, MuxerListener *muxer_listener, ProgressListener *progress_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme) +  Status Finalize ()   Status AddSample (const MediaStream *stream, scoped_refptr< MediaSample > sample) @@ -203,7 +203,7 @@ void set_progress_target
    Returns
    OK on success, an error status otherwise.
    -

    Definition at line 320 of file segmenter.cc.

    +

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

    +

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

    +

    Definition at line 381 of file segmenter.cc.

    @@ -318,7 +318,7 @@ void set_progress_target - +
    @@ -352,6 +352,18 @@ void  + + + + + + + + + + + + @@ -384,7 +396,9 @@ void  - + + + @@ -419,7 +433,7 @@ void 
    set_progress_targetuint32_t  max_sd_pixels,
    uint32_t max_hd_pixels,
    uint32_t max_uhd1_pixels,
    set_progress_targetmuxer_listenerreceives muxer events. Can be NULL.
    progress_listenerreceives progress updates. Can be NULL.
    encryption_key_sourcepoints to the key source which contains the encryption keys. It can be NULL to indicate that no encryption is required.
    max_sd_pixelsspecifies the threshold to determine whether a video track should be considered as SD or HD. If the track has more pixels per frame than max_sd_pixels, it is HD, SD otherwise.
    max_sd_pixelsspecifies the threshold to determine whether a video track should be considered as SD. If the max pixels per frame is no higher than max_sd_pixels, it is SD.
    max_hd_pixelsspecifies the threshold to determine whether a video track should be considered as HD. If the max pixels per frame is higher than max_sd_pixels, but no higher than max_hd_pixels, it is HD.
    max_uhd1_pixelsspecifies the threshold to determine whether a video track should be considered as UHD1. If the max pixels per frame is higher than max_hd_pixels, but no higher than max_uhd1_pixels, it is UHD1. Otherwise it is UHD2.
    clear_timespecifies clear lead duration in seconds.
    crypto_period_durationspecifies crypto period duration in seconds.
    protection_schemespecifies the protection scheme: 'cenc', 'cens', 'cbc1', 'cbcs'.
    set_progress_target
    Returns
    The sample duration in the timescale of the media. Returns 0 if no samples are added yet.
    -

    Definition at line 101 of file segmenter.h.

    +

    Definition at line 111 of file segmenter.h.

    @@ -430,7 +444,7 @@ void 
    set_progress_target diff --git a/docs/d9/d36/classshaka_1_1media_1_1TracksBuilder-members.html b/docs/d9/d36/classshaka_1_1media_1_1TracksBuilder-members.html index 4dba44d6c8..51a37b46e0 100644 --- a/docs/d9/d36/classshaka_1_1media_1_1TracksBuilder-members.html +++ b/docs/d9/d36/classshaka_1_1media_1_1TracksBuilder-members.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
    diff --git a/docs/d9/d3a/classshaka_1_1media_1_1File-members.html b/docs/d9/d3a/classshaka_1_1media_1_1File-members.html index 9090ec3576..afbba25a2d 100644 --- a/docs/d9/d3a/classshaka_1_1media_1_1File-members.html +++ b/docs/d9/d3a/classshaka_1_1media_1_1File-members.html @@ -116,7 +116,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 ec00765cd8..57a6c1cbcc 100644 --- a/docs/d9/d3b/webm__content__encodings_8h_source.html +++ b/docs/d9/d3b/webm__content__encodings_8h_source.html @@ -178,7 +178,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d3c/structshaka_1_1media_1_1mp4_1_1VTTEmptyCueBox.html b/docs/d9/d3c/structshaka_1_1media_1_1mp4_1_1VTTEmptyCueBox.html index b28a59e794..6b33c63575 100644 --- a/docs/d9/d3c/structshaka_1_1media_1_1mp4_1_1VTTEmptyCueBox.html +++ b/docs/d9/d3c/structshaka_1_1media_1_1mp4_1_1VTTEmptyCueBox.html @@ -166,7 +166,7 @@ Additional Inherited Members diff --git a/docs/d9/d3e/structshaka_1_1media_1_1mp4_1_1CueSourceIDBox.html b/docs/d9/d3e/structshaka_1_1media_1_1mp4_1_1CueSourceIDBox.html index 8cc3242255..3eba6fc7b6 100644 --- a/docs/d9/d3e/structshaka_1_1media_1_1mp4_1_1CueSourceIDBox.html +++ b/docs/d9/d3e/structshaka_1_1media_1_1mp4_1_1CueSourceIDBox.html @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d9/d57/classshaka_1_1media_1_1mp4_1_1ChunkInfoIterator.html b/docs/d9/d57/classshaka_1_1media_1_1mp4_1_1ChunkInfoIterator.html index c36e7c2f17..695f69c074 100644 --- a/docs/d9/d57/classshaka_1_1media_1_1mp4_1_1ChunkInfoIterator.html +++ b/docs/d9/d57/classshaka_1_1media_1_1mp4_1_1ChunkInfoIterator.html @@ -320,7 +320,7 @@ Public Member Functions diff --git a/docs/d9/d66/classshaka_1_1media_1_1mp2t_1_1EsParserAdts-members.html b/docs/d9/d66/classshaka_1_1media_1_1mp2t_1_1EsParserAdts-members.html index e923150c6c..427ff46e9c 100644 --- a/docs/d9/d66/classshaka_1_1media_1_1mp2t_1_1EsParserAdts-members.html +++ b/docs/d9/d66/classshaka_1_1media_1_1mp2t_1_1EsParserAdts-members.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d67/structshaka_1_1media_1_1H265VuiParameters.html b/docs/d9/d67/structshaka_1_1media_1_1H265VuiParameters.html index cd226333f6..5f90c91cd1 100644 --- a/docs/d9/d67/structshaka_1_1media_1_1H265VuiParameters.html +++ b/docs/d9/d67/structshaka_1_1media_1_1H265VuiParameters.html @@ -131,7 +131,7 @@ int min_spatial_segmentati diff --git a/docs/d9/d6a/structshaka_1_1media_1_1H264SliceHeader-members.html b/docs/d9/d6a/structshaka_1_1media_1_1H264SliceHeader-members.html index 00d8ef5def..a977652f32 100644 --- a/docs/d9/d6a/structshaka_1_1media_1_1H264SliceHeader-members.html +++ b/docs/d9/d6a/structshaka_1_1media_1_1H264SliceHeader-members.html @@ -154,7 +154,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d76/ts__muxer_8cc_source.html b/docs/d9/d76/ts__muxer_8cc_source.html index 1d5cbf0622..af22725dc0 100644 --- a/docs/d9/d76/ts__muxer_8cc_source.html +++ b/docs/d9/d76/ts__muxer_8cc_source.html @@ -113,49 +113,50 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
    24  segmenter_.reset(new TsSegmenter(options(), muxer_listener()));
    25  Status status =
    26  segmenter_->Initialize(*streams()[0]->info(), encryption_key_source(),
    -
    27  max_sd_pixels(), clear_lead_in_seconds());
    -
    28  FireOnMediaStartEvent();
    -
    29  return status;
    -
    30 }
    -
    31 
    -
    32 Status TsMuxer::Finalize() {
    -
    33  FireOnMediaEndEvent();
    -
    34  return segmenter_->Finalize();
    -
    35 }
    -
    36 
    -
    37 Status TsMuxer::DoAddSample(const MediaStream* stream,
    -
    38  scoped_refptr<MediaSample> sample) {
    -
    39  return segmenter_->AddSample(sample);
    -
    40 }
    -
    41 
    -
    42 void TsMuxer::FireOnMediaStartEvent() {
    -
    43  if (!muxer_listener())
    -
    44  return;
    -
    45  muxer_listener()->OnMediaStart(options(), *streams().front()->info(),
    -
    46  kTsTimescale, MuxerListener::kContainerWebM);
    -
    47 }
    -
    48 
    -
    49 void TsMuxer::FireOnMediaEndEvent() {
    -
    50  if (!muxer_listener())
    -
    51  return;
    -
    52 
    -
    53  // For now, there is no single file TS segmenter. So all the values passed
    -
    54  // here are false and 0. Called just to notify the MuxerListener.
    -
    55  const bool kHasInitRange = true;
    -
    56  const bool kHasIndexRange = true;
    -
    57  muxer_listener()->OnMediaEnd(!kHasInitRange, 0, 0, !kHasIndexRange, 0, 0, 0,
    -
    58  0);
    -
    59 }
    -
    60 
    -
    61 } // namespace mp2t
    -
    62 } // namespace media
    -
    63 } // namespace shaka
    +
    27  max_sd_pixels(), max_hd_pixels(),
    +
    28  max_uhd1_pixels(), clear_lead_in_seconds());
    +
    29  FireOnMediaStartEvent();
    +
    30  return status;
    +
    31 }
    +
    32 
    +
    33 Status TsMuxer::Finalize() {
    +
    34  FireOnMediaEndEvent();
    +
    35  return segmenter_->Finalize();
    +
    36 }
    +
    37 
    +
    38 Status TsMuxer::DoAddSample(const MediaStream* stream,
    +
    39  scoped_refptr<MediaSample> sample) {
    +
    40  return segmenter_->AddSample(sample);
    +
    41 }
    +
    42 
    +
    43 void TsMuxer::FireOnMediaStartEvent() {
    +
    44  if (!muxer_listener())
    +
    45  return;
    +
    46  muxer_listener()->OnMediaStart(options(), *streams().front()->info(),
    +
    47  kTsTimescale, MuxerListener::kContainerWebM);
    +
    48 }
    +
    49 
    +
    50 void TsMuxer::FireOnMediaEndEvent() {
    +
    51  if (!muxer_listener())
    +
    52  return;
    +
    53 
    +
    54  // For now, there is no single file TS segmenter. So all the values passed
    +
    55  // here are false and 0. Called just to notify the MuxerListener.
    +
    56  const bool kHasInitRange = true;
    +
    57  const bool kHasIndexRange = true;
    +
    58  muxer_listener()->OnMediaEnd(!kHasInitRange, 0, 0, !kHasIndexRange, 0, 0, 0,
    +
    59  0);
    +
    60 }
    +
    61 
    +
    62 } // namespace mp2t
    +
    63 } // namespace media
    +
    64 } // namespace shaka
    virtual void OnMediaEnd(bool has_init_range, uint64_t init_range_start, uint64_t init_range_end, bool has_index_range, uint64_t index_range_start, uint64_t index_range_end, float duration_seconds, uint64_t file_size)=0
    virtual void OnMediaStart(const MuxerOptions &muxer_options, const StreamInfo &stream_info, uint32_t time_scale, ContainerType container_type)=0
    diff --git a/docs/d9/d81/classshaka_1_1media_1_1ClosureThread-members.html b/docs/d9/d81/classshaka_1_1media_1_1ClosureThread-members.html index 5f4e25db7c..1659bb9a73 100644 --- a/docs/d9/d81/classshaka_1_1media_1_1ClosureThread-members.html +++ b/docs/d9/d81/classshaka_1_1media_1_1ClosureThread-members.html @@ -99,7 +99,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d86/limits_8h_source.html b/docs/d9/d86/limits_8h_source.html index 119851d43e..5b54557a4d 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/d87/classshaka_1_1media_1_1WebMContentEncodingsClient.html b/docs/d9/d87/classshaka_1_1media_1_1WebMContentEncodingsClient.html index d4076b71b1..7f642952eb 100644 --- a/docs/d9/d87/classshaka_1_1media_1_1WebMContentEncodingsClient.html +++ b/docs/d9/d87/classshaka_1_1media_1_1WebMContentEncodingsClient.html @@ -152,7 +152,7 @@ Additional Inherited Members diff --git a/docs/d9/d8c/classshaka_1_1media_1_1AesRequestSigner.html b/docs/d9/d8c/classshaka_1_1media_1_1AesRequestSigner.html index 62789d711a..14764dad9a 100644 --- a/docs/d9/d8c/classshaka_1_1media_1_1AesRequestSigner.html +++ b/docs/d9/d8c/classshaka_1_1media_1_1AesRequestSigner.html @@ -188,7 +188,7 @@ Additional Inherited Members diff --git a/docs/d9/d90/classshaka_1_1media_1_1ProtectionSystemSpecificInfo-members.html b/docs/d9/d90/classshaka_1_1media_1_1ProtectionSystemSpecificInfo-members.html index a81c16e9da..64bdaeb6e1 100644 --- a/docs/d9/d90/classshaka_1_1media_1_1ProtectionSystemSpecificInfo-members.html +++ b/docs/d9/d90/classshaka_1_1media_1_1ProtectionSystemSpecificInfo-members.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d90/text__track_8h_source.html b/docs/d9/d90/text__track_8h_source.html index 6c9c3b57ca..7a8da2e970 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 ade3a41d07..1d52d6acd9 100644 --- a/docs/d9/d93/media__stream_8h_source.html +++ b/docs/d9/d93/media__stream_8h_source.html @@ -170,7 +170,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/da4/stream__descriptor_8h_source.html b/docs/d9/da4/stream__descriptor_8h_source.html index e5acca7bee..f36857026c 100644 --- a/docs/d9/da4/stream__descriptor_8h_source.html +++ b/docs/d9/da4/stream__descriptor_8h_source.html @@ -144,7 +144,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/da5/classshaka_1_1media_1_1MpdNotifyMuxerListener.html b/docs/d9/da5/classshaka_1_1media_1_1MpdNotifyMuxerListener.html index 3ec50ab62b..4724dc81b9 100644 --- a/docs/d9/da5/classshaka_1_1media_1_1MpdNotifyMuxerListener.html +++ b/docs/d9/da5/classshaka_1_1media_1_1MpdNotifyMuxerListener.html @@ -513,7 +513,7 @@ Additional Inherited Members diff --git a/docs/d9/da6/structshaka_1_1media_1_1Cue-members.html b/docs/d9/da6/structshaka_1_1media_1_1Cue-members.html index c645a68c97..632b4d544f 100644 --- a/docs/d9/da6/structshaka_1_1media_1_1Cue-members.html +++ b/docs/d9/da6/structshaka_1_1media_1_1Cue-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/da7/classshaka_1_1media_1_1mp4_1_1Segmenter-members.html b/docs/d9/da7/classshaka_1_1media_1_1mp4_1_1Segmenter-members.html index 95d786cefa..d400dbdd5a 100644 --- a/docs/d9/da7/classshaka_1_1media_1_1mp4_1_1Segmenter-members.html +++ b/docs/d9/da7/classshaka_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)=0shaka::media::mp4::Segmenterpure virtual GetInitRange(size_t *offset, size_t *size)=0shaka::media::mp4::Segmenterpure virtual GetReferenceTimeScale() const (defined in shaka::media::mp4::Segmenter)shaka::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, FourCC protection_scheme)shaka::media::mp4::Segmenter + Initialize(const std::vector< MediaStream * > &streams, MuxerListener *muxer_listener, ProgressListener *progress_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)shaka::media::mp4::Segmenter moov() (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected muxer_listener() (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected options() const (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/db2/classshaka_1_1media_1_1mp4_1_1CompositionOffsetIterator-members.html b/docs/d9/db2/classshaka_1_1media_1_1mp4_1_1CompositionOffsetIterator-members.html index e9b3e96c2d..f340928a62 100644 --- a/docs/d9/db2/classshaka_1_1media_1_1mp4_1_1CompositionOffsetIterator-members.html +++ b/docs/d9/db2/classshaka_1_1media_1_1mp4_1_1CompositionOffsetIterator-members.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/db9/content__protection__element_8cc_source.html b/docs/d9/db9/content__protection__element_8cc_source.html index a6a8453212..9dde1ed747 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 69829772cf..aacde165d3 100644 --- a/docs/d9/db9/muxer_8cc_source.html +++ b/docs/d9/db9/muxer_8cc_source.html @@ -109,118 +109,124 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
    20  initialized_(false),
    21  encryption_key_source_(NULL),
    22  max_sd_pixels_(0),
    -
    23  clear_lead_in_seconds_(0),
    -
    24  crypto_period_duration_in_seconds_(0),
    -
    25  protection_scheme_(FOURCC_NULL),
    -
    26  cancelled_(false),
    -
    27  clock_(NULL) {}
    -
    28 
    -
    29 Muxer::~Muxer() {}
    +
    23  max_hd_pixels_(0),
    +
    24  max_uhd1_pixels_(0),
    +
    25  clear_lead_in_seconds_(0),
    +
    26  crypto_period_duration_in_seconds_(0),
    +
    27  protection_scheme_(FOURCC_NULL),
    +
    28  cancelled_(false),
    +
    29  clock_(NULL) {}
    30 
    -
    31 void Muxer::SetKeySource(KeySource* encryption_key_source,
    -
    32  uint32_t max_sd_pixels,
    -
    33  double clear_lead_in_seconds,
    -
    34  double crypto_period_duration_in_seconds,
    -
    35  FourCC protection_scheme) {
    -
    36  DCHECK(encryption_key_source);
    -
    37  encryption_key_source_ = encryption_key_source;
    -
    38  max_sd_pixels_ = max_sd_pixels;
    -
    39  clear_lead_in_seconds_ = clear_lead_in_seconds;
    -
    40  crypto_period_duration_in_seconds_ = crypto_period_duration_in_seconds;
    -
    41  protection_scheme_ = protection_scheme;
    -
    42 }
    -
    43 
    - -
    45  DCHECK(stream);
    -
    46  stream->Connect(this);
    -
    47  streams_.push_back(stream);
    +
    31 Muxer::~Muxer() {}
    +
    32 
    +
    33 void Muxer::SetKeySource(KeySource* encryption_key_source,
    +
    34  uint32_t max_sd_pixels,
    +
    35  uint32_t max_hd_pixels,
    +
    36  uint32_t max_uhd1_pixels,
    +
    37  double clear_lead_in_seconds,
    +
    38  double crypto_period_duration_in_seconds,
    +
    39  FourCC protection_scheme) {
    +
    40  DCHECK(encryption_key_source);
    +
    41  encryption_key_source_ = encryption_key_source;
    +
    42  max_sd_pixels_ = max_sd_pixels;
    +
    43  max_hd_pixels_ = max_hd_pixels;
    +
    44  max_uhd1_pixels_ = max_uhd1_pixels;
    +
    45  clear_lead_in_seconds_ = clear_lead_in_seconds;
    +
    46  crypto_period_duration_in_seconds_ = crypto_period_duration_in_seconds;
    +
    47  protection_scheme_ = protection_scheme;
    48 }
    49 
    - -
    51  DCHECK(!streams_.empty());
    -
    52 
    -
    53  Status status;
    -
    54  // Start the streams.
    -
    55  for (std::vector<MediaStream*>::iterator it = streams_.begin();
    -
    56  it != streams_.end();
    -
    57  ++it) {
    -
    58  status = (*it)->Start(MediaStream::kPull);
    -
    59  if (!status.ok())
    -
    60  return status;
    -
    61  }
    -
    62 
    -
    63  uint32_t current_stream_id = 0;
    -
    64  while (status.ok()) {
    -
    65  if (cancelled_)
    -
    66  return Status(error::CANCELLED, "muxer run cancelled");
    -
    67 
    -
    68  scoped_refptr<MediaSample> sample;
    -
    69  status = streams_[current_stream_id]->PullSample(&sample);
    -
    70  if (!status.ok())
    -
    71  break;
    -
    72  status = AddSample(streams_[current_stream_id], sample);
    + +
    51  DCHECK(stream);
    +
    52  stream->Connect(this);
    +
    53  streams_.push_back(stream);
    +
    54 }
    +
    55 
    + +
    57  DCHECK(!streams_.empty());
    +
    58 
    +
    59  Status status;
    +
    60  // Start the streams.
    +
    61  for (std::vector<MediaStream*>::iterator it = streams_.begin();
    +
    62  it != streams_.end();
    +
    63  ++it) {
    +
    64  status = (*it)->Start(MediaStream::kPull);
    +
    65  if (!status.ok())
    +
    66  return status;
    +
    67  }
    +
    68 
    +
    69  uint32_t current_stream_id = 0;
    +
    70  while (status.ok()) {
    +
    71  if (cancelled_)
    +
    72  return Status(error::CANCELLED, "muxer run cancelled");
    73 
    -
    74  // Switch to next stream if the current stream is ready for fragmentation.
    -
    75  if (status.error_code() == error::FRAGMENT_FINALIZED) {
    -
    76  current_stream_id = (current_stream_id + 1) % streams_.size();
    -
    77  status.Clear();
    -
    78  }
    -
    79  }
    -
    80  // Finalize the muxer after reaching end of stream.
    -
    81  return status.error_code() == error::END_OF_STREAM ? Finalize() : status;
    -
    82 }
    -
    83 
    -
    84 void Muxer::Cancel() {
    -
    85  cancelled_ = true;
    -
    86 }
    -
    87 
    -
    88 void Muxer::SetMuxerListener(std::unique_ptr<MuxerListener> muxer_listener) {
    -
    89  muxer_listener_ = std::move(muxer_listener);
    -
    90 }
    -
    91 
    - -
    93  std::unique_ptr<ProgressListener> progress_listener) {
    -
    94  progress_listener_ = std::move(progress_listener);
    -
    95 }
    -
    96 
    -
    97 Status Muxer::AddSample(const MediaStream* stream,
    -
    98  scoped_refptr<MediaSample> sample) {
    -
    99  DCHECK(std::find(streams_.begin(), streams_.end(), stream) != streams_.end());
    -
    100 
    -
    101  if (!initialized_) {
    -
    102  Status status = Initialize();
    -
    103  if (!status.ok())
    -
    104  return status;
    -
    105  initialized_ = true;
    -
    106  }
    -
    107  if (sample->end_of_stream()) {
    -
    108  // EOS sample should be sent only when the sample was pushed from Demuxer
    -
    109  // to Muxer. In this case, there should be only one stream in Muxer.
    -
    110  DCHECK_EQ(1u, streams_.size());
    -
    111  return Finalize();
    -
    112  } else if (sample->is_encrypted()) {
    -
    113  LOG(ERROR) << "Unable to multiplex encrypted media sample";
    -
    114  return Status(error::INTERNAL_ERROR, "Encrypted media sample.");
    -
    115  }
    -
    116  return DoAddSample(stream, sample);
    -
    117 }
    -
    118 
    -
    119 } // namespace media
    -
    120 } // namespace shaka
    - -
    void AddStream(MediaStream *stream)
    Add video/audio stream.
    Definition: muxer.cc:44
    -
    void SetKeySource(KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)
    Definition: muxer.cc:31
    -
    Status Run()
    Drive the remuxing from muxer side (pull).
    Definition: muxer.cc:50
    +
    74  scoped_refptr<MediaSample> sample;
    +
    75  status = streams_[current_stream_id]->PullSample(&sample);
    +
    76  if (!status.ok())
    +
    77  break;
    +
    78  status = AddSample(streams_[current_stream_id], sample);
    +
    79 
    +
    80  // Switch to next stream if the current stream is ready for fragmentation.
    +
    81  if (status.error_code() == error::FRAGMENT_FINALIZED) {
    +
    82  current_stream_id = (current_stream_id + 1) % streams_.size();
    +
    83  status.Clear();
    +
    84  }
    +
    85  }
    +
    86  // Finalize the muxer after reaching end of stream.
    +
    87  return status.error_code() == error::END_OF_STREAM ? Finalize() : status;
    +
    88 }
    +
    89 
    +
    90 void Muxer::Cancel() {
    +
    91  cancelled_ = true;
    +
    92 }
    +
    93 
    +
    94 void Muxer::SetMuxerListener(std::unique_ptr<MuxerListener> muxer_listener) {
    +
    95  muxer_listener_ = std::move(muxer_listener);
    +
    96 }
    +
    97 
    + +
    99  std::unique_ptr<ProgressListener> progress_listener) {
    +
    100  progress_listener_ = std::move(progress_listener);
    +
    101 }
    +
    102 
    +
    103 Status Muxer::AddSample(const MediaStream* stream,
    +
    104  scoped_refptr<MediaSample> sample) {
    +
    105  DCHECK(std::find(streams_.begin(), streams_.end(), stream) != streams_.end());
    +
    106 
    +
    107  if (!initialized_) {
    +
    108  Status status = Initialize();
    +
    109  if (!status.ok())
    +
    110  return status;
    +
    111  initialized_ = true;
    +
    112  }
    +
    113  if (sample->end_of_stream()) {
    +
    114  // EOS sample should be sent only when the sample was pushed from Demuxer
    +
    115  // to Muxer. In this case, there should be only one stream in Muxer.
    +
    116  DCHECK_EQ(1u, streams_.size());
    +
    117  return Finalize();
    +
    118  } else if (sample->is_encrypted()) {
    +
    119  LOG(ERROR) << "Unable to multiplex encrypted media sample";
    +
    120  return Status(error::INTERNAL_ERROR, "Encrypted media sample.");
    +
    121  }
    +
    122  return DoAddSample(stream, sample);
    +
    123 }
    +
    124 
    +
    125 } // namespace media
    +
    126 } // namespace shaka
    + +
    void AddStream(MediaStream *stream)
    Add video/audio stream.
    Definition: muxer.cc:50
    +
    Status Run()
    Drive the remuxing from muxer side (pull).
    Definition: muxer.cc:56
    void Connect(Muxer *muxer)
    Definition: media_stream.cc:55
    -
    void SetProgressListener(std::unique_ptr< ProgressListener > progress_listener)
    Definition: muxer.cc:92
    +
    void SetProgressListener(std::unique_ptr< ProgressListener > progress_listener)
    Definition: muxer.cc:98
    KeySource is responsible for encryption key acquisition.
    Definition: key_source.h:30
    +
    void SetKeySource(KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)
    Definition: muxer.cc:33
    -
    void SetMuxerListener(std::unique_ptr< MuxerListener > muxer_listener)
    Definition: muxer.cc:88
    +
    void SetMuxerListener(std::unique_ptr< MuxerListener > muxer_listener)
    Definition: muxer.cc:94
    diff --git a/docs/d9/dbd/classshaka_1_1media_1_1MemoryFile.html b/docs/d9/dbd/classshaka_1_1media_1_1MemoryFile.html index 2a54e75411..09d2bf2173 100644 --- a/docs/d9/dbd/classshaka_1_1media_1_1MemoryFile.html +++ b/docs/d9/dbd/classshaka_1_1media_1_1MemoryFile.html @@ -485,7 +485,7 @@ bool  diff --git a/docs/d9/dc4/classshaka_1_1media_1_1BufferReader-members.html b/docs/d9/dc4/classshaka_1_1media_1_1BufferReader-members.html index 0c536586a3..575ed852ae 100644 --- a/docs/d9/dc4/classshaka_1_1media_1_1BufferReader-members.html +++ b/docs/d9/dc4/classshaka_1_1media_1_1BufferReader-members.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/dc4/structshaka_1_1media_1_1mp4_1_1SampleEncryptionEntry-members.html b/docs/d9/dc4/structshaka_1_1media_1_1mp4_1_1SampleEncryptionEntry-members.html index 7715b034ef..57c576ec72 100644 --- a/docs/d9/dc4/structshaka_1_1media_1_1mp4_1_1SampleEncryptionEntry-members.html +++ b/docs/d9/dc4/structshaka_1_1media_1_1mp4_1_1SampleEncryptionEntry-members.html @@ -104,7 +104,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 1d88550741..0be3f11001 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/webm__video__client_8h_source.html b/docs/d9/dcc/webm__video__client_8h_source.html index 988c382394..fe6ea7174e 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 65aee9cffe..85e606fd4a 100644 --- a/docs/d9/de3/muxer__listener__internal_8cc_source.html +++ b/docs/d9/de3/muxer__listener__internal_8cc_source.html @@ -348,7 +348,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/de6/classshaka_1_1media_1_1LocalFile.html b/docs/d9/de6/classshaka_1_1media_1_1LocalFile.html index 13bc33bc55..565a7a3e6d 100644 --- a/docs/d9/de6/classshaka_1_1media_1_1LocalFile.html +++ b/docs/d9/de6/classshaka_1_1media_1_1LocalFile.html @@ -502,7 +502,7 @@ bool  diff --git a/docs/d9/dea/classshaka_1_1media_1_1FixedKeySource-members.html b/docs/d9/dea/classshaka_1_1media_1_1FixedKeySource-members.html index c8765bc11b..52d2338dfd 100644 --- a/docs/d9/dea/classshaka_1_1media_1_1FixedKeySource-members.html +++ b/docs/d9/dea/classshaka_1_1media_1_1FixedKeySource-members.html @@ -107,6 +107,8 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); TRACK_TYPE_AUDIO enum value (defined in shaka::media::KeySource)shaka::media::KeySource TRACK_TYPE_HD enum value (defined in shaka::media::KeySource)shaka::media::KeySource TRACK_TYPE_SD enum value (defined in shaka::media::KeySource)shaka::media::KeySource + TRACK_TYPE_UHD1 enum value (defined in shaka::media::KeySource)shaka::media::KeySource + TRACK_TYPE_UHD2 enum value (defined in shaka::media::KeySource)shaka::media::KeySource TRACK_TYPE_UNKNOWN enum value (defined in shaka::media::KeySource)shaka::media::KeySource TRACK_TYPE_UNSPECIFIED enum value (defined in shaka::media::KeySource)shaka::media::KeySource TrackType enum name (defined in shaka::media::KeySource)shaka::media::KeySource @@ -116,7 +118,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 936123ecaa..4a8f1c21a6 100644 --- a/docs/d9/ded/aac__audio__specific__config_8cc_source.html +++ b/docs/d9/ded/aac__audio__specific__config_8cc_source.html @@ -358,7 +358,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/df8/structshaka_1_1media_1_1mp4_1_1TrackFragmentDecodeTime-members.html b/docs/d9/df8/structshaka_1_1media_1_1mp4_1_1TrackFragmentDecodeTime-members.html index 5222648574..9c94d5308e 100644 --- a/docs/d9/df8/structshaka_1_1media_1_1mp4_1_1TrackFragmentDecodeTime-members.html +++ b/docs/d9/df8/structshaka_1_1media_1_1mp4_1_1TrackFragmentDecodeTime-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/df9/classshaka_1_1media_1_1OffsetByteQueue.html b/docs/d9/df9/classshaka_1_1media_1_1OffsetByteQueue.html index 203df71f47..f9017a0fc5 100644 --- a/docs/d9/df9/classshaka_1_1media_1_1OffsetByteQueue.html +++ b/docs/d9/df9/classshaka_1_1media_1_1OffsetByteQueue.html @@ -242,7 +242,7 @@ false if max_offset > diff --git a/docs/d9/dff/structshaka_1_1media_1_1H264ModificationOfPicNum.html b/docs/d9/dff/structshaka_1_1media_1_1H264ModificationOfPicNum.html index 4b291ec9ae..9973900a54 100644 --- a/docs/d9/dff/structshaka_1_1media_1_1H264ModificationOfPicNum.html +++ b/docs/d9/dff/structshaka_1_1media_1_1H264ModificationOfPicNum.html @@ -119,7 +119,7 @@ union { diff --git a/docs/da/d04/audio__stream__info_8cc_source.html b/docs/da/d04/audio__stream__info_8cc_source.html index 618fd96fe1..4ef2a86c76 100644 --- a/docs/da/d04/audio__stream__info_8cc_source.html +++ b/docs/da/d04/audio__stream__info_8cc_source.html @@ -223,7 +223,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d10/classshaka_1_1media_1_1mp2t_1_1EsParser.html b/docs/da/d10/classshaka_1_1media_1_1mp2t_1_1EsParser.html index 72682c8b8b..5d1feef0cb 100644 --- a/docs/da/d10/classshaka_1_1media_1_1mp2t_1_1EsParser.html +++ b/docs/da/d10/classshaka_1_1media_1_1mp2t_1_1EsParser.html @@ -146,7 +146,7 @@ uint32_t pid () diff --git a/docs/da/d1a/structshaka_1_1media_1_1mp4_1_1Language.html b/docs/da/d1a/structshaka_1_1media_1_1mp4_1_1Language.html index aed3da3e42..98586fddf2 100644 --- a/docs/da/d1a/structshaka_1_1media_1_1mp4_1_1Language.html +++ b/docs/da/d1a/structshaka_1_1media_1_1mp4_1_1Language.html @@ -120,7 +120,7 @@ std::string code< diff --git a/docs/da/d1c/classshaka_1_1media_1_1mp2t_1_1TsSection.html b/docs/da/d1c/classshaka_1_1media_1_1mp2t_1_1TsSection.html index 445243f2b4..c199d687d6 100644 --- a/docs/da/d1c/classshaka_1_1media_1_1mp2t_1_1TsSection.html +++ b/docs/da/d1c/classshaka_1_1media_1_1mp2t_1_1TsSection.html @@ -141,7 +141,7 @@ virtual void Reset ()= diff --git a/docs/da/d1d/udp__options_8cc_source.html b/docs/da/d1d/udp__options_8cc_source.html index 3bc3bb9655..fb02f8ef49 100644 --- a/docs/da/d1d/udp__options_8cc_source.html +++ b/docs/da/d1d/udp__options_8cc_source.html @@ -224,7 +224,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 b2d3ca7314..2617435111 100644 --- a/docs/da/d22/key__rotation__fragmenter_8h_source.html +++ b/docs/da/d22/key__rotation__fragmenter_8h_source.html @@ -156,7 +156,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d23/classshaka_1_1media_1_1mp2t_1_1EsParserH26x.html b/docs/da/d23/classshaka_1_1media_1_1mp2t_1_1EsParserH26x.html index 64abdd12b3..51f760015b 100644 --- a/docs/da/d23/classshaka_1_1media_1_1mp2t_1_1EsParserH26x.html +++ b/docs/da/d23/classshaka_1_1media_1_1mp2t_1_1EsParserH26x.html @@ -164,7 +164,7 @@ const scoped_refptr
    diff --git a/docs/da/d23/ts__muxer_8h_source.html b/docs/da/d23/ts__muxer_8h_source.html index 8263575576..ecca3eaa82 100644 --- a/docs/da/d23/ts__muxer_8h_source.html +++ b/docs/da/d23/ts__muxer_8h_source.html @@ -137,7 +137,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d24/h265__parser_8h_source.html b/docs/da/d24/h265__parser_8h_source.html index ff338100e2..cc937fe44f 100644 --- a/docs/da/d24/h265__parser_8h_source.html +++ b/docs/da/d24/h265__parser_8h_source.html @@ -450,7 +450,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d2a/text__stream__info_8h_source.html b/docs/da/d2a/text__stream__info_8h_source.html index 4ad8553730..f1c5bd852c 100644 --- a/docs/da/d2a/text__stream__info_8h_source.html +++ b/docs/da/d2a/text__stream__info_8h_source.html @@ -136,7 +136,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d2d/classshaka_1_1media_1_1webm_1_1WebMMuxer-members.html b/docs/da/d2d/classshaka_1_1media_1_1webm_1_1WebMMuxer-members.html index 65d4069f95..c738b85420 100644 --- a/docs/da/d2d/classshaka_1_1media_1_1webm_1_1WebMMuxer-members.html +++ b/docs/da/d2d/classshaka_1_1media_1_1webm_1_1WebMMuxer-members.html @@ -99,7 +99,9 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); clock() (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected crypto_period_duration_in_seconds() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected encryption_key_source() (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected - max_sd_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected + max_hd_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected + max_sd_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected + max_uhd1_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected Muxer(const MuxerOptions &options) (defined in shaka::media::Muxer)shaka::media::Muxerexplicit muxer_listener() (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected options() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected @@ -107,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); protection_scheme() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected Run()shaka::media::Muxer set_clock(base::Clock *clock)shaka::media::Muxerinline - SetKeySource(KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)shaka::media::Muxer + SetKeySource(KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)shaka::media::Muxer SetMuxerListener(std::unique_ptr< MuxerListener > muxer_listener)shaka::media::Muxer SetProgressListener(std::unique_ptr< ProgressListener > progress_listener)shaka::media::Muxer streams() const (defined in shaka::media::Muxer)shaka::media::Muxerinline @@ -117,7 +119,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d3e/structshaka_1_1media_1_1mp4_1_1PixelAspectRatio-members.html b/docs/da/d3e/structshaka_1_1media_1_1mp4_1_1PixelAspectRatio-members.html index b3d252795f..312e1af832 100644 --- a/docs/da/d3e/structshaka_1_1media_1_1mp4_1_1PixelAspectRatio-members.html +++ b/docs/da/d3e/structshaka_1_1media_1_1mp4_1_1PixelAspectRatio-members.html @@ -110,7 +110,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 1b9f57a6d8..55d271f36a 100644 --- a/docs/da/d41/mp4_2multi__segment__segmenter_8h_source.html +++ b/docs/da/d41/mp4_2multi__segment__segmenter_8h_source.html @@ -143,7 +143,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d43/structshaka_1_1ContentProtectionElement.html b/docs/da/d43/structshaka_1_1ContentProtectionElement.html index be6558ebee..50748be5cb 100644 --- a/docs/da/d43/structshaka_1_1ContentProtectionElement.html +++ b/docs/da/d43/structshaka_1_1ContentProtectionElement.html @@ -123,7 +123,7 @@ std::vector< El diff --git a/docs/da/d4e/classshaka_1_1media_1_1AudioStreamInfo.html b/docs/da/d4e/classshaka_1_1media_1_1AudioStreamInfo.html index d3b3639045..1d8093a366 100644 --- a/docs/da/d4e/classshaka_1_1media_1_1AudioStreamInfo.html +++ b/docs/da/d4e/classshaka_1_1media_1_1AudioStreamInfo.html @@ -313,7 +313,7 @@ Static Public Member Functions diff --git a/docs/da/d50/structshaka_1_1media_1_1mp4_1_1MovieExtendsHeader.html b/docs/da/d50/structshaka_1_1media_1_1mp4_1_1MovieExtendsHeader.html index 33f9d6fb48..6c0383cd00 100644 --- a/docs/da/d50/structshaka_1_1media_1_1mp4_1_1MovieExtendsHeader.html +++ b/docs/da/d50/structshaka_1_1media_1_1mp4_1_1MovieExtendsHeader.html @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/da/d53/es__parser__h265_8cc_source.html b/docs/da/d53/es__parser__h265_8cc_source.html index 5dc32bd137..eb2d2131c0 100644 --- a/docs/da/d53/es__parser__h265_8cc_source.html +++ b/docs/da/d53/es__parser__h265_8cc_source.html @@ -259,7 +259,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d59/structshaka_1_1media_1_1mp4_1_1CompactSampleSize.html b/docs/da/d59/structshaka_1_1media_1_1mp4_1_1CompactSampleSize.html index 986727899d..b3dedd8161 100644 --- a/docs/da/d59/structshaka_1_1media_1_1mp4_1_1CompactSampleSize.html +++ b/docs/da/d59/structshaka_1_1media_1_1mp4_1_1CompactSampleSize.html @@ -185,7 +185,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 3c152ca819..29662e918e 100644 --- a/docs/da/d5c/widevine__key__source_8h_source.html +++ b/docs/da/d5c/widevine__key__source_8h_source.html @@ -222,7 +222,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d5e/classshaka_1_1media_1_1H264VideoSliceHeaderParser-members.html b/docs/da/d5e/classshaka_1_1media_1_1H264VideoSliceHeaderParser-members.html index 72f1c870bf..e7a4e7ad29 100644 --- a/docs/da/d5e/classshaka_1_1media_1_1H264VideoSliceHeaderParser-members.html +++ b/docs/da/d5e/classshaka_1_1media_1_1H264VideoSliceHeaderParser-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d60/classshaka_1_1media_1_1mp4_1_1SingleSegmentSegmenter-members.html b/docs/da/d60/classshaka_1_1media_1_1mp4_1_1SingleSegmentSegmenter-members.html index 4988ce4788..b8170a298c 100644 --- a/docs/da/d60/classshaka_1_1media_1_1mp4_1_1SingleSegmentSegmenter-members.html +++ b/docs/da/d60/classshaka_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) overrideshaka::media::mp4::SingleSegmentSegmentervirtual GetInitRange(size_t *offset, size_t *size) overrideshaka::media::mp4::SingleSegmentSegmentervirtual GetReferenceTimeScale() const (defined in shaka::media::mp4::Segmenter)shaka::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, FourCC protection_scheme)shaka::media::mp4::Segmenter + Initialize(const std::vector< MediaStream * > &streams, MuxerListener *muxer_listener, ProgressListener *progress_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)shaka::media::mp4::Segmenter moov() (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected muxer_listener() (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected options() const (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected @@ -118,7 +118,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d64/classshaka_1_1media_1_1mp2t_1_1H264ProgramMapTableWriter-members.html b/docs/da/d64/classshaka_1_1media_1_1mp2t_1_1H264ProgramMapTableWriter-members.html index c5860b8b74..40616d1b69 100644 --- a/docs/da/d64/classshaka_1_1media_1_1mp2t_1_1H264ProgramMapTableWriter-members.html +++ b/docs/da/d64/classshaka_1_1media_1_1mp2t_1_1H264ProgramMapTableWriter-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d6e/structshaka_1_1media_1_1mp4_1_1AudioRollRecoveryEntry.html b/docs/da/d6e/structshaka_1_1media_1_1mp4_1_1AudioRollRecoveryEntry.html index a08d39ad4e..27714f5588 100644 --- a/docs/da/d6e/structshaka_1_1media_1_1mp4_1_1AudioRollRecoveryEntry.html +++ b/docs/da/d6e/structshaka_1_1media_1_1mp4_1_1AudioRollRecoveryEntry.html @@ -120,7 +120,7 @@ int16_t roll_distance< 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 1e6e1478e1..9988513324 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/d85/classshaka_1_1media_1_1mp2t_1_1TsSegmenter-members.html b/docs/da/d85/classshaka_1_1media_1_1mp2t_1_1TsSegmenter-members.html index 5bdb9e49f7..21143411e4 100644 --- a/docs/da/d85/classshaka_1_1media_1_1mp2t_1_1TsSegmenter-members.html +++ b/docs/da/d85/classshaka_1_1media_1_1mp2t_1_1TsSegmenter-members.html @@ -95,7 +95,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); - + @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
    AddSample(scoped_refptr< MediaSample > sample)shaka::media::mp2t::TsSegmenter
    Finalize()shaka::media::mp2t::TsSegmenter
    Initialize(const StreamInfo &stream_info, KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds)shaka::media::mp2t::TsSegmenter
    Initialize(const StreamInfo &stream_info, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds)shaka::media::mp2t::TsSegmenter
    InjectPesPacketGeneratorForTesting(std::unique_ptr< PesPacketGenerator > generator)shaka::media::mp2t::TsSegmenter
    InjectTsWriterForTesting(std::unique_ptr< TsWriter > writer)shaka::media::mp2t::TsSegmenter
    SetTsWriterFileOpenedForTesting(bool value)shaka::media::mp2t::TsSegmenter
    diff --git a/docs/da/d88/mp4__muxer_8cc_source.html b/docs/da/d88/mp4__muxer_8cc_source.html index a3077a65a3..7d9f840e8c 100644 --- a/docs/da/d88/mp4__muxer_8cc_source.html +++ b/docs/da/d88/mp4__muxer_8cc_source.html @@ -233,265 +233,266 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
    144 
    145  const Status segmenter_initialized = segmenter_->Initialize(
    146  streams(), muxer_listener(), progress_listener(), encryption_key_source(),
    -
    147  max_sd_pixels(), clear_lead_in_seconds(),
    -
    148  crypto_period_duration_in_seconds(), protection_scheme());
    -
    149 
    -
    150  if (!segmenter_initialized.ok())
    -
    151  return segmenter_initialized;
    -
    152 
    -
    153  FireOnMediaStartEvent();
    -
    154  return Status::OK;
    -
    155 }
    -
    156 
    -
    157 Status MP4Muxer::Finalize() {
    -
    158  DCHECK(segmenter_);
    -
    159  Status segmenter_finalized = segmenter_->Finalize();
    -
    160 
    -
    161  if (!segmenter_finalized.ok())
    -
    162  return segmenter_finalized;
    -
    163 
    -
    164  FireOnMediaEndEvent();
    -
    165  LOG(INFO) << "MP4 file '" << options().output_file_name << "' finalized.";
    -
    166  return Status::OK;
    -
    167 }
    -
    168 
    -
    169 Status MP4Muxer::DoAddSample(const MediaStream* stream,
    -
    170  scoped_refptr<MediaSample> sample) {
    -
    171  DCHECK(segmenter_);
    -
    172  return segmenter_->AddSample(stream, sample);
    -
    173 }
    -
    174 
    -
    175 void MP4Muxer::InitializeTrak(const StreamInfo* info, Track* trak) {
    -
    176  int64_t now = IsoTimeNow();
    -
    177  trak->header.creation_time = now;
    -
    178  trak->header.modification_time = now;
    -
    179  trak->header.duration = 0;
    -
    180  trak->media.header.creation_time = now;
    -
    181  trak->media.header.modification_time = now;
    -
    182  trak->media.header.timescale = info->time_scale();
    -
    183  trak->media.header.duration = 0;
    -
    184  if (!info->language().empty()) {
    -
    185  // Strip off the subtag, if any.
    -
    186  std::string main_language = info->language();
    -
    187  size_t dash = main_language.find('-');
    -
    188  if (dash != std::string::npos) {
    -
    189  main_language.erase(dash);
    -
    190  }
    -
    191 
    -
    192  // ISO-639-2/T main language code should be 3 characters.
    -
    193  if (main_language.size() != 3) {
    -
    194  LOG(WARNING) << "'" << main_language << "' is not a valid ISO-639-2 "
    -
    195  << "language code, ignoring.";
    -
    196  } else {
    -
    197  trak->media.header.language.code = main_language;
    -
    198  }
    -
    199  }
    -
    200 }
    -
    201 
    -
    202 void MP4Muxer::GenerateVideoTrak(const VideoStreamInfo* video_info,
    -
    203  Track* trak,
    -
    204  uint32_t track_id) {
    -
    205  InitializeTrak(video_info, trak);
    -
    206 
    -
    207  // width and height specify the track's visual presentation size as
    -
    208  // fixed-point 16.16 values.
    -
    209  uint32_t pixel_width = video_info->pixel_width();
    -
    210  uint32_t pixel_height = video_info->pixel_height();
    -
    211  if (pixel_width == 0 || pixel_height == 0) {
    -
    212  LOG(WARNING) << "pixel width/height are not set. Assuming 1:1.";
    -
    213  pixel_width = 1;
    -
    214  pixel_height = 1;
    -
    215  }
    -
    216  const double sample_aspect_ratio =
    -
    217  static_cast<double>(pixel_width) / pixel_height;
    -
    218  trak->header.width = video_info->width() * sample_aspect_ratio * 0x10000;
    -
    219  trak->header.height = video_info->height() * 0x10000;
    -
    220 
    -
    221  VideoSampleEntry video;
    -
    222  video.format = CodecToFourCC(video_info->codec());
    -
    223  video.width = video_info->width();
    -
    224  video.height = video_info->height();
    -
    225  video.codec_configuration.data = video_info->codec_config();
    -
    226  if (pixel_width != 1 || pixel_height != 1) {
    -
    227  video.pixel_aspect.h_spacing = pixel_width;
    -
    228  video.pixel_aspect.v_spacing = pixel_height;
    -
    229  }
    -
    230 
    -
    231  SampleDescription& sample_description =
    -
    232  trak->media.information.sample_table.description;
    -
    233  sample_description.type = kVideo;
    -
    234  sample_description.video_entries.push_back(video);
    -
    235 }
    -
    236 
    -
    237 void MP4Muxer::GenerateAudioTrak(const AudioStreamInfo* audio_info,
    -
    238  Track* trak,
    -
    239  uint32_t track_id) {
    -
    240  InitializeTrak(audio_info, trak);
    -
    241 
    -
    242  trak->header.volume = 0x100;
    -
    243 
    -
    244  AudioSampleEntry audio;
    -
    245  audio.format = CodecToFourCC(audio_info->codec());
    -
    246  switch(audio_info->codec()){
    -
    247  case kCodecAAC:
    -
    248  audio.esds.es_descriptor.set_object_type(kISO_14496_3); // MPEG4 AAC.
    -
    249  audio.esds.es_descriptor.set_esid(track_id);
    -
    250  audio.esds.es_descriptor.set_decoder_specific_info(
    -
    251  audio_info->codec_config());
    -
    252  audio.esds.es_descriptor.set_max_bitrate(audio_info->max_bitrate());
    -
    253  audio.esds.es_descriptor.set_avg_bitrate(audio_info->avg_bitrate());
    -
    254  break;
    -
    255  case kCodecDTSC:
    -
    256  case kCodecDTSH:
    -
    257  case kCodecDTSL:
    -
    258  case kCodecDTSE:
    -
    259  case kCodecDTSM:
    -
    260  audio.ddts.extra_data = audio_info->codec_config();
    -
    261  audio.ddts.max_bitrate = audio_info->max_bitrate();
    -
    262  audio.ddts.avg_bitrate = audio_info->avg_bitrate();
    -
    263  audio.ddts.sampling_frequency = audio_info->sampling_frequency();
    -
    264  audio.ddts.pcm_sample_depth = audio_info->sample_bits();
    -
    265  break;
    -
    266  case kCodecAC3:
    -
    267  audio.dac3.data = audio_info->codec_config();
    -
    268  break;
    -
    269  case kCodecEAC3:
    -
    270  audio.dec3.data = audio_info->codec_config();
    -
    271  break;
    -
    272  case kCodecOpus:
    -
    273  audio.dops.opus_identification_header = audio_info->codec_config();
    -
    274  break;
    -
    275  default:
    -
    276  NOTIMPLEMENTED();
    -
    277  break;
    -
    278  }
    -
    279 
    -
    280  audio.channelcount = audio_info->num_channels();
    -
    281  audio.samplesize = audio_info->sample_bits();
    -
    282  audio.samplerate = audio_info->sampling_frequency();
    -
    283  SampleTable& sample_table = trak->media.information.sample_table;
    -
    284  SampleDescription& sample_description = sample_table.description;
    -
    285  sample_description.type = kAudio;
    -
    286  sample_description.audio_entries.push_back(audio);
    -
    287 
    -
    288  // Opus requires at least one sample group description box and at least one
    -
    289  // sample to group box with grouping type 'roll' within sample table box.
    -
    290  if (audio_info->codec() == kCodecOpus) {
    -
    291  sample_table.sample_group_descriptions.resize(1);
    -
    292  SampleGroupDescription& sample_group_description =
    -
    293  sample_table.sample_group_descriptions.back();
    -
    294  sample_group_description.grouping_type = FOURCC_roll;
    -
    295  sample_group_description.audio_roll_recovery_entries.resize(1);
    -
    296  // The roll distance is expressed in sample units and always takes negative
    -
    297  // values.
    -
    298  const uint64_t kNanosecondsPerSecond = 1000000000ull;
    -
    299  sample_group_description.audio_roll_recovery_entries[0].roll_distance =
    -
    300  (0 - (audio_info->seek_preroll_ns() * audio.samplerate +
    -
    301  kNanosecondsPerSecond / 2)) /
    -
    302  kNanosecondsPerSecond;
    -
    303 
    -
    304  sample_table.sample_to_groups.resize(1);
    -
    305  SampleToGroup& sample_to_group = sample_table.sample_to_groups.back();
    -
    306  sample_to_group.grouping_type = FOURCC_roll;
    -
    307 
    -
    308  sample_to_group.entries.resize(1);
    -
    309  SampleToGroupEntry& sample_to_group_entry = sample_to_group.entries.back();
    -
    310  // All samples are in track fragments.
    -
    311  sample_to_group_entry.sample_count = 0;
    -
    312  sample_to_group_entry.group_description_index =
    -
    313  SampleToGroupEntry::kTrackGroupDescriptionIndexBase + 1;
    -
    314  } else if (audio_info->seek_preroll_ns() != 0) {
    -
    315  LOG(WARNING) << "Unexpected seek preroll for codec " << audio_info->codec();
    -
    316  return;
    -
    317  }
    -
    318 }
    -
    319 
    -
    320 bool MP4Muxer::GetInitRangeStartAndEnd(uint32_t* start, uint32_t* end) {
    -
    321  DCHECK(start && end);
    -
    322  size_t range_offset = 0;
    -
    323  size_t range_size = 0;
    -
    324  const bool has_range = segmenter_->GetInitRange(&range_offset, &range_size);
    -
    325 
    -
    326  if (!has_range)
    -
    327  return false;
    -
    328 
    -
    329  SetStartAndEndFromOffsetAndSize(range_offset, range_size, start, end);
    -
    330  return true;
    -
    331 }
    -
    332 
    -
    333 bool MP4Muxer::GetIndexRangeStartAndEnd(uint32_t* start, uint32_t* end) {
    -
    334  DCHECK(start && end);
    -
    335  size_t range_offset = 0;
    -
    336  size_t range_size = 0;
    -
    337  const bool has_range = segmenter_->GetIndexRange(&range_offset, &range_size);
    -
    338 
    -
    339  if (!has_range)
    -
    340  return false;
    -
    341 
    -
    342  SetStartAndEndFromOffsetAndSize(range_offset, range_size, start, end);
    -
    343  return true;
    -
    344 }
    -
    345 
    -
    346 void MP4Muxer::FireOnMediaStartEvent() {
    -
    347  if (!muxer_listener())
    -
    348  return;
    -
    349 
    -
    350  if (streams().size() > 1) {
    -
    351  LOG(ERROR) << "MuxerListener cannot take more than 1 stream.";
    -
    352  return;
    -
    353  }
    -
    354  DCHECK(!streams().empty()) << "Media started without a stream.";
    -
    355 
    -
    356  const uint32_t timescale = segmenter_->GetReferenceTimeScale();
    -
    357  muxer_listener()->OnMediaStart(options(),
    -
    358  *streams().front()->info(),
    -
    359  timescale,
    -
    360  MuxerListener::kContainerMp4);
    -
    361 }
    -
    362 
    -
    363 void MP4Muxer::FireOnMediaEndEvent() {
    -
    364  if (!muxer_listener())
    -
    365  return;
    -
    366 
    -
    367  uint32_t init_range_start = 0;
    -
    368  uint32_t init_range_end = 0;
    -
    369  const bool has_init_range =
    -
    370  GetInitRangeStartAndEnd(&init_range_start, &init_range_end);
    -
    371 
    -
    372  uint32_t index_range_start = 0;
    -
    373  uint32_t index_range_end = 0;
    -
    374  const bool has_index_range =
    -
    375  GetIndexRangeStartAndEnd(&index_range_start, &index_range_end);
    -
    376 
    -
    377  const float duration_seconds = static_cast<float>(segmenter_->GetDuration());
    -
    378 
    -
    379  const int64_t file_size =
    -
    380  File::GetFileSize(options().output_file_name.c_str());
    -
    381  if (file_size <= 0) {
    -
    382  LOG(ERROR) << "Invalid file size: " << file_size;
    -
    383  return;
    -
    384  }
    -
    385 
    -
    386  muxer_listener()->OnMediaEnd(has_init_range,
    -
    387  init_range_start,
    -
    388  init_range_end,
    -
    389  has_index_range,
    -
    390  index_range_start,
    -
    391  index_range_end,
    -
    392  duration_seconds,
    -
    393  file_size);
    -
    394 }
    -
    395 
    -
    396 uint64_t MP4Muxer::IsoTimeNow() {
    -
    397  // Time in seconds from Jan. 1, 1904 to epoch time, i.e. Jan. 1, 1970.
    -
    398  const uint64_t kIsomTimeOffset = 2082844800l;
    -
    399  return kIsomTimeOffset +
    -
    400  (clock() ? clock()->Now() : base::Time::Now()).ToDoubleT();
    -
    401 }
    -
    402 
    -
    403 } // namespace mp4
    -
    404 } // namespace media
    -
    405 } // namespace shaka
    +
    147  max_sd_pixels(), max_hd_pixels(), max_uhd1_pixels(),
    +
    148  clear_lead_in_seconds(), crypto_period_duration_in_seconds(),
    +
    149  protection_scheme());
    +
    150 
    +
    151  if (!segmenter_initialized.ok())
    +
    152  return segmenter_initialized;
    +
    153 
    +
    154  FireOnMediaStartEvent();
    +
    155  return Status::OK;
    +
    156 }
    +
    157 
    +
    158 Status MP4Muxer::Finalize() {
    +
    159  DCHECK(segmenter_);
    +
    160  Status segmenter_finalized = segmenter_->Finalize();
    +
    161 
    +
    162  if (!segmenter_finalized.ok())
    +
    163  return segmenter_finalized;
    +
    164 
    +
    165  FireOnMediaEndEvent();
    +
    166  LOG(INFO) << "MP4 file '" << options().output_file_name << "' finalized.";
    +
    167  return Status::OK;
    +
    168 }
    +
    169 
    +
    170 Status MP4Muxer::DoAddSample(const MediaStream* stream,
    +
    171  scoped_refptr<MediaSample> sample) {
    +
    172  DCHECK(segmenter_);
    +
    173  return segmenter_->AddSample(stream, sample);
    +
    174 }
    +
    175 
    +
    176 void MP4Muxer::InitializeTrak(const StreamInfo* info, Track* trak) {
    +
    177  int64_t now = IsoTimeNow();
    +
    178  trak->header.creation_time = now;
    +
    179  trak->header.modification_time = now;
    +
    180  trak->header.duration = 0;
    +
    181  trak->media.header.creation_time = now;
    +
    182  trak->media.header.modification_time = now;
    +
    183  trak->media.header.timescale = info->time_scale();
    +
    184  trak->media.header.duration = 0;
    +
    185  if (!info->language().empty()) {
    +
    186  // Strip off the subtag, if any.
    +
    187  std::string main_language = info->language();
    +
    188  size_t dash = main_language.find('-');
    +
    189  if (dash != std::string::npos) {
    +
    190  main_language.erase(dash);
    +
    191  }
    +
    192 
    +
    193  // ISO-639-2/T main language code should be 3 characters.
    +
    194  if (main_language.size() != 3) {
    +
    195  LOG(WARNING) << "'" << main_language << "' is not a valid ISO-639-2 "
    +
    196  << "language code, ignoring.";
    +
    197  } else {
    +
    198  trak->media.header.language.code = main_language;
    +
    199  }
    +
    200  }
    +
    201 }
    +
    202 
    +
    203 void MP4Muxer::GenerateVideoTrak(const VideoStreamInfo* video_info,
    +
    204  Track* trak,
    +
    205  uint32_t track_id) {
    +
    206  InitializeTrak(video_info, trak);
    +
    207 
    +
    208  // width and height specify the track's visual presentation size as
    +
    209  // fixed-point 16.16 values.
    +
    210  uint32_t pixel_width = video_info->pixel_width();
    +
    211  uint32_t pixel_height = video_info->pixel_height();
    +
    212  if (pixel_width == 0 || pixel_height == 0) {
    +
    213  LOG(WARNING) << "pixel width/height are not set. Assuming 1:1.";
    +
    214  pixel_width = 1;
    +
    215  pixel_height = 1;
    +
    216  }
    +
    217  const double sample_aspect_ratio =
    +
    218  static_cast<double>(pixel_width) / pixel_height;
    +
    219  trak->header.width = video_info->width() * sample_aspect_ratio * 0x10000;
    +
    220  trak->header.height = video_info->height() * 0x10000;
    +
    221 
    +
    222  VideoSampleEntry video;
    +
    223  video.format = CodecToFourCC(video_info->codec());
    +
    224  video.width = video_info->width();
    +
    225  video.height = video_info->height();
    +
    226  video.codec_configuration.data = video_info->codec_config();
    +
    227  if (pixel_width != 1 || pixel_height != 1) {
    +
    228  video.pixel_aspect.h_spacing = pixel_width;
    +
    229  video.pixel_aspect.v_spacing = pixel_height;
    +
    230  }
    +
    231 
    +
    232  SampleDescription& sample_description =
    +
    233  trak->media.information.sample_table.description;
    +
    234  sample_description.type = kVideo;
    +
    235  sample_description.video_entries.push_back(video);
    +
    236 }
    +
    237 
    +
    238 void MP4Muxer::GenerateAudioTrak(const AudioStreamInfo* audio_info,
    +
    239  Track* trak,
    +
    240  uint32_t track_id) {
    +
    241  InitializeTrak(audio_info, trak);
    +
    242 
    +
    243  trak->header.volume = 0x100;
    +
    244 
    +
    245  AudioSampleEntry audio;
    +
    246  audio.format = CodecToFourCC(audio_info->codec());
    +
    247  switch(audio_info->codec()){
    +
    248  case kCodecAAC:
    +
    249  audio.esds.es_descriptor.set_object_type(kISO_14496_3); // MPEG4 AAC.
    +
    250  audio.esds.es_descriptor.set_esid(track_id);
    +
    251  audio.esds.es_descriptor.set_decoder_specific_info(
    +
    252  audio_info->codec_config());
    +
    253  audio.esds.es_descriptor.set_max_bitrate(audio_info->max_bitrate());
    +
    254  audio.esds.es_descriptor.set_avg_bitrate(audio_info->avg_bitrate());
    +
    255  break;
    +
    256  case kCodecDTSC:
    +
    257  case kCodecDTSH:
    +
    258  case kCodecDTSL:
    +
    259  case kCodecDTSE:
    +
    260  case kCodecDTSM:
    +
    261  audio.ddts.extra_data = audio_info->codec_config();
    +
    262  audio.ddts.max_bitrate = audio_info->max_bitrate();
    +
    263  audio.ddts.avg_bitrate = audio_info->avg_bitrate();
    +
    264  audio.ddts.sampling_frequency = audio_info->sampling_frequency();
    +
    265  audio.ddts.pcm_sample_depth = audio_info->sample_bits();
    +
    266  break;
    +
    267  case kCodecAC3:
    +
    268  audio.dac3.data = audio_info->codec_config();
    +
    269  break;
    +
    270  case kCodecEAC3:
    +
    271  audio.dec3.data = audio_info->codec_config();
    +
    272  break;
    +
    273  case kCodecOpus:
    +
    274  audio.dops.opus_identification_header = audio_info->codec_config();
    +
    275  break;
    +
    276  default:
    +
    277  NOTIMPLEMENTED();
    +
    278  break;
    +
    279  }
    +
    280 
    +
    281  audio.channelcount = audio_info->num_channels();
    +
    282  audio.samplesize = audio_info->sample_bits();
    +
    283  audio.samplerate = audio_info->sampling_frequency();
    +
    284  SampleTable& sample_table = trak->media.information.sample_table;
    +
    285  SampleDescription& sample_description = sample_table.description;
    +
    286  sample_description.type = kAudio;
    +
    287  sample_description.audio_entries.push_back(audio);
    +
    288 
    +
    289  // Opus requires at least one sample group description box and at least one
    +
    290  // sample to group box with grouping type 'roll' within sample table box.
    +
    291  if (audio_info->codec() == kCodecOpus) {
    +
    292  sample_table.sample_group_descriptions.resize(1);
    +
    293  SampleGroupDescription& sample_group_description =
    +
    294  sample_table.sample_group_descriptions.back();
    +
    295  sample_group_description.grouping_type = FOURCC_roll;
    +
    296  sample_group_description.audio_roll_recovery_entries.resize(1);
    +
    297  // The roll distance is expressed in sample units and always takes negative
    +
    298  // values.
    +
    299  const uint64_t kNanosecondsPerSecond = 1000000000ull;
    +
    300  sample_group_description.audio_roll_recovery_entries[0].roll_distance =
    +
    301  (0 - (audio_info->seek_preroll_ns() * audio.samplerate +
    +
    302  kNanosecondsPerSecond / 2)) /
    +
    303  kNanosecondsPerSecond;
    +
    304 
    +
    305  sample_table.sample_to_groups.resize(1);
    +
    306  SampleToGroup& sample_to_group = sample_table.sample_to_groups.back();
    +
    307  sample_to_group.grouping_type = FOURCC_roll;
    +
    308 
    +
    309  sample_to_group.entries.resize(1);
    +
    310  SampleToGroupEntry& sample_to_group_entry = sample_to_group.entries.back();
    +
    311  // All samples are in track fragments.
    +
    312  sample_to_group_entry.sample_count = 0;
    +
    313  sample_to_group_entry.group_description_index =
    +
    314  SampleToGroupEntry::kTrackGroupDescriptionIndexBase + 1;
    +
    315  } else if (audio_info->seek_preroll_ns() != 0) {
    +
    316  LOG(WARNING) << "Unexpected seek preroll for codec " << audio_info->codec();
    +
    317  return;
    +
    318  }
    +
    319 }
    +
    320 
    +
    321 bool MP4Muxer::GetInitRangeStartAndEnd(uint32_t* start, uint32_t* end) {
    +
    322  DCHECK(start && end);
    +
    323  size_t range_offset = 0;
    +
    324  size_t range_size = 0;
    +
    325  const bool has_range = segmenter_->GetInitRange(&range_offset, &range_size);
    +
    326 
    +
    327  if (!has_range)
    +
    328  return false;
    +
    329 
    +
    330  SetStartAndEndFromOffsetAndSize(range_offset, range_size, start, end);
    +
    331  return true;
    +
    332 }
    +
    333 
    +
    334 bool MP4Muxer::GetIndexRangeStartAndEnd(uint32_t* start, uint32_t* end) {
    +
    335  DCHECK(start && end);
    +
    336  size_t range_offset = 0;
    +
    337  size_t range_size = 0;
    +
    338  const bool has_range = segmenter_->GetIndexRange(&range_offset, &range_size);
    +
    339 
    +
    340  if (!has_range)
    +
    341  return false;
    +
    342 
    +
    343  SetStartAndEndFromOffsetAndSize(range_offset, range_size, start, end);
    +
    344  return true;
    +
    345 }
    +
    346 
    +
    347 void MP4Muxer::FireOnMediaStartEvent() {
    +
    348  if (!muxer_listener())
    +
    349  return;
    +
    350 
    +
    351  if (streams().size() > 1) {
    +
    352  LOG(ERROR) << "MuxerListener cannot take more than 1 stream.";
    +
    353  return;
    +
    354  }
    +
    355  DCHECK(!streams().empty()) << "Media started without a stream.";
    +
    356 
    +
    357  const uint32_t timescale = segmenter_->GetReferenceTimeScale();
    +
    358  muxer_listener()->OnMediaStart(options(),
    +
    359  *streams().front()->info(),
    +
    360  timescale,
    +
    361  MuxerListener::kContainerMp4);
    +
    362 }
    +
    363 
    +
    364 void MP4Muxer::FireOnMediaEndEvent() {
    +
    365  if (!muxer_listener())
    +
    366  return;
    +
    367 
    +
    368  uint32_t init_range_start = 0;
    +
    369  uint32_t init_range_end = 0;
    +
    370  const bool has_init_range =
    +
    371  GetInitRangeStartAndEnd(&init_range_start, &init_range_end);
    +
    372 
    +
    373  uint32_t index_range_start = 0;
    +
    374  uint32_t index_range_end = 0;
    +
    375  const bool has_index_range =
    +
    376  GetIndexRangeStartAndEnd(&index_range_start, &index_range_end);
    +
    377 
    +
    378  const float duration_seconds = static_cast<float>(segmenter_->GetDuration());
    +
    379 
    +
    380  const int64_t file_size =
    +
    381  File::GetFileSize(options().output_file_name.c_str());
    +
    382  if (file_size <= 0) {
    +
    383  LOG(ERROR) << "Invalid file size: " << file_size;
    +
    384  return;
    +
    385  }
    +
    386 
    +
    387  muxer_listener()->OnMediaEnd(has_init_range,
    +
    388  init_range_start,
    +
    389  init_range_end,
    +
    390  has_index_range,
    +
    391  index_range_start,
    +
    392  index_range_end,
    +
    393  duration_seconds,
    +
    394  file_size);
    +
    395 }
    +
    396 
    +
    397 uint64_t MP4Muxer::IsoTimeNow() {
    +
    398  // Time in seconds from Jan. 1, 1904 to epoch time, i.e. Jan. 1, 1970.
    +
    399  const uint64_t kIsomTimeOffset = 2082844800l;
    +
    400  return kIsomTimeOffset +
    +
    401  (clock() ? clock()->Now() : base::Time::Now()).ToDoubleT();
    +
    402 }
    +
    403 
    +
    404 } // namespace mp4
    +
    405 } // namespace media
    +
    406 } // namespace shaka
    virtual void OnMediaEnd(bool has_init_range, uint64_t init_range_start, uint64_t init_range_end, bool has_index_range, uint64_t index_range_start, uint64_t index_range_end, float duration_seconds, uint64_t file_size)=0
    MP4Muxer(const MuxerOptions &options)
    Create a MP4Muxer object from MuxerOptions.
    Definition: mp4_muxer.cc:82
    @@ -503,7 +504,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d8b/classshaka_1_1media_1_1WebMMediaParser-members.html b/docs/da/d8b/classshaka_1_1media_1_1WebMMediaParser-members.html index 6c03ecc7eb..ae829ee5ee 100644 --- a/docs/da/d8b/classshaka_1_1media_1_1WebMMediaParser-members.html +++ b/docs/da/d8b/classshaka_1_1media_1_1WebMMediaParser-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d8e/container__names_8cc_source.html b/docs/da/d8e/container__names_8cc_source.html index 19b420b21d..a4b3bfa573 100644 --- a/docs/da/d8e/container__names_8cc_source.html +++ b/docs/da/d8e/container__names_8cc_source.html @@ -1866,7 +1866,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d9b/structshaka_1_1media_1_1mp4_1_1CompositionOffset-members.html b/docs/da/d9b/structshaka_1_1media_1_1mp4_1_1CompositionOffset-members.html index 20023dac0a..9f56b66c91 100644 --- a/docs/da/d9b/structshaka_1_1media_1_1mp4_1_1CompositionOffset-members.html +++ b/docs/da/d9b/structshaka_1_1media_1_1mp4_1_1CompositionOffset-members.html @@ -98,7 +98,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d9d/structshaka_1_1media_1_1mp4_1_1EC3Specific-members.html b/docs/da/d9d/structshaka_1_1media_1_1mp4_1_1EC3Specific-members.html index 54f2986b15..53df642e4d 100644 --- a/docs/da/d9d/structshaka_1_1media_1_1mp4_1_1EC3Specific-members.html +++ b/docs/da/d9d/structshaka_1_1media_1_1mp4_1_1EC3Specific-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d9f/classshaka_1_1MpdNotifierFactory-members.html b/docs/da/d9f/classshaka_1_1MpdNotifierFactory-members.html index d9da846643..b0c5a37577 100644 --- a/docs/da/d9f/classshaka_1_1MpdNotifierFactory-members.html +++ b/docs/da/d9f/classshaka_1_1MpdNotifierFactory-members.html @@ -99,7 +99,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d9f/classshaka_1_1media_1_1MockMuxerListener-members.html b/docs/da/d9f/classshaka_1_1media_1_1MockMuxerListener-members.html index 1a7633a56a..f0149e9b6d 100644 --- a/docs/da/d9f/classshaka_1_1media_1_1MockMuxerListener-members.html +++ b/docs/da/d9f/classshaka_1_1media_1_1MockMuxerListener-members.html @@ -117,7 +117,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/da1/classshaka_1_1media_1_1mp2t_1_1TsPacket.html b/docs/da/da1/classshaka_1_1media_1_1mp2t_1_1TsPacket.html index 39acf5122f..0ce0ba4ed4 100644 --- a/docs/da/da1/classshaka_1_1media_1_1mp2t_1_1TsPacket.html +++ b/docs/da/da1/classshaka_1_1media_1_1mp2t_1_1TsPacket.html @@ -145,7 +145,7 @@ static const int kPacketSi diff --git a/docs/da/db2/classshaka_1_1Representation-members.html b/docs/da/db2/classshaka_1_1Representation-members.html index 88cceaa7a1..2f848b474d 100644 --- a/docs/da/db2/classshaka_1_1Representation-members.html +++ b/docs/da/db2/classshaka_1_1Representation-members.html @@ -112,7 +112,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/dbb/structshaka_1_1media_1_1mp4_1_1HandlerReference.html b/docs/da/dbb/structshaka_1_1media_1_1mp4_1_1HandlerReference.html index 28eb640659..cb8fe4d035 100644 --- a/docs/da/dbb/structshaka_1_1media_1_1mp4_1_1HandlerReference.html +++ b/docs/da/dbb/structshaka_1_1media_1_1mp4_1_1HandlerReference.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 e8cf0db6dd..d4ac24260c 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/dc4/structshaka_1_1media_1_1mp4_1_1TrackHeader.html b/docs/da/dc4/structshaka_1_1media_1_1mp4_1_1TrackHeader.html index a697804d60..11f23fe1cf 100644 --- a/docs/da/dc4/structshaka_1_1media_1_1mp4_1_1TrackHeader.html +++ b/docs/da/dc4/structshaka_1_1media_1_1mp4_1_1TrackHeader.html @@ -215,7 +215,7 @@ Additional Inherited Members diff --git a/docs/da/dcb/es__descriptor_8h_source.html b/docs/da/dcb/es__descriptor_8h_source.html index 98da81bf7f..acdff1e900 100644 --- a/docs/da/dcb/es__descriptor_8h_source.html +++ b/docs/da/dcb/es__descriptor_8h_source.html @@ -183,7 +183,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/dd0/structshaka_1_1media_1_1mp4_1_1Edit.html b/docs/da/dd0/structshaka_1_1media_1_1mp4_1_1Edit.html index b9c238332a..7ef56721c1 100644 --- a/docs/da/dd0/structshaka_1_1media_1_1mp4_1_1Edit.html +++ b/docs/da/dd0/structshaka_1_1media_1_1mp4_1_1Edit.html @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/da/dd0/webm__info__parser_8h_source.html b/docs/da/dd0/webm__info__parser_8h_source.html index 3c676a7992..d415e57996 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 8d314c9643..9e5777ba7f 100644 --- a/docs/da/dd1/fragmenter_8h_source.html +++ b/docs/da/dd1/fragmenter_8h_source.html @@ -205,7 +205,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/dd2/classshaka_1_1media_1_1mp2t_1_1TsPacket-members.html b/docs/da/dd2/classshaka_1_1media_1_1mp2t_1_1TsPacket-members.html index df2c71ef59..ac9b8f4b31 100644 --- a/docs/da/dd2/classshaka_1_1media_1_1mp2t_1_1TsPacket-members.html +++ b/docs/da/dd2/classshaka_1_1media_1_1mp2t_1_1TsPacket-members.html @@ -107,7 +107,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/dd6/classshaka_1_1media_1_1H264ByteToUnitStreamConverter-members.html b/docs/da/dd6/classshaka_1_1media_1_1H264ByteToUnitStreamConverter-members.html index 1e91553b7e..f8c5e16b99 100644 --- a/docs/da/dd6/classshaka_1_1media_1_1H264ByteToUnitStreamConverter-members.html +++ b/docs/da/dd6/classshaka_1_1media_1_1H264ByteToUnitStreamConverter-members.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/dd8/classshaka_1_1media_1_1mp2t_1_1Mp2tMediaParser-members.html b/docs/da/dd8/classshaka_1_1media_1_1mp2t_1_1Mp2tMediaParser-members.html index bf22c3b53a..a7d0d89820 100644 --- a/docs/da/dd8/classshaka_1_1media_1_1mp2t_1_1Mp2tMediaParser-members.html +++ b/docs/da/dd8/classshaka_1_1media_1_1mp2t_1_1Mp2tMediaParser-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/dda/structshaka_1_1media_1_1H264SEIRecoveryPoint-members.html b/docs/da/dda/structshaka_1_1media_1_1H264SEIRecoveryPoint-members.html index 14a82c7387..f98bd18646 100644 --- a/docs/da/dda/structshaka_1_1media_1_1H264SEIRecoveryPoint-members.html +++ b/docs/da/dda/structshaka_1_1media_1_1H264SEIRecoveryPoint-members.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/ddd/classshaka_1_1media_1_1WidevineKeySource.html b/docs/da/ddd/classshaka_1_1media_1_1WidevineKeySource.html index 399e64c84f..b87e7be530 100644 --- a/docs/da/ddd/classshaka_1_1media_1_1WidevineKeySource.html +++ b/docs/da/ddd/classshaka_1_1media_1_1WidevineKeySource.html @@ -143,10 +143,12 @@ Additional Inherited Members   TRACK_TYPE_UNKNOWN = 0, TRACK_TYPE_SD = 1, TRACK_TYPE_HD = 2, -TRACK_TYPE_AUDIO = 3, +TRACK_TYPE_UHD1 = 3,
    -  TRACK_TYPE_UNSPECIFIED = 4, -NUM_VALID_TRACK_TYPES = 4 +  TRACK_TYPE_UHD2 = 4, +TRACK_TYPE_AUDIO = 5, +TRACK_TYPE_UNSPECIFIED = 6, +NUM_VALID_TRACK_TYPES = 6
    }   @@ -550,7 +552,7 @@ static std::string  diff --git a/docs/da/ddf/structshaka_1_1media_1_1mp4_1_1SampleDescription-members.html b/docs/da/ddf/structshaka_1_1media_1_1mp4_1_1SampleDescription-members.html index d99a758327..ac7a06e89c 100644 --- a/docs/da/ddf/structshaka_1_1media_1_1mp4_1_1SampleDescription-members.html +++ b/docs/da/ddf/structshaka_1_1media_1_1mp4_1_1SampleDescription-members.html @@ -116,7 +116,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 ab3ba80e43..4c0d6597b2 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/classshaka_1_1media_1_1WebMClusterParser.html b/docs/da/de4/classshaka_1_1media_1_1WebMClusterParser.html index c558dcbe41..c69765919e 100644 --- a/docs/da/de4/classshaka_1_1media_1_1WebMClusterParser.html +++ b/docs/da/de4/classshaka_1_1media_1_1WebMClusterParser.html @@ -365,7 +365,7 @@ The number of bytes parsed on success. diff --git a/docs/da/de6/structshaka_1_1media_1_1mp4_1_1SchemeType-members.html b/docs/da/de6/structshaka_1_1media_1_1mp4_1_1SchemeType-members.html index 70af8126ef..5ae2847565 100644 --- a/docs/da/de6/structshaka_1_1media_1_1mp4_1_1SchemeType-members.html +++ b/docs/da/de6/structshaka_1_1media_1_1mp4_1_1SchemeType-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/de8/classshaka_1_1media_1_1AudioStreamInfo-members.html b/docs/da/de8/classshaka_1_1media_1_1AudioStreamInfo-members.html index 1768a443d0..ce43ee262f 100644 --- a/docs/da/de8/classshaka_1_1media_1_1AudioStreamInfo-members.html +++ b/docs/da/de8/classshaka_1_1media_1_1AudioStreamInfo-members.html @@ -126,7 +126,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/de9/structshaka_1_1media_1_1mp4_1_1ProtectionSchemeInfo.html b/docs/da/de9/structshaka_1_1media_1_1mp4_1_1ProtectionSchemeInfo.html index e04c1acc3d..d629ad13d3 100644 --- a/docs/da/de9/structshaka_1_1media_1_1mp4_1_1ProtectionSchemeInfo.html +++ b/docs/da/de9/structshaka_1_1media_1_1mp4_1_1ProtectionSchemeInfo.html @@ -179,7 +179,7 @@ Additional Inherited Members diff --git a/docs/da/df0/classshaka_1_1media_1_1H264VideoSliceHeaderParser.html b/docs/da/df0/classshaka_1_1media_1_1H264VideoSliceHeaderParser.html index 52f9e235d9..77aad196df 100644 --- a/docs/da/df0/classshaka_1_1media_1_1H264VideoSliceHeaderParser.html +++ b/docs/da/df0/classshaka_1_1media_1_1H264VideoSliceHeaderParser.html @@ -152,7 +152,7 @@ int64_t  diff --git a/docs/da/df4/aes__decryptor_8cc_source.html b/docs/da/df4/aes__decryptor_8cc_source.html index 44acdfb940..454f619082 100644 --- a/docs/da/df4/aes__decryptor_8cc_source.html +++ b/docs/da/df4/aes__decryptor_8cc_source.html @@ -258,7 +258,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/df5/structshaka_1_1media_1_1mp4_1_1SampleDescription.html b/docs/da/df5/structshaka_1_1media_1_1mp4_1_1SampleDescription.html index bff3c23732..b5141ef71b 100644 --- a/docs/da/df5/structshaka_1_1media_1_1mp4_1_1SampleDescription.html +++ b/docs/da/df5/structshaka_1_1media_1_1mp4_1_1SampleDescription.html @@ -191,7 +191,7 @@ Additional Inherited Members diff --git a/docs/da/df9/classshaka_1_1media_1_1AesPatternCryptor-members.html b/docs/da/df9/classshaka_1_1media_1_1AesPatternCryptor-members.html index e3046d4c7e..a0fb2fb0df 100644 --- a/docs/da/df9/classshaka_1_1media_1_1AesPatternCryptor-members.html +++ b/docs/da/df9/classshaka_1_1media_1_1AesPatternCryptor-members.html @@ -118,7 +118,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d05/structshaka_1_1media_1_1H265SliceHeader.html b/docs/db/d05/structshaka_1_1media_1_1H265SliceHeader.html index 19e3284e8a..ee68d24582 100644 --- a/docs/db/d05/structshaka_1_1media_1_1H265SliceHeader.html +++ b/docs/db/d05/structshaka_1_1media_1_1H265SliceHeader.html @@ -236,7 +236,7 @@ std::vector< int > e diff --git a/docs/db/d11/structshaka_1_1media_1_1mp4_1_1CodecConfiguration.html b/docs/db/d11/structshaka_1_1media_1_1mp4_1_1CodecConfiguration.html index fc363a9cd8..74a4f1c1b4 100644 --- a/docs/db/d11/structshaka_1_1media_1_1mp4_1_1CodecConfiguration.html +++ b/docs/db/d11/structshaka_1_1media_1_1mp4_1_1CodecConfiguration.html @@ -176,7 +176,7 @@ Additional Inherited Members diff --git a/docs/db/d14/classshaka_1_1media_1_1H265Parser-members.html b/docs/db/d14/classshaka_1_1media_1_1H265Parser-members.html index c813534cf9..e69c3f47b7 100644 --- a/docs/db/d14/classshaka_1_1media_1_1H265Parser-members.html +++ b/docs/db/d14/classshaka_1_1media_1_1H265Parser-members.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d14/structshaka_1_1media_1_1H264WeightingFactors-members.html b/docs/db/d14/structshaka_1_1media_1_1H264WeightingFactors-members.html index bb49f7b26d..44b78a3e21 100644 --- a/docs/db/d14/structshaka_1_1media_1_1H264WeightingFactors-members.html +++ b/docs/db/d14/structshaka_1_1media_1_1H264WeightingFactors-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d21/structshaka_1_1media_1_1mp4_1_1SubtitleMediaHeader.html b/docs/db/d21/structshaka_1_1media_1_1mp4_1_1SubtitleMediaHeader.html index fbf1bf6927..9ae6c5b4e5 100644 --- a/docs/db/d21/structshaka_1_1media_1_1mp4_1_1SubtitleMediaHeader.html +++ b/docs/db/d21/structshaka_1_1media_1_1mp4_1_1SubtitleMediaHeader.html @@ -175,7 +175,7 @@ uint32_t flags diff --git a/docs/db/d30/classshaka_1_1media_1_1mp4_1_1MP4Muxer.html b/docs/db/d30/classshaka_1_1media_1_1mp4_1_1MP4Muxer.html index ec4d1d4fc3..74acf99aa8 100644 --- a/docs/db/d30/classshaka_1_1media_1_1mp4_1_1MP4Muxer.html +++ b/docs/db/d30/classshaka_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, FourCC protection_scheme) -  +void SetKeySource (KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme) +  void AddStream (MediaStream *stream)  Add video/audio stream.
    @@ -149,6 +149,12 @@ const uint32_t max_sd_pixels () const   + +uint32_t max_hd_pixels () const +  + +uint32_t max_uhd1_pixels () const +  double clear_lead_in_seconds () const   @@ -179,7 +185,7 @@ FourCC protection_scheme diff --git a/docs/db/d31/h26x__byte__to__unit__stream__converter_8h_source.html b/docs/db/d31/h26x__byte__to__unit__stream__converter_8h_source.html index fdf39f1da5..252ea0a354 100644 --- a/docs/db/d31/h26x__byte__to__unit__stream__converter_8h_source.html +++ b/docs/db/d31/h26x__byte__to__unit__stream__converter_8h_source.html @@ -143,7 +143,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d31/track__run__iterator_8cc_source.html b/docs/db/d31/track__run__iterator_8cc_source.html index 8fb933736c..0e99baa5a6 100644 --- a/docs/db/d31/track__run__iterator_8cc_source.html +++ b/docs/db/d31/track__run__iterator_8cc_source.html @@ -774,7 +774,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d38/classshaka_1_1media_1_1mp2t_1_1PesPacketGenerator-members.html b/docs/db/d38/classshaka_1_1media_1_1mp2t_1_1PesPacketGenerator-members.html index d105f936e1..d984e7ea5b 100644 --- a/docs/db/d38/classshaka_1_1media_1_1mp2t_1_1PesPacketGenerator-members.html +++ b/docs/db/d38/classshaka_1_1media_1_1mp2t_1_1PesPacketGenerator-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d3b/classshaka_1_1media_1_1VideoSliceHeaderParser-members.html b/docs/db/d3b/classshaka_1_1media_1_1VideoSliceHeaderParser-members.html index 8960306960..b19bc69228 100644 --- a/docs/db/d3b/classshaka_1_1media_1_1VideoSliceHeaderParser-members.html +++ b/docs/db/d3b/classshaka_1_1media_1_1VideoSliceHeaderParser-members.html @@ -100,7 +100,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 75fd044778..42f5b75121 100644 --- a/docs/db/d45/mpd__notify__muxer__listener_8h_source.html +++ b/docs/db/d45/mpd__notify__muxer__listener_8h_source.html @@ -189,7 +189,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d4b/classshaka_1_1MockAdaptationSet.html b/docs/db/d4b/classshaka_1_1MockAdaptationSet.html index e434cbf011..c217fbced8 100644 --- a/docs/db/d4b/classshaka_1_1MockAdaptationSet.html +++ b/docs/db/d4b/classshaka_1_1MockAdaptationSet.html @@ -183,7 +183,7 @@ Additional Inherited Members diff --git a/docs/db/d4e/classshaka_1_1media_1_1mp4_1_1CompositionOffsetIterator.html b/docs/db/d4e/classshaka_1_1media_1_1mp4_1_1CompositionOffsetIterator.html index 7ea1386937..df94ce93fd 100644 --- a/docs/db/d4e/classshaka_1_1media_1_1mp4_1_1CompositionOffsetIterator.html +++ b/docs/db/d4e/classshaka_1_1media_1_1mp4_1_1CompositionOffsetIterator.html @@ -225,7 +225,7 @@ Public Member Functions diff --git a/docs/db/d51/mp2t__media__parser_8h_source.html b/docs/db/d51/mp2t__media__parser_8h_source.html index 9341fa73a6..2082358c78 100644 --- a/docs/db/d51/mp2t__media__parser_8h_source.html +++ b/docs/db/d51/mp2t__media__parser_8h_source.html @@ -192,7 +192,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 8e5420ad40..47b03a1a79 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 @@ -144,7 +144,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d5a/classshaka_1_1media_1_1VP9Parser.html b/docs/db/d5a/classshaka_1_1media_1_1VP9Parser.html index 9abf6eadb8..d3dc069c6e 100644 --- a/docs/db/d5a/classshaka_1_1media_1_1VP9Parser.html +++ b/docs/db/d5a/classshaka_1_1media_1_1VP9Parser.html @@ -238,7 +238,7 @@ Additional Inherited Members diff --git a/docs/db/d60/mpd__options_8h_source.html b/docs/db/d60/mpd__options_8h_source.html index 73a5675d12..dec4fa2faf 100644 --- a/docs/db/d60/mpd__options_8h_source.html +++ b/docs/db/d60/mpd__options_8h_source.html @@ -127,7 +127,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 2b10ad8cd4..76f03c5a33 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/d66/structshaka_1_1media_1_1mp4_1_1SegmentType-members.html b/docs/db/d66/structshaka_1_1media_1_1mp4_1_1SegmentType-members.html index d6e6844436..956c08a7d5 100644 --- a/docs/db/d66/structshaka_1_1media_1_1mp4_1_1SegmentType-members.html +++ b/docs/db/d66/structshaka_1_1media_1_1mp4_1_1SegmentType-members.html @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d71/http__key__fetcher_8h_source.html b/docs/db/d71/http__key__fetcher_8h_source.html index 367fadf60a..7bfaa94392 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/d74/classshaka_1_1media_1_1HEVCDecoderConfigurationRecord-members.html b/docs/db/d74/classshaka_1_1media_1_1HEVCDecoderConfigurationRecord-members.html index 486c6dbf19..af983a6edf 100644 --- a/docs/db/d74/classshaka_1_1media_1_1HEVCDecoderConfigurationRecord-members.html +++ b/docs/db/d74/classshaka_1_1media_1_1HEVCDecoderConfigurationRecord-members.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d75/classshaka_1_1media_1_1webm_1_1TwoPassSingleSegmentSegmenter-members.html b/docs/db/d75/classshaka_1_1media_1_1webm_1_1TwoPassSingleSegmentSegmenter-members.html index 286101a206..7777a72330 100644 --- a/docs/db/d75/classshaka_1_1media_1_1webm_1_1TwoPassSingleSegmentSegmenter-members.html +++ b/docs/db/d75/classshaka_1_1media_1_1webm_1_1TwoPassSingleSegmentSegmenter-members.html @@ -107,7 +107,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); GetInitRangeStartAndEnd(uint64_t *start, uint64_t *end) overrideshaka::media::webm::SingleSegmentSegmentervirtual info() (defined in shaka::media::webm::Segmenter)shaka::media::webm::Segmenterinlineprotected init_end() (defined in shaka::media::webm::SingleSegmentSegmenter)shaka::media::webm::SingleSegmentSegmenterinlineprotected - Initialize(std::unique_ptr< MkvWriter > writer, StreamInfo *info, ProgressListener *progress_listener, MuxerListener *muxer_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds)shaka::media::webm::Segmenter + Initialize(std::unique_ptr< MkvWriter > writer, StreamInfo *info, ProgressListener *progress_listener, MuxerListener *muxer_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds)shaka::media::webm::Segmenter muxer_listener() (defined in shaka::media::webm::Segmenter)shaka::media::webm::Segmenterinlineprotected options() const (defined in shaka::media::webm::Segmenter)shaka::media::webm::Segmenterinlineprotected seek_head() (defined in shaka::media::webm::Segmenter)shaka::media::webm::Segmenterinlineprotected @@ -131,7 +131,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d78/classshaka_1_1media_1_1mp2t_1_1ContinuityCounter-members.html b/docs/db/d78/classshaka_1_1media_1_1mp2t_1_1ContinuityCounter-members.html index 54736ad85c..922ba41f95 100644 --- a/docs/db/d78/classshaka_1_1media_1_1mp2t_1_1ContinuityCounter-members.html +++ b/docs/db/d78/classshaka_1_1media_1_1mp2t_1_1ContinuityCounter-members.html @@ -99,7 +99,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d7e/muxer__options_8cc_source.html b/docs/db/d7e/muxer__options_8cc_source.html index a96642e5d6..d5e38652ca 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/d84/classshaka_1_1media_1_1AACAudioSpecificConfig-members.html b/docs/db/d84/classshaka_1_1media_1_1AACAudioSpecificConfig-members.html index 32c72e6b55..3b5a30d884 100644 --- a/docs/db/d84/classshaka_1_1media_1_1AACAudioSpecificConfig-members.html +++ b/docs/db/d84/classshaka_1_1media_1_1AACAudioSpecificConfig-members.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d86/classshaka_1_1media_1_1NaluReader.html b/docs/db/d86/classshaka_1_1media_1_1NaluReader.html index be8e10665f..8d0573a0c5 100644 --- a/docs/db/d86/classshaka_1_1media_1_1NaluReader.html +++ b/docs/db/d86/classshaka_1_1media_1_1NaluReader.html @@ -228,7 +228,7 @@ static bool FindStartCode< diff --git a/docs/db/d8f/mp4__muxer_8h_source.html b/docs/db/d8f/mp4__muxer_8h_source.html index 2493f02391..c8b2344585 100644 --- a/docs/db/d8f/mp4__muxer_8h_source.html +++ b/docs/db/d8f/mp4__muxer_8h_source.html @@ -173,7 +173,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d94/classshaka_1_1media_1_1ClusterBuilder.html b/docs/db/d94/classshaka_1_1media_1_1ClusterBuilder.html index ead16d57b4..9f7ef01c94 100644 --- a/docs/db/d94/classshaka_1_1media_1_1ClusterBuilder.html +++ b/docs/db/d94/classshaka_1_1media_1_1ClusterBuilder.html @@ -125,7 +125,7 @@ std::unique_ptr< diff --git a/docs/db/d95/classshaka_1_1media_1_1mp4_1_1Fragmenter.html b/docs/db/d95/classshaka_1_1media_1_1mp4_1_1Fragmenter.html index b5de49775e..cb1d502364 100644 --- a/docs/db/d95/classshaka_1_1media_1_1mp4_1_1Fragmenter.html +++ b/docs/db/d95/classshaka_1_1media_1_1mp4_1_1Fragmenter.html @@ -339,7 +339,7 @@ template<typename T > diff --git a/docs/db/d95/structshaka_1_1media_1_1mp4_1_1ChunkLargeOffset.html b/docs/db/d95/structshaka_1_1media_1_1mp4_1_1ChunkLargeOffset.html index e53fbf42a4..50438e739f 100644 --- a/docs/db/d95/structshaka_1_1media_1_1mp4_1_1ChunkLargeOffset.html +++ b/docs/db/d95/structshaka_1_1media_1_1mp4_1_1ChunkLargeOffset.html @@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/db/d96/wvm__media__parser_8h_source.html b/docs/db/d96/wvm__media__parser_8h_source.html index 623e67ea8e..7a194db826 100644 --- a/docs/db/d96/wvm__media__parser_8h_source.html +++ b/docs/db/d96/wvm__media__parser_8h_source.html @@ -362,7 +362,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/da4/classBandwidthEstimator-members.html b/docs/db/da4/classBandwidthEstimator-members.html index 58b5f66a5b..3081e664d7 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/da6/memory__file_8h_source.html b/docs/db/da6/memory__file_8h_source.html index 674fe0fc21..e4e472c6bd 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/dab/classshaka_1_1media_1_1TextStreamInfo.html b/docs/db/dab/classshaka_1_1media_1_1TextStreamInfo.html index 53393c63a4..afd8631ed5 100644 --- a/docs/db/dab/classshaka_1_1media_1_1TextStreamInfo.html +++ b/docs/db/dab/classshaka_1_1media_1_1TextStreamInfo.html @@ -282,7 +282,7 @@ void set_language (con diff --git a/docs/db/dae/classshaka_1_1media_1_1WebMInfoParser.html b/docs/db/dae/classshaka_1_1media_1_1WebMInfoParser.html index 7d2ae0a0a6..b6fc061451 100644 --- a/docs/db/dae/classshaka_1_1media_1_1WebMInfoParser.html +++ b/docs/db/dae/classshaka_1_1media_1_1WebMInfoParser.html @@ -175,7 +175,7 @@ The number of bytes parsed on success. diff --git a/docs/db/dae/structshaka_1_1media_1_1mp4_1_1SoundMediaHeader-members.html b/docs/db/dae/structshaka_1_1media_1_1mp4_1_1SoundMediaHeader-members.html index 7ce7d21cab..837b8d7637 100644 --- a/docs/db/dae/structshaka_1_1media_1_1mp4_1_1SoundMediaHeader-members.html +++ b/docs/db/dae/structshaka_1_1media_1_1mp4_1_1SoundMediaHeader-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/db1/structshaka_1_1media_1_1mp4_1_1CencSampleEncryptionInfoEntry-members.html b/docs/db/db1/structshaka_1_1media_1_1mp4_1_1CencSampleEncryptionInfoEntry-members.html index a8b696c31f..01fc16006f 100644 --- a/docs/db/db1/structshaka_1_1media_1_1mp4_1_1CencSampleEncryptionInfoEntry-members.html +++ b/docs/db/db1/structshaka_1_1media_1_1mp4_1_1CencSampleEncryptionInfoEntry-members.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/db8/structshaka_1_1media_1_1OnMediaEndParameters.html b/docs/db/db8/structshaka_1_1media_1_1OnMediaEndParameters.html index 5d0c58836d..99aef267dd 100644 --- a/docs/db/db8/structshaka_1_1media_1_1OnMediaEndParameters.html +++ b/docs/db/db8/structshaka_1_1media_1_1OnMediaEndParameters.html @@ -130,7 +130,7 @@ uint64_t file_size diff --git a/docs/db/db8/structshaka_1_1media_1_1mp4_1_1TrackEncryption.html b/docs/db/db8/structshaka_1_1media_1_1mp4_1_1TrackEncryption.html index 9434c85c5c..fa8ed0753f 100644 --- a/docs/db/db8/structshaka_1_1media_1_1mp4_1_1TrackEncryption.html +++ b/docs/db/db8/structshaka_1_1media_1_1mp4_1_1TrackEncryption.html @@ -197,7 +197,7 @@ Additional Inherited Members diff --git a/docs/db/dcb/classshaka_1_1media_1_1VPxParser.html b/docs/db/dcb/classshaka_1_1media_1_1VPxParser.html index e3985ae853..d605957133 100644 --- a/docs/db/dcb/classshaka_1_1media_1_1VPxParser.html +++ b/docs/db/dcb/classshaka_1_1media_1_1VPxParser.html @@ -205,7 +205,7 @@ Protected Member Functions diff --git a/docs/db/dcc/classshaka_1_1media_1_1webm_1_1Encryptor-members.html b/docs/db/dcc/classshaka_1_1media_1_1webm_1_1Encryptor-members.html index 951996e12b..315f242d5b 100644 --- a/docs/db/dcc/classshaka_1_1media_1_1webm_1_1Encryptor-members.html +++ b/docs/db/dcc/classshaka_1_1media_1_1webm_1_1Encryptor-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/dcd/classshaka_1_1MpdWriter.html b/docs/db/dcd/classshaka_1_1MpdWriter.html index 7ff771992c..1fbf3ae51d 100644 --- a/docs/db/dcd/classshaka_1_1MpdWriter.html +++ b/docs/db/dcd/classshaka_1_1MpdWriter.html @@ -123,7 +123,7 @@ class MpdWriterTest diff --git a/docs/db/dcd/structshaka_1_1media_1_1mp4_1_1DTSSpecific-members.html b/docs/db/dcd/structshaka_1_1media_1_1mp4_1_1DTSSpecific-members.html index f5eb37bc3e..3d7400a648 100644 --- a/docs/db/dcd/structshaka_1_1media_1_1mp4_1_1DTSSpecific-members.html +++ b/docs/db/dcd/structshaka_1_1media_1_1mp4_1_1DTSSpecific-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/dd0/classshaka_1_1media_1_1VodMediaInfoDumpMuxerListener.html b/docs/db/dd0/classshaka_1_1media_1_1VodMediaInfoDumpMuxerListener.html index 4265e6899f..f8717b51a3 100644 --- a/docs/db/dd0/classshaka_1_1media_1_1VodMediaInfoDumpMuxerListener.html +++ b/docs/db/dd0/classshaka_1_1media_1_1VodMediaInfoDumpMuxerListener.html @@ -531,7 +531,7 @@ Additional Inherited Members diff --git a/docs/db/dd2/chunk__info__iterator_8h_source.html b/docs/db/dd2/chunk__info__iterator_8h_source.html index d37559872b..400d6fb7c3 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 b9d1e52e59..61cc32b392 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/dde/h265__parser_8cc_source.html b/docs/db/dde/h265__parser_8cc_source.html index 6ac016e9df..b02cd3d381 100644 --- a/docs/db/dde/h265__parser_8cc_source.html +++ b/docs/db/dde/h265__parser_8cc_source.html @@ -1215,7 +1215,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 63d4735a90..b3a04274db 100644 --- a/docs/db/dec/audio__timestamp__helper_8cc_source.html +++ b/docs/db/dec/audio__timestamp__helper_8cc_source.html @@ -165,7 +165,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/dee/pes__packet_8cc_source.html b/docs/db/dee/pes__packet_8cc_source.html index 1dbd17af54..065287bffe 100644 --- a/docs/db/dee/pes__packet_8cc_source.html +++ b/docs/db/dee/pes__packet_8cc_source.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/df2/structshaka_1_1media_1_1H265SliceHeader-members.html b/docs/db/df2/structshaka_1_1media_1_1H265SliceHeader-members.html index 700592cfe8..a7a924e4e0 100644 --- a/docs/db/df2/structshaka_1_1media_1_1H265SliceHeader-members.html +++ b/docs/db/df2/structshaka_1_1media_1_1H265SliceHeader-members.html @@ -139,7 +139,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/df6/classshaka_1_1media_1_1Cluster-members.html b/docs/db/df6/classshaka_1_1media_1_1Cluster-members.html index d2e057a82c..d522397720 100644 --- a/docs/db/df6/classshaka_1_1media_1_1Cluster-members.html +++ b/docs/db/df6/classshaka_1_1media_1_1Cluster-members.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/df6/muxer_8h_source.html b/docs/db/df6/muxer_8h_source.html index ab11147069..3f932d1a57 100644 --- a/docs/db/df6/muxer_8h_source.html +++ b/docs/db/df6/muxer_8h_source.html @@ -121,98 +121,107 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
    35  explicit Muxer(const MuxerOptions& options);
    36  virtual ~Muxer();
    37 
    -
    50  void SetKeySource(KeySource* encryption_key_source,
    -
    51  uint32_t max_sd_pixels,
    -
    52  double clear_lead_in_seconds,
    -
    53  double crypto_period_duration_in_seconds,
    -
    54  FourCC protection_scheme);
    -
    55 
    -
    57  void AddStream(MediaStream* stream);
    -
    58 
    -
    60  Status Run();
    -
    61 
    -
    64  void Cancel();
    -
    65 
    -
    68  void SetMuxerListener(std::unique_ptr<MuxerListener> muxer_listener);
    -
    69 
    -
    72  void SetProgressListener(std::unique_ptr<ProgressListener> progress_listener);
    -
    73 
    -
    74  const std::vector<MediaStream*>& streams() const { return streams_; }
    -
    75 
    -
    82  void set_clock(base::Clock* clock) {
    -
    83  clock_ = clock;
    -
    84  }
    -
    85 
    -
    86  protected:
    -
    87  const MuxerOptions& options() const { return options_; }
    -
    88  KeySource* encryption_key_source() {
    -
    89  return encryption_key_source_;
    -
    90  }
    -
    91  uint32_t max_sd_pixels() const { return max_sd_pixels_; }
    -
    92  double clear_lead_in_seconds() const { return clear_lead_in_seconds_; }
    -
    93  double crypto_period_duration_in_seconds() const {
    -
    94  return crypto_period_duration_in_seconds_;
    -
    95  }
    -
    96  MuxerListener* muxer_listener() { return muxer_listener_.get(); }
    -
    97  ProgressListener* progress_listener() { return progress_listener_.get(); }
    -
    98  base::Clock* clock() { return clock_; }
    -
    99  FourCC protection_scheme() const { return protection_scheme_; }
    -
    100 
    -
    101  private:
    -
    102  friend class MediaStream; // Needed to access AddSample.
    -
    103 
    -
    104  // Add new media sample.
    -
    105  Status AddSample(const MediaStream* stream,
    -
    106  scoped_refptr<MediaSample> sample);
    -
    107 
    -
    108  // Initialize the muxer.
    -
    109  virtual Status Initialize() = 0;
    -
    110 
    -
    111  // Final clean up.
    -
    112  virtual Status Finalize() = 0;
    -
    113 
    -
    114  // AddSample implementation.
    -
    115  virtual Status DoAddSample(const MediaStream* stream,
    -
    116  scoped_refptr<MediaSample> sample) = 0;
    -
    117 
    -
    118  MuxerOptions options_;
    -
    119  bool initialized_;
    -
    120  std::vector<MediaStream*> streams_;
    -
    121  KeySource* encryption_key_source_;
    -
    122  uint32_t max_sd_pixels_;
    -
    123  double clear_lead_in_seconds_;
    -
    124  double crypto_period_duration_in_seconds_;
    -
    125  FourCC protection_scheme_;
    -
    126  bool cancelled_;
    -
    127 
    -
    128  std::unique_ptr<MuxerListener> muxer_listener_;
    -
    129  std::unique_ptr<ProgressListener> progress_listener_;
    -
    130  // An external injected clock, can be NULL.
    -
    131  base::Clock* clock_;
    +
    38  // TODO(kqyang): refactor max_sd_pixels through crypto_period_duration into
    +
    39  // an encapsulated EncryptionParams structure.
    +
    40 
    +
    61  void SetKeySource(KeySource* encryption_key_source,
    +
    62  uint32_t max_sd_pixels,
    +
    63  uint32_t max_hd_pixels,
    +
    64  uint32_t max_uhd1_pixels,
    +
    65  double clear_lead_in_seconds,
    +
    66  double crypto_period_duration_in_seconds,
    +
    67  FourCC protection_scheme);
    +
    68 
    +
    70  void AddStream(MediaStream* stream);
    +
    71 
    +
    73  Status Run();
    +
    74 
    +
    77  void Cancel();
    +
    78 
    +
    81  void SetMuxerListener(std::unique_ptr<MuxerListener> muxer_listener);
    +
    82 
    +
    85  void SetProgressListener(std::unique_ptr<ProgressListener> progress_listener);
    +
    86 
    +
    87  const std::vector<MediaStream*>& streams() const { return streams_; }
    +
    88 
    +
    95  void set_clock(base::Clock* clock) {
    +
    96  clock_ = clock;
    +
    97  }
    +
    98 
    +
    99  protected:
    +
    100  const MuxerOptions& options() const { return options_; }
    +
    101  KeySource* encryption_key_source() {
    +
    102  return encryption_key_source_;
    +
    103  }
    +
    104  uint32_t max_sd_pixels() const { return max_sd_pixels_; }
    +
    105  uint32_t max_hd_pixels() const { return max_hd_pixels_; }
    +
    106  uint32_t max_uhd1_pixels() const { return max_uhd1_pixels_; }
    +
    107  double clear_lead_in_seconds() const { return clear_lead_in_seconds_; }
    +
    108  double crypto_period_duration_in_seconds() const {
    +
    109  return crypto_period_duration_in_seconds_;
    +
    110  }
    +
    111  MuxerListener* muxer_listener() { return muxer_listener_.get(); }
    +
    112  ProgressListener* progress_listener() { return progress_listener_.get(); }
    +
    113  base::Clock* clock() { return clock_; }
    +
    114  FourCC protection_scheme() const { return protection_scheme_; }
    +
    115 
    +
    116  private:
    +
    117  friend class MediaStream; // Needed to access AddSample.
    +
    118 
    +
    119  // Add new media sample.
    +
    120  Status AddSample(const MediaStream* stream,
    +
    121  scoped_refptr<MediaSample> sample);
    +
    122 
    +
    123  // Initialize the muxer.
    +
    124  virtual Status Initialize() = 0;
    +
    125 
    +
    126  // Final clean up.
    +
    127  virtual Status Finalize() = 0;
    +
    128 
    +
    129  // AddSample implementation.
    +
    130  virtual Status DoAddSample(const MediaStream* stream,
    +
    131  scoped_refptr<MediaSample> sample) = 0;
    132 
    -
    133  DISALLOW_COPY_AND_ASSIGN(Muxer);
    -
    134 };
    -
    135 
    -
    136 } // namespace media
    -
    137 } // namespace shaka
    -
    138 
    -
    139 #endif // MEDIA_BASE_MUXER_H_
    - +
    133  MuxerOptions options_;
    +
    134  bool initialized_;
    +
    135  std::vector<MediaStream*> streams_;
    +
    136  KeySource* encryption_key_source_;
    +
    137  uint32_t max_sd_pixels_;
    +
    138  uint32_t max_hd_pixels_;
    +
    139  uint32_t max_uhd1_pixels_;
    +
    140  double clear_lead_in_seconds_;
    +
    141  double crypto_period_duration_in_seconds_;
    +
    142  FourCC protection_scheme_;
    +
    143  bool cancelled_;
    +
    144 
    +
    145  std::unique_ptr<MuxerListener> muxer_listener_;
    +
    146  std::unique_ptr<ProgressListener> progress_listener_;
    +
    147  // An external injected clock, can be NULL.
    +
    148  base::Clock* clock_;
    +
    149 
    +
    150  DISALLOW_COPY_AND_ASSIGN(Muxer);
    +
    151 };
    +
    152 
    +
    153 } // namespace media
    +
    154 } // namespace shaka
    +
    155 
    +
    156 #endif // MEDIA_BASE_MUXER_H_
    +
    This structure contains the list of configuration options for Muxer.
    Definition: muxer_options.h:18
    -
    void AddStream(MediaStream *stream)
    Add video/audio stream.
    Definition: muxer.cc:44
    -
    void SetKeySource(KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)
    Definition: muxer.cc:31
    -
    Status Run()
    Drive the remuxing from muxer side (pull).
    Definition: muxer.cc:50
    -
    void SetProgressListener(std::unique_ptr< ProgressListener > progress_listener)
    Definition: muxer.cc:92
    +
    void AddStream(MediaStream *stream)
    Add video/audio stream.
    Definition: muxer.cc:50
    +
    Status Run()
    Drive the remuxing from muxer side (pull).
    Definition: muxer.cc:56
    +
    void SetProgressListener(std::unique_ptr< ProgressListener > progress_listener)
    Definition: muxer.cc:98
    KeySource is responsible for encryption key acquisition.
    Definition: key_source.h:30
    -
    void set_clock(base::Clock *clock)
    Definition: muxer.h:82
    +
    void SetKeySource(KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)
    Definition: muxer.cc:33
    +
    void set_clock(base::Clock *clock)
    Definition: muxer.h:95
    -
    void SetMuxerListener(std::unique_ptr< MuxerListener > muxer_listener)
    Definition: muxer.cc:88
    +
    void SetMuxerListener(std::unique_ptr< MuxerListener > muxer_listener)
    Definition: muxer.cc:94
    diff --git a/docs/db/df8/classshaka_1_1media_1_1H265ByteToUnitStreamConverter.html b/docs/db/df8/classshaka_1_1media_1_1H265ByteToUnitStreamConverter.html index 9147c96475..4408a452e8 100644 --- a/docs/db/df8/classshaka_1_1media_1_1H265ByteToUnitStreamConverter.html +++ b/docs/db/df8/classshaka_1_1media_1_1H265ByteToUnitStreamConverter.html @@ -171,7 +171,7 @@ static const size_t kUnitS diff --git a/docs/db/dfb/mpd__utils_8cc_source.html b/docs/db/dfb/mpd__utils_8cc_source.html index 2148e91229..a2e743338e 100644 --- a/docs/db/dfb/mpd__utils_8cc_source.html +++ b/docs/db/dfb/mpd__utils_8cc_source.html @@ -453,7 +453,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 33c31481d6..2d43c55a51 100644 --- a/docs/db/dfc/mpd__notify__muxer__listener_8cc_source.html +++ b/docs/db/dfc/mpd__notify__muxer__listener_8cc_source.html @@ -274,7 +274,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/dff/structshaka_1_1media_1_1mp4_1_1ChunkInfo-members.html b/docs/db/dff/structshaka_1_1media_1_1mp4_1_1ChunkInfo-members.html index c6a4be9087..0560cd0c3c 100644 --- a/docs/db/dff/structshaka_1_1media_1_1mp4_1_1ChunkInfo-members.html +++ b/docs/db/dff/structshaka_1_1media_1_1mp4_1_1ChunkInfo-members.html @@ -99,7 +99,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d02/classshaka_1_1media_1_1IoCache-members.html b/docs/dc/d02/classshaka_1_1media_1_1IoCache-members.html index 0cfc892a5a..f975cf8780 100644 --- a/docs/dc/d02/classshaka_1_1media_1_1IoCache-members.html +++ b/docs/dc/d02/classshaka_1_1media_1_1IoCache-members.html @@ -107,7 +107,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d03/classshaka_1_1media_1_1mp2t_1_1ProgramMapTableWriter.html b/docs/dc/d03/classshaka_1_1media_1_1mp2t_1_1ProgramMapTableWriter.html index b50f0b52e9..a0a0854816 100644 --- a/docs/dc/d03/classshaka_1_1media_1_1mp2t_1_1ProgramMapTableWriter.html +++ b/docs/dc/d03/classshaka_1_1media_1_1mp2t_1_1ProgramMapTableWriter.html @@ -138,7 +138,7 @@ static const uint8_t kElem diff --git a/docs/dc/d06/classshaka_1_1media_1_1StreamInfo-members.html b/docs/dc/d06/classshaka_1_1media_1_1StreamInfo-members.html index df44b0dcde..77598636ef 100644 --- a/docs/dc/d06/classshaka_1_1media_1_1StreamInfo-members.html +++ b/docs/dc/d06/classshaka_1_1media_1_1StreamInfo-members.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d0b/classshaka_1_1media_1_1ESDescriptor-members.html b/docs/dc/d0b/classshaka_1_1media_1_1ESDescriptor-members.html index 5a99da978a..999d447b19 100644 --- a/docs/dc/d0b/classshaka_1_1media_1_1ESDescriptor-members.html +++ b/docs/dc/d0b/classshaka_1_1media_1_1ESDescriptor-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d16/classshaka_1_1media_1_1SeekHead.html b/docs/dc/d16/classshaka_1_1media_1_1SeekHead.html index a6ccca7160..2b1990f7b9 100644 --- a/docs/dc/d16/classshaka_1_1media_1_1SeekHead.html +++ b/docs/dc/d16/classshaka_1_1media_1_1SeekHead.html @@ -149,7 +149,7 @@ void set_tracks_pos (u diff --git a/docs/dc/d18/classshaka_1_1media_1_1wvm_1_1WvmMediaParser.html b/docs/dc/d18/classshaka_1_1media_1_1wvm_1_1WvmMediaParser.html index 5428aef957..4ca7817a64 100644 --- a/docs/dc/d18/classshaka_1_1media_1_1wvm_1_1WvmMediaParser.html +++ b/docs/dc/d18/classshaka_1_1media_1_1wvm_1_1WvmMediaParser.html @@ -256,7 +256,7 @@ track_id, const scoped_refptr
    diff --git a/docs/dc/d18/structshaka_1_1media_1_1mp4_1_1ProtectionSchemeInfo-members.html b/docs/dc/d18/structshaka_1_1media_1_1mp4_1_1ProtectionSchemeInfo-members.html index d80aae3273..f5054359d9 100644 --- a/docs/dc/d18/structshaka_1_1media_1_1mp4_1_1ProtectionSchemeInfo-members.html +++ b/docs/dc/d18/structshaka_1_1media_1_1mp4_1_1ProtectionSchemeInfo-members.html @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d19/box_8h_source.html b/docs/dc/d19/box_8h_source.html index 05ab553327..2482660110 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 fd2426b178..1fa2abeacb 100644 --- a/docs/dc/d22/dash__iop__mpd__notifier_8cc_source.html +++ b/docs/dc/d22/dash__iop__mpd__notifier_8cc_source.html @@ -395,7 +395,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 acc002b33c..5c915a1c26 100644 --- a/docs/dc/d3b/fixed__key__encryption__flags_8cc_source.html +++ b/docs/dc/d3b/fixed__key__encryption__flags_8cc_source.html @@ -166,7 +166,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d3c/webm__cluster__parser_8h_source.html b/docs/dc/d3c/webm__cluster__parser_8h_source.html index 31ea4e64b6..d348b812b9 100644 --- a/docs/dc/d3c/webm__cluster__parser_8h_source.html +++ b/docs/dc/d3c/webm__cluster__parser_8h_source.html @@ -301,7 +301,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 fbaef692db..336445f8ef 100644 --- a/docs/dc/d3f/key__source_8h_source.html +++ b/docs/dc/d3f/key__source_8h_source.html @@ -121,45 +121,47 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
    33  TRACK_TYPE_UNKNOWN = 0,
    34  TRACK_TYPE_SD = 1,
    35  TRACK_TYPE_HD = 2,
    -
    36  TRACK_TYPE_AUDIO = 3,
    -
    37  TRACK_TYPE_UNSPECIFIED = 4,
    -
    38  NUM_VALID_TRACK_TYPES = 4
    -
    39  };
    -
    40 
    -
    41  KeySource();
    -
    42  virtual ~KeySource();
    -
    43 
    -
    47  virtual Status FetchKeys(const std::vector<uint8_t>& pssh_box) = 0;
    -
    48 
    -
    52  virtual Status FetchKeys(
    -
    53  const std::vector<std::vector<uint8_t>>& key_ids) = 0;
    -
    54 
    -
    59  virtual Status FetchKeys(uint32_t asset_id) = 0;
    -
    60 
    -
    66  virtual Status GetKey(TrackType track_type, EncryptionKey* key) = 0;
    -
    67 
    -
    73  virtual Status GetKey(const std::vector<uint8_t>& key_id,
    -
    74  EncryptionKey* key) = 0;
    -
    75 
    -
    83  virtual Status GetCryptoPeriodKey(uint32_t crypto_period_index,
    -
    84  TrackType track_type,
    -
    85  EncryptionKey* key) = 0;
    -
    86 
    -
    88  static TrackType GetTrackTypeFromString(const std::string& track_type_string);
    -
    89 
    -
    91  static std::string TrackTypeToString(TrackType track_type);
    -
    92 
    -
    93  private:
    -
    94  DISALLOW_COPY_AND_ASSIGN(KeySource);
    -
    95 };
    -
    96 
    -
    97 } // namespace media
    -
    98 } // namespace shaka
    -
    99 
    -
    100 #endif // MEDIA_BASE_KEY_SOURCE_H_
    +
    36  TRACK_TYPE_UHD1 = 3,
    +
    37  TRACK_TYPE_UHD2 = 4,
    +
    38  TRACK_TYPE_AUDIO = 5,
    +
    39  TRACK_TYPE_UNSPECIFIED = 6,
    +
    40  NUM_VALID_TRACK_TYPES = 6
    +
    41  };
    +
    42 
    +
    43  KeySource();
    +
    44  virtual ~KeySource();
    +
    45 
    +
    49  virtual Status FetchKeys(const std::vector<uint8_t>& pssh_box) = 0;
    +
    50 
    +
    54  virtual Status FetchKeys(
    +
    55  const std::vector<std::vector<uint8_t>>& key_ids) = 0;
    +
    56 
    +
    61  virtual Status FetchKeys(uint32_t asset_id) = 0;
    +
    62 
    +
    68  virtual Status GetKey(TrackType track_type, EncryptionKey* key) = 0;
    +
    69 
    +
    75  virtual Status GetKey(const std::vector<uint8_t>& key_id,
    +
    76  EncryptionKey* key) = 0;
    +
    77 
    +
    85  virtual Status GetCryptoPeriodKey(uint32_t crypto_period_index,
    +
    86  TrackType track_type,
    +
    87  EncryptionKey* key) = 0;
    +
    88 
    +
    90  static TrackType GetTrackTypeFromString(const std::string& track_type_string);
    +
    91 
    +
    93  static std::string TrackTypeToString(TrackType track_type);
    +
    94 
    +
    95  private:
    +
    96  DISALLOW_COPY_AND_ASSIGN(KeySource);
    +
    97 };
    +
    98 
    +
    99 } // namespace media
    +
    100 } // namespace shaka
    +
    101 
    +
    102 #endif // MEDIA_BASE_KEY_SOURCE_H_
    virtual Status GetCryptoPeriodKey(uint32_t crypto_period_index, TrackType track_type, EncryptionKey *key)=0
    virtual Status GetKey(TrackType track_type, EncryptionKey *key)=0
    -
    static std::string TrackTypeToString(TrackType track_type)
    Convert TrackType to string.
    Definition: key_source.cc:33
    +
    static std::string TrackTypeToString(TrackType track_type)
    Convert TrackType to string.
    Definition: key_source.cc:37
    virtual Status FetchKeys(const std::vector< uint8_t > &pssh_box)=0
    static TrackType GetTrackTypeFromString(const std::string &track_type_string)
    Convert string representation of track type to enum representation.
    Definition: key_source.cc:19
    @@ -168,7 +170,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d40/classshaka_1_1xml_1_1XmlNode-members.html b/docs/dc/d40/classshaka_1_1xml_1_1XmlNode-members.html index d63406268a..f7de6867c2 100644 --- a/docs/dc/d40/classshaka_1_1xml_1_1XmlNode-members.html +++ b/docs/dc/d40/classshaka_1_1xml_1_1XmlNode-members.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d41/classshaka_1_1media_1_1BufferWriter.html b/docs/dc/d41/classshaka_1_1media_1_1BufferWriter.html index 6f81c64f02..47ccbf3259 100644 --- a/docs/dc/d41/classshaka_1_1media_1_1BufferWriter.html +++ b/docs/dc/d41/classshaka_1_1media_1_1BufferWriter.html @@ -301,7 +301,7 @@ void AppendInt (int64_ diff --git a/docs/dc/d4a/structshaka_1_1media_1_1mp4_1_1ProtectionSystemSpecificHeader-members.html b/docs/dc/d4a/structshaka_1_1media_1_1mp4_1_1ProtectionSystemSpecificHeader-members.html index f47cd3f610..34af9d2906 100644 --- a/docs/dc/d4a/structshaka_1_1media_1_1mp4_1_1ProtectionSystemSpecificHeader-members.html +++ b/docs/dc/d4a/structshaka_1_1media_1_1mp4_1_1ProtectionSystemSpecificHeader-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d4f/structshaka_1_1media_1_1mp4_1_1TrackHeader-members.html b/docs/dc/d4f/structshaka_1_1media_1_1mp4_1_1TrackHeader-members.html index 8e8dd972f2..f59dfe0988 100644 --- a/docs/dc/d4f/structshaka_1_1media_1_1mp4_1_1TrackHeader-members.html +++ b/docs/dc/d4f/structshaka_1_1media_1_1mp4_1_1TrackHeader-members.html @@ -125,7 +125,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d51/h265__byte__to__unit__stream__converter_8cc_source.html b/docs/dc/d51/h265__byte__to__unit__stream__converter_8cc_source.html index 0864ddb36a..fccda676fb 100644 --- a/docs/dc/d51/h265__byte__to__unit__stream__converter_8cc_source.html +++ b/docs/dc/d51/h265__byte__to__unit__stream__converter_8cc_source.html @@ -226,7 +226,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d52/decoding__time__iterator_8h_source.html b/docs/dc/d52/decoding__time__iterator_8h_source.html index 8497c3ef6d..995b7ad59c 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 7fd2b472fe..e5fbe13021 100644 --- a/docs/dc/d53/webm_2segmenter_8cc_source.html +++ b/docs/dc/d53/webm_2segmenter_8cc_source.html @@ -137,432 +137,439 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
    48 
    49 Segmenter::~Segmenter() {}
    50 
    -
    51 Status Segmenter::Initialize(std::unique_ptr<MkvWriter> writer,
    +
    51 Status Segmenter::Initialize(std::unique_ptr<MkvWriter> writer,
    52  StreamInfo* info,
    53  ProgressListener* progress_listener,
    54  MuxerListener* muxer_listener,
    55  KeySource* encryption_key_source,
    56  uint32_t max_sd_pixels,
    -
    57  double clear_lead_in_seconds) {
    -
    58  muxer_listener_ = muxer_listener;
    -
    59  info_ = info;
    -
    60  clear_lead_ = clear_lead_in_seconds;
    -
    61 
    -
    62  // Use media duration as progress target.
    -
    63  progress_target_ = info_->duration();
    -
    64  progress_listener_ = progress_listener;
    -
    65 
    -
    66  segment_info_.Init();
    -
    67  segment_info_.set_timecode_scale(kTimecodeScale);
    -
    68 
    -
    69  const std::string version = GetPackagerVersion();
    -
    70  if (!version.empty()) {
    -
    71  segment_info_.set_writing_app(
    -
    72  (GetPackagerProjectUrl() + " version " + version).c_str());
    -
    73  }
    -
    74 
    -
    75  if (options().single_segment) {
    -
    76  // Set an initial duration so the duration element is written; will be
    -
    77  // overwritten at the end. This works because this is a float and floats
    -
    78  // are always the same size.
    -
    79  segment_info_.set_duration(1);
    -
    80  }
    -
    81 
    -
    82  Status status;
    -
    83  if (encryption_key_source) {
    -
    84  status = InitializeEncryptor(encryption_key_source,
    -
    85  max_sd_pixels);
    -
    86  if (!status.ok())
    -
    87  return status;
    -
    88  }
    -
    89 
    -
    90  // Create the track info.
    -
    91  switch (info_->stream_type()) {
    -
    92  case kStreamVideo:
    -
    93  status = CreateVideoTrack(static_cast<VideoStreamInfo*>(info_));
    -
    94  break;
    -
    95  case kStreamAudio:
    -
    96  status = CreateAudioTrack(static_cast<AudioStreamInfo*>(info_));
    -
    97  break;
    -
    98  default:
    -
    99  NOTIMPLEMENTED() << "Not implemented for stream type: "
    -
    100  << info_->stream_type();
    -
    101  status = Status(error::UNIMPLEMENTED, "Not implemented for stream type");
    -
    102  }
    -
    103  if (!status.ok())
    -
    104  return status;
    -
    105 
    -
    106  return DoInitialize(std::move(writer));
    -
    107 }
    -
    108 
    - -
    110  Status status = WriteFrame(true /* write_duration */);
    -
    111  if (!status.ok())
    -
    112  return status;
    -
    113 
    -
    114  uint64_t duration =
    -
    115  prev_sample_->pts() - first_timestamp_ + prev_sample_->duration();
    -
    116  segment_info_.set_duration(FromBMFFTimescale(duration));
    -
    117  return DoFinalize();
    -
    118 }
    -
    119 
    -
    120 Status Segmenter::AddSample(scoped_refptr<MediaSample> sample) {
    -
    121  if (sample_duration_ == 0) {
    -
    122  first_timestamp_ = sample->pts();
    -
    123  sample_duration_ = sample->duration();
    -
    124  if (muxer_listener_)
    -
    125  muxer_listener_->OnSampleDurationReady(sample_duration_);
    -
    126  }
    -
    127 
    -
    128  UpdateProgress(sample->duration());
    -
    129 
    -
    130  // This writes frames in a delay. Meaning that the previous frame is written
    -
    131  // on this call to AddSample. The current frame is stored until the next
    -
    132  // call. This is done to determine which frame is the last in a Cluster.
    -
    133  // This first block determines if this is a new Cluster and writes the
    -
    134  // previous frame first before creating the new Cluster.
    -
    135 
    -
    136  Status status;
    -
    137  bool wrote_frame = false;
    -
    138  bool new_segment = false;
    -
    139  if (!cluster_) {
    -
    140  status = NewSegment(sample->pts());
    -
    141  new_segment = true;
    -
    142  // First frame, so no previous frame to write.
    -
    143  wrote_frame = true;
    -
    144  } else if (segment_length_in_time_scale_ >=
    -
    145  options_.segment_duration * info_->time_scale()) {
    -
    146  if (sample->is_key_frame() || !options_.segment_sap_aligned) {
    -
    147  status = WriteFrame(true /* write_duration */);
    -
    148  status.Update(NewSegment(sample->pts()));
    -
    149  new_segment = true;
    -
    150  segment_length_in_time_scale_ = 0;
    -
    151  cluster_length_in_time_scale_ = 0;
    -
    152  wrote_frame = true;
    -
    153  }
    -
    154  } else if (cluster_length_in_time_scale_ >=
    -
    155  options_.fragment_duration * info_->time_scale()) {
    -
    156  if (sample->is_key_frame() || !options_.fragment_sap_aligned) {
    -
    157  status = WriteFrame(true /* write_duration */);
    -
    158  status.Update(NewSubsegment(sample->pts()));
    -
    159  cluster_length_in_time_scale_ = 0;
    -
    160  wrote_frame = true;
    -
    161  }
    -
    162  }
    -
    163  if (!wrote_frame) {
    -
    164  status = WriteFrame(false /* write_duration */);
    -
    165  }
    -
    166  if (!status.ok())
    -
    167  return status;
    -
    168 
    -
    169  // Encrypt the frame.
    -
    170  if (encryptor_) {
    -
    171  // Don't enable encryption in the middle of a segment, i.e. only at the
    -
    172  // first frame of a segment.
    -
    173  if (new_segment && !enable_encryption_) {
    -
    174  if (sample->pts() - first_timestamp_ >=
    -
    175  clear_lead_ * info_->time_scale()) {
    -
    176  enable_encryption_ = true;
    -
    177  if (muxer_listener_)
    -
    178  muxer_listener_->OnEncryptionStart();
    -
    179  }
    -
    180  }
    -
    181 
    -
    182  status = encryptor_->EncryptFrame(sample, enable_encryption_);
    -
    183  if (!status.ok()) {
    -
    184  LOG(ERROR) << "Error encrypting frame.";
    -
    185  return status;
    -
    186  }
    -
    187  }
    -
    188 
    -
    189  // Add the sample to the durations even though we have not written the frame
    -
    190  // yet. This is needed to make sure we split Clusters at the correct point.
    -
    191  // These are only used in this method.
    -
    192  cluster_length_in_time_scale_ += sample->duration();
    -
    193  segment_length_in_time_scale_ += sample->duration();
    -
    194 
    -
    195  prev_sample_ = sample;
    -
    196  return Status::OK;
    -
    197 }
    +
    57  uint32_t max_hd_pixels,
    +
    58  uint32_t max_uhd1_pixels,
    +
    59  double clear_lead_in_seconds) {
    +
    60  muxer_listener_ = muxer_listener;
    +
    61  info_ = info;
    +
    62  clear_lead_ = clear_lead_in_seconds;
    +
    63 
    +
    64  // Use media duration as progress target.
    +
    65  progress_target_ = info_->duration();
    +
    66  progress_listener_ = progress_listener;
    +
    67 
    +
    68  segment_info_.Init();
    +
    69  segment_info_.set_timecode_scale(kTimecodeScale);
    +
    70 
    +
    71  const std::string version = GetPackagerVersion();
    +
    72  if (!version.empty()) {
    +
    73  segment_info_.set_writing_app(
    +
    74  (GetPackagerProjectUrl() + " version " + version).c_str());
    +
    75  }
    +
    76 
    +
    77  if (options().single_segment) {
    +
    78  // Set an initial duration so the duration element is written; will be
    +
    79  // overwritten at the end. This works because this is a float and floats
    +
    80  // are always the same size.
    +
    81  segment_info_.set_duration(1);
    +
    82  }
    +
    83 
    +
    84  Status status;
    +
    85  if (encryption_key_source) {
    +
    86  status = InitializeEncryptor(encryption_key_source,
    +
    87  max_sd_pixels,
    +
    88  max_hd_pixels,
    +
    89  max_uhd1_pixels);
    +
    90  if (!status.ok())
    +
    91  return status;
    +
    92  }
    +
    93 
    +
    94  // Create the track info.
    +
    95  switch (info_->stream_type()) {
    +
    96  case kStreamVideo:
    +
    97  status = CreateVideoTrack(static_cast<VideoStreamInfo*>(info_));
    +
    98  break;
    +
    99  case kStreamAudio:
    +
    100  status = CreateAudioTrack(static_cast<AudioStreamInfo*>(info_));
    +
    101  break;
    +
    102  default:
    +
    103  NOTIMPLEMENTED() << "Not implemented for stream type: "
    +
    104  << info_->stream_type();
    +
    105  status = Status(error::UNIMPLEMENTED, "Not implemented for stream type");
    +
    106  }
    +
    107  if (!status.ok())
    +
    108  return status;
    +
    109 
    +
    110  return DoInitialize(std::move(writer));
    +
    111 }
    +
    112 
    + +
    114  Status status = WriteFrame(true /* write_duration */);
    +
    115  if (!status.ok())
    +
    116  return status;
    +
    117 
    +
    118  uint64_t duration =
    +
    119  prev_sample_->pts() - first_timestamp_ + prev_sample_->duration();
    +
    120  segment_info_.set_duration(FromBMFFTimescale(duration));
    +
    121  return DoFinalize();
    +
    122 }
    +
    123 
    +
    124 Status Segmenter::AddSample(scoped_refptr<MediaSample> sample) {
    +
    125  if (sample_duration_ == 0) {
    +
    126  first_timestamp_ = sample->pts();
    +
    127  sample_duration_ = sample->duration();
    +
    128  if (muxer_listener_)
    +
    129  muxer_listener_->OnSampleDurationReady(sample_duration_);
    +
    130  }
    +
    131 
    +
    132  UpdateProgress(sample->duration());
    +
    133 
    +
    134  // This writes frames in a delay. Meaning that the previous frame is written
    +
    135  // on this call to AddSample. The current frame is stored until the next
    +
    136  // call. This is done to determine which frame is the last in a Cluster.
    +
    137  // This first block determines if this is a new Cluster and writes the
    +
    138  // previous frame first before creating the new Cluster.
    +
    139 
    +
    140  Status status;
    +
    141  bool wrote_frame = false;
    +
    142  bool new_segment = false;
    +
    143  if (!cluster_) {
    +
    144  status = NewSegment(sample->pts());
    +
    145  new_segment = true;
    +
    146  // First frame, so no previous frame to write.
    +
    147  wrote_frame = true;
    +
    148  } else if (segment_length_in_time_scale_ >=
    +
    149  options_.segment_duration * info_->time_scale()) {
    +
    150  if (sample->is_key_frame() || !options_.segment_sap_aligned) {
    +
    151  status = WriteFrame(true /* write_duration */);
    +
    152  status.Update(NewSegment(sample->pts()));
    +
    153  new_segment = true;
    +
    154  segment_length_in_time_scale_ = 0;
    +
    155  cluster_length_in_time_scale_ = 0;
    +
    156  wrote_frame = true;
    +
    157  }
    +
    158  } else if (cluster_length_in_time_scale_ >=
    +
    159  options_.fragment_duration * info_->time_scale()) {
    +
    160  if (sample->is_key_frame() || !options_.fragment_sap_aligned) {
    +
    161  status = WriteFrame(true /* write_duration */);
    +
    162  status.Update(NewSubsegment(sample->pts()));
    +
    163  cluster_length_in_time_scale_ = 0;
    +
    164  wrote_frame = true;
    +
    165  }
    +
    166  }
    +
    167  if (!wrote_frame) {
    +
    168  status = WriteFrame(false /* write_duration */);
    +
    169  }
    +
    170  if (!status.ok())
    +
    171  return status;
    +
    172 
    +
    173  // Encrypt the frame.
    +
    174  if (encryptor_) {
    +
    175  // Don't enable encryption in the middle of a segment, i.e. only at the
    +
    176  // first frame of a segment.
    +
    177  if (new_segment && !enable_encryption_) {
    +
    178  if (sample->pts() - first_timestamp_ >=
    +
    179  clear_lead_ * info_->time_scale()) {
    +
    180  enable_encryption_ = true;
    +
    181  if (muxer_listener_)
    +
    182  muxer_listener_->OnEncryptionStart();
    +
    183  }
    +
    184  }
    +
    185 
    +
    186  status = encryptor_->EncryptFrame(sample, enable_encryption_);
    +
    187  if (!status.ok()) {
    +
    188  LOG(ERROR) << "Error encrypting frame.";
    +
    189  return status;
    +
    190  }
    +
    191  }
    +
    192 
    +
    193  // Add the sample to the durations even though we have not written the frame
    +
    194  // yet. This is needed to make sure we split Clusters at the correct point.
    +
    195  // These are only used in this method.
    +
    196  cluster_length_in_time_scale_ += sample->duration();
    +
    197  segment_length_in_time_scale_ += sample->duration();
    198 
    -
    199 float Segmenter::GetDuration() const {
    -
    200  return static_cast<float>(segment_info_.duration()) *
    -
    201  segment_info_.timecode_scale() / kSecondsToNs;
    -
    202 }
    -
    203 
    -
    204 uint64_t Segmenter::FromBMFFTimescale(uint64_t time_timescale) {
    -
    205  // Convert the time from BMFF time_code to WebM timecode scale.
    -
    206  const int64_t time_ns =
    -
    207  kSecondsToNs * time_timescale / info_->time_scale();
    -
    208  return time_ns / segment_info_.timecode_scale();
    -
    209 }
    -
    210 
    -
    211 uint64_t Segmenter::FromWebMTimecode(uint64_t time_webm_timecode) {
    -
    212  // Convert the time to BMFF time_code from WebM timecode scale.
    -
    213  const int64_t time_ns = time_webm_timecode * segment_info_.timecode_scale();
    -
    214  return time_ns * info_->time_scale() / kSecondsToNs;
    -
    215 }
    -
    216 
    -
    217 Status Segmenter::WriteSegmentHeader(uint64_t file_size, MkvWriter* writer) {
    -
    218  Status error_status(error::FILE_FAILURE, "Error writing segment header.");
    -
    219 
    -
    220  if (!WriteEbmlHeader(writer))
    -
    221  return error_status;
    -
    222 
    -
    223  if (WriteID(writer, mkvmuxer::kMkvSegment) != 0)
    -
    224  return error_status;
    -
    225 
    -
    226  const uint64_t segment_size_size = 8;
    -
    227  segment_payload_pos_ = writer->Position() + segment_size_size;
    -
    228  if (file_size > 0) {
    -
    229  // We want the size of the segment element, so subtract the header.
    -
    230  if (WriteUIntSize(writer, file_size - segment_payload_pos_,
    -
    231  segment_size_size) != 0)
    -
    232  return error_status;
    -
    233  if (!seek_head_.Write(writer))
    -
    234  return error_status;
    -
    235  } else {
    -
    236  if (SerializeInt(writer, mkvmuxer::kEbmlUnknownValue, segment_size_size) !=
    -
    237  0)
    +
    199  prev_sample_ = sample;
    +
    200  return Status::OK;
    +
    201 }
    +
    202 
    +
    203 float Segmenter::GetDuration() const {
    +
    204  return static_cast<float>(segment_info_.duration()) *
    +
    205  segment_info_.timecode_scale() / kSecondsToNs;
    +
    206 }
    +
    207 
    +
    208 uint64_t Segmenter::FromBMFFTimescale(uint64_t time_timescale) {
    +
    209  // Convert the time from BMFF time_code to WebM timecode scale.
    +
    210  const int64_t time_ns =
    +
    211  kSecondsToNs * time_timescale / info_->time_scale();
    +
    212  return time_ns / segment_info_.timecode_scale();
    +
    213 }
    +
    214 
    +
    215 uint64_t Segmenter::FromWebMTimecode(uint64_t time_webm_timecode) {
    +
    216  // Convert the time to BMFF time_code from WebM timecode scale.
    +
    217  const int64_t time_ns = time_webm_timecode * segment_info_.timecode_scale();
    +
    218  return time_ns * info_->time_scale() / kSecondsToNs;
    +
    219 }
    +
    220 
    +
    221 Status Segmenter::WriteSegmentHeader(uint64_t file_size, MkvWriter* writer) {
    +
    222  Status error_status(error::FILE_FAILURE, "Error writing segment header.");
    +
    223 
    +
    224  if (!WriteEbmlHeader(writer))
    +
    225  return error_status;
    +
    226 
    +
    227  if (WriteID(writer, mkvmuxer::kMkvSegment) != 0)
    +
    228  return error_status;
    +
    229 
    +
    230  const uint64_t segment_size_size = 8;
    +
    231  segment_payload_pos_ = writer->Position() + segment_size_size;
    +
    232  if (file_size > 0) {
    +
    233  // We want the size of the segment element, so subtract the header.
    +
    234  if (WriteUIntSize(writer, file_size - segment_payload_pos_,
    +
    235  segment_size_size) != 0)
    +
    236  return error_status;
    +
    237  if (!seek_head_.Write(writer))
    238  return error_status;
    -
    239  // We don't know the header size, so write a placeholder.
    -
    240  if (!seek_head_.WriteVoid(writer))
    -
    241  return error_status;
    -
    242  }
    -
    243 
    -
    244  seek_head_.set_info_pos(writer->Position() - segment_payload_pos_);
    -
    245  if (!segment_info_.Write(writer))
    -
    246  return error_status;
    +
    239  } else {
    +
    240  if (SerializeInt(writer, mkvmuxer::kEbmlUnknownValue, segment_size_size) !=
    +
    241  0)
    +
    242  return error_status;
    +
    243  // We don't know the header size, so write a placeholder.
    +
    244  if (!seek_head_.WriteVoid(writer))
    +
    245  return error_status;
    +
    246  }
    247 
    -
    248  seek_head_.set_tracks_pos(writer->Position() - segment_payload_pos_);
    -
    249  if (!tracks_.Write(writer))
    +
    248  seek_head_.set_info_pos(writer->Position() - segment_payload_pos_);
    +
    249  if (!segment_info_.Write(writer))
    250  return error_status;
    251 
    -
    252  return Status::OK;
    -
    253 }
    -
    254 
    -
    255 Status Segmenter::SetCluster(uint64_t start_webm_timecode,
    -
    256  uint64_t position,
    -
    257  MkvWriter* writer) {
    -
    258  const uint64_t scale = segment_info_.timecode_scale();
    -
    259  cluster_.reset(new mkvmuxer::Cluster(start_webm_timecode, position, scale));
    -
    260  cluster_->Init(writer);
    -
    261  return Status::OK;
    -
    262 }
    -
    263 
    -
    264 void Segmenter::UpdateProgress(uint64_t progress) {
    -
    265  accumulated_progress_ += progress;
    -
    266  if (!progress_listener_ || progress_target_ == 0)
    -
    267  return;
    -
    268  // It might happen that accumulated progress exceeds progress_target due to
    -
    269  // computation errors, e.g. rounding error. Cap it so it never reports > 100%
    -
    270  // progress.
    -
    271  if (accumulated_progress_ >= progress_target_) {
    -
    272  progress_listener_->OnProgress(1.0);
    -
    273  } else {
    -
    274  progress_listener_->OnProgress(static_cast<double>(accumulated_progress_) /
    -
    275  progress_target_);
    -
    276  }
    -
    277 }
    -
    278 
    -
    279 Status Segmenter::CreateVideoTrack(VideoStreamInfo* info) {
    -
    280  // The seed is only used to create a UID which we overwrite later.
    -
    281  unsigned int seed = 0;
    -
    282  mkvmuxer::VideoTrack* track = new mkvmuxer::VideoTrack(&seed);
    -
    283  if (!track)
    -
    284  return Status(error::INTERNAL_ERROR, "Failed to create video track.");
    -
    285 
    -
    286  if (info->codec() == kCodecVP8) {
    -
    287  track->set_codec_id(mkvmuxer::Tracks::kVp8CodecId);
    -
    288  } else if (info->codec() == kCodecVP9) {
    -
    289  track->set_codec_id(mkvmuxer::Tracks::kVp9CodecId);
    -
    290 
    -
    291  // The |StreamInfo::codec_config| field is stored using the MP4 format; we
    -
    292  // need to convert it to the WebM format.
    -
    293  VPCodecConfigurationRecord vp_config;
    -
    294  if (!vp_config.ParseMP4(info->codec_config())) {
    -
    295  return Status(error::INTERNAL_ERROR,
    -
    296  "Unable to parse VP9 codec configuration");
    -
    297  }
    -
    298 
    -
    299  std::vector<uint8_t> codec_config;
    -
    300  vp_config.WriteWebM(&codec_config);
    -
    301  if (!track->SetCodecPrivate(codec_config.data(), codec_config.size())) {
    -
    302  return Status(error::INTERNAL_ERROR,
    -
    303  "Private codec data required for VP9 streams");
    -
    304  }
    -
    305  } else {
    -
    306  LOG(ERROR) << "Only VP8 and VP9 video codecs are supported.";
    -
    307  return Status(error::UNIMPLEMENTED,
    -
    308  "Only VP8 and VP9 video codecs are supported.");
    -
    309  }
    -
    310 
    -
    311  track->set_uid(info->track_id());
    -
    312  if (!info->language().empty())
    -
    313  track->set_language(info->language().c_str());
    -
    314  track->set_type(mkvmuxer::Tracks::kVideo);
    -
    315  track->set_width(info->width());
    -
    316  track->set_height(info->height());
    -
    317  track->set_display_height(info->height());
    -
    318  track->set_display_width(info->width() * info->pixel_width() /
    -
    319  info->pixel_height());
    -
    320 
    -
    321  if (encryptor_)
    -
    322  encryptor_->AddTrackInfo(track);
    -
    323 
    -
    324  tracks_.AddTrack(track, info->track_id());
    -
    325  track_id_ = track->number();
    -
    326  return Status::OK;
    -
    327 }
    -
    328 
    -
    329 Status Segmenter::CreateAudioTrack(AudioStreamInfo* info) {
    -
    330  // The seed is only used to create a UID which we overwrite later.
    -
    331  unsigned int seed = 0;
    -
    332  mkvmuxer::AudioTrack* track = new mkvmuxer::AudioTrack(&seed);
    -
    333  if (!track)
    -
    334  return Status(error::INTERNAL_ERROR, "Failed to create audio track.");
    -
    335 
    -
    336  if (info->codec() == kCodecOpus) {
    -
    337  track->set_codec_id(mkvmuxer::Tracks::kOpusCodecId);
    -
    338  } else if (info->codec() == kCodecVorbis) {
    -
    339  track->set_codec_id(mkvmuxer::Tracks::kVorbisCodecId);
    -
    340  } else {
    -
    341  LOG(ERROR) << "Only Vorbis and Opus audio codec is supported.";
    -
    342  return Status(error::UNIMPLEMENTED,
    -
    343  "Only Vorbis and Opus audio codecs are supported.");
    -
    344  }
    -
    345  if (!track->SetCodecPrivate(info->codec_config().data(),
    -
    346  info->codec_config().size())) {
    -
    347  return Status(error::INTERNAL_ERROR,
    -
    348  "Private codec data required for audio streams");
    -
    349  }
    -
    350 
    -
    351  track->set_uid(info->track_id());
    -
    352  if (!info->language().empty())
    -
    353  track->set_language(info->language().c_str());
    -
    354  track->set_type(mkvmuxer::Tracks::kAudio);
    -
    355  track->set_sample_rate(info->sampling_frequency());
    -
    356  track->set_channels(info->num_channels());
    -
    357  track->set_seek_pre_roll(info->seek_preroll_ns());
    -
    358  track->set_codec_delay(info->codec_delay_ns());
    -
    359 
    -
    360  if (encryptor_)
    -
    361  encryptor_->AddTrackInfo(track);
    -
    362 
    -
    363  tracks_.AddTrack(track, info->track_id());
    -
    364  track_id_ = track->number();
    -
    365  return Status::OK;
    -
    366 }
    -
    367 
    -
    368 Status Segmenter::InitializeEncryptor(KeySource* key_source,
    -
    369  uint32_t max_sd_pixels) {
    -
    370  encryptor_.reset(new Encryptor());
    -
    371  const KeySource::TrackType track_type =
    -
    372  GetTrackTypeForEncryption(*info_, max_sd_pixels);
    -
    373  if (track_type == KeySource::TrackType::TRACK_TYPE_UNKNOWN)
    -
    374  return Status::OK;
    -
    375  return encryptor_->Initialize(muxer_listener_, track_type, info_->codec(),
    -
    376  key_source, options_.webm_subsample_encryption);
    -
    377 }
    -
    378 
    -
    379 Status Segmenter::WriteFrame(bool write_duration) {
    -
    380  // Create a frame manually so we can create non-SimpleBlock frames. This
    -
    381  // is required to allow the frame duration to be added. If the duration
    -
    382  // is not set, then a SimpleBlock will still be written.
    -
    383  mkvmuxer::Frame frame;
    -
    384 
    -
    385  if (!frame.Init(prev_sample_->data(), prev_sample_->data_size())) {
    -
    386  return Status(error::MUXER_FAILURE,
    -
    387  "Error adding sample to segment: Frame::Init failed");
    -
    388  }
    -
    389 
    -
    390  if (write_duration) {
    -
    391  const uint64_t duration_ns =
    -
    392  prev_sample_->duration() * kSecondsToNs / info_->time_scale();
    -
    393  frame.set_duration(duration_ns);
    -
    394  }
    -
    395  frame.set_is_key(prev_sample_->is_key_frame());
    -
    396  frame.set_timestamp(prev_sample_->pts() * kSecondsToNs / info_->time_scale());
    -
    397  frame.set_track_number(track_id_);
    -
    398 
    -
    399  if (prev_sample_->side_data_size() > 0) {
    -
    400  uint64_t block_add_id;
    -
    401  // First 8 bytes of side_data is the BlockAddID element's value, which is
    -
    402  // done to mimic ffmpeg behavior. See webm_cluster_parser.cc for details.
    -
    403  CHECK_GT(prev_sample_->side_data_size(), sizeof(block_add_id));
    -
    404  memcpy(&block_add_id, prev_sample_->side_data(), sizeof(block_add_id));
    -
    405  if (!frame.AddAdditionalData(
    -
    406  prev_sample_->side_data() + sizeof(block_add_id),
    -
    407  prev_sample_->side_data_size() - sizeof(block_add_id),
    -
    408  block_add_id)) {
    -
    409  return Status(
    -
    410  error::MUXER_FAILURE,
    -
    411  "Error adding sample to segment: Frame::AddAditionalData Failed");
    -
    412  }
    -
    413  }
    -
    414 
    -
    415  if (!prev_sample_->is_key_frame() && !frame.CanBeSimpleBlock()) {
    -
    416  const int64_t timestamp_ns =
    -
    417  reference_frame_timestamp_ * kSecondsToNs / info_->time_scale();
    -
    418  frame.set_reference_block_timestamp(timestamp_ns);
    -
    419  }
    -
    420 
    -
    421  // GetRelativeTimecode will return -1 if the relative timecode is too large
    -
    422  // to fit in the frame.
    -
    423  if (cluster_->GetRelativeTimecode(frame.timestamp() /
    -
    424  cluster_->timecode_scale()) < 0) {
    -
    425  const double segment_duration =
    -
    426  static_cast<double>(frame.timestamp()) / kSecondsToNs;
    -
    427  LOG(ERROR) << "Error adding sample to segment: segment too large, "
    -
    428  << segment_duration << " seconds.";
    -
    429  return Status(error::MUXER_FAILURE,
    -
    430  "Error adding sample to segment: segment too large");
    -
    431  }
    -
    432 
    -
    433  if (!cluster_->AddFrame(&frame)) {
    -
    434  return Status(error::MUXER_FAILURE,
    -
    435  "Error adding sample to segment: Cluster::AddFrame failed");
    -
    436  }
    -
    437 
    -
    438  // A reference frame is needed for non-keyframes. Having a reference to the
    -
    439  // previous block is good enough.
    -
    440  // See libwebm Segment::AddGenericFrame
    -
    441  reference_frame_timestamp_ = prev_sample_->pts();
    -
    442  return Status::OK;
    -
    443 }
    +
    252  seek_head_.set_tracks_pos(writer->Position() - segment_payload_pos_);
    +
    253  if (!tracks_.Write(writer))
    +
    254  return error_status;
    +
    255 
    +
    256  return Status::OK;
    +
    257 }
    +
    258 
    +
    259 Status Segmenter::SetCluster(uint64_t start_webm_timecode,
    +
    260  uint64_t position,
    +
    261  MkvWriter* writer) {
    +
    262  const uint64_t scale = segment_info_.timecode_scale();
    +
    263  cluster_.reset(new mkvmuxer::Cluster(start_webm_timecode, position, scale));
    +
    264  cluster_->Init(writer);
    +
    265  return Status::OK;
    +
    266 }
    +
    267 
    +
    268 void Segmenter::UpdateProgress(uint64_t progress) {
    +
    269  accumulated_progress_ += progress;
    +
    270  if (!progress_listener_ || progress_target_ == 0)
    +
    271  return;
    +
    272  // It might happen that accumulated progress exceeds progress_target due to
    +
    273  // computation errors, e.g. rounding error. Cap it so it never reports > 100%
    +
    274  // progress.
    +
    275  if (accumulated_progress_ >= progress_target_) {
    +
    276  progress_listener_->OnProgress(1.0);
    +
    277  } else {
    +
    278  progress_listener_->OnProgress(static_cast<double>(accumulated_progress_) /
    +
    279  progress_target_);
    +
    280  }
    +
    281 }
    +
    282 
    +
    283 Status Segmenter::CreateVideoTrack(VideoStreamInfo* info) {
    +
    284  // The seed is only used to create a UID which we overwrite later.
    +
    285  unsigned int seed = 0;
    +
    286  mkvmuxer::VideoTrack* track = new mkvmuxer::VideoTrack(&seed);
    +
    287  if (!track)
    +
    288  return Status(error::INTERNAL_ERROR, "Failed to create video track.");
    +
    289 
    +
    290  if (info->codec() == kCodecVP8) {
    +
    291  track->set_codec_id(mkvmuxer::Tracks::kVp8CodecId);
    +
    292  } else if (info->codec() == kCodecVP9) {
    +
    293  track->set_codec_id(mkvmuxer::Tracks::kVp9CodecId);
    +
    294 
    +
    295  // The |StreamInfo::codec_config| field is stored using the MP4 format; we
    +
    296  // need to convert it to the WebM format.
    +
    297  VPCodecConfigurationRecord vp_config;
    +
    298  if (!vp_config.ParseMP4(info->codec_config())) {
    +
    299  return Status(error::INTERNAL_ERROR,
    +
    300  "Unable to parse VP9 codec configuration");
    +
    301  }
    +
    302 
    +
    303  std::vector<uint8_t> codec_config;
    +
    304  vp_config.WriteWebM(&codec_config);
    +
    305  if (!track->SetCodecPrivate(codec_config.data(), codec_config.size())) {
    +
    306  return Status(error::INTERNAL_ERROR,
    +
    307  "Private codec data required for VP9 streams");
    +
    308  }
    +
    309  } else {
    +
    310  LOG(ERROR) << "Only VP8 and VP9 video codecs are supported.";
    +
    311  return Status(error::UNIMPLEMENTED,
    +
    312  "Only VP8 and VP9 video codecs are supported.");
    +
    313  }
    +
    314 
    +
    315  track->set_uid(info->track_id());
    +
    316  if (!info->language().empty())
    +
    317  track->set_language(info->language().c_str());
    +
    318  track->set_type(mkvmuxer::Tracks::kVideo);
    +
    319  track->set_width(info->width());
    +
    320  track->set_height(info->height());
    +
    321  track->set_display_height(info->height());
    +
    322  track->set_display_width(info->width() * info->pixel_width() /
    +
    323  info->pixel_height());
    +
    324 
    +
    325  if (encryptor_)
    +
    326  encryptor_->AddTrackInfo(track);
    +
    327 
    +
    328  tracks_.AddTrack(track, info->track_id());
    +
    329  track_id_ = track->number();
    +
    330  return Status::OK;
    +
    331 }
    +
    332 
    +
    333 Status Segmenter::CreateAudioTrack(AudioStreamInfo* info) {
    +
    334  // The seed is only used to create a UID which we overwrite later.
    +
    335  unsigned int seed = 0;
    +
    336  mkvmuxer::AudioTrack* track = new mkvmuxer::AudioTrack(&seed);
    +
    337  if (!track)
    +
    338  return Status(error::INTERNAL_ERROR, "Failed to create audio track.");
    +
    339 
    +
    340  if (info->codec() == kCodecOpus) {
    +
    341  track->set_codec_id(mkvmuxer::Tracks::kOpusCodecId);
    +
    342  } else if (info->codec() == kCodecVorbis) {
    +
    343  track->set_codec_id(mkvmuxer::Tracks::kVorbisCodecId);
    +
    344  } else {
    +
    345  LOG(ERROR) << "Only Vorbis and Opus audio codec is supported.";
    +
    346  return Status(error::UNIMPLEMENTED,
    +
    347  "Only Vorbis and Opus audio codecs are supported.");
    +
    348  }
    +
    349  if (!track->SetCodecPrivate(info->codec_config().data(),
    +
    350  info->codec_config().size())) {
    +
    351  return Status(error::INTERNAL_ERROR,
    +
    352  "Private codec data required for audio streams");
    +
    353  }
    +
    354 
    +
    355  track->set_uid(info->track_id());
    +
    356  if (!info->language().empty())
    +
    357  track->set_language(info->language().c_str());
    +
    358  track->set_type(mkvmuxer::Tracks::kAudio);
    +
    359  track->set_sample_rate(info->sampling_frequency());
    +
    360  track->set_channels(info->num_channels());
    +
    361  track->set_seek_pre_roll(info->seek_preroll_ns());
    +
    362  track->set_codec_delay(info->codec_delay_ns());
    +
    363 
    +
    364  if (encryptor_)
    +
    365  encryptor_->AddTrackInfo(track);
    +
    366 
    +
    367  tracks_.AddTrack(track, info->track_id());
    +
    368  track_id_ = track->number();
    +
    369  return Status::OK;
    +
    370 }
    +
    371 
    +
    372 Status Segmenter::InitializeEncryptor(KeySource* key_source,
    +
    373  uint32_t max_sd_pixels,
    +
    374  uint32_t max_hd_pixels,
    +
    375  uint32_t max_uhd1_pixels) {
    +
    376  encryptor_.reset(new Encryptor());
    +
    377  const KeySource::TrackType track_type =
    +
    378  GetTrackTypeForEncryption(*info_, max_sd_pixels, max_hd_pixels,
    +
    379  max_uhd1_pixels);
    +
    380  if (track_type == KeySource::TrackType::TRACK_TYPE_UNKNOWN)
    +
    381  return Status::OK;
    +
    382  return encryptor_->Initialize(muxer_listener_, track_type, info_->codec(),
    +
    383  key_source, options_.webm_subsample_encryption);
    +
    384 }
    +
    385 
    +
    386 Status Segmenter::WriteFrame(bool write_duration) {
    +
    387  // Create a frame manually so we can create non-SimpleBlock frames. This
    +
    388  // is required to allow the frame duration to be added. If the duration
    +
    389  // is not set, then a SimpleBlock will still be written.
    +
    390  mkvmuxer::Frame frame;
    +
    391 
    +
    392  if (!frame.Init(prev_sample_->data(), prev_sample_->data_size())) {
    +
    393  return Status(error::MUXER_FAILURE,
    +
    394  "Error adding sample to segment: Frame::Init failed");
    +
    395  }
    +
    396 
    +
    397  if (write_duration) {
    +
    398  const uint64_t duration_ns =
    +
    399  prev_sample_->duration() * kSecondsToNs / info_->time_scale();
    +
    400  frame.set_duration(duration_ns);
    +
    401  }
    +
    402  frame.set_is_key(prev_sample_->is_key_frame());
    +
    403  frame.set_timestamp(prev_sample_->pts() * kSecondsToNs / info_->time_scale());
    +
    404  frame.set_track_number(track_id_);
    +
    405 
    +
    406  if (prev_sample_->side_data_size() > 0) {
    +
    407  uint64_t block_add_id;
    +
    408  // First 8 bytes of side_data is the BlockAddID element's value, which is
    +
    409  // done to mimic ffmpeg behavior. See webm_cluster_parser.cc for details.
    +
    410  CHECK_GT(prev_sample_->side_data_size(), sizeof(block_add_id));
    +
    411  memcpy(&block_add_id, prev_sample_->side_data(), sizeof(block_add_id));
    +
    412  if (!frame.AddAdditionalData(
    +
    413  prev_sample_->side_data() + sizeof(block_add_id),
    +
    414  prev_sample_->side_data_size() - sizeof(block_add_id),
    +
    415  block_add_id)) {
    +
    416  return Status(
    +
    417  error::MUXER_FAILURE,
    +
    418  "Error adding sample to segment: Frame::AddAditionalData Failed");
    +
    419  }
    +
    420  }
    +
    421 
    +
    422  if (!prev_sample_->is_key_frame() && !frame.CanBeSimpleBlock()) {
    +
    423  const int64_t timestamp_ns =
    +
    424  reference_frame_timestamp_ * kSecondsToNs / info_->time_scale();
    +
    425  frame.set_reference_block_timestamp(timestamp_ns);
    +
    426  }
    +
    427 
    +
    428  // GetRelativeTimecode will return -1 if the relative timecode is too large
    +
    429  // to fit in the frame.
    +
    430  if (cluster_->GetRelativeTimecode(frame.timestamp() /
    +
    431  cluster_->timecode_scale()) < 0) {
    +
    432  const double segment_duration =
    +
    433  static_cast<double>(frame.timestamp()) / kSecondsToNs;
    +
    434  LOG(ERROR) << "Error adding sample to segment: segment too large, "
    +
    435  << segment_duration << " seconds.";
    +
    436  return Status(error::MUXER_FAILURE,
    +
    437  "Error adding sample to segment: segment too large");
    +
    438  }
    +
    439 
    +
    440  if (!cluster_->AddFrame(&frame)) {
    +
    441  return Status(error::MUXER_FAILURE,
    +
    442  "Error adding sample to segment: Cluster::AddFrame failed");
    +
    443  }
    444 
    -
    445 } // namespace webm
    -
    446 } // namespace media
    -
    447 } // namespace shaka
    +
    445  // A reference frame is needed for non-keyframes. Having a reference to the
    +
    446  // previous block is good enough.
    +
    447  // See libwebm Segment::AddGenericFrame
    +
    448  reference_frame_timestamp_ = prev_sample_->pts();
    +
    449  return Status::OK;
    +
    450 }
    +
    451 
    +
    452 } // namespace webm
    +
    453 } // namespace media
    +
    454 } // namespace shaka
    Abstract class holds stream information.
    Definition: stream_info.h:53
    -
    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, FourCC protection_scheme)
    Definition: segmenter.cc:165
    -
    void UpdateProgress(uint64_t progress)
    Update segmentation progress using ProgressListener.
    Definition: segmenter.cc:387
    +
    void UpdateProgress(uint64_t progress)
    Update segmentation progress using ProgressListener.
    Definition: segmenter.cc:390
    virtual void OnSampleDurationReady(uint32_t sample_duration)=0
    Class for parsing or writing VP codec configuration record.
    virtual void OnEncryptionStart()=0
    -
    Status AddSample(const MediaStream *stream, scoped_refptr< MediaSample > sample)
    Definition: segmenter.cc:320
    +
    Status AddSample(const MediaStream *stream, scoped_refptr< MediaSample > sample)
    Definition: segmenter.cc:323
    This class listens to progress updates events.
    mkvmuxer::int64 Position() const override
    Definition: mkv_writer.cc:71
    +
    Status Initialize(const std::vector< MediaStream * > &streams, MuxerListener *muxer_listener, ProgressListener *progress_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)
    Definition: segmenter.cc:165
    void WriteWebM(std::vector< uint8_t > *data) const
    An implementation of IMkvWriter using our File type.
    Definition: mkv_writer.h:21
    bool ParseMP4(const std::vector< uint8_t > &data)
    - +
    virtual void OnProgress(double progress)=0
    KeySource is responsible for encryption key acquisition.
    Definition: key_source.h:30
    -
    double GetDuration() const
    Definition: segmenter.cc:378
    +
    double GetDuration() const
    Definition: segmenter.cc:381
    Holds video stream information.
    diff --git a/docs/dc/d54/structshaka_1_1media_1_1H264DecRefPicMarking.html b/docs/dc/d54/structshaka_1_1media_1_1H264DecRefPicMarking.html index 77c9de1e39..5e19fb764f 100644 --- a/docs/dc/d54/structshaka_1_1media_1_1H264DecRefPicMarking.html +++ b/docs/dc/d54/structshaka_1_1media_1_1H264DecRefPicMarking.html @@ -121,7 +121,7 @@ int max_long_term_frame_id diff --git a/docs/dc/d58/webm__media__parser_8h_source.html b/docs/dc/d58/webm__media__parser_8h_source.html index 80737b37f1..7e7f456f0c 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/d5c/classshaka_1_1MockMpdNotifier.html b/docs/dc/d5c/classshaka_1_1MockMpdNotifier.html index 470d7a9ef8..757a52a91b 100644 --- a/docs/dc/d5c/classshaka_1_1MockMpdNotifier.html +++ b/docs/dc/d5c/classshaka_1_1MockMpdNotifier.html @@ -160,7 +160,7 @@ Public Member Functions diff --git a/docs/dc/d69/structshaka_1_1media_1_1mp4_1_1CueSettingsBox-members.html b/docs/dc/d69/structshaka_1_1media_1_1mp4_1_1CueSettingsBox-members.html index d56bc0deb2..0fbeab04da 100644 --- a/docs/dc/d69/structshaka_1_1media_1_1mp4_1_1CueSettingsBox-members.html +++ b/docs/dc/d69/structshaka_1_1media_1_1mp4_1_1CueSettingsBox-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d6f/classshaka_1_1media_1_1webm_1_1Segmenter-members.html b/docs/dc/d6f/classshaka_1_1media_1_1webm_1_1Segmenter-members.html index b4cfa940ab..478de8d1ce 100644 --- a/docs/dc/d6f/classshaka_1_1media_1_1webm_1_1Segmenter-members.html +++ b/docs/dc/d6f/classshaka_1_1media_1_1webm_1_1Segmenter-members.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); GetIndexRangeStartAndEnd(uint64_t *start, uint64_t *end)=0shaka::media::webm::Segmenterpure virtual GetInitRangeStartAndEnd(uint64_t *start, uint64_t *end)=0shaka::media::webm::Segmenterpure virtual info() (defined in shaka::media::webm::Segmenter)shaka::media::webm::Segmenterinlineprotected - Initialize(std::unique_ptr< MkvWriter > writer, StreamInfo *info, ProgressListener *progress_listener, MuxerListener *muxer_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds)shaka::media::webm::Segmenter + Initialize(std::unique_ptr< MkvWriter > writer, StreamInfo *info, ProgressListener *progress_listener, MuxerListener *muxer_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds)shaka::media::webm::Segmenter muxer_listener() (defined in shaka::media::webm::Segmenter)shaka::media::webm::Segmenterinlineprotected options() const (defined in shaka::media::webm::Segmenter)shaka::media::webm::Segmenterinlineprotected seek_head() (defined in shaka::media::webm::Segmenter)shaka::media::webm::Segmenterinlineprotected @@ -121,7 +121,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d71/classshaka_1_1media_1_1mp2t_1_1TsSection-members.html b/docs/dc/d71/classshaka_1_1media_1_1mp2t_1_1TsSection-members.html index 95c88d45ec..48d256c724 100644 --- a/docs/dc/d71/classshaka_1_1media_1_1mp2t_1_1TsSection-members.html +++ b/docs/dc/d71/classshaka_1_1media_1_1mp2t_1_1TsSection-members.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d73/classshaka_1_1media_1_1MockMuxerListener.html b/docs/dc/d73/classshaka_1_1media_1_1MockMuxerListener.html index 3de9520873..f0624be601 100644 --- a/docs/dc/d73/classshaka_1_1media_1_1MockMuxerListener.html +++ b/docs/dc/d73/classshaka_1_1media_1_1MockMuxerListener.html @@ -157,7 +157,7 @@ Additional Inherited Members diff --git a/docs/dc/d7b/closure__thread_8cc_source.html b/docs/dc/d7b/closure__thread_8cc_source.html index aa7cd0553a..0891726afe 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 ca3ca65dde..556b61d049 100644 --- a/docs/dc/d7b/h264__parser_8cc_source.html +++ b/docs/dc/d7b/h264__parser_8cc_source.html @@ -1258,7 +1258,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d86/structshaka_1_1media_1_1mp4_1_1ElementaryStreamDescriptor-members.html b/docs/dc/d86/structshaka_1_1media_1_1mp4_1_1ElementaryStreamDescriptor-members.html index bb4df87816..6a776c2ee0 100644 --- a/docs/dc/d86/structshaka_1_1media_1_1mp4_1_1ElementaryStreamDescriptor-members.html +++ b/docs/dc/d86/structshaka_1_1media_1_1mp4_1_1ElementaryStreamDescriptor-members.html @@ -114,7 +114,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d8f/structshaka_1_1media_1_1mp4_1_1MovieFragmentHeader.html b/docs/dc/d8f/structshaka_1_1media_1_1mp4_1_1MovieFragmentHeader.html index 5fc466f292..1eaa30e2e4 100644 --- a/docs/dc/d8f/structshaka_1_1media_1_1mp4_1_1MovieFragmentHeader.html +++ b/docs/dc/d8f/structshaka_1_1media_1_1mp4_1_1MovieFragmentHeader.html @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/dc/da0/structshaka_1_1media_1_1mp4_1_1DTSSpecific.html b/docs/dc/da0/structshaka_1_1media_1_1mp4_1_1DTSSpecific.html index bd735cd0cc..6329cef06d 100644 --- a/docs/dc/da0/structshaka_1_1media_1_1mp4_1_1DTSSpecific.html +++ b/docs/dc/da0/structshaka_1_1media_1_1mp4_1_1DTSSpecific.html @@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/dc/da1/classshaka_1_1MpdBuilder.html b/docs/dc/da1/classshaka_1_1MpdBuilder.html index 1c21371fdf..7a7ac1422d 100644 --- a/docs/dc/da1/classshaka_1_1MpdBuilder.html +++ b/docs/dc/da1/classshaka_1_1MpdBuilder.html @@ -385,7 +385,7 @@ class DynamicMpdBuilderTes diff --git a/docs/dc/da6/classshaka_1_1media_1_1ContentEncoding.html b/docs/dc/da6/classshaka_1_1media_1_1ContentEncoding.html index 496f5518f7..4d481cf839 100644 --- a/docs/dc/da6/classshaka_1_1media_1_1ContentEncoding.html +++ b/docs/dc/da6/classshaka_1_1media_1_1ContentEncoding.html @@ -208,7 +208,7 @@ Static Public Attributes diff --git a/docs/dc/dbd/structshaka_1_1media_1_1FileCloser-members.html b/docs/dc/dbd/structshaka_1_1media_1_1FileCloser-members.html index 5341541c3e..9486339e5d 100644 --- a/docs/dc/dbd/structshaka_1_1media_1_1FileCloser-members.html +++ b/docs/dc/dbd/structshaka_1_1media_1_1FileCloser-members.html @@ -97,7 +97,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/dbf/box__buffer_8h_source.html b/docs/dc/dbf/box__buffer_8h_source.html index 041ed48eaa..ec6cba0ad1 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/dc1/classshaka_1_1xml_1_1RepresentationXmlNode-members.html b/docs/dc/dc1/classshaka_1_1xml_1_1RepresentationXmlNode-members.html index 81a4eb8d5c..9cdc172a75 100644 --- a/docs/dc/dc1/classshaka_1_1xml_1_1RepresentationXmlNode-members.html +++ b/docs/dc/dc1/classshaka_1_1xml_1_1RepresentationXmlNode-members.html @@ -117,7 +117,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/dca/classshaka_1_1media_1_1WebMListParser.html b/docs/dc/dca/classshaka_1_1media_1_1WebMListParser.html index 41829560c2..431d0f2970 100644 --- a/docs/dc/dca/classshaka_1_1media_1_1WebMListParser.html +++ b/docs/dc/dca/classshaka_1_1media_1_1WebMListParser.html @@ -210,7 +210,7 @@ void  diff --git a/docs/dc/dd9/rsa__key_8cc_source.html b/docs/dc/dd9/rsa__key_8cc_source.html index fad9502cd6..a71556092c 100644 --- a/docs/dc/dd9/rsa__key_8cc_source.html +++ b/docs/dc/dd9/rsa__key_8cc_source.html @@ -340,7 +340,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/ddf/structshaka_1_1media_1_1mp4_1_1Media.html b/docs/dc/ddf/structshaka_1_1media_1_1mp4_1_1Media.html index ba53be3945..ec5c222225 100644 --- a/docs/dc/ddf/structshaka_1_1media_1_1mp4_1_1Media.html +++ b/docs/dc/ddf/structshaka_1_1media_1_1mp4_1_1Media.html @@ -179,7 +179,7 @@ Additional Inherited Members diff --git a/docs/dc/ddf/udp__file__posix_8cc_source.html b/docs/dc/ddf/udp__file__posix_8cc_source.html index 5f4aacdcc0..f6b4c83c92 100644 --- a/docs/dc/ddf/udp__file__posix_8cc_source.html +++ b/docs/dc/ddf/udp__file__posix_8cc_source.html @@ -302,7 +302,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/de1/structshaka_1_1SegmentInfo.html b/docs/dc/de1/structshaka_1_1SegmentInfo.html index e743429e3b..abb883c958 100644 --- a/docs/dc/de1/structshaka_1_1SegmentInfo.html +++ b/docs/dc/de1/structshaka_1_1SegmentInfo.html @@ -118,7 +118,7 @@ uint64_t repeat diff --git a/docs/dc/deb/classshaka_1_1media_1_1mp4_1_1Fragmenter-members.html b/docs/dc/deb/classshaka_1_1media_1_1mp4_1_1Fragmenter-members.html index 34e3a0630f..de4080f152 100644 --- a/docs/dc/deb/classshaka_1_1media_1_1mp4_1_1Fragmenter-members.html +++ b/docs/dc/deb/classshaka_1_1media_1_1mp4_1_1Fragmenter-members.html @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/deb/h265__byte__to__unit__stream__converter_8h_source.html b/docs/dc/deb/h265__byte__to__unit__stream__converter_8h_source.html index d70d652eba..e553ad638c 100644 --- a/docs/dc/deb/h265__byte__to__unit__stream__converter_8h_source.html +++ b/docs/dc/deb/h265__byte__to__unit__stream__converter_8h_source.html @@ -135,7 +135,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/dec/ts__section__pmt_8cc_source.html b/docs/dc/dec/ts__section__pmt_8cc_source.html index 481a86d50e..cc8c710c9b 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/df0/classshaka_1_1media_1_1ClosureThread.html b/docs/dc/df0/classshaka_1_1media_1_1ClosureThread.html index f790bb70df..55b282b6b5 100644 --- a/docs/dc/df0/classshaka_1_1media_1_1ClosureThread.html +++ b/docs/dc/df0/classshaka_1_1media_1_1ClosureThread.html @@ -179,7 +179,7 @@ void  diff --git a/docs/dc/df2/classshaka_1_1media_1_1WebVttMediaParser.html b/docs/dc/df2/classshaka_1_1media_1_1WebVttMediaParser.html index 4765892770..ace7a57ece 100644 --- a/docs/dc/df2/classshaka_1_1media_1_1WebVttMediaParser.html +++ b/docs/dc/df2/classshaka_1_1media_1_1WebVttMediaParser.html @@ -256,7 +256,7 @@ track_id, const scoped_refptr
    diff --git a/docs/dc/df3/classshaka_1_1media_1_1mp4_1_1EncryptingFragmenter.html b/docs/dc/df3/classshaka_1_1media_1_1mp4_1_1EncryptingFragmenter.html index bf8a48dd67..8821f70c19 100644 --- a/docs/dc/df3/classshaka_1_1media_1_1mp4_1_1EncryptingFragmenter.html +++ b/docs/dc/df3/classshaka_1_1media_1_1mp4_1_1EncryptingFragmenter.html @@ -405,7 +405,7 @@ void set_encryption_key diff --git a/docs/dc/df4/classshaka_1_1media_1_1webm_1_1SingleSegmentSegmenter-members.html b/docs/dc/df4/classshaka_1_1media_1_1webm_1_1SingleSegmentSegmenter-members.html index f68bb52336..d4e9923ce9 100644 --- a/docs/dc/df4/classshaka_1_1media_1_1webm_1_1SingleSegmentSegmenter-members.html +++ b/docs/dc/df4/classshaka_1_1media_1_1webm_1_1SingleSegmentSegmenter-members.html @@ -107,7 +107,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); GetInitRangeStartAndEnd(uint64_t *start, uint64_t *end) overrideshaka::media::webm::SingleSegmentSegmentervirtual info() (defined in shaka::media::webm::Segmenter)shaka::media::webm::Segmenterinlineprotected init_end() (defined in shaka::media::webm::SingleSegmentSegmenter)shaka::media::webm::SingleSegmentSegmenterinlineprotected - Initialize(std::unique_ptr< MkvWriter > writer, StreamInfo *info, ProgressListener *progress_listener, MuxerListener *muxer_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds)shaka::media::webm::Segmenter + Initialize(std::unique_ptr< MkvWriter > writer, StreamInfo *info, ProgressListener *progress_listener, MuxerListener *muxer_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds)shaka::media::webm::Segmenter muxer_listener() (defined in shaka::media::webm::Segmenter)shaka::media::webm::Segmenterinlineprotected options() const (defined in shaka::media::webm::Segmenter)shaka::media::webm::Segmenterinlineprotected seek_head() (defined in shaka::media::webm::Segmenter)shaka::media::webm::Segmenterinlineprotected @@ -129,7 +129,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/df7/structshaka_1_1media_1_1mp4_1_1TrackFragmentRun-members.html b/docs/dc/df7/structshaka_1_1media_1_1mp4_1_1TrackFragmentRun-members.html index f119054c71..39c268ffa1 100644 --- a/docs/dc/df7/structshaka_1_1media_1_1mp4_1_1TrackFragmentRun-members.html +++ b/docs/dc/df7/structshaka_1_1media_1_1mp4_1_1TrackFragmentRun-members.html @@ -125,7 +125,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/df8/closure__thread_8h_source.html b/docs/dc/df8/closure__thread_8h_source.html index 997c535de1..fd3d6a18cf 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/dd/d06/structshaka_1_1media_1_1mp4_1_1ChunkOffset.html b/docs/dd/d06/structshaka_1_1media_1_1mp4_1_1ChunkOffset.html index b2e29ca81d..ae83460ebf 100644 --- a/docs/dd/d06/structshaka_1_1media_1_1mp4_1_1ChunkOffset.html +++ b/docs/dd/d06/structshaka_1_1media_1_1mp4_1_1ChunkOffset.html @@ -180,7 +180,7 @@ uint32_t flags diff --git a/docs/dd/d11/mpd__builder_8cc_source.html b/docs/dd/d11/mpd__builder_8cc_source.html index c92e98f508..59824e9fda 100644 --- a/docs/dd/d11/mpd__builder_8cc_source.html +++ b/docs/dd/d11/mpd__builder_8cc_source.html @@ -1508,7 +1508,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 89d8e44434..0ed2248224 100644 --- a/docs/dd/d12/mpd__writer_8cc_source.html +++ b/docs/dd/d12/mpd__writer_8cc_source.html @@ -221,7 +221,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d13/structshaka_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize.html b/docs/dd/d13/structshaka_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize.html index 9237d132e2..fa3fed8624 100644 --- a/docs/dd/d13/structshaka_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize.html +++ b/docs/dd/d13/structshaka_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize.html @@ -188,7 +188,7 @@ Additional Inherited Members diff --git a/docs/dd/d17/classshaka_1_1media_1_1Demuxer.html b/docs/dd/d17/classshaka_1_1media_1_1Demuxer.html index d79bbf7436..fab144006f 100644 --- a/docs/dd/d17/classshaka_1_1media_1_1Demuxer.html +++ b/docs/dd/d17/classshaka_1_1media_1_1Demuxer.html @@ -296,7 +296,7 @@ Public Member Functions diff --git a/docs/dd/d18/es__parser__adts_8h_source.html b/docs/dd/d18/es__parser__adts_8h_source.html index f0a8bea5a6..47ad057be3 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 b3b1d3473f..79795da180 100644 --- a/docs/dd/d19/video__stream__info_8cc_source.html +++ b/docs/dd/d19/video__stream__info_8cc_source.html @@ -179,7 +179,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d30/wvm__media__parser_8cc_source.html b/docs/dd/d30/wvm__media__parser_8cc_source.html index 6a8414e871..bc1749559f 100644 --- a/docs/dd/d30/wvm__media__parser_8cc_source.html +++ b/docs/dd/d30/wvm__media__parser_8cc_source.html @@ -1265,7 +1265,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 7efee64f67..4855beb871 100644 --- a/docs/dd/d3b/mp4_2segmenter_8h_source.html +++ b/docs/dd/d3b/mp4_2segmenter_8h_source.html @@ -128,99 +128,101 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
    45  std::unique_ptr<Movie> moov);
    46  virtual ~Segmenter();
    47 
    -
    65  Status Initialize(const std::vector<MediaStream*>& streams,
    -
    66  MuxerListener* muxer_listener,
    -
    67  ProgressListener* progress_listener,
    -
    68  KeySource* encryption_key_source,
    -
    69  uint32_t max_sd_pixels,
    -
    70  double clear_lead_in_seconds,
    -
    71  double crypto_period_duration_in_seconds,
    -
    72  FourCC protection_scheme);
    -
    73 
    -
    76  Status Finalize();
    -
    77 
    -
    83  Status AddSample(const MediaStream* stream,
    -
    84  scoped_refptr<MediaSample> sample);
    -
    85 
    -
    88  virtual bool GetInitRange(size_t* offset, size_t* size) = 0;
    -
    89 
    -
    92  virtual bool GetIndexRange(size_t* offset, size_t* size) = 0;
    -
    93 
    -
    94  uint32_t GetReferenceTimeScale() const;
    +
    73  Status Initialize(const std::vector<MediaStream*>& streams,
    +
    74  MuxerListener* muxer_listener,
    +
    75  ProgressListener* progress_listener,
    +
    76  KeySource* encryption_key_source,
    +
    77  uint32_t max_sd_pixels,
    +
    78  uint32_t max_hd_pixels,
    +
    79  uint32_t max_uhd1_pixels,
    +
    80  double clear_lead_in_seconds,
    +
    81  double crypto_period_duration_in_seconds,
    +
    82  FourCC protection_scheme);
    +
    83 
    +
    86  Status Finalize();
    +
    87 
    +
    93  Status AddSample(const MediaStream* stream,
    +
    94  scoped_refptr<MediaSample> sample);
    95 
    -
    97  double GetDuration() const;
    -
    98 
    -
    101  uint32_t sample_duration() const { return sample_duration_; }
    -
    102 
    -
    103  protected:
    -
    105  void UpdateProgress(uint64_t progress);
    -
    107  void SetComplete();
    +
    98  virtual bool GetInitRange(size_t* offset, size_t* size) = 0;
    +
    99 
    +
    102  virtual bool GetIndexRange(size_t* offset, size_t* size) = 0;
    +
    103 
    +
    104  uint32_t GetReferenceTimeScale() const;
    +
    105 
    +
    107  double GetDuration() const;
    108 
    -
    109  const MuxerOptions& options() const { return options_; }
    -
    110  FileType* ftyp() { return ftyp_.get(); }
    -
    111  Movie* moov() { return moov_.get(); }
    -
    112  BufferWriter* fragment_buffer() { return fragment_buffer_.get(); }
    -
    113  SegmentIndex* sidx() { return sidx_.get(); }
    -
    114  MuxerListener* muxer_listener() { return muxer_listener_; }
    -
    115  uint64_t progress_target() { return progress_target_; }
    -
    116 
    -
    117  void set_progress_target(uint64_t progress_target) {
    -
    118  progress_target_ = progress_target;
    -
    119  }
    -
    120 
    -
    121  private:
    -
    122  virtual Status DoInitialize() = 0;
    -
    123  virtual Status DoFinalize() = 0;
    -
    124  virtual Status DoFinalizeSegment() = 0;
    -
    125 
    -
    126  Status FinalizeSegment();
    -
    127  uint32_t GetReferenceStreamId();
    -
    128 
    -
    129  Status FinalizeFragment(bool finalize_segment, Fragmenter* fragment);
    +
    111  uint32_t sample_duration() const { return sample_duration_; }
    +
    112 
    +
    113  protected:
    +
    115  void UpdateProgress(uint64_t progress);
    +
    117  void SetComplete();
    +
    118 
    +
    119  const MuxerOptions& options() const { return options_; }
    +
    120  FileType* ftyp() { return ftyp_.get(); }
    +
    121  Movie* moov() { return moov_.get(); }
    +
    122  BufferWriter* fragment_buffer() { return fragment_buffer_.get(); }
    +
    123  SegmentIndex* sidx() { return sidx_.get(); }
    +
    124  MuxerListener* muxer_listener() { return muxer_listener_; }
    +
    125  uint64_t progress_target() { return progress_target_; }
    +
    126 
    +
    127  void set_progress_target(uint64_t progress_target) {
    +
    128  progress_target_ = progress_target;
    +
    129  }
    130 
    -
    131  const MuxerOptions& options_;
    -
    132  std::unique_ptr<FileType> ftyp_;
    -
    133  std::unique_ptr<Movie> moov_;
    -
    134  std::unique_ptr<MovieFragment> moof_;
    -
    135  std::unique_ptr<BufferWriter> fragment_buffer_;
    -
    136  std::unique_ptr<SegmentIndex> sidx_;
    -
    137  std::vector<std::unique_ptr<Fragmenter>> fragmenters_;
    -
    138  std::vector<uint64_t> segment_durations_;
    -
    139  std::map<const MediaStream*, uint32_t> stream_map_;
    -
    140  MuxerListener* muxer_listener_;
    -
    141  ProgressListener* progress_listener_;
    -
    142  uint64_t progress_target_;
    -
    143  uint64_t accumulated_progress_;
    -
    144  uint32_t sample_duration_;
    -
    145 
    -
    146  DISALLOW_COPY_AND_ASSIGN(Segmenter);
    -
    147 };
    -
    148 
    -
    149 } // namespace mp4
    -
    150 } // namespace media
    -
    151 } // namespace shaka
    -
    152 
    -
    153 #endif // MEDIA_FORMATS_MP4_SEGMENTER_H_
    -
    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, FourCC protection_scheme)
    Definition: segmenter.cc:165
    -
    void UpdateProgress(uint64_t progress)
    Update segmentation progress using ProgressListener.
    Definition: segmenter.cc:387
    -
    void SetComplete()
    Set progress to 100%.
    Definition: segmenter.cc:403
    +
    131  private:
    +
    132  virtual Status DoInitialize() = 0;
    +
    133  virtual Status DoFinalize() = 0;
    +
    134  virtual Status DoFinalizeSegment() = 0;
    +
    135 
    +
    136  Status FinalizeSegment();
    +
    137  uint32_t GetReferenceStreamId();
    +
    138 
    +
    139  Status FinalizeFragment(bool finalize_segment, Fragmenter* fragment);
    +
    140 
    +
    141  const MuxerOptions& options_;
    +
    142  std::unique_ptr<FileType> ftyp_;
    +
    143  std::unique_ptr<Movie> moov_;
    +
    144  std::unique_ptr<MovieFragment> moof_;
    +
    145  std::unique_ptr<BufferWriter> fragment_buffer_;
    +
    146  std::unique_ptr<SegmentIndex> sidx_;
    +
    147  std::vector<std::unique_ptr<Fragmenter>> fragmenters_;
    +
    148  std::vector<uint64_t> segment_durations_;
    +
    149  std::map<const MediaStream*, uint32_t> stream_map_;
    +
    150  MuxerListener* muxer_listener_;
    +
    151  ProgressListener* progress_listener_;
    +
    152  uint64_t progress_target_;
    +
    153  uint64_t accumulated_progress_;
    +
    154  uint32_t sample_duration_;
    +
    155 
    +
    156  DISALLOW_COPY_AND_ASSIGN(Segmenter);
    +
    157 };
    +
    158 
    +
    159 } // namespace mp4
    +
    160 } // namespace media
    +
    161 } // namespace shaka
    +
    162 
    +
    163 #endif // MEDIA_FORMATS_MP4_SEGMENTER_H_
    +
    void UpdateProgress(uint64_t progress)
    Update segmentation progress using ProgressListener.
    Definition: segmenter.cc:390
    +
    void SetComplete()
    Set progress to 100%.
    Definition: segmenter.cc:406
    virtual bool GetInitRange(size_t *offset, size_t *size)=0
    This structure contains the list of configuration options for Muxer.
    Definition: muxer_options.h:18
    -
    uint32_t sample_duration() const
    Definition: segmenter.h:101
    -
    Status AddSample(const MediaStream *stream, scoped_refptr< MediaSample > sample)
    Definition: segmenter.cc:320
    +
    uint32_t sample_duration() const
    Definition: segmenter.h:111
    +
    Status AddSample(const MediaStream *stream, scoped_refptr< MediaSample > sample)
    Definition: segmenter.cc:323
    This class listens to progress updates events.
    +
    Status Initialize(const std::vector< MediaStream * > &streams, MuxerListener *muxer_listener, ProgressListener *progress_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)
    Definition: segmenter.cc:165
    - +
    KeySource is responsible for encryption key acquisition.
    Definition: key_source.h:30
    -
    double GetDuration() const
    Definition: segmenter.cc:378
    +
    double GetDuration() const
    Definition: segmenter.cc:381
    virtual bool GetIndexRange(size_t *offset, size_t *size)=0
    diff --git a/docs/dd/d3f/structshaka_1_1media_1_1mp4_1_1SyncSample.html b/docs/dd/d3f/structshaka_1_1media_1_1mp4_1_1SyncSample.html index 1f12dbbe1a..0955ef6bd0 100644 --- a/docs/dd/d3f/structshaka_1_1media_1_1mp4_1_1SyncSample.html +++ b/docs/dd/d3f/structshaka_1_1media_1_1mp4_1_1SyncSample.html @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/dd/d42/encryptor_8h_source.html b/docs/dd/d42/encryptor_8h_source.html index 8ef21aae2c..c060daf9d0 100644 --- a/docs/dd/d42/encryptor_8h_source.html +++ b/docs/dd/d42/encryptor_8h_source.html @@ -161,7 +161,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 3e629d5de2..ba40f7cfd4 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/d4d/structshaka_1_1media_1_1mp4_1_1MovieFragment-members.html b/docs/dd/d4d/structshaka_1_1media_1_1mp4_1_1MovieFragment-members.html index 0c1fc32cd4..1d2594fc9b 100644 --- a/docs/dd/d4d/structshaka_1_1media_1_1mp4_1_1MovieFragment-members.html +++ b/docs/dd/d4d/structshaka_1_1media_1_1mp4_1_1MovieFragment-members.html @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d53/structshaka_1_1media_1_1wvm_1_1DemuxStreamIdMediaSample-members.html b/docs/dd/d53/structshaka_1_1media_1_1wvm_1_1DemuxStreamIdMediaSample-members.html index 6062ef6626..be9dd86dae 100644 --- a/docs/dd/d53/structshaka_1_1media_1_1wvm_1_1DemuxStreamIdMediaSample-members.html +++ b/docs/dd/d53/structshaka_1_1media_1_1wvm_1_1DemuxStreamIdMediaSample-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d54/widevine__encryption__flags_8h_source.html b/docs/dd/d54/widevine__encryption__flags_8h_source.html index c76550dc33..3d077a8f9b 100644 --- a/docs/dd/d54/widevine__encryption__flags_8h_source.html +++ b/docs/dd/d54/widevine__encryption__flags_8h_source.html @@ -107,25 +107,27 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
    18 DECLARE_string(content_id);
    19 DECLARE_string(policy);
    20 DECLARE_int32(max_sd_pixels);
    -
    21 DECLARE_string(signer);
    -
    22 DECLARE_string(aes_signing_key);
    -
    23 DECLARE_string(aes_signing_iv);
    -
    24 DECLARE_string(rsa_signing_key_path);
    -
    25 DECLARE_int32(crypto_period_duration);
    -
    26 DECLARE_string(protection_scheme);
    -
    27 
    -
    28 namespace shaka {
    +
    21 DECLARE_int32(max_hd_pixels);
    +
    22 DECLARE_int32(max_uhd1_pixels);
    +
    23 DECLARE_string(signer);
    +
    24 DECLARE_string(aes_signing_key);
    +
    25 DECLARE_string(aes_signing_iv);
    +
    26 DECLARE_string(rsa_signing_key_path);
    +
    27 DECLARE_int32(crypto_period_duration);
    +
    28 DECLARE_string(protection_scheme);
    29 
    - -
    33 
    -
    34 } // namespace shaka
    +
    30 namespace shaka {
    +
    31 
    +
    35 
    -
    36 #endif // APP_WIDEVINE_ENCRYPTION_FLAGS_H_
    -
    bool ValidateWidevineCryptoFlags()
    +
    36 } // namespace shaka
    +
    37 
    +
    38 #endif // APP_WIDEVINE_ENCRYPTION_FLAGS_H_
    +
    bool ValidateWidevineCryptoFlags()
    diff --git a/docs/dd/d59/classshaka_1_1media_1_1mp2t_1_1EsParserH265-members.html b/docs/dd/d59/classshaka_1_1media_1_1mp2t_1_1EsParserH265-members.html index 8932eaf1b4..91c491adae 100644 --- a/docs/dd/d59/classshaka_1_1media_1_1mp2t_1_1EsParserH265-members.html +++ b/docs/dd/d59/classshaka_1_1media_1_1mp2t_1_1EsParserH265-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d59/structshaka_1_1media_1_1mp4_1_1SchemeInfo-members.html b/docs/dd/d59/structshaka_1_1media_1_1mp4_1_1SchemeInfo-members.html index 3424d333b9..827751e0d2 100644 --- a/docs/dd/d59/structshaka_1_1media_1_1mp4_1_1SchemeInfo-members.html +++ b/docs/dd/d59/structshaka_1_1media_1_1mp4_1_1SchemeInfo-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d64/structshaka_1_1media_1_1mp4_1_1SyncSample-members.html b/docs/dd/d64/structshaka_1_1media_1_1mp4_1_1SyncSample-members.html index 80e1321f36..bab738626c 100644 --- a/docs/dd/d64/structshaka_1_1media_1_1mp4_1_1SyncSample-members.html +++ b/docs/dd/d64/structshaka_1_1media_1_1mp4_1_1SyncSample-members.html @@ -113,7 +113,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 3e00258735..4b4f1105bf 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 960668b6d2..4ecb22442e 100644 --- a/docs/dd/d67/h264__byte__to__unit__stream__converter_8cc_source.html +++ b/docs/dd/d67/h264__byte__to__unit__stream__converter_8cc_source.html @@ -177,7 +177,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d6e/classshaka_1_1media_1_1H265VideoSliceHeaderParser-members.html b/docs/dd/d6e/classshaka_1_1media_1_1H265VideoSliceHeaderParser-members.html index 9e8f3dc77c..b4ac93b6c6 100644 --- a/docs/dd/d6e/classshaka_1_1media_1_1H265VideoSliceHeaderParser-members.html +++ b/docs/dd/d6e/classshaka_1_1media_1_1H265VideoSliceHeaderParser-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d71/structshaka_1_1media_1_1mp4_1_1PixelAspectRatio.html b/docs/dd/d71/structshaka_1_1media_1_1mp4_1_1PixelAspectRatio.html index ef464e743c..2b24bcda78 100644 --- a/docs/dd/d71/structshaka_1_1media_1_1mp4_1_1PixelAspectRatio.html +++ b/docs/dd/d71/structshaka_1_1media_1_1mp4_1_1PixelAspectRatio.html @@ -176,7 +176,7 @@ Additional Inherited Members diff --git a/docs/dd/d7a/classshaka_1_1media_1_1MuxerListener.html b/docs/dd/d7a/classshaka_1_1media_1_1MuxerListener.html index 20531a5df6..c94d7768af 100644 --- a/docs/dd/d7a/classshaka_1_1media_1_1MuxerListener.html +++ b/docs/dd/d7a/classshaka_1_1media_1_1MuxerListener.html @@ -469,7 +469,7 @@ Public Member Functions diff --git a/docs/dd/d7c/classshaka_1_1media_1_1IoCache.html b/docs/dd/d7c/classshaka_1_1media_1_1IoCache.html index 2bf4e118ab..9a8f1c0f86 100644 --- a/docs/dd/d7c/classshaka_1_1media_1_1IoCache.html +++ b/docs/dd/d7c/classshaka_1_1media_1_1IoCache.html @@ -297,7 +297,7 @@ void  diff --git a/docs/dd/d80/media__sample_8h_source.html b/docs/dd/d80/media__sample_8h_source.html index c44d32a88c..6298fd007d 100644 --- a/docs/dd/d80/media__sample_8h_source.html +++ b/docs/dd/d80/media__sample_8h_source.html @@ -272,7 +272,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 8da1c352f3..09f61ed8aa 100644 --- a/docs/dd/d87/memory__file_8cc_source.html +++ b/docs/dd/d87/memory__file_8cc_source.html @@ -242,7 +242,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d88/pes__packet__generator_8h_source.html b/docs/dd/d88/pes__packet__generator_8h_source.html index 45533be5ea..2888fc1192 100644 --- a/docs/dd/d88/pes__packet__generator_8h_source.html +++ b/docs/dd/d88/pes__packet__generator_8h_source.html @@ -172,7 +172,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 133e409220..20ba08c74f 100644 --- a/docs/dd/d8c/file__test__util_8h_source.html +++ b/docs/dd/d8c/file__test__util_8h_source.html @@ -130,7 +130,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d8d/structshaka_1_1media_1_1mp4_1_1SegmentIndex-members.html b/docs/dd/d8d/structshaka_1_1media_1_1mp4_1_1SegmentIndex-members.html index e2df7b4eaa..73ad93da33 100644 --- a/docs/dd/d8d/structshaka_1_1media_1_1mp4_1_1SegmentIndex-members.html +++ b/docs/dd/d8d/structshaka_1_1media_1_1mp4_1_1SegmentIndex-members.html @@ -117,7 +117,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d98/ts__packet__writer__util_8h_source.html b/docs/dd/d98/ts__packet__writer__util_8h_source.html index 154b77174e..eae7a1012d 100644 --- a/docs/dd/d98/ts__packet__writer__util_8h_source.html +++ b/docs/dd/d98/ts__packet__writer__util_8h_source.html @@ -127,7 +127,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d9a/audio__timestamp__helper_8h_source.html b/docs/dd/d9a/audio__timestamp__helper_8h_source.html index 4ec1c6adff..bed1c3dbdc 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/d9b/structshaka_1_1media_1_1mp4_1_1SegmentReference.html b/docs/dd/d9b/structshaka_1_1media_1_1mp4_1_1SegmentReference.html index 0a8f3df30b..46ef7d68b7 100644 --- a/docs/dd/d9b/structshaka_1_1media_1_1mp4_1_1SegmentReference.html +++ b/docs/dd/d9b/structshaka_1_1media_1_1mp4_1_1SegmentReference.html @@ -143,7 +143,7 @@ uint64_t earliest_presenta diff --git a/docs/dd/d9d/classshaka_1_1MpdNotifier-members.html b/docs/dd/d9d/classshaka_1_1MpdNotifier-members.html index f6b697d4ee..9a107ec6e8 100644 --- a/docs/dd/d9d/classshaka_1_1MpdNotifier-members.html +++ b/docs/dd/d9d/classshaka_1_1MpdNotifier-members.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/da4/structshaka_1_1xml_1_1XmlDeleter.html b/docs/dd/da4/structshaka_1_1xml_1_1XmlDeleter.html index 718f9f28d5..44a78635a8 100644 --- a/docs/dd/da4/structshaka_1_1xml_1_1XmlDeleter.html +++ b/docs/dd/da4/structshaka_1_1xml_1_1XmlDeleter.html @@ -127,7 +127,7 @@ void operator() (xmlCh diff --git a/docs/dd/da5/classshaka_1_1media_1_1webm_1_1TwoPassSingleSegmentSegmenter.html b/docs/dd/da5/classshaka_1_1media_1_1webm_1_1TwoPassSingleSegmentSegmenter.html index 2bd1241a14..e181fe7000 100644 --- a/docs/dd/da5/classshaka_1_1media_1_1webm_1_1TwoPassSingleSegmentSegmenter.html +++ b/docs/dd/da5/classshaka_1_1media_1_1webm_1_1TwoPassSingleSegmentSegmenter.html @@ -129,8 +129,8 @@ Public Member Functions  Segmenter (const MuxerOptions &options)   -Status Initialize (std::unique_ptr< MkvWriter > writer, StreamInfo *info, ProgressListener *progress_listener, MuxerListener *muxer_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds) -  +Status Initialize (std::unique_ptr< MkvWriter > writer, StreamInfo *info, ProgressListener *progress_listener, MuxerListener *muxer_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds) +  Status Finalize ()   Status AddSample (scoped_refptr< MediaSample > sample) @@ -220,7 +220,7 @@ uint64_t cluster_length_in 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 2b53740337..f86703acf1 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 @@ -180,7 +180,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/dab/webm__muxer_8h_source.html b/docs/dd/dab/webm__muxer_8h_source.html index 15946834aa..276557f226 100644 --- a/docs/dd/dab/webm__muxer_8h_source.html +++ b/docs/dd/dab/webm__muxer_8h_source.html @@ -138,7 +138,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/dae/structshaka_1_1media_1_1mp4_1_1WebVTTSourceLabelBox-members.html b/docs/dd/dae/structshaka_1_1media_1_1mp4_1_1WebVTTSourceLabelBox-members.html index b4663f8ed9..2cc25b212d 100644 --- a/docs/dd/dae/structshaka_1_1media_1_1mp4_1_1WebVTTSourceLabelBox-members.html +++ b/docs/dd/dae/structshaka_1_1media_1_1mp4_1_1WebVTTSourceLabelBox-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/db0/classshaka_1_1media_1_1WebMAudioClient-members.html b/docs/dd/db0/classshaka_1_1media_1_1WebMAudioClient-members.html index e0984b7a3e..c40b4354a7 100644 --- a/docs/dd/db0/classshaka_1_1media_1_1WebMAudioClient-members.html +++ b/docs/dd/db0/classshaka_1_1media_1_1WebMAudioClient-members.html @@ -107,7 +107,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/db3/structshaka_1_1media_1_1mp4_1_1SampleTable-members.html b/docs/dd/db3/structshaka_1_1media_1_1mp4_1_1SampleTable-members.html index 7dea54b116..1a19142720 100644 --- a/docs/dd/db3/structshaka_1_1media_1_1mp4_1_1SampleTable-members.html +++ b/docs/dd/db3/structshaka_1_1media_1_1mp4_1_1SampleTable-members.html @@ -117,7 +117,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/db9/classshaka_1_1xml_1_1RepresentationBaseXmlNode.html b/docs/dd/db9/classshaka_1_1xml_1_1RepresentationBaseXmlNode.html index d5ab03898f..50cb7a6982 100644 --- a/docs/dd/db9/classshaka_1_1xml_1_1RepresentationBaseXmlNode.html +++ b/docs/dd/db9/classshaka_1_1xml_1_1RepresentationBaseXmlNode.html @@ -156,7 +156,7 @@ Protected Member Functions diff --git a/docs/dd/dbc/buffer__reader_8cc_source.html b/docs/dd/dbc/buffer__reader_8cc_source.html index 8a45a72d8d..a4a392e9aa 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/structshaka_1_1media_1_1EncryptionKey.html b/docs/dd/dbd/structshaka_1_1media_1_1EncryptionKey.html index d39c05b482..15e2b7005d 100644 --- a/docs/dd/dbd/structshaka_1_1media_1_1EncryptionKey.html +++ b/docs/dd/dbd/structshaka_1_1media_1_1EncryptionKey.html @@ -120,7 +120,7 @@ std::vector< uint8_t >  diff --git a/docs/dd/dbd/structshaka_1_1media_1_1mp4_1_1TrackEncryption-members.html b/docs/dd/dbd/structshaka_1_1media_1_1mp4_1_1TrackEncryption-members.html index 372011d0a3..e169a2dd58 100644 --- a/docs/dd/dbd/structshaka_1_1media_1_1mp4_1_1TrackEncryption-members.html +++ b/docs/dd/dbd/structshaka_1_1media_1_1mp4_1_1TrackEncryption-members.html @@ -118,7 +118,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 53d53198ce..3ad7a9057f 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/dc1/structshaka_1_1media_1_1mp4_1_1FullBox.html b/docs/dd/dc1/structshaka_1_1media_1_1mp4_1_1FullBox.html index caa2a36603..4b62567ff6 100644 --- a/docs/dd/dc1/structshaka_1_1media_1_1mp4_1_1FullBox.html +++ b/docs/dd/dc1/structshaka_1_1media_1_1mp4_1_1FullBox.html @@ -245,7 +245,7 @@ Protected Member Functions diff --git a/docs/dd/dc4/classshaka_1_1media_1_1ProducerConsumerQueue-members.html b/docs/dd/dc4/classshaka_1_1media_1_1ProducerConsumerQueue-members.html index 8daf29ef44..bfee5249eb 100644 --- a/docs/dd/dc4/classshaka_1_1media_1_1ProducerConsumerQueue-members.html +++ b/docs/dd/dc4/classshaka_1_1media_1_1ProducerConsumerQueue-members.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/dc5/classshaka_1_1media_1_1webm_1_1Segmenter.html b/docs/dd/dc5/classshaka_1_1media_1_1webm_1_1Segmenter.html index 0d5de1e5fb..36a5b4aea4 100644 --- a/docs/dd/dc5/classshaka_1_1media_1_1webm_1_1Segmenter.html +++ b/docs/dd/dc5/classshaka_1_1media_1_1webm_1_1Segmenter.html @@ -111,8 +111,8 @@ Public Member Functions  Segmenter (const MuxerOptions &options)   -Status Initialize (std::unique_ptr< MkvWriter > writer, StreamInfo *info, ProgressListener *progress_listener, MuxerListener *muxer_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds) -  +Status Initialize (std::unique_ptr< MkvWriter > writer, StreamInfo *info, ProgressListener *progress_listener, MuxerListener *muxer_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds) +  Status Finalize ()   Status AddSample (scoped_refptr< MediaSample > sample) @@ -207,7 +207,7 @@ virtual Sta
    Returns
    OK on success, an error status otherwise.
    -

    Definition at line 120 of file segmenter.cc.

    +

    Definition at line 124 of file segmenter.cc.

    @@ -226,7 +226,7 @@ virtual Sta

    Finalize the segmenter.

    Returns
    OK on success, an error status otherwise.
    -

    Definition at line 109 of file segmenter.cc.

    +

    Definition at line 113 of file segmenter.cc.

    @@ -253,7 +253,7 @@ virtual Sta @@ -271,7 +271,7 @@ virtual Sta @@ -349,7 +349,7 @@ virtual Sta - +
    @@ -389,6 +389,18 @@ virtual Sta + + + + + + + + + + + + @@ -409,7 +421,9 @@ virtual Sta - + + +
    uint32_t  max_sd_pixels,
    uint32_t max_hd_pixels,
    uint32_t max_uhd1_pixels,
    infoThe stream info for the stream being segmented.
    muxer_listenerreceives muxer events. Can be NULL.
    encryption_key_sourcepoints to the key source which contains the encryption keys. It can be NULL to indicate that no encryption is required.
    max_sd_pixelsspecifies the threshold to determine whether a video track should be considered as SD or HD. If the track has more pixels per frame than max_sd_pixels, it is HD, SD otherwise.
    max_sd_pixelsspecifies the threshold to determine whether a video track should be considered as SD. If the max pixels per frame is no higher than max_sd_pixels, it is SD.
    max_hd_pixelsspecifies the threshold to determine whether a video track should be considered as HD. If the max pixels per frame is higher than max_sd_pixels, but no higher than max_hd_pixels, it is HD.
    max_uhd1_pixelsspecifies the threshold to determine whether a video track should be considered as UHD1. If the max pixels per frame is higher than max_hd_pixels, but no higher than max_uhd1_pixels, it is UHD1. Otherwise it is UHD2.
    clear_timespecifies clear lead duration in seconds.
    @@ -427,7 +441,7 @@ virtual Sta
    diff --git a/docs/dd/dca/structshaka_1_1media_1_1mp4_1_1OriginalFormat-members.html b/docs/dd/dca/structshaka_1_1media_1_1mp4_1_1OriginalFormat-members.html index 92f2d3ff7f..882b609559 100644 --- a/docs/dd/dca/structshaka_1_1media_1_1mp4_1_1OriginalFormat-members.html +++ b/docs/dd/dca/structshaka_1_1media_1_1mp4_1_1OriginalFormat-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
    diff --git a/docs/dd/dce/structshaka_1_1media_1_1Cue.html b/docs/dd/dce/structshaka_1_1media_1_1Cue.html index d83425a9ce..0704b1b63c 100644 --- a/docs/dd/dce/structshaka_1_1media_1_1Cue.html +++ b/docs/dd/dce/structshaka_1_1media_1_1Cue.html @@ -125,7 +125,7 @@ std::vector< std::string >  diff --git a/docs/dd/dd2/buffer__writer_8h_source.html b/docs/dd/dd2/buffer__writer_8h_source.html index 619902fe96..5dce369674 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 36b8ed86c9..3fc40924c3 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/dd6/classshaka_1_1media_1_1WebMVideoClient-members.html b/docs/dd/dd6/classshaka_1_1media_1_1WebMVideoClient-members.html index 4bf913f770..b47e3eb5ab 100644 --- a/docs/dd/dd6/classshaka_1_1media_1_1WebMVideoClient-members.html +++ b/docs/dd/dd6/classshaka_1_1media_1_1WebMVideoClient-members.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/dd8/mock__muxer__listener_8cc_source.html b/docs/dd/dd8/mock__muxer__listener_8cc_source.html index 1e5a7c1d17..08c95a990c 100644 --- a/docs/dd/dd8/mock__muxer__listener_8cc_source.html +++ b/docs/dd/dd8/mock__muxer__listener_8cc_source.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/dd9/structshaka_1_1media_1_1mp4_1_1Box-members.html b/docs/dd/dd9/structshaka_1_1media_1_1mp4_1_1Box-members.html index c7c6d26947..af52ed8f6e 100644 --- a/docs/dd/dd9/structshaka_1_1media_1_1mp4_1_1Box-members.html +++ b/docs/dd/dd9/structshaka_1_1media_1_1mp4_1_1Box-members.html @@ -107,7 +107,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/de4/classshaka_1_1media_1_1VideoSliceHeaderParser.html b/docs/dd/de4/classshaka_1_1media_1_1VideoSliceHeaderParser.html index a4f74aefc7..2f8c6b60ab 100644 --- a/docs/dd/de4/classshaka_1_1media_1_1VideoSliceHeaderParser.html +++ b/docs/dd/de4/classshaka_1_1media_1_1VideoSliceHeaderParser.html @@ -150,7 +150,7 @@ virtual int64_t  diff --git a/docs/dd/de7/structshaka_1_1media_1_1H265Pps-members.html b/docs/dd/de7/structshaka_1_1media_1_1H265Pps-members.html index 15d7645ceb..0464d7fb43 100644 --- a/docs/dd/de7/structshaka_1_1media_1_1H265Pps-members.html +++ b/docs/dd/de7/structshaka_1_1media_1_1H265Pps-members.html @@ -137,7 +137,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 f80c5e043e..324686f0cf 100644 --- a/docs/dd/de7/xml__node_8h_source.html +++ b/docs/dd/de7/xml__node_8h_source.html @@ -231,7 +231,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 e796ecfad8..e2a48bb7b6 100644 --- a/docs/dd/dee/box__definitions_8cc_source.html +++ b/docs/dd/dee/box__definitions_8cc_source.html @@ -2944,7 +2944,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); 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 5d3a0eb9f4..93d38b9dde 100644 --- a/docs/dd/df2/webm_2multi__segment__segmenter_8h_source.html +++ b/docs/dd/df2/webm_2multi__segment__segmenter_8h_source.html @@ -148,7 +148,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/df5/structshaka_1_1media_1_1mp4_1_1TrackFragmentRun.html b/docs/dd/df5/structshaka_1_1media_1_1mp4_1_1TrackFragmentRun.html index 6599d55cff..9ac7524c82 100644 --- a/docs/dd/df5/structshaka_1_1media_1_1mp4_1_1TrackFragmentRun.html +++ b/docs/dd/df5/structshaka_1_1media_1_1mp4_1_1TrackFragmentRun.html @@ -212,7 +212,7 @@ Additional Inherited Members diff --git a/docs/dd/df6/structshaka_1_1media_1_1mp4_1_1Metadata.html b/docs/dd/df6/structshaka_1_1media_1_1mp4_1_1Metadata.html index 3317098607..5e8ce55a44 100644 --- a/docs/dd/df6/structshaka_1_1media_1_1mp4_1_1Metadata.html +++ b/docs/dd/df6/structshaka_1_1media_1_1mp4_1_1Metadata.html @@ -185,7 +185,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 ed8d6c76f8..e90949cb90 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 09d8abd1b4..5d1b5da4ec 100644 --- a/docs/de/d12/container__names_8h_source.html +++ b/docs/de/d12/container__names_8h_source.html @@ -159,7 +159,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d13/ts__writer_8cc_source.html b/docs/de/d13/ts__writer_8cc_source.html index 43b2a9506f..31c96a82a1 100644 --- a/docs/de/d13/ts__writer_8cc_source.html +++ b/docs/de/d13/ts__writer_8cc_source.html @@ -361,7 +361,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 c19350379e..ed1c2c56a6 100644 --- a/docs/de/d15/media__stream_8cc_source.html +++ b/docs/de/d15/media__stream_8cc_source.html @@ -210,7 +210,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d16/classshaka_1_1media_1_1TextTrackConfig-members.html b/docs/de/d16/classshaka_1_1media_1_1TextTrackConfig-members.html index 37823e86d9..bd0bd9768a 100644 --- a/docs/de/d16/classshaka_1_1media_1_1TextTrackConfig-members.html +++ b/docs/de/d16/classshaka_1_1media_1_1TextTrackConfig-members.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d17/cluster__builder_8cc_source.html b/docs/de/d17/cluster__builder_8cc_source.html index cdb5a0d605..4cce99c53b 100644 --- a/docs/de/d17/cluster__builder_8cc_source.html +++ b/docs/de/d17/cluster__builder_8cc_source.html @@ -346,7 +346,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d1a/classshaka_1_1media_1_1wvm_1_1WvmMediaParser-members.html b/docs/de/d1a/classshaka_1_1media_1_1wvm_1_1WvmMediaParser-members.html index 39f6a14b1d..c6c5873503 100644 --- a/docs/de/d1a/classshaka_1_1media_1_1wvm_1_1WvmMediaParser-members.html +++ b/docs/de/d1a/classshaka_1_1media_1_1wvm_1_1WvmMediaParser-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); 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 a034bff95c..025f580dcf 100644 --- a/docs/de/d1e/mp4_2single__segment__segmenter_8cc_source.html +++ b/docs/de/d1e/mp4_2single__segment__segmenter_8cc_source.html @@ -304,12 +304,12 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
    bool TempFilePath(const std::string &temp_dir, std::string *temp_file_path)
    Definition: file_util.cc:27
    -
    void UpdateProgress(uint64_t progress)
    Update segmentation progress using ProgressListener.
    Definition: segmenter.cc:264
    +
    void UpdateProgress(uint64_t progress)
    Update segmentation progress using ProgressListener.
    Definition: segmenter.cc:268
    static bool Delete(const char *file_name)
    Definition: file.cc:163
    diff --git a/docs/de/d22/aes__pattern__cryptor_8cc_source.html b/docs/de/d22/aes__pattern__cryptor_8cc_source.html index c6620468de..039cffb7f4 100644 --- a/docs/de/d22/aes__pattern__cryptor_8cc_source.html +++ b/docs/de/d22/aes__pattern__cryptor_8cc_source.html @@ -185,7 +185,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d27/classshaka_1_1media_1_1mp2t_1_1H264ProgramMapTableWriter.html b/docs/de/d27/classshaka_1_1media_1_1mp2t_1_1H264ProgramMapTableWriter.html index cb5bf0acc5..f70fa78b75 100644 --- a/docs/de/d27/classshaka_1_1media_1_1mp2t_1_1H264ProgramMapTableWriter.html +++ b/docs/de/d27/classshaka_1_1media_1_1mp2t_1_1H264ProgramMapTableWriter.html @@ -140,7 +140,7 @@ static const uint8_t kElem diff --git a/docs/de/d29/structshaka_1_1media_1_1mp4_1_1TrackExtends.html b/docs/de/d29/structshaka_1_1media_1_1mp4_1_1TrackExtends.html index 0d028f3708..209dceb785 100644 --- a/docs/de/d29/structshaka_1_1media_1_1mp4_1_1TrackExtends.html +++ b/docs/de/d29/structshaka_1_1media_1_1mp4_1_1TrackExtends.html @@ -194,7 +194,7 @@ Additional Inherited Members diff --git a/docs/de/d33/classshaka_1_1media_1_1WebMTracksParser-members.html b/docs/de/d33/classshaka_1_1media_1_1WebMTracksParser-members.html index b4ae5e3380..e775ba54bf 100644 --- a/docs/de/d33/classshaka_1_1media_1_1WebMTracksParser-members.html +++ b/docs/de/d33/classshaka_1_1media_1_1WebMTracksParser-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d33/structshaka_1_1media_1_1H265Pps.html b/docs/de/d33/structshaka_1_1media_1_1H265Pps.html index 6ff4208bdd..3266a5955c 100644 --- a/docs/de/d33/structshaka_1_1media_1_1H265Pps.html +++ b/docs/de/d33/structshaka_1_1media_1_1H265Pps.html @@ -224,7 +224,7 @@ bool chroma_qp_offset_list diff --git a/docs/de/d34/offset__byte__queue_8h_source.html b/docs/de/d34/offset__byte__queue_8h_source.html index 533c813866..d4ecfcc7bc 100644 --- a/docs/de/d34/offset__byte__queue_8h_source.html +++ b/docs/de/d34/offset__byte__queue_8h_source.html @@ -143,7 +143,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d3c/h26x__byte__to__unit__stream__converter_8cc_source.html b/docs/de/d3c/h26x__byte__to__unit__stream__converter_8cc_source.html index 6d4b2802a5..8f391d4699 100644 --- a/docs/de/d3c/h26x__byte__to__unit__stream__converter_8cc_source.html +++ b/docs/de/d3c/h26x__byte__to__unit__stream__converter_8cc_source.html @@ -162,7 +162,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d3c/macros_8h_source.html b/docs/de/d3c/macros_8h_source.html index bf40aba9b2..c9c14b8134 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 ab4851c142..933d3d01c9 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/d3e/classshaka_1_1media_1_1H264Parser-members.html b/docs/de/d3e/classshaka_1_1media_1_1H264Parser-members.html index c26f57902b..e2502c83d6 100644 --- a/docs/de/d3e/classshaka_1_1media_1_1H264Parser-members.html +++ b/docs/de/d3e/classshaka_1_1media_1_1H264Parser-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d43/classshaka_1_1media_1_1mp2t_1_1PesPacket-members.html b/docs/de/d43/classshaka_1_1media_1_1mp2t_1_1PesPacket-members.html index 3c10b6c909..28da284ecd 100644 --- a/docs/de/d43/classshaka_1_1media_1_1mp2t_1_1PesPacket-members.html +++ b/docs/de/d43/classshaka_1_1media_1_1mp2t_1_1PesPacket-members.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d49/classshaka_1_1media_1_1DecryptConfig.html b/docs/de/d49/classshaka_1_1media_1_1DecryptConfig.html index 42e6bcf5a0..371c5ffb29 100644 --- a/docs/de/d49/classshaka_1_1media_1_1DecryptConfig.html +++ b/docs/de/d49/classshaka_1_1media_1_1DecryptConfig.html @@ -249,7 +249,7 @@ static const size_t  diff --git a/docs/de/d4a/muxer__listener__internal_8h_source.html b/docs/de/d4a/muxer__listener__internal_8h_source.html index 1f11043476..ee6a9e734d 100644 --- a/docs/de/d4a/muxer__listener__internal_8h_source.html +++ b/docs/de/d4a/muxer__listener__internal_8h_source.html @@ -145,7 +145,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d52/classshaka_1_1Representation.html b/docs/de/d52/classshaka_1_1Representation.html index d995230eb9..9e574855d4 100644 --- a/docs/de/d52/classshaka_1_1Representation.html +++ b/docs/de/d52/classshaka_1_1Representation.html @@ -456,7 +456,7 @@ template<MpdBuilder::MpdType type> diff --git a/docs/de/d55/structshaka_1_1media_1_1mp4_1_1Language-members.html b/docs/de/d55/structshaka_1_1media_1_1mp4_1_1Language-members.html index f420457114..8932a2d295 100644 --- a/docs/de/d55/structshaka_1_1media_1_1mp4_1_1Language-members.html +++ b/docs/de/d55/structshaka_1_1media_1_1mp4_1_1Language-members.html @@ -99,7 +99,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 e0b0a20322..5e7d2f14c0 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 d095a2c74f..db812c3cb5 100644 --- a/docs/de/d5c/mpd__flags_8h_source.html +++ b/docs/de/d5c/mpd__flags_8h_source.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d60/classshaka_1_1media_1_1mp2t_1_1ProgramMapTableWriter-members.html b/docs/de/d60/classshaka_1_1media_1_1mp2t_1_1ProgramMapTableWriter-members.html index eec120bd35..3b9f136b00 100644 --- a/docs/de/d60/classshaka_1_1media_1_1mp2t_1_1ProgramMapTableWriter-members.html +++ b/docs/de/d60/classshaka_1_1media_1_1mp2t_1_1ProgramMapTableWriter-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d64/classshaka_1_1media_1_1mp2t_1_1TsWriter.html b/docs/de/d64/classshaka_1_1media_1_1mp2t_1_1TsWriter.html index 0e6bb1c64d..b3d428d5e0 100644 --- a/docs/de/d64/classshaka_1_1media_1_1mp2t_1_1TsWriter.html +++ b/docs/de/d64/classshaka_1_1media_1_1mp2t_1_1TsWriter.html @@ -257,7 +257,7 @@ void  diff --git a/docs/de/d6c/structshaka_1_1media_1_1mp4_1_1SampleToGroupEntry-members.html b/docs/de/d6c/structshaka_1_1media_1_1mp4_1_1SampleToGroupEntry-members.html index d9455dadb4..0de8bbcd02 100644 --- a/docs/de/d6c/structshaka_1_1media_1_1mp4_1_1SampleToGroupEntry-members.html +++ b/docs/de/d6c/structshaka_1_1media_1_1mp4_1_1SampleToGroupEntry-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d6e/language__utils_8h_source.html b/docs/de/d6e/language__utils_8h_source.html index ae0725899f..c01d4d964f 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 215b45adfa..cf77b24e43 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/webm__content__encodings__client_8cc_source.html b/docs/de/d77/webm__content__encodings__client_8cc_source.html index fc1704977d..d965a62031 100644 --- a/docs/de/d77/webm__content__encodings__client_8cc_source.html +++ b/docs/de/d77/webm__content__encodings__client_8cc_source.html @@ -358,7 +358,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 f31e86a034..95ff9687a4 100644 --- a/docs/de/d7b/mp4__media__parser_8h_source.html +++ b/docs/de/d7b/mp4__media__parser_8h_source.html @@ -204,7 +204,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d7e/classshaka_1_1media_1_1mp2t_1_1TsSectionPsi.html b/docs/de/d7e/classshaka_1_1media_1_1mp2t_1_1TsSectionPsi.html index a116491b3a..19db555788 100644 --- a/docs/de/d7e/classshaka_1_1media_1_1mp2t_1_1TsSectionPsi.html +++ b/docs/de/d7e/classshaka_1_1media_1_1mp2t_1_1TsSectionPsi.html @@ -147,7 +147,7 @@ Additional Inherited Members diff --git a/docs/de/d83/box__definitions__comparison_8h_source.html b/docs/de/d83/box__definitions__comparison_8h_source.html index a648c04870..4958a60c8f 100644 --- a/docs/de/d83/box__definitions__comparison_8h_source.html +++ b/docs/de/d83/box__definitions__comparison_8h_source.html @@ -592,7 +592,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d83/classshaka_1_1media_1_1LocalFile-members.html b/docs/de/d83/classshaka_1_1media_1_1LocalFile-members.html index 0c5a12fc13..9d70623fbe 100644 --- a/docs/de/d83/classshaka_1_1media_1_1LocalFile-members.html +++ b/docs/de/d83/classshaka_1_1media_1_1LocalFile-members.html @@ -117,7 +117,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d87/structshaka_1_1media_1_1wvm_1_1PrevSampleData-members.html b/docs/de/d87/structshaka_1_1media_1_1wvm_1_1PrevSampleData-members.html index 3b0607e8bc..fbe3069a9f 100644 --- a/docs/de/d87/structshaka_1_1media_1_1wvm_1_1PrevSampleData-members.html +++ b/docs/de/d87/structshaka_1_1media_1_1wvm_1_1PrevSampleData-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d8d/structshaka_1_1media_1_1mp4_1_1MovieFragmentHeader-members.html b/docs/de/d8d/structshaka_1_1media_1_1mp4_1_1MovieFragmentHeader-members.html index 6812587f6d..a18a035fe9 100644 --- a/docs/de/d8d/structshaka_1_1media_1_1mp4_1_1MovieFragmentHeader-members.html +++ b/docs/de/d8d/structshaka_1_1media_1_1mp4_1_1MovieFragmentHeader-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d93/classshaka_1_1media_1_1VP8Parser-members.html b/docs/de/d93/classshaka_1_1media_1_1VP8Parser-members.html index 4f83a60b75..e2f7008fad 100644 --- a/docs/de/d93/classshaka_1_1media_1_1VP8Parser-members.html +++ b/docs/de/d93/classshaka_1_1media_1_1VP8Parser-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/da9/structshaka_1_1Element.html b/docs/de/da9/structshaka_1_1Element.html index 177a853b4b..e00344ae5b 100644 --- a/docs/de/da9/structshaka_1_1Element.html +++ b/docs/de/da9/structshaka_1_1Element.html @@ -120,7 +120,7 @@ std::vector< El diff --git a/docs/de/dab/es__parser__h26x_8cc_source.html b/docs/de/dab/es__parser__h26x_8cc_source.html index 5c68902079..a8fa63f376 100644 --- a/docs/de/dab/es__parser__h26x_8cc_source.html +++ b/docs/de/dab/es__parser__h26x_8cc_source.html @@ -410,7 +410,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 1f5e8b2b98..030495a688 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/db3/classshaka_1_1media_1_1TextTrackConfig.html b/docs/de/db3/classshaka_1_1media_1_1TextTrackConfig.html index 73ca0a2db1..3cdfdc783c 100644 --- a/docs/de/db3/classshaka_1_1media_1_1TextTrackConfig.html +++ b/docs/de/db3/classshaka_1_1media_1_1TextTrackConfig.html @@ -125,7 +125,7 @@ const std::string & id diff --git a/docs/de/db4/classshaka_1_1media_1_1H26xBitReader.html b/docs/de/db4/classshaka_1_1media_1_1H26xBitReader.html index c8c414106e..35fee078d3 100644 --- a/docs/de/db4/classshaka_1_1media_1_1H26xBitReader.html +++ b/docs/de/db4/classshaka_1_1media_1_1H26xBitReader.html @@ -134,7 +134,7 @@ size_t NumEmulationPrevent diff --git a/docs/de/dbf/udp__options_8h_source.html b/docs/de/dbf/udp__options_8h_source.html index b64cd96dc1..51fc1695a3 100644 --- a/docs/de/dbf/udp__options_8h_source.html +++ b/docs/de/dbf/udp__options_8h_source.html @@ -131,7 +131,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 ba56f4ca15..2f0e751af1 100644 --- a/docs/de/dc1/demuxer_8h_source.html +++ b/docs/de/dc1/demuxer_8h_source.html @@ -189,7 +189,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/dc2/classshaka_1_1media_1_1H265Parser.html b/docs/de/dc2/classshaka_1_1media_1_1H265Parser.html index 81ea49a87c..cefe4d1167 100644 --- a/docs/de/dc2/classshaka_1_1media_1_1H265Parser.html +++ b/docs/de/dc2/classshaka_1_1media_1_1H265Parser.html @@ -256,7 +256,7 @@ Public Member Functions diff --git a/docs/de/dc9/structshaka_1_1media_1_1mp4_1_1DecodingTimeToSample-members.html b/docs/de/dc9/structshaka_1_1media_1_1mp4_1_1DecodingTimeToSample-members.html index c57fc2280f..f98e4b4c32 100644 --- a/docs/de/dc9/structshaka_1_1media_1_1mp4_1_1DecodingTimeToSample-members.html +++ b/docs/de/dc9/structshaka_1_1media_1_1mp4_1_1DecodingTimeToSample-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/dcb/ts__segmenter_8h_source.html b/docs/de/dcb/ts__segmenter_8h_source.html index 7d6221ca84..36474db2a8 100644 --- a/docs/de/dcb/ts__segmenter_8h_source.html +++ b/docs/de/dcb/ts__segmenter_8h_source.html @@ -121,97 +121,99 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
    36  TsSegmenter(const MuxerOptions& options, MuxerListener* listener);
    37  ~TsSegmenter();
    38 
    -
    43  Status Initialize(const StreamInfo& stream_info,
    +
    43  Status Initialize(const StreamInfo& stream_info,
    44  KeySource* encryption_key_source,
    45  uint32_t max_sd_pixels,
    -
    46  double clear_lead_in_seconds);
    -
    47 
    -
    50  Status Finalize();
    -
    51 
    -
    54  Status AddSample(scoped_refptr<MediaSample> sample);
    -
    55 
    -
    57  void InjectTsWriterForTesting(std::unique_ptr<TsWriter> writer);
    -
    58 
    - -
    61  std::unique_ptr<PesPacketGenerator> generator);
    -
    62 
    -
    64  void SetTsWriterFileOpenedForTesting(bool value);
    -
    65 
    -
    66  private:
    -
    67  Status OpenNewSegmentIfClosed(uint32_t next_pts);
    -
    68 
    -
    69  // Writes PES packets (carried in TsPackets) to a file. If a file is not open,
    -
    70  // it will open one. This will not close the file.
    -
    71  Status WritePesPacketsToFile();
    -
    72 
    -
    73  // Flush all the samples that are (possibly) buffered and write them to the
    -
    74  // current segment, this will close the file. If a file is not already opened
    -
    75  // before calling this, this will open one and write them to file.
    -
    76  Status Flush();
    -
    77 
    -
    78  // If conditions are met, notify objects that the data is encrypted.
    -
    79  Status NotifyEncrypted();
    -
    80 
    -
    81  const MuxerOptions& muxer_options_;
    -
    82  MuxerListener* const listener_;
    -
    83 
    -
    84  // Scale used to scale the input stream to TS's timesccale (which is 90000).
    -
    85  // Used for calculating the duration in seconds fo the current segment.
    -
    86  double timescale_scale_ = 1.0;
    -
    87 
    -
    88  // This is the sum of the durations of the samples that were added to
    -
    89  // PesPacketGenerator for the current segment (in seconds). Note that this is
    -
    90  // not necessarily the same as the length of the PesPackets that have been
    -
    91  // written to the current segment in WritePesPacketsToFile().
    -
    92  double current_segment_total_sample_duration_ = 0.0;
    -
    93 
    -
    94  // Used for segment template.
    -
    95  uint64_t segment_number_ = 0;
    -
    96 
    -
    97  std::unique_ptr<TsWriter> ts_writer_;
    -
    98  // Set to true if TsWriter::NewFile() succeeds, set to false after
    -
    99  // TsWriter::FinalizeFile() succeeds.
    -
    100  bool ts_writer_file_opened_ = false;
    -
    101  std::unique_ptr<PesPacketGenerator> pes_packet_generator_;
    -
    102 
    -
    103  // For OnNewSegment().
    -
    104  uint64_t current_segment_start_time_ = 0;
    -
    105  // Path of the current segment so that File::GetFileSize() can be used after
    -
    106  // the segment has been finalized.
    -
    107  std::string current_segment_path_;
    -
    108 
    -
    109  std::unique_ptr<EncryptionKey> encryption_key_;
    -
    110  double clear_lead_in_seconds_ = 0;
    -
    111 
    -
    112  // The total duration of the segments that it has segmented. This only
    -
    113  // includes segments that have been finailzed. IOW, this does not count the
    -
    114  // current segments duration.
    -
    115  double total_duration_in_seconds_ = 0.0;
    -
    116 
    -
    117  DISALLOW_COPY_AND_ASSIGN(TsSegmenter);
    -
    118 };
    -
    119 
    -
    120 } // namespace mp2t
    -
    121 } // namespace media
    -
    122 } // namespace shaka
    -
    123 #endif // PACKAGER_MEDIA_FORMATS_MP2T_TS_SEGMENTER_H_
    +
    46  uint32_t max_hd_pixels,
    +
    47  uint32_t max_uhd1_pixels,
    +
    48  double clear_lead_in_seconds);
    +
    49 
    +
    52  Status Finalize();
    +
    53 
    +
    56  Status AddSample(scoped_refptr<MediaSample> sample);
    +
    57 
    +
    59  void InjectTsWriterForTesting(std::unique_ptr<TsWriter> writer);
    +
    60 
    + +
    63  std::unique_ptr<PesPacketGenerator> generator);
    +
    64 
    +
    66  void SetTsWriterFileOpenedForTesting(bool value);
    +
    67 
    +
    68  private:
    +
    69  Status OpenNewSegmentIfClosed(uint32_t next_pts);
    +
    70 
    +
    71  // Writes PES packets (carried in TsPackets) to a file. If a file is not open,
    +
    72  // it will open one. This will not close the file.
    +
    73  Status WritePesPacketsToFile();
    +
    74 
    +
    75  // Flush all the samples that are (possibly) buffered and write them to the
    +
    76  // current segment, this will close the file. If a file is not already opened
    +
    77  // before calling this, this will open one and write them to file.
    +
    78  Status Flush();
    +
    79 
    +
    80  // If conditions are met, notify objects that the data is encrypted.
    +
    81  Status NotifyEncrypted();
    +
    82 
    +
    83  const MuxerOptions& muxer_options_;
    +
    84  MuxerListener* const listener_;
    +
    85 
    +
    86  // Scale used to scale the input stream to TS's timesccale (which is 90000).
    +
    87  // Used for calculating the duration in seconds fo the current segment.
    +
    88  double timescale_scale_ = 1.0;
    +
    89 
    +
    90  // This is the sum of the durations of the samples that were added to
    +
    91  // PesPacketGenerator for the current segment (in seconds). Note that this is
    +
    92  // not necessarily the same as the length of the PesPackets that have been
    +
    93  // written to the current segment in WritePesPacketsToFile().
    +
    94  double current_segment_total_sample_duration_ = 0.0;
    +
    95 
    +
    96  // Used for segment template.
    +
    97  uint64_t segment_number_ = 0;
    +
    98 
    +
    99  std::unique_ptr<TsWriter> ts_writer_;
    +
    100  // Set to true if TsWriter::NewFile() succeeds, set to false after
    +
    101  // TsWriter::FinalizeFile() succeeds.
    +
    102  bool ts_writer_file_opened_ = false;
    +
    103  std::unique_ptr<PesPacketGenerator> pes_packet_generator_;
    +
    104 
    +
    105  // For OnNewSegment().
    +
    106  uint64_t current_segment_start_time_ = 0;
    +
    107  // Path of the current segment so that File::GetFileSize() can be used after
    +
    108  // the segment has been finalized.
    +
    109  std::string current_segment_path_;
    +
    110 
    +
    111  std::unique_ptr<EncryptionKey> encryption_key_;
    +
    112  double clear_lead_in_seconds_ = 0;
    +
    113 
    +
    114  // The total duration of the segments that it has segmented. This only
    +
    115  // includes segments that have been finailzed. IOW, this does not count the
    +
    116  // current segments duration.
    +
    117  double total_duration_in_seconds_ = 0.0;
    +
    118 
    +
    119  DISALLOW_COPY_AND_ASSIGN(TsSegmenter);
    +
    120 };
    +
    121 
    +
    122 } // namespace mp2t
    +
    123 } // namespace media
    +
    124 } // namespace shaka
    +
    125 #endif // PACKAGER_MEDIA_FORMATS_MP2T_TS_SEGMENTER_H_
    Abstract class holds stream information.
    Definition: stream_info.h:53
    -
    Status AddSample(scoped_refptr< MediaSample > sample)
    Definition: ts_segmenter.cc:88
    - +
    Status AddSample(scoped_refptr< MediaSample > sample)
    Definition: ts_segmenter.cc:91
    +
    This structure contains the list of configuration options for Muxer.
    Definition: muxer_options.h:18
    TsSegmenter(const MuxerOptions &options, MuxerListener *listener)
    Definition: ts_segmenter.cc:27
    -
    void InjectPesPacketGeneratorForTesting(std::unique_ptr< PesPacketGenerator > generator)
    Only for testing.
    -
    void SetTsWriterFileOpenedForTesting(bool value)
    Only for testing.
    -
    void InjectTsWriterForTesting(std::unique_ptr< TsWriter > writer)
    Only for testing.
    +
    void InjectPesPacketGeneratorForTesting(std::unique_ptr< PesPacketGenerator > generator)
    Only for testing.
    +
    void SetTsWriterFileOpenedForTesting(bool value)
    Only for testing.
    +
    void InjectTsWriterForTesting(std::unique_ptr< TsWriter > writer)
    Only for testing.
    +
    Status Initialize(const StreamInfo &stream_info, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds)
    Definition: ts_segmenter.cc:34
    KeySource is responsible for encryption key acquisition.
    Definition: key_source.h:30
    -
    Status Initialize(const StreamInfo &stream_info, KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds)
    Definition: ts_segmenter.cc:34
    diff --git a/docs/de/dcc/mock__mpd__notifier_8cc_source.html b/docs/de/dcc/mock__mpd__notifier_8cc_source.html index b196d774df..1fa6d8bdb3 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 240cb024a7..e440d093a0 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/dd6/content__protection__element_8h_source.html b/docs/de/dd6/content__protection__element_8h_source.html index 9f6c56f8a2..e19424e3f1 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 7348c00a4a..03e3d57124 100644 --- a/docs/de/dd6/muxer__listener__test__helper_8cc_source.html +++ b/docs/de/dd6/muxer__listener__test__helper_8cc_source.html @@ -209,7 +209,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/ddd/classshaka_1_1media_1_1Muxer-members.html b/docs/de/ddd/classshaka_1_1media_1_1Muxer-members.html index 1ff0afbc4f..e858dffe2a 100644 --- a/docs/de/ddd/classshaka_1_1media_1_1Muxer-members.html +++ b/docs/de/ddd/classshaka_1_1media_1_1Muxer-members.html @@ -99,7 +99,9 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); clock() (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected crypto_period_duration_in_seconds() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected encryption_key_source() (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected - max_sd_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected + max_hd_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected + max_sd_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected + max_uhd1_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected MediaStream (defined in shaka::media::Muxer)shaka::media::Muxerfriend Muxer(const MuxerOptions &options) (defined in shaka::media::Muxer)shaka::media::Muxerexplicit muxer_listener() (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected @@ -108,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); protection_scheme() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected Run()shaka::media::Muxer set_clock(base::Clock *clock)shaka::media::Muxerinline - SetKeySource(KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)shaka::media::Muxer + SetKeySource(KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)shaka::media::Muxer SetMuxerListener(std::unique_ptr< MuxerListener > muxer_listener)shaka::media::Muxer SetProgressListener(std::unique_ptr< ProgressListener > progress_listener)shaka::media::Muxer streams() const (defined in shaka::media::Muxer)shaka::media::Muxerinline @@ -116,7 +118,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/dde/classshaka_1_1media_1_1mp2t_1_1TsSegmenter.html b/docs/de/dde/classshaka_1_1media_1_1mp2t_1_1TsSegmenter.html index c04af6d3b4..c2f19184f2 100644 --- a/docs/de/dde/classshaka_1_1media_1_1mp2t_1_1TsSegmenter.html +++ b/docs/de/dde/classshaka_1_1media_1_1mp2t_1_1TsSegmenter.html @@ -98,8 +98,8 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); Public Member Functions  TsSegmenter (const MuxerOptions &options, MuxerListener *listener)   -Status Initialize (const StreamInfo &stream_info, KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds) -  +Status Initialize (const StreamInfo &stream_info, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds) +  Status Finalize ()   Status AddSample (scoped_refptr< MediaSample > sample) @@ -178,7 +178,7 @@ void 
    Returns
    OK on success.
    -

    Definition at line 88 of file ts_segmenter.cc.

    +

    Definition at line 91 of file ts_segmenter.cc.

    @@ -197,11 +197,11 @@ void 
    Returns
    OK on success.
    -

    Definition at line 81 of file ts_segmenter.cc.

    +

    Definition at line 84 of file ts_segmenter.cc.

    - +
    @@ -223,6 +223,18 @@ void  + + + + + + + + + + + + @@ -256,7 +268,7 @@ void 
    uint32_t  max_sd_pixels,
    uint32_t max_hd_pixels,
    uint32_t max_uhd1_pixels,
    diff --git a/docs/de/ddf/structshaka_1_1media_1_1mp4_1_1MediaData-members.html b/docs/de/ddf/structshaka_1_1media_1_1mp4_1_1MediaData-members.html index dbd38c0ecf..10d43fce46 100644 --- a/docs/de/ddf/structshaka_1_1media_1_1mp4_1_1MediaData-members.html +++ b/docs/de/ddf/structshaka_1_1media_1_1mp4_1_1MediaData-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
    diff --git a/docs/de/de0/classshaka_1_1media_1_1DecoderConfigurationRecord.html b/docs/de/de0/classshaka_1_1media_1_1DecoderConfigurationRecord.html index 2b2e848494..1916c9e897 100644 --- a/docs/de/de0/classshaka_1_1media_1_1DecoderConfigurationRecord.html +++ b/docs/de/de0/classshaka_1_1media_1_1DecoderConfigurationRecord.html @@ -333,7 +333,7 @@ void  diff --git a/docs/de/de0/classshaka_1_1media_1_1mp4_1_1MP4Muxer-members.html b/docs/de/de0/classshaka_1_1media_1_1mp4_1_1MP4Muxer-members.html index 909b095ac3..a785128c26 100644 --- a/docs/de/de0/classshaka_1_1media_1_1mp4_1_1MP4Muxer-members.html +++ b/docs/de/de0/classshaka_1_1media_1_1mp4_1_1MP4Muxer-members.html @@ -99,7 +99,9 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); clock() (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected crypto_period_duration_in_seconds() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected encryption_key_source() (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected - max_sd_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected + max_hd_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected + max_sd_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected + max_uhd1_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected MP4Muxer(const MuxerOptions &options)shaka::media::mp4::MP4Muxerexplicit Muxer(const MuxerOptions &options) (defined in shaka::media::Muxer)shaka::media::Muxerexplicit muxer_listener() (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected @@ -108,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); protection_scheme() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected Run()shaka::media::Muxer set_clock(base::Clock *clock)shaka::media::Muxerinline - SetKeySource(KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)shaka::media::Muxer + SetKeySource(KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)shaka::media::Muxer SetMuxerListener(std::unique_ptr< MuxerListener > muxer_listener)shaka::media::Muxer SetProgressListener(std::unique_ptr< ProgressListener > progress_listener)shaka::media::Muxer streams() const (defined in shaka::media::Muxer)shaka::media::Muxerinline @@ -117,7 +119,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
    diff --git a/docs/de/de4/structshaka_1_1media_1_1H264Pps.html b/docs/de/de4/structshaka_1_1media_1_1H264Pps.html index 6b4eaad808..468c701b69 100644 --- a/docs/de/de4/structshaka_1_1media_1_1H264Pps.html +++ b/docs/de/de4/structshaka_1_1media_1_1H264Pps.html @@ -167,7 +167,7 @@ int second_chroma_qp_index diff --git a/docs/de/dea/classshaka_1_1media_1_1H26xByteToUnitStreamConverter.html b/docs/de/dea/classshaka_1_1media_1_1H26xByteToUnitStreamConverter.html index 50e352ab85..8dfd895536 100644 --- a/docs/de/dea/classshaka_1_1media_1_1H26xByteToUnitStreamConverter.html +++ b/docs/de/dea/classshaka_1_1media_1_1H26xByteToUnitStreamConverter.html @@ -216,7 +216,7 @@ static const size_t kUnitS diff --git a/docs/de/def/structshaka_1_1media_1_1mp4_1_1DecodingTimeToSample.html b/docs/de/def/structshaka_1_1media_1_1mp4_1_1DecodingTimeToSample.html index d0628ba8e1..4440e7c1c6 100644 --- a/docs/de/def/structshaka_1_1media_1_1mp4_1_1DecodingTimeToSample.html +++ b/docs/de/def/structshaka_1_1media_1_1mp4_1_1DecodingTimeToSample.html @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/de/df6/classshaka_1_1media_1_1mp4_1_1TrackRunIterator.html b/docs/de/df6/classshaka_1_1media_1_1mp4_1_1TrackRunIterator.html index c496462cf2..fac1afb6cf 100644 --- a/docs/de/df6/classshaka_1_1media_1_1mp4_1_1TrackRunIterator.html +++ b/docs/de/df6/classshaka_1_1media_1_1mp4_1_1TrackRunIterator.html @@ -412,7 +412,7 @@ bool is_keyframe () co diff --git a/docs/de/dfa/classshaka_1_1media_1_1webm_1_1Encryptor.html b/docs/de/dfa/classshaka_1_1media_1_1webm_1_1Encryptor.html index 763cc76329..4cba79213e 100644 --- a/docs/de/dfa/classshaka_1_1media_1_1webm_1_1Encryptor.html +++ b/docs/de/dfa/classshaka_1_1media_1_1webm_1_1Encryptor.html @@ -215,7 +215,7 @@ Public Member Functions diff --git a/docs/de/dfa/muxer__listener_8h_source.html b/docs/de/dfa/muxer__listener_8h_source.html index 79914d859a..8ba8105416 100644 --- a/docs/de/dfa/muxer__listener_8h_source.html +++ b/docs/de/dfa/muxer__listener_8h_source.html @@ -173,7 +173,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/dfa/structshaka_1_1media_1_1mp4_1_1OpusSpecific.html b/docs/de/dfa/structshaka_1_1media_1_1mp4_1_1OpusSpecific.html index 0e95d40f07..28a0cd1375 100644 --- a/docs/de/dfa/structshaka_1_1media_1_1mp4_1_1OpusSpecific.html +++ b/docs/de/dfa/structshaka_1_1media_1_1mp4_1_1OpusSpecific.html @@ -176,7 +176,7 @@ Additional Inherited Members diff --git a/docs/de/dfd/stream__info_8cc_source.html b/docs/de/dfd/stream__info_8cc_source.html index 1948e20d38..22efdb8d2a 100644 --- a/docs/de/dfd/stream__info_8cc_source.html +++ b/docs/de/dfd/stream__info_8cc_source.html @@ -140,7 +140,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d05/vp__codec__configuration__record_8cc_source.html b/docs/df/d05/vp__codec__configuration__record_8cc_source.html index 8750f29b16..b53af75e10 100644 --- a/docs/df/d05/vp__codec__configuration__record_8cc_source.html +++ b/docs/df/d05/vp__codec__configuration__record_8cc_source.html @@ -360,7 +360,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 43c29b366a..cb7c91ac7f 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/classshaka_1_1media_1_1MediaSample-members.html b/docs/df/d1c/classshaka_1_1media_1_1MediaSample-members.html index 5a67cded97..0538eaffbd 100644 --- a/docs/df/d1c/classshaka_1_1media_1_1MediaSample-members.html +++ b/docs/df/d1c/classshaka_1_1media_1_1MediaSample-members.html @@ -125,7 +125,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 fb4853a6ca..27a9663423 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/d21/classshaka_1_1media_1_1SegmentTestBase_1_1ClusterParser-members.html b/docs/df/d21/classshaka_1_1media_1_1SegmentTestBase_1_1ClusterParser-members.html index fb61b4adc5..7bf923d428 100644 --- a/docs/df/d21/classshaka_1_1media_1_1SegmentTestBase_1_1ClusterParser-members.html +++ b/docs/df/d21/classshaka_1_1media_1_1SegmentTestBase_1_1ClusterParser-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d22/validate__flag_8h_source.html b/docs/df/d22/validate__flag_8h_source.html index 87518bf802..32c5344428 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/d2a/classshaka_1_1media_1_1mp4_1_1DecodingTimeIterator-members.html b/docs/df/d2a/classshaka_1_1media_1_1mp4_1_1DecodingTimeIterator-members.html index 3bb8290a55..ff85b3545f 100644 --- a/docs/df/d2a/classshaka_1_1media_1_1mp4_1_1DecodingTimeIterator-members.html +++ b/docs/df/d2a/classshaka_1_1media_1_1mp4_1_1DecodingTimeIterator-members.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d2d/classshaka_1_1media_1_1AesCbcDecryptor.html b/docs/df/d2d/classshaka_1_1media_1_1AesCbcDecryptor.html index f15dfa0a76..90af3c0514 100644 --- a/docs/df/d2d/classshaka_1_1media_1_1AesCbcDecryptor.html +++ b/docs/df/d2d/classshaka_1_1media_1_1AesCbcDecryptor.html @@ -279,7 +279,7 @@ AES_KEY * mutable_aes_key< diff --git a/docs/df/d31/muxer__util_8cc_source.html b/docs/df/d31/muxer__util_8cc_source.html index b6011819b3..3af30bc8bf 100644 --- a/docs/df/d31/muxer__util_8cc_source.html +++ b/docs/df/d31/muxer__util_8cc_source.html @@ -244,27 +244,35 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
    155 }
    156 
    157 KeySource::TrackType GetTrackTypeForEncryption(const StreamInfo& stream_info,
    -
    158  uint32_t max_sd_pixels) {
    -
    159  if (stream_info.stream_type() == kStreamAudio)
    -
    160  return KeySource::TRACK_TYPE_AUDIO;
    -
    161 
    -
    162  if (stream_info.stream_type() != kStreamVideo)
    -
    163  return KeySource::TRACK_TYPE_UNKNOWN;
    -
    164 
    -
    165  DCHECK_EQ(kStreamVideo, stream_info.stream_type());
    -
    166  const VideoStreamInfo& video_stream_info =
    -
    167  static_cast<const VideoStreamInfo&>(stream_info);
    -
    168  uint32_t pixels = video_stream_info.width() * video_stream_info.height();
    -
    169  return (pixels > max_sd_pixels) ? KeySource::TRACK_TYPE_HD
    -
    170  : KeySource::TRACK_TYPE_SD;
    -
    171 }
    -
    172 
    -
    173 } // namespace media
    -
    174 } // namespace shaka
    +
    158  uint32_t max_sd_pixels,
    +
    159  uint32_t max_hd_pixels,
    +
    160  uint32_t max_uhd1_pixels) {
    +
    161  if (stream_info.stream_type() == kStreamAudio)
    +
    162  return KeySource::TRACK_TYPE_AUDIO;
    +
    163 
    +
    164  if (stream_info.stream_type() != kStreamVideo)
    +
    165  return KeySource::TRACK_TYPE_UNKNOWN;
    +
    166 
    +
    167  DCHECK_EQ(kStreamVideo, stream_info.stream_type());
    +
    168  const VideoStreamInfo& video_stream_info =
    +
    169  static_cast<const VideoStreamInfo&>(stream_info);
    +
    170  uint32_t pixels = video_stream_info.width() * video_stream_info.height();
    +
    171  if (pixels > max_uhd1_pixels) {
    +
    172  return KeySource::TRACK_TYPE_UHD2;
    +
    173  } else if (pixels > max_hd_pixels) {
    +
    174  return KeySource::TRACK_TYPE_UHD1;
    +
    175  } else if (pixels > max_sd_pixels) {
    +
    176  return KeySource::TRACK_TYPE_HD;
    +
    177  }
    +
    178  return KeySource::TRACK_TYPE_SD;
    +
    179 }
    +
    180 
    +
    181 } // namespace media
    +
    182 } // namespace shaka
    diff --git a/docs/df/d32/audio__stream__info_8h_source.html b/docs/df/d32/audio__stream__info_8h_source.html index 7ec5a96b65..7c5a716e74 100644 --- a/docs/df/d32/audio__stream__info_8h_source.html +++ b/docs/df/d32/audio__stream__info_8h_source.html @@ -164,7 +164,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d33/classshaka_1_1AdaptationSet-members.html b/docs/df/d33/classshaka_1_1AdaptationSet-members.html index 3a32a306f1..9c1eb0a025 100644 --- a/docs/df/d33/classshaka_1_1AdaptationSet-members.html +++ b/docs/df/d33/classshaka_1_1AdaptationSet-members.html @@ -119,7 +119,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d38/structshaka_1_1media_1_1mp4_1_1ChunkInfo.html b/docs/df/d38/structshaka_1_1media_1_1mp4_1_1ChunkInfo.html index bcccb84895..22bd595f2b 100644 --- a/docs/df/d38/structshaka_1_1media_1_1mp4_1_1ChunkInfo.html +++ b/docs/df/d38/structshaka_1_1media_1_1mp4_1_1ChunkInfo.html @@ -115,7 +115,7 @@ uint32_t sample_descriptio diff --git a/docs/df/d38/structshaka_1_1media_1_1mp4_1_1MovieExtendsHeader-members.html b/docs/df/d38/structshaka_1_1media_1_1mp4_1_1MovieExtendsHeader-members.html index 2620cbfdbd..aa3590c3e1 100644 --- a/docs/df/d38/structshaka_1_1media_1_1mp4_1_1MovieExtendsHeader-members.html +++ b/docs/df/d38/structshaka_1_1media_1_1mp4_1_1MovieExtendsHeader-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d3c/classshaka_1_1media_1_1RequestSigner.html b/docs/df/d3c/classshaka_1_1media_1_1RequestSigner.html index c442858e20..8864e04bc6 100644 --- a/docs/df/d3c/classshaka_1_1media_1_1RequestSigner.html +++ b/docs/df/d3c/classshaka_1_1media_1_1RequestSigner.html @@ -180,7 +180,7 @@ Protected Member Functions diff --git a/docs/df/d46/classshaka_1_1media_1_1Muxer.html b/docs/df/d46/classshaka_1_1media_1_1Muxer.html index b9925ff2e4..8b7af39962 100644 --- a/docs/df/d46/classshaka_1_1media_1_1Muxer.html +++ b/docs/df/d46/classshaka_1_1media_1_1Muxer.html @@ -114,8 +114,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, FourCC protection_scheme) -  +void SetKeySource (KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme) +  void AddStream (MediaStream *stream)  Add video/audio stream.
    @@ -147,6 +147,12 @@ const uint32_t max_sd_pixels () const   + +uint32_t max_hd_pixels () const +  + +uint32_t max_uhd1_pixels () const +  double clear_lead_in_seconds () const   @@ -191,7 +197,7 @@ class MediaStream

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

    -

    Definition at line 84 of file muxer.cc.

    +

    Definition at line 90 of file muxer.cc.

    @@ -224,11 +230,11 @@ class MediaStream -

    Definition at line 82 of file muxer.h.

    +

    Definition at line 95 of file muxer.h.

    - +
    @@ -244,6 +250,18 @@ class  + + + + + + + + + + + + @@ -273,7 +291,9 @@ class 
    Parameters
    MediaStream uint32_t  max_sd_pixels,
    uint32_t max_hd_pixels,
    uint32_t max_uhd1_pixels,
    MediaStream
    - + + + @@ -281,7 +301,7 @@ class  -

    Definition at line 31 of file muxer.cc.

    +

    Definition at line 33 of file muxer.cc.

    @@ -306,7 +326,7 @@ class  -

    Definition at line 88 of file muxer.cc.

    +

    Definition at line 94 of file muxer.cc.

    @@ -331,7 +351,7 @@ class  -

    Definition at line 92 of file muxer.cc.

    +

    Definition at line 98 of file muxer.cc.

    @@ -342,7 +362,7 @@ class  diff --git a/docs/df/d46/classshaka_1_1media_1_1ThreadedIoFile-members.html b/docs/df/d46/classshaka_1_1media_1_1ThreadedIoFile-members.html index ced085a7df..94d1e1e418 100644 --- a/docs/df/d46/classshaka_1_1media_1_1ThreadedIoFile-members.html +++ b/docs/df/d46/classshaka_1_1media_1_1ThreadedIoFile-members.html @@ -120,7 +120,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
    encryption_key_sourcepoints to the encryption key source. The caller retains ownership, and should not be NULL.
    max_sd_pixelsspecifies the threshold to determine whether a video track should be considered as SD or HD. If the track has more pixels per frame than max_sd_pixels, it is HD, SD otherwise.
    max_sd_pixelsspecifies the threshold to determine whether a video track should be considered as SD. If the max pixels per frame is no higher than max_sd_pixels, it is SD.
    max_hd_pixelsspecifies the threshold to determine whether a video track should be considered as HD. If the max pixels per frame is higher than max_sd_pixels, but no higher than max_hd_pixels, it is HD.
    max_uhd1_pixelsspecifies the threshold to determine whether a video track should be considered as UHD1. If the max pixels per frame is higher than max_hd_pixels, but no higher than max_uhd1_pixels, it is UHD1. Otherwise it is UHD2.
    clear_lead_in_secondsspecifies clear lead duration in seconds.
    crypto_period_duration_in_secondsspecifies crypto period duration in seconds. A positive value means key rotation is enabled, the key source must support key rotation in this case.
    protection_schemespecifies the protection scheme: 'cenc', 'cens', 'cbc1', 'cbcs'.
    MediaStream MediaStream MediaStream MediaStream
    diff --git a/docs/df/d50/classshaka_1_1media_1_1mp2t_1_1AacProgramMapTableWriter-members.html b/docs/df/d50/classshaka_1_1media_1_1mp2t_1_1AacProgramMapTableWriter-members.html index d3b0252cc7..a25ceb3244 100644 --- a/docs/df/d50/classshaka_1_1media_1_1mp2t_1_1AacProgramMapTableWriter-members.html +++ b/docs/df/d50/classshaka_1_1media_1_1mp2t_1_1AacProgramMapTableWriter-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
    diff --git a/docs/df/d51/classshaka_1_1media_1_1RsaPrivateKey-members.html b/docs/df/d51/classshaka_1_1media_1_1RsaPrivateKey-members.html index 89996d524d..2505f6eb20 100644 --- a/docs/df/d51/classshaka_1_1media_1_1RsaPrivateKey-members.html +++ b/docs/df/d51/classshaka_1_1media_1_1RsaPrivateKey-members.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d51/classshaka_1_1media_1_1mp4_1_1EncryptingFragmenter-members.html b/docs/df/d51/classshaka_1_1media_1_1mp4_1_1EncryptingFragmenter-members.html index 8d0889042f..3cfa7e73b8 100644 --- a/docs/df/d51/classshaka_1_1media_1_1mp4_1_1EncryptingFragmenter-members.html +++ b/docs/df/d51/classshaka_1_1media_1_1mp4_1_1EncryptingFragmenter-members.html @@ -122,7 +122,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d60/classshaka_1_1MockMpdBuilder.html b/docs/df/d60/classshaka_1_1MockMpdBuilder.html index 32d659785e..c83ceced39 100644 --- a/docs/df/d60/classshaka_1_1MockMpdBuilder.html +++ b/docs/df/d60/classshaka_1_1MockMpdBuilder.html @@ -153,7 +153,7 @@ Additional Inherited Members diff --git a/docs/df/d63/structshaka_1_1media_1_1mp4_1_1AudioRollRecoveryEntry-members.html b/docs/df/d63/structshaka_1_1media_1_1mp4_1_1AudioRollRecoveryEntry-members.html index 607325698e..7efff006ec 100644 --- a/docs/df/d63/structshaka_1_1media_1_1mp4_1_1AudioRollRecoveryEntry-members.html +++ b/docs/df/d63/structshaka_1_1media_1_1mp4_1_1AudioRollRecoveryEntry-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d66/classshaka_1_1media_1_1KeyFetcher.html b/docs/df/d66/classshaka_1_1media_1_1KeyFetcher.html index c28f75cfa1..aea3b39739 100644 --- a/docs/df/d66/classshaka_1_1media_1_1KeyFetcher.html +++ b/docs/df/d66/classshaka_1_1media_1_1KeyFetcher.html @@ -177,7 +177,7 @@ Public Member Functions diff --git a/docs/df/d6a/classshaka_1_1MockMpdBuilder-members.html b/docs/df/d6a/classshaka_1_1MockMpdBuilder-members.html index 5ba9a95ea3..c0880fc735 100644 --- a/docs/df/d6a/classshaka_1_1MockMpdBuilder-members.html +++ b/docs/df/d6a/classshaka_1_1MockMpdBuilder-members.html @@ -112,7 +112,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d6a/structshaka_1_1media_1_1mp4_1_1OpusSpecific-members.html b/docs/df/d6a/structshaka_1_1media_1_1mp4_1_1OpusSpecific-members.html index e3ba1cc22d..45e6602d8b 100644 --- a/docs/df/d6a/structshaka_1_1media_1_1mp4_1_1OpusSpecific-members.html +++ b/docs/df/d6a/structshaka_1_1media_1_1mp4_1_1OpusSpecific-members.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d7b/structshaka_1_1media_1_1mp4_1_1CompositionTimeToSample.html b/docs/df/d7b/structshaka_1_1media_1_1mp4_1_1CompositionTimeToSample.html index 26a1162e70..ce72ede79b 100644 --- a/docs/df/d7b/structshaka_1_1media_1_1mp4_1_1CompositionTimeToSample.html +++ b/docs/df/d7b/structshaka_1_1media_1_1mp4_1_1CompositionTimeToSample.html @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/df/d7b/structshaka_1_1media_1_1mp4_1_1TrackFragment.html b/docs/df/d7b/structshaka_1_1media_1_1mp4_1_1TrackFragment.html index 3a42cb66bd..e4b5449c41 100644 --- a/docs/df/d7b/structshaka_1_1media_1_1mp4_1_1TrackFragment.html +++ b/docs/df/d7b/structshaka_1_1media_1_1mp4_1_1TrackFragment.html @@ -198,7 +198,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 9f44cce613..b72f17c987 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/d82/classshaka_1_1media_1_1DecoderConfigurationRecord-members.html b/docs/df/d82/classshaka_1_1media_1_1DecoderConfigurationRecord-members.html index 71160cf32f..28b1e92cfc 100644 --- a/docs/df/d82/classshaka_1_1media_1_1DecoderConfigurationRecord-members.html +++ b/docs/df/d82/classshaka_1_1media_1_1DecoderConfigurationRecord-members.html @@ -107,7 +107,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d87/classshaka_1_1media_1_1AesCryptor.html b/docs/df/d87/classshaka_1_1media_1_1AesCryptor.html index 100c34db2f..9047eb3f23 100644 --- a/docs/df/d87/classshaka_1_1media_1_1AesCryptor.html +++ b/docs/df/d87/classshaka_1_1media_1_1AesCryptor.html @@ -424,7 +424,7 @@ AES_KEY * mutable_aes_key< diff --git a/docs/df/d8a/structshaka_1_1media_1_1mp4_1_1DataEntryUrl.html b/docs/df/d8a/structshaka_1_1media_1_1mp4_1_1DataEntryUrl.html index b347933c7b..04424bdb0c 100644 --- a/docs/df/d8a/structshaka_1_1media_1_1mp4_1_1DataEntryUrl.html +++ b/docs/df/d8a/structshaka_1_1media_1_1mp4_1_1DataEntryUrl.html @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/df/d8a/vp9__parser_8h_source.html b/docs/df/d8a/vp9__parser_8h_source.html index ccad719436..18bca28454 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 2beadad936..5d59730320 100644 --- a/docs/df/d8a/vpx__parser_8h_source.html +++ b/docs/df/d8a/vpx__parser_8h_source.html @@ -147,7 +147,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d8c/classshaka_1_1media_1_1mp4_1_1MultiSegmentSegmenter-members.html b/docs/df/d8c/classshaka_1_1media_1_1mp4_1_1MultiSegmentSegmenter-members.html index 60ba1c02e6..2dec3500c2 100644 --- a/docs/df/d8c/classshaka_1_1media_1_1mp4_1_1MultiSegmentSegmenter-members.html +++ b/docs/df/d8c/classshaka_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) overrideshaka::media::mp4::MultiSegmentSegmentervirtual GetInitRange(size_t *offset, size_t *size) overrideshaka::media::mp4::MultiSegmentSegmentervirtual GetReferenceTimeScale() const (defined in shaka::media::mp4::Segmenter)shaka::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, FourCC protection_scheme)shaka::media::mp4::Segmenter + Initialize(const std::vector< MediaStream * > &streams, MuxerListener *muxer_listener, ProgressListener *progress_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)shaka::media::mp4::Segmenter moov() (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected MultiSegmentSegmenter(const MuxerOptions &options, std::unique_ptr< FileType > ftyp, std::unique_ptr< Movie > moov) (defined in shaka::media::mp4::MultiSegmentSegmenter)shaka::media::mp4::MultiSegmentSegmenter muxer_listener() (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected @@ -118,7 +118,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d8d/es__parser__h26x_8h_source.html b/docs/df/d8d/es__parser__h26x_8h_source.html index 10216eee5d..7d90b0ea5e 100644 --- a/docs/df/d8d/es__parser__h26x_8h_source.html +++ b/docs/df/d8d/es__parser__h26x_8h_source.html @@ -235,7 +235,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d94/classshaka_1_1RepresentationStateChangeListener.html b/docs/df/d94/classshaka_1_1RepresentationStateChangeListener.html index 4076594bf7..c43e17a7b4 100644 --- a/docs/df/d94/classshaka_1_1RepresentationStateChangeListener.html +++ b/docs/df/d94/classshaka_1_1RepresentationStateChangeListener.html @@ -195,7 +195,7 @@ Public Member Functions diff --git a/docs/df/d96/xml__node_8cc_source.html b/docs/df/d96/xml__node_8cc_source.html index 4c9c74b150..247b43ca9c 100644 --- a/docs/df/d96/xml__node_8cc_source.html +++ b/docs/df/d96/xml__node_8cc_source.html @@ -488,7 +488,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d9a/structshaka_1_1media_1_1mp4_1_1TrackFragmentDecodeTime.html b/docs/df/d9a/structshaka_1_1media_1_1mp4_1_1TrackFragmentDecodeTime.html index a50c4aa3ab..0c118693a4 100644 --- a/docs/df/d9a/structshaka_1_1media_1_1mp4_1_1TrackFragmentDecodeTime.html +++ b/docs/df/d9a/structshaka_1_1media_1_1mp4_1_1TrackFragmentDecodeTime.html @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/df/d9e/classshaka_1_1xml_1_1RepresentationXmlNode.html b/docs/df/d9e/classshaka_1_1xml_1_1RepresentationXmlNode.html index 7bb5c89c38..26ff99125b 100644 --- a/docs/df/d9e/classshaka_1_1xml_1_1RepresentationXmlNode.html +++ b/docs/df/d9e/classshaka_1_1xml_1_1RepresentationXmlNode.html @@ -311,7 +311,7 @@ Additional Inherited Members diff --git a/docs/df/da0/structshaka_1_1media_1_1mp4_1_1ChunkOffset-members.html b/docs/df/da0/structshaka_1_1media_1_1mp4_1_1ChunkOffset-members.html index ff47962155..776b1650b1 100644 --- a/docs/df/da0/structshaka_1_1media_1_1mp4_1_1ChunkOffset-members.html +++ b/docs/df/da0/structshaka_1_1media_1_1mp4_1_1ChunkOffset-members.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/da5/structshaka_1_1media_1_1mp4_1_1CueIDBox-members.html b/docs/df/da5/structshaka_1_1media_1_1mp4_1_1CueIDBox-members.html index 9aa4e4637f..fbeaaad5ca 100644 --- a/docs/df/da5/structshaka_1_1media_1_1mp4_1_1CueIDBox-members.html +++ b/docs/df/da5/structshaka_1_1media_1_1mp4_1_1CueIDBox-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/dad/decrypt__config_8h_source.html b/docs/df/dad/decrypt__config_8h_source.html index 3a5128cf61..fd65b13bc7 100644 --- a/docs/df/dad/decrypt__config_8h_source.html +++ b/docs/df/dad/decrypt__config_8h_source.html @@ -168,7 +168,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/db8/structshaka_1_1media_1_1StreamDescriptor-members.html b/docs/df/db8/structshaka_1_1media_1_1StreamDescriptor-members.html index 8a65edc091..b1d1d891b2 100644 --- a/docs/df/db8/structshaka_1_1media_1_1StreamDescriptor-members.html +++ b/docs/df/db8/structshaka_1_1media_1_1StreamDescriptor-members.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/dc7/avc__decoder__configuration__record_8h_source.html b/docs/df/dc7/avc__decoder__configuration__record_8h_source.html index 8b3446c1f0..9b6bba6ec9 100644 --- a/docs/df/dc7/avc__decoder__configuration__record_8h_source.html +++ b/docs/df/dc7/avc__decoder__configuration__record_8h_source.html @@ -153,7 +153,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 3f439a8f21..7553ffd231 100644 --- a/docs/df/dd2/mpd__utils_8h_source.html +++ b/docs/df/dd2/mpd__utils_8h_source.html @@ -177,7 +177,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/dd2/structshaka_1_1media_1_1H264Pps-members.html b/docs/df/dd2/structshaka_1_1media_1_1H264Pps-members.html index 860b08170c..3bbb6474b8 100644 --- a/docs/df/dd2/structshaka_1_1media_1_1H264Pps-members.html +++ b/docs/df/dd2/structshaka_1_1media_1_1H264Pps-members.html @@ -117,7 +117,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/ddc/webm_2segmenter_8h_source.html b/docs/df/ddc/webm_2segmenter_8h_source.html index eb50042a8c..b7992327c5 100644 --- a/docs/df/ddc/webm_2segmenter_8h_source.html +++ b/docs/df/ddc/webm_2segmenter_8h_source.html @@ -125,136 +125,139 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
    36  explicit Segmenter(const MuxerOptions& options);
    37  virtual ~Segmenter();
    38 
    -
    53  Status Initialize(std::unique_ptr<MkvWriter> writer,
    -
    54  StreamInfo* info,
    -
    55  ProgressListener* progress_listener,
    -
    56  MuxerListener* muxer_listener,
    -
    57  KeySource* encryption_key_source,
    -
    58  uint32_t max_sd_pixels,
    -
    59  double clear_lead_in_seconds);
    -
    60 
    -
    63  Status Finalize();
    -
    64 
    -
    68  Status AddSample(scoped_refptr<MediaSample> sample);
    -
    69 
    -
    72  virtual bool GetInitRangeStartAndEnd(uint64_t* start, uint64_t* end) = 0;
    -
    73 
    -
    76  virtual bool GetIndexRangeStartAndEnd(uint64_t* start, uint64_t* end) = 0;
    -
    77 
    -
    79  float GetDuration() const;
    -
    80 
    -
    81  protected:
    -
    84  uint64_t FromBMFFTimescale(uint64_t time_timescale);
    -
    86  uint64_t FromWebMTimecode(uint64_t time_webm_timecode);
    -
    88  Status WriteSegmentHeader(uint64_t file_size, MkvWriter* writer);
    -
    90  Status SetCluster(uint64_t start_webm_timecode,
    -
    91  uint64_t position,
    -
    92  MkvWriter* writer);
    -
    93 
    -
    95  void UpdateProgress(uint64_t progress);
    -
    96  void set_progress_target(uint64_t target) { progress_target_ = target; }
    -
    97 
    -
    98  const MuxerOptions& options() const { return options_; }
    -
    99  mkvmuxer::Cluster* cluster() { return cluster_.get(); }
    -
    100  mkvmuxer::Cues* cues() { return &cues_; }
    -
    101  MuxerListener* muxer_listener() { return muxer_listener_; }
    -
    102  StreamInfo* info() { return info_; }
    -
    103  SeekHead* seek_head() { return &seek_head_; }
    -
    104 
    -
    105  int track_id() const { return track_id_; }
    -
    106  uint64_t segment_payload_pos() const { return segment_payload_pos_; }
    -
    107  uint64_t cluster_length_in_time_scale() const {
    -
    108  return cluster_length_in_time_scale_;
    -
    109  }
    -
    110 
    -
    111  virtual Status DoInitialize(std::unique_ptr<MkvWriter> writer) = 0;
    -
    112  virtual Status DoFinalize() = 0;
    -
    113 
    -
    114  private:
    -
    115  Status CreateVideoTrack(VideoStreamInfo* info);
    -
    116  Status CreateAudioTrack(AudioStreamInfo* info);
    -
    117  Status InitializeEncryptor(KeySource* key_source, uint32_t max_sd_pixels);
    -
    118 
    -
    119  // Writes the previous frame to the file.
    -
    120  Status WriteFrame(bool write_duration);
    -
    121 
    -
    122  // This is called when there needs to be a new subsegment. This does nothing
    -
    123  // in single-segment mode. In multi-segment mode this creates a new Cluster
    -
    124  // element.
    -
    125  virtual Status NewSubsegment(uint64_t start_timescale) = 0;
    -
    126  // This is called when there needs to be a new segment. In single-segment
    -
    127  // mode, this creates a new Cluster element. In multi-segment mode this
    -
    128  // creates a new output file.
    -
    129  virtual Status NewSegment(uint64_t start_timescale) = 0;
    -
    130 
    -
    131  // Store the previous sample so we know which one is the last frame.
    -
    132  scoped_refptr<MediaSample> prev_sample_;
    -
    133  // The reference frame timestamp; used to populate the ReferenceBlock element
    -
    134  // when writing non-keyframe BlockGroups.
    -
    135  uint64_t reference_frame_timestamp_;
    -
    136 
    -
    137  const MuxerOptions& options_;
    -
    138  std::unique_ptr<Encryptor> encryptor_;
    -
    139  double clear_lead_;
    -
    140  bool enable_encryption_; // Encryption is enabled only after clear_lead_.
    +
    61  Status Initialize(std::unique_ptr<MkvWriter> writer,
    +
    62  StreamInfo* info,
    +
    63  ProgressListener* progress_listener,
    +
    64  MuxerListener* muxer_listener,
    +
    65  KeySource* encryption_key_source,
    +
    66  uint32_t max_sd_pixels,
    +
    67  uint32_t max_hd_pixels,
    +
    68  uint32_t max_uhd1_pixels,
    +
    69  double clear_lead_in_seconds);
    +
    70 
    +
    73  Status Finalize();
    +
    74 
    +
    78  Status AddSample(scoped_refptr<MediaSample> sample);
    +
    79 
    +
    82  virtual bool GetInitRangeStartAndEnd(uint64_t* start, uint64_t* end) = 0;
    +
    83 
    +
    86  virtual bool GetIndexRangeStartAndEnd(uint64_t* start, uint64_t* end) = 0;
    +
    87 
    +
    89  float GetDuration() const;
    +
    90 
    +
    91  protected:
    +
    94  uint64_t FromBMFFTimescale(uint64_t time_timescale);
    +
    96  uint64_t FromWebMTimecode(uint64_t time_webm_timecode);
    +
    98  Status WriteSegmentHeader(uint64_t file_size, MkvWriter* writer);
    +
    100  Status SetCluster(uint64_t start_webm_timecode,
    +
    101  uint64_t position,
    +
    102  MkvWriter* writer);
    +
    103 
    +
    105  void UpdateProgress(uint64_t progress);
    +
    106  void set_progress_target(uint64_t target) { progress_target_ = target; }
    +
    107 
    +
    108  const MuxerOptions& options() const { return options_; }
    +
    109  mkvmuxer::Cluster* cluster() { return cluster_.get(); }
    +
    110  mkvmuxer::Cues* cues() { return &cues_; }
    +
    111  MuxerListener* muxer_listener() { return muxer_listener_; }
    +
    112  StreamInfo* info() { return info_; }
    +
    113  SeekHead* seek_head() { return &seek_head_; }
    +
    114 
    +
    115  int track_id() const { return track_id_; }
    +
    116  uint64_t segment_payload_pos() const { return segment_payload_pos_; }
    +
    117  uint64_t cluster_length_in_time_scale() const {
    +
    118  return cluster_length_in_time_scale_;
    +
    119  }
    +
    120 
    +
    121  virtual Status DoInitialize(std::unique_ptr<MkvWriter> writer) = 0;
    +
    122  virtual Status DoFinalize() = 0;
    +
    123 
    +
    124  private:
    +
    125  Status CreateVideoTrack(VideoStreamInfo* info);
    +
    126  Status CreateAudioTrack(AudioStreamInfo* info);
    +
    127  Status InitializeEncryptor(KeySource* key_source, uint32_t max_sd_pixels,
    +
    128  uint32_t max_hd_pixels, uint32_t max_uhd1_pixels);
    +
    129 
    +
    130  // Writes the previous frame to the file.
    +
    131  Status WriteFrame(bool write_duration);
    +
    132 
    +
    133  // This is called when there needs to be a new subsegment. This does nothing
    +
    134  // in single-segment mode. In multi-segment mode this creates a new Cluster
    +
    135  // element.
    +
    136  virtual Status NewSubsegment(uint64_t start_timescale) = 0;
    +
    137  // This is called when there needs to be a new segment. In single-segment
    +
    138  // mode, this creates a new Cluster element. In multi-segment mode this
    +
    139  // creates a new output file.
    +
    140  virtual Status NewSegment(uint64_t start_timescale) = 0;
    141 
    -
    142  std::unique_ptr<mkvmuxer::Cluster> cluster_;
    -
    143  mkvmuxer::Cues cues_;
    -
    144  SeekHead seek_head_;
    -
    145  mkvmuxer::SegmentInfo segment_info_;
    -
    146  mkvmuxer::Tracks tracks_;
    +
    142  // Store the previous sample so we know which one is the last frame.
    +
    143  scoped_refptr<MediaSample> prev_sample_;
    +
    144  // The reference frame timestamp; used to populate the ReferenceBlock element
    +
    145  // when writing non-keyframe BlockGroups.
    +
    146  uint64_t reference_frame_timestamp_;
    147 
    -
    148  StreamInfo* info_;
    -
    149  MuxerListener* muxer_listener_;
    -
    150  ProgressListener* progress_listener_;
    -
    151  uint64_t progress_target_;
    -
    152  uint64_t accumulated_progress_;
    -
    153  uint64_t first_timestamp_;
    -
    154  int64_t sample_duration_;
    -
    155  // The position (in bytes) of the start of the Segment payload in the init
    -
    156  // file. This is also the size of the header before the SeekHead.
    -
    157  uint64_t segment_payload_pos_;
    +
    148  const MuxerOptions& options_;
    +
    149  std::unique_ptr<Encryptor> encryptor_;
    +
    150  double clear_lead_;
    +
    151  bool enable_encryption_; // Encryption is enabled only after clear_lead_.
    +
    152 
    +
    153  std::unique_ptr<mkvmuxer::Cluster> cluster_;
    +
    154  mkvmuxer::Cues cues_;
    +
    155  SeekHead seek_head_;
    +
    156  mkvmuxer::SegmentInfo segment_info_;
    +
    157  mkvmuxer::Tracks tracks_;
    158 
    -
    159  // Durations in timescale.
    -
    160  uint64_t cluster_length_in_time_scale_;
    -
    161  uint64_t segment_length_in_time_scale_;
    -
    162 
    -
    163  int track_id_;
    -
    164 
    -
    165  DISALLOW_COPY_AND_ASSIGN(Segmenter);
    -
    166 };
    -
    167 
    -
    168 } // namespace webm
    -
    169 } // namespace media
    -
    170 } // namespace shaka
    -
    171 
    -
    172 #endif // MEDIA_FORMATS_WEBM_SEGMENTER_H_
    -
    Status WriteSegmentHeader(uint64_t file_size, MkvWriter *writer)
    Writes the Segment header to writer.
    Definition: segmenter.cc:217
    +
    159  StreamInfo* info_;
    +
    160  MuxerListener* muxer_listener_;
    +
    161  ProgressListener* progress_listener_;
    +
    162  uint64_t progress_target_;
    +
    163  uint64_t accumulated_progress_;
    +
    164  uint64_t first_timestamp_;
    +
    165  int64_t sample_duration_;
    +
    166  // The position (in bytes) of the start of the Segment payload in the init
    +
    167  // file. This is also the size of the header before the SeekHead.
    +
    168  uint64_t segment_payload_pos_;
    +
    169 
    +
    170  // Durations in timescale.
    +
    171  uint64_t cluster_length_in_time_scale_;
    +
    172  uint64_t segment_length_in_time_scale_;
    +
    173 
    +
    174  int track_id_;
    +
    175 
    +
    176  DISALLOW_COPY_AND_ASSIGN(Segmenter);
    +
    177 };
    +
    178 
    +
    179 } // namespace webm
    +
    180 } // namespace media
    +
    181 } // namespace shaka
    +
    182 
    +
    183 #endif // MEDIA_FORMATS_WEBM_SEGMENTER_H_
    +
    Status WriteSegmentHeader(uint64_t file_size, MkvWriter *writer)
    Writes the Segment header to writer.
    Definition: segmenter.cc:221
    Abstract class holds stream information.
    Definition: stream_info.h:53
    - -
    Status AddSample(scoped_refptr< MediaSample > sample)
    Definition: segmenter.cc:120
    + +
    Status AddSample(scoped_refptr< MediaSample > sample)
    Definition: segmenter.cc:124
    +
    Status Initialize(std::unique_ptr< MkvWriter > writer, StreamInfo *info, ProgressListener *progress_listener, MuxerListener *muxer_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds)
    Definition: segmenter.cc:51
    This structure contains the list of configuration options for Muxer.
    Definition: muxer_options.h:18
    -
    Status SetCluster(uint64_t start_webm_timecode, uint64_t position, MkvWriter *writer)
    Creates a Cluster object with the given parameters.
    Definition: segmenter.cc:255
    +
    Status SetCluster(uint64_t start_webm_timecode, uint64_t position, MkvWriter *writer)
    Creates a Cluster object with the given parameters.
    Definition: segmenter.cc:259
    This class listens to progress updates events.
    virtual bool GetIndexRangeStartAndEnd(uint64_t *start, uint64_t *end)=0
    An implementation of IMkvWriter using our File type.
    Definition: mkv_writer.h:21
    -
    Status Initialize(std::unique_ptr< MkvWriter > writer, StreamInfo *info, ProgressListener *progress_listener, MuxerListener *muxer_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds)
    Definition: segmenter.cc:51
    - +
    KeySource is responsible for encryption key acquisition.
    Definition: key_source.h:30
    -
    void UpdateProgress(uint64_t progress)
    Update segmentation progress using ProgressListener.
    Definition: segmenter.cc:264
    +
    void UpdateProgress(uint64_t progress)
    Update segmentation progress using ProgressListener.
    Definition: segmenter.cc:268
    virtual bool GetInitRangeStartAndEnd(uint64_t *start, uint64_t *end)=0
    -
    uint64_t FromWebMTimecode(uint64_t time_webm_timecode)
    Converts the given time in WebM timecode to ISO BMFF timescale.
    Definition: segmenter.cc:211
    +
    uint64_t FromWebMTimecode(uint64_t time_webm_timecode)
    Converts the given time in WebM timecode to ISO BMFF timescale.
    Definition: segmenter.cc:215
    Holds video stream information.
    Holds audio stream information.
    -
    uint64_t FromBMFFTimescale(uint64_t time_timescale)
    Definition: segmenter.cc:204
    +
    uint64_t FromBMFFTimescale(uint64_t time_timescale)
    Definition: segmenter.cc:208
    diff --git a/docs/df/dde/ts__section__psi_8cc_source.html b/docs/df/dde/ts__section__psi_8cc_source.html index d44b1b3cac..3d8f7c63fa 100644 --- a/docs/df/dde/ts__section__psi_8cc_source.html +++ b/docs/df/dde/ts__section__psi_8cc_source.html @@ -230,7 +230,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/de2/structshaka_1_1media_1_1H264SEIRecoveryPoint.html b/docs/df/de2/structshaka_1_1media_1_1H264SEIRecoveryPoint.html index 49effb8635..189da0281f 100644 --- a/docs/df/de2/structshaka_1_1media_1_1H264SEIRecoveryPoint.html +++ b/docs/df/de2/structshaka_1_1media_1_1H264SEIRecoveryPoint.html @@ -118,7 +118,7 @@ int changing_slice_group_i diff --git a/docs/df/de3/text__track__config_8cc_source.html b/docs/df/de3/text__track__config_8cc_source.html index cec4601b1a..5df73e0b30 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/de9/segment__info_8h_source.html b/docs/df/de9/segment__info_8h_source.html index ea82fae499..94483cc2e3 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/df1/structshaka_1_1ContentProtectionElement-members.html b/docs/df/df1/structshaka_1_1ContentProtectionElement-members.html index 8e221a3914..e04ea5657e 100644 --- a/docs/df/df1/structshaka_1_1ContentProtectionElement-members.html +++ b/docs/df/df1/structshaka_1_1ContentProtectionElement-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/dfb/classshaka_1_1media_1_1UdpOptions-members.html b/docs/df/dfb/classshaka_1_1media_1_1UdpOptions-members.html index 343a8f9602..1510750a3f 100644 --- a/docs/df/dfb/classshaka_1_1media_1_1UdpOptions-members.html +++ b/docs/df/dfb/classshaka_1_1media_1_1UdpOptions-members.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dir_0494b8c96e3190a776d2b97ade9c8ddf.html b/docs/dir_0494b8c96e3190a776d2b97ade9c8ddf.html index 92f3c31eba..2bb1afa402 100644 --- a/docs/dir_0494b8c96e3190a776d2b97ade9c8ddf.html +++ b/docs/dir_0494b8c96e3190a776d2b97ade9c8ddf.html @@ -165,7 +165,7 @@ Files diff --git a/docs/dir_2618cd273dea54f184e42d7a562af818.html b/docs/dir_2618cd273dea54f184e42d7a562af818.html index 2f3163530b..46f312dac7 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 7af692e6f1..7218ad6d10 100644 --- a/docs/dir_279fd47bebb21302c25cfb685e84c359.html +++ b/docs/dir_279fd47bebb21302c25cfb685e84c359.html @@ -127,7 +127,7 @@ Files diff --git a/docs/dir_2eceb70145328c029a5f43350007537a.html b/docs/dir_2eceb70145328c029a5f43350007537a.html index a0cac15412..a52fe607c8 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 5d3253935e..1a3393d1d7 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 19f4218a38..a601ee060a 100644 --- a/docs/dir_3e9291fd7a18fdecc763294cb2628910.html +++ b/docs/dir_3e9291fd7a18fdecc763294cb2628910.html @@ -157,7 +157,7 @@ Files diff --git a/docs/dir_49627ef5ef0630f6cf11dd06344c4cf0.html b/docs/dir_49627ef5ef0630f6cf11dd06344c4cf0.html index 675bf3e639..9a53b58382 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 58046b130e..2bb356f883 100644 --- a/docs/dir_5039d854a18988ed1f1dbebc120ffbf7.html +++ b/docs/dir_5039d854a18988ed1f1dbebc120ffbf7.html @@ -181,7 +181,7 @@ Files diff --git a/docs/dir_65f7acfa8cf3a5f1edc11faa2428b914.html b/docs/dir_65f7acfa8cf3a5f1edc11faa2428b914.html index 1df0be4e08..4a8741c937 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 274708da62..3ef8d79a41 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 2437dafd3f..501d3f298c 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 ed80e6e710..77e7986b5b 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 859d517735..1dbf98dd5c 100644 --- a/docs/dir_aa73376d632f252584a1c0dfbefab2c4.html +++ b/docs/dir_aa73376d632f252584a1c0dfbefab2c4.html @@ -117,7 +117,7 @@ Files diff --git a/docs/dir_c6ada2450b25ab5438a4dba6c9b890af.html b/docs/dir_c6ada2450b25ab5438a4dba6c9b890af.html index 4fb7efbef0..e339b75be2 100644 --- a/docs/dir_c6ada2450b25ab5438a4dba6c9b890af.html +++ b/docs/dir_c6ada2450b25ab5438a4dba6c9b890af.html @@ -245,7 +245,7 @@ Files diff --git a/docs/dir_d422163b96683743ed3963d4aac17747.html b/docs/dir_d422163b96683743ed3963d4aac17747.html index c4075532a2..1e7be956cb 100644 --- a/docs/dir_d422163b96683743ed3963d4aac17747.html +++ b/docs/dir_d422163b96683743ed3963d4aac17747.html @@ -135,7 +135,7 @@ Files diff --git a/docs/dir_eeaeb49ac3913fcfb450d3ce9cc0141b.html b/docs/dir_eeaeb49ac3913fcfb450d3ce9cc0141b.html index 708130d3bf..8628af550f 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 688e1b03d3..8c6bec50a6 100644 --- a/docs/dir_f7dcbe7025bbacfc4b9a7dff6ad41d72.html +++ b/docs/dir_f7dcbe7025bbacfc4b9a7dff6ad41d72.html @@ -171,7 +171,7 @@ Files diff --git a/docs/files.html b/docs/files.html index 296392d423..4abf31122e 100644 --- a/docs/files.html +++ b/docs/files.html @@ -434,7 +434,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions.html b/docs/functions.html index d233d30648..31d2937dbb 100644 --- a/docs/functions.html +++ b/docs/functions.html @@ -240,7 +240,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_b.html b/docs/functions_b.html index 19247052cb..3cb1c9508c 100644 --- a/docs/functions_b.html +++ b/docs/functions_b.html @@ -240,7 +240,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_c.html b/docs/functions_c.html index 78ca38930d..fde2b00b74 100644 --- a/docs/functions_c.html +++ b/docs/functions_c.html @@ -244,7 +244,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_d.html b/docs/functions_d.html index e1d3ecafa2..e5a98b0632 100644 --- a/docs/functions_d.html +++ b/docs/functions_d.html @@ -162,7 +162,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_e.html b/docs/functions_e.html index 5b6076fc5b..030633b888 100644 --- a/docs/functions_e.html +++ b/docs/functions_e.html @@ -146,7 +146,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_enum.html b/docs/functions_enum.html index f51e7d74a9..0ff15b199a 100644 --- a/docs/functions_enum.html +++ b/docs/functions_enum.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_eval.html b/docs/functions_eval.html index 16ef257f52..e9128bc3b5 100644 --- a/docs/functions_eval.html +++ b/docs/functions_eval.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_f.html b/docs/functions_f.html index bdaac33798..43bbe5eab8 100644 --- a/docs/functions_f.html +++ b/docs/functions_f.html @@ -193,7 +193,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func.html b/docs/functions_func.html index 406d00de44..7d57ee12ed 100644 --- a/docs/functions_func.html +++ b/docs/functions_func.html @@ -240,7 +240,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_b.html b/docs/functions_func_b.html index d89b574584..6c19588b08 100644 --- a/docs/functions_func_b.html +++ b/docs/functions_func_b.html @@ -237,7 +237,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_c.html b/docs/functions_func_c.html index 870f5cb6c0..fcdf80dd1b 100644 --- a/docs/functions_func_c.html +++ b/docs/functions_func_c.html @@ -244,7 +244,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_d.html b/docs/functions_func_d.html index 707db375d3..fd71873d7c 100644 --- a/docs/functions_func_d.html +++ b/docs/functions_func_d.html @@ -162,7 +162,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_e.html b/docs/functions_func_e.html index 05256790e1..f4c153f2ce 100644 --- a/docs/functions_func_e.html +++ b/docs/functions_func_e.html @@ -146,7 +146,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_f.html b/docs/functions_func_f.html index c66166f767..0d78c4fb66 100644 --- a/docs/functions_func_f.html +++ b/docs/functions_func_f.html @@ -187,7 +187,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_g.html b/docs/functions_func_g.html index 6bb39ee836..00b9262cf8 100644 --- a/docs/functions_func_g.html +++ b/docs/functions_func_g.html @@ -259,7 +259,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_h.html b/docs/functions_func_h.html index eb2a09859e..1fb4d3a24a 100644 --- a/docs/functions_func_h.html +++ b/docs/functions_func_h.html @@ -154,7 +154,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_i.html b/docs/functions_func_i.html index bb89055c99..ec5e3a7ce5 100644 --- a/docs/functions_func_i.html +++ b/docs/functions_func_i.html @@ -146,13 +146,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , shaka::media::H264VideoSliceHeaderParser , shaka::media::H265VideoSliceHeaderParser , shaka::media::mp2t::PesPacketGenerator -, shaka::media::mp2t::TsSegmenter +, shaka::media::mp2t::TsSegmenter , shaka::media::mp2t::TsWriter -, shaka::media::mp4::Segmenter +, shaka::media::mp4::Segmenter , shaka::media::NalUnitToByteStreamConverter , shaka::media::VideoSliceHeaderParser , shaka::media::webm::Encryptor -, shaka::media::webm::Segmenter +, shaka::media::webm::Segmenter
  • InitializeFragment() : shaka::media::mp4::EncryptingFragmenter @@ -210,7 +210,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_k.html b/docs/functions_func_k.html index 3e79d34691..dc46e2c88e 100644 --- a/docs/functions_func_k.html +++ b/docs/functions_func_k.html @@ -129,7 +129,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_l.html b/docs/functions_func_l.html index 1d2f3db7a5..cb8baf550f 100644 --- a/docs/functions_func_l.html +++ b/docs/functions_func_l.html @@ -135,7 +135,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_m.html b/docs/functions_func_m.html index 30665bb741..23f825fd37 100644 --- a/docs/functions_func_m.html +++ b/docs/functions_func_m.html @@ -147,7 +147,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_n.html b/docs/functions_func_n.html index 871e694537..f648297438 100644 --- a/docs/functions_func_n.html +++ b/docs/functions_func_n.html @@ -172,7 +172,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_o.html b/docs/functions_func_o.html index 9d0c2f13c5..304acf16cb 100644 --- a/docs/functions_func_o.html +++ b/docs/functions_func_o.html @@ -193,7 +193,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_p.html b/docs/functions_func_p.html index a4bce6ea38..e8c76e5e41 100644 --- a/docs/functions_func_p.html +++ b/docs/functions_func_p.html @@ -231,7 +231,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_r.html b/docs/functions_func_r.html index 2b31d352d0..d807f149d8 100644 --- a/docs/functions_func_r.html +++ b/docs/functions_func_r.html @@ -201,7 +201,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_s.html b/docs/functions_func_s.html index 51ce330dd1..eaf4c86539 100644 --- a/docs/functions_func_s.html +++ b/docs/functions_func_s.html @@ -209,7 +209,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • SetKeySource() : shaka::media::Demuxer -, shaka::media::Muxer +, shaka::media::Muxer
  • SetMuxerListener() : shaka::media::Muxer @@ -285,7 +285,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_t.html b/docs/functions_func_t.html index 1853e27387..41e23b5621 100644 --- a/docs/functions_func_t.html +++ b/docs/functions_func_t.html @@ -179,7 +179,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_u.html b/docs/functions_func_u.html index 815e4d9eaa..72b16977fc 100644 --- a/docs/functions_func_u.html +++ b/docs/functions_func_u.html @@ -146,7 +146,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_v.html b/docs/functions_func_v.html index b58b37ad9b..2346eabe7a 100644 --- a/docs/functions_func_v.html +++ b/docs/functions_func_v.html @@ -135,7 +135,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_w.html b/docs/functions_func_w.html index 960b20c7d1..f6427cf25e 100644 --- a/docs/functions_func_w.html +++ b/docs/functions_func_w.html @@ -182,7 +182,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_x.html b/docs/functions_func_x.html index e50ce1b33c..d73087d137 100644 --- a/docs/functions_func_x.html +++ b/docs/functions_func_x.html @@ -129,7 +129,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_~.html b/docs/functions_func_~.html index 97d30baaac..3113cbf919 100644 --- a/docs/functions_func_~.html +++ b/docs/functions_func_~.html @@ -132,7 +132,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_g.html b/docs/functions_g.html index 8f9b5c0e8a..dd051f6ba5 100644 --- a/docs/functions_g.html +++ b/docs/functions_g.html @@ -259,7 +259,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_h.html b/docs/functions_h.html index 9fd53d71dd..f702049b41 100644 --- a/docs/functions_h.html +++ b/docs/functions_h.html @@ -154,7 +154,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_i.html b/docs/functions_i.html index f0cb276d31..ace4b6367f 100644 --- a/docs/functions_i.html +++ b/docs/functions_i.html @@ -149,13 +149,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , shaka::media::H264VideoSliceHeaderParser , shaka::media::H265VideoSliceHeaderParser , shaka::media::mp2t::PesPacketGenerator -, shaka::media::mp2t::TsSegmenter +, shaka::media::mp2t::TsSegmenter , shaka::media::mp2t::TsWriter -, shaka::media::mp4::Segmenter +, shaka::media::mp4::Segmenter , shaka::media::NalUnitToByteStreamConverter , shaka::media::VideoSliceHeaderParser , shaka::media::webm::Encryptor -, shaka::media::webm::Segmenter +, shaka::media::webm::Segmenter
  • InitializeFragment() : shaka::media::mp4::EncryptingFragmenter @@ -213,7 +213,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_k.html b/docs/functions_k.html index 928488893d..dfc1df1092 100644 --- a/docs/functions_k.html +++ b/docs/functions_k.html @@ -150,7 +150,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_l.html b/docs/functions_l.html index 9888c7ebda..4c49534443 100644 --- a/docs/functions_l.html +++ b/docs/functions_l.html @@ -135,7 +135,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_m.html b/docs/functions_m.html index 41b0e3c4f8..fea3e130f7 100644 --- a/docs/functions_m.html +++ b/docs/functions_m.html @@ -150,7 +150,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_n.html b/docs/functions_n.html index 741e7363dc..0fa22f93f1 100644 --- a/docs/functions_n.html +++ b/docs/functions_n.html @@ -178,7 +178,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_o.html b/docs/functions_o.html index a6a61419ca..e4e1b11b66 100644 --- a/docs/functions_o.html +++ b/docs/functions_o.html @@ -196,7 +196,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_p.html b/docs/functions_p.html index da2760e897..1129e9ee7a 100644 --- a/docs/functions_p.html +++ b/docs/functions_p.html @@ -237,7 +237,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_r.html b/docs/functions_r.html index 9daece2f6e..8e30d197ca 100644 --- a/docs/functions_r.html +++ b/docs/functions_r.html @@ -201,7 +201,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_s.html b/docs/functions_s.html index 3de67bfe80..7a153b2c2d 100644 --- a/docs/functions_s.html +++ b/docs/functions_s.html @@ -221,7 +221,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • SetKeySource() : shaka::media::Demuxer -, shaka::media::Muxer +, shaka::media::Muxer
  • SetMuxerListener() : shaka::media::Muxer @@ -300,7 +300,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_t.html b/docs/functions_t.html index cd29bf2f34..b414769c50 100644 --- a/docs/functions_t.html +++ b/docs/functions_t.html @@ -182,7 +182,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_type.html b/docs/functions_type.html index 9514dc24f6..22632cdc82 100644 --- a/docs/functions_type.html +++ b/docs/functions_type.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_u.html b/docs/functions_u.html index 34c6a3444c..61695a90ed 100644 --- a/docs/functions_u.html +++ b/docs/functions_u.html @@ -146,7 +146,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_v.html b/docs/functions_v.html index 9a9721a80c..bceafb9413 100644 --- a/docs/functions_v.html +++ b/docs/functions_v.html @@ -135,7 +135,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_vars.html b/docs/functions_vars.html index a103b86b1d..f59b10fd56 100644 --- a/docs/functions_vars.html +++ b/docs/functions_vars.html @@ -145,7 +145,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_w.html b/docs/functions_w.html index f8292b6187..091913050d 100644 --- a/docs/functions_w.html +++ b/docs/functions_w.html @@ -182,7 +182,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_x.html b/docs/functions_x.html index 7cf77355d7..a4d7e20e47 100644 --- a/docs/functions_x.html +++ b/docs/functions_x.html @@ -129,7 +129,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_~.html b/docs/functions_~.html index ae1ee88aec..3b83f62493 100644 --- a/docs/functions_~.html +++ b/docs/functions_~.html @@ -132,7 +132,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/hierarchy.html b/docs/hierarchy.html index 04f5791d40..bda2840ff3 100644 --- a/docs/hierarchy.html +++ b/docs/hierarchy.html @@ -370,7 +370,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/index.html b/docs/index.html index 2d078b0657..8332238df5 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 fce990cbfe..bcd948bb5e 100644 --- a/docs/namespacemembers.html +++ b/docs/namespacemembers.html @@ -130,7 +130,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/namespacemembers_func.html b/docs/namespacemembers_func.html index ef52b585b2..74a9b47b74 100644 --- a/docs/namespacemembers_func.html +++ b/docs/namespacemembers_func.html @@ -130,7 +130,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/namespaces.html b/docs/namespaces.html index 622d934512..38a5b97bb4 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_10.js b/docs/search/all_10.js index dfe659a09b..e5b631119c 100644 --- a/docs/search/all_10.js +++ b/docs/search/all_10.js @@ -52,7 +52,7 @@ var searchData= ['setid',['SetId',['../d1/d31/classshaka_1_1xml_1_1XmlNode.html#a7479055041708fb681957a838e7ecc1f',1,'shaka::xml::XmlNode']]], ['setintegerattribute',['SetIntegerAttribute',['../d1/d31/classshaka_1_1xml_1_1XmlNode.html#ab15dbcc1a051218dc16f44584276ad20',1,'shaka::xml::XmlNode']]], ['setiv',['SetIv',['../df/d87/classshaka_1_1media_1_1AesCryptor.html#a4875146da4761bb757d6b00132ae6fea',1,'shaka::media::AesCryptor']]], - ['setkeysource',['SetKeySource',['../dd/d17/classshaka_1_1media_1_1Demuxer.html#abfcf3a9a3f64c0e27497c72324049a1e',1,'shaka::media::Demuxer::SetKeySource()'],['../df/d46/classshaka_1_1media_1_1Muxer.html#a021fdae2adc98716b1c8ee7617ab917b',1,'shaka::media::Muxer::SetKeySource()']]], + ['setkeysource',['SetKeySource',['../dd/d17/classshaka_1_1media_1_1Demuxer.html#abfcf3a9a3f64c0e27497c72324049a1e',1,'shaka::media::Demuxer::SetKeySource()'],['../df/d46/classshaka_1_1media_1_1Muxer.html#ad9c8f69897171ab81db6e7e9c367b4ce',1,'shaka::media::Muxer::SetKeySource()']]], ['setmuxerlistener',['SetMuxerListener',['../df/d46/classshaka_1_1media_1_1Muxer.html#a0e76dd0a5c07dd538221459365ae824a',1,'shaka::media::Muxer']]], ['setprogrammaptablewriterfortesting',['SetProgramMapTableWriterForTesting',['../de/d64/classshaka_1_1media_1_1mp2t_1_1TsWriter.html#a6eeeadf8e60dc09378b5df7c62eb2bf0',1,'shaka::media::mp2t::TsWriter']]], ['setprogresslistener',['SetProgressListener',['../df/d46/classshaka_1_1media_1_1Muxer.html#a25a146d553c385aad70dbff6b3e87eec',1,'shaka::media::Muxer']]], diff --git a/docs/search/all_8.js b/docs/search/all_8.js index 0dc60ec063..b1c2777a66 100644 --- a/docs/search/all_8.js +++ b/docs/search/all_8.js @@ -5,7 +5,7 @@ var searchData= ['ignorebytes',['IgnoreBytes',['../d1/da1/classshaka_1_1media_1_1mp4_1_1BoxBuffer.html#a1a0c70e3124677ae08164f7b89f6a1d4',1,'shaka::media::mp4::BoxBuffer']]], ['init',['Init',['../d3/d0a/classshaka_1_1media_1_1MediaParser.html#adc7c91bebe75879abba91a56dae52153',1,'shaka::media::MediaParser::Init()'],['../d3/dc1/classshaka_1_1media_1_1mp2t_1_1Mp2tMediaParser.html#aa2aff12312827aacf2b7db6e2f792c52',1,'shaka::media::mp2t::Mp2tMediaParser::Init()'],['../d7/dd5/classshaka_1_1media_1_1mp4_1_1MP4MediaParser.html#acc87b9752a7f6e8c739109acbc02b69d',1,'shaka::media::mp4::MP4MediaParser::Init()'],['../de/df6/classshaka_1_1media_1_1mp4_1_1TrackRunIterator.html#ae9f02c32b4e2be8fc41a20f3f00f3494',1,'shaka::media::mp4::TrackRunIterator::Init()'],['../de/df6/classshaka_1_1media_1_1mp4_1_1TrackRunIterator.html#a4d39eaf8568da29b597411c56f50d86f',1,'shaka::media::mp4::TrackRunIterator::Init(const MovieFragment &moof)'],['../d2/ddb/classshaka_1_1media_1_1WebMMediaParser.html#a5cd5c298938e2c58c45f962b21e43b2e',1,'shaka::media::WebMMediaParser::Init()'],['../dc/df2/classshaka_1_1media_1_1WebVttMediaParser.html#af6c0fb7de806cccd0e1f9dd92b5310f3',1,'shaka::media::WebVttMediaParser::Init()'],['../dc/d18/classshaka_1_1media_1_1wvm_1_1WvmMediaParser.html#a6f931f1702724a9b19c3078a7832bc77',1,'shaka::media::wvm::WvmMediaParser::Init()'],['../d4/d70/classshaka_1_1DashIopMpdNotifier.html#a9dd9d655a538ff2618634ca1f9809478',1,'shaka::DashIopMpdNotifier::Init()'],['../de/d52/classshaka_1_1Representation.html#ae998409ae94f3ba12909a96e8f3f4f7e',1,'shaka::Representation::Init()'],['../d3/dd0/classshaka_1_1MpdNotifier.html#ad6171481d6fb437767b1f5b9e0dac1a3',1,'shaka::MpdNotifier::Init()'],['../d8/de1/classshaka_1_1SimpleMpdNotifier.html#a59bcb401b5ca8d5b893ec7da9461569f',1,'shaka::SimpleMpdNotifier::Init()']]], ['initcb',['InitCB',['../d3/d0a/classshaka_1_1media_1_1MediaParser.html#a95d25a50ad371304f1abce9971ce3704',1,'shaka::media::MediaParser']]], - ['initialize',['Initialize',['../dd/d17/classshaka_1_1media_1_1Demuxer.html#a436ed9fd2a3ddd78056ec7cf656fd9ad',1,'shaka::media::Demuxer::Initialize()'],['../d5/d66/classshaka_1_1media_1_1NalUnitToByteStreamConverter.html#aa84e36b83b1caa2b1f726c4d3cff3d6d',1,'shaka::media::NalUnitToByteStreamConverter::Initialize()'],['../dd/de4/classshaka_1_1media_1_1VideoSliceHeaderParser.html#a862422cdf78f370069055037338fa53d',1,'shaka::media::VideoSliceHeaderParser::Initialize()'],['../da/df0/classshaka_1_1media_1_1H264VideoSliceHeaderParser.html#a551bd1e2a852d1a3b23b77df8505b7f7',1,'shaka::media::H264VideoSliceHeaderParser::Initialize()'],['../d1/d79/classshaka_1_1media_1_1H265VideoSliceHeaderParser.html#a83a25520f713f4818a765ea3324a1438',1,'shaka::media::H265VideoSliceHeaderParser::Initialize()'],['../d5/de0/classshaka_1_1media_1_1mp2t_1_1PesPacketGenerator.html#aa0346189f99b2f0fc2c71da1543155fa',1,'shaka::media::mp2t::PesPacketGenerator::Initialize()'],['../de/dde/classshaka_1_1media_1_1mp2t_1_1TsSegmenter.html#a412be69ae8e18c5ceb3c48d1559c79c2',1,'shaka::media::mp2t::TsSegmenter::Initialize()'],['../de/d64/classshaka_1_1media_1_1mp2t_1_1TsWriter.html#a6bee605be771538f78633e2ecfc979c6',1,'shaka::media::mp2t::TsWriter::Initialize()'],['../d9/d26/classshaka_1_1media_1_1mp4_1_1Segmenter.html#a0440c751fd818964397d17330acc7afc',1,'shaka::media::mp4::Segmenter::Initialize()'],['../de/dfa/classshaka_1_1media_1_1webm_1_1Encryptor.html#afa6065049fad093b96643b9e3d70595f',1,'shaka::media::webm::Encryptor::Initialize()'],['../dd/dc5/classshaka_1_1media_1_1webm_1_1Segmenter.html#aa6b32c805c4e662d97244531723ce9eb',1,'shaka::media::webm::Segmenter::Initialize()']]], + ['initialize',['Initialize',['../dd/d17/classshaka_1_1media_1_1Demuxer.html#a436ed9fd2a3ddd78056ec7cf656fd9ad',1,'shaka::media::Demuxer::Initialize()'],['../d5/d66/classshaka_1_1media_1_1NalUnitToByteStreamConverter.html#aa84e36b83b1caa2b1f726c4d3cff3d6d',1,'shaka::media::NalUnitToByteStreamConverter::Initialize()'],['../dd/de4/classshaka_1_1media_1_1VideoSliceHeaderParser.html#a862422cdf78f370069055037338fa53d',1,'shaka::media::VideoSliceHeaderParser::Initialize()'],['../da/df0/classshaka_1_1media_1_1H264VideoSliceHeaderParser.html#a551bd1e2a852d1a3b23b77df8505b7f7',1,'shaka::media::H264VideoSliceHeaderParser::Initialize()'],['../d1/d79/classshaka_1_1media_1_1H265VideoSliceHeaderParser.html#a83a25520f713f4818a765ea3324a1438',1,'shaka::media::H265VideoSliceHeaderParser::Initialize()'],['../d5/de0/classshaka_1_1media_1_1mp2t_1_1PesPacketGenerator.html#aa0346189f99b2f0fc2c71da1543155fa',1,'shaka::media::mp2t::PesPacketGenerator::Initialize()'],['../de/dde/classshaka_1_1media_1_1mp2t_1_1TsSegmenter.html#acfb51e2e6163e7ae3c4fb62bda437466',1,'shaka::media::mp2t::TsSegmenter::Initialize()'],['../de/d64/classshaka_1_1media_1_1mp2t_1_1TsWriter.html#a6bee605be771538f78633e2ecfc979c6',1,'shaka::media::mp2t::TsWriter::Initialize()'],['../d9/d26/classshaka_1_1media_1_1mp4_1_1Segmenter.html#aaf326521fc1d46d31a7a3b94bcf17c24',1,'shaka::media::mp4::Segmenter::Initialize()'],['../de/dfa/classshaka_1_1media_1_1webm_1_1Encryptor.html#afa6065049fad093b96643b9e3d70595f',1,'shaka::media::webm::Encryptor::Initialize()'],['../dd/dc5/classshaka_1_1media_1_1webm_1_1Segmenter.html#abfde7f995368ea9e91ded9f4980903a6',1,'shaka::media::webm::Segmenter::Initialize()']]], ['initializefragment',['InitializeFragment',['../dc/df3/classshaka_1_1media_1_1mp4_1_1EncryptingFragmenter.html#a126294f104809268975fe04391902ad3',1,'shaka::media::mp4::EncryptingFragmenter::InitializeFragment()'],['../db/d95/classshaka_1_1media_1_1mp4_1_1Fragmenter.html#aa702c2af5ea5096d94f2943076a21e4a',1,'shaka::media::mp4::Fragmenter::InitializeFragment()']]], ['initializewithiv',['InitializeWithIv',['../df/d87/classshaka_1_1media_1_1AesCryptor.html#a41954df34b76b04d561892732dd0ec2f',1,'shaka::media::AesCryptor::InitializeWithIv()'],['../df/d2d/classshaka_1_1media_1_1AesCbcDecryptor.html#a71ff0b9654de96f9990b29c35fa9b7bf',1,'shaka::media::AesCbcDecryptor::InitializeWithIv()'],['../d3/d75/classshaka_1_1media_1_1AesEncryptor.html#a0695df5615cadf6977fdbac978daeffa',1,'shaka::media::AesEncryptor::InitializeWithIv()'],['../d3/dfe/classshaka_1_1media_1_1AesPatternCryptor.html#af878688f0f277f3f6757e85654439c34',1,'shaka::media::AesPatternCryptor::InitializeWithIv()']]], ['injectclockfortesting',['InjectClockForTesting',['../dc/da1/classshaka_1_1MpdBuilder.html#a7a4f96f12b589cfc4b5c2f44532eec53',1,'shaka::MpdBuilder']]], diff --git a/docs/search/functions_10.js b/docs/search/functions_10.js index 193957856c..c23dfc4468 100644 --- a/docs/search/functions_10.js +++ b/docs/search/functions_10.js @@ -27,7 +27,7 @@ var searchData= ['setid',['SetId',['../d1/d31/classshaka_1_1xml_1_1XmlNode.html#a7479055041708fb681957a838e7ecc1f',1,'shaka::xml::XmlNode']]], ['setintegerattribute',['SetIntegerAttribute',['../d1/d31/classshaka_1_1xml_1_1XmlNode.html#ab15dbcc1a051218dc16f44584276ad20',1,'shaka::xml::XmlNode']]], ['setiv',['SetIv',['../df/d87/classshaka_1_1media_1_1AesCryptor.html#a4875146da4761bb757d6b00132ae6fea',1,'shaka::media::AesCryptor']]], - ['setkeysource',['SetKeySource',['../dd/d17/classshaka_1_1media_1_1Demuxer.html#abfcf3a9a3f64c0e27497c72324049a1e',1,'shaka::media::Demuxer::SetKeySource()'],['../df/d46/classshaka_1_1media_1_1Muxer.html#a021fdae2adc98716b1c8ee7617ab917b',1,'shaka::media::Muxer::SetKeySource()']]], + ['setkeysource',['SetKeySource',['../dd/d17/classshaka_1_1media_1_1Demuxer.html#abfcf3a9a3f64c0e27497c72324049a1e',1,'shaka::media::Demuxer::SetKeySource()'],['../df/d46/classshaka_1_1media_1_1Muxer.html#ad9c8f69897171ab81db6e7e9c367b4ce',1,'shaka::media::Muxer::SetKeySource()']]], ['setmuxerlistener',['SetMuxerListener',['../df/d46/classshaka_1_1media_1_1Muxer.html#a0e76dd0a5c07dd538221459365ae824a',1,'shaka::media::Muxer']]], ['setprogrammaptablewriterfortesting',['SetProgramMapTableWriterForTesting',['../de/d64/classshaka_1_1media_1_1mp2t_1_1TsWriter.html#a6eeeadf8e60dc09378b5df7c62eb2bf0',1,'shaka::media::mp2t::TsWriter']]], ['setprogresslistener',['SetProgressListener',['../df/d46/classshaka_1_1media_1_1Muxer.html#a25a146d553c385aad70dbff6b3e87eec',1,'shaka::media::Muxer']]], diff --git a/docs/search/functions_8.js b/docs/search/functions_8.js index d553c9170d..7fab6e034d 100644 --- a/docs/search/functions_8.js +++ b/docs/search/functions_8.js @@ -3,7 +3,7 @@ var searchData= ['id',['id',['../de/d52/classshaka_1_1Representation.html#a6a3ba385179698e57a1451d1a26ad827',1,'shaka::Representation']]], ['ignorebytes',['IgnoreBytes',['../d1/da1/classshaka_1_1media_1_1mp4_1_1BoxBuffer.html#a1a0c70e3124677ae08164f7b89f6a1d4',1,'shaka::media::mp4::BoxBuffer']]], ['init',['Init',['../d3/d0a/classshaka_1_1media_1_1MediaParser.html#adc7c91bebe75879abba91a56dae52153',1,'shaka::media::MediaParser::Init()'],['../d3/dc1/classshaka_1_1media_1_1mp2t_1_1Mp2tMediaParser.html#aa2aff12312827aacf2b7db6e2f792c52',1,'shaka::media::mp2t::Mp2tMediaParser::Init()'],['../d7/dd5/classshaka_1_1media_1_1mp4_1_1MP4MediaParser.html#acc87b9752a7f6e8c739109acbc02b69d',1,'shaka::media::mp4::MP4MediaParser::Init()'],['../de/df6/classshaka_1_1media_1_1mp4_1_1TrackRunIterator.html#ae9f02c32b4e2be8fc41a20f3f00f3494',1,'shaka::media::mp4::TrackRunIterator::Init()'],['../de/df6/classshaka_1_1media_1_1mp4_1_1TrackRunIterator.html#a4d39eaf8568da29b597411c56f50d86f',1,'shaka::media::mp4::TrackRunIterator::Init(const MovieFragment &moof)'],['../d2/ddb/classshaka_1_1media_1_1WebMMediaParser.html#a5cd5c298938e2c58c45f962b21e43b2e',1,'shaka::media::WebMMediaParser::Init()'],['../dc/df2/classshaka_1_1media_1_1WebVttMediaParser.html#af6c0fb7de806cccd0e1f9dd92b5310f3',1,'shaka::media::WebVttMediaParser::Init()'],['../dc/d18/classshaka_1_1media_1_1wvm_1_1WvmMediaParser.html#a6f931f1702724a9b19c3078a7832bc77',1,'shaka::media::wvm::WvmMediaParser::Init()'],['../d4/d70/classshaka_1_1DashIopMpdNotifier.html#a9dd9d655a538ff2618634ca1f9809478',1,'shaka::DashIopMpdNotifier::Init()'],['../de/d52/classshaka_1_1Representation.html#ae998409ae94f3ba12909a96e8f3f4f7e',1,'shaka::Representation::Init()'],['../d3/dd0/classshaka_1_1MpdNotifier.html#ad6171481d6fb437767b1f5b9e0dac1a3',1,'shaka::MpdNotifier::Init()'],['../d8/de1/classshaka_1_1SimpleMpdNotifier.html#a59bcb401b5ca8d5b893ec7da9461569f',1,'shaka::SimpleMpdNotifier::Init()']]], - ['initialize',['Initialize',['../dd/d17/classshaka_1_1media_1_1Demuxer.html#a436ed9fd2a3ddd78056ec7cf656fd9ad',1,'shaka::media::Demuxer::Initialize()'],['../d5/d66/classshaka_1_1media_1_1NalUnitToByteStreamConverter.html#aa84e36b83b1caa2b1f726c4d3cff3d6d',1,'shaka::media::NalUnitToByteStreamConverter::Initialize()'],['../dd/de4/classshaka_1_1media_1_1VideoSliceHeaderParser.html#a862422cdf78f370069055037338fa53d',1,'shaka::media::VideoSliceHeaderParser::Initialize()'],['../da/df0/classshaka_1_1media_1_1H264VideoSliceHeaderParser.html#a551bd1e2a852d1a3b23b77df8505b7f7',1,'shaka::media::H264VideoSliceHeaderParser::Initialize()'],['../d1/d79/classshaka_1_1media_1_1H265VideoSliceHeaderParser.html#a83a25520f713f4818a765ea3324a1438',1,'shaka::media::H265VideoSliceHeaderParser::Initialize()'],['../d5/de0/classshaka_1_1media_1_1mp2t_1_1PesPacketGenerator.html#aa0346189f99b2f0fc2c71da1543155fa',1,'shaka::media::mp2t::PesPacketGenerator::Initialize()'],['../de/dde/classshaka_1_1media_1_1mp2t_1_1TsSegmenter.html#a412be69ae8e18c5ceb3c48d1559c79c2',1,'shaka::media::mp2t::TsSegmenter::Initialize()'],['../de/d64/classshaka_1_1media_1_1mp2t_1_1TsWriter.html#a6bee605be771538f78633e2ecfc979c6',1,'shaka::media::mp2t::TsWriter::Initialize()'],['../d9/d26/classshaka_1_1media_1_1mp4_1_1Segmenter.html#a0440c751fd818964397d17330acc7afc',1,'shaka::media::mp4::Segmenter::Initialize()'],['../de/dfa/classshaka_1_1media_1_1webm_1_1Encryptor.html#afa6065049fad093b96643b9e3d70595f',1,'shaka::media::webm::Encryptor::Initialize()'],['../dd/dc5/classshaka_1_1media_1_1webm_1_1Segmenter.html#aa6b32c805c4e662d97244531723ce9eb',1,'shaka::media::webm::Segmenter::Initialize()']]], + ['initialize',['Initialize',['../dd/d17/classshaka_1_1media_1_1Demuxer.html#a436ed9fd2a3ddd78056ec7cf656fd9ad',1,'shaka::media::Demuxer::Initialize()'],['../d5/d66/classshaka_1_1media_1_1NalUnitToByteStreamConverter.html#aa84e36b83b1caa2b1f726c4d3cff3d6d',1,'shaka::media::NalUnitToByteStreamConverter::Initialize()'],['../dd/de4/classshaka_1_1media_1_1VideoSliceHeaderParser.html#a862422cdf78f370069055037338fa53d',1,'shaka::media::VideoSliceHeaderParser::Initialize()'],['../da/df0/classshaka_1_1media_1_1H264VideoSliceHeaderParser.html#a551bd1e2a852d1a3b23b77df8505b7f7',1,'shaka::media::H264VideoSliceHeaderParser::Initialize()'],['../d1/d79/classshaka_1_1media_1_1H265VideoSliceHeaderParser.html#a83a25520f713f4818a765ea3324a1438',1,'shaka::media::H265VideoSliceHeaderParser::Initialize()'],['../d5/de0/classshaka_1_1media_1_1mp2t_1_1PesPacketGenerator.html#aa0346189f99b2f0fc2c71da1543155fa',1,'shaka::media::mp2t::PesPacketGenerator::Initialize()'],['../de/dde/classshaka_1_1media_1_1mp2t_1_1TsSegmenter.html#acfb51e2e6163e7ae3c4fb62bda437466',1,'shaka::media::mp2t::TsSegmenter::Initialize()'],['../de/d64/classshaka_1_1media_1_1mp2t_1_1TsWriter.html#a6bee605be771538f78633e2ecfc979c6',1,'shaka::media::mp2t::TsWriter::Initialize()'],['../d9/d26/classshaka_1_1media_1_1mp4_1_1Segmenter.html#aaf326521fc1d46d31a7a3b94bcf17c24',1,'shaka::media::mp4::Segmenter::Initialize()'],['../de/dfa/classshaka_1_1media_1_1webm_1_1Encryptor.html#afa6065049fad093b96643b9e3d70595f',1,'shaka::media::webm::Encryptor::Initialize()'],['../dd/dc5/classshaka_1_1media_1_1webm_1_1Segmenter.html#abfde7f995368ea9e91ded9f4980903a6',1,'shaka::media::webm::Segmenter::Initialize()']]], ['initializefragment',['InitializeFragment',['../dc/df3/classshaka_1_1media_1_1mp4_1_1EncryptingFragmenter.html#a126294f104809268975fe04391902ad3',1,'shaka::media::mp4::EncryptingFragmenter::InitializeFragment()'],['../db/d95/classshaka_1_1media_1_1mp4_1_1Fragmenter.html#aa702c2af5ea5096d94f2943076a21e4a',1,'shaka::media::mp4::Fragmenter::InitializeFragment()']]], ['initializewithiv',['InitializeWithIv',['../df/d87/classshaka_1_1media_1_1AesCryptor.html#a41954df34b76b04d561892732dd0ec2f',1,'shaka::media::AesCryptor::InitializeWithIv()'],['../df/d2d/classshaka_1_1media_1_1AesCbcDecryptor.html#a71ff0b9654de96f9990b29c35fa9b7bf',1,'shaka::media::AesCbcDecryptor::InitializeWithIv()'],['../d3/d75/classshaka_1_1media_1_1AesEncryptor.html#a0695df5615cadf6977fdbac978daeffa',1,'shaka::media::AesEncryptor::InitializeWithIv()'],['../d3/dfe/classshaka_1_1media_1_1AesPatternCryptor.html#af878688f0f277f3f6757e85654439c34',1,'shaka::media::AesPatternCryptor::InitializeWithIv()']]], ['injectclockfortesting',['InjectClockForTesting',['../dc/da1/classshaka_1_1MpdBuilder.html#a7a4f96f12b589cfc4b5c2f44532eec53',1,'shaka::MpdBuilder']]],