From 1610e2e4fdedb1937f2f8fe5d8dc5039f8800362 Mon Sep 17 00:00:00 2001 From: Widevine Buildbot Date: Tue, 12 Jul 2016 19:13:07 +0000 Subject: [PATCH] Generate SDK documents for commit f3d35b730cfb1b6d13f2c5c29e2b8ec7da02d9bb --- 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 | 15 +- ...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 | 6 +- .../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 | 2 +- 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 | 2 +- ...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 | 2 +- ...classshaka_1_1media_1_1FixedKeySource.html | 2 +- ...webm_1_1MultiSegmentSegmenter-members.html | 2 +- ...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 | 12 +- docs/d0/df3/packager__util_8cc_source.html | 398 ++- ...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 | 2 +- ...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 +- ...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 | 7 +- 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 | 2 +- ...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 | 2 +- ...assshaka_1_1SimpleMpdNotifier-members.html | 2 +- ...a_1_1H264ModificationOfPicNum-members.html | 2 +- .../d62/simple__mpd__notifier_8h_source.html | 4 +- ...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 | 4 +- ...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 | 908 +++--- ...haka_1_1media_1_1BufferWriter-members.html | 2 +- ...assshaka_1_1MockAdaptationSet-members.html | 2 +- docs/d2/dae/webm__muxer_8cc_source.html | 2 +- ...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 | 9 +- ...program__map__table__writer_8h_source.html | 2 +- ...a_1_1media_1_1mp4_1_1EditList-members.html | 2 +- ...edia_1_1webm_1_1MultiSegmentSegmenter.html | 2 +- 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 | 974 +++--- ...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 | 2 +- ...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 | 2 +- docs/d3/d72/fixed__key__source_8h_source.html | 2 +- ...ssshaka_1_1media_1_1webm_1_1WebMMuxer.html | 2 +- .../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 | 2 +- ...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 | 2 +- ...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 | 6 +- ...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 +- .../da7/segmenter__test__base_8cc_source.html | 391 +-- ...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 | 2 +- ..._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 | 4 +- ...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 | 4 +- ...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 | 54 +- ...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 +- ...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 | 2 +- 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 | 4 +- ...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 | 2 +- .../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 | 6 +- .../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 | 15 +- .../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 | 24 +- ...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 | 2 +- ...media_1_1mp4_1_1MultiSegmentSegmenter.html | 2 +- ...1_1WebMContentEncodingsClient-members.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 | 28 +- ...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 | 10 +- ...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 | 2 +- ...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 | 2 +- ..._1_1CompositionOffsetIterator-members.html | 2 +- ...ntent__protection__element_8cc_source.html | 2 +- docs/d9/db9/muxer_8cc_source.html | 2 +- .../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 | 2 +- ...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 +- .../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 | 2 +- ...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 | 2 +- ..._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 | 2 +- docs/da/d88/mp4__muxer_8cc_source.html | 2 +- ...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 | 2 +- ...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 | 2 +- ...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 | 54 +- .../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 | 2 +- ..._1_1mp2t_1_1ContinuityCounter-members.html | 2 +- docs/db/d7e/muxer__options_8cc_source.html | 36 +- ...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 | 2 +- ...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 | 10 +- ...ed__key__encryption__flags_8cc_source.html | 2 +- .../d3c/webm__cluster__parser_8h_source.html | 2 +- docs/dc/d3f/key__source_8h_source.html | 2 +- .../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 | 817 ++--- ...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 | 2 +- ...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 | 14 +- ...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 | 2 +- ...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 | 2680 +++++++++-------- docs/dd/d12/mpd__writer_8cc_source.html | 4 +- ...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 | 14 +- ...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 | 2 +- ...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 | 2 +- ...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 | 12 +- ...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 | 18 +- ...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/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 | 2 +- .../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 | 2 +- ...shaka_1_1media_1_1mp2t_1_1TsSegmenter.html | 2 +- ..._1_1media_1_1mp4_1_1MediaData-members.html | 2 +- ..._1media_1_1DecoderConfigurationRecord.html | 2 +- ...a_1_1media_1_1mp4_1_1MP4Muxer-members.html | 2 +- .../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 | 2 +- .../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 | 2 +- ...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 | 2 +- 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 | 20 +- 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 +- .../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 | 2 +- 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 | 2 +- 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 | 2 +- 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 | 9 +- docs/functions_r.html | 2 +- docs/functions_s.html | 2 +- docs/functions_t.html | 2 +- docs/functions_type.html | 2 +- docs/functions_u.html | 2 +- docs/functions_v.html | 2 +- docs/functions_vars.html | 5 +- 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_e.js | 1 - docs/search/variables_5.js | 1 - 943 files changed, 4190 insertions(+), 4208 deletions(-) diff --git a/docs/annotated.html b/docs/annotated.html index 02e172e346..546e489c25 100644 --- a/docs/annotated.html +++ b/docs/annotated.html @@ -371,7 +371,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/classes.html b/docs/classes.html index e6dcf2eff2..12ce919b2b 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 a6a2e44159..5fd4caf87d 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 b3dddeff47..42fd6f2887 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 fe376c87c4..e246a27291 100644 --- a/docs/d0/d06/mpd__flags_8cc_source.html +++ b/docs/d0/d06/mpd__flags_8cc_source.html @@ -140,7 +140,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d0e/classshaka_1_1media_1_1HttpKeyFetcher-members.html b/docs/d0/d0e/classshaka_1_1media_1_1HttpKeyFetcher-members.html index 268b4721e3..6a20c5ad9d 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 c840315995..f10717ba74 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 3485114610..37fc1166f6 100644 --- a/docs/d0/d0e/muxer__options_8h_source.html +++ b/docs/d0/d0e/muxer__options_8h_source.html @@ -126,16 +126,13 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
64  std::string temp_dir;
65 
68  uint32_t bandwidth;
-
69 
-
71  std::string packager_version_string;
-
72 };
+
69 };
+
70 
+
71 } // namespace media
+
72 } // namespace shaka
73 
-
74 } // namespace media
-
75 } // namespace shaka
-
76 
-
77 #endif // MEDIA_BASE_MUXER_OPTIONS_H_
+
74 #endif // MEDIA_BASE_MUXER_OPTIONS_H_
bool fragment_sap_aligned
Definition: muxer_options.h:43
-
std::string packager_version_string
Specify the version string to be embedded in the output files.
Definition: muxer_options.h:71
std::string output_file_name
Definition: muxer_options.h:55
bool segment_sap_aligned
Definition: muxer_options.h:38
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
@@ -149,7 +146,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 32fe44454e..96856e827e 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 4fbedb6f13..e256e65c7a 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 fdcf220656..a5c0e15bf5 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 bba6a8fde8..d607838198 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 3a461c46e0..eb496266a9 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 989437fa89..463861b456 100644 --- a/docs/d0/d27/structshaka_1_1media_1_1MuxerOptions.html +++ b/docs/d0/d27/structshaka_1_1media_1_1MuxerOptions.html @@ -123,10 +123,6 @@ std::string   uint32_t bandwidth   - -std::string packager_version_string - Specify the version string to be embedded in the output files.

Detailed Description

This structure contains the list of configuration options for Muxer.

@@ -275,7 +271,7 @@ std::string  diff --git a/docs/d0/d30/mock__mpd__notifier_8h_source.html b/docs/d0/d30/mock__mpd__notifier_8h_source.html index 2aa88a4665..6870a2e26c 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 98acdd825b..abde4fd267 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 84835c9fee..6b652a6584 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 422f9490e0..07b3bcdfad 100644 --- a/docs/d0/d35/es__descriptor_8cc_source.html +++ b/docs/d0/d35/es__descriptor_8cc_source.html @@ -282,7 +282,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d3a/hls__notify__muxer__listener_8cc_source.html b/docs/d0/d3a/hls__notify__muxer__listener_8cc_source.html index 59ba12403d..82c6ede151 100644 --- a/docs/d0/d3a/hls__notify__muxer__listener_8cc_source.html +++ b/docs/d0/d3a/hls__notify__muxer__listener_8cc_source.html @@ -220,7 +220,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 79ee1c886e..6949574427 100644 --- a/docs/d0/d3a/webm__constants_8h_source.html +++ b/docs/d0/d3a/webm__constants_8h_source.html @@ -313,7 +313,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d3c/structshaka_1_1media_1_1mp4_1_1ProtectionSystemSpecificHeader.html b/docs/d0/d3c/structshaka_1_1media_1_1mp4_1_1ProtectionSystemSpecificHeader.html index fbf325d079..9763e53dd0 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 5da4b04bd8..6bfe934bc3 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 106e3fe30e..6eb4a87126 100644 --- a/docs/d0/d42/widevine__encryption__flags_8cc_source.html +++ b/docs/d0/d42/widevine__encryption__flags_8cc_source.html @@ -258,7 +258,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d46/fourccs_8h_source.html b/docs/d0/d46/fourccs_8h_source.html index af3a6ecdad..d85ef16cc8 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 614bc64b9c..d12c016ba2 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 1b461d156c..13d0537eb9 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 da4cd13e6e..110020c1c9 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 5294b6f571..76e52ccc46 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 b8cd11cf73..28454a7dd6 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 @@ -117,7 +117,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 1d9bbcec97..fa196b1454 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 b55f2e2dcc..03c8c8da9e 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 6dd30cfeb8..d116881c94 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 fadf2285ff..dd156188ca 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 b960ad0d6a..170d640ee0 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 a02ec5fad3..978fdc291b 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 eb31c4f4fa..1d9c95ec5c 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 4acc9dab78..e9a7259b8d 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 ac09ce8eb7..40587444fb 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 cc5e11a2cf..afc0b09c5d 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 2f797b524e..8f9a14ac0f 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 71cf89ce68..d94bbe9cc7 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 579378fc6e..a92f7c23d2 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 30e94f4b6a..40864be90c 100644 --- a/docs/d0/da6/stream__descriptor_8cc_source.html +++ b/docs/d0/da6/stream__descriptor_8cc_source.html @@ -295,7 +295,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 6875db52a6..e44950084e 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 @@ -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 be3a64012d..8387957d79 100644 --- a/docs/d0/dac/classshaka_1_1media_1_1FixedKeySource.html +++ b/docs/d0/dac/classshaka_1_1media_1_1FixedKeySource.html @@ -479,7 +479,7 @@ Additional Inherited Members 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 d80c4d83fb..34683cccb9 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 @@ -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 815b1348ba..15c25c2cee 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 449239dce2..b935f841cb 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 a4a6b39751..64d91a51e2 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 f4ed05b54a..601d718147 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 04ede25b59..10a3afd5d8 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 7cfab0d044..4c3a15e9c7 100644 --- a/docs/d0/dd6/webm__crypto__helpers_8cc_source.html +++ b/docs/d0/dd6/webm__crypto__helpers_8cc_source.html @@ -156,7 +156,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/dd8/classshaka_1_1media_1_1AesCtrEncryptor.html b/docs/d0/dd8/classshaka_1_1media_1_1AesCtrEncryptor.html index 1d161caf60..83a0855d0c 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 b25ba8e042..b6abbbd480 100644 --- a/docs/d0/dee/segmenter__test__base_8h_source.html +++ b/docs/d0/dee/segmenter__test__base_8h_source.html @@ -199,23 +199,23 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
116 #endif // MEDIA_FORMATS_WEBM_SEGMENTER_TEST_UTILS_H_
Abstract class holds stream information.
Definition: stream_info.h:26
-
VideoStreamInfo * CreateVideoStreamInfo() const
Creates a video stream info object for testing.
+
VideoStreamInfo * CreateVideoStreamInfo() const
Creates a video stream info object for testing.
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
-
std::string OutputFileName() const
Gets the file name of the current output file.
+
std::string OutputFileName() const
Gets the file name of the current output file.
void CreateAndInitializeSegmenter(const MuxerOptions &options, StreamInfo *info, KeySource *key_source, scoped_ptr< webm::Segmenter > *result) const
Creates a Segmenter of the given type and initializes it.
-
scoped_refptr< MediaSample > CreateSample(KeyFrameFlag key_frame_flag, uint64_t duration, SideDataFlag side_data_flag)
Creates a new media sample.
+
scoped_refptr< MediaSample > CreateSample(KeyFrameFlag key_frame_flag, uint64_t duration, SideDataFlag side_data_flag)
Creates a new media sample.
An implementation of IMkvWriter using our File type.
Definition: mkv_writer.h:21
-
MuxerOptions CreateMuxerOptions() const
Creates a Muxer options object for testing.
+
MuxerOptions CreateMuxerOptions() const
Creates a Muxer options object for testing.
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:31
Holds video stream information.
-
std::string TemplateFileName(int number) const
Gets the file name of the given template file.
+
std::string TemplateFileName(int number) const
Gets the file name of the given template file.
diff --git a/docs/d0/df3/packager__util_8cc_source.html b/docs/d0/df3/packager__util_8cc_source.html index 803f978aa7..096cb654fa 100644 --- a/docs/d0/df3/packager__util_8cc_source.html +++ b/docs/d0/df3/packager__util_8cc_source.html @@ -115,216 +115,202 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
26 #include "packager/mpd/base/mpd_builder.h"
27 
28 DEFINE_bool(dump_stream_info, false, "Dump demuxed stream info.");
-
29 DEFINE_bool(override_version_string,
-
30  false,
-
31  "Override packager version string in the generated outputs with "
-
32  "--test_version_string if it is set to true. Should be used for "
-
33  "testing only.");
-
34 DEFINE_string(test_version_string,
-
35  "",
-
36  "Packager version string for testing. Ignored if "
-
37  "--override_version_string is false. Should be used for testing "
-
38  "only.");
-
39 
-
40 namespace shaka {
-
41 namespace media {
-
42 
-
43 void DumpStreamInfo(const std::vector<MediaStream*>& streams) {
-
44  printf("Found %zu stream(s).\n", streams.size());
-
45  for (size_t i = 0; i < streams.size(); ++i)
-
46  printf("Stream [%zu] %s\n", i, streams[i]->info()->ToString().c_str());
-
47 }
-
48 
-
49 scoped_ptr<RequestSigner> CreateSigner() {
-
50  scoped_ptr<RequestSigner> signer;
-
51 
-
52  if (!FLAGS_aes_signing_key.empty()) {
-
53  signer.reset(AesRequestSigner::CreateSigner(
-
54  FLAGS_signer, FLAGS_aes_signing_key, FLAGS_aes_signing_iv));
-
55  if (!signer) {
-
56  LOG(ERROR) << "Cannot create an AES signer object from '"
-
57  << FLAGS_aes_signing_key << "':'" << FLAGS_aes_signing_iv
-
58  << "'.";
-
59  return scoped_ptr<RequestSigner>();
-
60  }
-
61  } else if (!FLAGS_rsa_signing_key_path.empty()) {
-
62  std::string rsa_private_key;
-
63  if (!File::ReadFileToString(FLAGS_rsa_signing_key_path.c_str(),
-
64  &rsa_private_key)) {
-
65  LOG(ERROR) << "Failed to read from '" << FLAGS_rsa_signing_key_path
-
66  << "'.";
-
67  return scoped_ptr<RequestSigner>();
-
68  }
-
69  signer.reset(RsaRequestSigner::CreateSigner(FLAGS_signer, rsa_private_key));
-
70  if (!signer) {
-
71  LOG(ERROR) << "Cannot create a RSA signer object from '"
-
72  << FLAGS_rsa_signing_key_path << "'.";
-
73  return scoped_ptr<RequestSigner>();
-
74  }
-
75  }
-
76  return signer.Pass();
-
77 }
-
78 
-
79 scoped_ptr<KeySource> CreateEncryptionKeySource() {
-
80  scoped_ptr<KeySource> encryption_key_source;
-
81  if (FLAGS_enable_widevine_encryption) {
-
82  scoped_ptr<WidevineKeySource> widevine_key_source(
-
83  new WidevineKeySource(FLAGS_key_server_url, FLAGS_include_common_pssh));
-
84  if (!FLAGS_signer.empty()) {
-
85  scoped_ptr<RequestSigner> request_signer(CreateSigner());
-
86  if (!request_signer)
-
87  return scoped_ptr<KeySource>();
-
88  widevine_key_source->set_signer(request_signer.Pass());
-
89  }
-
90 
-
91  std::vector<uint8_t> content_id;
-
92  if (!base::HexStringToBytes(FLAGS_content_id, &content_id)) {
-
93  LOG(ERROR) << "Invalid content_id hex string specified.";
-
94  return scoped_ptr<KeySource>();
-
95  }
-
96  Status status = widevine_key_source->FetchKeys(content_id, FLAGS_policy);
-
97  if (!status.ok()) {
-
98  LOG(ERROR) << "Widevine encryption key source failed to fetch keys: "
-
99  << status.ToString();
-
100  return scoped_ptr<KeySource>();
-
101  }
-
102  encryption_key_source = widevine_key_source.Pass();
-
103  } else if (FLAGS_enable_fixed_key_encryption) {
-
104  encryption_key_source = FixedKeySource::CreateFromHexStrings(
-
105  FLAGS_key_id, FLAGS_key, FLAGS_pssh, FLAGS_iv);
-
106  }
-
107  return encryption_key_source.Pass();
-
108 }
-
109 
-
110 scoped_ptr<KeySource> CreateDecryptionKeySource() {
-
111  scoped_ptr<KeySource> decryption_key_source;
-
112  if (FLAGS_enable_widevine_decryption) {
-
113  scoped_ptr<WidevineKeySource> widevine_key_source(
-
114  new WidevineKeySource(FLAGS_key_server_url, FLAGS_include_common_pssh));
-
115  if (!FLAGS_signer.empty()) {
-
116  scoped_ptr<RequestSigner> request_signer(CreateSigner());
-
117  if (!request_signer)
-
118  return scoped_ptr<KeySource>();
-
119  widevine_key_source->set_signer(request_signer.Pass());
-
120  }
+
29 
+
30 namespace shaka {
+
31 namespace media {
+
32 
+
33 void DumpStreamInfo(const std::vector<MediaStream*>& streams) {
+
34  printf("Found %zu stream(s).\n", streams.size());
+
35  for (size_t i = 0; i < streams.size(); ++i)
+
36  printf("Stream [%zu] %s\n", i, streams[i]->info()->ToString().c_str());
+
37 }
+
38 
+
39 scoped_ptr<RequestSigner> CreateSigner() {
+
40  scoped_ptr<RequestSigner> signer;
+
41 
+
42  if (!FLAGS_aes_signing_key.empty()) {
+
43  signer.reset(AesRequestSigner::CreateSigner(
+
44  FLAGS_signer, FLAGS_aes_signing_key, FLAGS_aes_signing_iv));
+
45  if (!signer) {
+
46  LOG(ERROR) << "Cannot create an AES signer object from '"
+
47  << FLAGS_aes_signing_key << "':'" << FLAGS_aes_signing_iv
+
48  << "'.";
+
49  return scoped_ptr<RequestSigner>();
+
50  }
+
51  } else if (!FLAGS_rsa_signing_key_path.empty()) {
+
52  std::string rsa_private_key;
+
53  if (!File::ReadFileToString(FLAGS_rsa_signing_key_path.c_str(),
+
54  &rsa_private_key)) {
+
55  LOG(ERROR) << "Failed to read from '" << FLAGS_rsa_signing_key_path
+
56  << "'.";
+
57  return scoped_ptr<RequestSigner>();
+
58  }
+
59  signer.reset(RsaRequestSigner::CreateSigner(FLAGS_signer, rsa_private_key));
+
60  if (!signer) {
+
61  LOG(ERROR) << "Cannot create a RSA signer object from '"
+
62  << FLAGS_rsa_signing_key_path << "'.";
+
63  return scoped_ptr<RequestSigner>();
+
64  }
+
65  }
+
66  return signer.Pass();
+
67 }
+
68 
+
69 scoped_ptr<KeySource> CreateEncryptionKeySource() {
+
70  scoped_ptr<KeySource> encryption_key_source;
+
71  if (FLAGS_enable_widevine_encryption) {
+
72  scoped_ptr<WidevineKeySource> widevine_key_source(
+
73  new WidevineKeySource(FLAGS_key_server_url, FLAGS_include_common_pssh));
+
74  if (!FLAGS_signer.empty()) {
+
75  scoped_ptr<RequestSigner> request_signer(CreateSigner());
+
76  if (!request_signer)
+
77  return scoped_ptr<KeySource>();
+
78  widevine_key_source->set_signer(request_signer.Pass());
+
79  }
+
80 
+
81  std::vector<uint8_t> content_id;
+
82  if (!base::HexStringToBytes(FLAGS_content_id, &content_id)) {
+
83  LOG(ERROR) << "Invalid content_id hex string specified.";
+
84  return scoped_ptr<KeySource>();
+
85  }
+
86  Status status = widevine_key_source->FetchKeys(content_id, FLAGS_policy);
+
87  if (!status.ok()) {
+
88  LOG(ERROR) << "Widevine encryption key source failed to fetch keys: "
+
89  << status.ToString();
+
90  return scoped_ptr<KeySource>();
+
91  }
+
92  encryption_key_source = widevine_key_source.Pass();
+
93  } else if (FLAGS_enable_fixed_key_encryption) {
+
94  encryption_key_source = FixedKeySource::CreateFromHexStrings(
+
95  FLAGS_key_id, FLAGS_key, FLAGS_pssh, FLAGS_iv);
+
96  }
+
97  return encryption_key_source.Pass();
+
98 }
+
99 
+
100 scoped_ptr<KeySource> CreateDecryptionKeySource() {
+
101  scoped_ptr<KeySource> decryption_key_source;
+
102  if (FLAGS_enable_widevine_decryption) {
+
103  scoped_ptr<WidevineKeySource> widevine_key_source(
+
104  new WidevineKeySource(FLAGS_key_server_url, FLAGS_include_common_pssh));
+
105  if (!FLAGS_signer.empty()) {
+
106  scoped_ptr<RequestSigner> request_signer(CreateSigner());
+
107  if (!request_signer)
+
108  return scoped_ptr<KeySource>();
+
109  widevine_key_source->set_signer(request_signer.Pass());
+
110  }
+
111 
+
112  decryption_key_source = widevine_key_source.Pass();
+
113  } else if (FLAGS_enable_fixed_key_decryption) {
+
114  const char kNoPssh[] = "";
+
115  const char kNoIv[] = "";
+
116  decryption_key_source = FixedKeySource::CreateFromHexStrings(
+
117  FLAGS_key_id, FLAGS_key, kNoPssh, kNoIv);
+
118  }
+
119  return decryption_key_source.Pass();
+
120 }
121 
-
122  decryption_key_source = widevine_key_source.Pass();
-
123  } else if (FLAGS_enable_fixed_key_decryption) {
-
124  const char kNoPssh[] = "";
-
125  const char kNoIv[] = "";
-
126  decryption_key_source = FixedKeySource::CreateFromHexStrings(
-
127  FLAGS_key_id, FLAGS_key, kNoPssh, kNoIv);
-
128  }
-
129  return decryption_key_source.Pass();
-
130 }
-
131 
-
132 bool AssignFlagsFromProfile() {
-
133  bool single_segment = FLAGS_single_segment;
-
134  if (FLAGS_profile == "on-demand") {
-
135  single_segment = true;
-
136  } else if (FLAGS_profile == "live") {
-
137  single_segment = false;
-
138  } else if (FLAGS_profile != "") {
-
139  fprintf(stderr, "ERROR: --profile '%s' is not supported.\n",
-
140  FLAGS_profile.c_str());
-
141  return false;
-
142  }
-
143 
-
144  if (FLAGS_single_segment != single_segment) {
-
145  FLAGS_single_segment = single_segment;
-
146  fprintf(stdout, "Profile %s: set --single_segment to %s.\n",
-
147  FLAGS_profile.c_str(), single_segment ? "true" : "false");
-
148  }
-
149  return true;
-
150 }
-
151 
-
152 bool GetMuxerOptions(MuxerOptions* muxer_options) {
-
153  DCHECK(muxer_options);
+
122 bool AssignFlagsFromProfile() {
+
123  bool single_segment = FLAGS_single_segment;
+
124  if (FLAGS_profile == "on-demand") {
+
125  single_segment = true;
+
126  } else if (FLAGS_profile == "live") {
+
127  single_segment = false;
+
128  } else if (FLAGS_profile != "") {
+
129  fprintf(stderr, "ERROR: --profile '%s' is not supported.\n",
+
130  FLAGS_profile.c_str());
+
131  return false;
+
132  }
+
133 
+
134  if (FLAGS_single_segment != single_segment) {
+
135  FLAGS_single_segment = single_segment;
+
136  fprintf(stdout, "Profile %s: set --single_segment to %s.\n",
+
137  FLAGS_profile.c_str(), single_segment ? "true" : "false");
+
138  }
+
139  return true;
+
140 }
+
141 
+
142 bool GetMuxerOptions(MuxerOptions* muxer_options) {
+
143  DCHECK(muxer_options);
+
144 
+
145  muxer_options->single_segment = FLAGS_single_segment;
+
146  muxer_options->segment_duration = FLAGS_segment_duration;
+
147  muxer_options->fragment_duration = FLAGS_fragment_duration;
+
148  muxer_options->segment_sap_aligned = FLAGS_segment_sap_aligned;
+
149  muxer_options->fragment_sap_aligned = FLAGS_fragment_sap_aligned;
+
150  muxer_options->num_subsegments_per_sidx = FLAGS_num_subsegments_per_sidx;
+
151  muxer_options->temp_dir = FLAGS_temp_dir;
+
152  return true;
+
153 }
154 
-
155  muxer_options->single_segment = FLAGS_single_segment;
-
156  muxer_options->segment_duration = FLAGS_segment_duration;
-
157  muxer_options->fragment_duration = FLAGS_fragment_duration;
-
158  muxer_options->segment_sap_aligned = FLAGS_segment_sap_aligned;
-
159  muxer_options->fragment_sap_aligned = FLAGS_fragment_sap_aligned;
-
160  muxer_options->num_subsegments_per_sidx = FLAGS_num_subsegments_per_sidx;
-
161  muxer_options->temp_dir = FLAGS_temp_dir;
-
162  if (FLAGS_override_version_string)
-
163  muxer_options->packager_version_string = FLAGS_test_version_string;
+
155 bool GetMpdOptions(MpdOptions* mpd_options) {
+
156  DCHECK(mpd_options);
+
157 
+
158  mpd_options->availability_time_offset = FLAGS_availability_time_offset;
+
159  mpd_options->minimum_update_period = FLAGS_minimum_update_period;
+
160  mpd_options->min_buffer_time = FLAGS_min_buffer_time;
+
161  mpd_options->time_shift_buffer_depth = FLAGS_time_shift_buffer_depth;
+
162  mpd_options->suggested_presentation_delay =
+
163  FLAGS_suggested_presentation_delay;
164  return true;
165 }
166 
-
167 bool GetMpdOptions(MpdOptions* mpd_options) {
-
168  DCHECK(mpd_options);
-
169 
-
170  mpd_options->availability_time_offset = FLAGS_availability_time_offset;
-
171  mpd_options->minimum_update_period = FLAGS_minimum_update_period;
-
172  mpd_options->min_buffer_time = FLAGS_min_buffer_time;
-
173  mpd_options->time_shift_buffer_depth = FLAGS_time_shift_buffer_depth;
-
174  mpd_options->suggested_presentation_delay =
-
175  FLAGS_suggested_presentation_delay;
-
176  if (FLAGS_override_version_string)
-
177  mpd_options->packager_version_string = FLAGS_test_version_string;
-
178  return true;
-
179 }
-
180 
-
181 MediaStream* FindFirstStreamOfType(const std::vector<MediaStream*>& streams,
-
182  StreamType stream_type) {
-
183  typedef std::vector<MediaStream*>::const_iterator StreamIterator;
-
184  for (StreamIterator it = streams.begin(); it != streams.end(); ++it) {
-
185  if ((*it)->info()->stream_type() == stream_type)
-
186  return *it;
-
187  }
-
188  return NULL;
-
189 }
-
190 MediaStream* FindFirstVideoStream(const std::vector<MediaStream*>& streams) {
-
191  return FindFirstStreamOfType(streams, kStreamVideo);
-
192 }
-
193 MediaStream* FindFirstAudioStream(const std::vector<MediaStream*>& streams) {
-
194  return FindFirstStreamOfType(streams, kStreamAudio);
-
195 }
-
196 
-
197 bool AddStreamToMuxer(const std::vector<MediaStream*>& streams,
-
198  const std::string& stream_selector,
-
199  const std::string& language_override,
-
200  Muxer* muxer) {
-
201  DCHECK(muxer);
-
202 
-
203  MediaStream* stream = NULL;
-
204  if (stream_selector == "video") {
-
205  stream = FindFirstVideoStream(streams);
-
206  } else if (stream_selector == "audio") {
-
207  stream = FindFirstAudioStream(streams);
-
208  } else {
-
209  // Expect stream_selector to be a zero based stream id.
-
210  size_t stream_id;
-
211  if (!base::StringToSizeT(stream_selector, &stream_id) ||
-
212  stream_id >= streams.size()) {
-
213  LOG(ERROR) << "Invalid argument --stream=" << stream_selector << "; "
-
214  << "should be 'audio', 'video', or a number within [0, "
-
215  << streams.size() - 1 << "].";
-
216  return false;
-
217  }
-
218  stream = streams[stream_id];
-
219  DCHECK(stream);
-
220  }
-
221 
-
222  // This could occur only if stream_selector=audio|video and the corresponding
-
223  // stream does not exist in the input.
-
224  if (!stream) {
-
225  LOG(ERROR) << "No " << stream_selector << " stream found in the input.";
-
226  return false;
-
227  }
-
228 
-
229  if (!language_override.empty()) {
-
230  stream->info()->set_language(language_override);
-
231  }
-
232 
-
233  muxer->AddStream(stream);
-
234  return true;
-
235 }
-
236 
-
237 } // namespace media
-
238 } // namespace shaka
+
167 MediaStream* FindFirstStreamOfType(const std::vector<MediaStream*>& streams,
+
168  StreamType stream_type) {
+
169  typedef std::vector<MediaStream*>::const_iterator StreamIterator;
+
170  for (StreamIterator it = streams.begin(); it != streams.end(); ++it) {
+
171  if ((*it)->info()->stream_type() == stream_type)
+
172  return *it;
+
173  }
+
174  return NULL;
+
175 }
+
176 MediaStream* FindFirstVideoStream(const std::vector<MediaStream*>& streams) {
+
177  return FindFirstStreamOfType(streams, kStreamVideo);
+
178 }
+
179 MediaStream* FindFirstAudioStream(const std::vector<MediaStream*>& streams) {
+
180  return FindFirstStreamOfType(streams, kStreamAudio);
+
181 }
+
182 
+
183 bool AddStreamToMuxer(const std::vector<MediaStream*>& streams,
+
184  const std::string& stream_selector,
+
185  const std::string& language_override,
+
186  Muxer* muxer) {
+
187  DCHECK(muxer);
+
188 
+
189  MediaStream* stream = NULL;
+
190  if (stream_selector == "video") {
+
191  stream = FindFirstVideoStream(streams);
+
192  } else if (stream_selector == "audio") {
+
193  stream = FindFirstAudioStream(streams);
+
194  } else {
+
195  // Expect stream_selector to be a zero based stream id.
+
196  size_t stream_id;
+
197  if (!base::StringToSizeT(stream_selector, &stream_id) ||
+
198  stream_id >= streams.size()) {
+
199  LOG(ERROR) << "Invalid argument --stream=" << stream_selector << "; "
+
200  << "should be 'audio', 'video', or a number within [0, "
+
201  << streams.size() - 1 << "].";
+
202  return false;
+
203  }
+
204  stream = streams[stream_id];
+
205  DCHECK(stream);
+
206  }
+
207 
+
208  // This could occur only if stream_selector=audio|video and the corresponding
+
209  // stream does not exist in the input.
+
210  if (!stream) {
+
211  LOG(ERROR) << "No " << stream_selector << " stream found in the input.";
+
212  return false;
+
213  }
+
214 
+
215  if (!language_override.empty()) {
+
216  stream->info()->set_language(language_override);
+
217  }
+
218 
+
219  muxer->AddStream(stream);
+
220  return true;
+
221 }
+
222 
+
223 } // namespace media
+
224 } // namespace shaka
static RsaRequestSigner * CreateSigner(const std::string &signer_name, const std::string &pkcs1_rsa_key)
static scoped_ptr< FixedKeySource > CreateFromHexStrings(const std::string &key_id_hex, const std::string &key_hex, const std::string &pssh_boxes_hex, const std::string &iv_hex)
static AesRequestSigner * CreateSigner(const std::string &signer_name, const std::string &aes_key_hex, const std::string &iv_hex)
@@ -332,7 +318,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 0645b26387..09fa0dbfd1 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 2fbebb68a0..f9fa46d419 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 5d8c00cc7b..5e0f85f9f0 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 3ac1536784..fa90f1b80b 100644 --- a/docs/d1/d0b/hevc__decoder__configuration__record_8cc_source.html +++ b/docs/d1/d0b/hevc__decoder__configuration__record_8cc_source.html @@ -257,7 +257,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 29fc48d144..bd17b6e3dd 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 d9047c7f8d..39fc95f6fd 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 051baf6aa1..51e6574fda 100644 --- a/docs/d1/d1c/two__pass__single__segment__segmenter_8cc_source.html +++ b/docs/d1/d1c/two__pass__single__segment__segmenter_8cc_source.html @@ -275,7 +275,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d1d/muxer__flags_8cc_source.html b/docs/d1/d1d/muxer__flags_8cc_source.html index ec91ebe9de..67c0f2ef95 100644 --- a/docs/d1/d1d/muxer__flags_8cc_source.html +++ b/docs/d1/d1d/muxer__flags_8cc_source.html @@ -143,7 +143,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d1f/classshaka_1_1media_1_1KeySource.html b/docs/d1/d1f/classshaka_1_1media_1_1KeySource.html index 8079cf48b6..869cf9f32a 100644 --- a/docs/d1/d1f/classshaka_1_1media_1_1KeySource.html +++ b/docs/d1/d1f/classshaka_1_1media_1_1KeySource.html @@ -407,7 +407,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 5c05a54fee..592aa1cf65 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 833d738d69..f362f932db 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 a7b8804a08..acd1a7c8e9 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 30029e72e1..2e390f0033 100644 --- a/docs/d1/d2a/decryptor__source_8cc_source.html +++ b/docs/d1/d2a/decryptor__source_8cc_source.html @@ -209,7 +209,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d2c/structshaka_1_1media_1_1mp4_1_1DataReference-members.html b/docs/d1/d2c/structshaka_1_1media_1_1mp4_1_1DataReference-members.html index f0ad068389..dc778d34b7 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 65e25f08cf..0efd7f202e 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 4b19fa2cb8..a4ed28ba66 100644 --- a/docs/d1/d2f/webvtt__media__parser_8cc_source.html +++ b/docs/d1/d2f/webvtt__media__parser_8cc_source.html @@ -491,7 +491,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d30/classshaka_1_1media_1_1mp2t_1_1TsSectionPes.html b/docs/d1/d30/classshaka_1_1media_1_1mp2t_1_1TsSectionPes.html index 882e4b6e50..3804e8aee6 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 dce913b614..e3a8351d6c 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 f1520419b6..710cec6e63 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 87d1a2cfe3..1deef99e37 100644 --- a/docs/d1/d37/es__parser__h264_8h_source.html +++ b/docs/d1/d37/es__parser__h264_8h_source.html @@ -153,7 +153,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d3b/mpd__generator__flags_8h_source.html b/docs/d1/d3b/mpd__generator__flags_8h_source.html index b8556d0564..1715c67608 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 cce458e3e3..447e213547 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 297cdfbaf2..0080c9e3a6 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 dcd62cf8df..4959d7653f 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 ade8f83239..3a9cdc0537 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 a7cfdce96f..466d46a81d 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 cd5fcb3e6f..ce037038d8 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 086de2427f..c96a057a11 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 b5f9114d00..d4c940829f 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 e0d8372761..e156b29bbe 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 160e6124f5..4bb09da056 100644 --- a/docs/d1/d74/mp2t__media__parser_8cc_source.html +++ b/docs/d1/d74/mp2t__media__parser_8cc_source.html @@ -539,7 +539,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d79/classshaka_1_1media_1_1H265VideoSliceHeaderParser.html b/docs/d1/d79/classshaka_1_1media_1_1H265VideoSliceHeaderParser.html index d9fcc0b8d5..da6b086e53 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 0ce94c43c2..db5c54f6da 100644 --- a/docs/d1/d7d/webm__video__client_8cc_source.html +++ b/docs/d1/d7d/webm__video__client_8cc_source.html @@ -270,7 +270,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 188107f1de..207523b24b 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 10f0e0e89f..c082c65baf 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 998393f920..33ff8c9d4d 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 0fc564f5cd..a68a2d563e 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 @@ -123,7 +123,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 9edb05e2c5..97163f6ac9 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 9efd27b38f..9491af58ff 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 42ac9bbbdf..016dc45088 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 50d0bb3913..97e0601a94 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 9170ed138e..a5fddfbc76 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 ecc4972c46..ef0114662d 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 29f3198be5..c1a02536ae 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 1b9b98f07b..a9f351cd74 100644 --- a/docs/d1/da2/classshaka_1_1media_1_1NalUnitToByteStreamConverter-members.html +++ b/docs/d1/da2/classshaka_1_1media_1_1NalUnitToByteStreamConverter-members.html @@ -101,7 +101,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 a80201e731..3dafa047ea 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 508d09c8dc..cf0eabf26d 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 03777ee149..9219eaf6e5 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 089adc4e5c..23725713a9 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 22c9d879f8..f104318739 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 7bc325fbc2..5ab8fe1ee1 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 06c22f3f98..4ea984a3d8 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 ed5648a72f..e221adc117 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 35c76dab72..1367cffb6a 100644 --- a/docs/d1/de2/classshaka_1_1media_1_1VideoStreamInfo-members.html +++ b/docs/d1/de2/classshaka_1_1media_1_1VideoStreamInfo-members.html @@ -125,7 +125,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 52b27f1ad8..38e34bdb13 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 a2ecd0cb4b..e92e39c038 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 60581123fb..b40e7906b9 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 7910b02ff5..ae495833fd 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 22d98e6acf..d8d92f5bb3 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 626b355457..3a78025c3e 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 5eeef7547f..f2ff4c8473 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 cc440f1f9c..2c641b1631 100644 --- a/docs/d1/df0/aes__encryptor_8h_source.html +++ b/docs/d1/df0/aes__encryptor_8h_source.html @@ -195,7 +195,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/df3/structshaka_1_1MpdOptions.html b/docs/d1/df3/structshaka_1_1MpdOptions.html index 89f60945c3..8ee4d2cdc2 100644 --- a/docs/d1/df3/structshaka_1_1MpdOptions.html +++ b/docs/d1/df3/structshaka_1_1MpdOptions.html @@ -116,21 +116,18 @@ double time_shift_buffer_d double suggested_presentation_delay   - -std::string packager_version_string

Detailed Description

Defines Mpd Options.

-

Definition at line 17 of file mpd_options.h.

+

Definition at line 15 of file mpd_options.h.


The documentation for this struct was generated from the following file: diff --git a/docs/d1/df5/nalu__reader_8cc_source.html b/docs/d1/df5/nalu__reader_8cc_source.html index 9a2a86107a..0eb8f0d724 100644 --- a/docs/d1/df5/nalu__reader_8cc_source.html +++ b/docs/d1/df5/nalu__reader_8cc_source.html @@ -434,7 +434,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/df9/structshaka_1_1media_1_1mp4_1_1VideoMediaHeader-members.html b/docs/d1/df9/structshaka_1_1media_1_1mp4_1_1VideoMediaHeader-members.html index a4f361ae43..fc0ad4ab3c 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 c88f11657f..cf7cd198cd 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 4aa0987ec0..3c1acbc042 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 b59860b84b..c6a4fb51be 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 dc77609220..d2704e67bb 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 726372cf8e..a9f7421ae2 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 54bc50a9fa..78df556fb8 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 0add615b71..bef8abfe36 100644 --- a/docs/d2/d23/threaded__io__file_8cc_source.html +++ b/docs/d2/d23/threaded__io__file_8cc_source.html @@ -315,7 +315,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d24/packager__util_8h_source.html b/docs/d2/d24/packager__util_8h_source.html index 2564b0f94e..c6861fb3ef 100644 --- a/docs/d2/d24/packager__util_8h_source.html +++ b/docs/d2/d24/packager__util_8h_source.html @@ -141,7 +141,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 b4f5eab191..558c73c9af 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 @@ -326,7 +326,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 29271ebeba..4d42d262ba 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 91c31abd5b..ce36d1bb9a 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 31e9309394..baee589d56 100644 --- a/docs/d2/d35/classshaka_1_1media_1_1WidevineKeySource-members.html +++ b/docs/d2/d35/classshaka_1_1media_1_1WidevineKeySource-members.html @@ -119,7 +119,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 056028d8d1..a14a0a3411 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 0c37d45360..7de01c3aad 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 c9b91affa7..d7156af38c 100644 --- a/docs/d2/d4c/nal__unit__to__byte__stream__converter_8cc_source.html +++ b/docs/d2/d4c/nal__unit__to__byte__stream__converter_8cc_source.html @@ -291,7 +291,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d4d/file_8h_source.html b/docs/d2/d4d/file_8h_source.html index 7af896ce8d..9840a51298 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 5ee4a5f80f..c1c6959d50 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 49b273d301..487700453a 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 d3e9479906..7ad6c3b5b5 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 848e64598a..a3bf2f5560 100644 --- a/docs/d2/d5b/classshaka_1_1media_1_1KeySource-members.html +++ b/docs/d2/d5b/classshaka_1_1media_1_1KeySource-members.html @@ -113,7 +113,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 4872926989..ac2efdd55d 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 2200543032..fd700ab11e 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 5f07ec8289..52c60c912e 100644 --- a/docs/d2/d62/simple__mpd__notifier_8h_source.html +++ b/docs/d2/d62/simple__mpd__notifier_8h_source.html @@ -181,12 +181,12 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
DashProfile dash_profile() const
Definition: mpd_notifier.h:108
bool NotifyEncryptionUpdate(uint32_t container_id, const std::string &drm_uuid, const std::vector< uint8_t > &new_key_id, const std::vector< uint8_t > &new_pssh) override
-
Defines Mpd Options.
Definition: mpd_options.h:17
+
Defines Mpd Options.
Definition: mpd_options.h:15
bool NotifyNewContainer(const MediaInfo &media_info, uint32_t *id) override
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 67b0c701ef..aa596f8a7f 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 0568cebf4c..074cd44a4d 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 0ca9ab97ca..f25adaa9cc 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 a001f67ad1..490539643e 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 42b514e63f..1b8574b050 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 a4344a4cea..21d3441440 100644 --- a/docs/d2/d7b/simple__mpd__notifier_8cc_source.html +++ b/docs/d2/d7b/simple__mpd__notifier_8cc_source.html @@ -231,7 +231,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
std::string Uint8VectorToBase64(const std::vector< uint8_t > &input)
Converts uint8 vector into base64 encoded string.
bool NotifySampleDuration(uint32_t container_id, uint32_t sample_duration) override
bool NotifyEncryptionUpdate(uint32_t container_id, const std::string &drm_uuid, const std::vector< uint8_t > &new_key_id, const std::vector< uint8_t > &new_pssh) override
-
static void MakePathsRelativeToMpd(const std::string &mpd_path, MediaInfo *media_info)
Definition: mpd_builder.cc:641
+
static void MakePathsRelativeToMpd(const std::string &mpd_path, MediaInfo *media_info)
Definition: mpd_builder.cc:647
ContentType GetContentType(const MediaInfo &media_info)
bool WriteMpdToFile(const std::string &output_path, MpdBuilder *mpd_builder)
@@ -239,7 +239,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d7e/aac__audio__specific__config_8h_source.html b/docs/d2/d7e/aac__audio__specific__config_8h_source.html index 32e718ea4a..c02a7224b0 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 7b3e4d82c0..bdf58b370b 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 5ce6d44f48..04f7a10289 100644 --- a/docs/d2/d8a/hls__notify__muxer__listener_8h_source.html +++ b/docs/d2/d8a/hls__notify__muxer__listener_8h_source.html @@ -175,7 +175,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 5c4c5c74f8..30744562db 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 e8db0c7033..c49a32c394 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 c3f88b972e..0896f26b20 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 a34f6a3fbf..14dc8fb1a4 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 4f2476dc86..e548bc7df6 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 e410d82ad6..74ebc6a425 100644 --- a/docs/d2/da8/mp4_2segmenter_8cc_source.html +++ b/docs/d2/da8/mp4_2segmenter_8cc_source.html @@ -111,488 +111,490 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
22 #include "packager/media/event/progress_listener.h"
23 #include "packager/media/formats/mp4/box_definitions.h"
24 #include "packager/media/formats/mp4/key_rotation_fragmenter.h"
-
25 
-
26 namespace shaka {
-
27 namespace media {
-
28 namespace mp4 {
-
29 
-
30 namespace {
-
31 const size_t kCencKeyIdSize = 16u;
-
32 
-
33 // The version of cenc implemented here. CENC 4.
-
34 const int kCencSchemeVersion = 0x00010000;
-
35 
-
36 // The default KID for key rotation is all 0s.
-
37 const uint8_t kKeyRotationDefaultKeyId[] = {
-
38  0, 0, 0, 0, 0, 0, 0, 0,
-
39  0, 0, 0, 0, 0, 0, 0, 0
-
40 };
-
41 
-
42 // Defines protection pattern for pattern-based encryption.
-
43 struct ProtectionPattern {
-
44  uint8_t crypt_byte_block;
-
45  uint8_t skip_byte_block;
-
46 };
-
47 
-
48 COMPILE_ASSERT(arraysize(kKeyRotationDefaultKeyId) == kCencKeyIdSize,
-
49  cenc_key_id_must_be_size_16);
-
50 
-
51 uint64_t Rescale(uint64_t time_in_old_scale,
-
52  uint32_t old_scale,
-
53  uint32_t new_scale) {
-
54  return static_cast<double>(time_in_old_scale) / old_scale * new_scale;
-
55 }
-
56 
-
57 ProtectionPattern GetProtectionPattern(FourCC protection_scheme,
-
58  TrackType track_type) {
-
59  ProtectionPattern pattern;
-
60  if (protection_scheme != FOURCC_cbcs && protection_scheme != FOURCC_cens) {
-
61  // Not using pattern encryption.
-
62  pattern.crypt_byte_block = 0u;
-
63  pattern.skip_byte_block = 0u;
-
64  } else if (track_type != kVideo) {
-
65  // Tracks other than video are protected using whole-block full-sample
-
66  // encryption, which is essentially a pattern of 1:0. Note that this may not
-
67  // be the same as the non-pattern based encryption counterparts, e.g. in
-
68  // 'cens' for full sample encryption, the whole sample is encrypted up to
-
69  // the last 16-byte boundary, see 23001-7:2016(E) 9.7; while in 'cenc' for
-
70  // full sample encryption, the last partial 16-byte block is also encrypted,
-
71  // see 23001-7:2016(E) 9.4.2. Another difference is the use of constant iv.
-
72  pattern.crypt_byte_block = 1u;
-
73  pattern.skip_byte_block = 0u;
-
74  } else {
-
75  // Use 1:9 pattern for video.
-
76  const uint8_t kCryptByteBlock = 1u;
-
77  const uint8_t kSkipByteBlock = 9u;
-
78  pattern.crypt_byte_block = kCryptByteBlock;
-
79  pattern.skip_byte_block = kSkipByteBlock;
-
80  }
-
81  return pattern;
-
82 }
-
83 
-
84 void GenerateSinf(const EncryptionKey& encryption_key,
-
85  FourCC old_type,
-
86  FourCC protection_scheme,
-
87  ProtectionPattern pattern,
-
88  ProtectionSchemeInfo* sinf) {
-
89  sinf->format.format = old_type;
-
90 
-
91  DCHECK_NE(protection_scheme, FOURCC_NULL);
-
92  sinf->type.type = protection_scheme;
-
93  sinf->type.version = kCencSchemeVersion;
-
94 
-
95  auto& track_encryption = sinf->info.track_encryption;
-
96  track_encryption.default_is_protected = 1;
-
97  DCHECK(!encryption_key.iv.empty());
-
98  if (protection_scheme == FOURCC_cbcs) {
-
99  // ISO/IEC 23001-7:2016 10.4.1
-
100  // For 'cbcs' scheme, Constant IVs SHALL be used.
-
101  track_encryption.default_per_sample_iv_size = 0;
-
102  track_encryption.default_constant_iv = encryption_key.iv;
-
103  } else {
-
104  track_encryption.default_per_sample_iv_size = encryption_key.iv.size();
-
105  }
-
106  track_encryption.default_crypt_byte_block = pattern.crypt_byte_block;
-
107  track_encryption.default_skip_byte_block = pattern.skip_byte_block;
-
108  track_encryption.default_kid = encryption_key.key_id;
-
109 }
-
110 
-
111 void GenerateEncryptedSampleEntry(const EncryptionKey& encryption_key,
-
112  double clear_lead_in_seconds,
-
113  FourCC protection_scheme,
-
114  ProtectionPattern pattern,
-
115  SampleDescription* description) {
-
116  DCHECK(description);
-
117  if (description->type == kVideo) {
-
118  DCHECK_EQ(1u, description->video_entries.size());
-
119 
-
120  // Add a second entry for clear content if needed.
-
121  if (clear_lead_in_seconds > 0)
-
122  description->video_entries.push_back(description->video_entries[0]);
-
123 
-
124  // Convert the first entry to an encrypted entry.
-
125  VideoSampleEntry& entry = description->video_entries[0];
-
126  GenerateSinf(encryption_key, entry.format, protection_scheme, pattern,
-
127  &entry.sinf);
-
128  entry.format = FOURCC_encv;
-
129  } else {
-
130  DCHECK_EQ(kAudio, description->type);
-
131  DCHECK_EQ(1u, description->audio_entries.size());
-
132 
-
133  // Add a second entry for clear content if needed.
-
134  if (clear_lead_in_seconds > 0)
-
135  description->audio_entries.push_back(description->audio_entries[0]);
-
136 
-
137  // Convert the first entry to an encrypted entry.
-
138  AudioSampleEntry& entry = description->audio_entries[0];
-
139  GenerateSinf(encryption_key, entry.format, protection_scheme, pattern,
-
140  &entry.sinf);
-
141  entry.format = FOURCC_enca;
-
142  }
-
143 }
-
144 
-
145 } // namespace
-
146 
-
147 Segmenter::Segmenter(const MuxerOptions& options,
-
148  scoped_ptr<FileType> ftyp,
-
149  scoped_ptr<Movie> moov)
-
150  : options_(options),
-
151  ftyp_(ftyp.Pass()),
-
152  moov_(moov.Pass()),
-
153  moof_(new MovieFragment()),
-
154  fragment_buffer_(new BufferWriter()),
-
155  sidx_(new SegmentIndex()),
-
156  muxer_listener_(NULL),
-
157  progress_listener_(NULL),
-
158  progress_target_(0),
-
159  accumulated_progress_(0),
-
160  sample_duration_(0u) {}
-
161 
-
162 Segmenter::~Segmenter() { STLDeleteElements(&fragmenters_); }
-
163 
-
164 Status Segmenter::Initialize(const std::vector<MediaStream*>& streams,
-
165  MuxerListener* muxer_listener,
-
166  ProgressListener* progress_listener,
-
167  KeySource* encryption_key_source,
-
168  uint32_t max_sd_pixels,
-
169  double clear_lead_in_seconds,
-
170  double crypto_period_duration_in_seconds,
-
171  FourCC protection_scheme) {
-
172  DCHECK_LT(0u, streams.size());
-
173  muxer_listener_ = muxer_listener;
-
174  progress_listener_ = progress_listener;
-
175  moof_->header.sequence_number = 0;
-
176 
-
177  moof_->tracks.resize(streams.size());
-
178  segment_durations_.resize(streams.size());
-
179  fragmenters_.resize(streams.size());
-
180  const bool key_rotation_enabled = crypto_period_duration_in_seconds != 0;
-
181  const bool kInitialEncryptionInfo = true;
-
182 
-
183  for (uint32_t i = 0; i < streams.size(); ++i) {
-
184  stream_map_[streams[i]] = i;
-
185  moof_->tracks[i].header.track_id = i + 1;
-
186  if (streams[i]->info()->stream_type() == kStreamVideo) {
-
187  // Use the first video stream as the reference stream (which is 1-based).
-
188  if (sidx_->reference_id == 0)
-
189  sidx_->reference_id = i + 1;
-
190  }
-
191  if (!encryption_key_source) {
-
192  fragmenters_[i] = new Fragmenter(streams[i]->info(), &moof_->tracks[i]);
-
193  continue;
-
194  }
-
195 
-
196  KeySource::TrackType track_type =
-
197  GetTrackTypeForEncryption(*streams[i]->info(), max_sd_pixels);
-
198  SampleDescription& description =
-
199  moov_->tracks[i].media.information.sample_table.description;
-
200  ProtectionPattern pattern =
-
201  GetProtectionPattern(protection_scheme, description.type);
-
202 
-
203  if (key_rotation_enabled) {
-
204  // Fill encrypted sample entry with default key.
-
205  EncryptionKey encryption_key;
-
206  encryption_key.key_id.assign(
-
207  kKeyRotationDefaultKeyId,
-
208  kKeyRotationDefaultKeyId + arraysize(kKeyRotationDefaultKeyId));
-
209  if (!AesCryptor::GenerateRandomIv(protection_scheme,
-
210  &encryption_key.iv)) {
-
211  return Status(error::INTERNAL_ERROR, "Failed to generate random iv.");
-
212  }
-
213  GenerateEncryptedSampleEntry(encryption_key, clear_lead_in_seconds,
-
214  protection_scheme, pattern, &description);
-
215  if (muxer_listener_) {
-
216  muxer_listener_->OnEncryptionInfoReady(
-
217  kInitialEncryptionInfo, protection_scheme, encryption_key.key_id,
-
218  encryption_key.iv, encryption_key.key_system_info);
-
219  }
-
220 
-
221  fragmenters_[i] = new KeyRotationFragmenter(
-
222  moof_.get(), streams[i]->info(), &moof_->tracks[i],
-
223  encryption_key_source, track_type,
-
224  crypto_period_duration_in_seconds * streams[i]->info()->time_scale(),
-
225  clear_lead_in_seconds * streams[i]->info()->time_scale(),
-
226  protection_scheme, pattern.crypt_byte_block, pattern.skip_byte_block,
-
227  muxer_listener_);
-
228  continue;
-
229  }
-
230 
-
231  scoped_ptr<EncryptionKey> encryption_key(new EncryptionKey());
-
232  Status status =
-
233  encryption_key_source->GetKey(track_type, encryption_key.get());
-
234  if (!status.ok())
-
235  return status;
-
236  if (encryption_key->iv.empty()) {
-
237  if (!AesCryptor::GenerateRandomIv(protection_scheme,
-
238  &encryption_key->iv)) {
-
239  return Status(error::INTERNAL_ERROR, "Failed to generate random iv.");
-
240  }
-
241  }
-
242 
-
243  GenerateEncryptedSampleEntry(*encryption_key, clear_lead_in_seconds,
-
244  protection_scheme, pattern, &description);
-
245 
-
246  if (moov_->pssh.empty()) {
-
247  moov_->pssh.resize(encryption_key->key_system_info.size());
-
248  for (size_t i = 0; i < encryption_key->key_system_info.size(); i++) {
-
249  moov_->pssh[i].raw_box = encryption_key->key_system_info[i].CreateBox();
-
250  }
-
251 
-
252  if (muxer_listener_) {
-
253  muxer_listener_->OnEncryptionInfoReady(
-
254  kInitialEncryptionInfo, protection_scheme, encryption_key->key_id,
-
255  encryption_key->iv, encryption_key->key_system_info);
-
256  }
-
257  }
-
258 
-
259  fragmenters_[i] = new EncryptingFragmenter(
-
260  streams[i]->info(), &moof_->tracks[i], encryption_key.Pass(),
-
261  clear_lead_in_seconds * streams[i]->info()->time_scale(),
-
262  protection_scheme, pattern.crypt_byte_block, pattern.skip_byte_block,
-
263  muxer_listener_);
-
264  }
-
265 
-
266  // Choose the first stream if there is no VIDEO.
-
267  if (sidx_->reference_id == 0)
-
268  sidx_->reference_id = 1;
-
269  sidx_->timescale = streams[GetReferenceStreamId()]->info()->time_scale();
-
270 
-
271  // Use media duration as progress target.
-
272  progress_target_ = streams[GetReferenceStreamId()]->info()->duration();
-
273 
-
274  // Use the reference stream's time scale as movie time scale.
-
275  moov_->header.timescale = sidx_->timescale;
-
276  moof_->header.sequence_number = 1;
-
277 
-
278  // Fill in version information.
-
279  moov_->metadata.handler.handler_type = FOURCC_ID32;
-
280  moov_->metadata.id3v2.language.code = "eng";
-
281  moov_->metadata.id3v2.private_frame.owner =
-
282  "https://github.com/google/shaka-packager";
-
283  moov_->metadata.id3v2.private_frame.value = options_.packager_version_string;
-
284  return DoInitialize();
-
285 }
-
286 
- -
288  for (std::vector<Fragmenter*>::iterator it = fragmenters_.begin();
-
289  it != fragmenters_.end();
-
290  ++it) {
-
291  Status status = FinalizeFragment(true, *it);
-
292  if (!status.ok())
-
293  return status;
-
294  }
-
295 
-
296  // Set tracks and moov durations.
-
297  // Note that the updated moov box will be written to output file for VOD case
-
298  // only.
-
299  for (std::vector<Track>::iterator track = moov_->tracks.begin();
-
300  track != moov_->tracks.end();
-
301  ++track) {
-
302  track->header.duration = Rescale(track->media.header.duration,
-
303  track->media.header.timescale,
-
304  moov_->header.timescale);
-
305  if (track->header.duration > moov_->header.duration)
-
306  moov_->header.duration = track->header.duration;
-
307  }
-
308  moov_->extends.header.fragment_duration = moov_->header.duration;
-
309 
-
310  return DoFinalize();
-
311 }
+
25 #include "packager/version/version.h"
+
26 
+
27 namespace shaka {
+
28 namespace media {
+
29 namespace mp4 {
+
30 
+
31 namespace {
+
32 const size_t kCencKeyIdSize = 16u;
+
33 
+
34 // The version of cenc implemented here. CENC 4.
+
35 const int kCencSchemeVersion = 0x00010000;
+
36 
+
37 // The default KID for key rotation is all 0s.
+
38 const uint8_t kKeyRotationDefaultKeyId[] = {
+
39  0, 0, 0, 0, 0, 0, 0, 0,
+
40  0, 0, 0, 0, 0, 0, 0, 0
+
41 };
+
42 
+
43 // Defines protection pattern for pattern-based encryption.
+
44 struct ProtectionPattern {
+
45  uint8_t crypt_byte_block;
+
46  uint8_t skip_byte_block;
+
47 };
+
48 
+
49 COMPILE_ASSERT(arraysize(kKeyRotationDefaultKeyId) == kCencKeyIdSize,
+
50  cenc_key_id_must_be_size_16);
+
51 
+
52 uint64_t Rescale(uint64_t time_in_old_scale,
+
53  uint32_t old_scale,
+
54  uint32_t new_scale) {
+
55  return static_cast<double>(time_in_old_scale) / old_scale * new_scale;
+
56 }
+
57 
+
58 ProtectionPattern GetProtectionPattern(FourCC protection_scheme,
+
59  TrackType track_type) {
+
60  ProtectionPattern pattern;
+
61  if (protection_scheme != FOURCC_cbcs && protection_scheme != FOURCC_cens) {
+
62  // Not using pattern encryption.
+
63  pattern.crypt_byte_block = 0u;
+
64  pattern.skip_byte_block = 0u;
+
65  } else if (track_type != kVideo) {
+
66  // Tracks other than video are protected using whole-block full-sample
+
67  // encryption, which is essentially a pattern of 1:0. Note that this may not
+
68  // be the same as the non-pattern based encryption counterparts, e.g. in
+
69  // 'cens' for full sample encryption, the whole sample is encrypted up to
+
70  // the last 16-byte boundary, see 23001-7:2016(E) 9.7; while in 'cenc' for
+
71  // full sample encryption, the last partial 16-byte block is also encrypted,
+
72  // see 23001-7:2016(E) 9.4.2. Another difference is the use of constant iv.
+
73  pattern.crypt_byte_block = 1u;
+
74  pattern.skip_byte_block = 0u;
+
75  } else {
+
76  // Use 1:9 pattern for video.
+
77  const uint8_t kCryptByteBlock = 1u;
+
78  const uint8_t kSkipByteBlock = 9u;
+
79  pattern.crypt_byte_block = kCryptByteBlock;
+
80  pattern.skip_byte_block = kSkipByteBlock;
+
81  }
+
82  return pattern;
+
83 }
+
84 
+
85 void GenerateSinf(const EncryptionKey& encryption_key,
+
86  FourCC old_type,
+
87  FourCC protection_scheme,
+
88  ProtectionPattern pattern,
+
89  ProtectionSchemeInfo* sinf) {
+
90  sinf->format.format = old_type;
+
91 
+
92  DCHECK_NE(protection_scheme, FOURCC_NULL);
+
93  sinf->type.type = protection_scheme;
+
94  sinf->type.version = kCencSchemeVersion;
+
95 
+
96  auto& track_encryption = sinf->info.track_encryption;
+
97  track_encryption.default_is_protected = 1;
+
98  DCHECK(!encryption_key.iv.empty());
+
99  if (protection_scheme == FOURCC_cbcs) {
+
100  // ISO/IEC 23001-7:2016 10.4.1
+
101  // For 'cbcs' scheme, Constant IVs SHALL be used.
+
102  track_encryption.default_per_sample_iv_size = 0;
+
103  track_encryption.default_constant_iv = encryption_key.iv;
+
104  } else {
+
105  track_encryption.default_per_sample_iv_size = encryption_key.iv.size();
+
106  }
+
107  track_encryption.default_crypt_byte_block = pattern.crypt_byte_block;
+
108  track_encryption.default_skip_byte_block = pattern.skip_byte_block;
+
109  track_encryption.default_kid = encryption_key.key_id;
+
110 }
+
111 
+
112 void GenerateEncryptedSampleEntry(const EncryptionKey& encryption_key,
+
113  double clear_lead_in_seconds,
+
114  FourCC protection_scheme,
+
115  ProtectionPattern pattern,
+
116  SampleDescription* description) {
+
117  DCHECK(description);
+
118  if (description->type == kVideo) {
+
119  DCHECK_EQ(1u, description->video_entries.size());
+
120 
+
121  // Add a second entry for clear content if needed.
+
122  if (clear_lead_in_seconds > 0)
+
123  description->video_entries.push_back(description->video_entries[0]);
+
124 
+
125  // Convert the first entry to an encrypted entry.
+
126  VideoSampleEntry& entry = description->video_entries[0];
+
127  GenerateSinf(encryption_key, entry.format, protection_scheme, pattern,
+
128  &entry.sinf);
+
129  entry.format = FOURCC_encv;
+
130  } else {
+
131  DCHECK_EQ(kAudio, description->type);
+
132  DCHECK_EQ(1u, description->audio_entries.size());
+
133 
+
134  // Add a second entry for clear content if needed.
+
135  if (clear_lead_in_seconds > 0)
+
136  description->audio_entries.push_back(description->audio_entries[0]);
+
137 
+
138  // Convert the first entry to an encrypted entry.
+
139  AudioSampleEntry& entry = description->audio_entries[0];
+
140  GenerateSinf(encryption_key, entry.format, protection_scheme, pattern,
+
141  &entry.sinf);
+
142  entry.format = FOURCC_enca;
+
143  }
+
144 }
+
145 
+
146 } // namespace
+
147 
+
148 Segmenter::Segmenter(const MuxerOptions& options,
+
149  scoped_ptr<FileType> ftyp,
+
150  scoped_ptr<Movie> moov)
+
151  : options_(options),
+
152  ftyp_(ftyp.Pass()),
+
153  moov_(moov.Pass()),
+
154  moof_(new MovieFragment()),
+
155  fragment_buffer_(new BufferWriter()),
+
156  sidx_(new SegmentIndex()),
+
157  muxer_listener_(NULL),
+
158  progress_listener_(NULL),
+
159  progress_target_(0),
+
160  accumulated_progress_(0),
+
161  sample_duration_(0u) {}
+
162 
+
163 Segmenter::~Segmenter() { STLDeleteElements(&fragmenters_); }
+
164 
+
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] = new Fragmenter(streams[i]->info(), &moof_->tracks[i]);
+
194  continue;
+
195  }
+
196 
+
197  KeySource::TrackType track_type =
+
198  GetTrackTypeForEncryption(*streams[i]->info(), max_sd_pixels);
+
199  SampleDescription& description =
+
200  moov_->tracks[i].media.information.sample_table.description;
+
201  ProtectionPattern pattern =
+
202  GetProtectionPattern(protection_scheme, description.type);
+
203 
+
204  if (key_rotation_enabled) {
+
205  // Fill encrypted sample entry with default key.
+
206  EncryptionKey encryption_key;
+
207  encryption_key.key_id.assign(
+
208  kKeyRotationDefaultKeyId,
+
209  kKeyRotationDefaultKeyId + arraysize(kKeyRotationDefaultKeyId));
+
210  if (!AesCryptor::GenerateRandomIv(protection_scheme,
+
211  &encryption_key.iv)) {
+
212  return Status(error::INTERNAL_ERROR, "Failed to generate random iv.");
+
213  }
+
214  GenerateEncryptedSampleEntry(encryption_key, clear_lead_in_seconds,
+
215  protection_scheme, pattern, &description);
+
216  if (muxer_listener_) {
+
217  muxer_listener_->OnEncryptionInfoReady(
+
218  kInitialEncryptionInfo, protection_scheme, encryption_key.key_id,
+
219  encryption_key.iv, encryption_key.key_system_info);
+
220  }
+
221 
+
222  fragmenters_[i] = new KeyRotationFragmenter(
+
223  moof_.get(), streams[i]->info(), &moof_->tracks[i],
+
224  encryption_key_source, track_type,
+
225  crypto_period_duration_in_seconds * streams[i]->info()->time_scale(),
+
226  clear_lead_in_seconds * streams[i]->info()->time_scale(),
+
227  protection_scheme, pattern.crypt_byte_block, pattern.skip_byte_block,
+
228  muxer_listener_);
+
229  continue;
+
230  }
+
231 
+
232  scoped_ptr<EncryptionKey> encryption_key(new EncryptionKey());
+
233  Status status =
+
234  encryption_key_source->GetKey(track_type, encryption_key.get());
+
235  if (!status.ok())
+
236  return status;
+
237  if (encryption_key->iv.empty()) {
+
238  if (!AesCryptor::GenerateRandomIv(protection_scheme,
+
239  &encryption_key->iv)) {
+
240  return Status(error::INTERNAL_ERROR, "Failed to generate random iv.");
+
241  }
+
242  }
+
243 
+
244  GenerateEncryptedSampleEntry(*encryption_key, clear_lead_in_seconds,
+
245  protection_scheme, pattern, &description);
+
246 
+
247  if (moov_->pssh.empty()) {
+
248  moov_->pssh.resize(encryption_key->key_system_info.size());
+
249  for (size_t i = 0; i < encryption_key->key_system_info.size(); i++) {
+
250  moov_->pssh[i].raw_box = encryption_key->key_system_info[i].CreateBox();
+
251  }
+
252 
+
253  if (muxer_listener_) {
+
254  muxer_listener_->OnEncryptionInfoReady(
+
255  kInitialEncryptionInfo, protection_scheme, encryption_key->key_id,
+
256  encryption_key->iv, encryption_key->key_system_info);
+
257  }
+
258  }
+
259 
+
260  fragmenters_[i] = new EncryptingFragmenter(
+
261  streams[i]->info(), &moof_->tracks[i], encryption_key.Pass(),
+
262  clear_lead_in_seconds * streams[i]->info()->time_scale(),
+
263  protection_scheme, pattern.crypt_byte_block, pattern.skip_byte_block,
+
264  muxer_listener_);
+
265  }
+
266 
+
267  // Choose the first stream if there is no VIDEO.
+
268  if (sidx_->reference_id == 0)
+
269  sidx_->reference_id = 1;
+
270  sidx_->timescale = streams[GetReferenceStreamId()]->info()->time_scale();
+
271 
+
272  // Use media duration as progress target.
+
273  progress_target_ = streams[GetReferenceStreamId()]->info()->duration();
+
274 
+
275  // Use the reference stream's time scale as movie time scale.
+
276  moov_->header.timescale = sidx_->timescale;
+
277  moof_->header.sequence_number = 1;
+
278 
+
279  // Fill in version information.
+
280  const std::string version = GetPackagerVersion();
+
281  if (!version.empty()) {
+
282  moov_->metadata.handler.handler_type = FOURCC_ID32;
+
283  moov_->metadata.id3v2.language.code = "eng";
+
284  moov_->metadata.id3v2.private_frame.owner = GetPackagerProjectUrl();
+
285  moov_->metadata.id3v2.private_frame.value = version;
+
286  }
+
287  return DoInitialize();
+
288 }
+
289 
+ +
291  for (std::vector<Fragmenter*>::iterator it = fragmenters_.begin();
+
292  it != fragmenters_.end();
+
293  ++it) {
+
294  Status status = FinalizeFragment(true, *it);
+
295  if (!status.ok())
+
296  return status;
+
297  }
+
298 
+
299  // Set tracks and moov durations.
+
300  // Note that the updated moov box will be written to output file for VOD case
+
301  // only.
+
302  for (std::vector<Track>::iterator track = moov_->tracks.begin();
+
303  track != moov_->tracks.end();
+
304  ++track) {
+
305  track->header.duration = Rescale(track->media.header.duration,
+
306  track->media.header.timescale,
+
307  moov_->header.timescale);
+
308  if (track->header.duration > moov_->header.duration)
+
309  moov_->header.duration = track->header.duration;
+
310  }
+
311  moov_->extends.header.fragment_duration = moov_->header.duration;
312 
- -
314  scoped_refptr<MediaSample> sample) {
-
315  // Find the fragmenter for this stream.
-
316  DCHECK(stream);
-
317  DCHECK(stream_map_.find(stream) != stream_map_.end());
-
318  uint32_t stream_id = stream_map_[stream];
-
319  Fragmenter* fragmenter = fragmenters_[stream_id];
-
320 
-
321  // Set default sample duration if it has not been set yet.
-
322  if (moov_->extends.tracks[stream_id].default_sample_duration == 0) {
-
323  moov_->extends.tracks[stream_id].default_sample_duration =
-
324  sample->duration();
-
325  }
-
326 
-
327  if (fragmenter->fragment_finalized()) {
-
328  return Status(error::FRAGMENT_FINALIZED,
-
329  "Current fragment is finalized already.");
-
330  }
-
331 
-
332  bool finalize_fragment = false;
-
333  if (fragmenter->fragment_duration() >=
-
334  options_.fragment_duration * stream->info()->time_scale()) {
-
335  if (sample->is_key_frame() || !options_.fragment_sap_aligned) {
-
336  finalize_fragment = true;
-
337  }
-
338  }
-
339  bool finalize_segment = false;
-
340  if (segment_durations_[stream_id] >=
-
341  options_.segment_duration * stream->info()->time_scale()) {
-
342  if (sample->is_key_frame() || !options_.segment_sap_aligned) {
-
343  finalize_segment = true;
-
344  finalize_fragment = true;
-
345  }
-
346  }
-
347 
-
348  Status status;
-
349  if (finalize_fragment) {
-
350  status = FinalizeFragment(finalize_segment, fragmenter);
-
351  if (!status.ok())
-
352  return status;
-
353  }
-
354 
-
355  status = fragmenter->AddSample(sample);
-
356  if (!status.ok())
-
357  return status;
-
358 
-
359  if (sample_duration_ == 0)
-
360  sample_duration_ = sample->duration();
-
361  moov_->tracks[stream_id].media.header.duration += sample->duration();
-
362  segment_durations_[stream_id] += sample->duration();
-
363  DCHECK_GE(segment_durations_[stream_id], fragmenter->fragment_duration());
-
364  return Status::OK;
-
365 }
-
366 
-
367 uint32_t Segmenter::GetReferenceTimeScale() const {
-
368  return moov_->header.timescale;
-
369 }
-
370 
-
371 double Segmenter::GetDuration() const {
-
372  if (moov_->header.timescale == 0) {
-
373  // Handling the case where this is not properly initialized.
-
374  return 0.0;
-
375  }
-
376 
-
377  return static_cast<double>(moov_->header.duration) / moov_->header.timescale;
-
378 }
+
313  return DoFinalize();
+
314 }
+
315 
+ +
317  scoped_refptr<MediaSample> sample) {
+
318  // Find the fragmenter for this stream.
+
319  DCHECK(stream);
+
320  DCHECK(stream_map_.find(stream) != stream_map_.end());
+
321  uint32_t stream_id = stream_map_[stream];
+
322  Fragmenter* fragmenter = fragmenters_[stream_id];
+
323 
+
324  // Set default sample duration if it has not been set yet.
+
325  if (moov_->extends.tracks[stream_id].default_sample_duration == 0) {
+
326  moov_->extends.tracks[stream_id].default_sample_duration =
+
327  sample->duration();
+
328  }
+
329 
+
330  if (fragmenter->fragment_finalized()) {
+
331  return Status(error::FRAGMENT_FINALIZED,
+
332  "Current fragment is finalized already.");
+
333  }
+
334 
+
335  bool finalize_fragment = false;
+
336  if (fragmenter->fragment_duration() >=
+
337  options_.fragment_duration * stream->info()->time_scale()) {
+
338  if (sample->is_key_frame() || !options_.fragment_sap_aligned) {
+
339  finalize_fragment = true;
+
340  }
+
341  }
+
342  bool finalize_segment = false;
+
343  if (segment_durations_[stream_id] >=
+
344  options_.segment_duration * stream->info()->time_scale()) {
+
345  if (sample->is_key_frame() || !options_.segment_sap_aligned) {
+
346  finalize_segment = true;
+
347  finalize_fragment = true;
+
348  }
+
349  }
+
350 
+
351  Status status;
+
352  if (finalize_fragment) {
+
353  status = FinalizeFragment(finalize_segment, fragmenter);
+
354  if (!status.ok())
+
355  return status;
+
356  }
+
357 
+
358  status = fragmenter->AddSample(sample);
+
359  if (!status.ok())
+
360  return status;
+
361 
+
362  if (sample_duration_ == 0)
+
363  sample_duration_ = sample->duration();
+
364  moov_->tracks[stream_id].media.header.duration += sample->duration();
+
365  segment_durations_[stream_id] += sample->duration();
+
366  DCHECK_GE(segment_durations_[stream_id], fragmenter->fragment_duration());
+
367  return Status::OK;
+
368 }
+
369 
+
370 uint32_t Segmenter::GetReferenceTimeScale() const {
+
371  return moov_->header.timescale;
+
372 }
+
373 
+
374 double Segmenter::GetDuration() const {
+
375  if (moov_->header.timescale == 0) {
+
376  // Handling the case where this is not properly initialized.
+
377  return 0.0;
+
378  }
379 
-
380 void Segmenter::UpdateProgress(uint64_t progress) {
-
381  accumulated_progress_ += progress;
+
380  return static_cast<double>(moov_->header.duration) / moov_->header.timescale;
+
381 }
382 
-
383  if (!progress_listener_) return;
-
384  if (progress_target_ == 0) return;
-
385  // It might happen that accumulated progress exceeds progress_target due to
-
386  // computation errors, e.g. rounding error. Cap it so it never reports > 100%
-
387  // progress.
-
388  if (accumulated_progress_ >= progress_target_) {
-
389  progress_listener_->OnProgress(1.0);
-
390  } else {
-
391  progress_listener_->OnProgress(static_cast<double>(accumulated_progress_) /
-
392  progress_target_);
-
393  }
-
394 }
-
395 
-
396 void Segmenter::SetComplete() {
-
397  if (!progress_listener_) return;
-
398  progress_listener_->OnProgress(1.0);
-
399 }
-
400 
-
401 Status Segmenter::FinalizeSegment() {
-
402  Status status = DoFinalizeSegment();
+
383 void Segmenter::UpdateProgress(uint64_t progress) {
+
384  accumulated_progress_ += progress;
+
385 
+
386  if (!progress_listener_) return;
+
387  if (progress_target_ == 0) return;
+
388  // It might happen that accumulated progress exceeds progress_target due to
+
389  // computation errors, e.g. rounding error. Cap it so it never reports > 100%
+
390  // progress.
+
391  if (accumulated_progress_ >= progress_target_) {
+
392  progress_listener_->OnProgress(1.0);
+
393  } else {
+
394  progress_listener_->OnProgress(static_cast<double>(accumulated_progress_) /
+
395  progress_target_);
+
396  }
+
397 }
+
398 
+
399 void Segmenter::SetComplete() {
+
400  if (!progress_listener_) return;
+
401  progress_listener_->OnProgress(1.0);
+
402 }
403 
-
404  // Reset segment information to initial state.
-
405  sidx_->references.clear();
-
406  std::vector<uint64_t>::iterator it = segment_durations_.begin();
-
407  for (; it != segment_durations_.end(); ++it)
-
408  *it = 0;
-
409 
-
410  return status;
-
411 }
+
404 Status Segmenter::FinalizeSegment() {
+
405  Status status = DoFinalizeSegment();
+
406 
+
407  // Reset segment information to initial state.
+
408  sidx_->references.clear();
+
409  std::vector<uint64_t>::iterator it = segment_durations_.begin();
+
410  for (; it != segment_durations_.end(); ++it)
+
411  *it = 0;
412 
-
413 uint32_t Segmenter::GetReferenceStreamId() {
-
414  DCHECK(sidx_);
-
415  return sidx_->reference_id - 1;
-
416 }
-
417 
-
418 Status Segmenter::FinalizeFragment(bool finalize_segment,
-
419  Fragmenter* fragmenter) {
-
420  fragmenter->FinalizeFragment();
-
421 
-
422  // Check if all tracks are ready for fragmentation.
-
423  for (std::vector<Fragmenter*>::iterator it = fragmenters_.begin();
-
424  it != fragmenters_.end();
-
425  ++it) {
-
426  if (!(*it)->fragment_finalized())
-
427  return Status::OK;
-
428  }
-
429 
-
430  MediaData mdat;
-
431  // Data offset relative to 'moof': moof size + mdat header size.
-
432  // The code will also update box sizes for moof_ and its child boxes.
-
433  uint64_t data_offset = moof_->ComputeSize() + mdat.HeaderSize();
-
434  // 'traf' should follow 'mfhd' moof header box.
-
435  uint64_t next_traf_position = moof_->HeaderSize() + moof_->header.box_size();
-
436  for (size_t i = 0; i < moof_->tracks.size(); ++i) {
-
437  TrackFragment& traf = moof_->tracks[i];
-
438  if (traf.auxiliary_offset.offsets.size() > 0) {
-
439  DCHECK_EQ(traf.auxiliary_offset.offsets.size(), 1u);
-
440  DCHECK(!traf.sample_encryption.sample_encryption_entries.empty());
-
441 
-
442  next_traf_position += traf.box_size();
-
443  // SampleEncryption 'senc' box should be the last box in 'traf'.
-
444  // |auxiliary_offset| should point to the data of SampleEncryption.
-
445  traf.auxiliary_offset.offsets[0] =
-
446  next_traf_position - traf.sample_encryption.box_size() +
-
447  traf.sample_encryption.HeaderSize() +
-
448  sizeof(uint32_t); // for sample count field in 'senc'
-
449  }
-
450  traf.runs[0].data_offset = data_offset + mdat.data_size;
-
451  mdat.data_size += fragmenters_[i]->data()->Size();
-
452  }
-
453 
-
454  // Generate segment reference.
-
455  sidx_->references.resize(sidx_->references.size() + 1);
-
456  fragmenters_[GetReferenceStreamId()]->GenerateSegmentReference(
-
457  &sidx_->references[sidx_->references.size() - 1]);
-
458  sidx_->references[sidx_->references.size() - 1].referenced_size =
-
459  data_offset + mdat.data_size;
-
460 
-
461  // Write the fragment to buffer.
-
462  moof_->Write(fragment_buffer_.get());
-
463  mdat.WriteHeader(fragment_buffer_.get());
-
464  for (Fragmenter* fragmenter : fragmenters_)
-
465  fragment_buffer_->AppendBuffer(*fragmenter->data());
-
466 
-
467  // Increase sequence_number for next fragment.
-
468  ++moof_->header.sequence_number;
+
413  return status;
+
414 }
+
415 
+
416 uint32_t Segmenter::GetReferenceStreamId() {
+
417  DCHECK(sidx_);
+
418  return sidx_->reference_id - 1;
+
419 }
+
420 
+
421 Status Segmenter::FinalizeFragment(bool finalize_segment,
+
422  Fragmenter* fragmenter) {
+
423  fragmenter->FinalizeFragment();
+
424 
+
425  // Check if all tracks are ready for fragmentation.
+
426  for (std::vector<Fragmenter*>::iterator it = fragmenters_.begin();
+
427  it != fragmenters_.end();
+
428  ++it) {
+
429  if (!(*it)->fragment_finalized())
+
430  return Status::OK;
+
431  }
+
432 
+
433  MediaData mdat;
+
434  // Data offset relative to 'moof': moof size + mdat header size.
+
435  // The code will also update box sizes for moof_ and its child boxes.
+
436  uint64_t data_offset = moof_->ComputeSize() + mdat.HeaderSize();
+
437  // 'traf' should follow 'mfhd' moof header box.
+
438  uint64_t next_traf_position = moof_->HeaderSize() + moof_->header.box_size();
+
439  for (size_t i = 0; i < moof_->tracks.size(); ++i) {
+
440  TrackFragment& traf = moof_->tracks[i];
+
441  if (traf.auxiliary_offset.offsets.size() > 0) {
+
442  DCHECK_EQ(traf.auxiliary_offset.offsets.size(), 1u);
+
443  DCHECK(!traf.sample_encryption.sample_encryption_entries.empty());
+
444 
+
445  next_traf_position += traf.box_size();
+
446  // SampleEncryption 'senc' box should be the last box in 'traf'.
+
447  // |auxiliary_offset| should point to the data of SampleEncryption.
+
448  traf.auxiliary_offset.offsets[0] =
+
449  next_traf_position - traf.sample_encryption.box_size() +
+
450  traf.sample_encryption.HeaderSize() +
+
451  sizeof(uint32_t); // for sample count field in 'senc'
+
452  }
+
453  traf.runs[0].data_offset = data_offset + mdat.data_size;
+
454  mdat.data_size += fragmenters_[i]->data()->Size();
+
455  }
+
456 
+
457  // Generate segment reference.
+
458  sidx_->references.resize(sidx_->references.size() + 1);
+
459  fragmenters_[GetReferenceStreamId()]->GenerateSegmentReference(
+
460  &sidx_->references[sidx_->references.size() - 1]);
+
461  sidx_->references[sidx_->references.size() - 1].referenced_size =
+
462  data_offset + mdat.data_size;
+
463 
+
464  // Write the fragment to buffer.
+
465  moof_->Write(fragment_buffer_.get());
+
466  mdat.WriteHeader(fragment_buffer_.get());
+
467  for (Fragmenter* fragmenter : fragmenters_)
+
468  fragment_buffer_->AppendBuffer(*fragmenter->data());
469 
-
470  if (finalize_segment)
-
471  return FinalizeSegment();
+
470  // Increase sequence_number for next fragment.
+
471  ++moof_->header.sequence_number;
472 
-
473  return Status::OK;
-
474 }
+
473  if (finalize_segment)
+
474  return FinalizeSegment();
475 
-
476 } // namespace mp4
-
477 } // namespace media
-
478 } // namespace shaka
+
476  return Status::OK;
+
477 }
+
478 
+
479 } // namespace mp4
+
480 } // namespace media
+
481 } // namespace shaka
-
std::string packager_version_string
Specify the version string to be embedded in the output files.
Definition: muxer_options.h:71
- -
Status AddSample(scoped_refptr< MediaSample > sample)
Definition: segmenter.cc:114
+ +
Status AddSample(scoped_refptr< MediaSample > sample)
Definition: segmenter.cc:117
virtual Status AddSample(scoped_refptr< MediaSample > sample)
Definition: fragmenter.cc:45
virtual Status GetKey(TrackType track_type, EncryptionKey *key)=0
This class listens to progress updates events.
-
Status Initialize(scoped_ptr< MkvWriter > writer, StreamInfo *info, ProgressListener *progress_listener, MuxerListener *muxer_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds)
Definition: segmenter.cc:48
+
Status Initialize(scoped_ptr< MkvWriter > writer, StreamInfo *info, ProgressListener *progress_listener, MuxerListener *muxer_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds)
Definition: segmenter.cc:49
static bool GenerateRandomIv(FourCC protection_scheme, std::vector< uint8_t > *iv)
Definition: aes_cryptor.cc:109
EncryptingFragmenter generates MP4 fragments with sample encrypted.
virtual void OnProgress(double progress)=0
- +
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:31
-
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:251
+
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:254
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 2860cd135b..bac9de55d0 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 9187ccb2c3..e5ae1254b0 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 0fc637bd58..542f5fa439 100644 --- a/docs/d2/dae/webm__muxer_8cc_source.html +++ b/docs/d2/dae/webm__muxer_8cc_source.html @@ -225,7 +225,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/db1/structshaka_1_1media_1_1mp4_1_1SampleToGroup-members.html b/docs/d2/db1/structshaka_1_1media_1_1mp4_1_1SampleToGroup-members.html index 09513f57cf..8330a929c4 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 380eb56f50..9e805bea75 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 dcea59a748..4cb04db9da 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 8be4146b6f..49724492e9 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 1cc0b27e31..5506146dd6 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 526ff3cb57..483fc9c3af 100644 --- a/docs/d2/dc7/structshaka_1_1MpdOptions-members.html +++ b/docs/d2/dc7/structshaka_1_1MpdOptions-members.html @@ -97,14 +97,13 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); min_buffer_time (defined in shaka::MpdOptions)shaka::MpdOptions minimum_update_period (defined in shaka::MpdOptions)shaka::MpdOptions MpdOptions() (defined in shaka::MpdOptions)shaka::MpdOptionsinline - packager_version_string (defined in shaka::MpdOptions)shaka::MpdOptions - suggested_presentation_delay (defined in shaka::MpdOptions)shaka::MpdOptions - time_shift_buffer_depth (defined in shaka::MpdOptions)shaka::MpdOptions - ~MpdOptions() (defined in shaka::MpdOptions)shaka::MpdOptionsinline + suggested_presentation_delay (defined in shaka::MpdOptions)shaka::MpdOptions + time_shift_buffer_depth (defined in shaka::MpdOptions)shaka::MpdOptions + ~MpdOptions() (defined in shaka::MpdOptions)shaka::MpdOptionsinline 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 202ee32be6..b6a4aaf2c6 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 3008fe250b..7cfe9f5628 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 f4d7b8f056..4e61d07d22 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 @@ -277,7 +277,7 @@ double cluster_length_sec< diff --git a/docs/d2/dd6/mkv__writer_8h_source.html b/docs/d2/dd6/mkv__writer_8h_source.html index 1029566063..631d05e855 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 f2724b89f5..efef55cacb 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 6dd25f3643..ff5f6f0f6b 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 84dd54a1fb..9510efdb90 100644 --- a/docs/d2/de6/packager__main_8cc_source.html +++ b/docs/d2/de6/packager__main_8cc_source.html @@ -140,498 +140,510 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
51  "Set to true to use a fake clock for muxer. With this flag set, "
52  "creation time and modification time in outputs are set to 0. "
53  "Should only be used for testing.");
-
54 
-
55 namespace shaka {
-
56 namespace media {
-
57 namespace {
-
58 
-
59 const char kUsage[] =
-
60  "Packager driver program. Usage:\n\n"
-
61  "%s [flags] <stream_descriptor> ...\n"
-
62  "stream_descriptor consists of comma separated field_name/value pairs:\n"
-
63  "field_name=value,[field_name=value,]...\n"
-
64  "Supported field names are as follows:\n"
-
65  " - input (in): Required input/source media file path or network stream\n"
-
66  " URL.\n"
-
67  " - stream_selector (stream): Required field with value 'audio',\n"
-
68  " 'video', or stream number (zero based).\n"
-
69  " - output (out): Required output file (single file) or initialization\n"
-
70  " file path (multiple file).\n"
-
71  " - segment_template (segment): Optional value which specifies the\n"
-
72  " naming pattern for the segment files, and that the stream should be\n"
-
73  " split into multiple files. Its presence should be consistent across\n"
-
74  " streams.\n"
-
75  " - bandwidth (bw): Optional value which contains a user-specified\n"
-
76  " content bit rate for the stream, in bits/sec. If specified, this\n"
-
77  " value is propagated to the $Bandwidth$ template parameter for\n"
-
78  " segment names. If not specified, its value may be estimated.\n"
-
79  " - language (lang): Optional value which contains a user-specified\n"
-
80  " language tag. If specified, this value overrides any language\n"
-
81  " metadata in the input track.\n"
-
82  " - output_format (format): Optional value which specifies the format\n"
-
83  " of the output files (MP4 or WebM). If not specified, it will be\n"
-
84  " derived from the file extension of the output file.\n"
-
85  " - hls_name: Required for audio when outputting HLS.\n"
-
86  " name of the output stream. This is not (necessarily) the same as\n"
-
87  " output. This is used as the NAME attribute for EXT-X-MEDIA\n"
-
88  " - hls_group_id: Required for audio when outputting HLS.\n"
-
89  " The group ID for the output stream. For HLS this is used as the\n"
-
90  " GROUP-ID attribute for EXT-X-MEDIA.\n"
-
91  " - playlist_name: Required for HLS output.\n"
-
92  " Name of the playlist for the stream. Usually ends with '.m3u8'.\n";
-
93 
-
94 const char kMediaInfoSuffix[] = ".media_info";
-
95 
-
96 enum ExitStatus {
-
97  kSuccess = 0,
-
98  kArgumentValidationFailed,
-
99  kPackagingFailed,
-
100  kInternalError,
-
101 };
+
54 DEFINE_bool(override_version,
+
55  false,
+
56  "Override packager version in the generated outputs with "
+
57  "--test_version if it is set to true. Should be used for "
+
58  "testing only.");
+
59 DEFINE_string(test_version,
+
60  "",
+
61  "Packager version for testing. Ignored if --override_version is "
+
62  "false. Should be used for testing only.");
+
63 
+
64 namespace shaka {
+
65 namespace media {
+
66 namespace {
+
67 
+
68 const char kUsage[] =
+
69  "Packager driver program. Usage:\n\n"
+
70  "%s [flags] <stream_descriptor> ...\n"
+
71  "stream_descriptor consists of comma separated field_name/value pairs:\n"
+
72  "field_name=value,[field_name=value,]...\n"
+
73  "Supported field names are as follows:\n"
+
74  " - input (in): Required input/source media file path or network stream\n"
+
75  " URL.\n"
+
76  " - stream_selector (stream): Required field with value 'audio',\n"
+
77  " 'video', or stream number (zero based).\n"
+
78  " - output (out): Required output file (single file) or initialization\n"
+
79  " file path (multiple file).\n"
+
80  " - segment_template (segment): Optional value which specifies the\n"
+
81  " naming pattern for the segment files, and that the stream should be\n"
+
82  " split into multiple files. Its presence should be consistent across\n"
+
83  " streams.\n"
+
84  " - bandwidth (bw): Optional value which contains a user-specified\n"
+
85  " content bit rate for the stream, in bits/sec. If specified, this\n"
+
86  " value is propagated to the $Bandwidth$ template parameter for\n"
+
87  " segment names. If not specified, its value may be estimated.\n"
+
88  " - language (lang): Optional value which contains a user-specified\n"
+
89  " language tag. If specified, this value overrides any language\n"
+
90  " metadata in the input track.\n"
+
91  " - output_format (format): Optional value which specifies the format\n"
+
92  " of the output files (MP4 or WebM). If not specified, it will be\n"
+
93  " derived from the file extension of the output file.\n"
+
94  " - hls_name: Required for audio when outputting HLS.\n"
+
95  " name of the output stream. This is not (necessarily) the same as\n"
+
96  " output. This is used as the NAME attribute for EXT-X-MEDIA\n"
+
97  " - hls_group_id: Required for audio when outputting HLS.\n"
+
98  " The group ID for the output stream. For HLS this is used as the\n"
+
99  " GROUP-ID attribute for EXT-X-MEDIA.\n"
+
100  " - playlist_name: Required for HLS output.\n"
+
101  " Name of the playlist for the stream. Usually ends with '.m3u8'.\n";
102 
-
103 // TODO(rkuroiwa): Write TTML and WebVTT parser (demuxing) for a better check
-
104 // and for supporting live/segmenting (muxing). With a demuxer and a muxer,
-
105 // CreateRemuxJobs() shouldn't treat text as a special case.
-
106 std::string DetermineTextFileFormat(const std::string& file) {
-
107  std::string content;
-
108  if (!File::ReadFileToString(file.c_str(), &content)) {
-
109  LOG(ERROR) << "Failed to open file " << file
-
110  << " to determine file format.";
-
111  return "";
-
112  }
-
113  MediaContainerName container_name = DetermineContainer(
-
114  reinterpret_cast<const uint8_t*>(content.data()), content.size());
-
115  if (container_name == CONTAINER_WEBVTT) {
-
116  return "vtt";
-
117  } else if (container_name == CONTAINER_TTML) {
-
118  return "ttml";
-
119  }
-
120 
-
121  return "";
-
122 }
-
123 
-
124 FourCC GetProtectionScheme(const std::string& protection_scheme) {
-
125  if (protection_scheme == "cenc") {
-
126  return FOURCC_cenc;
-
127  } else if (protection_scheme == "cens") {
-
128  return FOURCC_cens;
-
129  } else if (protection_scheme == "cbc1") {
-
130  return FOURCC_cbc1;
-
131  } else if (protection_scheme == "cbcs") {
-
132  return FOURCC_cbcs;
-
133  } else {
-
134  LOG(ERROR) << "Unknown protection scheme: " << protection_scheme;
-
135  return FOURCC_NULL;
-
136  }
-
137 }
-
138 
-
139 } // namespace
-
140 
-
141 // A fake clock that always return time 0 (epoch). Should only be used for
-
142 // testing.
-
143 class FakeClock : public base::Clock {
-
144  public:
-
145  base::Time Now() override { return base::Time(); }
-
146 };
+
103 const char kMediaInfoSuffix[] = ".media_info";
+
104 
+
105 enum ExitStatus {
+
106  kSuccess = 0,
+
107  kArgumentValidationFailed,
+
108  kPackagingFailed,
+
109  kInternalError,
+
110 };
+
111 
+
112 // TODO(rkuroiwa): Write TTML and WebVTT parser (demuxing) for a better check
+
113 // and for supporting live/segmenting (muxing). With a demuxer and a muxer,
+
114 // CreateRemuxJobs() shouldn't treat text as a special case.
+
115 std::string DetermineTextFileFormat(const std::string& file) {
+
116  std::string content;
+
117  if (!File::ReadFileToString(file.c_str(), &content)) {
+
118  LOG(ERROR) << "Failed to open file " << file
+
119  << " to determine file format.";
+
120  return "";
+
121  }
+
122  MediaContainerName container_name = DetermineContainer(
+
123  reinterpret_cast<const uint8_t*>(content.data()), content.size());
+
124  if (container_name == CONTAINER_WEBVTT) {
+
125  return "vtt";
+
126  } else if (container_name == CONTAINER_TTML) {
+
127  return "ttml";
+
128  }
+
129 
+
130  return "";
+
131 }
+
132 
+
133 FourCC GetProtectionScheme(const std::string& protection_scheme) {
+
134  if (protection_scheme == "cenc") {
+
135  return FOURCC_cenc;
+
136  } else if (protection_scheme == "cens") {
+
137  return FOURCC_cens;
+
138  } else if (protection_scheme == "cbc1") {
+
139  return FOURCC_cbc1;
+
140  } else if (protection_scheme == "cbcs") {
+
141  return FOURCC_cbcs;
+
142  } else {
+
143  LOG(ERROR) << "Unknown protection scheme: " << protection_scheme;
+
144  return FOURCC_NULL;
+
145  }
+
146 }
147 
-
148 // Demux, Mux(es) and worker thread used to remux a source file/stream.
-
149 class RemuxJob : public base::SimpleThread {
-
150  public:
-
151  RemuxJob(scoped_ptr<Demuxer> demuxer)
-
152  : SimpleThread("RemuxJob"),
-
153  demuxer_(demuxer.Pass()) {}
-
154 
-
155  ~RemuxJob() override {
-
156  STLDeleteElements(&muxers_);
-
157  }
-
158 
-
159  void AddMuxer(scoped_ptr<Muxer> mux) {
-
160  muxers_.push_back(mux.release());
-
161  }
-
162 
-
163  Demuxer* demuxer() { return demuxer_.get(); }
-
164  Status status() { return status_; }
-
165 
-
166  private:
-
167  void Run() override {
-
168  DCHECK(demuxer_);
-
169  status_ = demuxer_->Run();
+
148 } // namespace
+
149 
+
150 // A fake clock that always return time 0 (epoch). Should only be used for
+
151 // testing.
+
152 class FakeClock : public base::Clock {
+
153  public:
+
154  base::Time Now() override { return base::Time(); }
+
155 };
+
156 
+
157 // Demux, Mux(es) and worker thread used to remux a source file/stream.
+
158 class RemuxJob : public base::SimpleThread {
+
159  public:
+
160  RemuxJob(scoped_ptr<Demuxer> demuxer)
+
161  : SimpleThread("RemuxJob"),
+
162  demuxer_(demuxer.Pass()) {}
+
163 
+
164  ~RemuxJob() override {
+
165  STLDeleteElements(&muxers_);
+
166  }
+
167 
+
168  void AddMuxer(scoped_ptr<Muxer> mux) {
+
169  muxers_.push_back(mux.release());
170  }
171 
-
172  scoped_ptr<Demuxer> demuxer_;
-
173  std::vector<Muxer*> muxers_;
-
174  Status status_;
-
175 
-
176  DISALLOW_COPY_AND_ASSIGN(RemuxJob);
-
177 };
-
178 
-
179 bool StreamInfoToTextMediaInfo(const StreamDescriptor& stream_descriptor,
-
180  const MuxerOptions& stream_muxer_options,
-
181  MediaInfo* text_media_info) {
-
182  const std::string& language = stream_descriptor.language;
-
183  std::string format = DetermineTextFileFormat(stream_descriptor.input);
-
184  if (format.empty()) {
-
185  LOG(ERROR) << "Failed to determine the text file format for "
-
186  << stream_descriptor.input;
-
187  return false;
-
188  }
-
189 
-
190  if (!File::Copy(stream_descriptor.input.c_str(),
-
191  stream_muxer_options.output_file_name.c_str())) {
-
192  LOG(ERROR) << "Failed to copy the input file (" << stream_descriptor.input
-
193  << ") to output file (" << stream_muxer_options.output_file_name
-
194  << ").";
-
195  return false;
-
196  }
-
197 
-
198  text_media_info->set_media_file_name(stream_muxer_options.output_file_name);
-
199  text_media_info->set_container_type(MediaInfo::CONTAINER_TEXT);
-
200 
-
201  if (stream_muxer_options.bandwidth != 0) {
-
202  text_media_info->set_bandwidth(stream_muxer_options.bandwidth);
-
203  } else {
-
204  // Text files are usually small and since the input is one file; there's no
-
205  // way for the player to do ranged requests. So set this value to something
-
206  // reasonable.
-
207  text_media_info->set_bandwidth(256);
-
208  }
+
172  Demuxer* demuxer() { return demuxer_.get(); }
+
173  Status status() { return status_; }
+
174 
+
175  private:
+
176  void Run() override {
+
177  DCHECK(demuxer_);
+
178  status_ = demuxer_->Run();
+
179  }
+
180 
+
181  scoped_ptr<Demuxer> demuxer_;
+
182  std::vector<Muxer*> muxers_;
+
183  Status status_;
+
184 
+
185  DISALLOW_COPY_AND_ASSIGN(RemuxJob);
+
186 };
+
187 
+
188 bool StreamInfoToTextMediaInfo(const StreamDescriptor& stream_descriptor,
+
189  const MuxerOptions& stream_muxer_options,
+
190  MediaInfo* text_media_info) {
+
191  const std::string& language = stream_descriptor.language;
+
192  std::string format = DetermineTextFileFormat(stream_descriptor.input);
+
193  if (format.empty()) {
+
194  LOG(ERROR) << "Failed to determine the text file format for "
+
195  << stream_descriptor.input;
+
196  return false;
+
197  }
+
198 
+
199  if (!File::Copy(stream_descriptor.input.c_str(),
+
200  stream_muxer_options.output_file_name.c_str())) {
+
201  LOG(ERROR) << "Failed to copy the input file (" << stream_descriptor.input
+
202  << ") to output file (" << stream_muxer_options.output_file_name
+
203  << ").";
+
204  return false;
+
205  }
+
206 
+
207  text_media_info->set_media_file_name(stream_muxer_options.output_file_name);
+
208  text_media_info->set_container_type(MediaInfo::CONTAINER_TEXT);
209 
-
210  MediaInfo::TextInfo* text_info = text_media_info->mutable_text_info();
-
211  text_info->set_format(format);
-
212  if (!language.empty())
-
213  text_info->set_language(language);
-
214 
-
215  return true;
-
216 }
-
217 
-
218 scoped_ptr<Muxer> CreateOutputMuxer(const MuxerOptions& options,
-
219  MediaContainerName container) {
-
220  if (container == CONTAINER_WEBM) {
-
221  return scoped_ptr<Muxer>(new webm::WebMMuxer(options));
-
222  } else if (container == CONTAINER_MPEG2TS) {
-
223  return scoped_ptr<Muxer>(new mp2t::TsMuxer(options));
-
224  } else {
-
225  DCHECK_EQ(container, CONTAINER_MOV);
-
226  return scoped_ptr<Muxer>(new mp4::MP4Muxer(options));
-
227  }
-
228 }
-
229 
-
230 bool CreateRemuxJobs(const StreamDescriptorList& stream_descriptors,
-
231  const MuxerOptions& muxer_options,
-
232  FakeClock* fake_clock,
-
233  KeySource* key_source,
-
234  MpdNotifier* mpd_notifier,
-
235  hls::HlsNotifier* hls_notifier,
-
236  std::vector<RemuxJob*>* remux_jobs) {
-
237  // No notifiers OR (mpd_notifier XOR hls_notifier); which is NAND.
-
238  DCHECK(!(mpd_notifier && hls_notifier));
-
239  DCHECK(remux_jobs);
-
240 
-
241  std::string previous_input;
-
242  int stream_number = 0;
-
243  for (StreamDescriptorList::const_iterator
-
244  stream_iter = stream_descriptors.begin();
-
245  stream_iter != stream_descriptors.end();
-
246  ++stream_iter, ++stream_number) {
-
247  // Process stream descriptor.
-
248  MuxerOptions stream_muxer_options(muxer_options);
-
249  stream_muxer_options.output_file_name = stream_iter->output;
-
250  if (!stream_iter->segment_template.empty()) {
-
251  if (!ValidateSegmentTemplate(stream_iter->segment_template)) {
-
252  LOG(ERROR) << "ERROR: segment template with '"
-
253  << stream_iter->segment_template << "' is invalid.";
-
254  return false;
-
255  }
-
256  stream_muxer_options.segment_template = stream_iter->segment_template;
-
257  if (stream_muxer_options.single_segment) {
-
258  LOG(WARNING) << "Segment template and single segment are incompatible, "
-
259  "setting single segment to false.";
-
260  stream_muxer_options.single_segment = false;
-
261  }
-
262  }
-
263  stream_muxer_options.bandwidth = stream_iter->bandwidth;
-
264 
-
265  // Handle text input.
-
266  if (stream_iter->stream_selector == "text") {
-
267  MediaInfo text_media_info;
-
268  if (!StreamInfoToTextMediaInfo(*stream_iter, stream_muxer_options,
-
269  &text_media_info)) {
-
270  return false;
-
271  }
-
272 
-
273  if (mpd_notifier) {
-
274  uint32 unused;
-
275  if (!mpd_notifier->NotifyNewContainer(text_media_info, &unused)) {
-
276  LOG(ERROR) << "Failed to process text file " << stream_iter->input;
-
277  } else {
-
278  mpd_notifier->Flush();
-
279  }
-
280  } else if (FLAGS_output_media_info) {
- -
282  text_media_info,
-
283  stream_muxer_options.output_file_name + kMediaInfoSuffix);
-
284  } else {
-
285  NOTIMPLEMENTED()
-
286  << "--mpd_output or --output_media_info flags are "
-
287  "required for text output. Skipping manifest related output for "
-
288  << stream_iter->input;
-
289  }
-
290  continue;
-
291  }
-
292 
-
293  if (stream_iter->input != previous_input) {
-
294  // New remux job needed. Create demux and job thread.
-
295  scoped_ptr<Demuxer> demuxer(new Demuxer(stream_iter->input));
-
296  if (FLAGS_enable_widevine_decryption ||
-
297  FLAGS_enable_fixed_key_decryption) {
-
298  scoped_ptr<KeySource> key_source(CreateDecryptionKeySource());
-
299  if (!key_source)
-
300  return false;
-
301  demuxer->SetKeySource(key_source.Pass());
-
302  }
-
303  Status status = demuxer->Initialize();
-
304  if (!status.ok()) {
-
305  LOG(ERROR) << "Demuxer failed to initialize: " << status.ToString();
-
306  return false;
-
307  }
-
308  if (FLAGS_dump_stream_info) {
-
309  printf("\nFile \"%s\":\n", stream_iter->input.c_str());
-
310  DumpStreamInfo(demuxer->streams());
-
311  if (stream_iter->output.empty())
-
312  continue; // just need stream info.
-
313  }
-
314  remux_jobs->push_back(new RemuxJob(demuxer.Pass()));
-
315  previous_input = stream_iter->input;
-
316  }
-
317  DCHECK(!remux_jobs->empty());
-
318 
-
319  scoped_ptr<Muxer> muxer(
-
320  CreateOutputMuxer(stream_muxer_options, stream_iter->output_format));
-
321  if (FLAGS_use_fake_clock_for_muxer) muxer->set_clock(fake_clock);
-
322 
-
323  if (key_source) {
-
324  muxer->SetKeySource(key_source,
-
325  FLAGS_max_sd_pixels,
-
326  FLAGS_clear_lead,
-
327  FLAGS_crypto_period_duration,
-
328  GetProtectionScheme(FLAGS_protection_scheme));
-
329  }
-
330 
-
331  scoped_ptr<MuxerListener> muxer_listener;
-
332  DCHECK(!(FLAGS_output_media_info && mpd_notifier));
-
333  if (FLAGS_output_media_info) {
-
334  const std::string output_media_info_file_name =
-
335  stream_muxer_options.output_file_name + kMediaInfoSuffix;
-
336  scoped_ptr<VodMediaInfoDumpMuxerListener>
-
337  vod_media_info_dump_muxer_listener(
-
338  new VodMediaInfoDumpMuxerListener(output_media_info_file_name));
-
339  muxer_listener = vod_media_info_dump_muxer_listener.Pass();
-
340  }
-
341  if (mpd_notifier) {
-
342  scoped_ptr<MpdNotifyMuxerListener> mpd_notify_muxer_listener(
-
343  new MpdNotifyMuxerListener(mpd_notifier));
-
344  muxer_listener = mpd_notify_muxer_listener.Pass();
-
345  }
-
346 
-
347  if (hls_notifier) {
-
348  // TODO(rkuroiwa): Do some smart stuff to group the audios, e.g. detect
-
349  // languages.
-
350  std::string group_id = stream_iter->hls_group_id;
-
351  std::string name = stream_iter->hls_name;
-
352  std::string hls_playlist_name = stream_iter->hls_playlist_name;
-
353  if (group_id.empty())
-
354  group_id = "audio";
-
355  if (name.empty())
-
356  name = base::StringPrintf("stream_%d", stream_number);
-
357  if (hls_playlist_name.empty())
-
358  hls_playlist_name = base::StringPrintf("stream_%d.m3u8", stream_number);
-
359 
-
360  muxer_listener.reset(new HlsNotifyMuxerListener(hls_playlist_name, name,
-
361  group_id, hls_notifier));
-
362  }
-
363 
-
364  if (muxer_listener)
-
365  muxer->SetMuxerListener(muxer_listener.Pass());
-
366 
-
367  if (!AddStreamToMuxer(remux_jobs->back()->demuxer()->streams(),
-
368  stream_iter->stream_selector,
-
369  stream_iter->language,
-
370  muxer.get())) {
-
371  return false;
-
372  }
-
373  remux_jobs->back()->AddMuxer(muxer.Pass());
-
374  }
+
210  if (stream_muxer_options.bandwidth != 0) {
+
211  text_media_info->set_bandwidth(stream_muxer_options.bandwidth);
+
212  } else {
+
213  // Text files are usually small and since the input is one file; there's no
+
214  // way for the player to do ranged requests. So set this value to something
+
215  // reasonable.
+
216  text_media_info->set_bandwidth(256);
+
217  }
+
218 
+
219  MediaInfo::TextInfo* text_info = text_media_info->mutable_text_info();
+
220  text_info->set_format(format);
+
221  if (!language.empty())
+
222  text_info->set_language(language);
+
223 
+
224  return true;
+
225 }
+
226 
+
227 scoped_ptr<Muxer> CreateOutputMuxer(const MuxerOptions& options,
+
228  MediaContainerName container) {
+
229  if (container == CONTAINER_WEBM) {
+
230  return scoped_ptr<Muxer>(new webm::WebMMuxer(options));
+
231  } else if (container == CONTAINER_MPEG2TS) {
+
232  return scoped_ptr<Muxer>(new mp2t::TsMuxer(options));
+
233  } else {
+
234  DCHECK_EQ(container, CONTAINER_MOV);
+
235  return scoped_ptr<Muxer>(new mp4::MP4Muxer(options));
+
236  }
+
237 }
+
238 
+
239 bool CreateRemuxJobs(const StreamDescriptorList& stream_descriptors,
+
240  const MuxerOptions& muxer_options,
+
241  FakeClock* fake_clock,
+
242  KeySource* key_source,
+
243  MpdNotifier* mpd_notifier,
+
244  hls::HlsNotifier* hls_notifier,
+
245  std::vector<RemuxJob*>* remux_jobs) {
+
246  // No notifiers OR (mpd_notifier XOR hls_notifier); which is NAND.
+
247  DCHECK(!(mpd_notifier && hls_notifier));
+
248  DCHECK(remux_jobs);
+
249 
+
250  std::string previous_input;
+
251  int stream_number = 0;
+
252  for (StreamDescriptorList::const_iterator
+
253  stream_iter = stream_descriptors.begin();
+
254  stream_iter != stream_descriptors.end();
+
255  ++stream_iter, ++stream_number) {
+
256  // Process stream descriptor.
+
257  MuxerOptions stream_muxer_options(muxer_options);
+
258  stream_muxer_options.output_file_name = stream_iter->output;
+
259  if (!stream_iter->segment_template.empty()) {
+
260  if (!ValidateSegmentTemplate(stream_iter->segment_template)) {
+
261  LOG(ERROR) << "ERROR: segment template with '"
+
262  << stream_iter->segment_template << "' is invalid.";
+
263  return false;
+
264  }
+
265  stream_muxer_options.segment_template = stream_iter->segment_template;
+
266  if (stream_muxer_options.single_segment) {
+
267  LOG(WARNING) << "Segment template and single segment are incompatible, "
+
268  "setting single segment to false.";
+
269  stream_muxer_options.single_segment = false;
+
270  }
+
271  }
+
272  stream_muxer_options.bandwidth = stream_iter->bandwidth;
+
273 
+
274  // Handle text input.
+
275  if (stream_iter->stream_selector == "text") {
+
276  MediaInfo text_media_info;
+
277  if (!StreamInfoToTextMediaInfo(*stream_iter, stream_muxer_options,
+
278  &text_media_info)) {
+
279  return false;
+
280  }
+
281 
+
282  if (mpd_notifier) {
+
283  uint32 unused;
+
284  if (!mpd_notifier->NotifyNewContainer(text_media_info, &unused)) {
+
285  LOG(ERROR) << "Failed to process text file " << stream_iter->input;
+
286  } else {
+
287  mpd_notifier->Flush();
+
288  }
+
289  } else if (FLAGS_output_media_info) {
+ +
291  text_media_info,
+
292  stream_muxer_options.output_file_name + kMediaInfoSuffix);
+
293  } else {
+
294  NOTIMPLEMENTED()
+
295  << "--mpd_output or --output_media_info flags are "
+
296  "required for text output. Skipping manifest related output for "
+
297  << stream_iter->input;
+
298  }
+
299  continue;
+
300  }
+
301 
+
302  if (stream_iter->input != previous_input) {
+
303  // New remux job needed. Create demux and job thread.
+
304  scoped_ptr<Demuxer> demuxer(new Demuxer(stream_iter->input));
+
305  if (FLAGS_enable_widevine_decryption ||
+
306  FLAGS_enable_fixed_key_decryption) {
+
307  scoped_ptr<KeySource> key_source(CreateDecryptionKeySource());
+
308  if (!key_source)
+
309  return false;
+
310  demuxer->SetKeySource(key_source.Pass());
+
311  }
+
312  Status status = demuxer->Initialize();
+
313  if (!status.ok()) {
+
314  LOG(ERROR) << "Demuxer failed to initialize: " << status.ToString();
+
315  return false;
+
316  }
+
317  if (FLAGS_dump_stream_info) {
+
318  printf("\nFile \"%s\":\n", stream_iter->input.c_str());
+
319  DumpStreamInfo(demuxer->streams());
+
320  if (stream_iter->output.empty())
+
321  continue; // just need stream info.
+
322  }
+
323  remux_jobs->push_back(new RemuxJob(demuxer.Pass()));
+
324  previous_input = stream_iter->input;
+
325  }
+
326  DCHECK(!remux_jobs->empty());
+
327 
+
328  scoped_ptr<Muxer> muxer(
+
329  CreateOutputMuxer(stream_muxer_options, stream_iter->output_format));
+
330  if (FLAGS_use_fake_clock_for_muxer) muxer->set_clock(fake_clock);
+
331 
+
332  if (key_source) {
+
333  muxer->SetKeySource(key_source,
+
334  FLAGS_max_sd_pixels,
+
335  FLAGS_clear_lead,
+
336  FLAGS_crypto_period_duration,
+
337  GetProtectionScheme(FLAGS_protection_scheme));
+
338  }
+
339 
+
340  scoped_ptr<MuxerListener> muxer_listener;
+
341  DCHECK(!(FLAGS_output_media_info && mpd_notifier));
+
342  if (FLAGS_output_media_info) {
+
343  const std::string output_media_info_file_name =
+
344  stream_muxer_options.output_file_name + kMediaInfoSuffix;
+
345  scoped_ptr<VodMediaInfoDumpMuxerListener>
+
346  vod_media_info_dump_muxer_listener(
+
347  new VodMediaInfoDumpMuxerListener(output_media_info_file_name));
+
348  muxer_listener = vod_media_info_dump_muxer_listener.Pass();
+
349  }
+
350  if (mpd_notifier) {
+
351  scoped_ptr<MpdNotifyMuxerListener> mpd_notify_muxer_listener(
+
352  new MpdNotifyMuxerListener(mpd_notifier));
+
353  muxer_listener = mpd_notify_muxer_listener.Pass();
+
354  }
+
355 
+
356  if (hls_notifier) {
+
357  // TODO(rkuroiwa): Do some smart stuff to group the audios, e.g. detect
+
358  // languages.
+
359  std::string group_id = stream_iter->hls_group_id;
+
360  std::string name = stream_iter->hls_name;
+
361  std::string hls_playlist_name = stream_iter->hls_playlist_name;
+
362  if (group_id.empty())
+
363  group_id = "audio";
+
364  if (name.empty())
+
365  name = base::StringPrintf("stream_%d", stream_number);
+
366  if (hls_playlist_name.empty())
+
367  hls_playlist_name = base::StringPrintf("stream_%d.m3u8", stream_number);
+
368 
+
369  muxer_listener.reset(new HlsNotifyMuxerListener(hls_playlist_name, name,
+
370  group_id, hls_notifier));
+
371  }
+
372 
+
373  if (muxer_listener)
+
374  muxer->SetMuxerListener(muxer_listener.Pass());
375 
-
376  return true;
-
377 }
-
378 
-
379 Status RunRemuxJobs(const std::vector<RemuxJob*>& remux_jobs) {
-
380  // Start the job threads.
-
381  for (std::vector<RemuxJob*>::const_iterator job_iter = remux_jobs.begin();
-
382  job_iter != remux_jobs.end();
-
383  ++job_iter) {
-
384  (*job_iter)->Start();
-
385  }
-
386 
-
387  // Wait for all jobs to complete or an error occurs.
-
388  Status status;
-
389  bool all_joined;
-
390  do {
-
391  all_joined = true;
-
392  for (std::vector<RemuxJob*>::const_iterator job_iter = remux_jobs.begin();
-
393  job_iter != remux_jobs.end();
-
394  ++job_iter) {
-
395  if ((*job_iter)->HasBeenJoined()) {
-
396  status = (*job_iter)->status();
-
397  if (!status.ok())
-
398  break;
-
399  } else {
-
400  all_joined = false;
-
401  (*job_iter)->Join();
-
402  }
-
403  }
-
404  } while (!all_joined && status.ok());
-
405 
-
406  return status;
-
407 }
-
408 
-
409 bool RunPackager(const StreamDescriptorList& stream_descriptors) {
-
410  const FourCC protection_scheme = GetProtectionScheme(FLAGS_protection_scheme);
-
411  if (protection_scheme == FOURCC_NULL)
-
412  return false;
-
413 
-
414  if (!AssignFlagsFromProfile())
-
415  return false;
-
416 
-
417  if (FLAGS_output_media_info && !FLAGS_mpd_output.empty()) {
-
418  NOTIMPLEMENTED() << "ERROR: --output_media_info and --mpd_output do not "
-
419  "work together.";
-
420  return false;
-
421  }
-
422  if (FLAGS_output_media_info && !FLAGS_single_segment) {
-
423  // TODO(rkuroiwa, kqyang): Support partial media info dump for live.
-
424  NOTIMPLEMENTED() << "ERROR: --output_media_info is only supported if "
-
425  "--single_segment is true.";
-
426  return false;
-
427  }
-
428 
-
429  // Since there isn't a muxer listener that can output both MPD and HLS,
-
430  // disallow specifying both MPD and HLS flags.
-
431  if (!FLAGS_mpd_output.empty() && !FLAGS_hls_master_playlist_output.empty()) {
-
432  LOG(ERROR) << "Cannot output both MPD and HLS.";
-
433  return false;
-
434  }
-
435 
-
436  // Get basic muxer options.
-
437  MuxerOptions muxer_options;
-
438  if (!GetMuxerOptions(&muxer_options))
-
439  return false;
-
440 
-
441  MpdOptions mpd_options;
-
442  if (!GetMpdOptions(&mpd_options))
-
443  return false;
+
376  if (!AddStreamToMuxer(remux_jobs->back()->demuxer()->streams(),
+
377  stream_iter->stream_selector,
+
378  stream_iter->language,
+
379  muxer.get())) {
+
380  return false;
+
381  }
+
382  remux_jobs->back()->AddMuxer(muxer.Pass());
+
383  }
+
384 
+
385  return true;
+
386 }
+
387 
+
388 Status RunRemuxJobs(const std::vector<RemuxJob*>& remux_jobs) {
+
389  // Start the job threads.
+
390  for (std::vector<RemuxJob*>::const_iterator job_iter = remux_jobs.begin();
+
391  job_iter != remux_jobs.end();
+
392  ++job_iter) {
+
393  (*job_iter)->Start();
+
394  }
+
395 
+
396  // Wait for all jobs to complete or an error occurs.
+
397  Status status;
+
398  bool all_joined;
+
399  do {
+
400  all_joined = true;
+
401  for (std::vector<RemuxJob*>::const_iterator job_iter = remux_jobs.begin();
+
402  job_iter != remux_jobs.end();
+
403  ++job_iter) {
+
404  if ((*job_iter)->HasBeenJoined()) {
+
405  status = (*job_iter)->status();
+
406  if (!status.ok())
+
407  break;
+
408  } else {
+
409  all_joined = false;
+
410  (*job_iter)->Join();
+
411  }
+
412  }
+
413  } while (!all_joined && status.ok());
+
414 
+
415  return status;
+
416 }
+
417 
+
418 bool RunPackager(const StreamDescriptorList& stream_descriptors) {
+
419  const FourCC protection_scheme = GetProtectionScheme(FLAGS_protection_scheme);
+
420  if (protection_scheme == FOURCC_NULL)
+
421  return false;
+
422 
+
423  if (!AssignFlagsFromProfile())
+
424  return false;
+
425 
+
426  if (FLAGS_output_media_info && !FLAGS_mpd_output.empty()) {
+
427  NOTIMPLEMENTED() << "ERROR: --output_media_info and --mpd_output do not "
+
428  "work together.";
+
429  return false;
+
430  }
+
431  if (FLAGS_output_media_info && !FLAGS_single_segment) {
+
432  // TODO(rkuroiwa, kqyang): Support partial media info dump for live.
+
433  NOTIMPLEMENTED() << "ERROR: --output_media_info is only supported if "
+
434  "--single_segment is true.";
+
435  return false;
+
436  }
+
437 
+
438  // Since there isn't a muxer listener that can output both MPD and HLS,
+
439  // disallow specifying both MPD and HLS flags.
+
440  if (!FLAGS_mpd_output.empty() && !FLAGS_hls_master_playlist_output.empty()) {
+
441  LOG(ERROR) << "Cannot output both MPD and HLS.";
+
442  return false;
+
443  }
444 
-
445  // Create encryption key source if needed.
-
446  scoped_ptr<KeySource> encryption_key_source;
-
447  if (FLAGS_enable_widevine_encryption || FLAGS_enable_fixed_key_encryption) {
-
448  encryption_key_source = CreateEncryptionKeySource();
-
449  if (!encryption_key_source)
-
450  return false;
-
451  }
-
452 
-
453  scoped_ptr<MpdNotifier> mpd_notifier;
-
454  if (!FLAGS_mpd_output.empty()) {
-
455  DashProfile profile =
-
456  FLAGS_single_segment ? kOnDemandProfile : kLiveProfile;
-
457  std::vector<std::string> base_urls;
-
458  base::SplitString(FLAGS_base_urls, ',', &base_urls);
-
459  if (FLAGS_generate_dash_if_iop_compliant_mpd) {
-
460  mpd_notifier.reset(new DashIopMpdNotifier(profile, mpd_options, base_urls,
-
461  FLAGS_mpd_output));
-
462  } else {
-
463  mpd_notifier.reset(new SimpleMpdNotifier(profile, mpd_options, base_urls,
-
464  FLAGS_mpd_output));
-
465  }
-
466  if (!mpd_notifier->Init()) {
-
467  LOG(ERROR) << "MpdNotifier failed to initialize.";
-
468  return false;
-
469  }
-
470  }
-
471 
-
472  scoped_ptr<hls::HlsNotifier> hls_notifier;
-
473  if (!FLAGS_hls_master_playlist_output.empty()) {
-
474  base::FilePath master_playlist_path(FLAGS_hls_master_playlist_output);
-
475  base::FilePath master_playlist_name = master_playlist_path.BaseName();
-
476 
-
477  hls_notifier.reset(new hls::SimpleHlsNotifier(
-
478  hls::HlsNotifier::HlsProfile::kOnDemandProfile, FLAGS_hls_base_url,
-
479  master_playlist_path.DirName().AsEndingWithSeparator().value(),
-
480  master_playlist_name.value()));
-
481  }
-
482 
-
483  std::vector<RemuxJob*> remux_jobs;
-
484  STLElementDeleter<std::vector<RemuxJob*> > scoped_jobs_deleter(&remux_jobs);
-
485  FakeClock fake_clock;
-
486  if (!CreateRemuxJobs(stream_descriptors, muxer_options, &fake_clock,
-
487  encryption_key_source.get(), mpd_notifier.get(),
-
488  hls_notifier.get(), &remux_jobs)) {
-
489  return false;
+
445  // Get basic muxer options.
+
446  MuxerOptions muxer_options;
+
447  if (!GetMuxerOptions(&muxer_options))
+
448  return false;
+
449 
+
450  MpdOptions mpd_options;
+
451  if (!GetMpdOptions(&mpd_options))
+
452  return false;
+
453 
+
454  // Create encryption key source if needed.
+
455  scoped_ptr<KeySource> encryption_key_source;
+
456  if (FLAGS_enable_widevine_encryption || FLAGS_enable_fixed_key_encryption) {
+
457  encryption_key_source = CreateEncryptionKeySource();
+
458  if (!encryption_key_source)
+
459  return false;
+
460  }
+
461 
+
462  scoped_ptr<MpdNotifier> mpd_notifier;
+
463  if (!FLAGS_mpd_output.empty()) {
+
464  DashProfile profile =
+
465  FLAGS_single_segment ? kOnDemandProfile : kLiveProfile;
+
466  std::vector<std::string> base_urls;
+
467  base::SplitString(FLAGS_base_urls, ',', &base_urls);
+
468  if (FLAGS_generate_dash_if_iop_compliant_mpd) {
+
469  mpd_notifier.reset(new DashIopMpdNotifier(profile, mpd_options, base_urls,
+
470  FLAGS_mpd_output));
+
471  } else {
+
472  mpd_notifier.reset(new SimpleMpdNotifier(profile, mpd_options, base_urls,
+
473  FLAGS_mpd_output));
+
474  }
+
475  if (!mpd_notifier->Init()) {
+
476  LOG(ERROR) << "MpdNotifier failed to initialize.";
+
477  return false;
+
478  }
+
479  }
+
480 
+
481  scoped_ptr<hls::HlsNotifier> hls_notifier;
+
482  if (!FLAGS_hls_master_playlist_output.empty()) {
+
483  base::FilePath master_playlist_path(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().value(),
+
489  master_playlist_name.value()));
490  }
491 
-
492  Status status = RunRemuxJobs(remux_jobs);
-
493  if (!status.ok()) {
-
494  LOG(ERROR) << "Packaging Error: " << status.ToString();
-
495  return false;
-
496  }
-
497 
-
498  if (hls_notifier) {
-
499  if (!hls_notifier->Flush())
-
500  return false;
-
501  }
-
502  if (mpd_notifier) {
-
503  if (!mpd_notifier->Flush())
-
504  return false;
+
492  std::vector<RemuxJob*> remux_jobs;
+
493  STLElementDeleter<std::vector<RemuxJob*> > scoped_jobs_deleter(&remux_jobs);
+
494  FakeClock fake_clock;
+
495  if (!CreateRemuxJobs(stream_descriptors, muxer_options, &fake_clock,
+
496  encryption_key_source.get(), mpd_notifier.get(),
+
497  hls_notifier.get(), &remux_jobs)) {
+
498  return false;
+
499  }
+
500 
+
501  Status status = RunRemuxJobs(remux_jobs);
+
502  if (!status.ok()) {
+
503  LOG(ERROR) << "Packaging Error: " << status.ToString();
+
504  return false;
505  }
506 
-
507  printf("Packaging completed successfully.\n");
-
508  return true;
-
509 }
-
510 
-
511 int PackagerMain(int argc, char** argv) {
-
512  base::AtExitManager exit;
-
513  // Needed to enable VLOG/DVLOG through --vmodule or --v.
-
514  base::CommandLine::Init(argc, argv);
-
515  CHECK(logging::InitLogging(logging::LoggingSettings()));
-
516 
-
517  google::SetUsageMessage(base::StringPrintf(kUsage, argv[0]));
-
518  google::ParseCommandLineFlags(&argc, &argv, true);
-
519  if (argc < 2) {
-
520  std::string version_string =
-
521  base::StringPrintf("shaka-packager version %s", kPackagerVersion);
-
522  google::ShowUsageWithFlags(version_string.c_str());
-
523  return kSuccess;
-
524  }
+
507  if (hls_notifier) {
+
508  if (!hls_notifier->Flush())
+
509  return false;
+
510  }
+
511  if (mpd_notifier) {
+
512  if (!mpd_notifier->Flush())
+
513  return false;
+
514  }
+
515 
+
516  printf("Packaging completed successfully.\n");
+
517  return true;
+
518 }
+
519 
+
520 int PackagerMain(int argc, char** argv) {
+
521  base::AtExitManager exit;
+
522  // Needed to enable VLOG/DVLOG through --vmodule or --v.
+
523  base::CommandLine::Init(argc, argv);
+
524  CHECK(logging::InitLogging(logging::LoggingSettings()));
525 
- -
527  return kArgumentValidationFailed;
-
528 
-
529  LibcryptoThreading libcrypto_threading;
-
530  // TODO(tinskip): Make InsertStreamDescriptor a member of
-
531  // StreamDescriptorList.
-
532  StreamDescriptorList stream_descriptors;
-
533  for (int i = 1; i < argc; ++i) {
-
534  if (!InsertStreamDescriptor(argv[i], &stream_descriptors))
-
535  return kArgumentValidationFailed;
-
536  }
-
537  return RunPackager(stream_descriptors) ? kSuccess : kPackagingFailed;
-
538 }
-
539 
-
540 } // namespace media
-
541 } // namespace shaka
-
542 
-
543 int main(int argc, char** argv) {
-
544  return shaka::media::PackagerMain(argc, argv);
-
545 }
+
526  google::SetUsageMessage(base::StringPrintf(kUsage, argv[0]));
+
527  google::ParseCommandLineFlags(&argc, &argv, true);
+
528  if (argc < 2) {
+
529  const std::string version_string = base::StringPrintf(
+
530  "shaka-packager version %s", GetPackagerVersion().c_str());
+
531  google::ShowUsageWithFlags(version_string.c_str());
+
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 int main(int argc, char** argv) {
+
556  return shaka::media::PackagerMain(argc, argv);
+
557 }
static bool Copy(const char *from_file_name, const char *to_file_name)
Definition: file.cc:202
bool ValidateWidevineCryptoFlags()
static bool WriteMediaInfoToFile(const MediaInfo &media_info, const std::string &output_file_path)
@@ -640,7 +652,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); 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 682c857deb..379f74c404 100644 --- a/docs/d2/de7/classshaka_1_1media_1_1TextStreamInfo-members.html +++ b/docs/d2/de7/classshaka_1_1media_1_1TextStreamInfo-members.html @@ -116,7 +116,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 da97bb5a35..3cf1903060 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 6ce18a6b0e..5c45e6a711 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 ddc2ffdca3..938269287a 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 eb2b63226b..b549655b1a 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 4f00f161e5..65200ad6be 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 f888ba5222..9bfc9838e1 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 @@ -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 501e5fb435..c2fb1cfb3e 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 f932d1f8f2..81e0185148 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 da8a629400..b1cdcef0e1 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 535fac03e2..d747ef71d4 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 dbe931c776..9de63bf672 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 5810e70428..361466b61c 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 aad32f1b9c..01c7ecc48a 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 31609e0add..311844640c 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 e0f24acbce..8f508a3603 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 61dcaf2f90..8f3ea1777f 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 bc6728fd8b..a9d25620a0 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 04d474cfdd..8e012d3c3f 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 c6f55fbdfc..736d874936 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 b1a4be299d..b770c77fc9 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 511f874feb..c4d2b3d538 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 c7b4c33ede..31482b166c 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 f44ecbbdca..cb7921fb48 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 37e95a709a..55190a77b3 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 423b493186..7eaa384191 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 7aa39bb367..e1ac4ebfd2 100644 --- a/docs/d3/d6b/fixed__key__source_8cc_source.html +++ b/docs/d3/d6b/fixed__key__source_8cc_source.html @@ -245,7 +245,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 50e1e4d194..a592e19f8d 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 @@ -178,7 +178,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 40581b0bdb..ed0cb00032 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 4ebfdf41c9..f7ec178835 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 @@ -182,7 +182,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 6b03c17a4a..5fc12765dc 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 48d008d685..d3d97a5558 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 991c6c8ea9..beea425e19 100644 --- a/docs/d3/d76/muxer__flags_8h_source.html +++ b/docs/d3/d76/muxer__flags_8h_source.html @@ -114,7 +114,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d77/structshaka_1_1media_1_1mp4_1_1TextSampleEntry-members.html b/docs/d3/d77/structshaka_1_1media_1_1mp4_1_1TextSampleEntry-members.html index 5f238d81c4..4327cab053 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 b5d14fc0f4..1fb5f50faf 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 33fd2615ac..d19486af0f 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 f81e185689..24111deb37 100644 --- a/docs/d3/d80/muxer__util_8h_source.html +++ b/docs/d3/d80/muxer__util_8h_source.html @@ -127,7 +127,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d87/structshaka_1_1media_1_1mp4_1_1SampleToChunk.html b/docs/d3/d87/structshaka_1_1media_1_1mp4_1_1SampleToChunk.html index f3f40c1be5..cb72b60d16 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 594f65af58..af53c6fbb2 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 22eb959f45..e3842f0e70 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 c14a541127..55cab8b670 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 dacf3cb59c..51501031ed 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 60ff1583fc..2c0efda02b 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 db63d53c55..5d63a20291 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 @@ -293,7 +293,7 @@ double cluster_length_sec< 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 4ebd97ab58..ab3da8ab35 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 4a6c483709..b145f914e4 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 7dbe848679..552f023de4 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 89497f8b5f..76ea1a61e5 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 f5e3cdc98d..0bdee9fe49 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 11fbf0686a..f3fc78753d 100644 --- a/docs/d3/dbc/seek__head_8cc_source.html +++ b/docs/d3/dbc/seek__head_8cc_source.html @@ -216,7 +216,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/dbe/demuxer_8cc_source.html b/docs/d3/dbe/demuxer_8cc_source.html index 9985009795..3eb87d6581 100644 --- a/docs/d3/dbe/demuxer_8cc_source.html +++ b/docs/d3/dbe/demuxer_8cc_source.html @@ -345,7 +345,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/dbe/structshaka_1_1media_1_1mp4_1_1EditList.html b/docs/d3/dbe/structshaka_1_1media_1_1mp4_1_1EditList.html index ea9dea95cb..303bf7b4a4 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 a03c088a38..7df9ef735b 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 491ca5ec75..871f2690a2 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 efb2f2ea71..b9d71be3fd 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 b8311e1bf3..1e2bbf6a64 100644 --- a/docs/d3/de4/seek__head_8h_source.html +++ b/docs/d3/de4/seek__head_8h_source.html @@ -140,7 +140,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/de9/classshaka_1_1media_1_1mp4_1_1BoxBuffer-members.html b/docs/d3/de9/classshaka_1_1media_1_1mp4_1_1BoxBuffer-members.html index 0be819b612..37d607720e 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 eb3df0f9a7..4a7c1f7dab 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 03ed1cebab..af861b56ef 100644 --- a/docs/d3/df1/box__reader_8cc_source.html +++ b/docs/d3/df1/box__reader_8cc_source.html @@ -260,7 +260,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 bf573fe544..c8898f2885 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 5035f7be6f..35e309a9d5 100644 --- a/docs/d4/d00/mp4_2multi__segment__segmenter_8cc_source.html +++ b/docs/d4/d00/mp4_2multi__segment__segmenter_8cc_source.html @@ -287,8 +287,8 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
198 } // 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:380
-
void SetComplete()
Set progress to 100%.
Definition: segmenter.cc:396
+
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:383
+
void SetComplete()
Set progress to 100%.
Definition: segmenter.cc:399
virtual void OnSampleDurationReady(uint32_t sample_duration)=0
virtual bool Close()=0
@@ -304,7 +304,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 934706b285..78c29971f1 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 637d39f647..32aac1471d 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 b3f8e6b769..da295b6674 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 233b955f2a..6662a2fd04 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 63d8ecff0b..56e79d07b8 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 a1aa96cc9b..28c5788bb3 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 0babdbb9ed..2abb3922b6 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 4a69272310..fadfcc7b7b 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 ec6068a702..4ec41981bc 100644 --- a/docs/d4/d37/io__cache_8cc_source.html +++ b/docs/d4/d37/io__cache_8cc_source.html @@ -252,7 +252,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d3a/structshaka_1_1media_1_1H264Sps-members.html b/docs/d4/d3a/structshaka_1_1media_1_1H264Sps-members.html index 7c783da086..4f6ee5c9a9 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 45ee53bc3e..b39836452b 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 c7852886b8..fa0802b047 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 d8a728bb3d..a686060800 100644 --- a/docs/d4/d58/classshaka_1_1media_1_1Nalu-members.html +++ b/docs/d4/d58/classshaka_1_1media_1_1Nalu-members.html @@ -157,7 +157,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 5a58eafc58..b32c7d0bb7 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 c4bd8cc140..59753b45bc 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 7cf74da7eb..e1af135236 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 f40f9204f9..1a00653119 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 bd04e73a61..0cec4958c3 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 b4533e91df..27fa89af06 100644 --- a/docs/d4/d87/nalu__reader_8h_source.html +++ b/docs/d4/d87/nalu__reader_8h_source.html @@ -297,7 +297,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d8a/classshaka_1_1media_1_1HEVCDecoderConfigurationRecord.html b/docs/d4/d8a/classshaka_1_1media_1_1HEVCDecoderConfigurationRecord.html index b86351abc4..0b31a35edb 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 316e193171..a4bdf2802b 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/da7/segmenter__test__base_8cc_source.html b/docs/d4/da7/segmenter__test__base_8cc_source.html index 28381a81d6..314791fcb6 100644 --- a/docs/d4/da7/segmenter__test__base_8cc_source.html +++ b/docs/d4/da7/segmenter__test__base_8cc_source.html @@ -98,219 +98,220 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
9 #include "packager/media/base/muxer_util.h"
10 #include "packager/media/file/memory_file.h"
11 #include "packager/media/formats/webm/webm_constants.h"
-
12 
-
13 namespace shaka {
-
14 namespace media {
-
15 namespace {
-
16 
-
17 // The contents of a frame does not mater.
-
18 const uint8_t kTestMediaSampleData[] = {0xde, 0xad, 0xbe, 0xef, 0x00};
-
19 const uint8_t kTestMediaSampleSideData[] = {
-
20  // First 8 bytes of side_data is the BlockAddID element in big endian.
-
21  0x12, 0x34, 0x56, 0x78, 0x9a, 0x00, 0x00, 0x00,
-
22  0x73, 0x69, 0x64, 0x65, 0x00};
-
23 
-
24 const int kTrackId = 1;
-
25 const uint32_t kTimeScale = 1000;
-
26 const uint64_t kDuration = 8000;
-
27 const VideoCodec kVideoCodec = kCodecVP8;
-
28 const std::string kCodecString = "vp8";
-
29 const std::string kLanguage = "en";
-
30 const uint16_t kWidth = 100;
-
31 const uint16_t kHeight = 100;
-
32 const uint16_t kPixelWidth = 100;
-
33 const uint16_t kPixelHeight = 100;
-
34 const int16_t kTrickPlayRate = 1;
-
35 const uint8_t kNaluLengthSize = 0;
-
36 
-
37 } // namespace
-
38 
-
39 SegmentTestBase::SegmentTestBase() {}
-
40 
-
41 void SegmentTestBase::SetUp() {
-
42  output_file_name_ = std::string(kMemoryFilePrefix) + "output-file.webm";
-
43  segment_template_ =
-
44  std::string(kMemoryFilePrefix) + "output-template-$Number$.webm";
-
45  cur_time_timescale_ = 0;
-
46  single_segment_ = true;
-
47 }
-
48 
-
49 void SegmentTestBase::TearDown() {
- -
51 }
-
52 
-
53 scoped_refptr<MediaSample> SegmentTestBase::CreateSample(
-
54  KeyFrameFlag key_frame_flag,
-
55  uint64_t duration,
-
56  SideDataFlag side_data_flag) {
-
57  scoped_refptr<MediaSample> sample;
-
58  const bool is_key_frame = key_frame_flag == kKeyFrame;
-
59  if (side_data_flag == kGenerateSideData) {
-
60  sample = MediaSample::CopyFrom(
-
61  kTestMediaSampleData, sizeof(kTestMediaSampleData),
-
62  kTestMediaSampleSideData, sizeof(kTestMediaSampleSideData),
-
63  is_key_frame);
-
64  } else {
-
65  sample = MediaSample::CopyFrom(kTestMediaSampleData,
-
66  sizeof(kTestMediaSampleData), is_key_frame);
-
67  }
-
68  sample->set_dts(cur_time_timescale_);
-
69  sample->set_pts(cur_time_timescale_);
-
70  sample->set_duration(duration);
-
71 
-
72  cur_time_timescale_ += duration;
-
73  return sample;
-
74 }
-
75 
- -
77  MuxerOptions ret;
-
78  ret.single_segment = single_segment_;
-
79  ret.output_file_name = output_file_name_;
-
80  ret.segment_template = segment_template_;
-
81  ret.packager_version_string = "test";
-
82  ret.segment_duration = 30; // seconds
-
83  ret.fragment_duration = 30; // seconds
-
84  ret.segment_sap_aligned = false;
-
85  ret.fragment_sap_aligned = false;
-
86  // Use memory files for temp storage. Normally this would be a bad idea
-
87  // since it wouldn't support large files, but for tests the files are small.
-
88  ret.temp_dir = std::string(kMemoryFilePrefix) + "temp/";
-
89  return ret;
-
90 }
-
91 
- -
93  return new VideoStreamInfo(kTrackId, kTimeScale, kDuration, kVideoCodec,
-
94  kCodecString, kLanguage, kWidth, kHeight,
-
95  kPixelWidth, kPixelHeight, kTrickPlayRate,
-
96  kNaluLengthSize, NULL, 0, false);
-
97 }
-
98 
-
99 std::string SegmentTestBase::OutputFileName() const {
-
100  return output_file_name_;
-
101 }
-
102 
-
103 std::string SegmentTestBase::TemplateFileName(int number) const {
-
104  return GetSegmentName(segment_template_, 0, number, 0);
-
105 }
-
106 
-
107 SegmentTestBase::ClusterParser::ClusterParser() : in_cluster_(false) {}
+
12 #include "packager/version/version.h"
+
13 
+
14 namespace shaka {
+
15 namespace media {
+
16 namespace {
+
17 
+
18 // The contents of a frame does not mater.
+
19 const uint8_t kTestMediaSampleData[] = {0xde, 0xad, 0xbe, 0xef, 0x00};
+
20 const uint8_t kTestMediaSampleSideData[] = {
+
21  // First 8 bytes of side_data is the BlockAddID element in big endian.
+
22  0x12, 0x34, 0x56, 0x78, 0x9a, 0x00, 0x00, 0x00,
+
23  0x73, 0x69, 0x64, 0x65, 0x00};
+
24 
+
25 const int kTrackId = 1;
+
26 const uint32_t kTimeScale = 1000;
+
27 const uint64_t kDuration = 8000;
+
28 const VideoCodec kVideoCodec = kCodecVP8;
+
29 const std::string kCodecString = "vp8";
+
30 const std::string kLanguage = "en";
+
31 const uint16_t kWidth = 100;
+
32 const uint16_t kHeight = 100;
+
33 const uint16_t kPixelWidth = 100;
+
34 const uint16_t kPixelHeight = 100;
+
35 const int16_t kTrickPlayRate = 1;
+
36 const uint8_t kNaluLengthSize = 0;
+
37 
+
38 } // namespace
+
39 
+
40 SegmentTestBase::SegmentTestBase() {}
+
41 
+
42 void SegmentTestBase::SetUp() {
+
43  SetPackagerVersionForTesting("test");
+
44 
+
45  output_file_name_ = std::string(kMemoryFilePrefix) + "output-file.webm";
+
46  segment_template_ =
+
47  std::string(kMemoryFilePrefix) + "output-template-$Number$.webm";
+
48  cur_time_timescale_ = 0;
+
49  single_segment_ = true;
+
50 }
+
51 
+
52 void SegmentTestBase::TearDown() {
+ +
54 }
+
55 
+
56 scoped_refptr<MediaSample> SegmentTestBase::CreateSample(
+
57  KeyFrameFlag key_frame_flag,
+
58  uint64_t duration,
+
59  SideDataFlag side_data_flag) {
+
60  scoped_refptr<MediaSample> sample;
+
61  const bool is_key_frame = key_frame_flag == kKeyFrame;
+
62  if (side_data_flag == kGenerateSideData) {
+
63  sample = MediaSample::CopyFrom(
+
64  kTestMediaSampleData, sizeof(kTestMediaSampleData),
+
65  kTestMediaSampleSideData, sizeof(kTestMediaSampleSideData),
+
66  is_key_frame);
+
67  } else {
+
68  sample = MediaSample::CopyFrom(kTestMediaSampleData,
+
69  sizeof(kTestMediaSampleData), is_key_frame);
+
70  }
+
71  sample->set_dts(cur_time_timescale_);
+
72  sample->set_pts(cur_time_timescale_);
+
73  sample->set_duration(duration);
+
74 
+
75  cur_time_timescale_ += duration;
+
76  return sample;
+
77 }
+
78 
+ +
80  MuxerOptions ret;
+
81  ret.single_segment = single_segment_;
+
82  ret.output_file_name = output_file_name_;
+
83  ret.segment_template = segment_template_;
+
84  ret.segment_duration = 30; // seconds
+
85  ret.fragment_duration = 30; // seconds
+
86  ret.segment_sap_aligned = false;
+
87  ret.fragment_sap_aligned = false;
+
88  // Use memory files for temp storage. Normally this would be a bad idea
+
89  // since it wouldn't support large files, but for tests the files are small.
+
90  ret.temp_dir = std::string(kMemoryFilePrefix) + "temp/";
+
91  return ret;
+
92 }
+
93 
+ +
95  return new VideoStreamInfo(kTrackId, kTimeScale, kDuration, kVideoCodec,
+
96  kCodecString, kLanguage, kWidth, kHeight,
+
97  kPixelWidth, kPixelHeight, kTrickPlayRate,
+
98  kNaluLengthSize, NULL, 0, false);
+
99 }
+
100 
+
101 std::string SegmentTestBase::OutputFileName() const {
+
102  return output_file_name_;
+
103 }
+
104 
+
105 std::string SegmentTestBase::TemplateFileName(int number) const {
+
106  return GetSegmentName(segment_template_, 0, number, 0);
+
107 }
108 
-
109 SegmentTestBase::ClusterParser::~ClusterParser() {}
+
109 SegmentTestBase::ClusterParser::ClusterParser() : in_cluster_(false) {}
110 
-
111 void SegmentTestBase::ClusterParser::PopulateFromCluster(
-
112  const std::string& file_name) {
-
113  cluster_sizes_.clear();
-
114  std::string file_contents;
-
115  ASSERT_TRUE(File::ReadFileToString(file_name.c_str(), &file_contents));
-
116 
-
117  const uint8_t* data = reinterpret_cast<const uint8_t*>(file_contents.c_str());
-
118  const size_t size = file_contents.size();
-
119  WebMListParser cluster_parser(kWebMIdCluster, this);
-
120  size_t position = 0;
-
121  while (position < size) {
-
122  int read = cluster_parser.Parse(data + position, size - position);
-
123  ASSERT_LT(0, read);
-
124 
-
125  cluster_parser.Reset();
-
126  position += read;
-
127  }
-
128 }
-
129 
-
130 void SegmentTestBase::ClusterParser::PopulateFromSegment(
-
131  const std::string& file_name) {
-
132  cluster_sizes_.clear();
-
133  std::string file_contents;
-
134  ASSERT_TRUE(File::ReadFileToString(file_name.c_str(), &file_contents));
-
135 
-
136  const uint8_t* data = reinterpret_cast<const uint8_t*>(file_contents.c_str());
-
137  const size_t size = file_contents.size();
-
138  WebMListParser header_parser(kWebMIdEBMLHeader, this);
-
139  int offset = header_parser.Parse(data, size);
-
140  ASSERT_LT(0, offset);
-
141 
-
142  WebMListParser segment_parser(kWebMIdSegment, this);
-
143  ASSERT_LT(0, segment_parser.Parse(data + offset, size - offset));
-
144 }
-
145 
-
146 int SegmentTestBase::ClusterParser::GetFrameCountForCluster(size_t i) const {
-
147  DCHECK(i < cluster_sizes_.size());
-
148  return cluster_sizes_[i];
-
149 }
-
150 
-
151 int SegmentTestBase::ClusterParser::cluster_count() const {
-
152  return cluster_sizes_.size();
-
153 }
-
154 
-
155 WebMParserClient* SegmentTestBase::ClusterParser::OnListStart(int id) {
-
156  if (id == kWebMIdCluster) {
-
157  if (in_cluster_)
-
158  return NULL;
-
159 
-
160  cluster_sizes_.push_back(0);
-
161  in_cluster_ = true;
-
162  }
-
163 
-
164  return this;
-
165 }
-
166 
-
167 bool SegmentTestBase::ClusterParser::OnListEnd(int id) {
-
168  if (id == kWebMIdCluster) {
-
169  if (!in_cluster_)
-
170  return false;
-
171  in_cluster_ = false;
-
172  }
-
173 
-
174  return true;
-
175 }
-
176 
-
177 bool SegmentTestBase::ClusterParser::OnUInt(int id, int64_t val) {
-
178  return true;
-
179 }
-
180 
-
181 bool SegmentTestBase::ClusterParser::OnFloat(int id, double val) {
-
182  return true;
-
183 }
-
184 
-
185 bool SegmentTestBase::ClusterParser::OnBinary(int id,
-
186  const uint8_t* data,
-
187  int size) {
-
188  if (in_cluster_ && (id == kWebMIdSimpleBlock || id == kWebMIdBlock)) {
-
189  cluster_sizes_.back()++;
-
190  }
-
191 
-
192  return true;
-
193 }
-
194 
-
195 bool SegmentTestBase::ClusterParser::OnString(int id, const std::string& str) {
-
196  return true;
-
197 }
-
198 
-
199 } // namespace media
-
200 } // namespace shaka
-
201 
+
111 SegmentTestBase::ClusterParser::~ClusterParser() {}
+
112 
+
113 void SegmentTestBase::ClusterParser::PopulateFromCluster(
+
114  const std::string& file_name) {
+
115  cluster_sizes_.clear();
+
116  std::string file_contents;
+
117  ASSERT_TRUE(File::ReadFileToString(file_name.c_str(), &file_contents));
+
118 
+
119  const uint8_t* data = reinterpret_cast<const uint8_t*>(file_contents.c_str());
+
120  const size_t size = file_contents.size();
+
121  WebMListParser cluster_parser(kWebMIdCluster, this);
+
122  size_t position = 0;
+
123  while (position < size) {
+
124  int read = cluster_parser.Parse(data + position, size - position);
+
125  ASSERT_LT(0, read);
+
126 
+
127  cluster_parser.Reset();
+
128  position += read;
+
129  }
+
130 }
+
131 
+
132 void SegmentTestBase::ClusterParser::PopulateFromSegment(
+
133  const std::string& file_name) {
+
134  cluster_sizes_.clear();
+
135  std::string file_contents;
+
136  ASSERT_TRUE(File::ReadFileToString(file_name.c_str(), &file_contents));
+
137 
+
138  const uint8_t* data = reinterpret_cast<const uint8_t*>(file_contents.c_str());
+
139  const size_t size = file_contents.size();
+
140  WebMListParser header_parser(kWebMIdEBMLHeader, this);
+
141  int offset = header_parser.Parse(data, size);
+
142  ASSERT_LT(0, offset);
+
143 
+
144  WebMListParser segment_parser(kWebMIdSegment, this);
+
145  ASSERT_LT(0, segment_parser.Parse(data + offset, size - offset));
+
146 }
+
147 
+
148 int SegmentTestBase::ClusterParser::GetFrameCountForCluster(size_t i) const {
+
149  DCHECK(i < cluster_sizes_.size());
+
150  return cluster_sizes_[i];
+
151 }
+
152 
+
153 int SegmentTestBase::ClusterParser::cluster_count() const {
+
154  return cluster_sizes_.size();
+
155 }
+
156 
+
157 WebMParserClient* SegmentTestBase::ClusterParser::OnListStart(int id) {
+
158  if (id == kWebMIdCluster) {
+
159  if (in_cluster_)
+
160  return NULL;
+
161 
+
162  cluster_sizes_.push_back(0);
+
163  in_cluster_ = true;
+
164  }
+
165 
+
166  return this;
+
167 }
+
168 
+
169 bool SegmentTestBase::ClusterParser::OnListEnd(int id) {
+
170  if (id == kWebMIdCluster) {
+
171  if (!in_cluster_)
+
172  return false;
+
173  in_cluster_ = false;
+
174  }
+
175 
+
176  return true;
+
177 }
+
178 
+
179 bool SegmentTestBase::ClusterParser::OnUInt(int id, int64_t val) {
+
180  return true;
+
181 }
+
182 
+
183 bool SegmentTestBase::ClusterParser::OnFloat(int id, double val) {
+
184  return true;
+
185 }
+
186 
+
187 bool SegmentTestBase::ClusterParser::OnBinary(int id,
+
188  const uint8_t* data,
+
189  int size) {
+
190  if (in_cluster_ && (id == kWebMIdSimpleBlock || id == kWebMIdBlock)) {
+
191  cluster_sizes_.back()++;
+
192  }
+
193 
+
194  return true;
+
195 }
+
196 
+
197 bool SegmentTestBase::ClusterParser::OnString(int id, const std::string& str) {
+
198  return true;
+
199 }
+
200 
+
201 } // namespace media
+
202 } // namespace shaka
+
203 
-
std::string packager_version_string
Specify the version string to be embedded in the output files.
Definition: muxer_options.h:71
-
VideoStreamInfo * CreateVideoStreamInfo() const
Creates a video stream info object for testing.
+
VideoStreamInfo * CreateVideoStreamInfo() const
Creates a video stream info object for testing.
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
-
std::string OutputFileName() const
Gets the file name of the current output file.
-
scoped_refptr< MediaSample > CreateSample(KeyFrameFlag key_frame_flag, uint64_t duration, SideDataFlag side_data_flag)
Creates a new media sample.
+
std::string OutputFileName() const
Gets the file name of the current output file.
+
scoped_refptr< MediaSample > CreateSample(KeyFrameFlag key_frame_flag, uint64_t duration, SideDataFlag side_data_flag)
Creates a new media sample.
static bool ReadFileToString(const char *file_name, std::string *contents)
Definition: file.cc:184
std::string temp_dir
Specify temporary directory for intermediate files.
Definition: muxer_options.h:64
-
MuxerOptions CreateMuxerOptions() const
Creates a Muxer options object for testing.
+
MuxerOptions CreateMuxerOptions() const
Creates a Muxer options object for testing.
static scoped_refptr< MediaSample > CopyFrom(const uint8_t *data, size_t size, bool is_key_frame)
Definition: media_sample.cc:45
Holds video stream information.
-
std::string TemplateFileName(int number) const
Gets the file name of the given template file.
+
std::string TemplateFileName(int number) const
Gets the file name of the given template file.
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 b0b1d5bea7..e8078d1103 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 b4ef78a244..4f7d6a3763 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 89f4b663e9..a3fe0acb2d 100644 --- a/docs/d4/db2/cluster__builder_8h_source.html +++ b/docs/d4/db2/cluster__builder_8h_source.html @@ -176,7 +176,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/db4/classshaka_1_1MpdNotifierFactory.html b/docs/d4/db4/classshaka_1_1MpdNotifierFactory.html index 299f01c541..f6838a2954 100644 --- a/docs/d4/db4/classshaka_1_1MpdNotifierFactory.html +++ b/docs/d4/db4/classshaka_1_1MpdNotifierFactory.html @@ -112,7 +112,7 @@ virtual scoped_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 c7d53ff0ea..f0738f5e8f 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 bc133634f5..cc8c1ad9b9 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 4c3699f3b9..2ee49915cf 100644 --- a/docs/d4/dd3/bit__reader_8h_source.html +++ b/docs/d4/dd3/bit__reader_8h_source.html @@ -178,7 +178,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/dd4/structshaka_1_1media_1_1mp4_1_1FullBox-members.html b/docs/d4/dd4/structshaka_1_1media_1_1mp4_1_1FullBox-members.html index d405f5ee0a..50b48aadd5 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 1c52c65a76..02b7bffc7c 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 3d2def9c80..731be091f1 100644 --- a/docs/d4/dde/webvtt__util_8h_source.html +++ b/docs/d4/dde/webvtt__util_8h_source.html @@ -122,7 +122,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/de3/structshaka_1_1media_1_1mp4_1_1DataReference.html b/docs/d4/de3/structshaka_1_1media_1_1mp4_1_1DataReference.html index a58667ec80..877ad46e64 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 ca2b83568d..bc947a0ec8 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 deb7017896..36f956d8c3 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 8f961c6434..593e6114b0 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 5b1f20e7a7..9249d63de1 100644 --- a/docs/d4/df5/request__signer_8cc_source.html +++ b/docs/d4/df5/request__signer_8cc_source.html @@ -178,7 +178,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/df9/structshaka_1_1media_1_1mp4_1_1SegmentIndex.html b/docs/d4/df9/structshaka_1_1media_1_1mp4_1_1SegmentIndex.html index e7dd8bb367..c1ade21409 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 913ef5fc26..5f7961e808 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 5dbcc79cbc..83df2526ba 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 ff438d72b9..d40b04a37e 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 9dc3738032..56037cc793 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 699a98814b..33b7c94e1b 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 fa91fb15b5..e8ae471a49 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 c8e761e497..d87fc9f058 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 0dbd25d204..24857213db 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 e27e362095..c0895e418b 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 2f576e8730..0b2cd2306c 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 427737eb33..467c4cafc6 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 1e8d42ea9f..bb19aff0d0 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 d5f6c04239..01ab5a18ee 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 40153612c0..830fefe23c 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 cb7aac67b6..b733756cf4 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 8397ad5f2e..91fe79b41a 100644 --- a/docs/d5/d40/webm_2single__segment__segmenter_8h_source.html +++ b/docs/d5/d40/webm_2single__segment__segmenter_8h_source.html @@ -156,7 +156,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d4b/classshaka_1_1media_1_1mp2t_1_1TsSectionPsi-members.html b/docs/d5/d4b/classshaka_1_1media_1_1mp2t_1_1TsSectionPsi-members.html index 43c7dca305..ff8b0b7f56 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 8e823a6c65..5097c4a776 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 7081dc2e8d..0a05aa7381 100644 --- a/docs/d5/d52/ts__section__pes_8h_source.html +++ b/docs/d5/d52/ts__section__pes_8h_source.html @@ -161,7 +161,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d53/structshaka_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize-members.html b/docs/d5/d53/structshaka_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize-members.html index 1bc87b76d0..03d6cb0857 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 6e15d8815e..c708b9aebd 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 4c9279a0f5..923f945ff3 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 061571e08f..0219d245b3 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 954437bb18..aca05d3fe2 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 d495562a07..a24e40b304 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 26b6a175bc..b1d34b78eb 100644 --- a/docs/d5/d66/classshaka_1_1media_1_1NalUnitToByteStreamConverter.html +++ b/docs/d5/d66/classshaka_1_1media_1_1NalUnitToByteStreamConverter.html @@ -229,7 +229,7 @@ class NalUnitToByteStreamC diff --git a/docs/d5/d6f/vlog__flags_8cc_source.html b/docs/d5/d6f/vlog__flags_8cc_source.html index 9b8d35f590..19ced5c789 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 17eb7f2050..cc0f54ec97 100644 --- a/docs/d5/d72/avc__decoder__configuration__record_8cc_source.html +++ b/docs/d5/d72/avc__decoder__configuration__record_8cc_source.html @@ -203,7 +203,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 f399bff1f4..fb4d254c14 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 9b1eb593b6..0016d01ef7 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 b702103815..1cbe482ac0 100644 --- a/docs/d5/d89/widevine__key__source_8cc_source.html +++ b/docs/d5/d89/widevine__key__source_8cc_source.html @@ -720,7 +720,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 e53936f1e7..baeb3dd0cd 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 0312f32dd4..6b2aab5e08 100644 --- a/docs/d5/d8f/webm__cluster__parser_8cc_source.html +++ b/docs/d5/d8f/webm__cluster__parser_8cc_source.html @@ -744,7 +744,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 720df67e8e..b420d31b1d 100644 --- a/docs/d5/d91/es__parser__adts_8cc_source.html +++ b/docs/d5/d91/es__parser__adts_8cc_source.html @@ -378,7 +378,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 803606c9e2..2945d3f18e 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 7acc684018..673e5b1c50 100644 --- a/docs/d5/d98/encryptor_8cc_source.html +++ b/docs/d5/d98/encryptor_8cc_source.html @@ -234,7 +234,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d9b/vp__codec__configuration__record_8h_source.html b/docs/d5/d9b/vp__codec__configuration__record_8h_source.html index 199b4d8814..15bf87540c 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 51a4a8fd43..adcb1abb0e 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 c1fcf5a195..32c51c126b 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 4c92bd4c87..b0755315b8 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 87a5e4fc78..b60d15cade 100644 --- a/docs/d5/db1/classshaka_1_1media_1_1StreamInfo.html +++ b/docs/d5/db1/classshaka_1_1media_1_1StreamInfo.html @@ -229,7 +229,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 a6e8a0a62e..4a4f81a694 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 652e304551..06b1cd615b 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 f37724882b..2a455fad1f 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 41da6c1ca4..336cfcf4de 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 7979f3f818..e53a5498a0 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 109f7ef160..ad7006b768 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 904573b512..50942aad50 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 6952ab8281..921fa6a133 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 4f3ce301ad..c90337128e 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 @@ -306,7 +306,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 1c4d415af8..4e6a21e79a 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 94afd713c4..4fd3f70e99 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 3bd99580e0..495703431b 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 186647d22d..cc64eec061 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 23143c6240..744abd38f6 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 e3467b89aa..0a2b2ad585 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 fe7d623f38..af61537b65 100644 --- a/docs/d5/dfc/file_8cc_source.html +++ b/docs/d5/dfc/file_8cc_source.html @@ -375,7 +375,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 575e5bfeca..86179b811e 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 ad124473b6..ae2029659e 100644 --- a/docs/d6/d09/aes__pattern__cryptor_8h_source.html +++ b/docs/d6/d09/aes__pattern__cryptor_8h_source.html @@ -148,7 +148,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d16/text__stream__info_8cc_source.html b/docs/d6/d16/text__stream__info_8cc_source.html index ba701c69cb..9ae2426fb3 100644 --- a/docs/d6/d16/text__stream__info_8cc_source.html +++ b/docs/d6/d16/text__stream__info_8cc_source.html @@ -132,7 +132,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d17/es__parser__h264_8cc_source.html b/docs/d6/d17/es__parser__h264_8cc_source.html index 8dfb7702e5..30b9601211 100644 --- a/docs/d6/d17/es__parser__h264_8cc_source.html +++ b/docs/d6/d17/es__parser__h264_8cc_source.html @@ -257,7 +257,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 203ad7616b..e8d4bfaa1c 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 e8f30519c3..bfaf9df1f2 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 29451e6902..383f7f5bd8 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 c23ce36bca..18c85415a3 100644 --- a/docs/d6/d2e/mpd__notifier__util_8cc_source.html +++ b/docs/d6/d2e/mpd__notifier__util_8cc_source.html @@ -164,13 +164,13 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
75 } // namespace shaka
This class generates DASH MPDs (Media Presentation Descriptions).
Definition: mpd_builder.h:58
std::string Uint8VectorToBase64(const std::vector< uint8_t > &input)
Converts uint8 vector into base64 encoded string.
-
virtual bool ToString(std::string *output)
Definition: mpd_builder.cc:428
+
virtual bool ToString(std::string *output)
Definition: mpd_builder.cc:429
ContentType GetContentType(const MediaInfo &media_info)
bool WriteMpdToFile(const std::string &output_path, MpdBuilder *mpd_builder)
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 12cac2d3a0..cbc797f6ef 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 ca7c096e9c..e39a57101a 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 aa58c4d987..f608fcf2f9 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 40c56bac1b..659ac59fef 100644 --- a/docs/d6/d41/encrypting__fragmenter_8cc_source.html +++ b/docs/d6/d41/encrypting__fragmenter_8cc_source.html @@ -498,7 +498,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 0e070c582b..27d7645dbd 100644 --- a/docs/d6/d4e/webm_2multi__segment__segmenter_8cc_source.html +++ b/docs/d6/d4e/webm_2multi__segment__segmenter_8cc_source.html @@ -183,12 +183,12 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
94 } // 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 3ebc0114f5..ca0d8a16f4 100644 --- a/docs/d6/d55/aes__cryptor_8cc_source.html +++ b/docs/d6/d55/aes__cryptor_8cc_source.html @@ -231,7 +231,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d57/classshaka_1_1media_1_1AVCDecoderConfigurationRecord.html b/docs/d6/d57/classshaka_1_1media_1_1AVCDecoderConfigurationRecord.html index 8d9a3bd655..41f108c317 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 ed93c7092e..0f4ab90dd6 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 3423c84d91..dc0d44785c 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 601522615c..c5a79a0353 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 9ca70d78c7..b946b72316 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 f65c816ddf..b8cfbbf2f0 100644 --- a/docs/d6/d71/scoped__xml__ptr_8h_source.html +++ b/docs/d6/d71/scoped__xml__ptr_8h_source.html @@ -131,7 +131,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d77/dash__iop__mpd__notifier_8h_source.html b/docs/d6/d77/dash__iop__mpd__notifier_8h_source.html index 24222ef148..894f5faf7a 100644 --- a/docs/d6/d77/dash__iop__mpd__notifier_8h_source.html +++ b/docs/d6/d77/dash__iop__mpd__notifier_8h_source.html @@ -204,13 +204,13 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
DashProfile dash_profile() const
Definition: mpd_notifier.h:108
bool AddContentProtectionElement(uint32_t id, const ContentProtectionElement &content_protection_element) override
-
Defines Mpd Options.
Definition: mpd_options.h:17
+
Defines Mpd Options.
Definition: mpd_options.h:15
bool NotifyNewContainer(const MediaInfo &media_info, uint32_t *id) override
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 c1c2fe22ab..eb0a4a8290 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 aad6764cae..d15e45621d 100644 --- a/docs/d6/d7b/webm__tracks__parser_8h_source.html +++ b/docs/d6/d7b/webm__tracks__parser_8h_source.html @@ -202,7 +202,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d7c/structshaka_1_1media_1_1mp4_1_1AC3Specific-members.html b/docs/d6/d7c/structshaka_1_1media_1_1mp4_1_1AC3Specific-members.html index 2daa9ed899..745110ed61 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 bf6b67f46b..2dd2a8050a 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 f59db24bba..4e833ed3cb 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 a51eb93f8b..034b187725 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 41fd50c522..4b5db8cd8c 100644 --- a/docs/d6/d9b/h264__parser_8h_source.html +++ b/docs/d6/d9b/h264__parser_8h_source.html @@ -439,7 +439,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d9f/hls__flags_8cc_source.html b/docs/d6/d9f/hls__flags_8cc_source.html index 613fa4b670..8560bc1e7b 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 41bd34f253..085f5e040e 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 6d7f8acafc..0bdf78bcb5 100644 --- a/docs/d6/da3/mpd__builder_8h_source.html +++ b/docs/d6/da3/mpd__builder_8h_source.html @@ -491,50 +491,50 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
578 } // namespace shaka
579 
580 #endif // MPD_BASE_MPD_BUILDER_H_
-
void OnSetFrameRateForRepresentation(uint32_t representation_id, uint32_t frame_duration, uint32_t timescale)
Definition: mpd_builder.cc:863
+
void OnSetFrameRateForRepresentation(uint32_t representation_id, uint32_t frame_duration, uint32_t timescale)
Definition: mpd_builder.cc:869
RepresentationType in MPD.
Definition: xml_node.h:128
-
virtual void AddNewSegment(uint64_t start_time, uint64_t duration, uint64_t size)
+
virtual void AddNewSegment(uint64_t start_time, uint64_t duration, uint64_t size)
virtual void OnSetFrameRateForRepresentation(uint32_t frame_duration, uint32_t timescale)=0
- -
bool WriteMpdToFile(media::File *output_file)
Definition: mpd_builder.cc:423
-
AdaptationSet(uint32_t adaptation_set_id, const std::string &lang, const MpdOptions &mpd_options, MpdBuilder::MpdType mpd_type, base::AtomicSequenceNumber *representation_counter)
Definition: mpd_builder.cc:669
+ +
bool WriteMpdToFile(media::File *output_file)
Definition: mpd_builder.cc:424
+
AdaptationSet(uint32_t adaptation_set_id, const std::string &lang, const MpdOptions &mpd_options, MpdBuilder::MpdType mpd_type, base::AtomicSequenceNumber *representation_counter)
Definition: mpd_builder.cc:675
-
virtual void SetSampleDuration(uint32_t sample_duration)
-
virtual Representation * AddRepresentation(const MediaInfo &media_info)
Definition: mpd_builder.cc:688
+
virtual void SetSampleDuration(uint32_t sample_duration)
+
virtual Representation * AddRepresentation(const MediaInfo &media_info)
Definition: mpd_builder.cc:694
This class generates DASH MPDs (Media Presentation Descriptions).
Definition: mpd_builder.h:58
uint32_t id() const
Definition: mpd_builder.h:503
Define an abstract file interface.
Definition: file.h:24
-
virtual void AddContentProtectionElement(const ContentProtectionElement &element)
Definition: mpd_builder.cc:732
-
Representation(const MediaInfo &media_info, const MpdOptions &mpd_options, uint32_t representation_id, scoped_ptr< RepresentationStateChangeListener > state_change_listener)
+
virtual void AddContentProtectionElement(const ContentProtectionElement &element)
Definition: mpd_builder.cc:738
+
Representation(const MediaInfo &media_info, const MpdOptions &mpd_options, uint32_t representation_id, scoped_ptr< RepresentationStateChangeListener > state_change_listener)
void InjectClockForTesting(scoped_ptr< base::Clock > clock)
This is for testing.
Definition: mpd_builder.h:105
-
virtual void AddRole(Role role)
Definition: mpd_builder.cc:744
-
void AddBaseUrl(const std::string &base_url)
Definition: mpd_builder.cc:409
-
virtual void UpdateContentProtectionPssh(const std::string &drm_uuid, const std::string &pssh)
Definition: mpd_builder.cc:738
+
virtual void AddRole(Role role)
Definition: mpd_builder.cc:750
+
void AddBaseUrl(const std::string &base_url)
Definition: mpd_builder.cc:410
+
virtual void UpdateContentProtectionPssh(const std::string &drm_uuid, const std::string &pssh)
Definition: mpd_builder.cc:744
MpdType type() const
Definition: mpd_builder.h:93
-
virtual void SetGroup(int group_number)
Definition: mpd_builder.cc:837
-
xml::scoped_xml_ptr< xmlNode > GetXml()
+
virtual void SetGroup(int group_number)
Definition: mpd_builder.cc:843
+
xml::scoped_xml_ptr< xmlNode > GetXml()
-
virtual bool ToString(std::string *output)
Definition: mpd_builder.cc:428
-
virtual void ForceSetSegmentAlignment(bool segment_alignment)
Definition: mpd_builder.cc:831
-
static void MakePathsRelativeToMpd(const std::string &mpd_path, MediaInfo *media_info)
Definition: mpd_builder.cc:641
-
MpdBuilder(MpdType type, const MpdOptions &mpd_options)
Definition: mpd_builder.cc:401
-
xml::scoped_xml_ptr< xmlNode > GetXml()
Definition: mpd_builder.cc:754
-
virtual void AddContentProtectionElement(const ContentProtectionElement &element)
+
virtual bool ToString(std::string *output)
Definition: mpd_builder.cc:429
+
virtual void ForceSetSegmentAlignment(bool segment_alignment)
Definition: mpd_builder.cc:837
+
static void MakePathsRelativeToMpd(const std::string &mpd_path, MediaInfo *media_info)
Definition: mpd_builder.cc:647
+
MpdBuilder(MpdType type, const MpdOptions &mpd_options)
Definition: mpd_builder.cc:402
+
xml::scoped_xml_ptr< xmlNode > GetXml()
Definition: mpd_builder.cc:760
+
virtual void AddContentProtectionElement(const ContentProtectionElement &element)
-
virtual AdaptationSet * AddAdaptationSet(const std::string &lang)
Definition: mpd_builder.cc:413
-
virtual int Group() const
Definition: mpd_builder.cc:841
-
Defines Mpd Options.
Definition: mpd_options.h:17
-
void OnNewSegmentForRepresentation(uint32_t representation_id, uint64_t start_time, uint64_t duration)
Definition: mpd_builder.cc:852
-
virtual void UpdateContentProtectionPssh(const std::string &drm_uuid, const std::string &pssh)
+
virtual AdaptationSet * AddAdaptationSet(const std::string &lang)
Definition: mpd_builder.cc:414
+
virtual int Group() const
Definition: mpd_builder.cc:847
+
Defines Mpd Options.
Definition: mpd_options.h:15
+
void OnNewSegmentForRepresentation(uint32_t representation_id, uint64_t start_time, uint64_t duration)
Definition: mpd_builder.cc:858
+
virtual void UpdateContentProtectionPssh(const std::string &drm_uuid, const std::string &pssh)
virtual void OnNewSegmentForRepresentation(uint64_t start_time, uint64_t duration)=0
-
void SuppressOnce(SuppressFlag flag)
+
void SuppressOnce(SuppressFlag flag)
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 deaa9960d7..992d66a8cb 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 d14ac83642..02b0bc65c6 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 efba4c2246..cf90cd605e 100644 --- a/docs/d6/da9/classshaka_1_1media_1_1BitReader.html +++ b/docs/d6/da9/classshaka_1_1media_1_1BitReader.html @@ -362,7 +362,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 d8183a6583..a236007879 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 5065ed204e..84ec3343f9 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 51899ab54d..58e855aa42 100644 --- a/docs/d6/db1/classshaka_1_1media_1_1VideoStreamInfo.html +++ b/docs/d6/db1/classshaka_1_1media_1_1VideoStreamInfo.html @@ -429,7 +429,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 221739cea0..35675fc8a2 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/dc7/classshaka_1_1media_1_1mp2t_1_1EsParserH26x-members.html b/docs/d6/dc7/classshaka_1_1media_1_1mp2t_1_1EsParserH26x-members.html index dc9c87e29b..c646b72e04 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 369aee4e8d..1c0ae0ee02 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 482e69875b..46134debca 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 48d9768292..76dd7be982 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 871c420f06..24c75756d9 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 7968156ba1..5d55e474b3 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 d687f790ab..c60ac1f779 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 9cca5c75f1..c5652ea322 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 807157cb5a..4d56797d66 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 67afe111bc..72885f4752 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 09388e9c75..ee82753418 100644 --- a/docs/d6/de8/local__file_8cc_source.html +++ b/docs/d6/de8/local__file_8cc_source.html @@ -191,7 +191,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/de8/network__util_8h_source.html b/docs/d6/de8/network__util_8h_source.html index 1e7f63e541..663eceb07a 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 3447f98744..d729712eb2 100644 --- a/docs/d6/de9/ts__segmenter_8cc_source.html +++ b/docs/d6/de9/ts__segmenter_8cc_source.html @@ -313,7 +313,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/ded/ts__packet_8h_source.html b/docs/d6/ded/ts__packet_8h_source.html index 175ba5518e..db1783fbeb 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 806b6e1dec..ab36330699 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 19e8dae4c0..afce17c595 100644 --- a/docs/d6/dff/classshaka_1_1media_1_1Nalu.html +++ b/docs/d6/dff/classshaka_1_1media_1_1Nalu.html @@ -240,7 +240,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 d5eeea7d04..57c71faa09 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 6a47a60599..a4d5269fc0 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 45d8e13d61..eb862f25f6 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 5b07e6114e..f7ea7b12bd 100644 --- a/docs/d7/d12/media__parser_8h_source.html +++ b/docs/d7/d12/media__parser_8h_source.html @@ -150,7 +150,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d15/mpd__notifier_8h_source.html b/docs/d7/d15/mpd__notifier_8h_source.html index 6429b3bd8a..fe87dcb7e3 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 5ea6c80c8f..3d410ead33 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 87a556adcc..7ebdf47c5d 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 1eb74463c8..f65801af04 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 6362fc20aa..2099e8087a 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 08f368aa6c..36cf2b05ae 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 5b5fe0407e..189dd77705 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 e2331fb2e6..9c3adfb1fb 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 3ef78d442d..a55ad403fa 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 8b7d670945..6f46cab881 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 25edcc99a7..0a99e0cd2c 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 e97505bf49..65f87a0bb9 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 5a35bf9046..a84bd91189 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 e6da04e483..ae081ba6e4 100644 --- a/docs/d7/d6d/classshaka_1_1media_1_1MediaSample.html +++ b/docs/d7/d6d/classshaka_1_1media_1_1MediaSample.html @@ -411,7 +411,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 fb16ffd7be..27fbb3faea 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 1cdea268d7..eb195d5fd9 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 6d12f80d4a..bcf1c4f357 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 d04ae9a5f3..370e189328 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 ec7d07a2e8..373924f021 100644 --- a/docs/d7/d87/video__stream__info_8h_source.html +++ b/docs/d7/d87/video__stream__info_8h_source.html @@ -188,7 +188,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d9c/structshaka_1_1media_1_1H265SliceHeader_1_1LongTermPicsInfo.html b/docs/d7/d9c/structshaka_1_1media_1_1H265SliceHeader_1_1LongTermPicsInfo.html index 7e846d472e..2d76bd7fe4 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 754618de6a..8a0358cf7f 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 c860a27a2e..df83de2f40 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 8818d3f57c..6fa0c0a2d8 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 9e88c91a72..1a1517531d 100644 --- a/docs/d7/db0/mpd__writer_8h_source.html +++ b/docs/d7/db0/mpd__writer_8h_source.html @@ -178,11 +178,11 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
92 #endif // MPD_UTIL_MPD_WRITER_H_
-
Defines Mpd Options.
Definition: mpd_options.h:17
+
Defines Mpd Options.
Definition: mpd_options.h:15
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 54cbe64b8f..4bc5df40fa 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 f097bd01ff..e97eb1ad67 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 2cb882e55d..b963948845 100644 --- a/docs/d7/dc6/byte__queue_8h_source.html +++ b/docs/d7/dc6/byte__queue_8h_source.html @@ -144,7 +144,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/dd0/mpd__notifier__util_8h_source.html b/docs/d7/dd0/mpd__notifier__util_8h_source.html index 76cb7549d8..44d9ef7da3 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 d47d4bab36..a83d949e3d 100644 --- a/docs/d7/dd4/request__signer_8h_source.html +++ b/docs/d7/dd4/request__signer_8h_source.html @@ -178,7 +178,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/dd5/classshaka_1_1media_1_1mp4_1_1MP4MediaParser.html b/docs/d7/dd5/classshaka_1_1media_1_1mp4_1_1MP4MediaParser.html index 2850ce67b0..132d644135 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 b40499d296..e090988295 100644 --- a/docs/d7/dd6/key__source_8cc_source.html +++ b/docs/d7/dd6/key__source_8cc_source.html @@ -142,7 +142,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/dda/classshaka_1_1media_1_1ByteQueue.html b/docs/d7/dda/classshaka_1_1media_1_1ByteQueue.html index 8f88ee6262..2218b777f0 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 b8209e2d54..1aa84ac76f 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 cf080804e9..1f7d84536d 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 4b323b476a..cd6e1d932d 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 424fceb832..9adca703ec 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 d884b33e9b..1a2fd45483 100644 --- a/docs/d7/dee/mpd__generator_8cc_source.html +++ b/docs/d7/dee/mpd__generator_8cc_source.html @@ -180,8 +180,8 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
91 
92  ExitStatus status = CheckRequiredFlags();
93  if (status != kSuccess) {
-
94  std::string version_string =
-
95  base::StringPrintf("mpd_generator version %s", kPackagerVersion);
+
94  const std::string version_string = base::StringPrintf(
+
95  "mpd_generator version %s", GetPackagerVersion().c_str());
96  google::ShowUsageWithFlags(version_string.c_str());
97  return status;
98  }
@@ -198,7 +198,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 80657b6b5b..16b45bc44c 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 5b4a1877ea..2881fcec84 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 9cbeeb9d86..40cd78de78 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 2a4f88dd0e..5008036588 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 7b9eb3f3e5..0c791f54e0 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 7549b7ee2b..a7fbc760aa 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 d645a0e39a..2d2621230b 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 4835078c5b..94a01c770d 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 c6649a284a..be7427c8b8 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 d840b8f359..872b2d585a 100644 --- a/docs/d8/d13/classshaka_1_1media_1_1BitReader-members.html +++ b/docs/d8/d13/classshaka_1_1media_1_1BitReader-members.html @@ -104,7 +104,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 eba9537fa0..437039f532 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 d5e782f3f5..83b88139db 100644 --- a/docs/d8/d16/structshaka_1_1media_1_1MuxerOptions-members.html +++ b/docs/d8/d16/structshaka_1_1media_1_1MuxerOptions-members.html @@ -99,17 +99,16 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); MuxerOptions() (defined in shaka::media::MuxerOptions)shaka::media::MuxerOptions num_subsegments_per_sidxshaka::media::MuxerOptions output_file_nameshaka::media::MuxerOptions - packager_version_stringshaka::media::MuxerOptions - segment_durationshaka::media::MuxerOptions - segment_sap_alignedshaka::media::MuxerOptions - segment_templateshaka::media::MuxerOptions - single_segmentshaka::media::MuxerOptions - temp_dirshaka::media::MuxerOptions - ~MuxerOptions() (defined in shaka::media::MuxerOptions)shaka::media::MuxerOptions + segment_durationshaka::media::MuxerOptions + segment_sap_alignedshaka::media::MuxerOptions + segment_templateshaka::media::MuxerOptions + single_segmentshaka::media::MuxerOptions + temp_dirshaka::media::MuxerOptions + ~MuxerOptions() (defined in shaka::media::MuxerOptions)shaka::media::MuxerOptions diff --git a/docs/d8/d19/bandwidth__estimator_8h_source.html b/docs/d8/d19/bandwidth__estimator_8h_source.html index 8e81d7b997..8320ddf790 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 ca5539406e..40189fc753 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 7e50202574..414dfd1655 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 f5b28fa877..36656b960e 100644 --- a/docs/d8/d28/es__parser__h265_8h_source.html +++ b/docs/d8/d28/es__parser__h265_8h_source.html @@ -155,7 +155,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d33/webm__content__encodings__client_8h_source.html b/docs/d8/d33/webm__content__encodings__client_8h_source.html index 42ccf02933..1ad23d3ac5 100644 --- a/docs/d8/d33/webm__content__encodings__client_8h_source.html +++ b/docs/d8/d33/webm__content__encodings__client_8h_source.html @@ -140,7 +140,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d3e/classshaka_1_1media_1_1StreamDescriptorCompareFn.html b/docs/d8/d3e/classshaka_1_1media_1_1StreamDescriptorCompareFn.html index ea69bf9dae..62df7fdea6 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 64107d40e1..cfadb2b8ed 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 d81f257108..b43133b7c4 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 9ec892d739..a22ec7c52e 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 b8505995ad..c54f1f7aeb 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 8093467dc3..a815c4d890 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 f6f5ab4b85..5ddd1ca83f 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 e264c4f9dc..0075ea0325 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 3b5dc0c272..3bfb94c177 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 67d5ef2f01..6efc92e207 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 2a825c2191..06e07dccf6 100644 --- a/docs/d8/d8e/classshaka_1_1AdaptationSet.html +++ b/docs/d8/d8e/classshaka_1_1AdaptationSet.html @@ -229,7 +229,7 @@ template<MpdBuilder::MpdType type> -

Definition at line 669 of file mpd_builder.cc.

+

Definition at line 675 of file mpd_builder.cc.

@@ -263,7 +263,7 @@ template<MpdBuilder::MpdType type> -

Definition at line 732 of file mpd_builder.cc.

+

Definition at line 738 of file mpd_builder.cc.

@@ -297,7 +297,7 @@ template<MpdBuilder::MpdType type>
Returns
On success, returns a pointer to Representation. Otherwise returns NULL. The returned pointer is owned by the AdaptationSet instance.
-

Definition at line 688 of file mpd_builder.cc.

+

Definition at line 694 of file mpd_builder.cc.

@@ -330,7 +330,7 @@ template<MpdBuilder::MpdType type> -

Definition at line 744 of file mpd_builder.cc.

+

Definition at line 750 of file mpd_builder.cc.

@@ -363,7 +363,7 @@ template<MpdBuilder::MpdType type> -

Definition at line 831 of file mpd_builder.cc.

+

Definition at line 837 of file mpd_builder.cc.

@@ -382,7 +382,7 @@ template<MpdBuilder::MpdType type>

Makes a copy of AdaptationSet xml element with its child Representation and ContentProtection elements.

Returns
On success returns a non-NULL scoped_xml_ptr. Otherwise returns a NULL scoped_xml_ptr.
-

Definition at line 754 of file mpd_builder.cc.

+

Definition at line 760 of file mpd_builder.cc.

@@ -408,7 +408,7 @@ template<MpdBuilder::MpdType type>
Returns
Returns the value for group. If not set, returns a negative value.
-

Definition at line 841 of file mpd_builder.cc.

+

Definition at line 847 of file mpd_builder.cc.

@@ -451,7 +451,7 @@ template<MpdBuilder::MpdType type> -

Definition at line 852 of file mpd_builder.cc.

+

Definition at line 858 of file mpd_builder.cc.

@@ -493,7 +493,7 @@ template<MpdBuilder::MpdType type> -

Definition at line 863 of file mpd_builder.cc.

+

Definition at line 869 of file mpd_builder.cc.

@@ -526,7 +526,7 @@ template<MpdBuilder::MpdType type> -

Definition at line 837 of file mpd_builder.cc.

+

Definition at line 843 of file mpd_builder.cc.

@@ -571,7 +571,7 @@ template<MpdBuilder::MpdType type>
Attention
This might get removed once DASH IF IOP specification makes a a clear guideline on how to handle key rotation. Also to get this working with shaka-player, this method DOES NOT update the PSSH element. Instead, it removes the element regardless of the content of pssh.
-

Definition at line 738 of file mpd_builder.cc.

+

Definition at line 744 of file mpd_builder.cc.

@@ -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 91a9461285..608894fd61 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 218e318d46..ccf563bf5b 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 a332d642f3..313038fa24 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 24ac229d79..c767499f85 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 cfd4d99939..36d99f2c6d 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 300fd73689..95740a7a79 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 7e950d4cb5..877e6bfdac 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 097196edd4..30c4f26c55 100644 --- a/docs/d8/d9a/fragmenter_8cc_source.html +++ b/docs/d8/d9a/fragmenter_8cc_source.html @@ -293,7 +293,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 81e0452579..3446fa84df 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 358c919149..0040cad62c 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 91063fda9e..d9da76f7c8 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 061348ea17..4254a05028 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 492ed18083..e123e5bbb6 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 3a35578e36..2344df1d8c 100644 --- a/docs/d8/daa/stream__info_8h_source.html +++ b/docs/d8/daa/stream__info_8h_source.html @@ -185,7 +185,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/daf/namespaceshaka.html b/docs/d8/daf/namespaceshaka.html index bfb53b623a..244b6779ed 100644 --- a/docs/d8/daf/namespaceshaka.html +++ b/docs/d8/daf/namespaceshaka.html @@ -566,7 +566,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 efc6839fa1..84fbb89c23 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 @@ -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 82a0e3191b..36dbce07d3 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/dc3/structshaka_1_1media_1_1mp4_1_1CueTimeBox.html b/docs/d8/dc3/structshaka_1_1media_1_1mp4_1_1CueTimeBox.html index ca7af3fe89..d7e88b1d55 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 9ed405f37f..40a1ab7e6d 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 d8b1c62fde..121c932c9b 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 2552150b98..20bf8a0820 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 0222ef46b7..11c10f1495 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 0fabea71f8..5833e8d031 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 2ebca26b63..f582cff6c9 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 f5e5409c42..c061c122df 100644 --- a/docs/d8/de6/webm__crypto__helpers_8h_source.html +++ b/docs/d8/de6/webm__crypto__helpers_8h_source.html @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/deb/classshaka_1_1media_1_1mp2t_1_1EsParser-members.html b/docs/d8/deb/classshaka_1_1media_1_1mp2t_1_1EsParser-members.html index 47fbe7d132..932d990b70 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 aee1f993ac..db679ac21c 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 414388e3ce..1c79d7e427 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 f9ae115ddd..785982820e 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 41765d8b48..6ae4d20b2e 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 1f89b5af89..71f7aa4bdb 100644 --- a/docs/d8/dfa/nal__unit__to__byte__stream__converter_8h_source.html +++ b/docs/d8/dfa/nal__unit__to__byte__stream__converter_8h_source.html @@ -147,7 +147,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d00/structshaka_1_1media_1_1OnMediaEndParameters-members.html b/docs/d9/d00/structshaka_1_1media_1_1OnMediaEndParameters-members.html index 05033ca321..339d48631a 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 397911e7e3..9ef4bde1f8 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 4a270928ba..fe1f1c5a5c 100644 --- a/docs/d9/d08/mock__mpd__builder_8h_source.html +++ b/docs/d9/d08/mock__mpd__builder_8h_source.html @@ -156,31 +156,31 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
67 } // namespace shaka
68 
69 #endif // MPD_BASE_MOCK_MPD_BUILDER_H_
-
virtual void AddNewSegment(uint64_t start_time, uint64_t duration, uint64_t size)
+
virtual void AddNewSegment(uint64_t start_time, uint64_t duration, uint64_t size)
-
virtual void SetSampleDuration(uint32_t sample_duration)
-
virtual Representation * AddRepresentation(const MediaInfo &media_info)
Definition: mpd_builder.cc:688
+
virtual void SetSampleDuration(uint32_t sample_duration)
+
virtual Representation * AddRepresentation(const MediaInfo &media_info)
Definition: mpd_builder.cc:694
This class generates DASH MPDs (Media Presentation Descriptions).
Definition: mpd_builder.h:58
-
virtual void AddContentProtectionElement(const ContentProtectionElement &element)
Definition: mpd_builder.cc:732
+
virtual void AddContentProtectionElement(const ContentProtectionElement &element)
Definition: mpd_builder.cc:738
-
virtual void AddRole(Role role)
Definition: mpd_builder.cc:744
-
virtual void UpdateContentProtectionPssh(const std::string &drm_uuid, const std::string &pssh)
Definition: mpd_builder.cc:738
+
virtual void AddRole(Role role)
Definition: mpd_builder.cc:750
+
virtual void UpdateContentProtectionPssh(const std::string &drm_uuid, const std::string &pssh)
Definition: mpd_builder.cc:744
MpdType type() const
Definition: mpd_builder.h:93
-
virtual void SetGroup(int group_number)
Definition: mpd_builder.cc:837
-
virtual bool ToString(std::string *output)
Definition: mpd_builder.cc:428
-
virtual void ForceSetSegmentAlignment(bool segment_alignment)
Definition: mpd_builder.cc:831
-
virtual void AddContentProtectionElement(const ContentProtectionElement &element)
+
virtual void SetGroup(int group_number)
Definition: mpd_builder.cc:843
+
virtual bool ToString(std::string *output)
Definition: mpd_builder.cc:429
+
virtual void ForceSetSegmentAlignment(bool segment_alignment)
Definition: mpd_builder.cc:837
+
virtual void AddContentProtectionElement(const ContentProtectionElement &element)
-
virtual AdaptationSet * AddAdaptationSet(const std::string &lang)
Definition: mpd_builder.cc:413
-
virtual int Group() const
Definition: mpd_builder.cc:841
+
virtual AdaptationSet * AddAdaptationSet(const std::string &lang)
Definition: mpd_builder.cc:414
+
virtual int Group() const
Definition: mpd_builder.cc:847
-
virtual void UpdateContentProtectionPssh(const std::string &drm_uuid, const std::string &pssh)
+
virtual void UpdateContentProtectionPssh(const std::string &drm_uuid, const std::string &pssh)
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 d35b362d05..50f0424e83 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 e49ce192c0..58427fb902 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 d2a7c15ccd..20f059a7ba 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 05310db099..5192c296b4 100644 --- a/docs/d9/d15/key__rotation__fragmenter_8cc_source.html +++ b/docs/d9/d15/key__rotation__fragmenter_8cc_source.html @@ -243,7 +243,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 b9e39e58c4..219ade2567 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 76b9803b69..a7d04b6a24 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 2f271901b3..0ce38f5211 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 @@ -203,7 +203,7 @@ void set_progress_target
Returns
OK on success, an error status otherwise.
-

Definition at line 313 of file segmenter.cc.

+

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

+

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

+

Definition at line 374 of file segmenter.cc.

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

Definition at line 164 of file segmenter.cc.

+

Definition at line 165 of file segmenter.cc.

@@ -430,7 +430,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 63016cbf00..55b5e457d8 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 6fe358ad6b..d7b6000da9 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 d5a4d27e7b..5497ba176a 100644 --- a/docs/d9/d3b/webm__content__encodings_8h_source.html +++ b/docs/d9/d3b/webm__content__encodings_8h_source.html @@ -179,7 +179,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d3c/structshaka_1_1media_1_1mp4_1_1VTTEmptyCueBox.html b/docs/d9/d3c/structshaka_1_1media_1_1mp4_1_1VTTEmptyCueBox.html index 0455f67bad..90b37fc2f9 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 4fe47a0cce..87c5a8e67d 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 0e723934db..0cd196629c 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 81265b90b4..0e0626b28a 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 1ef3363e96..5696eb01ef 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 3bd4569e12..82c92aa6f8 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 85151acd22..1f2587edac 100644 --- a/docs/d9/d76/ts__muxer_8cc_source.html +++ b/docs/d9/d76/ts__muxer_8cc_source.html @@ -155,7 +155,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d81/classshaka_1_1media_1_1ClosureThread-members.html b/docs/d9/d81/classshaka_1_1media_1_1ClosureThread-members.html index f448dd4a1f..a1418621e7 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 1a73c98dce..0843ec9e32 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 5a94e38a57..6b8c7afac2 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 f5ff857ac0..90b255691e 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 1c2e93e3ec..eff42e4790 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 b4f659502f..f390440b1d 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 57e3ccabe5..3dbeef0eb0 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 601afea304..accc890356 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 96b979ba17..88aa704e97 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 ca006968c4..a1328e4f81 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 a140544996..5487fae594 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 @@ -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 0b22dd4a1d..8f1c26e118 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 76086a4115..0f03a622a1 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 aa7df15e4e..eb91e4ceef 100644 --- a/docs/d9/db9/muxer_8cc_source.html +++ b/docs/d9/db9/muxer_8cc_source.html @@ -218,7 +218,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/dbd/classshaka_1_1media_1_1MemoryFile.html b/docs/d9/dbd/classshaka_1_1media_1_1MemoryFile.html index 6998ef6d28..4d76853cd7 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 44a437bf9d..e1d20737a3 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 e57052c346..17d735699b 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 86cf3c9647..28cffd5497 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 0eb1ce927c..696fd536a6 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 d43f39cddf..83b38fcfc0 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 e47c0204ac..926a5568ce 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 1ba6b2b855..bf1597f706 100644 --- a/docs/d9/dea/classshaka_1_1media_1_1FixedKeySource-members.html +++ b/docs/d9/dea/classshaka_1_1media_1_1FixedKeySource-members.html @@ -116,7 +116,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 b3b66fd816..348e0ecb7d 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 5f90853c92..4920a84dad 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 437d6f168a..14d66ea84b 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 1006ef5466..82f4111f6c 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 e2c4912231..0202c4e661 100644 --- a/docs/da/d04/audio__stream__info_8cc_source.html +++ b/docs/da/d04/audio__stream__info_8cc_source.html @@ -240,7 +240,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 0b5449b4a6..2e3655ffd0 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 619a61306d..5a570332db 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 9cb9328ff3..0745d39d1a 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/d22/key__rotation__fragmenter_8h_source.html b/docs/da/d22/key__rotation__fragmenter_8h_source.html index 17b9d5456d..83d92be18e 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 a0907410bd..0cf81a46a7 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 @@ -159,7 +159,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 404a3560b9..299b186cda 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 590f1fea66..c843b366e2 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 32fccceda4..7d183c4e40 100644 --- a/docs/da/d2a/text__stream__info_8h_source.html +++ b/docs/da/d2a/text__stream__info_8h_source.html @@ -140,7 +140,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d2d/classshaka_1_1media_1_1webm_1_1WebMMuxer-members.html b/docs/da/d2d/classshaka_1_1media_1_1webm_1_1WebMMuxer-members.html index dcf413a4c4..3225844256 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 @@ -117,7 +117,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 84f75e9bea..a3f1085d23 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 3e8fb04168..5d36e0a006 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 44af1afb4c..60697caa6d 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 85ff98b6c8..8f660fc113 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 1c16107408..7fe8564bcd 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 aaf679538b..cdf8f31994 100644 --- a/docs/da/d53/es__parser__h265_8cc_source.html +++ b/docs/da/d53/es__parser__h265_8cc_source.html @@ -267,7 +267,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d59/structshaka_1_1media_1_1mp4_1_1CompactSampleSize.html b/docs/da/d59/structshaka_1_1media_1_1mp4_1_1CompactSampleSize.html index 641ce10af2..9bbd53dc2c 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 402c577c62..7746d93b9e 100644 --- a/docs/da/d5c/widevine__key__source_8h_source.html +++ b/docs/da/d5c/widevine__key__source_8h_source.html @@ -223,7 +223,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 3bb0df06af..0f7754f9e2 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 d9dc30e8f2..3be4bbd1a5 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 @@ -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 e906d131fb..20690de836 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 adf2bae316..02dc34f6c6 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 738ada2944..0f924f6d58 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 40f8743f4e..e2221090d8 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 @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d88/mp4__muxer_8cc_source.html b/docs/da/d88/mp4__muxer_8cc_source.html index f3395489da..687d511584 100644 --- a/docs/da/d88/mp4__muxer_8cc_source.html +++ b/docs/da/d88/mp4__muxer_8cc_source.html @@ -510,7 +510,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 245a0cada3..0c486c9054 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 a35531883f..40b28b5b77 100644 --- a/docs/da/d8e/container__names_8cc_source.html +++ b/docs/da/d8e/container__names_8cc_source.html @@ -1853,7 +1853,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 cf7b232dc8..608dfab0c9 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 6f6b284d4e..5a4acdfdfd 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 8cd3a7ad96..febf372c04 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 4936a8ddcd..77b19b6907 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 c4fcbbec8f..6bfcbd2f2d 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 3135be4cec..9f9dd11ed4 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 dfe34f4729..00a54672f3 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 3b98a0ea22..86e206a3c4 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 0ffe59fe94..b69772bc09 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 fd95fb0fcf..27daeb2008 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 06b05232b7..a9f47a543d 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 6f4124f5b0..a1601a8a63 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 b6d9f2851f..3b03dd9902 100644 --- a/docs/da/dd1/fragmenter_8h_source.html +++ b/docs/da/dd1/fragmenter_8h_source.html @@ -199,7 +199,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 e8d4956b1d..da6eef962c 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 bd853b3734..8c46f61727 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 6dbbc8d755..ce1d24b8b0 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 b9d122a34f..dab64e16a3 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 2e4925e496..9404f29eda 100644 --- a/docs/da/ddd/classshaka_1_1media_1_1WidevineKeySource.html +++ b/docs/da/ddd/classshaka_1_1media_1_1WidevineKeySource.html @@ -550,7 +550,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 1e866e829c..66adae64f4 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 6fa42f547c..1571e32069 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 66b2efb7d8..cf553c4350 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 6495e5fd50..89c7026664 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 7f791653ca..e0766dd364 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 7512ad8dfa..2a041cfdc7 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 3240e14b07..cb78d305b7 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 9ea02825d1..a4672c3d64 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 65401655a2..8a81a9602f 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 b3948fa350..7c3cb4582b 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 80500928fc..7abdf86e99 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 b6982f6066..730b4baaa5 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 9bacc3e07b..2b31b4fe4b 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 dd83d43bde..56f91d482f 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 645e8673f9..3937d96861 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 83c24a46b4..48ed3413dd 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 @@ -179,7 +179,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 a23aa29a9e..08002061d3 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 6a5c6a3fae..b7c75b0c06 100644 --- a/docs/db/d31/track__run__iterator_8cc_source.html +++ b/docs/db/d31/track__run__iterator_8cc_source.html @@ -767,7 +767,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 8520e5a4f2..e6f84b5e48 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 db6fcc16b2..ed3b62180e 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 86b3b0fd55..6fd2face77 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 dac4b0bd49..1ffb433b47 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 b92702dba8..8a2ea55e97 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 b933f91141..80ff2a298b 100644 --- a/docs/db/d51/mp2t__media__parser_8h_source.html +++ b/docs/db/d51/mp2t__media__parser_8h_source.html @@ -193,7 +193,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d51/two__pass__single__segment__segmenter_8h_source.html b/docs/db/d51/two__pass__single__segment__segmenter_8h_source.html index ef8daf259f..3a830761d9 100644 --- a/docs/db/d51/two__pass__single__segment__segmenter_8h_source.html +++ b/docs/db/d51/two__pass__single__segment__segmenter_8h_source.html @@ -145,7 +145,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d5a/classshaka_1_1media_1_1VP9Parser.html b/docs/db/d5a/classshaka_1_1media_1_1VP9Parser.html index 89e46aa8f8..7fef8f9cf8 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 bea5324424..2e70d72e1b 100644 --- a/docs/db/d60/mpd__options_8h_source.html +++ b/docs/db/d60/mpd__options_8h_source.html @@ -98,39 +98,35 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
9 
10 #include <string>
11 
-
12 #include "packager/version/version.h"
+
12 namespace shaka {
13 
-
14 namespace shaka {
-
15 
-
17 struct MpdOptions {
-
18  MpdOptions()
-
19  : availability_time_offset(0),
-
20  minimum_update_period(0),
-
21  // TODO(tinskip): Set min_buffer_time in unit tests rather than here.
-
22  min_buffer_time(2.0),
-
23  time_shift_buffer_depth(0),
-
24  suggested_presentation_delay(0),
-
25  packager_version_string(kPackagerVersion) {}
-
26 
-
27  ~MpdOptions() {};
-
28 
-
29  double availability_time_offset;
-
30  double minimum_update_period;
-
31  double min_buffer_time;
-
32  double time_shift_buffer_depth;
-
33  double suggested_presentation_delay;
-
34  std::string packager_version_string;
-
35 };
-
36 
-
37 } // namespace shaka
-
38 
-
39 #endif // MPD_BASE_MPD_OPTIONS_H_
-
40 
-
Defines Mpd Options.
Definition: mpd_options.h:17
+
15 struct MpdOptions {
+
16  MpdOptions()
+
17  : availability_time_offset(0),
+
18  minimum_update_period(0),
+
19  // TODO(tinskip): Set min_buffer_time in unit tests rather than here.
+
20  min_buffer_time(2.0),
+
21  time_shift_buffer_depth(0),
+
22  suggested_presentation_delay(0) {}
+
23 
+
24  ~MpdOptions() {};
+
25 
+
26  double availability_time_offset;
+
27  double minimum_update_period;
+
28  double min_buffer_time;
+
29  double time_shift_buffer_depth;
+
30  double suggested_presentation_delay;
+
31 };
+
32 
+
33 } // namespace shaka
+
34 
+
35 #endif // MPD_BASE_MPD_OPTIONS_H_
+
36 
+
Defines Mpd Options.
Definition: mpd_options.h:15
diff --git a/docs/db/d64/webvtt__media__parser_8h_source.html b/docs/db/d64/webvtt__media__parser_8h_source.html index c4ef2ed42e..8dff08850c 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 f0b04aba3a..ee33262339 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 519609f157..3b2deca86a 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 9f9e4aa0ad..bb9c51bf96 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 2424811784..34b3e105fe 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 @@ -130,7 +130,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 7471155cfc..bdb26fcf48 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 1288fb2e42..d7a8aad44c 100644 --- a/docs/db/d7e/muxer__options_8cc_source.html +++ b/docs/db/d7e/muxer__options_8cc_source.html @@ -94,28 +94,26 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
5 // https://developers.google.com/open-source/licenses/bsd
6 
7 #include "packager/media/base/muxer_options.h"
-
8 #include "packager/version/version.h"
-
9 
-
10 namespace shaka {
-
11 namespace media {
-
12 
-
13 MuxerOptions::MuxerOptions()
-
14  : single_segment(false),
-
15  segment_duration(0),
-
16  fragment_duration(0),
-
17  segment_sap_aligned(false),
-
18  fragment_sap_aligned(false),
-
19  num_subsegments_per_sidx(0),
-
20  bandwidth(0),
-
21  packager_version_string(kPackagerVersion) {}
-
22 MuxerOptions::~MuxerOptions() {}
-
23 
-
24 } // namespace media
-
25 } // namespace shaka
+
8 
+
9 namespace shaka {
+
10 namespace media {
+
11 
+
12 MuxerOptions::MuxerOptions()
+
13  : single_segment(false),
+
14  segment_duration(0),
+
15  fragment_duration(0),
+
16  segment_sap_aligned(false),
+
17  fragment_sap_aligned(false),
+
18  num_subsegments_per_sidx(0),
+
19  bandwidth(0) {}
+
20 MuxerOptions::~MuxerOptions() {}
+
21 
+
22 } // namespace media
+
23 } // namespace shaka
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 ab86a93340..28e2d6b07b 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 571aa69e8c..a59047a3e0 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 8ce12640f2..358c046f8c 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 21b56c2fc5..6a59a3e3e4 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 @@ scoped_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 8ffd8b5029..dbb8eb4a53 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 @@ -310,7 +310,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 ed58c9fd5b..62801e539d 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 1fd5033e88..cec930c4c6 100644 --- a/docs/db/d96/wvm__media__parser_8h_source.html +++ b/docs/db/d96/wvm__media__parser_8h_source.html @@ -363,7 +363,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/da4/classBandwidthEstimator-members.html b/docs/db/da4/classBandwidthEstimator-members.html index 03c95b6cf8..dc6434b83b 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 5a415d8615..4185f00063 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 dc18fdc440..c8ee5d8c73 100644 --- a/docs/db/dab/classshaka_1_1media_1_1TextStreamInfo.html +++ b/docs/db/dab/classshaka_1_1media_1_1TextStreamInfo.html @@ -276,7 +276,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 7b2d731964..44b92b570d 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 249dc85efc..9c7860cd71 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 94e583335f..4a2eab4c98 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 fac2734f9a..fa6b4879b2 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 3d0a8ed582..1ac28b644f 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 0da07f8017..045052381b 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 4441d31c15..1003c20ab6 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 9b72a3986f..7994f8b593 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 365148d3f4..54095c1609 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 d60cf0fa63..bc97d76859 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 a106e25daf..4a01aa58ff 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 4cb3290af0..4d79cecb86 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 3ce9eae166..75c6db533f 100644 --- a/docs/db/dde/h265__parser_8cc_source.html +++ b/docs/db/dde/h265__parser_8cc_source.html @@ -1221,7 +1221,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/dec/audio__timestamp__helper_8cc_source.html b/docs/db/dec/audio__timestamp__helper_8cc_source.html index d611c73a04..4a9ab5426a 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 60c981c1b8..6ddf389104 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 7d2d8e6b7e..2125ed6e5b 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 ffa95cba6c..ec3ab23a7e 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 2600440bef..467069677e 100644 --- a/docs/db/df6/muxer_8h_source.html +++ b/docs/db/df6/muxer_8h_source.html @@ -212,7 +212,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/df8/classshaka_1_1media_1_1H265ByteToUnitStreamConverter.html b/docs/db/df8/classshaka_1_1media_1_1H265ByteToUnitStreamConverter.html index 7bc5880cfe..54b77d4b32 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 fb9ac735fe..7e5c964fdc 100644 --- a/docs/db/dfb/mpd__utils_8cc_source.html +++ b/docs/db/dfb/mpd__utils_8cc_source.html @@ -444,7 +444,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 587c28d3cc..1605a54c51 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 eb5c05f0dc..e63a8881d6 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 3e5444a054..80672c416c 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 e83e9e13ef..6e44b71e8e 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 5ad7b1fb1a..a298589dd1 100644 --- a/docs/dc/d06/classshaka_1_1media_1_1StreamInfo-members.html +++ b/docs/dc/d06/classshaka_1_1media_1_1StreamInfo-members.html @@ -113,7 +113,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 6af6a7c3b1..e3c6f000ff 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 85d9d48a4e..b30df75cc4 100644 --- a/docs/dc/d16/classshaka_1_1media_1_1SeekHead.html +++ b/docs/dc/d16/classshaka_1_1media_1_1SeekHead.html @@ -148,7 +148,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 d0b65444bc..e9a8a3f31c 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 5ca786f031..1de12173bb 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 0c47de1ebd..c6f3465621 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 2cd0d2d3a1..8a322675d9 100644 --- a/docs/dc/d22/dash__iop__mpd__notifier_8cc_source.html +++ b/docs/dc/d22/dash__iop__mpd__notifier_8cc_source.html @@ -376,16 +376,16 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
bool NotifyNewSegment(uint32_t id, uint64_t start_time, uint64_t duration, uint64_t size) override
bool NotifyEncryptionUpdate(uint32_t container_id, const std::string &drm_uuid, const std::vector< uint8_t > &new_key_id, const std::vector< uint8_t > &new_pssh) override
-
virtual Representation * AddRepresentation(const MediaInfo &media_info)
Definition: mpd_builder.cc:688
+
virtual Representation * AddRepresentation(const MediaInfo &media_info)
Definition: mpd_builder.cc:694
uint32_t id() const
Definition: mpd_builder.h:503
bool NotifySampleDuration(uint32_t container_id, uint32_t sample_duration) override
void AddContentProtectionElements(const MediaInfo &media_info, Representation *parent)
Definition: mpd_utils.cc:339
-
virtual void UpdateContentProtectionPssh(const std::string &drm_uuid, const std::string &pssh)
Definition: mpd_builder.cc:738
+
virtual void UpdateContentProtectionPssh(const std::string &drm_uuid, const std::string &pssh)
Definition: mpd_builder.cc:744
std::string Uint8VectorToBase64(const std::vector< uint8_t > &input)
Converts uint8 vector into base64 encoded string.
-
virtual void ForceSetSegmentAlignment(bool segment_alignment)
Definition: mpd_builder.cc:831
+
virtual void ForceSetSegmentAlignment(bool segment_alignment)
Definition: mpd_builder.cc:837
bool AddContentProtectionElement(uint32_t id, const ContentProtectionElement &content_protection_element) override
-
static void MakePathsRelativeToMpd(const std::string &mpd_path, MediaInfo *media_info)
Definition: mpd_builder.cc:641
+
static void MakePathsRelativeToMpd(const std::string &mpd_path, MediaInfo *media_info)
Definition: mpd_builder.cc:647
ContentType GetContentType(const MediaInfo &media_info)
@@ -394,7 +394,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 da848260f2..9d443fd95c 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 996fc0586e..176212f13e 100644 --- a/docs/dc/d3c/webm__cluster__parser_8h_source.html +++ b/docs/dc/d3c/webm__cluster__parser_8h_source.html @@ -298,7 +298,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d3f/key__source_8h_source.html b/docs/dc/d3f/key__source_8h_source.html index bebf6c8f8b..951bec55df 100644 --- a/docs/dc/d3f/key__source_8h_source.html +++ b/docs/dc/d3f/key__source_8h_source.html @@ -169,7 +169,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d40/classshaka_1_1xml_1_1XmlNode-members.html b/docs/dc/d40/classshaka_1_1xml_1_1XmlNode-members.html index 36867fc9bc..a9fc3aab75 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 e02f94db50..0b46636222 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 2cc258c1bd..3a3f309a2a 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 f429a653b8..4935a80eca 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 fef9839f82..e83a84907a 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 1910f6aba7..dec8b5acce 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 c704cc82b6..6bbd19b972 100644 --- a/docs/dc/d53/webm_2segmenter_8cc_source.html +++ b/docs/dc/d53/webm_2segmenter_8cc_source.html @@ -108,449 +108,450 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
19 #include "packager/media/event/progress_listener.h"
20 #include "packager/third_party/libwebm/src/mkvmuxerutil.hpp"
21 #include "packager/third_party/libwebm/src/webmids.hpp"
-
22 
-
23 namespace shaka {
-
24 namespace media {
-
25 namespace webm {
-
26 namespace {
-
27 int64_t kTimecodeScale = 1000000;
-
28 int64_t kSecondsToNs = 1000000000L;
-
29 } // namespace
-
30 
-
31 Segmenter::Segmenter(const MuxerOptions& options)
-
32  : reference_frame_timestamp_(0),
-
33  options_(options),
-
34  info_(NULL),
-
35  muxer_listener_(NULL),
-
36  progress_listener_(NULL),
-
37  progress_target_(0),
-
38  accumulated_progress_(0),
-
39  first_timestamp_(0),
-
40  sample_duration_(0),
-
41  segment_payload_pos_(0),
-
42  cluster_length_sec_(0),
-
43  segment_length_sec_(0),
-
44  track_id_(0) {}
-
45 
-
46 Segmenter::~Segmenter() {}
-
47 
-
48 Status Segmenter::Initialize(scoped_ptr<MkvWriter> writer,
-
49  StreamInfo* info,
-
50  ProgressListener* progress_listener,
-
51  MuxerListener* muxer_listener,
-
52  KeySource* encryption_key_source,
-
53  uint32_t max_sd_pixels,
-
54  double clear_lead_in_seconds) {
-
55  muxer_listener_ = muxer_listener;
-
56  info_ = info;
-
57  clear_lead_ = clear_lead_in_seconds;
-
58 
-
59  // Use media duration as progress target.
-
60  progress_target_ = info_->duration();
-
61  progress_listener_ = progress_listener;
-
62 
-
63  const std::string version_string =
-
64  "https://github.com/google/shaka-packager version " +
-
65  options().packager_version_string;
+
22 #include "packager/version/version.h"
+
23 
+
24 namespace shaka {
+
25 namespace media {
+
26 namespace webm {
+
27 namespace {
+
28 int64_t kTimecodeScale = 1000000;
+
29 int64_t kSecondsToNs = 1000000000L;
+
30 } // namespace
+
31 
+
32 Segmenter::Segmenter(const MuxerOptions& options)
+
33  : reference_frame_timestamp_(0),
+
34  options_(options),
+
35  info_(NULL),
+
36  muxer_listener_(NULL),
+
37  progress_listener_(NULL),
+
38  progress_target_(0),
+
39  accumulated_progress_(0),
+
40  first_timestamp_(0),
+
41  sample_duration_(0),
+
42  segment_payload_pos_(0),
+
43  cluster_length_sec_(0),
+
44  segment_length_sec_(0),
+
45  track_id_(0) {}
+
46 
+
47 Segmenter::~Segmenter() {}
+
48 
+
49 Status Segmenter::Initialize(scoped_ptr<MkvWriter> writer,
+
50  StreamInfo* info,
+
51  ProgressListener* progress_listener,
+
52  MuxerListener* muxer_listener,
+
53  KeySource* encryption_key_source,
+
54  uint32_t max_sd_pixels,
+
55  double clear_lead_in_seconds) {
+
56  muxer_listener_ = muxer_listener;
+
57  info_ = info;
+
58  clear_lead_ = clear_lead_in_seconds;
+
59 
+
60  // Use media duration as progress target.
+
61  progress_target_ = info_->duration();
+
62  progress_listener_ = progress_listener;
+
63 
+
64  segment_info_.Init();
+
65  segment_info_.set_timecode_scale(kTimecodeScale);
66 
-
67  segment_info_.Init();
-
68  segment_info_.set_timecode_scale(kTimecodeScale);
-
69  segment_info_.set_writing_app(version_string.c_str());
-
70  if (options().single_segment) {
-
71  // Set an initial duration so the duration element is written; will be
-
72  // overwritten at the end. This works because this is a float and floats
-
73  // are always the same size.
-
74  segment_info_.set_duration(1);
-
75  }
-
76 
-
77  Status status;
-
78  if (encryption_key_source) {
-
79  status = InitializeEncryptor(encryption_key_source, max_sd_pixels);
-
80  if (!status.ok())
-
81  return status;
-
82  }
-
83 
-
84  // Create the track info.
-
85  switch (info_->stream_type()) {
-
86  case kStreamVideo:
-
87  status = CreateVideoTrack(static_cast<VideoStreamInfo*>(info_));
-
88  break;
-
89  case kStreamAudio:
-
90  status = CreateAudioTrack(static_cast<AudioStreamInfo*>(info_));
+
67  const std::string version = GetPackagerVersion();
+
68  if (!version.empty()) {
+
69  segment_info_.set_writing_app(
+
70  (GetPackagerProjectUrl() + " version " + version).c_str());
+
71  }
+
72 
+
73  if (options().single_segment) {
+
74  // Set an initial duration so the duration element is written; will be
+
75  // overwritten at the end. This works because this is a float and floats
+
76  // are always the same size.
+
77  segment_info_.set_duration(1);
+
78  }
+
79 
+
80  Status status;
+
81  if (encryption_key_source) {
+
82  status = InitializeEncryptor(encryption_key_source, max_sd_pixels);
+
83  if (!status.ok())
+
84  return status;
+
85  }
+
86 
+
87  // Create the track info.
+
88  switch (info_->stream_type()) {
+
89  case kStreamVideo:
+
90  status = CreateVideoTrack(static_cast<VideoStreamInfo*>(info_));
91  break;
-
92  default:
-
93  NOTIMPLEMENTED() << "Not implemented for stream type: "
-
94  << info_->stream_type();
-
95  status = Status(error::UNIMPLEMENTED, "Not implemented for stream type");
-
96  }
-
97  if (!status.ok())
-
98  return status;
-
99 
-
100  return DoInitialize(writer.Pass());
-
101 }
+
92  case kStreamAudio:
+
93  status = CreateAudioTrack(static_cast<AudioStreamInfo*>(info_));
+
94  break;
+
95  default:
+
96  NOTIMPLEMENTED() << "Not implemented for stream type: "
+
97  << info_->stream_type();
+
98  status = Status(error::UNIMPLEMENTED, "Not implemented for stream type");
+
99  }
+
100  if (!status.ok())
+
101  return status;
102 
- -
104  Status status = WriteFrame(true /* write_duration */);
-
105  if (!status.ok())
-
106  return status;
-
107 
-
108  uint64_t duration =
-
109  prev_sample_->pts() - first_timestamp_ + prev_sample_->duration();
-
110  segment_info_.set_duration(FromBMFFTimescale(duration));
-
111  return DoFinalize();
-
112 }
-
113 
-
114 Status Segmenter::AddSample(scoped_refptr<MediaSample> sample) {
-
115  if (sample_duration_ == 0) {
-
116  first_timestamp_ = sample->pts();
-
117  sample_duration_ = sample->duration();
-
118  if (muxer_listener_)
-
119  muxer_listener_->OnSampleDurationReady(sample_duration_);
-
120  }
-
121 
-
122  UpdateProgress(sample->duration());
-
123 
-
124  // This writes frames in a delay. Meaning that the previous frame is written
-
125  // on this call to AddSample. The current frame is stored until the next
-
126  // call. This is done to determine which frame is the last in a Cluster.
-
127  // This first block determines if this is a new Cluster and writes the
-
128  // previous frame first before creating the new Cluster.
-
129 
-
130  Status status;
-
131  bool wrote_frame = false;
-
132  if (!cluster_) {
-
133  status = NewSegment(sample->pts());
-
134  // First frame, so no previous frame to write.
-
135  wrote_frame = true;
-
136  } else if (segment_length_sec_ >= options_.segment_duration) {
-
137  if (sample->is_key_frame() || !options_.segment_sap_aligned) {
-
138  status = WriteFrame(true /* write_duration */);
-
139  status.Update(NewSegment(sample->pts()));
-
140  segment_length_sec_ = 0;
-
141  cluster_length_sec_ = 0;
-
142  wrote_frame = true;
-
143  }
-
144  } else if (cluster_length_sec_ >= options_.fragment_duration) {
-
145  if (sample->is_key_frame() || !options_.fragment_sap_aligned) {
-
146  status = WriteFrame(true /* write_duration */);
-
147  status.Update(NewSubsegment(sample->pts()));
-
148  cluster_length_sec_ = 0;
-
149  wrote_frame = true;
-
150  }
-
151  }
-
152  if (!wrote_frame) {
-
153  status = WriteFrame(false /* write_duration */);
+
103  return DoInitialize(writer.Pass());
+
104 }
+
105 
+ +
107  Status status = WriteFrame(true /* write_duration */);
+
108  if (!status.ok())
+
109  return status;
+
110 
+
111  uint64_t duration =
+
112  prev_sample_->pts() - first_timestamp_ + prev_sample_->duration();
+
113  segment_info_.set_duration(FromBMFFTimescale(duration));
+
114  return DoFinalize();
+
115 }
+
116 
+
117 Status Segmenter::AddSample(scoped_refptr<MediaSample> sample) {
+
118  if (sample_duration_ == 0) {
+
119  first_timestamp_ = sample->pts();
+
120  sample_duration_ = sample->duration();
+
121  if (muxer_listener_)
+
122  muxer_listener_->OnSampleDurationReady(sample_duration_);
+
123  }
+
124 
+
125  UpdateProgress(sample->duration());
+
126 
+
127  // This writes frames in a delay. Meaning that the previous frame is written
+
128  // on this call to AddSample. The current frame is stored until the next
+
129  // call. This is done to determine which frame is the last in a Cluster.
+
130  // This first block determines if this is a new Cluster and writes the
+
131  // previous frame first before creating the new Cluster.
+
132 
+
133  Status status;
+
134  bool wrote_frame = false;
+
135  if (!cluster_) {
+
136  status = NewSegment(sample->pts());
+
137  // First frame, so no previous frame to write.
+
138  wrote_frame = true;
+
139  } else if (segment_length_sec_ >= options_.segment_duration) {
+
140  if (sample->is_key_frame() || !options_.segment_sap_aligned) {
+
141  status = WriteFrame(true /* write_duration */);
+
142  status.Update(NewSegment(sample->pts()));
+
143  segment_length_sec_ = 0;
+
144  cluster_length_sec_ = 0;
+
145  wrote_frame = true;
+
146  }
+
147  } else if (cluster_length_sec_ >= options_.fragment_duration) {
+
148  if (sample->is_key_frame() || !options_.fragment_sap_aligned) {
+
149  status = WriteFrame(true /* write_duration */);
+
150  status.Update(NewSubsegment(sample->pts()));
+
151  cluster_length_sec_ = 0;
+
152  wrote_frame = true;
+
153  }
154  }
-
155  if (!status.ok())
-
156  return status;
-
157 
-
158  // Encrypt the frame.
-
159  if (encryptor_) {
-
160  const bool encrypt_frame =
-
161  static_cast<double>(sample->pts() - first_timestamp_) /
-
162  info_->time_scale() >=
-
163  clear_lead_;
-
164  status = encryptor_->EncryptFrame(sample, encrypt_frame);
-
165  if (!status.ok()) {
-
166  LOG(ERROR) << "Error encrypting frame.";
-
167  return status;
-
168  }
-
169  if (encrypt_frame && muxer_listener_)
-
170  muxer_listener_->OnEncryptionStart();
-
171  }
-
172 
-
173 
-
174  // Add the sample to the durations even though we have not written the frame
-
175  // yet. This is needed to make sure we split Clusters at the correct point.
-
176  // These are only used in this method.
-
177  const double duration_sec =
-
178  static_cast<double>(sample->duration()) / info_->time_scale();
-
179  cluster_length_sec_ += duration_sec;
-
180  segment_length_sec_ += duration_sec;
-
181 
-
182  prev_sample_ = sample;
-
183  return Status::OK;
-
184 }
-
185 
-
186 float Segmenter::GetDuration() const {
-
187  return static_cast<float>(segment_info_.duration()) *
-
188  segment_info_.timecode_scale() / kSecondsToNs;
-
189 }
-
190 
-
191 uint64_t Segmenter::FromBMFFTimescale(uint64_t time_timescale) {
-
192  // Convert the time from BMFF time_code to WebM timecode scale.
-
193  const int64_t time_ns =
-
194  kSecondsToNs * time_timescale / info_->time_scale();
-
195  return time_ns / segment_info_.timecode_scale();
-
196 }
-
197 
-
198 uint64_t Segmenter::FromWebMTimecode(uint64_t time_webm_timecode) {
-
199  // Convert the time to BMFF time_code from WebM timecode scale.
-
200  const int64_t time_ns = time_webm_timecode * segment_info_.timecode_scale();
-
201  return time_ns * info_->time_scale() / kSecondsToNs;
-
202 }
-
203 
-
204 Status Segmenter::WriteSegmentHeader(uint64_t file_size, MkvWriter* writer) {
-
205  Status error_status(error::FILE_FAILURE, "Error writing segment header.");
+
155  if (!wrote_frame) {
+
156  status = WriteFrame(false /* write_duration */);
+
157  }
+
158  if (!status.ok())
+
159  return status;
+
160 
+
161  // Encrypt the frame.
+
162  if (encryptor_) {
+
163  const bool encrypt_frame =
+
164  static_cast<double>(sample->pts() - first_timestamp_) /
+
165  info_->time_scale() >=
+
166  clear_lead_;
+
167  status = encryptor_->EncryptFrame(sample, encrypt_frame);
+
168  if (!status.ok()) {
+
169  LOG(ERROR) << "Error encrypting frame.";
+
170  return status;
+
171  }
+
172  if (encrypt_frame && muxer_listener_)
+
173  muxer_listener_->OnEncryptionStart();
+
174  }
+
175 
+
176 
+
177  // Add the sample to the durations even though we have not written the frame
+
178  // yet. This is needed to make sure we split Clusters at the correct point.
+
179  // These are only used in this method.
+
180  const double duration_sec =
+
181  static_cast<double>(sample->duration()) / info_->time_scale();
+
182  cluster_length_sec_ += duration_sec;
+
183  segment_length_sec_ += duration_sec;
+
184 
+
185  prev_sample_ = sample;
+
186  return Status::OK;
+
187 }
+
188 
+
189 float Segmenter::GetDuration() const {
+
190  return static_cast<float>(segment_info_.duration()) *
+
191  segment_info_.timecode_scale() / kSecondsToNs;
+
192 }
+
193 
+
194 uint64_t Segmenter::FromBMFFTimescale(uint64_t time_timescale) {
+
195  // Convert the time from BMFF time_code to WebM timecode scale.
+
196  const int64_t time_ns =
+
197  kSecondsToNs * time_timescale / info_->time_scale();
+
198  return time_ns / segment_info_.timecode_scale();
+
199 }
+
200 
+
201 uint64_t Segmenter::FromWebMTimecode(uint64_t time_webm_timecode) {
+
202  // Convert the time to BMFF time_code from WebM timecode scale.
+
203  const int64_t time_ns = time_webm_timecode * segment_info_.timecode_scale();
+
204  return time_ns * info_->time_scale() / kSecondsToNs;
+
205 }
206 
-
207  if (!WriteEbmlHeader(writer))
-
208  return error_status;
+
207 Status Segmenter::WriteSegmentHeader(uint64_t file_size, MkvWriter* writer) {
+
208  Status error_status(error::FILE_FAILURE, "Error writing segment header.");
209 
-
210  if (WriteID(writer, mkvmuxer::kMkvSegment) != 0)
+
210  if (!WriteEbmlHeader(writer))
211  return error_status;
212 
-
213  const uint64_t segment_size_size = 8;
-
214  segment_payload_pos_ = writer->Position() + segment_size_size;
-
215  if (file_size > 0) {
-
216  // We want the size of the segment element, so subtract the header.
-
217  if (WriteUIntSize(writer, file_size - segment_payload_pos_,
-
218  segment_size_size) != 0)
-
219  return error_status;
-
220  if (!seek_head_.Write(writer))
-
221  return error_status;
-
222  } else {
-
223  if (SerializeInt(writer, mkvmuxer::kEbmlUnknownValue, segment_size_size) !=
-
224  0)
-
225  return error_status;
-
226  // We don't know the header size, so write a placeholder.
-
227  if (!seek_head_.WriteVoid(writer))
+
213  if (WriteID(writer, mkvmuxer::kMkvSegment) != 0)
+
214  return error_status;
+
215 
+
216  const uint64_t segment_size_size = 8;
+
217  segment_payload_pos_ = writer->Position() + segment_size_size;
+
218  if (file_size > 0) {
+
219  // We want the size of the segment element, so subtract the header.
+
220  if (WriteUIntSize(writer, file_size - segment_payload_pos_,
+
221  segment_size_size) != 0)
+
222  return error_status;
+
223  if (!seek_head_.Write(writer))
+
224  return error_status;
+
225  } else {
+
226  if (SerializeInt(writer, mkvmuxer::kEbmlUnknownValue, segment_size_size) !=
+
227  0)
228  return error_status;
-
229  }
-
230 
-
231  seek_head_.set_info_pos(writer->Position() - segment_payload_pos_);
-
232  if (!segment_info_.Write(writer))
-
233  return error_status;
-
234 
-
235  seek_head_.set_tracks_pos(writer->Position() - segment_payload_pos_);
-
236  if (!tracks_.Write(writer))
-
237  return error_status;
-
238 
-
239  return Status::OK;
-
240 }
+
229  // We don't know the header size, so write a placeholder.
+
230  if (!seek_head_.WriteVoid(writer))
+
231  return error_status;
+
232  }
+
233 
+
234  seek_head_.set_info_pos(writer->Position() - segment_payload_pos_);
+
235  if (!segment_info_.Write(writer))
+
236  return error_status;
+
237 
+
238  seek_head_.set_tracks_pos(writer->Position() - segment_payload_pos_);
+
239  if (!tracks_.Write(writer))
+
240  return error_status;
241 
-
242 Status Segmenter::SetCluster(uint64_t start_webm_timecode,
-
243  uint64_t position,
-
244  MkvWriter* writer) {
-
245  const uint64_t scale = segment_info_.timecode_scale();
-
246  cluster_.reset(new mkvmuxer::Cluster(start_webm_timecode, position, scale));
-
247  cluster_->Init(writer);
-
248  return Status::OK;
-
249 }
-
250 
-
251 void Segmenter::UpdateProgress(uint64_t progress) {
-
252  accumulated_progress_ += progress;
-
253  if (!progress_listener_ || progress_target_ == 0)
-
254  return;
-
255  // It might happen that accumulated progress exceeds progress_target due to
-
256  // computation errors, e.g. rounding error. Cap it so it never reports > 100%
-
257  // progress.
-
258  if (accumulated_progress_ >= progress_target_) {
-
259  progress_listener_->OnProgress(1.0);
-
260  } else {
-
261  progress_listener_->OnProgress(static_cast<double>(accumulated_progress_) /
-
262  progress_target_);
-
263  }
-
264 }
-
265 
-
266 Status Segmenter::CreateVideoTrack(VideoStreamInfo* info) {
-
267  // The seed is only used to create a UID which we overwrite later.
-
268  unsigned int seed = 0;
-
269  mkvmuxer::VideoTrack* track = new mkvmuxer::VideoTrack(&seed);
-
270  if (!track)
-
271  return Status(error::INTERNAL_ERROR, "Failed to create video track.");
-
272 
-
273  if (info->codec() == kCodecVP8) {
-
274  track->set_codec_id(mkvmuxer::Tracks::kVp8CodecId);
-
275  } else if (info->codec() == kCodecVP9) {
-
276  track->set_codec_id(mkvmuxer::Tracks::kVp9CodecId);
-
277 
-
278  // The |StreamInfo::codec_config| field is stored using the MP4 format; we
-
279  // need to convert it to the WebM format.
-
280  VPCodecConfigurationRecord vp_config;
-
281  if (!vp_config.ParseMP4(info->codec_config())) {
-
282  return Status(error::INTERNAL_ERROR,
-
283  "Unable to parse VP9 codec configuration");
-
284  }
-
285 
-
286  std::vector<uint8_t> codec_config;
-
287  vp_config.WriteWebM(&codec_config);
-
288  if (!track->SetCodecPrivate(codec_config.data(), codec_config.size())) {
-
289  return Status(error::INTERNAL_ERROR,
-
290  "Private codec data required for VP9 streams");
-
291  }
-
292  } else {
-
293  LOG(ERROR) << "Only VP8 and VP9 video codecs are supported.";
-
294  return Status(error::UNIMPLEMENTED,
-
295  "Only VP8 and VP9 video codecs are supported.");
-
296  }
-
297 
-
298  track->set_uid(info->track_id());
-
299  if (!info->language().empty())
-
300  track->set_language(info->language().c_str());
-
301  track->set_type(mkvmuxer::Tracks::kVideo);
-
302  track->set_width(info->width());
-
303  track->set_height(info->height());
-
304  track->set_display_height(info->height());
-
305  track->set_display_width(info->width() * info->pixel_width() /
-
306  info->pixel_height());
-
307 
-
308  if (encryptor_)
-
309  encryptor_->AddTrackInfo(track);
+
242  return Status::OK;
+
243 }
+
244 
+
245 Status Segmenter::SetCluster(uint64_t start_webm_timecode,
+
246  uint64_t position,
+
247  MkvWriter* writer) {
+
248  const uint64_t scale = segment_info_.timecode_scale();
+
249  cluster_.reset(new mkvmuxer::Cluster(start_webm_timecode, position, scale));
+
250  cluster_->Init(writer);
+
251  return Status::OK;
+
252 }
+
253 
+
254 void Segmenter::UpdateProgress(uint64_t progress) {
+
255  accumulated_progress_ += progress;
+
256  if (!progress_listener_ || progress_target_ == 0)
+
257  return;
+
258  // It might happen that accumulated progress exceeds progress_target due to
+
259  // computation errors, e.g. rounding error. Cap it so it never reports > 100%
+
260  // progress.
+
261  if (accumulated_progress_ >= progress_target_) {
+
262  progress_listener_->OnProgress(1.0);
+
263  } else {
+
264  progress_listener_->OnProgress(static_cast<double>(accumulated_progress_) /
+
265  progress_target_);
+
266  }
+
267 }
+
268 
+
269 Status Segmenter::CreateVideoTrack(VideoStreamInfo* info) {
+
270  // The seed is only used to create a UID which we overwrite later.
+
271  unsigned int seed = 0;
+
272  mkvmuxer::VideoTrack* track = new mkvmuxer::VideoTrack(&seed);
+
273  if (!track)
+
274  return Status(error::INTERNAL_ERROR, "Failed to create video track.");
+
275 
+
276  if (info->codec() == kCodecVP8) {
+
277  track->set_codec_id(mkvmuxer::Tracks::kVp8CodecId);
+
278  } else if (info->codec() == kCodecVP9) {
+
279  track->set_codec_id(mkvmuxer::Tracks::kVp9CodecId);
+
280 
+
281  // The |StreamInfo::codec_config| field is stored using the MP4 format; we
+
282  // need to convert it to the WebM format.
+
283  VPCodecConfigurationRecord vp_config;
+
284  if (!vp_config.ParseMP4(info->codec_config())) {
+
285  return Status(error::INTERNAL_ERROR,
+
286  "Unable to parse VP9 codec configuration");
+
287  }
+
288 
+
289  std::vector<uint8_t> codec_config;
+
290  vp_config.WriteWebM(&codec_config);
+
291  if (!track->SetCodecPrivate(codec_config.data(), codec_config.size())) {
+
292  return Status(error::INTERNAL_ERROR,
+
293  "Private codec data required for VP9 streams");
+
294  }
+
295  } else {
+
296  LOG(ERROR) << "Only VP8 and VP9 video codecs are supported.";
+
297  return Status(error::UNIMPLEMENTED,
+
298  "Only VP8 and VP9 video codecs are supported.");
+
299  }
+
300 
+
301  track->set_uid(info->track_id());
+
302  if (!info->language().empty())
+
303  track->set_language(info->language().c_str());
+
304  track->set_type(mkvmuxer::Tracks::kVideo);
+
305  track->set_width(info->width());
+
306  track->set_height(info->height());
+
307  track->set_display_height(info->height());
+
308  track->set_display_width(info->width() * info->pixel_width() /
+
309  info->pixel_height());
310 
-
311  tracks_.AddTrack(track, info->track_id());
-
312  track_id_ = track->number();
-
313  return Status::OK;
-
314 }
-
315 
-
316 Status Segmenter::CreateAudioTrack(AudioStreamInfo* info) {
-
317  // The seed is only used to create a UID which we overwrite later.
-
318  unsigned int seed = 0;
-
319  mkvmuxer::AudioTrack* track = new mkvmuxer::AudioTrack(&seed);
-
320  if (!track)
-
321  return Status(error::INTERNAL_ERROR, "Failed to create audio track.");
-
322 
-
323  if (info->codec() == kCodecOpus) {
-
324  track->set_codec_id(mkvmuxer::Tracks::kOpusCodecId);
-
325  } else if (info->codec() == kCodecVorbis) {
-
326  track->set_codec_id(mkvmuxer::Tracks::kVorbisCodecId);
-
327  } else {
-
328  LOG(ERROR) << "Only Vorbis and Opus audio codec is supported.";
-
329  return Status(error::UNIMPLEMENTED,
-
330  "Only Vorbis and Opus audio codecs are supported.");
-
331  }
-
332  if (!track->SetCodecPrivate(info->codec_config().data(),
-
333  info->codec_config().size())) {
-
334  return Status(error::INTERNAL_ERROR,
-
335  "Private codec data required for audio streams");
-
336  }
-
337 
-
338  track->set_uid(info->track_id());
-
339  if (!info->language().empty())
-
340  track->set_language(info->language().c_str());
-
341  track->set_type(mkvmuxer::Tracks::kAudio);
-
342  track->set_sample_rate(info->sampling_frequency());
-
343  track->set_channels(info->num_channels());
-
344  track->set_seek_pre_roll(info->seek_preroll_ns());
-
345  track->set_codec_delay(info->codec_delay_ns());
-
346 
-
347  if (encryptor_)
-
348  encryptor_->AddTrackInfo(track);
+
311  if (encryptor_)
+
312  encryptor_->AddTrackInfo(track);
+
313 
+
314  tracks_.AddTrack(track, info->track_id());
+
315  track_id_ = track->number();
+
316  return Status::OK;
+
317 }
+
318 
+
319 Status Segmenter::CreateAudioTrack(AudioStreamInfo* info) {
+
320  // The seed is only used to create a UID which we overwrite later.
+
321  unsigned int seed = 0;
+
322  mkvmuxer::AudioTrack* track = new mkvmuxer::AudioTrack(&seed);
+
323  if (!track)
+
324  return Status(error::INTERNAL_ERROR, "Failed to create audio track.");
+
325 
+
326  if (info->codec() == kCodecOpus) {
+
327  track->set_codec_id(mkvmuxer::Tracks::kOpusCodecId);
+
328  } else if (info->codec() == kCodecVorbis) {
+
329  track->set_codec_id(mkvmuxer::Tracks::kVorbisCodecId);
+
330  } else {
+
331  LOG(ERROR) << "Only Vorbis and Opus audio codec is supported.";
+
332  return Status(error::UNIMPLEMENTED,
+
333  "Only Vorbis and Opus audio codecs are supported.");
+
334  }
+
335  if (!track->SetCodecPrivate(info->codec_config().data(),
+
336  info->codec_config().size())) {
+
337  return Status(error::INTERNAL_ERROR,
+
338  "Private codec data required for audio streams");
+
339  }
+
340 
+
341  track->set_uid(info->track_id());
+
342  if (!info->language().empty())
+
343  track->set_language(info->language().c_str());
+
344  track->set_type(mkvmuxer::Tracks::kAudio);
+
345  track->set_sample_rate(info->sampling_frequency());
+
346  track->set_channels(info->num_channels());
+
347  track->set_seek_pre_roll(info->seek_preroll_ns());
+
348  track->set_codec_delay(info->codec_delay_ns());
349 
-
350  tracks_.AddTrack(track, info->track_id());
-
351  track_id_ = track->number();
-
352  return Status::OK;
-
353 }
-
354 
-
355 Status Segmenter::InitializeEncryptor(KeySource* key_source,
-
356  uint32_t max_sd_pixels) {
-
357  encryptor_.reset(new Encryptor());
-
358  const KeySource::TrackType track_type =
-
359  GetTrackTypeForEncryption(*info_, max_sd_pixels);
-
360  if (track_type == KeySource::TrackType::TRACK_TYPE_UNKNOWN)
-
361  return Status::OK;
-
362  return encryptor_->Initialize(muxer_listener_, track_type, key_source);
-
363 }
-
364 
-
365 Status Segmenter::WriteFrame(bool write_duration) {
-
366  // Create a frame manually so we can create non-SimpleBlock frames. This
-
367  // is required to allow the frame duration to be added. If the duration
-
368  // is not set, then a SimpleBlock will still be written.
-
369  mkvmuxer::Frame frame;
-
370 
-
371  if (!frame.Init(prev_sample_->data(), prev_sample_->data_size())) {
-
372  return Status(error::MUXER_FAILURE,
-
373  "Error adding sample to segment: Frame::Init failed");
-
374  }
-
375 
-
376  if (write_duration) {
-
377  const uint64_t duration_ns =
-
378  prev_sample_->duration() * kSecondsToNs / info_->time_scale();
-
379  frame.set_duration(duration_ns);
-
380  }
-
381  frame.set_is_key(prev_sample_->is_key_frame());
-
382  frame.set_timestamp(prev_sample_->pts() * kSecondsToNs / info_->time_scale());
-
383  frame.set_track_number(track_id_);
-
384 
-
385  if (prev_sample_->side_data_size() > 0) {
-
386  uint64_t block_add_id;
-
387  // First 8 bytes of side_data is the BlockAddID element's value, which is
-
388  // done to mimic ffmpeg behavior. See webm_cluster_parser.cc for details.
-
389  CHECK_GT(prev_sample_->side_data_size(), sizeof(block_add_id));
-
390  memcpy(&block_add_id, prev_sample_->side_data(), sizeof(block_add_id));
-
391  if (!frame.AddAdditionalData(
-
392  prev_sample_->side_data() + sizeof(block_add_id),
-
393  prev_sample_->side_data_size() - sizeof(block_add_id),
-
394  block_add_id)) {
-
395  return Status(
-
396  error::MUXER_FAILURE,
-
397  "Error adding sample to segment: Frame::AddAditionalData Failed");
-
398  }
-
399  }
-
400 
-
401  if (!prev_sample_->is_key_frame() && !frame.CanBeSimpleBlock()) {
-
402  const int64_t timestamp_ns =
-
403  reference_frame_timestamp_ * kSecondsToNs / info_->time_scale();
-
404  frame.set_reference_block_timestamp(timestamp_ns);
-
405  }
-
406 
-
407  // GetRelativeTimecode will return -1 if the relative timecode is too large
-
408  // to fit in the frame.
-
409  if (cluster_->GetRelativeTimecode(frame.timestamp() /
-
410  cluster_->timecode_scale()) < 0) {
-
411  const double segment_duration =
-
412  static_cast<double>(frame.timestamp()) / kSecondsToNs;
-
413  LOG(ERROR) << "Error adding sample to segment: segment too large, "
-
414  << segment_duration << " seconds.";
-
415  return Status(error::MUXER_FAILURE,
-
416  "Error adding sample to segment: segment too large");
-
417  }
-
418 
-
419  if (!cluster_->AddFrame(&frame)) {
-
420  return Status(error::MUXER_FAILURE,
-
421  "Error adding sample to segment: Cluster::AddFrame failed");
-
422  }
-
423 
-
424  // A reference frame is needed for non-keyframes. Having a reference to the
-
425  // previous block is good enough.
-
426  // See libwebm Segment::AddGenericFrame
-
427  reference_frame_timestamp_ = prev_sample_->pts();
-
428  return Status::OK;
-
429 }
-
430 
-
431 } // namespace webm
-
432 } // namespace media
-
433 } // namespace shaka
+
350  if (encryptor_)
+
351  encryptor_->AddTrackInfo(track);
+
352 
+
353  tracks_.AddTrack(track, info->track_id());
+
354  track_id_ = track->number();
+
355  return Status::OK;
+
356 }
+
357 
+
358 Status Segmenter::InitializeEncryptor(KeySource* key_source,
+
359  uint32_t max_sd_pixels) {
+
360  encryptor_.reset(new Encryptor());
+
361  const KeySource::TrackType track_type =
+
362  GetTrackTypeForEncryption(*info_, max_sd_pixels);
+
363  if (track_type == KeySource::TrackType::TRACK_TYPE_UNKNOWN)
+
364  return Status::OK;
+
365  return encryptor_->Initialize(muxer_listener_, track_type, key_source);
+
366 }
+
367 
+
368 Status Segmenter::WriteFrame(bool write_duration) {
+
369  // Create a frame manually so we can create non-SimpleBlock frames. This
+
370  // is required to allow the frame duration to be added. If the duration
+
371  // is not set, then a SimpleBlock will still be written.
+
372  mkvmuxer::Frame frame;
+
373 
+
374  if (!frame.Init(prev_sample_->data(), prev_sample_->data_size())) {
+
375  return Status(error::MUXER_FAILURE,
+
376  "Error adding sample to segment: Frame::Init failed");
+
377  }
+
378 
+
379  if (write_duration) {
+
380  const uint64_t duration_ns =
+
381  prev_sample_->duration() * kSecondsToNs / info_->time_scale();
+
382  frame.set_duration(duration_ns);
+
383  }
+
384  frame.set_is_key(prev_sample_->is_key_frame());
+
385  frame.set_timestamp(prev_sample_->pts() * kSecondsToNs / info_->time_scale());
+
386  frame.set_track_number(track_id_);
+
387 
+
388  if (prev_sample_->side_data_size() > 0) {
+
389  uint64_t block_add_id;
+
390  // First 8 bytes of side_data is the BlockAddID element's value, which is
+
391  // done to mimic ffmpeg behavior. See webm_cluster_parser.cc for details.
+
392  CHECK_GT(prev_sample_->side_data_size(), sizeof(block_add_id));
+
393  memcpy(&block_add_id, prev_sample_->side_data(), sizeof(block_add_id));
+
394  if (!frame.AddAdditionalData(
+
395  prev_sample_->side_data() + sizeof(block_add_id),
+
396  prev_sample_->side_data_size() - sizeof(block_add_id),
+
397  block_add_id)) {
+
398  return Status(
+
399  error::MUXER_FAILURE,
+
400  "Error adding sample to segment: Frame::AddAditionalData Failed");
+
401  }
+
402  }
+
403 
+
404  if (!prev_sample_->is_key_frame() && !frame.CanBeSimpleBlock()) {
+
405  const int64_t timestamp_ns =
+
406  reference_frame_timestamp_ * kSecondsToNs / info_->time_scale();
+
407  frame.set_reference_block_timestamp(timestamp_ns);
+
408  }
+
409 
+
410  // GetRelativeTimecode will return -1 if the relative timecode is too large
+
411  // to fit in the frame.
+
412  if (cluster_->GetRelativeTimecode(frame.timestamp() /
+
413  cluster_->timecode_scale()) < 0) {
+
414  const double segment_duration =
+
415  static_cast<double>(frame.timestamp()) / kSecondsToNs;
+
416  LOG(ERROR) << "Error adding sample to segment: segment too large, "
+
417  << segment_duration << " seconds.";
+
418  return Status(error::MUXER_FAILURE,
+
419  "Error adding sample to segment: segment too large");
+
420  }
+
421 
+
422  if (!cluster_->AddFrame(&frame)) {
+
423  return Status(error::MUXER_FAILURE,
+
424  "Error adding sample to segment: Cluster::AddFrame failed");
+
425  }
+
426 
+
427  // A reference frame is needed for non-keyframes. Having a reference to the
+
428  // previous block is good enough.
+
429  // See libwebm Segment::AddGenericFrame
+
430  reference_frame_timestamp_ = prev_sample_->pts();
+
431  return Status::OK;
+
432 }
+
433 
+
434 } // namespace webm
+
435 } // namespace media
+
436 } // namespace shaka
Abstract class holds stream information.
Definition: stream_info.h:26
-
std::string packager_version_string
Specify the version string to be embedded in the output files.
Definition: muxer_options.h:71
-
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:164
-
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:380
+
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:383
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:313
+
Status AddSample(const MediaStream *stream, scoped_refptr< MediaSample > sample)
Definition: segmenter.cc:316
This class listens to progress updates events.
mkvmuxer::int64 Position() const override
Definition: mkv_writer.cc:71
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:31
- -
double GetDuration() const
Definition: segmenter.cc:371
+
double GetDuration() const
Definition: segmenter.cc:374
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 a7523d63ae..b9f2781e3d 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 f6fb22a35e..c294f67b6c 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 1d85d926a0..43c330649b 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 05e0e87819..b79d80bd81 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 339779c859..666ffb7d90 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 @@ -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 1f47dc4c03..e0d731b75b 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 3f715517d5..54be7e02e5 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 bf0601fe2f..647215aec0 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 d684c5d199..4eece478d8 100644 --- a/docs/dc/d7b/h264__parser_8cc_source.html +++ b/docs/dc/d7b/h264__parser_8cc_source.html @@ -1267,7 +1267,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d86/structshaka_1_1media_1_1mp4_1_1ElementaryStreamDescriptor-members.html b/docs/dc/d86/structshaka_1_1media_1_1mp4_1_1ElementaryStreamDescriptor-members.html index 3ef18ea580..5082672d5a 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 65970a9708..ed0a06e835 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 c5fad94368..1db2e568a8 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 81f63a675d..c873fbf09f 100644 --- a/docs/dc/da1/classshaka_1_1MpdBuilder.html +++ b/docs/dc/da1/classshaka_1_1MpdBuilder.html @@ -184,7 +184,7 @@ class DynamicMpdBuilderTes -

Definition at line 401 of file mpd_builder.cc.

+

Definition at line 402 of file mpd_builder.cc.

@@ -219,7 +219,7 @@ class DynamicMpdBuilderTes
Returns
The new adaptation set, which is owned by this instance.
-

Definition at line 413 of file mpd_builder.cc.

+

Definition at line 414 of file mpd_builder.cc.

@@ -244,7 +244,7 @@ class DynamicMpdBuilderTes -

Definition at line 409 of file mpd_builder.cc.

+

Definition at line 410 of file mpd_builder.cc.

@@ -288,7 +288,7 @@ class DynamicMpdBuilderTes -

Definition at line 641 of file mpd_builder.cc.

+

Definition at line 647 of file mpd_builder.cc.

@@ -322,7 +322,7 @@ class DynamicMpdBuilderTes
Returns
true on success, false otherwise.
-

Definition at line 428 of file mpd_builder.cc.

+

Definition at line 429 of file mpd_builder.cc.

@@ -374,7 +374,7 @@ class DynamicMpdBuilderTes
Returns
true on success, false otherwise.
-

Definition at line 423 of file mpd_builder.cc.

+

Definition at line 424 of file mpd_builder.cc.

@@ -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 2b8abbeae1..25d6c04408 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 df81b66771..a0d77a9be5 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 4b8a64c185..ecae1d3a6d 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 f75df94999..417026b2e1 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 fb57efe870..cbc0573161 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 fbc77ef9a0..2a17ea5246 100644 --- a/docs/dc/dd9/rsa__key_8cc_source.html +++ b/docs/dc/dd9/rsa__key_8cc_source.html @@ -350,7 +350,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/ddf/structshaka_1_1media_1_1mp4_1_1Media.html b/docs/dc/ddf/structshaka_1_1media_1_1mp4_1_1Media.html index a6f8ecc7b6..deb8ca79c9 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 0554044e72..871d300aed 100644 --- a/docs/dc/ddf/udp__file__posix_8cc_source.html +++ b/docs/dc/ddf/udp__file__posix_8cc_source.html @@ -322,7 +322,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/de1/structshaka_1_1SegmentInfo.html b/docs/dc/de1/structshaka_1_1SegmentInfo.html index 6edc5cea33..5f655536d4 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 4005518e73..91d08bc8ab 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 @@ -110,7 +110,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 f40b106bbe..7f57550333 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 35013795c6..f9dca0107b 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 38d462a816..7583d0643e 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 ec8e3b2ed4..d7aa82ff71 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 4b70a5ceed..b25dfc7920 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 @@ -403,7 +403,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 fe43408da6..d8b44ea8bc 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 @@ -128,7 +128,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 b484a6c402..78427e7a95 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 693e7910f3..c74f51c90c 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 4d9f7d99ca..09a9f21a64 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 8a3655f79b..ad0c5276f5 100644 --- a/docs/dd/d11/mpd__builder_8cc_source.html +++ b/docs/dd/d11/mpd__builder_8cc_source.html @@ -118,1392 +118,1398 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
29 #include "packager/mpd/base/language_utils.h"
30 #include "packager/mpd/base/mpd_utils.h"
31 #include "packager/mpd/base/xml/xml_node.h"
-
32 
-
33 namespace shaka {
-
34 
-
35 using base::FilePath;
-
36 using xml::XmlNode;
-
37 using xml::RepresentationXmlNode;
-
38 using xml::AdaptationSetXmlNode;
-
39 
-
40 namespace {
-
41 
-
42 const int kAdaptationSetGroupNotSet = -1;
-
43 
-
44 AdaptationSet::Role MediaInfoTextTypeToRole(
-
45  MediaInfo::TextInfo::TextType type) {
-
46  switch (type) {
-
47  case MediaInfo::TextInfo::UNKNOWN:
-
48  LOG(WARNING) << "Unknown text type, assuming subtitle.";
-
49  return AdaptationSet::kRoleSubtitle;
-
50  case MediaInfo::TextInfo::CAPTION:
-
51  return AdaptationSet::kRoleCaption;
-
52  case MediaInfo::TextInfo::SUBTITLE:
-
53  return AdaptationSet::kRoleSubtitle;
-
54  default:
-
55  NOTREACHED() << "Unknown MediaInfo TextType: " << type
-
56  << " assuming subtitle.";
-
57  return AdaptationSet::kRoleSubtitle;
-
58  }
-
59 }
-
60 
-
61 std::string GetMimeType(const std::string& prefix,
-
62  MediaInfo::ContainerType container_type) {
-
63  switch (container_type) {
-
64  case MediaInfo::CONTAINER_MP4:
-
65  return prefix + "/mp4";
-
66  case MediaInfo::CONTAINER_MPEG2_TS:
-
67  // NOTE: DASH MPD spec uses lowercase but RFC3555 says uppercase.
-
68  return prefix + "/MP2T";
-
69  case MediaInfo::CONTAINER_WEBM:
-
70  return prefix + "/webm";
-
71  default:
-
72  break;
-
73  }
-
74 
-
75  // Unsupported container types should be rejected/handled by the caller.
-
76  LOG(ERROR) << "Unrecognized container type: " << container_type;
-
77  return std::string();
-
78 }
-
79 
-
80 void AddMpdNameSpaceInfo(XmlNode* mpd) {
-
81  DCHECK(mpd);
-
82 
-
83  static const char kXmlNamespace[] = "urn:mpeg:dash:schema:mpd:2011";
-
84  static const char kXmlNamespaceXsi[] =
-
85  "http://www.w3.org/2001/XMLSchema-instance";
-
86  static const char kXmlNamespaceXlink[] = "http://www.w3.org/1999/xlink";
-
87  static const char kDashSchemaMpd2011[] =
-
88  "urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd";
-
89  static const char kCencNamespace[] = "urn:mpeg:cenc:2013";
-
90 
-
91  mpd->SetStringAttribute("xmlns", kXmlNamespace);
-
92  mpd->SetStringAttribute("xmlns:xsi", kXmlNamespaceXsi);
-
93  mpd->SetStringAttribute("xmlns:xlink", kXmlNamespaceXlink);
-
94  mpd->SetStringAttribute("xsi:schemaLocation", kDashSchemaMpd2011);
-
95  mpd->SetStringAttribute("xmlns:cenc", kCencNamespace);
-
96 }
-
97 
-
98 bool IsPeriodNode(xmlNodePtr node) {
-
99  DCHECK(node);
-
100  int kEqual = 0;
-
101  return xmlStrcmp(node->name, reinterpret_cast<const xmlChar*>("Period")) ==
-
102  kEqual;
-
103 }
-
104 
-
105 // Find the first <Period> element. This does not recurse down the tree,
-
106 // only checks direct children. Returns the pointer to Period element on
-
107 // success, otherwise returns false.
-
108 // As noted here, we must traverse.
-
109 // http://www.xmlsoft.org/tutorial/ar01s04.html
-
110 xmlNodePtr FindPeriodNode(XmlNode* xml_node) {
-
111  for (xmlNodePtr node = xml_node->GetRawPtr()->xmlChildrenNode; node != NULL;
-
112  node = node->next) {
-
113  if (IsPeriodNode(node))
-
114  return node;
-
115  }
-
116 
-
117  return NULL;
-
118 }
-
119 
-
120 bool Positive(double d) {
-
121  return d > 0.0;
-
122 }
-
123 
-
124 // Return current time in XML DateTime format. The value is in UTC, so the
-
125 // string ends with a 'Z'.
-
126 std::string XmlDateTimeNowWithOffset(
-
127  int32_t offset_seconds,
-
128  base::Clock* clock) {
-
129  base::Time time = clock->Now();
-
130  time += base::TimeDelta::FromSeconds(offset_seconds);
-
131  base::Time::Exploded time_exploded;
-
132  time.UTCExplode(&time_exploded);
-
133 
-
134  return base::StringPrintf("%4d-%02d-%02dT%02d:%02d:%02dZ", time_exploded.year,
-
135  time_exploded.month, time_exploded.day_of_month,
-
136  time_exploded.hour, time_exploded.minute,
-
137  time_exploded.second);
-
138 }
-
139 
-
140 void SetIfPositive(const char* attr_name, double value, XmlNode* mpd) {
-
141  if (Positive(value)) {
-
142  mpd->SetStringAttribute(attr_name, SecondsToXmlDuration(value));
-
143  }
-
144 }
-
145 
-
146 uint32_t GetTimeScale(const MediaInfo& media_info) {
-
147  if (media_info.has_reference_time_scale()) {
-
148  return media_info.reference_time_scale();
-
149  }
-
150 
-
151  if (media_info.has_video_info()) {
-
152  return media_info.video_info().time_scale();
-
153  }
-
154 
-
155  if (media_info.has_audio_info()) {
-
156  return media_info.audio_info().time_scale();
-
157  }
-
158 
-
159  LOG(WARNING) << "No timescale specified, using 1 as timescale.";
-
160  return 1;
-
161 }
-
162 
-
163 uint64_t LastSegmentStartTime(const SegmentInfo& segment_info) {
-
164  return segment_info.start_time + segment_info.duration * segment_info.repeat;
-
165 }
-
166 
-
167 // This is equal to |segment_info| end time
-
168 uint64_t LastSegmentEndTime(const SegmentInfo& segment_info) {
-
169  return segment_info.start_time +
-
170  segment_info.duration * (segment_info.repeat + 1);
-
171 }
-
172 
-
173 uint64_t LatestSegmentStartTime(const std::list<SegmentInfo>& segments) {
-
174  DCHECK(!segments.empty());
-
175  const SegmentInfo& latest_segment = segments.back();
-
176  return LastSegmentStartTime(latest_segment);
-
177 }
-
178 
-
179 // Given |timeshift_limit|, finds out the number of segments that are no longer
-
180 // valid and should be removed from |segment_info|.
-
181 int SearchTimedOutRepeatIndex(uint64_t timeshift_limit,
-
182  const SegmentInfo& segment_info) {
-
183  DCHECK_LE(timeshift_limit, LastSegmentEndTime(segment_info));
-
184  if (timeshift_limit < segment_info.start_time)
-
185  return 0;
-
186 
-
187  return (timeshift_limit - segment_info.start_time) / segment_info.duration;
-
188 }
-
189 
-
190 // Overload this function to support different types of |output|.
-
191 // Note that this could be done by call MpdBuilder::ToString() and use the
-
192 // result to write to a file, it requires an extra copy.
-
193 bool WriteXmlCharArrayToOutput(xmlChar* doc,
-
194  int doc_size,
-
195  std::string* output) {
-
196  DCHECK(doc);
-
197  DCHECK(output);
-
198  output->assign(doc, doc + doc_size);
-
199  return true;
-
200 }
-
201 
-
202 bool WriteXmlCharArrayToOutput(xmlChar* doc,
-
203  int doc_size,
-
204  media::File* output) {
-
205  DCHECK(doc);
-
206  DCHECK(output);
-
207  if (output->Write(doc, doc_size) < doc_size)
-
208  return false;
-
209 
-
210  return output->Flush();
-
211 }
-
212 
-
213 std::string MakePathRelative(const std::string& path,
-
214  const std::string& mpd_dir) {
-
215  return (path.find(mpd_dir) == 0) ? path.substr(mpd_dir.size()) : path;
-
216 }
-
217 
-
218 // Check whether the video info has width and height.
-
219 // DASH IOP also requires several other fields for video representations, namely
-
220 // width, height, framerate, and sar.
-
221 bool HasRequiredVideoFields(const MediaInfo_VideoInfo& video_info) {
-
222  if (!video_info.has_height() || !video_info.has_width()) {
-
223  LOG(ERROR)
-
224  << "Width and height are required fields for generating a valid MPD.";
-
225  return false;
-
226  }
-
227  // These fields are not required for a valid MPD, but required for DASH IOP
-
228  // compliant MPD. MpdBuilder can keep generating MPDs without these fields.
-
229  LOG_IF(WARNING, !video_info.has_time_scale())
-
230  << "Video info does not contain timescale required for "
-
231  "calculating framerate. @frameRate is required for DASH IOP.";
-
232  LOG_IF(WARNING, !video_info.has_frame_duration())
-
233  << "Video info does not contain frame duration required "
-
234  "for calculating framerate. @frameRate is required for DASH IOP.";
-
235  LOG_IF(WARNING, !video_info.has_pixel_width())
-
236  << "Video info does not contain pixel_width to calculate the sample "
-
237  "aspect ratio required for DASH IOP.";
-
238  LOG_IF(WARNING, !video_info.has_pixel_height())
-
239  << "Video info does not contain pixel_height to calculate the sample "
-
240  "aspect ratio required for DASH IOP.";
-
241  return true;
-
242 }
-
243 
-
244 // Returns the picture aspect ratio string e.g. "16:9", "4:3".
-
245 // "Reducing the quotient to minimal form" does not work well in practice as
-
246 // there may be some rounding performed in the input, e.g. the resolution of
-
247 // 480p is 854:480 for 16:9 aspect ratio, can only be reduced to 427:240.
-
248 // The algorithm finds out the pair of integers, num and den, where num / den is
-
249 // the closest ratio to scaled_width / scaled_height, by looping den through
-
250 // common values.
-
251 std::string GetPictureAspectRatio(uint32_t width,
-
252  uint32_t height,
-
253  uint32_t pixel_width,
-
254  uint32_t pixel_height) {
-
255  const uint32_t scaled_width = pixel_width * width;
-
256  const uint32_t scaled_height = pixel_height * height;
-
257  const double par = static_cast<double>(scaled_width) / scaled_height;
-
258 
-
259  // Typical aspect ratios have par_y less than or equal to 19:
-
260  // https://en.wikipedia.org/wiki/List_of_common_resolutions
-
261  const uint32_t kLargestPossibleParY = 19;
-
262 
-
263  uint32_t par_num = 0;
-
264  uint32_t par_den = 0;
-
265  double min_error = 1.0;
-
266  for (uint32_t den = 1; den <= kLargestPossibleParY; ++den) {
-
267  uint32_t num = par * den + 0.5;
-
268  double error = fabs(par - static_cast<double>(num) / den);
-
269  if (error < min_error) {
-
270  min_error = error;
-
271  par_num = num;
-
272  par_den = den;
-
273  if (error == 0) break;
-
274  }
-
275  }
-
276  VLOG(2) << "width*pix_width : height*pixel_height (" << scaled_width << ":"
-
277  << scaled_height << ") reduced to " << par_num << ":" << par_den
-
278  << " with error " << min_error << ".";
-
279 
-
280  return base::IntToString(par_num) + ":" + base::IntToString(par_den);
-
281 }
-
282 
-
283 // Adds an entry to picture_aspect_ratio if the size of picture_aspect_ratio is
-
284 // less than 2 and video_info has both pixel width and pixel height.
-
285 void AddPictureAspectRatio(
-
286  const MediaInfo::VideoInfo& video_info,
-
287  std::set<std::string>* picture_aspect_ratio) {
-
288  // If there are more than one entries in picture_aspect_ratio, the @par
-
289  // attribute cannot be set, so skip.
-
290  if (picture_aspect_ratio->size() > 1)
-
291  return;
-
292 
-
293  if (video_info.width() == 0 || video_info.height() == 0 ||
-
294  video_info.pixel_width() == 0 || video_info.pixel_height() == 0) {
-
295  // If there is even one Representation without a @sar attribute, @par cannot
-
296  // be calculated.
-
297  // Just populate the set with at least 2 bogus strings so that further call
-
298  // to this function will bail out immediately.
-
299  picture_aspect_ratio->insert("bogus");
-
300  picture_aspect_ratio->insert("entries");
-
301  return;
-
302  }
-
303 
-
304  const std::string par = GetPictureAspectRatio(
-
305  video_info.width(), video_info.height(),
-
306  video_info.pixel_width(), video_info.pixel_height());
-
307  DVLOG(1) << "Setting par as: " << par
-
308  << " for video with width: " << video_info.width()
-
309  << " height: " << video_info.height()
-
310  << " pixel_width: " << video_info.pixel_width() << " pixel_height; "
-
311  << video_info.pixel_height();
-
312  picture_aspect_ratio->insert(par);
-
313 }
-
314 
-
315 std::string RoleToText(AdaptationSet::Role role) {
-
316  // Using switch so that the compiler can detect whether there is a case that's
-
317  // not being handled.
-
318  switch (role) {
-
319  case AdaptationSet::kRoleCaption:
-
320  return "caption";
-
321  case AdaptationSet::kRoleSubtitle:
-
322  return "subtitle";
-
323  case AdaptationSet::kRoleMain:
-
324  return "main";
-
325  case AdaptationSet::kRoleAlternate:
-
326  return "alternate";
-
327  case AdaptationSet::kRoleSupplementary:
-
328  return "supplementary";
-
329  case AdaptationSet::kRoleCommentary:
-
330  return "commentary";
-
331  case AdaptationSet::kRoleDub:
-
332  return "dub";
-
333  default:
-
334  NOTREACHED();
-
335  return "";
-
336  }
-
337 
-
338  NOTREACHED();
-
339  return "";
-
340 }
-
341 
-
342 // Spooky static initialization/cleanup of libxml.
-
343 class LibXmlInitializer {
-
344  public:
-
345  LibXmlInitializer() : initialized_(false) {
-
346  base::AutoLock lock(lock_);
-
347  if (!initialized_) {
-
348  xmlInitParser();
-
349  initialized_ = true;
-
350  }
-
351  }
-
352 
-
353  ~LibXmlInitializer() {
-
354  base::AutoLock lock(lock_);
-
355  if (initialized_) {
-
356  xmlCleanupParser();
-
357  initialized_ = false;
-
358  }
-
359  }
-
360 
-
361  private:
-
362  base::Lock lock_;
-
363  bool initialized_;
-
364 
-
365  DISALLOW_COPY_AND_ASSIGN(LibXmlInitializer);
-
366 };
-
367 
-
368 class RepresentationStateChangeListenerImpl
-
369  : public RepresentationStateChangeListener {
-
370  public:
-
371  // |adaptation_set| is not owned by this class.
-
372  RepresentationStateChangeListenerImpl(uint32_t representation_id,
-
373  AdaptationSet* adaptation_set)
-
374  : representation_id_(representation_id), adaptation_set_(adaptation_set) {
-
375  DCHECK(adaptation_set_);
-
376  }
-
377  ~RepresentationStateChangeListenerImpl() override {}
-
378 
-
379  // RepresentationStateChangeListener implementation.
-
380  void OnNewSegmentForRepresentation(uint64_t start_time,
-
381  uint64_t duration) override {
-
382  adaptation_set_->OnNewSegmentForRepresentation(representation_id_,
-
383  start_time, duration);
-
384  }
-
385 
-
386  void OnSetFrameRateForRepresentation(uint32_t frame_duration,
-
387  uint32_t timescale) override {
-
388  adaptation_set_->OnSetFrameRateForRepresentation(representation_id_,
-
389  frame_duration, timescale);
-
390  }
-
391 
-
392  private:
-
393  const uint32_t representation_id_;
-
394  AdaptationSet* const adaptation_set_;
-
395 
-
396  DISALLOW_COPY_AND_ASSIGN(RepresentationStateChangeListenerImpl);
-
397 };
-
398 
-
399 } // namespace
-
400 
-
401 MpdBuilder::MpdBuilder(MpdType type, const MpdOptions& mpd_options)
-
402  : type_(type),
-
403  mpd_options_(mpd_options),
-
404  adaptation_sets_deleter_(&adaptation_sets_),
-
405  clock_(new base::DefaultClock()) {}
-
406 
-
407 MpdBuilder::~MpdBuilder() {}
-
408 
-
409 void MpdBuilder::AddBaseUrl(const std::string& base_url) {
-
410  base_urls_.push_back(base_url);
-
411 }
-
412 
-
413 AdaptationSet* MpdBuilder::AddAdaptationSet(const std::string& lang) {
-
414  scoped_ptr<AdaptationSet> adaptation_set(
-
415  new AdaptationSet(adaptation_set_counter_.GetNext(), lang, mpd_options_,
-
416  type_, &representation_counter_));
-
417 
-
418  DCHECK(adaptation_set);
-
419  adaptation_sets_.push_back(adaptation_set.get());
-
420  return adaptation_set.release();
-
421 }
-
422 
- -
424  DCHECK(output_file);
-
425  return WriteMpdToOutput(output_file);
-
426 }
-
427 
-
428 bool MpdBuilder::ToString(std::string* output) {
-
429  DCHECK(output);
-
430  return WriteMpdToOutput(output);
-
431 }
-
432 template <typename OutputType>
-
433 bool MpdBuilder::WriteMpdToOutput(OutputType* output) {
-
434  static LibXmlInitializer lib_xml_initializer;
-
435 
-
436  xml::scoped_xml_ptr<xmlDoc> doc(GenerateMpd());
-
437  if (!doc.get())
-
438  return false;
-
439 
-
440  static const int kNiceFormat = 1;
-
441  int doc_str_size = 0;
-
442  xmlChar* doc_str = NULL;
-
443  xmlDocDumpFormatMemoryEnc(doc.get(), &doc_str, &doc_str_size, "UTF-8",
-
444  kNiceFormat);
-
445 
-
446  bool result = WriteXmlCharArrayToOutput(doc_str, doc_str_size, output);
-
447  xmlFree(doc_str);
-
448 
-
449  // Cleanup, free the doc.
-
450  doc.reset();
-
451  return result;
-
452 }
-
453 
-
454 xmlDocPtr MpdBuilder::GenerateMpd() {
-
455  // Setup nodes.
-
456  static const char kXmlVersion[] = "1.0";
-
457  xml::scoped_xml_ptr<xmlDoc> doc(xmlNewDoc(BAD_CAST kXmlVersion));
-
458  XmlNode mpd("MPD");
-
459 
-
460  // Iterate thru AdaptationSets and add them to one big Period element.
-
461  XmlNode period("Period");
-
462 
-
463  // Always set id=0 for now. Since this class can only generate one Period
-
464  // at the moment, just use a constant.
-
465  // Required for 'dynamic' MPDs.
-
466  period.SetId(0);
-
467  std::list<AdaptationSet*>::iterator adaptation_sets_it =
-
468  adaptation_sets_.begin();
-
469  for (; adaptation_sets_it != adaptation_sets_.end(); ++adaptation_sets_it) {
-
470  xml::scoped_xml_ptr<xmlNode> child((*adaptation_sets_it)->GetXml());
-
471  if (!child.get() || !period.AddChild(child.Pass()))
-
472  return NULL;
-
473  }
-
474 
-
475  // Add baseurls to MPD.
-
476  std::list<std::string>::const_iterator base_urls_it = base_urls_.begin();
-
477  for (; base_urls_it != base_urls_.end(); ++base_urls_it) {
-
478  XmlNode base_url("BaseURL");
-
479  base_url.SetContent(*base_urls_it);
-
480 
-
481  if (!mpd.AddChild(base_url.PassScopedPtr()))
-
482  return NULL;
-
483  }
-
484 
-
485  if (type_ == kDynamic) {
-
486  // This is the only Period and it is a regular period.
-
487  period.SetStringAttribute("start", "PT0S");
-
488  }
-
489 
-
490  if (!mpd.AddChild(period.PassScopedPtr()))
-
491  return NULL;
-
492 
-
493  AddMpdNameSpaceInfo(&mpd);
-
494  AddCommonMpdInfo(&mpd);
-
495  switch (type_) {
-
496  case kStatic:
-
497  AddStaticMpdInfo(&mpd);
-
498  break;
-
499  case kDynamic:
-
500  AddDynamicMpdInfo(&mpd);
-
501  break;
-
502  default:
-
503  NOTREACHED() << "Unknown MPD type: " << type_;
-
504  break;
-
505  }
-
506 
-
507  DCHECK(doc);
-
508  std::string version_string =
-
509  "Generated with https://github.com/google/shaka-packager version " +
-
510  mpd_options_.packager_version_string;
-
511  xml::scoped_xml_ptr<xmlNode> comment(
-
512  xmlNewDocComment(doc.get(), BAD_CAST version_string.c_str()));
-
513  xmlDocSetRootElement(doc.get(), comment.get());
-
514  xmlAddSibling(comment.release(), mpd.Release());
-
515  return doc.release();
-
516 }
-
517 
-
518 void MpdBuilder::AddCommonMpdInfo(XmlNode* mpd_node) {
-
519  if (Positive(mpd_options_.min_buffer_time)) {
-
520  mpd_node->SetStringAttribute(
-
521  "minBufferTime", SecondsToXmlDuration(mpd_options_.min_buffer_time));
-
522  } else {
-
523  LOG(ERROR) << "minBufferTime value not specified.";
-
524  // TODO(tinskip): Propagate error.
-
525  }
-
526 }
-
527 
-
528 void MpdBuilder::AddStaticMpdInfo(XmlNode* mpd_node) {
-
529  DCHECK(mpd_node);
-
530  DCHECK_EQ(MpdBuilder::kStatic, type_);
-
531 
-
532  static const char kStaticMpdType[] = "static";
-
533  static const char kStaticMpdProfile[] =
-
534  "urn:mpeg:dash:profile:isoff-on-demand:2011";
-
535  mpd_node->SetStringAttribute("type", kStaticMpdType);
-
536  mpd_node->SetStringAttribute("profiles", kStaticMpdProfile);
-
537  mpd_node->SetStringAttribute(
-
538  "mediaPresentationDuration",
-
539  SecondsToXmlDuration(GetStaticMpdDuration(mpd_node)));
-
540 }
-
541 
-
542 void MpdBuilder::AddDynamicMpdInfo(XmlNode* mpd_node) {
-
543  DCHECK(mpd_node);
-
544  DCHECK_EQ(MpdBuilder::kDynamic, type_);
-
545 
-
546  static const char kDynamicMpdType[] = "dynamic";
-
547  static const char kDynamicMpdProfile[] =
-
548  "urn:mpeg:dash:profile:isoff-live:2011";
-
549  mpd_node->SetStringAttribute("type", kDynamicMpdType);
-
550  mpd_node->SetStringAttribute("profiles", kDynamicMpdProfile);
+
32 #include "packager/version/version.h"
+
33 
+
34 namespace shaka {
+
35 
+
36 using base::FilePath;
+
37 using xml::XmlNode;
+
38 using xml::RepresentationXmlNode;
+
39 using xml::AdaptationSetXmlNode;
+
40 
+
41 namespace {
+
42 
+
43 const int kAdaptationSetGroupNotSet = -1;
+
44 
+
45 AdaptationSet::Role MediaInfoTextTypeToRole(
+
46  MediaInfo::TextInfo::TextType type) {
+
47  switch (type) {
+
48  case MediaInfo::TextInfo::UNKNOWN:
+
49  LOG(WARNING) << "Unknown text type, assuming subtitle.";
+
50  return AdaptationSet::kRoleSubtitle;
+
51  case MediaInfo::TextInfo::CAPTION:
+
52  return AdaptationSet::kRoleCaption;
+
53  case MediaInfo::TextInfo::SUBTITLE:
+
54  return AdaptationSet::kRoleSubtitle;
+
55  default:
+
56  NOTREACHED() << "Unknown MediaInfo TextType: " << type
+
57  << " assuming subtitle.";
+
58  return AdaptationSet::kRoleSubtitle;
+
59  }
+
60 }
+
61 
+
62 std::string GetMimeType(const std::string& prefix,
+
63  MediaInfo::ContainerType container_type) {
+
64  switch (container_type) {
+
65  case MediaInfo::CONTAINER_MP4:
+
66  return prefix + "/mp4";
+
67  case MediaInfo::CONTAINER_MPEG2_TS:
+
68  // NOTE: DASH MPD spec uses lowercase but RFC3555 says uppercase.
+
69  return prefix + "/MP2T";
+
70  case MediaInfo::CONTAINER_WEBM:
+
71  return prefix + "/webm";
+
72  default:
+
73  break;
+
74  }
+
75 
+
76  // Unsupported container types should be rejected/handled by the caller.
+
77  LOG(ERROR) << "Unrecognized container type: " << container_type;
+
78  return std::string();
+
79 }
+
80 
+
81 void AddMpdNameSpaceInfo(XmlNode* mpd) {
+
82  DCHECK(mpd);
+
83 
+
84  static const char kXmlNamespace[] = "urn:mpeg:dash:schema:mpd:2011";
+
85  static const char kXmlNamespaceXsi[] =
+
86  "http://www.w3.org/2001/XMLSchema-instance";
+
87  static const char kXmlNamespaceXlink[] = "http://www.w3.org/1999/xlink";
+
88  static const char kDashSchemaMpd2011[] =
+
89  "urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd";
+
90  static const char kCencNamespace[] = "urn:mpeg:cenc:2013";
+
91 
+
92  mpd->SetStringAttribute("xmlns", kXmlNamespace);
+
93  mpd->SetStringAttribute("xmlns:xsi", kXmlNamespaceXsi);
+
94  mpd->SetStringAttribute("xmlns:xlink", kXmlNamespaceXlink);
+
95  mpd->SetStringAttribute("xsi:schemaLocation", kDashSchemaMpd2011);
+
96  mpd->SetStringAttribute("xmlns:cenc", kCencNamespace);
+
97 }
+
98 
+
99 bool IsPeriodNode(xmlNodePtr node) {
+
100  DCHECK(node);
+
101  int kEqual = 0;
+
102  return xmlStrcmp(node->name, reinterpret_cast<const xmlChar*>("Period")) ==
+
103  kEqual;
+
104 }
+
105 
+
106 // Find the first <Period> element. This does not recurse down the tree,
+
107 // only checks direct children. Returns the pointer to Period element on
+
108 // success, otherwise returns false.
+
109 // As noted here, we must traverse.
+
110 // http://www.xmlsoft.org/tutorial/ar01s04.html
+
111 xmlNodePtr FindPeriodNode(XmlNode* xml_node) {
+
112  for (xmlNodePtr node = xml_node->GetRawPtr()->xmlChildrenNode; node != NULL;
+
113  node = node->next) {
+
114  if (IsPeriodNode(node))
+
115  return node;
+
116  }
+
117 
+
118  return NULL;
+
119 }
+
120 
+
121 bool Positive(double d) {
+
122  return d > 0.0;
+
123 }
+
124 
+
125 // Return current time in XML DateTime format. The value is in UTC, so the
+
126 // string ends with a 'Z'.
+
127 std::string XmlDateTimeNowWithOffset(
+
128  int32_t offset_seconds,
+
129  base::Clock* clock) {
+
130  base::Time time = clock->Now();
+
131  time += base::TimeDelta::FromSeconds(offset_seconds);
+
132  base::Time::Exploded time_exploded;
+
133  time.UTCExplode(&time_exploded);
+
134 
+
135  return base::StringPrintf("%4d-%02d-%02dT%02d:%02d:%02dZ", time_exploded.year,
+
136  time_exploded.month, time_exploded.day_of_month,
+
137  time_exploded.hour, time_exploded.minute,
+
138  time_exploded.second);
+
139 }
+
140 
+
141 void SetIfPositive(const char* attr_name, double value, XmlNode* mpd) {
+
142  if (Positive(value)) {
+
143  mpd->SetStringAttribute(attr_name, SecondsToXmlDuration(value));
+
144  }
+
145 }
+
146 
+
147 uint32_t GetTimeScale(const MediaInfo& media_info) {
+
148  if (media_info.has_reference_time_scale()) {
+
149  return media_info.reference_time_scale();
+
150  }
+
151 
+
152  if (media_info.has_video_info()) {
+
153  return media_info.video_info().time_scale();
+
154  }
+
155 
+
156  if (media_info.has_audio_info()) {
+
157  return media_info.audio_info().time_scale();
+
158  }
+
159 
+
160  LOG(WARNING) << "No timescale specified, using 1 as timescale.";
+
161  return 1;
+
162 }
+
163 
+
164 uint64_t LastSegmentStartTime(const SegmentInfo& segment_info) {
+
165  return segment_info.start_time + segment_info.duration * segment_info.repeat;
+
166 }
+
167 
+
168 // This is equal to |segment_info| end time
+
169 uint64_t LastSegmentEndTime(const SegmentInfo& segment_info) {
+
170  return segment_info.start_time +
+
171  segment_info.duration * (segment_info.repeat + 1);
+
172 }
+
173 
+
174 uint64_t LatestSegmentStartTime(const std::list<SegmentInfo>& segments) {
+
175  DCHECK(!segments.empty());
+
176  const SegmentInfo& latest_segment = segments.back();
+
177  return LastSegmentStartTime(latest_segment);
+
178 }
+
179 
+
180 // Given |timeshift_limit|, finds out the number of segments that are no longer
+
181 // valid and should be removed from |segment_info|.
+
182 int SearchTimedOutRepeatIndex(uint64_t timeshift_limit,
+
183  const SegmentInfo& segment_info) {
+
184  DCHECK_LE(timeshift_limit, LastSegmentEndTime(segment_info));
+
185  if (timeshift_limit < segment_info.start_time)
+
186  return 0;
+
187 
+
188  return (timeshift_limit - segment_info.start_time) / segment_info.duration;
+
189 }
+
190 
+
191 // Overload this function to support different types of |output|.
+
192 // Note that this could be done by call MpdBuilder::ToString() and use the
+
193 // result to write to a file, it requires an extra copy.
+
194 bool WriteXmlCharArrayToOutput(xmlChar* doc,
+
195  int doc_size,
+
196  std::string* output) {
+
197  DCHECK(doc);
+
198  DCHECK(output);
+
199  output->assign(doc, doc + doc_size);
+
200  return true;
+
201 }
+
202 
+
203 bool WriteXmlCharArrayToOutput(xmlChar* doc,
+
204  int doc_size,
+
205  media::File* output) {
+
206  DCHECK(doc);
+
207  DCHECK(output);
+
208  if (output->Write(doc, doc_size) < doc_size)
+
209  return false;
+
210 
+
211  return output->Flush();
+
212 }
+
213 
+
214 std::string MakePathRelative(const std::string& path,
+
215  const std::string& mpd_dir) {
+
216  return (path.find(mpd_dir) == 0) ? path.substr(mpd_dir.size()) : path;
+
217 }
+
218 
+
219 // Check whether the video info has width and height.
+
220 // DASH IOP also requires several other fields for video representations, namely
+
221 // width, height, framerate, and sar.
+
222 bool HasRequiredVideoFields(const MediaInfo_VideoInfo& video_info) {
+
223  if (!video_info.has_height() || !video_info.has_width()) {
+
224  LOG(ERROR)
+
225  << "Width and height are required fields for generating a valid MPD.";
+
226  return false;
+
227  }
+
228  // These fields are not required for a valid MPD, but required for DASH IOP
+
229  // compliant MPD. MpdBuilder can keep generating MPDs without these fields.
+
230  LOG_IF(WARNING, !video_info.has_time_scale())
+
231  << "Video info does not contain timescale required for "
+
232  "calculating framerate. @frameRate is required for DASH IOP.";
+
233  LOG_IF(WARNING, !video_info.has_frame_duration())
+
234  << "Video info does not contain frame duration required "
+
235  "for calculating framerate. @frameRate is required for DASH IOP.";
+
236  LOG_IF(WARNING, !video_info.has_pixel_width())
+
237  << "Video info does not contain pixel_width to calculate the sample "
+
238  "aspect ratio required for DASH IOP.";
+
239  LOG_IF(WARNING, !video_info.has_pixel_height())
+
240  << "Video info does not contain pixel_height to calculate the sample "
+
241  "aspect ratio required for DASH IOP.";
+
242  return true;
+
243 }
+
244 
+
245 // Returns the picture aspect ratio string e.g. "16:9", "4:3".
+
246 // "Reducing the quotient to minimal form" does not work well in practice as
+
247 // there may be some rounding performed in the input, e.g. the resolution of
+
248 // 480p is 854:480 for 16:9 aspect ratio, can only be reduced to 427:240.
+
249 // The algorithm finds out the pair of integers, num and den, where num / den is
+
250 // the closest ratio to scaled_width / scaled_height, by looping den through
+
251 // common values.
+
252 std::string GetPictureAspectRatio(uint32_t width,
+
253  uint32_t height,
+
254  uint32_t pixel_width,
+
255  uint32_t pixel_height) {
+
256  const uint32_t scaled_width = pixel_width * width;
+
257  const uint32_t scaled_height = pixel_height * height;
+
258  const double par = static_cast<double>(scaled_width) / scaled_height;
+
259 
+
260  // Typical aspect ratios have par_y less than or equal to 19:
+
261  // https://en.wikipedia.org/wiki/List_of_common_resolutions
+
262  const uint32_t kLargestPossibleParY = 19;
+
263 
+
264  uint32_t par_num = 0;
+
265  uint32_t par_den = 0;
+
266  double min_error = 1.0;
+
267  for (uint32_t den = 1; den <= kLargestPossibleParY; ++den) {
+
268  uint32_t num = par * den + 0.5;
+
269  double error = fabs(par - static_cast<double>(num) / den);
+
270  if (error < min_error) {
+
271  min_error = error;
+
272  par_num = num;
+
273  par_den = den;
+
274  if (error == 0) break;
+
275  }
+
276  }
+
277  VLOG(2) << "width*pix_width : height*pixel_height (" << scaled_width << ":"
+
278  << scaled_height << ") reduced to " << par_num << ":" << par_den
+
279  << " with error " << min_error << ".";
+
280 
+
281  return base::IntToString(par_num) + ":" + base::IntToString(par_den);
+
282 }
+
283 
+
284 // Adds an entry to picture_aspect_ratio if the size of picture_aspect_ratio is
+
285 // less than 2 and video_info has both pixel width and pixel height.
+
286 void AddPictureAspectRatio(
+
287  const MediaInfo::VideoInfo& video_info,
+
288  std::set<std::string>* picture_aspect_ratio) {
+
289  // If there are more than one entries in picture_aspect_ratio, the @par
+
290  // attribute cannot be set, so skip.
+
291  if (picture_aspect_ratio->size() > 1)
+
292  return;
+
293 
+
294  if (video_info.width() == 0 || video_info.height() == 0 ||
+
295  video_info.pixel_width() == 0 || video_info.pixel_height() == 0) {
+
296  // If there is even one Representation without a @sar attribute, @par cannot
+
297  // be calculated.
+
298  // Just populate the set with at least 2 bogus strings so that further call
+
299  // to this function will bail out immediately.
+
300  picture_aspect_ratio->insert("bogus");
+
301  picture_aspect_ratio->insert("entries");
+
302  return;
+
303  }
+
304 
+
305  const std::string par = GetPictureAspectRatio(
+
306  video_info.width(), video_info.height(),
+
307  video_info.pixel_width(), video_info.pixel_height());
+
308  DVLOG(1) << "Setting par as: " << par
+
309  << " for video with width: " << video_info.width()
+
310  << " height: " << video_info.height()
+
311  << " pixel_width: " << video_info.pixel_width() << " pixel_height; "
+
312  << video_info.pixel_height();
+
313  picture_aspect_ratio->insert(par);
+
314 }
+
315 
+
316 std::string RoleToText(AdaptationSet::Role role) {
+
317  // Using switch so that the compiler can detect whether there is a case that's
+
318  // not being handled.
+
319  switch (role) {
+
320  case AdaptationSet::kRoleCaption:
+
321  return "caption";
+
322  case AdaptationSet::kRoleSubtitle:
+
323  return "subtitle";
+
324  case AdaptationSet::kRoleMain:
+
325  return "main";
+
326  case AdaptationSet::kRoleAlternate:
+
327  return "alternate";
+
328  case AdaptationSet::kRoleSupplementary:
+
329  return "supplementary";
+
330  case AdaptationSet::kRoleCommentary:
+
331  return "commentary";
+
332  case AdaptationSet::kRoleDub:
+
333  return "dub";
+
334  default:
+
335  NOTREACHED();
+
336  return "";
+
337  }
+
338 
+
339  NOTREACHED();
+
340  return "";
+
341 }
+
342 
+
343 // Spooky static initialization/cleanup of libxml.
+
344 class LibXmlInitializer {
+
345  public:
+
346  LibXmlInitializer() : initialized_(false) {
+
347  base::AutoLock lock(lock_);
+
348  if (!initialized_) {
+
349  xmlInitParser();
+
350  initialized_ = true;
+
351  }
+
352  }
+
353 
+
354  ~LibXmlInitializer() {
+
355  base::AutoLock lock(lock_);
+
356  if (initialized_) {
+
357  xmlCleanupParser();
+
358  initialized_ = false;
+
359  }
+
360  }
+
361 
+
362  private:
+
363  base::Lock lock_;
+
364  bool initialized_;
+
365 
+
366  DISALLOW_COPY_AND_ASSIGN(LibXmlInitializer);
+
367 };
+
368 
+
369 class RepresentationStateChangeListenerImpl
+
370  : public RepresentationStateChangeListener {
+
371  public:
+
372  // |adaptation_set| is not owned by this class.
+
373  RepresentationStateChangeListenerImpl(uint32_t representation_id,
+
374  AdaptationSet* adaptation_set)
+
375  : representation_id_(representation_id), adaptation_set_(adaptation_set) {
+
376  DCHECK(adaptation_set_);
+
377  }
+
378  ~RepresentationStateChangeListenerImpl() override {}
+
379 
+
380  // RepresentationStateChangeListener implementation.
+
381  void OnNewSegmentForRepresentation(uint64_t start_time,
+
382  uint64_t duration) override {
+
383  adaptation_set_->OnNewSegmentForRepresentation(representation_id_,
+
384  start_time, duration);
+
385  }
+
386 
+
387  void OnSetFrameRateForRepresentation(uint32_t frame_duration,
+
388  uint32_t timescale) override {
+
389  adaptation_set_->OnSetFrameRateForRepresentation(representation_id_,
+
390  frame_duration, timescale);
+
391  }
+
392 
+
393  private:
+
394  const uint32_t representation_id_;
+
395  AdaptationSet* const adaptation_set_;
+
396 
+
397  DISALLOW_COPY_AND_ASSIGN(RepresentationStateChangeListenerImpl);
+
398 };
+
399 
+
400 } // namespace
+
401 
+
402 MpdBuilder::MpdBuilder(MpdType type, const MpdOptions& mpd_options)
+
403  : type_(type),
+
404  mpd_options_(mpd_options),
+
405  adaptation_sets_deleter_(&adaptation_sets_),
+
406  clock_(new base::DefaultClock()) {}
+
407 
+
408 MpdBuilder::~MpdBuilder() {}
+
409 
+
410 void MpdBuilder::AddBaseUrl(const std::string& base_url) {
+
411  base_urls_.push_back(base_url);
+
412 }
+
413 
+
414 AdaptationSet* MpdBuilder::AddAdaptationSet(const std::string& lang) {
+
415  scoped_ptr<AdaptationSet> adaptation_set(
+
416  new AdaptationSet(adaptation_set_counter_.GetNext(), lang, mpd_options_,
+
417  type_, &representation_counter_));
+
418 
+
419  DCHECK(adaptation_set);
+
420  adaptation_sets_.push_back(adaptation_set.get());
+
421  return adaptation_set.release();
+
422 }
+
423 
+ +
425  DCHECK(output_file);
+
426  return WriteMpdToOutput(output_file);
+
427 }
+
428 
+
429 bool MpdBuilder::ToString(std::string* output) {
+
430  DCHECK(output);
+
431  return WriteMpdToOutput(output);
+
432 }
+
433 template <typename OutputType>
+
434 bool MpdBuilder::WriteMpdToOutput(OutputType* output) {
+
435  static LibXmlInitializer lib_xml_initializer;
+
436 
+
437  xml::scoped_xml_ptr<xmlDoc> doc(GenerateMpd());
+
438  if (!doc.get())
+
439  return false;
+
440 
+
441  static const int kNiceFormat = 1;
+
442  int doc_str_size = 0;
+
443  xmlChar* doc_str = NULL;
+
444  xmlDocDumpFormatMemoryEnc(doc.get(), &doc_str, &doc_str_size, "UTF-8",
+
445  kNiceFormat);
+
446 
+
447  bool result = WriteXmlCharArrayToOutput(doc_str, doc_str_size, output);
+
448  xmlFree(doc_str);
+
449 
+
450  // Cleanup, free the doc.
+
451  doc.reset();
+
452  return result;
+
453 }
+
454 
+
455 xmlDocPtr MpdBuilder::GenerateMpd() {
+
456  // Setup nodes.
+
457  static const char kXmlVersion[] = "1.0";
+
458  xml::scoped_xml_ptr<xmlDoc> doc(xmlNewDoc(BAD_CAST kXmlVersion));
+
459  XmlNode mpd("MPD");
+
460 
+
461  // Iterate thru AdaptationSets and add them to one big Period element.
+
462  XmlNode period("Period");
+
463 
+
464  // Always set id=0 for now. Since this class can only generate one Period
+
465  // at the moment, just use a constant.
+
466  // Required for 'dynamic' MPDs.
+
467  period.SetId(0);
+
468  std::list<AdaptationSet*>::iterator adaptation_sets_it =
+
469  adaptation_sets_.begin();
+
470  for (; adaptation_sets_it != adaptation_sets_.end(); ++adaptation_sets_it) {
+
471  xml::scoped_xml_ptr<xmlNode> child((*adaptation_sets_it)->GetXml());
+
472  if (!child.get() || !period.AddChild(child.Pass()))
+
473  return NULL;
+
474  }
+
475 
+
476  // Add baseurls to MPD.
+
477  std::list<std::string>::const_iterator base_urls_it = base_urls_.begin();
+
478  for (; base_urls_it != base_urls_.end(); ++base_urls_it) {
+
479  XmlNode base_url("BaseURL");
+
480  base_url.SetContent(*base_urls_it);
+
481 
+
482  if (!mpd.AddChild(base_url.PassScopedPtr()))
+
483  return NULL;
+
484  }
+
485 
+
486  if (type_ == kDynamic) {
+
487  // This is the only Period and it is a regular period.
+
488  period.SetStringAttribute("start", "PT0S");
+
489  }
+
490 
+
491  if (!mpd.AddChild(period.PassScopedPtr()))
+
492  return NULL;
+
493 
+
494  AddMpdNameSpaceInfo(&mpd);
+
495  AddCommonMpdInfo(&mpd);
+
496  switch (type_) {
+
497  case kStatic:
+
498  AddStaticMpdInfo(&mpd);
+
499  break;
+
500  case kDynamic:
+
501  AddDynamicMpdInfo(&mpd);
+
502  break;
+
503  default:
+
504  NOTREACHED() << "Unknown MPD type: " << type_;
+
505  break;
+
506  }
+
507 
+
508  DCHECK(doc);
+
509  const std::string version = GetPackagerVersion();
+
510  if (!version.empty()) {
+
511  std::string version_string =
+
512  base::StringPrintf("Generated with %s version %s",
+
513  GetPackagerProjectUrl().c_str(), version.c_str());
+
514  xml::scoped_xml_ptr<xmlNode> comment(
+
515  xmlNewDocComment(doc.get(), BAD_CAST version_string.c_str()));
+
516  xmlDocSetRootElement(doc.get(), comment.get());
+
517  xmlAddSibling(comment.release(), mpd.Release());
+
518  } else {
+
519  xmlDocSetRootElement(doc.get(), mpd.Release());
+
520  }
+
521  return doc.release();
+
522 }
+
523 
+
524 void MpdBuilder::AddCommonMpdInfo(XmlNode* mpd_node) {
+
525  if (Positive(mpd_options_.min_buffer_time)) {
+
526  mpd_node->SetStringAttribute(
+
527  "minBufferTime", SecondsToXmlDuration(mpd_options_.min_buffer_time));
+
528  } else {
+
529  LOG(ERROR) << "minBufferTime value not specified.";
+
530  // TODO(tinskip): Propagate error.
+
531  }
+
532 }
+
533 
+
534 void MpdBuilder::AddStaticMpdInfo(XmlNode* mpd_node) {
+
535  DCHECK(mpd_node);
+
536  DCHECK_EQ(MpdBuilder::kStatic, type_);
+
537 
+
538  static const char kStaticMpdType[] = "static";
+
539  static const char kStaticMpdProfile[] =
+
540  "urn:mpeg:dash:profile:isoff-on-demand:2011";
+
541  mpd_node->SetStringAttribute("type", kStaticMpdType);
+
542  mpd_node->SetStringAttribute("profiles", kStaticMpdProfile);
+
543  mpd_node->SetStringAttribute(
+
544  "mediaPresentationDuration",
+
545  SecondsToXmlDuration(GetStaticMpdDuration(mpd_node)));
+
546 }
+
547 
+
548 void MpdBuilder::AddDynamicMpdInfo(XmlNode* mpd_node) {
+
549  DCHECK(mpd_node);
+
550  DCHECK_EQ(MpdBuilder::kDynamic, type_);
551 
-
552  // No offset from NOW.
-
553  mpd_node->SetStringAttribute("publishTime",
-
554  XmlDateTimeNowWithOffset(0, clock_.get()));
-
555 
-
556  // 'availabilityStartTime' is required for dynamic profile. Calculate if
-
557  // not already calculated.
-
558  if (availability_start_time_.empty()) {
-
559  double earliest_presentation_time;
-
560  if (GetEarliestTimestamp(&earliest_presentation_time)) {
-
561  availability_start_time_ =
-
562  XmlDateTimeNowWithOffset(mpd_options_.availability_time_offset -
-
563  std::ceil(earliest_presentation_time),
-
564  clock_.get());
-
565  } else {
-
566  LOG(ERROR) << "Could not determine the earliest segment presentation "
-
567  "time for availabilityStartTime calculation.";
-
568  // TODO(tinskip). Propagate an error.
-
569  }
-
570  }
-
571  if (!availability_start_time_.empty())
-
572  mpd_node->SetStringAttribute("availabilityStartTime",
-
573  availability_start_time_);
-
574 
-
575  if (Positive(mpd_options_.minimum_update_period)) {
-
576  mpd_node->SetStringAttribute(
-
577  "minimumUpdatePeriod",
-
578  SecondsToXmlDuration(mpd_options_.minimum_update_period));
-
579  } else {
-
580  LOG(WARNING) << "The profile is dynamic but no minimumUpdatePeriod "
-
581  "specified.";
-
582  }
-
583 
-
584  SetIfPositive("timeShiftBufferDepth", mpd_options_.time_shift_buffer_depth,
-
585  mpd_node);
-
586  SetIfPositive("suggestedPresentationDelay",
-
587  mpd_options_.suggested_presentation_delay, mpd_node);
-
588 }
+
552  static const char kDynamicMpdType[] = "dynamic";
+
553  static const char kDynamicMpdProfile[] =
+
554  "urn:mpeg:dash:profile:isoff-live:2011";
+
555  mpd_node->SetStringAttribute("type", kDynamicMpdType);
+
556  mpd_node->SetStringAttribute("profiles", kDynamicMpdProfile);
+
557 
+
558  // No offset from NOW.
+
559  mpd_node->SetStringAttribute("publishTime",
+
560  XmlDateTimeNowWithOffset(0, clock_.get()));
+
561 
+
562  // 'availabilityStartTime' is required for dynamic profile. Calculate if
+
563  // not already calculated.
+
564  if (availability_start_time_.empty()) {
+
565  double earliest_presentation_time;
+
566  if (GetEarliestTimestamp(&earliest_presentation_time)) {
+
567  availability_start_time_ =
+
568  XmlDateTimeNowWithOffset(mpd_options_.availability_time_offset -
+
569  std::ceil(earliest_presentation_time),
+
570  clock_.get());
+
571  } else {
+
572  LOG(ERROR) << "Could not determine the earliest segment presentation "
+
573  "time for availabilityStartTime calculation.";
+
574  // TODO(tinskip). Propagate an error.
+
575  }
+
576  }
+
577  if (!availability_start_time_.empty())
+
578  mpd_node->SetStringAttribute("availabilityStartTime",
+
579  availability_start_time_);
+
580 
+
581  if (Positive(mpd_options_.minimum_update_period)) {
+
582  mpd_node->SetStringAttribute(
+
583  "minimumUpdatePeriod",
+
584  SecondsToXmlDuration(mpd_options_.minimum_update_period));
+
585  } else {
+
586  LOG(WARNING) << "The profile is dynamic but no minimumUpdatePeriod "
+
587  "specified.";
+
588  }
589 
-
590 float MpdBuilder::GetStaticMpdDuration(XmlNode* mpd_node) {
-
591  DCHECK(mpd_node);
-
592  DCHECK_EQ(MpdBuilder::kStatic, type_);
-
593 
-
594  xmlNodePtr period_node = FindPeriodNode(mpd_node);
-
595  DCHECK(period_node) << "Period element must be a child of mpd_node.";
-
596  DCHECK(IsPeriodNode(period_node));
-
597 
-
598  // Attribute mediaPresentationDuration must be present for 'static' MPD. So
-
599  // setting "PT0S" is required even if none of the representaions have duration
-
600  // attribute.
-
601  float max_duration = 0.0f;
-
602  for (xmlNodePtr adaptation_set = xmlFirstElementChild(period_node);
-
603  adaptation_set; adaptation_set = xmlNextElementSibling(adaptation_set)) {
-
604  for (xmlNodePtr representation = xmlFirstElementChild(adaptation_set);
-
605  representation;
-
606  representation = xmlNextElementSibling(representation)) {
-
607  float duration = 0.0f;
-
608  if (GetDurationAttribute(representation, &duration)) {
-
609  max_duration = max_duration > duration ? max_duration : duration;
-
610 
-
611  // 'duration' attribute is there only to help generate MPD, not
-
612  // necessary for MPD, remove the attribute.
-
613  xmlUnsetProp(representation, BAD_CAST "duration");
-
614  }
-
615  }
-
616  }
-
617 
-
618  return max_duration;
-
619 }
-
620 
-
621 bool MpdBuilder::GetEarliestTimestamp(double* timestamp_seconds) {
-
622  DCHECK(timestamp_seconds);
+
590  SetIfPositive("timeShiftBufferDepth", mpd_options_.time_shift_buffer_depth,
+
591  mpd_node);
+
592  SetIfPositive("suggestedPresentationDelay",
+
593  mpd_options_.suggested_presentation_delay, mpd_node);
+
594 }
+
595 
+
596 float MpdBuilder::GetStaticMpdDuration(XmlNode* mpd_node) {
+
597  DCHECK(mpd_node);
+
598  DCHECK_EQ(MpdBuilder::kStatic, type_);
+
599 
+
600  xmlNodePtr period_node = FindPeriodNode(mpd_node);
+
601  DCHECK(period_node) << "Period element must be a child of mpd_node.";
+
602  DCHECK(IsPeriodNode(period_node));
+
603 
+
604  // Attribute mediaPresentationDuration must be present for 'static' MPD. So
+
605  // setting "PT0S" is required even if none of the representaions have duration
+
606  // attribute.
+
607  float max_duration = 0.0f;
+
608  for (xmlNodePtr adaptation_set = xmlFirstElementChild(period_node);
+
609  adaptation_set; adaptation_set = xmlNextElementSibling(adaptation_set)) {
+
610  for (xmlNodePtr representation = xmlFirstElementChild(adaptation_set);
+
611  representation;
+
612  representation = xmlNextElementSibling(representation)) {
+
613  float duration = 0.0f;
+
614  if (GetDurationAttribute(representation, &duration)) {
+
615  max_duration = max_duration > duration ? max_duration : duration;
+
616 
+
617  // 'duration' attribute is there only to help generate MPD, not
+
618  // necessary for MPD, remove the attribute.
+
619  xmlUnsetProp(representation, BAD_CAST "duration");
+
620  }
+
621  }
+
622  }
623 
-
624  double earliest_timestamp(-1);
-
625  for (std::list<AdaptationSet*>::const_iterator iter =
-
626  adaptation_sets_.begin();
-
627  iter != adaptation_sets_.end(); ++iter) {
-
628  double timestamp;
-
629  if ((*iter)->GetEarliestTimestamp(&timestamp) &&
-
630  ((earliest_timestamp < 0) || (timestamp < earliest_timestamp))) {
-
631  earliest_timestamp = timestamp;
-
632  }
-
633  }
-
634  if (earliest_timestamp < 0)
-
635  return false;
-
636 
-
637  *timestamp_seconds = earliest_timestamp;
-
638  return true;
-
639 }
-
640 
-
641 void MpdBuilder::MakePathsRelativeToMpd(const std::string& mpd_path,
-
642  MediaInfo* media_info) {
-
643  DCHECK(media_info);
-
644  const std::string kFileProtocol("file://");
-
645  std::string mpd_file_path = (mpd_path.find(kFileProtocol) == 0)
-
646  ? mpd_path.substr(kFileProtocol.size())
-
647  : mpd_path;
-
648 
-
649  if (!mpd_file_path.empty()) {
-
650  std::string mpd_dir(
-
651  FilePath(mpd_file_path).DirName().AsEndingWithSeparator().value());
-
652  if (!mpd_dir.empty()) {
-
653  if (media_info->has_media_file_name()) {
-
654  media_info->set_media_file_name(
-
655  MakePathRelative(media_info->media_file_name(), mpd_dir));
-
656  }
-
657  if (media_info->has_init_segment_name()) {
-
658  media_info->set_init_segment_name(
-
659  MakePathRelative(media_info->init_segment_name(), mpd_dir));
-
660  }
-
661  if (media_info->has_segment_template()) {
-
662  media_info->set_segment_template(
-
663  MakePathRelative(media_info->segment_template(), mpd_dir));
-
664  }
-
665  }
-
666  }
-
667 }
-
668 
-
669 AdaptationSet::AdaptationSet(uint32_t adaptation_set_id,
-
670  const std::string& lang,
-
671  const MpdOptions& mpd_options,
-
672  MpdBuilder::MpdType mpd_type,
-
673  base::AtomicSequenceNumber* counter)
-
674  : representations_deleter_(&representations_),
-
675  representation_counter_(counter),
-
676  id_(adaptation_set_id),
-
677  lang_(lang),
-
678  mpd_options_(mpd_options),
-
679  mpd_type_(mpd_type),
-
680  group_(kAdaptationSetGroupNotSet),
-
681  segments_aligned_(kSegmentAlignmentUnknown),
-
682  force_set_segment_alignment_(false) {
-
683  DCHECK(counter);
-
684 }
-
685 
-
686 AdaptationSet::~AdaptationSet() {}
-
687 
-
688 Representation* AdaptationSet::AddRepresentation(const MediaInfo& media_info) {
-
689  const uint32_t representation_id = representation_counter_->GetNext();
-
690  // Note that AdaptationSet outlive Representation, so this object
-
691  // will die before AdaptationSet.
-
692  scoped_ptr<RepresentationStateChangeListener> listener(
-
693  new RepresentationStateChangeListenerImpl(representation_id, this));
-
694  scoped_ptr<Representation> representation(new Representation(
-
695  media_info, mpd_options_, representation_id, listener.Pass()));
-
696 
-
697  if (!representation->Init())
-
698  return NULL;
-
699 
-
700  // For videos, record the width, height, and the frame rate to calculate the
-
701  // max {width,height,framerate} required for DASH IOP.
-
702  if (media_info.has_video_info()) {
-
703  const MediaInfo::VideoInfo& video_info = media_info.video_info();
-
704  DCHECK(video_info.has_width());
-
705  DCHECK(video_info.has_height());
-
706  video_widths_.insert(video_info.width());
-
707  video_heights_.insert(video_info.height());
-
708 
-
709  if (video_info.has_time_scale() && video_info.has_frame_duration())
-
710  RecordFrameRate(video_info.frame_duration(), video_info.time_scale());
-
711 
-
712  AddPictureAspectRatio(video_info, &picture_aspect_ratio_);
-
713  }
+
624  return max_duration;
+
625 }
+
626 
+
627 bool MpdBuilder::GetEarliestTimestamp(double* timestamp_seconds) {
+
628  DCHECK(timestamp_seconds);
+
629 
+
630  double earliest_timestamp(-1);
+
631  for (std::list<AdaptationSet*>::const_iterator iter =
+
632  adaptation_sets_.begin();
+
633  iter != adaptation_sets_.end(); ++iter) {
+
634  double timestamp;
+
635  if ((*iter)->GetEarliestTimestamp(&timestamp) &&
+
636  ((earliest_timestamp < 0) || (timestamp < earliest_timestamp))) {
+
637  earliest_timestamp = timestamp;
+
638  }
+
639  }
+
640  if (earliest_timestamp < 0)
+
641  return false;
+
642 
+
643  *timestamp_seconds = earliest_timestamp;
+
644  return true;
+
645 }
+
646 
+
647 void MpdBuilder::MakePathsRelativeToMpd(const std::string& mpd_path,
+
648  MediaInfo* media_info) {
+
649  DCHECK(media_info);
+
650  const std::string kFileProtocol("file://");
+
651  std::string mpd_file_path = (mpd_path.find(kFileProtocol) == 0)
+
652  ? mpd_path.substr(kFileProtocol.size())
+
653  : mpd_path;
+
654 
+
655  if (!mpd_file_path.empty()) {
+
656  std::string mpd_dir(
+
657  FilePath(mpd_file_path).DirName().AsEndingWithSeparator().value());
+
658  if (!mpd_dir.empty()) {
+
659  if (media_info->has_media_file_name()) {
+
660  media_info->set_media_file_name(
+
661  MakePathRelative(media_info->media_file_name(), mpd_dir));
+
662  }
+
663  if (media_info->has_init_segment_name()) {
+
664  media_info->set_init_segment_name(
+
665  MakePathRelative(media_info->init_segment_name(), mpd_dir));
+
666  }
+
667  if (media_info->has_segment_template()) {
+
668  media_info->set_segment_template(
+
669  MakePathRelative(media_info->segment_template(), mpd_dir));
+
670  }
+
671  }
+
672  }
+
673 }
+
674 
+
675 AdaptationSet::AdaptationSet(uint32_t adaptation_set_id,
+
676  const std::string& lang,
+
677  const MpdOptions& mpd_options,
+
678  MpdBuilder::MpdType mpd_type,
+
679  base::AtomicSequenceNumber* counter)
+
680  : representations_deleter_(&representations_),
+
681  representation_counter_(counter),
+
682  id_(adaptation_set_id),
+
683  lang_(lang),
+
684  mpd_options_(mpd_options),
+
685  mpd_type_(mpd_type),
+
686  group_(kAdaptationSetGroupNotSet),
+
687  segments_aligned_(kSegmentAlignmentUnknown),
+
688  force_set_segment_alignment_(false) {
+
689  DCHECK(counter);
+
690 }
+
691 
+
692 AdaptationSet::~AdaptationSet() {}
+
693 
+
694 Representation* AdaptationSet::AddRepresentation(const MediaInfo& media_info) {
+
695  const uint32_t representation_id = representation_counter_->GetNext();
+
696  // Note that AdaptationSet outlive Representation, so this object
+
697  // will die before AdaptationSet.
+
698  scoped_ptr<RepresentationStateChangeListener> listener(
+
699  new RepresentationStateChangeListenerImpl(representation_id, this));
+
700  scoped_ptr<Representation> representation(new Representation(
+
701  media_info, mpd_options_, representation_id, listener.Pass()));
+
702 
+
703  if (!representation->Init())
+
704  return NULL;
+
705 
+
706  // For videos, record the width, height, and the frame rate to calculate the
+
707  // max {width,height,framerate} required for DASH IOP.
+
708  if (media_info.has_video_info()) {
+
709  const MediaInfo::VideoInfo& video_info = media_info.video_info();
+
710  DCHECK(video_info.has_width());
+
711  DCHECK(video_info.has_height());
+
712  video_widths_.insert(video_info.width());
+
713  video_heights_.insert(video_info.height());
714 
-
715  if (media_info.has_video_info()) {
-
716  content_type_ = "video";
-
717  } else if (media_info.has_audio_info()) {
-
718  content_type_ = "audio";
-
719  } else if (media_info.has_text_info()) {
-
720  content_type_ = "text";
-
721 
-
722  if (media_info.text_info().has_type() &&
-
723  (media_info.text_info().type() != MediaInfo::TextInfo::UNKNOWN)) {
-
724  roles_.insert(MediaInfoTextTypeToRole(media_info.text_info().type()));
-
725  }
-
726  }
+
715  if (video_info.has_time_scale() && video_info.has_frame_duration())
+
716  RecordFrameRate(video_info.frame_duration(), video_info.time_scale());
+
717 
+
718  AddPictureAspectRatio(video_info, &picture_aspect_ratio_);
+
719  }
+
720 
+
721  if (media_info.has_video_info()) {
+
722  content_type_ = "video";
+
723  } else if (media_info.has_audio_info()) {
+
724  content_type_ = "audio";
+
725  } else if (media_info.has_text_info()) {
+
726  content_type_ = "text";
727 
-
728  representations_.push_back(representation.get());
-
729  return representation.release();
-
730 }
-
731 
- -
733  const ContentProtectionElement& content_protection_element) {
-
734  content_protection_elements_.push_back(content_protection_element);
-
735  RemoveDuplicateAttributes(&content_protection_elements_.back());
+
728  if (media_info.text_info().has_type() &&
+
729  (media_info.text_info().type() != MediaInfo::TextInfo::UNKNOWN)) {
+
730  roles_.insert(MediaInfoTextTypeToRole(media_info.text_info().type()));
+
731  }
+
732  }
+
733 
+
734  representations_.push_back(representation.get());
+
735  return representation.release();
736 }
737 
-
738 void AdaptationSet::UpdateContentProtectionPssh(const std::string& drm_uuid,
-
739  const std::string& pssh) {
-
740  UpdateContentProtectionPsshHelper(drm_uuid, pssh,
-
741  &content_protection_elements_);
+ +
739  const ContentProtectionElement& content_protection_element) {
+
740  content_protection_elements_.push_back(content_protection_element);
+
741  RemoveDuplicateAttributes(&content_protection_elements_.back());
742 }
743 
-
744 void AdaptationSet::AddRole(Role role) {
-
745  roles_.insert(role);
-
746 }
-
747 
-
748 // Creates a copy of <AdaptationSet> xml element, iterate thru all the
-
749 // <Representation> (child) elements and add them to the copy.
-
750 // Set all the attributes first and then add the children elements so that flags
-
751 // can be passed to Representation to avoid setting redundant attributes. For
-
752 // example, if AdaptationSet@width is set, then Representation@width is
-
753 // redundant and should not be set.
-
754 xml::scoped_xml_ptr<xmlNode> AdaptationSet::GetXml() {
-
755  AdaptationSetXmlNode adaptation_set;
-
756 
-
757  bool suppress_representation_width = false;
-
758  bool suppress_representation_height = false;
-
759  bool suppress_representation_frame_rate = false;
-
760 
-
761  adaptation_set.SetId(id_);
-
762  adaptation_set.SetStringAttribute("contentType", content_type_);
-
763  if (!lang_.empty() && lang_ != "und") {
-
764  adaptation_set.SetStringAttribute("lang", LanguageToShortestForm(lang_));
-
765  }
+
744 void AdaptationSet::UpdateContentProtectionPssh(const std::string& drm_uuid,
+
745  const std::string& pssh) {
+
746  UpdateContentProtectionPsshHelper(drm_uuid, pssh,
+
747  &content_protection_elements_);
+
748 }
+
749 
+
750 void AdaptationSet::AddRole(Role role) {
+
751  roles_.insert(role);
+
752 }
+
753 
+
754 // Creates a copy of <AdaptationSet> xml element, iterate thru all the
+
755 // <Representation> (child) elements and add them to the copy.
+
756 // Set all the attributes first and then add the children elements so that flags
+
757 // can be passed to Representation to avoid setting redundant attributes. For
+
758 // example, if AdaptationSet@width is set, then Representation@width is
+
759 // redundant and should not be set.
+
760 xml::scoped_xml_ptr<xmlNode> AdaptationSet::GetXml() {
+
761  AdaptationSetXmlNode adaptation_set;
+
762 
+
763  bool suppress_representation_width = false;
+
764  bool suppress_representation_height = false;
+
765  bool suppress_representation_frame_rate = false;
766 
-
767  // Note that std::{set,map} are ordered, so the last element is the max value.
-
768  if (video_widths_.size() == 1) {
-
769  suppress_representation_width = true;
-
770  adaptation_set.SetIntegerAttribute("width", *video_widths_.begin());
-
771  } else if (video_widths_.size() > 1) {
-
772  adaptation_set.SetIntegerAttribute("maxWidth", *video_widths_.rbegin());
-
773  }
-
774  if (video_heights_.size() == 1) {
-
775  suppress_representation_height = true;
-
776  adaptation_set.SetIntegerAttribute("height", *video_heights_.begin());
-
777  } else if (video_heights_.size() > 1) {
-
778  adaptation_set.SetIntegerAttribute("maxHeight", *video_heights_.rbegin());
+
767  adaptation_set.SetId(id_);
+
768  adaptation_set.SetStringAttribute("contentType", content_type_);
+
769  if (!lang_.empty() && lang_ != "und") {
+
770  adaptation_set.SetStringAttribute("lang", LanguageToShortestForm(lang_));
+
771  }
+
772 
+
773  // Note that std::{set,map} are ordered, so the last element is the max value.
+
774  if (video_widths_.size() == 1) {
+
775  suppress_representation_width = true;
+
776  adaptation_set.SetIntegerAttribute("width", *video_widths_.begin());
+
777  } else if (video_widths_.size() > 1) {
+
778  adaptation_set.SetIntegerAttribute("maxWidth", *video_widths_.rbegin());
779  }
-
780 
-
781  if (video_frame_rates_.size() == 1) {
-
782  suppress_representation_frame_rate = true;
-
783  adaptation_set.SetStringAttribute("frameRate",
-
784  video_frame_rates_.begin()->second);
-
785  } else if (video_frame_rates_.size() > 1) {
-
786  adaptation_set.SetStringAttribute("maxFrameRate",
-
787  video_frame_rates_.rbegin()->second);
-
788  }
-
789 
-
790  // Note: must be checked before checking segments_aligned_ (below). So that
-
791  // segments_aligned_ is set before checking below.
-
792  if (mpd_type_ == MpdBuilder::kStatic) {
-
793  CheckVodSegmentAlignment();
+
780  if (video_heights_.size() == 1) {
+
781  suppress_representation_height = true;
+
782  adaptation_set.SetIntegerAttribute("height", *video_heights_.begin());
+
783  } else if (video_heights_.size() > 1) {
+
784  adaptation_set.SetIntegerAttribute("maxHeight", *video_heights_.rbegin());
+
785  }
+
786 
+
787  if (video_frame_rates_.size() == 1) {
+
788  suppress_representation_frame_rate = true;
+
789  adaptation_set.SetStringAttribute("frameRate",
+
790  video_frame_rates_.begin()->second);
+
791  } else if (video_frame_rates_.size() > 1) {
+
792  adaptation_set.SetStringAttribute("maxFrameRate",
+
793  video_frame_rates_.rbegin()->second);
794  }
795 
-
796  if (segments_aligned_ == kSegmentAlignmentTrue) {
-
797  adaptation_set.SetStringAttribute(mpd_type_ == MpdBuilder::kStatic
-
798  ? "subsegmentAlignment"
-
799  : "segmentAlignment",
-
800  "true");
-
801  }
-
802 
-
803  if (picture_aspect_ratio_.size() == 1)
-
804  adaptation_set.SetStringAttribute("par", *picture_aspect_ratio_.begin());
-
805 
-
806  if (group_ >= 0)
-
807  adaptation_set.SetIntegerAttribute("group", group_);
+
796  // Note: must be checked before checking segments_aligned_ (below). So that
+
797  // segments_aligned_ is set before checking below.
+
798  if (mpd_type_ == MpdBuilder::kStatic) {
+
799  CheckVodSegmentAlignment();
+
800  }
+
801 
+
802  if (segments_aligned_ == kSegmentAlignmentTrue) {
+
803  adaptation_set.SetStringAttribute(mpd_type_ == MpdBuilder::kStatic
+
804  ? "subsegmentAlignment"
+
805  : "segmentAlignment",
+
806  "true");
+
807  }
808 
-
809  if (!adaptation_set.AddContentProtectionElements(
-
810  content_protection_elements_)) {
-
811  return xml::scoped_xml_ptr<xmlNode>();
-
812  }
-
813  for (AdaptationSet::Role role : roles_)
-
814  adaptation_set.AddRoleElement("urn:mpeg:dash:role:2011", RoleToText(role));
-
815 
-
816  for (Representation* representation : representations_) {
-
817  if (suppress_representation_width)
-
818  representation->SuppressOnce(Representation::kSuppressWidth);
-
819  if (suppress_representation_height)
-
820  representation->SuppressOnce(Representation::kSuppressHeight);
-
821  if (suppress_representation_frame_rate)
-
822  representation->SuppressOnce(Representation::kSuppressFrameRate);
-
823  xml::scoped_xml_ptr<xmlNode> child(representation->GetXml());
-
824  if (!child || !adaptation_set.AddChild(child.Pass()))
-
825  return xml::scoped_xml_ptr<xmlNode>();
-
826  }
-
827 
-
828  return adaptation_set.PassScopedPtr();
-
829 }
-
830 
-
831 void AdaptationSet::ForceSetSegmentAlignment(bool segment_alignment) {
-
832  segments_aligned_ =
-
833  segment_alignment ? kSegmentAlignmentTrue : kSegmentAlignmentFalse;
-
834  force_set_segment_alignment_ = true;
+
809  if (picture_aspect_ratio_.size() == 1)
+
810  adaptation_set.SetStringAttribute("par", *picture_aspect_ratio_.begin());
+
811 
+
812  if (group_ >= 0)
+
813  adaptation_set.SetIntegerAttribute("group", group_);
+
814 
+
815  if (!adaptation_set.AddContentProtectionElements(
+
816  content_protection_elements_)) {
+
817  return xml::scoped_xml_ptr<xmlNode>();
+
818  }
+
819  for (AdaptationSet::Role role : roles_)
+
820  adaptation_set.AddRoleElement("urn:mpeg:dash:role:2011", RoleToText(role));
+
821 
+
822  for (Representation* representation : representations_) {
+
823  if (suppress_representation_width)
+
824  representation->SuppressOnce(Representation::kSuppressWidth);
+
825  if (suppress_representation_height)
+
826  representation->SuppressOnce(Representation::kSuppressHeight);
+
827  if (suppress_representation_frame_rate)
+
828  representation->SuppressOnce(Representation::kSuppressFrameRate);
+
829  xml::scoped_xml_ptr<xmlNode> child(representation->GetXml());
+
830  if (!child || !adaptation_set.AddChild(child.Pass()))
+
831  return xml::scoped_xml_ptr<xmlNode>();
+
832  }
+
833 
+
834  return adaptation_set.PassScopedPtr();
835 }
836 
-
837 void AdaptationSet::SetGroup(int group_number) {
-
838  group_ = group_number;
-
839 }
-
840 
-
841 int AdaptationSet::Group() const {
-
842  return group_;
-
843 }
-
844 
-
845 // Check segmentAlignment for Live here. Storing all start_time and duration
-
846 // will out-of-memory because there's no way of knowing when it will end.
-
847 // VOD subsegmentAlignment check is *not* done here because it is possible
-
848 // that some Representations might not have been added yet (e.g. a thread is
-
849 // assigned per muxer so one might run faster than others).
-
850 // To be clear, for Live, all Representations should be added before a
-
851 // segment is added.
-
852 void AdaptationSet::OnNewSegmentForRepresentation(uint32_t representation_id,
-
853  uint64_t start_time,
-
854  uint64_t duration) {
-
855  if (mpd_type_ == MpdBuilder::kDynamic) {
-
856  CheckLiveSegmentAlignment(representation_id, start_time, duration);
-
857  } else {
-
858  representation_segment_start_times_[representation_id].push_back(
-
859  start_time);
-
860  }
-
861 }
-
862 
- -
864  uint32_t representation_id,
-
865  uint32_t frame_duration,
-
866  uint32_t timescale) {
-
867  RecordFrameRate(frame_duration, timescale);
-
868 }
-
869 
-
870 bool AdaptationSet::GetEarliestTimestamp(double* timestamp_seconds) {
-
871  DCHECK(timestamp_seconds);
-
872 
-
873  double earliest_timestamp(-1);
-
874  for (std::list<Representation*>::const_iterator iter =
-
875  representations_.begin();
-
876  iter != representations_.end(); ++iter) {
-
877  double timestamp;
-
878  if ((*iter)->GetEarliestTimestamp(&timestamp) &&
-
879  ((earliest_timestamp < 0) || (timestamp < earliest_timestamp))) {
-
880  earliest_timestamp = timestamp;
-
881  }
-
882  }
-
883  if (earliest_timestamp < 0)
-
884  return false;
-
885 
-
886  *timestamp_seconds = earliest_timestamp;
-
887  return true;
-
888 }
-
889 
-
890 // This implementation assumes that each representations' segments' are
-
891 // contiguous.
-
892 // Also assumes that all Representations are added before this is called.
-
893 // This checks whether the first elements of the lists in
-
894 // representation_segment_start_times_ are aligned.
-
895 // For example, suppose this method was just called with args rep_id=2
-
896 // start_time=1.
-
897 // 1 -> [1, 100, 200]
-
898 // 2 -> [1]
-
899 // The timestamps of the first elements match, so this flags
-
900 // segments_aligned_=true.
-
901 // Also since the first segment start times match, the first element of all the
-
902 // lists are removed, so the map of lists becomes:
-
903 // 1 -> [100, 200]
-
904 // 2 -> []
-
905 // Note that there could be false positives.
-
906 // e.g. just got rep_id=3 start_time=1 duration=300, and the duration of the
-
907 // whole AdaptationSet is 300.
-
908 // 1 -> [1, 100, 200]
-
909 // 2 -> [1, 90, 100]
-
910 // 3 -> [1]
-
911 // They are not aligned but this will be marked as aligned.
-
912 // But since this is unlikely to happen in the packager (and to save
-
913 // computation), this isn't handled at the moment.
-
914 void AdaptationSet::CheckLiveSegmentAlignment(uint32_t representation_id,
-
915  uint64_t start_time,
-
916  uint64_t /* duration */) {
-
917  if (segments_aligned_ == kSegmentAlignmentFalse ||
-
918  force_set_segment_alignment_) {
-
919  return;
-
920  }
-
921 
-
922  std::list<uint64_t>& representation_start_times =
-
923  representation_segment_start_times_[representation_id];
-
924  representation_start_times.push_back(start_time);
-
925  // There's no way to detemine whether the segments are aligned if some
-
926  // representations do not have any segments.
-
927  if (representation_segment_start_times_.size() != representations_.size())
-
928  return;
-
929 
-
930  DCHECK(!representation_start_times.empty());
-
931  const uint64_t expected_start_time = representation_start_times.front();
-
932  for (RepresentationTimeline::const_iterator it =
-
933  representation_segment_start_times_.begin();
-
934  it != representation_segment_start_times_.end(); ++it) {
-
935  // If there are no entries in a list, then there is no way for the
-
936  // segment alignment status to change.
-
937  // Note that it can be empty because entries get deleted below.
-
938  if (it->second.empty())
-
939  return;
-
940 
-
941  if (expected_start_time != it->second.front()) {
-
942  // Flag as false and clear the start times data, no need to keep it
-
943  // around.
-
944  segments_aligned_ = kSegmentAlignmentFalse;
-
945  representation_segment_start_times_.clear();
-
946  return;
-
947  }
-
948  }
-
949  segments_aligned_ = kSegmentAlignmentTrue;
-
950 
-
951  for (RepresentationTimeline::iterator it =
-
952  representation_segment_start_times_.begin();
-
953  it != representation_segment_start_times_.end(); ++it) {
-
954  it->second.pop_front();
-
955  }
-
956 }
-
957 
-
958 // Make sure all segements start times match for all Representations.
-
959 // This assumes that the segments are contiguous.
-
960 void AdaptationSet::CheckVodSegmentAlignment() {
-
961  if (segments_aligned_ == kSegmentAlignmentFalse ||
-
962  force_set_segment_alignment_) {
-
963  return;
-
964  }
-
965  if (representation_segment_start_times_.empty())
-
966  return;
-
967  if (representation_segment_start_times_.size() == 1) {
-
968  segments_aligned_ = kSegmentAlignmentTrue;
+
837 void AdaptationSet::ForceSetSegmentAlignment(bool segment_alignment) {
+
838  segments_aligned_ =
+
839  segment_alignment ? kSegmentAlignmentTrue : kSegmentAlignmentFalse;
+
840  force_set_segment_alignment_ = true;
+
841 }
+
842 
+
843 void AdaptationSet::SetGroup(int group_number) {
+
844  group_ = group_number;
+
845 }
+
846 
+
847 int AdaptationSet::Group() const {
+
848  return group_;
+
849 }
+
850 
+
851 // Check segmentAlignment for Live here. Storing all start_time and duration
+
852 // will out-of-memory because there's no way of knowing when it will end.
+
853 // VOD subsegmentAlignment check is *not* done here because it is possible
+
854 // that some Representations might not have been added yet (e.g. a thread is
+
855 // assigned per muxer so one might run faster than others).
+
856 // To be clear, for Live, all Representations should be added before a
+
857 // segment is added.
+
858 void AdaptationSet::OnNewSegmentForRepresentation(uint32_t representation_id,
+
859  uint64_t start_time,
+
860  uint64_t duration) {
+
861  if (mpd_type_ == MpdBuilder::kDynamic) {
+
862  CheckLiveSegmentAlignment(representation_id, start_time, duration);
+
863  } else {
+
864  representation_segment_start_times_[representation_id].push_back(
+
865  start_time);
+
866  }
+
867 }
+
868 
+ +
870  uint32_t representation_id,
+
871  uint32_t frame_duration,
+
872  uint32_t timescale) {
+
873  RecordFrameRate(frame_duration, timescale);
+
874 }
+
875 
+
876 bool AdaptationSet::GetEarliestTimestamp(double* timestamp_seconds) {
+
877  DCHECK(timestamp_seconds);
+
878 
+
879  double earliest_timestamp(-1);
+
880  for (std::list<Representation*>::const_iterator iter =
+
881  representations_.begin();
+
882  iter != representations_.end(); ++iter) {
+
883  double timestamp;
+
884  if ((*iter)->GetEarliestTimestamp(&timestamp) &&
+
885  ((earliest_timestamp < 0) || (timestamp < earliest_timestamp))) {
+
886  earliest_timestamp = timestamp;
+
887  }
+
888  }
+
889  if (earliest_timestamp < 0)
+
890  return false;
+
891 
+
892  *timestamp_seconds = earliest_timestamp;
+
893  return true;
+
894 }
+
895 
+
896 // This implementation assumes that each representations' segments' are
+
897 // contiguous.
+
898 // Also assumes that all Representations are added before this is called.
+
899 // This checks whether the first elements of the lists in
+
900 // representation_segment_start_times_ are aligned.
+
901 // For example, suppose this method was just called with args rep_id=2
+
902 // start_time=1.
+
903 // 1 -> [1, 100, 200]
+
904 // 2 -> [1]
+
905 // The timestamps of the first elements match, so this flags
+
906 // segments_aligned_=true.
+
907 // Also since the first segment start times match, the first element of all the
+
908 // lists are removed, so the map of lists becomes:
+
909 // 1 -> [100, 200]
+
910 // 2 -> []
+
911 // Note that there could be false positives.
+
912 // e.g. just got rep_id=3 start_time=1 duration=300, and the duration of the
+
913 // whole AdaptationSet is 300.
+
914 // 1 -> [1, 100, 200]
+
915 // 2 -> [1, 90, 100]
+
916 // 3 -> [1]
+
917 // They are not aligned but this will be marked as aligned.
+
918 // But since this is unlikely to happen in the packager (and to save
+
919 // computation), this isn't handled at the moment.
+
920 void AdaptationSet::CheckLiveSegmentAlignment(uint32_t representation_id,
+
921  uint64_t start_time,
+
922  uint64_t /* duration */) {
+
923  if (segments_aligned_ == kSegmentAlignmentFalse ||
+
924  force_set_segment_alignment_) {
+
925  return;
+
926  }
+
927 
+
928  std::list<uint64_t>& representation_start_times =
+
929  representation_segment_start_times_[representation_id];
+
930  representation_start_times.push_back(start_time);
+
931  // There's no way to detemine whether the segments are aligned if some
+
932  // representations do not have any segments.
+
933  if (representation_segment_start_times_.size() != representations_.size())
+
934  return;
+
935 
+
936  DCHECK(!representation_start_times.empty());
+
937  const uint64_t expected_start_time = representation_start_times.front();
+
938  for (RepresentationTimeline::const_iterator it =
+
939  representation_segment_start_times_.begin();
+
940  it != representation_segment_start_times_.end(); ++it) {
+
941  // If there are no entries in a list, then there is no way for the
+
942  // segment alignment status to change.
+
943  // Note that it can be empty because entries get deleted below.
+
944  if (it->second.empty())
+
945  return;
+
946 
+
947  if (expected_start_time != it->second.front()) {
+
948  // Flag as false and clear the start times data, no need to keep it
+
949  // around.
+
950  segments_aligned_ = kSegmentAlignmentFalse;
+
951  representation_segment_start_times_.clear();
+
952  return;
+
953  }
+
954  }
+
955  segments_aligned_ = kSegmentAlignmentTrue;
+
956 
+
957  for (RepresentationTimeline::iterator it =
+
958  representation_segment_start_times_.begin();
+
959  it != representation_segment_start_times_.end(); ++it) {
+
960  it->second.pop_front();
+
961  }
+
962 }
+
963 
+
964 // Make sure all segements start times match for all Representations.
+
965 // This assumes that the segments are contiguous.
+
966 void AdaptationSet::CheckVodSegmentAlignment() {
+
967  if (segments_aligned_ == kSegmentAlignmentFalse ||
+
968  force_set_segment_alignment_) {
969  return;
970  }
-
971 
-
972  // This is not the most efficient implementation to compare the values
-
973  // because expected_time_line is compared against all other time lines, but
-
974  // probably the most readable.
-
975  const std::list<uint64_t>& expected_time_line =
-
976  representation_segment_start_times_.begin()->second;
+
971  if (representation_segment_start_times_.empty())
+
972  return;
+
973  if (representation_segment_start_times_.size() == 1) {
+
974  segments_aligned_ = kSegmentAlignmentTrue;
+
975  return;
+
976  }
977 
-
978  bool all_segment_time_line_same_length = true;
-
979  // Note that the first entry is skipped because it is expected_time_line.
-
980  RepresentationTimeline::const_iterator it =
-
981  representation_segment_start_times_.begin();
-
982  for (++it; it != representation_segment_start_times_.end(); ++it) {
-
983  const std::list<uint64_t>& other_time_line = it->second;
-
984  if (expected_time_line.size() != other_time_line.size()) {
-
985  all_segment_time_line_same_length = false;
-
986  }
-
987 
-
988  const std::list<uint64_t>* longer_list = &other_time_line;
-
989  const std::list<uint64_t>* shorter_list = &expected_time_line;
-
990  if (expected_time_line.size() > other_time_line.size()) {
-
991  shorter_list = &other_time_line;
-
992  longer_list = &expected_time_line;
-
993  }
-
994 
-
995  if (!std::equal(shorter_list->begin(), shorter_list->end(),
-
996  longer_list->begin())) {
-
997  // Some segments are definitely unaligned.
-
998  segments_aligned_ = kSegmentAlignmentFalse;
-
999  representation_segment_start_times_.clear();
-
1000  return;
-
1001  }
-
1002  }
-
1003 
-
1004  // TODO(rkuroiwa): The right way to do this is to also check the durations.
-
1005  // For example:
-
1006  // (a) 3 4 5
-
1007  // (b) 3 4 5 6
-
1008  // could be true or false depending on the length of the third segment of (a).
-
1009  // i.e. if length of the third segment is 2, then this is not aligned.
-
1010  if (!all_segment_time_line_same_length) {
-
1011  segments_aligned_ = kSegmentAlignmentUnknown;
-
1012  return;
-
1013  }
-
1014 
-
1015  segments_aligned_ = kSegmentAlignmentTrue;
-
1016 }
-
1017 
-
1018 // Since all AdaptationSet cares about is the maxFrameRate, representation_id
-
1019 // is not passed to this method.
-
1020 void AdaptationSet::RecordFrameRate(uint32_t frame_duration,
-
1021  uint32_t timescale) {
-
1022  if (frame_duration == 0) {
-
1023  LOG(ERROR) << "Frame duration is 0 and cannot be set.";
-
1024  return;
-
1025  }
-
1026  video_frame_rates_[static_cast<double>(timescale) / frame_duration] =
-
1027  base::IntToString(timescale) + "/" + base::IntToString(frame_duration);
-
1028 }
-
1029 
- -
1031  const MediaInfo& media_info,
-
1032  const MpdOptions& mpd_options,
-
1033  uint32_t id,
-
1034  scoped_ptr<RepresentationStateChangeListener> state_change_listener)
-
1035  : media_info_(media_info),
-
1036  id_(id),
-
1037  bandwidth_estimator_(BandwidthEstimator::kUseAllBlocks),
-
1038  mpd_options_(mpd_options),
-
1039  start_number_(1),
-
1040  state_change_listener_(state_change_listener.Pass()),
-
1041  output_suppression_flags_(0) {}
-
1042 
-
1043 Representation::~Representation() {}
-
1044 
- -
1046  if (!AtLeastOneTrue(media_info_.has_video_info(),
-
1047  media_info_.has_audio_info(),
-
1048  media_info_.has_text_info())) {
-
1049  // This is an error. Segment information can be in AdaptationSet, Period, or
-
1050  // MPD but the interface does not provide a way to set them.
-
1051  // See 5.3.9.1 ISO 23009-1:2012 for segment info.
-
1052  LOG(ERROR) << "Representation needs one of video, audio, or text.";
-
1053  return false;
-
1054  }
-
1055 
-
1056  if (MoreThanOneTrue(media_info_.has_video_info(),
-
1057  media_info_.has_audio_info(),
-
1058  media_info_.has_text_info())) {
-
1059  LOG(ERROR) << "Only one of VideoInfo, AudioInfo, or TextInfo can be set.";
-
1060  return false;
-
1061  }
-
1062 
-
1063  if (media_info_.container_type() == MediaInfo::CONTAINER_UNKNOWN) {
-
1064  LOG(ERROR) << "'container_type' in MediaInfo cannot be CONTAINER_UNKNOWN.";
-
1065  return false;
-
1066  }
-
1067 
-
1068  if (media_info_.has_video_info()) {
-
1069  mime_type_ = GetVideoMimeType();
-
1070  if (!HasRequiredVideoFields(media_info_.video_info())) {
-
1071  LOG(ERROR) << "Missing required fields to create a video Representation.";
-
1072  return false;
-
1073  }
-
1074  } else if (media_info_.has_audio_info()) {
-
1075  mime_type_ = GetAudioMimeType();
-
1076  } else if (media_info_.has_text_info()) {
-
1077  mime_type_ = GetTextMimeType();
-
1078  }
-
1079 
-
1080  if (mime_type_.empty())
-
1081  return false;
-
1082 
-
1083  codecs_ = GetCodecs(media_info_);
-
1084  return true;
-
1085 }
-
1086 
- -
1088  const ContentProtectionElement& content_protection_element) {
-
1089  content_protection_elements_.push_back(content_protection_element);
-
1090  RemoveDuplicateAttributes(&content_protection_elements_.back());
+
978  // This is not the most efficient implementation to compare the values
+
979  // because expected_time_line is compared against all other time lines, but
+
980  // probably the most readable.
+
981  const std::list<uint64_t>& expected_time_line =
+
982  representation_segment_start_times_.begin()->second;
+
983 
+
984  bool all_segment_time_line_same_length = true;
+
985  // Note that the first entry is skipped because it is expected_time_line.
+
986  RepresentationTimeline::const_iterator it =
+
987  representation_segment_start_times_.begin();
+
988  for (++it; it != representation_segment_start_times_.end(); ++it) {
+
989  const std::list<uint64_t>& other_time_line = it->second;
+
990  if (expected_time_line.size() != other_time_line.size()) {
+
991  all_segment_time_line_same_length = false;
+
992  }
+
993 
+
994  const std::list<uint64_t>* longer_list = &other_time_line;
+
995  const std::list<uint64_t>* shorter_list = &expected_time_line;
+
996  if (expected_time_line.size() > other_time_line.size()) {
+
997  shorter_list = &other_time_line;
+
998  longer_list = &expected_time_line;
+
999  }
+
1000 
+
1001  if (!std::equal(shorter_list->begin(), shorter_list->end(),
+
1002  longer_list->begin())) {
+
1003  // Some segments are definitely unaligned.
+
1004  segments_aligned_ = kSegmentAlignmentFalse;
+
1005  representation_segment_start_times_.clear();
+
1006  return;
+
1007  }
+
1008  }
+
1009 
+
1010  // TODO(rkuroiwa): The right way to do this is to also check the durations.
+
1011  // For example:
+
1012  // (a) 3 4 5
+
1013  // (b) 3 4 5 6
+
1014  // could be true or false depending on the length of the third segment of (a).
+
1015  // i.e. if length of the third segment is 2, then this is not aligned.
+
1016  if (!all_segment_time_line_same_length) {
+
1017  segments_aligned_ = kSegmentAlignmentUnknown;
+
1018  return;
+
1019  }
+
1020 
+
1021  segments_aligned_ = kSegmentAlignmentTrue;
+
1022 }
+
1023 
+
1024 // Since all AdaptationSet cares about is the maxFrameRate, representation_id
+
1025 // is not passed to this method.
+
1026 void AdaptationSet::RecordFrameRate(uint32_t frame_duration,
+
1027  uint32_t timescale) {
+
1028  if (frame_duration == 0) {
+
1029  LOG(ERROR) << "Frame duration is 0 and cannot be set.";
+
1030  return;
+
1031  }
+
1032  video_frame_rates_[static_cast<double>(timescale) / frame_duration] =
+
1033  base::IntToString(timescale) + "/" + base::IntToString(frame_duration);
+
1034 }
+
1035 
+ +
1037  const MediaInfo& media_info,
+
1038  const MpdOptions& mpd_options,
+
1039  uint32_t id,
+
1040  scoped_ptr<RepresentationStateChangeListener> state_change_listener)
+
1041  : media_info_(media_info),
+
1042  id_(id),
+
1043  bandwidth_estimator_(BandwidthEstimator::kUseAllBlocks),
+
1044  mpd_options_(mpd_options),
+
1045  start_number_(1),
+
1046  state_change_listener_(state_change_listener.Pass()),
+
1047  output_suppression_flags_(0) {}
+
1048 
+
1049 Representation::~Representation() {}
+
1050 
+ +
1052  if (!AtLeastOneTrue(media_info_.has_video_info(),
+
1053  media_info_.has_audio_info(),
+
1054  media_info_.has_text_info())) {
+
1055  // This is an error. Segment information can be in AdaptationSet, Period, or
+
1056  // MPD but the interface does not provide a way to set them.
+
1057  // See 5.3.9.1 ISO 23009-1:2012 for segment info.
+
1058  LOG(ERROR) << "Representation needs one of video, audio, or text.";
+
1059  return false;
+
1060  }
+
1061 
+
1062  if (MoreThanOneTrue(media_info_.has_video_info(),
+
1063  media_info_.has_audio_info(),
+
1064  media_info_.has_text_info())) {
+
1065  LOG(ERROR) << "Only one of VideoInfo, AudioInfo, or TextInfo can be set.";
+
1066  return false;
+
1067  }
+
1068 
+
1069  if (media_info_.container_type() == MediaInfo::CONTAINER_UNKNOWN) {
+
1070  LOG(ERROR) << "'container_type' in MediaInfo cannot be CONTAINER_UNKNOWN.";
+
1071  return false;
+
1072  }
+
1073 
+
1074  if (media_info_.has_video_info()) {
+
1075  mime_type_ = GetVideoMimeType();
+
1076  if (!HasRequiredVideoFields(media_info_.video_info())) {
+
1077  LOG(ERROR) << "Missing required fields to create a video Representation.";
+
1078  return false;
+
1079  }
+
1080  } else if (media_info_.has_audio_info()) {
+
1081  mime_type_ = GetAudioMimeType();
+
1082  } else if (media_info_.has_text_info()) {
+
1083  mime_type_ = GetTextMimeType();
+
1084  }
+
1085 
+
1086  if (mime_type_.empty())
+
1087  return false;
+
1088 
+
1089  codecs_ = GetCodecs(media_info_);
+
1090  return true;
1091 }
1092 
-
1093 void Representation::UpdateContentProtectionPssh(const std::string& drm_uuid,
-
1094  const std::string& pssh) {
-
1095  UpdateContentProtectionPsshHelper(drm_uuid, pssh,
-
1096  &content_protection_elements_);
+ +
1094  const ContentProtectionElement& content_protection_element) {
+
1095  content_protection_elements_.push_back(content_protection_element);
+
1096  RemoveDuplicateAttributes(&content_protection_elements_.back());
1097 }
1098 
-
1099 void Representation::AddNewSegment(uint64_t start_time,
-
1100  uint64_t duration,
-
1101  uint64_t size) {
-
1102  if (start_time == 0 && duration == 0) {
-
1103  LOG(WARNING) << "Got segment with start_time and duration == 0. Ignoring.";
-
1104  return;
-
1105  }
-
1106 
-
1107  if (state_change_listener_)
-
1108  state_change_listener_->OnNewSegmentForRepresentation(start_time, duration);
-
1109  if (IsContiguous(start_time, duration, size)) {
-
1110  ++segment_infos_.back().repeat;
-
1111  } else {
-
1112  SegmentInfo s = {start_time, duration, /* Not repeat. */ 0};
-
1113  segment_infos_.push_back(s);
-
1114  }
-
1115 
-
1116  bandwidth_estimator_.AddBlock(
-
1117  size, static_cast<double>(duration) / media_info_.reference_time_scale());
-
1118 
-
1119  SlideWindow();
-
1120  DCHECK_GE(segment_infos_.size(), 1u);
-
1121 }
-
1122 
-
1123 void Representation::SetSampleDuration(uint32_t sample_duration) {
-
1124  if (media_info_.has_video_info()) {
-
1125  media_info_.mutable_video_info()->set_frame_duration(sample_duration);
-
1126  if (state_change_listener_) {
-
1127  state_change_listener_->OnSetFrameRateForRepresentation(
-
1128  sample_duration, media_info_.video_info().time_scale());
-
1129  }
-
1130  }
-
1131 }
-
1132 
-
1133 // Uses info in |media_info_| and |content_protection_elements_| to create a
-
1134 // "Representation" node.
-
1135 // MPD schema has strict ordering. The following must be done in order.
-
1136 // AddVideoInfo() (possibly adds FramePacking elements), AddAudioInfo() (Adds
-
1137 // AudioChannelConfig elements), AddContentProtectionElements*(), and
-
1138 // AddVODOnlyInfo() (Adds segment info).
-
1139 xml::scoped_xml_ptr<xmlNode> Representation::GetXml() {
-
1140  if (!HasRequiredMediaInfoFields()) {
-
1141  LOG(ERROR) << "MediaInfo missing required fields.";
-
1142  return xml::scoped_xml_ptr<xmlNode>();
-
1143  }
-
1144 
-
1145  const uint64_t bandwidth = media_info_.has_bandwidth()
-
1146  ? media_info_.bandwidth()
-
1147  : bandwidth_estimator_.Estimate();
-
1148 
-
1149  DCHECK(!(HasVODOnlyFields(media_info_) && HasLiveOnlyFields(media_info_)));
+
1099 void Representation::UpdateContentProtectionPssh(const std::string& drm_uuid,
+
1100  const std::string& pssh) {
+
1101  UpdateContentProtectionPsshHelper(drm_uuid, pssh,
+
1102  &content_protection_elements_);
+
1103 }
+
1104 
+
1105 void Representation::AddNewSegment(uint64_t start_time,
+
1106  uint64_t duration,
+
1107  uint64_t size) {
+
1108  if (start_time == 0 && duration == 0) {
+
1109  LOG(WARNING) << "Got segment with start_time and duration == 0. Ignoring.";
+
1110  return;
+
1111  }
+
1112 
+
1113  if (state_change_listener_)
+
1114  state_change_listener_->OnNewSegmentForRepresentation(start_time, duration);
+
1115  if (IsContiguous(start_time, duration, size)) {
+
1116  ++segment_infos_.back().repeat;
+
1117  } else {
+
1118  SegmentInfo s = {start_time, duration, /* Not repeat. */ 0};
+
1119  segment_infos_.push_back(s);
+
1120  }
+
1121 
+
1122  bandwidth_estimator_.AddBlock(
+
1123  size, static_cast<double>(duration) / media_info_.reference_time_scale());
+
1124 
+
1125  SlideWindow();
+
1126  DCHECK_GE(segment_infos_.size(), 1u);
+
1127 }
+
1128 
+
1129 void Representation::SetSampleDuration(uint32_t sample_duration) {
+
1130  if (media_info_.has_video_info()) {
+
1131  media_info_.mutable_video_info()->set_frame_duration(sample_duration);
+
1132  if (state_change_listener_) {
+
1133  state_change_listener_->OnSetFrameRateForRepresentation(
+
1134  sample_duration, media_info_.video_info().time_scale());
+
1135  }
+
1136  }
+
1137 }
+
1138 
+
1139 // Uses info in |media_info_| and |content_protection_elements_| to create a
+
1140 // "Representation" node.
+
1141 // MPD schema has strict ordering. The following must be done in order.
+
1142 // AddVideoInfo() (possibly adds FramePacking elements), AddAudioInfo() (Adds
+
1143 // AudioChannelConfig elements), AddContentProtectionElements*(), and
+
1144 // AddVODOnlyInfo() (Adds segment info).
+
1145 xml::scoped_xml_ptr<xmlNode> Representation::GetXml() {
+
1146  if (!HasRequiredMediaInfoFields()) {
+
1147  LOG(ERROR) << "MediaInfo missing required fields.";
+
1148  return xml::scoped_xml_ptr<xmlNode>();
+
1149  }
1150 
-
1151  RepresentationXmlNode representation;
-
1152  // Mandatory fields for Representation.
-
1153  representation.SetId(id_);
-
1154  representation.SetIntegerAttribute("bandwidth", bandwidth);
-
1155  if (!codecs_.empty())
-
1156  representation.SetStringAttribute("codecs", codecs_);
-
1157  representation.SetStringAttribute("mimeType", mime_type_);
-
1158 
-
1159  const bool has_video_info = media_info_.has_video_info();
-
1160  const bool has_audio_info = media_info_.has_audio_info();
-
1161 
-
1162  if (has_video_info &&
-
1163  !representation.AddVideoInfo(
-
1164  media_info_.video_info(),
-
1165  !(output_suppression_flags_ & kSuppressWidth),
-
1166  !(output_suppression_flags_ & kSuppressHeight),
-
1167  !(output_suppression_flags_ & kSuppressFrameRate))) {
-
1168  LOG(ERROR) << "Failed to add video info to Representation XML.";
-
1169  return xml::scoped_xml_ptr<xmlNode>();
-
1170  }
-
1171 
-
1172  if (has_audio_info &&
-
1173  !representation.AddAudioInfo(media_info_.audio_info())) {
-
1174  LOG(ERROR) << "Failed to add audio info to Representation XML.";
+
1151  const uint64_t bandwidth = media_info_.has_bandwidth()
+
1152  ? media_info_.bandwidth()
+
1153  : bandwidth_estimator_.Estimate();
+
1154 
+
1155  DCHECK(!(HasVODOnlyFields(media_info_) && HasLiveOnlyFields(media_info_)));
+
1156 
+
1157  RepresentationXmlNode representation;
+
1158  // Mandatory fields for Representation.
+
1159  representation.SetId(id_);
+
1160  representation.SetIntegerAttribute("bandwidth", bandwidth);
+
1161  if (!codecs_.empty())
+
1162  representation.SetStringAttribute("codecs", codecs_);
+
1163  representation.SetStringAttribute("mimeType", mime_type_);
+
1164 
+
1165  const bool has_video_info = media_info_.has_video_info();
+
1166  const bool has_audio_info = media_info_.has_audio_info();
+
1167 
+
1168  if (has_video_info &&
+
1169  !representation.AddVideoInfo(
+
1170  media_info_.video_info(),
+
1171  !(output_suppression_flags_ & kSuppressWidth),
+
1172  !(output_suppression_flags_ & kSuppressHeight),
+
1173  !(output_suppression_flags_ & kSuppressFrameRate))) {
+
1174  LOG(ERROR) << "Failed to add video info to Representation XML.";
1175  return xml::scoped_xml_ptr<xmlNode>();
1176  }
1177 
-
1178  if (!representation.AddContentProtectionElements(
-
1179  content_protection_elements_)) {
-
1180  return xml::scoped_xml_ptr<xmlNode>();
-
1181  }
-
1182 
-
1183  if (HasVODOnlyFields(media_info_) &&
-
1184  !representation.AddVODOnlyInfo(media_info_)) {
-
1185  LOG(ERROR) << "Failed to add VOD segment info.";
+
1178  if (has_audio_info &&
+
1179  !representation.AddAudioInfo(media_info_.audio_info())) {
+
1180  LOG(ERROR) << "Failed to add audio info to Representation XML.";
+
1181  return xml::scoped_xml_ptr<xmlNode>();
+
1182  }
+
1183 
+
1184  if (!representation.AddContentProtectionElements(
+
1185  content_protection_elements_)) {
1186  return xml::scoped_xml_ptr<xmlNode>();
1187  }
1188 
-
1189  if (HasLiveOnlyFields(media_info_) &&
-
1190  !representation.AddLiveOnlyInfo(media_info_, segment_infos_,
-
1191  start_number_)) {
-
1192  LOG(ERROR) << "Failed to add Live info.";
-
1193  return xml::scoped_xml_ptr<xmlNode>();
-
1194  }
-
1195  // TODO(rkuroiwa): It is likely that all representations have the exact same
-
1196  // SegmentTemplate. Optimize and propagate the tag up to AdaptationSet level.
-
1197 
-
1198  output_suppression_flags_ = 0;
-
1199  return representation.PassScopedPtr();
-
1200 }
-
1201 
-
1202 void Representation::SuppressOnce(SuppressFlag flag) {
-
1203  output_suppression_flags_ |= flag;
-
1204 }
-
1205 
-
1206 bool Representation::HasRequiredMediaInfoFields() {
-
1207  if (HasVODOnlyFields(media_info_) && HasLiveOnlyFields(media_info_)) {
-
1208  LOG(ERROR) << "MediaInfo cannot have both VOD and Live fields.";
-
1209  return false;
-
1210  }
+
1189  if (HasVODOnlyFields(media_info_) &&
+
1190  !representation.AddVODOnlyInfo(media_info_)) {
+
1191  LOG(ERROR) << "Failed to add VOD segment info.";
+
1192  return xml::scoped_xml_ptr<xmlNode>();
+
1193  }
+
1194 
+
1195  if (HasLiveOnlyFields(media_info_) &&
+
1196  !representation.AddLiveOnlyInfo(media_info_, segment_infos_,
+
1197  start_number_)) {
+
1198  LOG(ERROR) << "Failed to add Live info.";
+
1199  return xml::scoped_xml_ptr<xmlNode>();
+
1200  }
+
1201  // TODO(rkuroiwa): It is likely that all representations have the exact same
+
1202  // SegmentTemplate. Optimize and propagate the tag up to AdaptationSet level.
+
1203 
+
1204  output_suppression_flags_ = 0;
+
1205  return representation.PassScopedPtr();
+
1206 }
+
1207 
+
1208 void Representation::SuppressOnce(SuppressFlag flag) {
+
1209  output_suppression_flags_ |= flag;
+
1210 }
1211 
-
1212  if (!media_info_.has_container_type()) {
-
1213  LOG(ERROR) << "MediaInfo missing required field: container_type.";
-
1214  return false;
-
1215  }
-
1216 
-
1217  if (HasVODOnlyFields(media_info_) && !media_info_.has_bandwidth()) {
-
1218  LOG(ERROR) << "Missing 'bandwidth' field. MediaInfo requires bandwidth for "
-
1219  "static profile for generating a valid MPD.";
+
1212 bool Representation::HasRequiredMediaInfoFields() {
+
1213  if (HasVODOnlyFields(media_info_) && HasLiveOnlyFields(media_info_)) {
+
1214  LOG(ERROR) << "MediaInfo cannot have both VOD and Live fields.";
+
1215  return false;
+
1216  }
+
1217 
+
1218  if (!media_info_.has_container_type()) {
+
1219  LOG(ERROR) << "MediaInfo missing required field: container_type.";
1220  return false;
1221  }
1222 
-
1223  VLOG_IF(3, HasLiveOnlyFields(media_info_) && !media_info_.has_bandwidth())
-
1224  << "MediaInfo missing field 'bandwidth'. Using estimated from "
-
1225  "segment size.";
-
1226 
-
1227  return true;
-
1228 }
-
1229 
-
1230 bool Representation::IsContiguous(uint64_t start_time,
-
1231  uint64_t duration,
-
1232  uint64_t size) const {
-
1233  if (segment_infos_.empty())
-
1234  return false;
+
1223  if (HasVODOnlyFields(media_info_) && !media_info_.has_bandwidth()) {
+
1224  LOG(ERROR) << "Missing 'bandwidth' field. MediaInfo requires bandwidth for "
+
1225  "static profile for generating a valid MPD.";
+
1226  return false;
+
1227  }
+
1228 
+
1229  VLOG_IF(3, HasLiveOnlyFields(media_info_) && !media_info_.has_bandwidth())
+
1230  << "MediaInfo missing field 'bandwidth'. Using estimated from "
+
1231  "segment size.";
+
1232 
+
1233  return true;
+
1234 }
1235 
-
1236  // Contiguous segment.
-
1237  const SegmentInfo& previous = segment_infos_.back();
-
1238  const uint64_t previous_segment_end_time =
-
1239  previous.start_time + previous.duration * (previous.repeat + 1);
-
1240  if (previous_segment_end_time == start_time &&
-
1241  segment_infos_.back().duration == duration) {
-
1242  return true;
-
1243  }
-
1244 
-
1245  // No out of order segments.
-
1246  const uint64_t previous_segment_start_time =
-
1247  previous.start_time + previous.duration * previous.repeat;
-
1248  if (previous_segment_start_time >= start_time) {
-
1249  LOG(ERROR) << "Segments should not be out of order segment. Adding segment "
-
1250  "with start_time == "
-
1251  << start_time << " but the previous segment starts at "
-
1252  << previous.start_time << ".";
-
1253  return false;
-
1254  }
-
1255 
-
1256  // A gap since previous.
-
1257  const uint64_t kRoundingErrorGrace = 5;
-
1258  if (previous_segment_end_time + kRoundingErrorGrace < start_time) {
-
1259  LOG(WARNING) << "Found a gap of size "
-
1260  << (start_time - previous_segment_end_time)
-
1261  << " > kRoundingErrorGrace (" << kRoundingErrorGrace
-
1262  << "). The new segment starts at " << start_time
-
1263  << " but the previous segment ends at "
-
1264  << previous_segment_end_time << ".";
-
1265  return false;
-
1266  }
-
1267 
-
1268  // No overlapping segments.
-
1269  if (start_time < previous_segment_end_time - kRoundingErrorGrace) {
-
1270  LOG(WARNING)
-
1271  << "Segments should not be overlapping. The new segment starts at "
-
1272  << start_time << " but the previous segment ends at "
-
1273  << previous_segment_end_time << ".";
-
1274  return false;
-
1275  }
-
1276 
-
1277  // Within rounding error grace but technically not contiguous in terms of MPD.
-
1278  return false;
-
1279 }
-
1280 
-
1281 void Representation::SlideWindow() {
-
1282  DCHECK(!segment_infos_.empty());
-
1283  if (mpd_options_.time_shift_buffer_depth <= 0.0)
-
1284  return;
-
1285 
-
1286  const uint32_t time_scale = GetTimeScale(media_info_);
-
1287  DCHECK_GT(time_scale, 0u);
-
1288 
-
1289  uint64_t time_shift_buffer_depth =
-
1290  static_cast<uint64_t>(mpd_options_.time_shift_buffer_depth * time_scale);
+
1236 bool Representation::IsContiguous(uint64_t start_time,
+
1237  uint64_t duration,
+
1238  uint64_t size) const {
+
1239  if (segment_infos_.empty())
+
1240  return false;
+
1241 
+
1242  // Contiguous segment.
+
1243  const SegmentInfo& previous = segment_infos_.back();
+
1244  const uint64_t previous_segment_end_time =
+
1245  previous.start_time + previous.duration * (previous.repeat + 1);
+
1246  if (previous_segment_end_time == start_time &&
+
1247  segment_infos_.back().duration == duration) {
+
1248  return true;
+
1249  }
+
1250 
+
1251  // No out of order segments.
+
1252  const uint64_t previous_segment_start_time =
+
1253  previous.start_time + previous.duration * previous.repeat;
+
1254  if (previous_segment_start_time >= start_time) {
+
1255  LOG(ERROR) << "Segments should not be out of order segment. Adding segment "
+
1256  "with start_time == "
+
1257  << start_time << " but the previous segment starts at "
+
1258  << previous.start_time << ".";
+
1259  return false;
+
1260  }
+
1261 
+
1262  // A gap since previous.
+
1263  const uint64_t kRoundingErrorGrace = 5;
+
1264  if (previous_segment_end_time + kRoundingErrorGrace < start_time) {
+
1265  LOG(WARNING) << "Found a gap of size "
+
1266  << (start_time - previous_segment_end_time)
+
1267  << " > kRoundingErrorGrace (" << kRoundingErrorGrace
+
1268  << "). The new segment starts at " << start_time
+
1269  << " but the previous segment ends at "
+
1270  << previous_segment_end_time << ".";
+
1271  return false;
+
1272  }
+
1273 
+
1274  // No overlapping segments.
+
1275  if (start_time < previous_segment_end_time - kRoundingErrorGrace) {
+
1276  LOG(WARNING)
+
1277  << "Segments should not be overlapping. The new segment starts at "
+
1278  << start_time << " but the previous segment ends at "
+
1279  << previous_segment_end_time << ".";
+
1280  return false;
+
1281  }
+
1282 
+
1283  // Within rounding error grace but technically not contiguous in terms of MPD.
+
1284  return false;
+
1285 }
+
1286 
+
1287 void Representation::SlideWindow() {
+
1288  DCHECK(!segment_infos_.empty());
+
1289  if (mpd_options_.time_shift_buffer_depth <= 0.0)
+
1290  return;
1291 
-
1292  // The start time of the latest segment is considered the current_play_time,
-
1293  // and this should guarantee that the latest segment will stay in the list.
-
1294  const uint64_t current_play_time = LatestSegmentStartTime(segment_infos_);
-
1295  if (current_play_time <= time_shift_buffer_depth)
-
1296  return;
+
1292  const uint32_t time_scale = GetTimeScale(media_info_);
+
1293  DCHECK_GT(time_scale, 0u);
+
1294 
+
1295  uint64_t time_shift_buffer_depth =
+
1296  static_cast<uint64_t>(mpd_options_.time_shift_buffer_depth * time_scale);
1297 
-
1298  const uint64_t timeshift_limit = current_play_time - time_shift_buffer_depth;
-
1299 
-
1300  // First remove all the SegmentInfos that are completely out of range, by
-
1301  // looking at the very last segment's end time.
-
1302  std::list<SegmentInfo>::iterator first = segment_infos_.begin();
-
1303  std::list<SegmentInfo>::iterator last = first;
-
1304  size_t num_segments_removed = 0;
-
1305  for (; last != segment_infos_.end(); ++last) {
-
1306  const uint64_t last_segment_end_time = LastSegmentEndTime(*last);
-
1307  if (timeshift_limit < last_segment_end_time)
-
1308  break;
-
1309  num_segments_removed += last->repeat + 1;
-
1310  }
-
1311  segment_infos_.erase(first, last);
-
1312  start_number_ += num_segments_removed;
-
1313 
-
1314  // Now some segment in the first SegmentInfo should be left in the list.
-
1315  SegmentInfo* first_segment_info = &segment_infos_.front();
-
1316  DCHECK_LE(timeshift_limit, LastSegmentEndTime(*first_segment_info));
-
1317 
-
1318  // Identify which segments should still be in the SegmentInfo.
-
1319  const int repeat_index =
-
1320  SearchTimedOutRepeatIndex(timeshift_limit, *first_segment_info);
-
1321  CHECK_GE(repeat_index, 0);
-
1322  if (repeat_index == 0)
-
1323  return;
-
1324 
-
1325  first_segment_info->start_time = first_segment_info->start_time +
-
1326  first_segment_info->duration * repeat_index;
-
1327 
-
1328  first_segment_info->repeat = first_segment_info->repeat - repeat_index;
-
1329  start_number_ += repeat_index;
-
1330 }
-
1331 
-
1332 std::string Representation::GetVideoMimeType() const {
-
1333  return GetMimeType("video", media_info_.container_type());
-
1334 }
-
1335 
-
1336 std::string Representation::GetAudioMimeType() const {
-
1337  return GetMimeType("audio", media_info_.container_type());
-
1338 }
-
1339 
-
1340 std::string Representation::GetTextMimeType() const {
-
1341  CHECK(media_info_.has_text_info());
-
1342  if (media_info_.text_info().format() == "ttml") {
-
1343  switch (media_info_.container_type()) {
-
1344  case MediaInfo::CONTAINER_TEXT:
-
1345  return "application/ttml+xml";
-
1346  case MediaInfo::CONTAINER_MP4:
-
1347  return "application/mp4";
-
1348  default:
-
1349  LOG(ERROR) << "Failed to determine MIME type for TTML container: "
-
1350  << media_info_.container_type();
-
1351  return "";
-
1352  }
-
1353  }
-
1354  if (media_info_.text_info().format() == "vtt") {
-
1355  if (media_info_.container_type() == MediaInfo::CONTAINER_TEXT) {
-
1356  return "text/vtt";
-
1357  }
-
1358  LOG(ERROR) << "Failed to determine MIME type for VTT container: "
-
1359  << media_info_.container_type();
-
1360  return "";
-
1361  }
-
1362 
-
1363  LOG(ERROR) << "Cannot determine MIME type for format: "
-
1364  << media_info_.text_info().format()
-
1365  << " container: " << media_info_.container_type();
-
1366  return "";
-
1367 }
+
1298  // The start time of the latest segment is considered the current_play_time,
+
1299  // and this should guarantee that the latest segment will stay in the list.
+
1300  const uint64_t current_play_time = LatestSegmentStartTime(segment_infos_);
+
1301  if (current_play_time <= time_shift_buffer_depth)
+
1302  return;
+
1303 
+
1304  const uint64_t timeshift_limit = current_play_time - time_shift_buffer_depth;
+
1305 
+
1306  // First remove all the SegmentInfos that are completely out of range, by
+
1307  // looking at the very last segment's end time.
+
1308  std::list<SegmentInfo>::iterator first = segment_infos_.begin();
+
1309  std::list<SegmentInfo>::iterator last = first;
+
1310  size_t num_segments_removed = 0;
+
1311  for (; last != segment_infos_.end(); ++last) {
+
1312  const uint64_t last_segment_end_time = LastSegmentEndTime(*last);
+
1313  if (timeshift_limit < last_segment_end_time)
+
1314  break;
+
1315  num_segments_removed += last->repeat + 1;
+
1316  }
+
1317  segment_infos_.erase(first, last);
+
1318  start_number_ += num_segments_removed;
+
1319 
+
1320  // Now some segment in the first SegmentInfo should be left in the list.
+
1321  SegmentInfo* first_segment_info = &segment_infos_.front();
+
1322  DCHECK_LE(timeshift_limit, LastSegmentEndTime(*first_segment_info));
+
1323 
+
1324  // Identify which segments should still be in the SegmentInfo.
+
1325  const int repeat_index =
+
1326  SearchTimedOutRepeatIndex(timeshift_limit, *first_segment_info);
+
1327  CHECK_GE(repeat_index, 0);
+
1328  if (repeat_index == 0)
+
1329  return;
+
1330 
+
1331  first_segment_info->start_time = first_segment_info->start_time +
+
1332  first_segment_info->duration * repeat_index;
+
1333 
+
1334  first_segment_info->repeat = first_segment_info->repeat - repeat_index;
+
1335  start_number_ += repeat_index;
+
1336 }
+
1337 
+
1338 std::string Representation::GetVideoMimeType() const {
+
1339  return GetMimeType("video", media_info_.container_type());
+
1340 }
+
1341 
+
1342 std::string Representation::GetAudioMimeType() const {
+
1343  return GetMimeType("audio", media_info_.container_type());
+
1344 }
+
1345 
+
1346 std::string Representation::GetTextMimeType() const {
+
1347  CHECK(media_info_.has_text_info());
+
1348  if (media_info_.text_info().format() == "ttml") {
+
1349  switch (media_info_.container_type()) {
+
1350  case MediaInfo::CONTAINER_TEXT:
+
1351  return "application/ttml+xml";
+
1352  case MediaInfo::CONTAINER_MP4:
+
1353  return "application/mp4";
+
1354  default:
+
1355  LOG(ERROR) << "Failed to determine MIME type for TTML container: "
+
1356  << media_info_.container_type();
+
1357  return "";
+
1358  }
+
1359  }
+
1360  if (media_info_.text_info().format() == "vtt") {
+
1361  if (media_info_.container_type() == MediaInfo::CONTAINER_TEXT) {
+
1362  return "text/vtt";
+
1363  }
+
1364  LOG(ERROR) << "Failed to determine MIME type for VTT container: "
+
1365  << media_info_.container_type();
+
1366  return "";
+
1367  }
1368 
-
1369 bool Representation::GetEarliestTimestamp(double* timestamp_seconds) {
-
1370  DCHECK(timestamp_seconds);
-
1371 
-
1372  if (segment_infos_.empty())
-
1373  return false;
+
1369  LOG(ERROR) << "Cannot determine MIME type for format: "
+
1370  << media_info_.text_info().format()
+
1371  << " container: " << media_info_.container_type();
+
1372  return "";
+
1373 }
1374 
-
1375  *timestamp_seconds = static_cast<double>(segment_infos_.begin()->start_time) /
-
1376  GetTimeScale(media_info_);
-
1377  return true;
-
1378 }
-
1379 
-
1380 } // namespace shaka
-
void OnSetFrameRateForRepresentation(uint32_t representation_id, uint32_t frame_duration, uint32_t timescale)
Definition: mpd_builder.cc:863
-
virtual void AddNewSegment(uint64_t start_time, uint64_t duration, uint64_t size)
- -
bool WriteMpdToFile(media::File *output_file)
Definition: mpd_builder.cc:423
-
AdaptationSet(uint32_t adaptation_set_id, const std::string &lang, const MpdOptions &mpd_options, MpdBuilder::MpdType mpd_type, base::AtomicSequenceNumber *representation_counter)
Definition: mpd_builder.cc:669
+
1375 bool Representation::GetEarliestTimestamp(double* timestamp_seconds) {
+
1376  DCHECK(timestamp_seconds);
+
1377 
+
1378  if (segment_infos_.empty())
+
1379  return false;
+
1380 
+
1381  *timestamp_seconds = static_cast<double>(segment_infos_.begin()->start_time) /
+
1382  GetTimeScale(media_info_);
+
1383  return true;
+
1384 }
+
1385 
+
1386 } // namespace shaka
+
void OnSetFrameRateForRepresentation(uint32_t representation_id, uint32_t frame_duration, uint32_t timescale)
Definition: mpd_builder.cc:869
+
virtual void AddNewSegment(uint64_t start_time, uint64_t duration, uint64_t size)
+ +
bool WriteMpdToFile(media::File *output_file)
Definition: mpd_builder.cc:424
+
AdaptationSet(uint32_t adaptation_set_id, const std::string &lang, const MpdOptions &mpd_options, MpdBuilder::MpdType mpd_type, base::AtomicSequenceNumber *representation_counter)
Definition: mpd_builder.cc:675
-
virtual void SetSampleDuration(uint32_t sample_duration)
-
virtual Representation * AddRepresentation(const MediaInfo &media_info)
Definition: mpd_builder.cc:688
+
virtual void SetSampleDuration(uint32_t sample_duration)
+
virtual Representation * AddRepresentation(const MediaInfo &media_info)
Definition: mpd_builder.cc:694
std::string LanguageToShortestForm(const std::string &language)
Define an abstract file interface.
Definition: file.h:24
-
virtual void AddContentProtectionElement(const ContentProtectionElement &element)
Definition: mpd_builder.cc:732
-
Representation(const MediaInfo &media_info, const MpdOptions &mpd_options, uint32_t representation_id, scoped_ptr< RepresentationStateChangeListener > state_change_listener)
+
virtual void AddContentProtectionElement(const ContentProtectionElement &element)
Definition: mpd_builder.cc:738
+
Representation(const MediaInfo &media_info, const MpdOptions &mpd_options, uint32_t representation_id, scoped_ptr< RepresentationStateChangeListener > state_change_listener)
-
virtual void AddRole(Role role)
Definition: mpd_builder.cc:744
-
void AddBaseUrl(const std::string &base_url)
Definition: mpd_builder.cc:409
-
virtual void UpdateContentProtectionPssh(const std::string &drm_uuid, const std::string &pssh)
Definition: mpd_builder.cc:738
-
virtual void SetGroup(int group_number)
Definition: mpd_builder.cc:837
-
xml::scoped_xml_ptr< xmlNode > GetXml()
-
virtual bool ToString(std::string *output)
Definition: mpd_builder.cc:428
-
virtual void ForceSetSegmentAlignment(bool segment_alignment)
Definition: mpd_builder.cc:831
-
static void MakePathsRelativeToMpd(const std::string &mpd_path, MediaInfo *media_info)
Definition: mpd_builder.cc:641
-
MpdBuilder(MpdType type, const MpdOptions &mpd_options)
Definition: mpd_builder.cc:401
-
xml::scoped_xml_ptr< xmlNode > GetXml()
Definition: mpd_builder.cc:754
-
virtual void AddContentProtectionElement(const ContentProtectionElement &element)
+
virtual void AddRole(Role role)
Definition: mpd_builder.cc:750
+
void AddBaseUrl(const std::string &base_url)
Definition: mpd_builder.cc:410
+
virtual void UpdateContentProtectionPssh(const std::string &drm_uuid, const std::string &pssh)
Definition: mpd_builder.cc:744
+
virtual void SetGroup(int group_number)
Definition: mpd_builder.cc:843
+
xml::scoped_xml_ptr< xmlNode > GetXml()
+
virtual bool ToString(std::string *output)
Definition: mpd_builder.cc:429
+
virtual void ForceSetSegmentAlignment(bool segment_alignment)
Definition: mpd_builder.cc:837
+
static void MakePathsRelativeToMpd(const std::string &mpd_path, MediaInfo *media_info)
Definition: mpd_builder.cc:647
+
MpdBuilder(MpdType type, const MpdOptions &mpd_options)
Definition: mpd_builder.cc:402
+
xml::scoped_xml_ptr< xmlNode > GetXml()
Definition: mpd_builder.cc:760
+
virtual void AddContentProtectionElement(const ContentProtectionElement &element)
-
virtual AdaptationSet * AddAdaptationSet(const std::string &lang)
Definition: mpd_builder.cc:413
-
virtual int Group() const
Definition: mpd_builder.cc:841
-
Defines Mpd Options.
Definition: mpd_options.h:17
-
void OnNewSegmentForRepresentation(uint32_t representation_id, uint64_t start_time, uint64_t duration)
Definition: mpd_builder.cc:852
-
virtual void UpdateContentProtectionPssh(const std::string &drm_uuid, const std::string &pssh)
+
virtual AdaptationSet * AddAdaptationSet(const std::string &lang)
Definition: mpd_builder.cc:414
+
virtual int Group() const
Definition: mpd_builder.cc:847
+
Defines Mpd Options.
Definition: mpd_options.h:15
+
void OnNewSegmentForRepresentation(uint32_t representation_id, uint64_t start_time, uint64_t duration)
Definition: mpd_builder.cc:858
+
virtual void UpdateContentProtectionPssh(const std::string &drm_uuid, const std::string &pssh)
-
void SuppressOnce(SuppressFlag flag)
+
void SuppressOnce(SuppressFlag flag)
diff --git a/docs/dd/d12/mpd__writer_8cc_source.html b/docs/dd/d12/mpd__writer_8cc_source.html index b1b2cf019c..d54e78f7ef 100644 --- a/docs/dd/d12/mpd__writer_8cc_source.html +++ b/docs/dd/d12/mpd__writer_8cc_source.html @@ -216,12 +216,12 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
127 }
128 
129 } // namespace shaka
-
static void MakePathsRelativeToMpd(const std::string &mpd_path, MediaInfo *media_info)
Definition: mpd_builder.cc:641
+
static void MakePathsRelativeToMpd(const std::string &mpd_path, MediaInfo *media_info)
Definition: mpd_builder.cc:647
static bool ReadFileToString(const char *file_name, std::string *contents)
Definition: file.cc:184
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 1d92cb720e..df21b4bf21 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 eb3a765757..236da9297f 100644 --- a/docs/dd/d17/classshaka_1_1media_1_1Demuxer.html +++ b/docs/dd/d17/classshaka_1_1media_1_1Demuxer.html @@ -295,7 +295,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 768e2d0683..0ddf6b1695 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 a4f5dfc425..851deee72f 100644 --- a/docs/dd/d19/video__stream__info_8cc_source.html +++ b/docs/dd/d19/video__stream__info_8cc_source.html @@ -197,7 +197,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d30/wvm__media__parser_8cc_source.html b/docs/dd/d30/wvm__media__parser_8cc_source.html index b4489673a0..b496a31617 100644 --- a/docs/dd/d30/wvm__media__parser_8cc_source.html +++ b/docs/dd/d30/wvm__media__parser_8cc_source.html @@ -1264,7 +1264,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 fcc5df51ab..f142254546 100644 --- a/docs/dd/d3b/mp4_2segmenter_8h_source.html +++ b/docs/dd/d3b/mp4_2segmenter_8h_source.html @@ -202,26 +202,26 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
152 } // namespace shaka
153 
154 #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:164
-
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:380
-
void SetComplete()
Set progress to 100%.
Definition: segmenter.cc:396
+
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:383
+
void SetComplete()
Set progress to 100%.
Definition: segmenter.cc:399
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:313
+
Status AddSample(const MediaStream *stream, scoped_refptr< MediaSample > sample)
Definition: segmenter.cc:316
This class listens to progress updates events.
- +
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:31
-
double GetDuration() const
Definition: segmenter.cc:371
+
double GetDuration() const
Definition: segmenter.cc:374
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 7284221ea2..468fcb86de 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 6675b39da4..d643c61417 100644 --- a/docs/dd/d42/encryptor_8h_source.html +++ b/docs/dd/d42/encryptor_8h_source.html @@ -151,7 +151,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d46/webm__parser_8h_source.html b/docs/dd/d46/webm__parser_8h_source.html index a3c509d875..767b5568bb 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 86327956b0..fdcbf8538d 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 4c0ce77b30..80118ccc5b 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 3028704a46..02209d251f 100644 --- a/docs/dd/d54/widevine__encryption__flags_8h_source.html +++ b/docs/dd/d54/widevine__encryption__flags_8h_source.html @@ -125,7 +125,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d59/classshaka_1_1media_1_1mp2t_1_1EsParserH265-members.html b/docs/dd/d59/classshaka_1_1media_1_1mp2t_1_1EsParserH265-members.html index 401af46975..97d514c512 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 39efe8cf83..4adc4fbaaa 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 042202041d..f509bb3f45 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 7351ad0e26..2b204990b2 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 5e94ff382a..d134287de9 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 4f600a4caf..f1a909a105 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 d9eae2b17c..198eba0462 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 91f09a30f4..f748ef962d 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 166f8fedce..1ae067625c 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 d0cb410858..8c84dfd243 100644 --- a/docs/dd/d80/media__sample_8h_source.html +++ b/docs/dd/d80/media__sample_8h_source.html @@ -260,7 +260,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d87/memory__file_8cc_source.html b/docs/dd/d87/memory__file_8cc_source.html index c2ee93d0f3..2fa845b2a8 100644 --- a/docs/dd/d87/memory__file_8cc_source.html +++ b/docs/dd/d87/memory__file_8cc_source.html @@ -241,7 +241,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d88/pes__packet__generator_8h_source.html b/docs/dd/d88/pes__packet__generator_8h_source.html index 087bc39396..84b054d6ab 100644 --- a/docs/dd/d88/pes__packet__generator_8h_source.html +++ b/docs/dd/d88/pes__packet__generator_8h_source.html @@ -174,7 +174,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 8c3df12931..1f9652a008 100644 --- a/docs/dd/d8c/file__test__util_8h_source.html +++ b/docs/dd/d8c/file__test__util_8h_source.html @@ -119,7 +119,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d8d/structshaka_1_1media_1_1mp4_1_1SegmentIndex-members.html b/docs/dd/d8d/structshaka_1_1media_1_1mp4_1_1SegmentIndex-members.html index 382093b035..82965a1a75 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 e8bc51e2f2..65bd003ce6 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 510064b889..1111517235 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 f09fb32e4e..aafa77dc0c 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 2049a20fe2..8d7eb4ddb7 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 6c79e122ea..17ab407a04 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 08742de1b8..d4af6e4260 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 @@ -217,7 +217,7 @@ double cluster_length_sec< 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 8d66c7ad00..edc68ee5c1 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 @@ -181,7 +181,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 29afd4277f..24d0adb1a9 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 7117ebc71f..6aff9df720 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 321f5f14ff..36cee964c7 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 9ac0f598a1..a3b3c6ee33 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 35b58e47c1..030303e877 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 0d40fc91c3..dddfb2c1b0 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 4cdc4a39cd..f2a13d5ccb 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 043b0ea1da..da04185762 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 f572bc32e8..5e7aa403a1 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 e4513e6ba5..eb39d4a9eb 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 6a0ab73b48..85adf7aa42 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 e093f6028c..a448ea56fe 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 @@ -207,7 +207,7 @@ virtual Sta
Returns
OK on success, an error status otherwise.
-

Definition at line 114 of file segmenter.cc.

+

Definition at line 117 of file segmenter.cc.

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

Finalize the segmenter.

Returns
OK on success, an error status otherwise.
-

Definition at line 103 of file segmenter.cc.

+

Definition at line 106 of file segmenter.cc.

@@ -253,7 +253,7 @@ virtual Sta @@ -271,7 +271,7 @@ virtual Sta @@ -416,7 +416,7 @@ virtual Sta
Returns
OK on success, an error status otherwise.
-

Definition at line 48 of file segmenter.cc.

+

Definition at line 49 of file segmenter.cc.

@@ -427,7 +427,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 802776c8fa..fd9dc3a54a 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 6fa08e68a8..189372bb7f 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 82548767f9..46a1aa7c68 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 2ac95e5716..6e7859e1ee 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 3a56525dc6..43c9c25d6c 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 382a5944fa..8b948b777b 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 631ad2f113..df77b14bc9 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 b40cd5fee5..c839e7474d 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 a70379d331..1955a1dfb3 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 a93b801626..800fbb0047 100644 --- a/docs/dd/de7/xml__node_8h_source.html +++ b/docs/dd/de7/xml__node_8h_source.html @@ -230,7 +230,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/dee/box__definitions_8cc_source.html b/docs/dd/dee/box__definitions_8cc_source.html index 8647867cf8..d4e595dff1 100644 --- a/docs/dd/dee/box__definitions_8cc_source.html +++ b/docs/dd/dee/box__definitions_8cc_source.html @@ -2943,7 +2943,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 4eb1637f8a..f6d4debad0 100644 --- a/docs/dd/df2/webm_2multi__segment__segmenter_8h_source.html +++ b/docs/dd/df2/webm_2multi__segment__segmenter_8h_source.html @@ -149,7 +149,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/df5/structshaka_1_1media_1_1mp4_1_1TrackFragmentRun.html b/docs/dd/df5/structshaka_1_1media_1_1mp4_1_1TrackFragmentRun.html index fc24f62972..bb64255daa 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 308b6edcad..8f562eddea 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 9e9eee28b1..130aae1656 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 d3fb339754..285ac50825 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 be048d6296..99e46ed19c 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 ea58a2f548..95a8e152b2 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 e47f675d2f..0c1311d0a3 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 956803b56b..7d1bb4eaf1 100644 --- a/docs/de/d17/cluster__builder_8cc_source.html +++ b/docs/de/d17/cluster__builder_8cc_source.html @@ -330,7 +330,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d1a/classshaka_1_1media_1_1wvm_1_1WvmMediaParser-members.html b/docs/de/d1a/classshaka_1_1media_1_1wvm_1_1WvmMediaParser-members.html index 6ae4e452c1..2379041b84 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 d361dff245..19fa78a2ea 100644 --- a/docs/de/d1e/mp4_2single__segment__segmenter_8cc_source.html +++ b/docs/de/d1e/mp4_2single__segment__segmenter_8cc_source.html @@ -330,12 +330,12 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
virtual void OnSampleDurationReady(uint32_t sample_duration)=0
-
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:251
+
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:254
static bool Delete(const char *file_name)
Definition: file.cc:162
diff --git a/docs/de/d22/aes__pattern__cryptor_8cc_source.html b/docs/de/d22/aes__pattern__cryptor_8cc_source.html index 4357d52bc8..17a0e67aa6 100644 --- a/docs/de/d22/aes__pattern__cryptor_8cc_source.html +++ b/docs/de/d22/aes__pattern__cryptor_8cc_source.html @@ -198,7 +198,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 19580ee6db..f0d357b809 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 d1b6457265..f538ccee65 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 d737a1f88a..87c8f921e3 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 860dea5de6..9474225d7c 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 c38e8c8749..8dfb05bc58 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 c8e58c0857..090a0a5139 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 4dca3ff33c..f139ee5ab2 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 57fd33a942..239f4ffc46 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 0769533ad4..d68cbbbf9b 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 f6c4f86a6c..8a52143074 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 00233478e2..677bc76e2f 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 5cd360d560..aaf0ca88da 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 d559bbb3ac..de63579367 100644 --- a/docs/de/d52/classshaka_1_1Representation.html +++ b/docs/de/d52/classshaka_1_1Representation.html @@ -200,7 +200,7 @@ template<MpdBuilder::MpdType type> -

Definition at line 1030 of file mpd_builder.cc.

+

Definition at line 1036 of file mpd_builder.cc.

@@ -234,7 +234,7 @@ template<MpdBuilder::MpdType type> -

Definition at line 1087 of file mpd_builder.cc.

+

Definition at line 1093 of file mpd_builder.cc.

@@ -285,7 +285,7 @@ template<MpdBuilder::MpdType type> -

Definition at line 1099 of file mpd_builder.cc.

+

Definition at line 1105 of file mpd_builder.cc.

@@ -303,7 +303,7 @@ template<MpdBuilder::MpdType type>
Returns
Copy of <Representation>.
-

Definition at line 1139 of file mpd_builder.cc.

+

Definition at line 1145 of file mpd_builder.cc.

@@ -348,7 +348,7 @@ template<MpdBuilder::MpdType type>

Tries to initialize the instance. If this does not succeed, the instance should not be used.

Returns
true on success, false otherwise.
-

Definition at line 1045 of file mpd_builder.cc.

+

Definition at line 1051 of file mpd_builder.cc.

@@ -381,7 +381,7 @@ template<MpdBuilder::MpdType type> -

Definition at line 1123 of file mpd_builder.cc.

+

Definition at line 1129 of file mpd_builder.cc.

@@ -400,7 +400,7 @@ template<MpdBuilder::MpdType type>

By calling this methods, the next time GetXml() is called, the corresponding attributes will not be set. For example, if SuppressOnce(kSuppressWidth) is called, then GetXml() will return a <Representation> element without a attribute. Note that it only applies to the next call to GetXml(), calling GetXml() again without calling this methods will return a <Representation> element with the attribute. This may be called multiple times to set different (or the same) flags.

-

Definition at line 1202 of file mpd_builder.cc.

+

Definition at line 1208 of file mpd_builder.cc.

@@ -445,7 +445,7 @@ template<MpdBuilder::MpdType type>
Attention
This might get removed once DASH IF IOP specification makes a a clear guideline on how to handle key rotation. Also to get this working with shaka-player, this method DOES NOT update the PSSH element. Instead, it removes the element regardless of the content of pssh.
-

Definition at line 1093 of file mpd_builder.cc.

+

Definition at line 1099 of file mpd_builder.cc.

@@ -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 cea1ddeaca..cbd9905031 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 2a0389d5b2..cbf1e2adc8 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 33707dc9dd..c85d485e17 100644 --- a/docs/de/d5c/mpd__flags_8h_source.html +++ b/docs/de/d5c/mpd__flags_8h_source.html @@ -114,7 +114,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d60/classshaka_1_1media_1_1mp2t_1_1ProgramMapTableWriter-members.html b/docs/de/d60/classshaka_1_1media_1_1mp2t_1_1ProgramMapTableWriter-members.html index 3267ab4d9c..10dd30be68 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 76ec3e36d9..377a2f905c 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 1f309d43a7..53b625ad34 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 177cf661c7..b66242f9ae 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 b5b68671eb..8465aa7c88 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 a872caae06..aebae8da73 100644 --- a/docs/de/d77/webm__content__encodings__client_8cc_source.html +++ b/docs/de/d77/webm__content__encodings__client_8cc_source.html @@ -361,7 +361,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d7b/mp4__media__parser_8h_source.html b/docs/de/d7b/mp4__media__parser_8h_source.html index 3f6745da53..58af72739e 100644 --- a/docs/de/d7b/mp4__media__parser_8h_source.html +++ b/docs/de/d7b/mp4__media__parser_8h_source.html @@ -206,7 +206,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d7e/classshaka_1_1media_1_1mp2t_1_1TsSectionPsi.html b/docs/de/d7e/classshaka_1_1media_1_1mp2t_1_1TsSectionPsi.html index 8872abfdfc..d4f3c378b9 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 22bbdcf029..d5288fdd2e 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 c1d6765ecc..066155a4ee 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 e8ba255ed5..aa892d8122 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 09db0873c6..298ee668dd 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 b0657d2566..58e2fbad0b 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 a373320385..7c29ca4323 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 e8bb93817d..c2ee0df2ba 100644 --- a/docs/de/dab/es__parser__h26x_8cc_source.html +++ b/docs/de/dab/es__parser__h26x_8cc_source.html @@ -415,7 +415,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 a38a61acf7..82996bfd5a 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 6d4a75a739..9e3f8ca15f 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 799c0157b6..e110ffa08c 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/dc1/demuxer_8h_source.html b/docs/de/dc1/demuxer_8h_source.html index a6224211e4..a4f6c91fcb 100644 --- a/docs/de/dc1/demuxer_8h_source.html +++ b/docs/de/dc1/demuxer_8h_source.html @@ -187,7 +187,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/dc2/classshaka_1_1media_1_1H265Parser.html b/docs/de/dc2/classshaka_1_1media_1_1H265Parser.html index b2564e1751..b2ba84ca2e 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 52aaa05d8e..fab7719061 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 dc6254b75e..dd44e8c63c 100644 --- a/docs/de/dcb/ts__segmenter_8h_source.html +++ b/docs/de/dcb/ts__segmenter_8h_source.html @@ -211,7 +211,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/dcc/mock__mpd__notifier_8cc_source.html b/docs/de/dcc/mock__mpd__notifier_8cc_source.html index e1ed7a71ba..a76bbce112 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 ab6fc1a49d..a836341673 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 f7d17bc352..37e35dc437 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 ea9fd22b3f..59616913a1 100644 --- a/docs/de/dd6/muxer__listener__test__helper_8cc_source.html +++ b/docs/de/dd6/muxer__listener__test__helper_8cc_source.html @@ -219,7 +219,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 8516f9ac1a..4872966706 100644 --- a/docs/de/ddd/classshaka_1_1media_1_1Muxer-members.html +++ b/docs/de/ddd/classshaka_1_1media_1_1Muxer-members.html @@ -116,7 +116,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 f48e892e54..e7fd792db5 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 @@ -256,7 +256,7 @@ void  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 1faed3368c..7bff8c7ac8 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 172ecc0895..16d9128bc6 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 8e1ac3a782..3450cfeb73 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 @@ -117,7 +117,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 b2c729762c..0fea20fa58 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 4db372186a..126b835feb 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 002828d65d..15d5251c91 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 74debaf9d2..4599cfca0c 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 237e5f7211..535a592edf 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 @@ -203,7 +203,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 e84c71f70f..0e4bd0d60b 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 c897e3e4e6..d3bcec38a4 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 42a0979b28..35d5e654ca 100644 --- a/docs/de/dfd/stream__info_8cc_source.html +++ b/docs/de/dfd/stream__info_8cc_source.html @@ -143,7 +143,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d05/vp__codec__configuration__record_8cc_source.html b/docs/df/d05/vp__codec__configuration__record_8cc_source.html index 31d5b365d3..82898eb0e6 100644 --- a/docs/df/d05/vp__codec__configuration__record_8cc_source.html +++ b/docs/df/d05/vp__codec__configuration__record_8cc_source.html @@ -359,7 +359,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 df509f523d..24e5475a06 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 b83c20e634..a1fe101207 100644 --- a/docs/df/d1c/classshaka_1_1media_1_1MediaSample-members.html +++ b/docs/df/d1c/classshaka_1_1media_1_1MediaSample-members.html @@ -123,7 +123,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 4f88fca326..56ce595147 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 699dfec171..ae08bb39df 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 8f5d11fd60..009f27a796 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 008f396cad..5b2ccb9159 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 7cc9b031b9..fda89bfdc4 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 8b0babbc77..8372168fd4 100644 --- a/docs/df/d31/muxer__util_8cc_source.html +++ b/docs/df/d31/muxer__util_8cc_source.html @@ -264,7 +264,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d32/audio__stream__info_8h_source.html b/docs/df/d32/audio__stream__info_8h_source.html index e5bed0a0e6..16bc16abce 100644 --- a/docs/df/d32/audio__stream__info_8h_source.html +++ b/docs/df/d32/audio__stream__info_8h_source.html @@ -193,7 +193,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 0befc330c2..8bfa72e545 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 97d3b38fea..d038229518 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 5d6a7a8863..bc92856e30 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 879f956a2c..d4fdd20439 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 04c0d4d2a6..a0f4983899 100644 --- a/docs/df/d46/classshaka_1_1media_1_1Muxer.html +++ b/docs/df/d46/classshaka_1_1media_1_1Muxer.html @@ -342,7 +342,7 @@ class MediaStream 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 a8654ae758..257d7489e8 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'); 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 3fbede987c..a13d44f49f 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 a92ac92b33..e2f4d8d07f 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 c9a77d2258..1a4880c642 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 @@ -121,7 +121,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 82adef79b2..ac223e3589 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 de2c351c6f..cab613be36 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 b72b8c7e09..4cba552192 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 b61e7c4adf..8010bf173f 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 61cee10a8b..f1f81741b2 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 7bec07f8a7..38e673794c 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 2fbeb0848e..de36ca1f1b 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 13560c572e..0a1eaf183f 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 c2f15b3cc9..a0d83be7eb 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 8e13d79e3f..860bd11d37 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 e8046d3839..4dd35350c8 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 35e8be9a2b..d06598a8fd 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 fbcef27729..8df99ba659 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 ddccb7a732..7b6ef0f1ea 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 @@ -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 8f35fbaa65..29edb42a10 100644 --- a/docs/df/d8d/es__parser__h26x_8h_source.html +++ b/docs/df/d8d/es__parser__h26x_8h_source.html @@ -222,7 +222,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 864738b29e..e17a9988f6 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 13eac2aa40..e3d76c0742 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 4df880c241..0acbc98d01 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 34c479bb34..80878970fe 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 aff37073c9..59576b5711 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 be3d7aaabe..5dea733293 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 ef15a1bb7e..b73a7d2a1b 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 0b2a405e82..276587e2a1 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 658a51ea82..02097d31a3 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 9b040fad93..6f561e521d 100644 --- a/docs/df/dd2/mpd__utils_8h_source.html +++ b/docs/df/dd2/mpd__utils_8h_source.html @@ -174,7 +174,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/dd2/structshaka_1_1media_1_1H264Pps-members.html b/docs/df/dd2/structshaka_1_1media_1_1H264Pps-members.html index c51b600545..2bfa05518a 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 ba5d152742..49488522b0 100644 --- a/docs/df/ddc/webm_2segmenter_8h_source.html +++ b/docs/df/ddc/webm_2segmenter_8h_source.html @@ -225,32 +225,32 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
166 } // namespace shaka
167 
168 #endif // MEDIA_FORMATS_WEBM_SEGMENTER_H_
-
Status WriteSegmentHeader(uint64_t file_size, MkvWriter *writer)
Writes the Segment header to writer.
Definition: segmenter.cc:204
+
Status WriteSegmentHeader(uint64_t file_size, MkvWriter *writer)
Writes the Segment header to writer.
Definition: segmenter.cc:207
Abstract class holds stream information.
Definition: stream_info.h:26
- -
Status AddSample(scoped_refptr< MediaSample > sample)
Definition: segmenter.cc:114
+ +
Status AddSample(scoped_refptr< MediaSample > sample)
Definition: segmenter.cc:117
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:242
+
Status SetCluster(uint64_t start_webm_timecode, uint64_t position, MkvWriter *writer)
Creates a Cluster object with the given parameters.
Definition: segmenter.cc:245
This class listens to progress updates events.
virtual bool GetIndexRangeStartAndEnd(uint64_t *start, uint64_t *end)=0
-
Status Initialize(scoped_ptr< MkvWriter > writer, StreamInfo *info, ProgressListener *progress_listener, MuxerListener *muxer_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds)
Definition: segmenter.cc:48
+
Status Initialize(scoped_ptr< MkvWriter > writer, StreamInfo *info, ProgressListener *progress_listener, MuxerListener *muxer_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, double clear_lead_in_seconds)
Definition: segmenter.cc:49
An implementation of IMkvWriter using our File type.
Definition: mkv_writer.h:21
- +
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:31
-
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:251
+
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:254
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:198
+
uint64_t FromWebMTimecode(uint64_t time_webm_timecode)
Converts the given time in WebM timecode to ISO BMFF timescale.
Definition: segmenter.cc:201
Holds video stream information.
Holds audio stream information.
-
uint64_t FromBMFFTimescale(uint64_t time_timescale)
Definition: segmenter.cc:191
+
uint64_t FromBMFFTimescale(uint64_t time_timescale)
Definition: segmenter.cc:194
diff --git a/docs/df/dde/ts__section__psi_8cc_source.html b/docs/df/dde/ts__section__psi_8cc_source.html index 100e3edac5..40262dcc1a 100644 --- a/docs/df/dde/ts__section__psi_8cc_source.html +++ b/docs/df/dde/ts__section__psi_8cc_source.html @@ -228,7 +228,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/de2/structshaka_1_1media_1_1H264SEIRecoveryPoint.html b/docs/df/de2/structshaka_1_1media_1_1H264SEIRecoveryPoint.html index 544a659c52..1de239affa 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 79a4f3640c..e720b26721 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 5b7888ec85..17c80d53f3 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 3a42155f70..59f3a84a21 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/dir_0494b8c96e3190a776d2b97ade9c8ddf.html b/docs/dir_0494b8c96e3190a776d2b97ade9c8ddf.html index fe76317feb..dd6b475625 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 c46fa08814..a8d335dda4 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 40b33bcf61..3c50fdb217 100644 --- a/docs/dir_279fd47bebb21302c25cfb685e84c359.html +++ b/docs/dir_279fd47bebb21302c25cfb685e84c359.html @@ -119,7 +119,7 @@ Files diff --git a/docs/dir_2eceb70145328c029a5f43350007537a.html b/docs/dir_2eceb70145328c029a5f43350007537a.html index 83724b9882..8a5eba3cad 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 0081318858..78bfa4827a 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 fec5cb80e6..c6c6bc8f8a 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 be5c751fb7..4aecd8e8ae 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 0e7104a875..e46f9a8b53 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 5bc1b9ea00..3bff6d23e0 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 91abfc625b..7db69c8880 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 50b429c1f2..239d8f76f0 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 7bee6e5e50..fdae3547bf 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 42c28b2de4..c80c78ae23 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 dc7908fcfe..e05a1be8e8 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 318bf8b5e2..cfb96cd27e 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 c5ee109e2f..9a32a2b061 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 6e3d7db0ad..b46b1b81cf 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 f250f6b3eb..c35f4802cd 100644 --- a/docs/files.html +++ b/docs/files.html @@ -430,7 +430,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions.html b/docs/functions.html index 7c8a42412a..babff0d51b 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 caf04152c2..184bbbd92d 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 211956f864..bdfead9a2b 100644 --- a/docs/functions_c.html +++ b/docs/functions_c.html @@ -241,7 +241,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_d.html b/docs/functions_d.html index 2883ad98b3..5bb226b7b0 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 b949cef6d8..15b4a893ef 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 76e10cd2d7..cf57edaef6 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 765592d19e..8ab6d8d59d 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 91c6ab2bc3..2640decfd4 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 7533d0516f..a271f91b61 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 b0a395f527..a94a811ac4 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 d148b10874..0f3b490f83 100644 --- a/docs/functions_func_c.html +++ b/docs/functions_func_c.html @@ -241,7 +241,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_d.html b/docs/functions_func_d.html index 0555247a74..59cad2bd26 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 15cd04de45..e79ffb2e5d 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 2e3cce6503..72f9b0ec52 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 65cfb3faf9..05520400d7 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 e238633e46..f8d414b51e 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 302e26d71c..493eabbb1e 100644 --- a/docs/functions_func_i.html +++ b/docs/functions_func_i.html @@ -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 9f50c27644..0199506df8 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 8a983549e8..35740622f0 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 8b67521de9..b97b9e9622 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 318fbb70e1..4a0aea4f9b 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 e2f9cedc85..22706bc3b9 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 52c0b28fbf..55aef89047 100644 --- a/docs/functions_func_p.html +++ b/docs/functions_func_p.html @@ -228,7 +228,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_r.html b/docs/functions_func_r.html index 3ae10cce55..9b9b03d5fa 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 9d6f7d2e6e..da03c088bb 100644 --- a/docs/functions_func_s.html +++ b/docs/functions_func_s.html @@ -282,7 +282,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_t.html b/docs/functions_func_t.html index afee0a4b20..e202ea39ed 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 3d1bd4a984..5dd07a7609 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 be892aca70..ba9843dab0 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 41447d2adb..3f8fe7f34f 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 ae40824dd8..609dafba43 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 772c0d1b0b..075c12ffe7 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 9e788dadb7..3c6a32ba83 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 ee83a33e71..f71f76a269 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 9725ba7e2f..7aa11c4603 100644 --- a/docs/functions_i.html +++ b/docs/functions_i.html @@ -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 40be60bfb3..cc45df7384 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 18e358ea72..231cab1d20 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 9939252b62..c8f2180fa7 100644 --- a/docs/functions_m.html +++ b/docs/functions_m.html @@ -147,7 +147,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_n.html b/docs/functions_n.html index c93847522c..6f330f8f5f 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 bebf8f084f..29dd814768 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 174b041eed..62f8721502 100644 --- a/docs/functions_p.html +++ b/docs/functions_p.html @@ -122,9 +122,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
Here is a list of all documented class members with links to the class documentation for each member:

- p -

    -
  • packager_version_string -: shaka::media::MuxerOptions -
  • Parse() : shaka::media::AACAudioSpecificConfig , shaka::media::DecoderConfigurationRecord @@ -201,7 +198,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : shaka::media::mp4::BoxBuffer
  • Position() -: shaka::media::MkvWriter +: shaka::media::MkvWriter
  • Post() : shaka::media::HttpKeyFetcher @@ -217,7 +214,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : shaka::media::mp4::ID3v2
  • ProducerConsumerQueue() -: shaka::media::ProducerConsumerQueue< T > +: shaka::media::ProducerConsumerQueue< T >
  • pts() : shaka::media::mp2t::PesPacket @@ -237,7 +234,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_r.html b/docs/functions_r.html index 684ec579f8..996a45b629 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 1b6b99b831..7f4e78a028 100644 --- a/docs/functions_s.html +++ b/docs/functions_s.html @@ -297,7 +297,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_t.html b/docs/functions_t.html index 8bf9e6457b..82d23609fc 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 4e125b199e..84bc47f78b 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 0e19733374..b30e71e705 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 1214e6f1db..dd32e2ecde 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 89328b977a..bb3fb35892 100644 --- a/docs/functions_vars.html +++ b/docs/functions_vars.html @@ -117,9 +117,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • output_file_name : shaka::media::MuxerOptions
  • -
  • packager_version_string -: shaka::media::MuxerOptions -
  • private_frame : shaka::media::mp4::ID3v2
  • @@ -145,7 +142,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_w.html b/docs/functions_w.html index 52c16163af..6f7182df93 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 d14a3d3bf8..ccec0dcac8 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 ed13f16c1b..bdb95d4b5c 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 e901e5d72c..abf3490cd7 100644 --- a/docs/hierarchy.html +++ b/docs/hierarchy.html @@ -368,7 +368,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/index.html b/docs/index.html index 4e19630b43..7c2ecab6f8 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 e027d1d647..5ee059caac 100644 --- a/docs/namespacemembers.html +++ b/docs/namespacemembers.html @@ -124,7 +124,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/namespacemembers_func.html b/docs/namespacemembers_func.html index 456c0c9b08..963b94556b 100644 --- a/docs/namespacemembers_func.html +++ b/docs/namespacemembers_func.html @@ -124,7 +124,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/namespaces.html b/docs/namespaces.html index 42a7fa2054..859d3960fb 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_e.js b/docs/search/all_e.js index e60fc38a97..a92b5b00e1 100644 --- a/docs/search/all_e.js +++ b/docs/search/all_e.js @@ -1,6 +1,5 @@ var searchData= [ - ['packager_5fversion_5fstring',['packager_version_string',['../d0/d27/structshaka_1_1media_1_1MuxerOptions.html#abd063c42f307ad9ec5e61c806f221884',1,'shaka::media::MuxerOptions']]], ['parse',['Parse',['../dd/d17/classshaka_1_1media_1_1Demuxer.html#a0f9b7c954ff48c3021467300d755ac29',1,'shaka::media::Demuxer::Parse()'],['../d3/d0a/classshaka_1_1media_1_1MediaParser.html#a0c85f3cb0591f67c036276be82a1ba9d',1,'shaka::media::MediaParser::Parse()'],['../d0/dd4/classshaka_1_1media_1_1ProtectionSystemSpecificInfo.html#a13b0f93b68efff614c5356df081f2560',1,'shaka::media::ProtectionSystemSpecificInfo::Parse()'],['../d0/da2/classshaka_1_1media_1_1AACAudioSpecificConfig.html#a6b3deca725a42113bf7303387ab74f0f',1,'shaka::media::AACAudioSpecificConfig::Parse()'],['../de/de0/classshaka_1_1media_1_1DecoderConfigurationRecord.html#ab05a1971c60e510b7bc0b5b578dfb04b',1,'shaka::media::DecoderConfigurationRecord::Parse(const std::vector< uint8_t > &data)'],['../de/de0/classshaka_1_1media_1_1DecoderConfigurationRecord.html#a07b7d0dbae45971d4fd4a24652980f65',1,'shaka::media::DecoderConfigurationRecord::Parse(const uint8_t *data, size_t data_size)'],['../d8/d14/classshaka_1_1media_1_1VP8Parser.html#a8baec0e4c74b0b220b777426d0c463e1',1,'shaka::media::VP8Parser::Parse()'],['../db/d5a/classshaka_1_1media_1_1VP9Parser.html#ae915c36aa472d70b55e3d65b24612e57',1,'shaka::media::VP9Parser::Parse()'],['../db/dcb/classshaka_1_1media_1_1VPxParser.html#abb83c8c74d304e83efb8fa60bd7bb722',1,'shaka::media::VPxParser::Parse()'],['../d3/d0c/classshaka_1_1media_1_1mp2t_1_1AdtsHeader.html#a2e154d7423498baf8cd8888c70dcfca9',1,'shaka::media::mp2t::AdtsHeader::Parse()'],['../d3/dc1/classshaka_1_1media_1_1mp2t_1_1Mp2tMediaParser.html#af1a8a33b4ce61777c876717b005d0026',1,'shaka::media::mp2t::Mp2tMediaParser::Parse()'],['../d1/d2d/structshaka_1_1media_1_1mp4_1_1Box.html#a209382fcd42e82a896c29e856627ca52',1,'shaka::media::mp4::Box::Parse()'],['../d7/dd5/classshaka_1_1media_1_1mp4_1_1MP4MediaParser.html#a4105cdbe5ece03071a17c06fb27699b0',1,'shaka::media::mp4::MP4MediaParser::Parse()'],['../da/de4/classshaka_1_1media_1_1WebMClusterParser.html#aba1bae97c2d96181027e43b0a1993e67',1,'shaka::media::WebMClusterParser::Parse()'],['../db/dae/classshaka_1_1media_1_1WebMInfoParser.html#ae0b4d37e02d43627b1bc9c64f43ee3f7',1,'shaka::media::WebMInfoParser::Parse()'],['../d2/ddb/classshaka_1_1media_1_1WebMMediaParser.html#a40940ec01d965e3a78213861a93f7cfc',1,'shaka::media::WebMMediaParser::Parse()'],['../dc/dca/classshaka_1_1media_1_1WebMListParser.html#acd805b7eb25afcd9a3be2d8d88e3c6af',1,'shaka::media::WebMListParser::Parse()'],['../d8/d86/classshaka_1_1media_1_1WebMTracksParser.html#aa4b6d4ac9fa57b47cbc17ee7c1bd3639',1,'shaka::media::WebMTracksParser::Parse()'],['../d4/d59/classshaka_1_1media_1_1WebMWebVTTParser.html#a4e6f754e4fba24f7ea77fd0db959908b',1,'shaka::media::WebMWebVTTParser::Parse()'],['../dc/df2/classshaka_1_1media_1_1WebVttMediaParser.html#a5295c061b251726d1525cefc091101a2',1,'shaka::media::WebVttMediaParser::Parse()'],['../dc/d18/classshaka_1_1media_1_1wvm_1_1WvmMediaParser.html#a246702aa75891cbe396ca7cc11e13eeb',1,'shaka::media::wvm::WvmMediaParser::Parse()']]], ['parseboxes',['ParseBoxes',['../d0/dd4/classshaka_1_1media_1_1ProtectionSystemSpecificInfo.html#aa984e27d2655a451ea87ff0a4ddd8b79',1,'shaka::media::ProtectionSystemSpecificInfo']]], ['parsefrombuffer',['ParseFromBuffer',['../d6/dcb/structshaka_1_1media_1_1mp4_1_1SampleEncryptionEntry.html#a247ca9987470a6c724f1e099a78d3460',1,'shaka::media::mp4::SampleEncryptionEntry']]], diff --git a/docs/search/variables_5.js b/docs/search/variables_5.js index 5118fd6c03..d7d027ab82 100644 --- a/docs/search/variables_5.js +++ b/docs/search/variables_5.js @@ -1,5 +1,4 @@ var searchData= [ - ['packager_5fversion_5fstring',['packager_version_string',['../d0/d27/structshaka_1_1media_1_1MuxerOptions.html#abd063c42f307ad9ec5e61c806f221884',1,'shaka::media::MuxerOptions']]], ['private_5fframe',['private_frame',['../d3/dad/structshaka_1_1media_1_1mp4_1_1ID3v2.html#a33c145fa8ed1417799dce66a94f8e95c',1,'shaka::media::mp4::ID3v2']]] ];