From d495ebbc1b91e7767a978e7e47380ede73af8f88 Mon Sep 17 00:00:00 2001
From: Widevine Buildbot
Date: Thu, 18 Aug 2016 20:58:33 +0000
Subject: [PATCH] Generate SDK documents for commit
336ea5cb34b607d2c292e1b2a826faafd6f514bc
---
docs/annotated.html | 2 +-
docs/classes.html | 2 +-
...ia_1_1mp4_1_1HandlerReference-members.html | 2 +-
..._1_1media_1_1RsaRequestSigner-members.html | 2 +-
docs/d0/d06/mpd__flags_8cc_source.html | 2 +-
...ka_1_1media_1_1HttpKeyFetcher-members.html | 2 +-
...oder__configuration__record_8h_source.html | 2 +-
docs/d0/d0e/muxer__options_8h_source.html | 2 +-
...media_1_1mp2t_1_1TsSectionPmt-members.html | 2 +-
.../structshaka_1_1media_1_1VPxFrameInfo.html | 2 +-
...H265ByteToUnitStreamConverter-members.html | 2 +-
..._1_1media_1_1mp4_1_1VTTCueBox-members.html | 2 +-
...haka_1_1media_1_1mp2t_1_1TsSectionPat.html | 2 +-
.../structshaka_1_1media_1_1MuxerOptions.html | 2 +-
.../d0/d30/mock__mpd__notifier_8h_source.html | 2 +-
docs/d0/d32/mp2t__common_8h_source.html | 2 +-
.../d33/classshaka_1_1MockRepresentation.html | 2 +-
docs/d0/d35/es__descriptor_8cc_source.html | 105 +-
...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 | 4 +-
...haka_1_1media_1_1mp4_1_1SampleToGroup.html | 4 +-
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 | 4 +-
...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 | 4 +-
...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 | 2 +-
docs/d0/df3/packager__util_8cc_source.html | 4 +-
...ia_1_1mp4_1_1AudioSampleEntry-members.html | 2 +-
.../d0a/classshaka_1_1media_1_1MkvWriter.html | 10 +-
.../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 | 289 +-
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 | 4 +-
.../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 | 4 +-
docs/d1/d70/vp8__parser_8cc_source.html | 6 +-
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 | 6 +-
...lassshaka_1_1media_1_1Demuxer-members.html | 2 +-
...a_1_1media_1_1mp4_1_1VideoMediaHeader.html | 4 +-
...oder__configuration__record_8h_source.html | 2 +-
docs/d1/dc2/h26x__bit__reader_8h_source.html | 2 +-
.../dcb/encrypting__fragmenter_8h_source.html | 4 +-
.../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 | 4 +-
docs/d1/df0/aes__encryptor_8h_source.html | 2 +-
docs/d1/df3/structshaka_1_1MpdOptions.html | 2 +-
docs/d1/df5/nalu__reader_8cc_source.html | 2 +-
...ia_1_1mp4_1_1VideoMediaHeader-members.html | 2 +-
docs/d2/d02/timestamp_8h_source.html | 2 +-
...assshaka_1_1media_1_1SeekHead-members.html | 2 +-
.../d0f/classshaka_1_1MpdBuilder-members.html | 2 +-
...aka_1_1media_1_1wvm_1_1PrevSampleData.html | 2 +-
...aka_1_1media_1_1MuxerListener-members.html | 2 +-
docs/d2/d17/ts__section__pat_8cc_source.html | 2 +-
.../d2/d23/threaded__io__file_8cc_source.html | 2 +-
docs/d2/d24/packager__util_8h_source.html | 2 +-
...media_1_1mp4_1_1KeyRotationFragmenter.html | 2 +-
docs/d2/d30/tracks__builder_8cc_source.html | 2 +-
...ideo__slice__header__parser_8h_source.html | 2 +-
...1_1media_1_1WidevineKeySource-members.html | 2 +-
...1_1mp4_1_1TrackFragmentHeader-members.html | 2 +-
...rogram__map__table__writer_8cc_source.html | 4 +-
...o__byte__stream__converter_8cc_source.html | 2 +-
docs/d2/d4d/file_8h_source.html | 14 +-
.../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 | 2 +-
...haka_1_1media_1_1mp4_1_1Movie-members.html | 2 +-
...sshaka_1_1media_1_1AesCryptor-members.html | 2 +-
docs/d2/d6f/classBandwidthEstimator.html | 2 +-
...ctshaka_1_1media_1_1mp4_1_1SchemeInfo.html | 4 +-
...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 | 4 +-
...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 | 767 +--
...haka_1_1media_1_1BufferWriter-members.html | 2 +-
...assshaka_1_1MockAdaptationSet-members.html | 2 +-
docs/d2/dae/webm__muxer_8cc_source.html | 4 +-
...media_1_1mp4_1_1SampleToGroup-members.html | 2 +-
...a_1_1media_1_1mp4_1_1FileType-members.html | 2 +-
...edia_1_1mp4_1_1CueSourceIDBox-members.html | 2 +-
...lassshaka_1_1media_1_1SegmentTestBase.html | 2 +-
...haka_1_1media_1_1mp4_1_1Track-members.html | 2 +-
.../structshaka_1_1MpdOptions-members.html | 2 +-
...program__map__table__writer_8h_source.html | 2 +-
...a_1_1media_1_1mp4_1_1EditList-members.html | 2 +-
...edia_1_1webm_1_1MultiSegmentSegmenter.html | 2 +-
docs/d2/dd6/mkv__writer_8h_source.html | 4 +-
...lassshaka_1_1media_1_1WebMMediaParser.html | 2 +-
...haka_1_1media_1_1mp2t_1_1TsSectionPmt.html | 2 +-
docs/d2/de6/packager__main_8cc_source.html | 1092 ++--
...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 | 4 +-
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 | 18 +-
.../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 | 4 +-
.../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 | 4 +-
..._1_1media_1_1WebMWebVTTParser-members.html | 2 +-
.../structshaka_1_1media_1_1mp4_1_1Track.html | 4 +-
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 | 4 +-
...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 | 4 +-
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 | 4 +-
.../da7/segmenter__test__base_8cc_source.html | 4 +-
...a_1_1media_1_1mp4_1_1SampleEncryption.html | 16 +-
...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 | 4 +-
...a_1_1mp2t_1_1AacProgramMapTableWriter.html | 2 +-
docs/d4/dd3/bit__reader_8h_source.html | 117 +-
...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 | 4 +-
...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 | 4 +-
...tshaka_1_1media_1_1mp4_1_1AC3Specific.html | 4 +-
.../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 | 4 +-
...ka_1_1media_1_1WebMInfoParser-members.html | 2 +-
..._1_1mp4_1_1ElementaryStreamDescriptor.html | 4 +-
.../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 | 10 +-
...a_1_1media_1_1mp4_1_1MediaInformation.html | 4 +-
.../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 | 6 +-
...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 | 491 +-
...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 | 4 +-
.../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 | 422 +-
...2multi__segment__segmenter_8cc_source.html | 4 +-
docs/d6/d55/aes__cryptor_8cc_source.html | 2 +-
...edia_1_1AVCDecoderConfigurationRecord.html | 2 +-
...ion__system__specific__info_8h_source.html | 2 +-
...1_1VPCodecConfigurationRecord-members.html | 2 +-
docs/d6/d6c/h26x__bit__reader_8cc_source.html | 2 +-
docs/d6/d6e/ts__section__pes_8cc_source.html | 2 +-
docs/d6/d71/scoped__xml__ptr_8h_source.html | 2 +-
.../dash__iop__mpd__notifier_8h_source.html | 2 +-
...1media_1_1mp4_1_1VTTAdditionalTextBox.html | 4 +-
.../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 | 6 +-
..._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 | 52 +-
...AVCDecoderConfigurationRecord-members.html | 2 +-
...iceHeader_1_1LongTermPicsInfo-members.html | 2 +-
.../da9/classshaka_1_1media_1_1BitReader.html | 11 +-
...uctshaka_1_1media_1_1mp4_1_1VTTCueBox.html | 4 +-
...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 | 6 +-
...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 | 196 +-
docs/d6/de8/network__util_8h_source.html | 2 +-
docs/d6/de9/ts__segmenter_8cc_source.html | 4 +-
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 | 4 +-
...a_1_1media_1_1mp4_1_1SoundMediaHeader.html | 4 +-
...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 | 4 +-
...ia_1_1mp4_1_1SampleEncryption-members.html | 4 +-
...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 | 4 +-
docs/d7/db0/mpd__writer_8h_source.html | 2 +-
...media_1_1mp4_1_1SampleToChunk-members.html | 2 +-
...ka_1_1media_1_1mp4_1_1TextSampleEntry.html | 4 +-
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 | 203 +-
.../d7/def/mp4__media__parser_8cc_source.html | 4 +-
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 | 11 +-
.../d14/classshaka_1_1media_1_1VP8Parser.html | 2 +-
...haka_1_1media_1_1MuxerOptions-members.html | 2 +-
.../d19/bandwidth__estimator_8h_source.html | 2 +-
...edia_1_1mp4_1_1WebVTTConfigurationBox.html | 4 +-
...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 | 4 +-
.../classshaka_1_1media_1_1MediaStream.html | 2 +-
...ka_1_1media_1_1ClusterBuilder-members.html | 2 +-
...ka_1_1media_1_1mp4_1_1DataInformation.html | 4 +-
...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 | 4 +-
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 | 31 +-
...haka_1_1media_1_1mp4_1_1MovieFragment.html | 4 +-
...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 | 4 +-
...aka_1_1media_1_1mp4_1_1CueSourceIDBox.html | 4 +-
..._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 | 20 +-
...ka_1_1media_1_1FixedKeySource-members.html | 2 +-
...c__audio__specific__config_8cc_source.html | 8 +-
...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 | 4 +-
...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 | 4 +-
docs/da/d53/es__parser__h265_8cc_source.html | 2 +-
..._1_1media_1_1mp4_1_1CompactSampleSize.html | 4 +-
.../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 | 8 +-
...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 | 4 +-
docs/da/dc3/status_8cc_source.html | 2 +-
...tshaka_1_1media_1_1mp4_1_1TrackHeader.html | 4 +-
docs/da/dcb/es__descriptor_8h_source.html | 2 +-
.../structshaka_1_1media_1_1mp4_1_1Edit.html | 4 +-
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 | 4 +-
..._1media_1_1H264VideoSliceHeaderParser.html | 2 +-
docs/da/df4/aes__decryptor_8cc_source.html | 2 +-
..._1_1media_1_1mp4_1_1SampleDescription.html | 4 +-
...1_1media_1_1AesPatternCryptor-members.html | 2 +-
...ructshaka_1_1media_1_1H265SliceHeader.html | 2 +-
...1_1media_1_1mp4_1_1CodecConfiguration.html | 4 +-
...sshaka_1_1media_1_1H265Parser-members.html | 2 +-
...media_1_1H264WeightingFactors-members.html | 2 +-
..._1media_1_1mp4_1_1SubtitleMediaHeader.html | 4 +-
...lassshaka_1_1media_1_1mp4_1_1MP4Muxer.html | 2 +-
...to__unit__stream__converter_8h_source.html | 2 +-
.../d31/track__run__iterator_8cc_source.html | 6 +-
...1_1mp2t_1_1PesPacketGenerator-members.html | 2 +-
...dia_1_1VideoSliceHeaderParser-members.html | 2 +-
...pd__notify__muxer__listener_8h_source.html | 2 +-
.../d4b/classshaka_1_1MockAdaptationSet.html | 2 +-
...a_1_1mp4_1_1CompositionOffsetIterator.html | 2 +-
.../db/d51/mp2t__media__parser_8h_source.html | 2 +-
..._single__segment__segmenter_8h_source.html | 2 +-
.../d5a/classshaka_1_1media_1_1VP9Parser.html | 2 +-
docs/db/d60/mpd__options_8h_source.html | 2 +-
.../d64/webvtt__media__parser_8h_source.html | 2 +-
..._1media_1_1mp4_1_1SegmentType-members.html | 2 +-
docs/db/d71/http__key__fetcher_8h_source.html | 2 +-
...EVCDecoderConfigurationRecord-members.html | 2 +-
...TwoPassSingleSegmentSegmenter-members.html | 2 +-
..._1_1mp2t_1_1ContinuityCounter-members.html | 2 +-
docs/db/d7e/muxer__options_8cc_source.html | 2 +-
...dia_1_1AACAudioSpecificConfig-members.html | 2 +-
.../classshaka_1_1media_1_1NaluReader.html | 2 +-
docs/db/d8f/mp4__muxer_8h_source.html | 2 +-
...classshaka_1_1media_1_1ClusterBuilder.html | 2 +-
...ssshaka_1_1media_1_1mp4_1_1Fragmenter.html | 2 +-
...a_1_1media_1_1mp4_1_1ChunkLargeOffset.html | 4 +-
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 | 14 +-
...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 | 4 +-
...tshaka_1_1media_1_1mp4_1_1DTSSpecific.html | 4 +-
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 | 4 +-
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 | 4 +-
...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 | 4 +-
docs/dd/d11/mpd__builder_8cc_source.html | 2155 ++++----
docs/dd/d12/mpd__writer_8cc_source.html | 6 +-
...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 | 4 +-
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 | 4 +-
.../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 | 2 +-
...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 | 4751 +++++++++--------
..._2multi__segment__segmenter_8h_source.html | 2 +-
...a_1_1media_1_1mp4_1_1TrackFragmentRun.html | 4 +-
...ructshaka_1_1media_1_1mp4_1_1Metadata.html | 4 +-
docs/de/d0f/local__file_8h_source.html | 22 +-
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 | 307 +-
.../d22/aes__pattern__cryptor_8cc_source.html | 2 +-
..._1_1mp2t_1_1H264ProgramMapTableWriter.html | 2 +-
...shaka_1_1media_1_1mp4_1_1TrackExtends.html | 4 +-
..._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 | 4 +-
...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 | 4 +-
docs/de/dfd/stream__info_8cc_source.html | 2 +-
...dec__configuration__record_8cc_source.html | 199 +-
.../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 | 4 +-
...haka_1_1media_1_1mp4_1_1TrackFragment.html | 4 +-
.../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 | 4 +-
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 | 4 +-
...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 | 2 +-
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 | 4 +-
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 | 4 +-
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 | 4 +-
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 | 2 +-
docs/functions_w.html | 4 +-
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_14.js | 2 +-
docs/search/all_e.js | 2 +-
docs/search/functions_14.js | 2 +-
docs/search/functions_e.js | 2 +-
945 files changed, 6797 insertions(+), 6680 deletions(-)
diff --git a/docs/annotated.html b/docs/annotated.html
index 5c245fcc24..b559d22b31 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 5c21826e5d..1af2d5f1e1 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 5d667a18e1..fe7069de7f 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 6c795a1cd1..7cd3a1a5c3 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 b5ecbd733d..d21bcb1e21 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 fded876aed..2ef6175b9d 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 b1d93b6678..73dca37b0d 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 d02960a5f8..c7fa2e0dbf 100644
--- a/docs/d0/d0e/muxer__options_8h_source.html
+++ b/docs/d0/d0e/muxer__options_8h_source.html
@@ -149,7 +149,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
diff --git a/docs/d0/d0f/classshaka_1_1media_1_1mp2t_1_1TsSectionPmt-members.html b/docs/d0/d0f/classshaka_1_1media_1_1mp2t_1_1TsSectionPmt-members.html
index ba5bcb5b96..3e664853e6 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 0a21bc32a3..085d861d6e 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 1925439297..11bd63e46f 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 14f4b21a66..e6530e2494 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 a891f0cc15..10cd9cb0a5 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 2bf3cb5208..162e5c2960 100644
--- a/docs/d0/d27/structshaka_1_1media_1_1MuxerOptions.html
+++ b/docs/d0/d27/structshaka_1_1media_1_1MuxerOptions.html
@@ -288,7 +288,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 5bdfed3471..6fec8fae4c 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 0ad4c40653..af4f7dc336 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 624ff0a79d..2d86d0f9f3 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 d7d205ceff..9b65b2486e 100644
--- a/docs/d0/d35/es__descriptor_8cc_source.html
+++ b/docs/d0/d35/es__descriptor_8cc_source.html
@@ -229,60 +229,63 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
140 const std::vector<uint8_t> kEmptyDecodingBufferSize(3, 0);
141 const uint8_t kNoEsFlags = 0;
- 143 const uint8_t decoder_specific_info_size = decoder_specific_info_.size();
-
-
- 146 const uint8_t stream_type = (kAudioStreamType << 2) | 1;
- 147 const uint8_t decoder_config_size = decoder_specific_info_size + kHeaderSize +
-
- 149 sizeof(stream_type) +
- 150 kEmptyDecodingBufferSize.size() +
- 151 sizeof(kUnknownBitrate) * 2;
-
- 153 const uint8_t sl_config_size =
sizeof(uint8_t);
- 154 const uint8_t es_size = decoder_config_size + kHeaderSize + sl_config_size +
- 155 kHeaderSize +
sizeof(esid_) +
sizeof(kNoEsFlags);
-
- 157 writer->AppendInt(static_cast<uint8_t>(kESDescrTag));
- 158 writer->AppendInt(es_size);
- 159 writer->AppendInt(esid_);
- 160 writer->AppendInt(kNoEsFlags);
-
- 162 writer->AppendInt(static_cast<uint8_t>(kDecoderConfigDescrTag));
- 163 writer->AppendInt(decoder_config_size);
- 164 writer->AppendInt(static_cast<uint8_t>(object_type_));
- 165 writer->AppendInt(stream_type);
- 166 writer->AppendVector(kEmptyDecodingBufferSize);
- 167 writer->AppendInt(max_bitrate_);
- 168 writer->AppendInt(avg_bitrate_);
-
- 170 writer->AppendInt(static_cast<uint8_t>(kDecoderSpecificInfoTag));
- 171 writer->AppendInt(decoder_specific_info_size);
- 172 writer->AppendVector(decoder_specific_info_);
-
- 174 writer->AppendInt(static_cast<uint8_t>(kSLConfigTag));
- 175 writer->AppendInt(sl_config_size);
- 176 writer->AppendInt(static_cast<uint8_t>(kSLPredefinedMP4));
-
-
- 179 size_t ESDescriptor::ComputeSize()
const {
-
- 181 const uint8_t decoder_specific_info_size = decoder_specific_info_.size();
- 182 const uint8_t decoder_config_size = decoder_specific_info_size + kHeaderSize +
- 183 sizeof(uint8_t) * 5 +
- 184 sizeof(uint32_t) * 2;
- 185 const uint8_t sl_config_size =
sizeof(uint8_t);
- 186 const uint8_t es_size = decoder_config_size + kHeaderSize + sl_config_size +
- 187 kHeaderSize +
sizeof(esid_) +
sizeof(uint8_t);
- 188 return es_size + kHeaderSize;
-
-
-
-
+ 143 const uint8_t decoder_specific_info_size =
+ 144 static_cast<uint8_t
>(decoder_specific_info_.size());
+
+
+ 147 const uint8_t stream_type = (kAudioStreamType << 2) | 1;
+ 148 const uint8_t decoder_config_size =
+ 149 static_cast<uint8_t
>(decoder_specific_info_size + kHeaderSize +
+
+ 151 sizeof(stream_type) +
+ 152 kEmptyDecodingBufferSize.size() +
+ 153 sizeof(kUnknownBitrate) * 2);
+
+ 155 const uint8_t sl_config_size =
sizeof(uint8_t);
+ 156 const uint8_t es_size = decoder_config_size + kHeaderSize + sl_config_size +
+ 157 kHeaderSize +
sizeof(esid_) +
sizeof(kNoEsFlags);
+
+ 159 writer->AppendInt(static_cast<uint8_t>(kESDescrTag));
+ 160 writer->AppendInt(es_size);
+ 161 writer->AppendInt(esid_);
+ 162 writer->AppendInt(kNoEsFlags);
+
+ 164 writer->AppendInt(static_cast<uint8_t>(kDecoderConfigDescrTag));
+ 165 writer->AppendInt(decoder_config_size);
+ 166 writer->AppendInt(static_cast<uint8_t>(object_type_));
+ 167 writer->AppendInt(stream_type);
+ 168 writer->AppendVector(kEmptyDecodingBufferSize);
+ 169 writer->AppendInt(max_bitrate_);
+ 170 writer->AppendInt(avg_bitrate_);
+
+ 172 writer->AppendInt(static_cast<uint8_t>(kDecoderSpecificInfoTag));
+ 173 writer->AppendInt(decoder_specific_info_size);
+ 174 writer->AppendVector(decoder_specific_info_);
+
+ 176 writer->AppendInt(static_cast<uint8_t>(kSLConfigTag));
+ 177 writer->AppendInt(sl_config_size);
+ 178 writer->AppendInt(static_cast<uint8_t>(kSLPredefinedMP4));
+
+
+ 181 size_t ESDescriptor::ComputeSize()
const {
+
+ 183 const uint8_t decoder_specific_info_size =
+ 184 static_cast<uint8_t
>(decoder_specific_info_.size());
+ 185 const uint8_t decoder_config_size = decoder_specific_info_size + kHeaderSize +
+ 186 sizeof(uint8_t) * 5 +
+ 187 sizeof(uint32_t) * 2;
+ 188 const uint8_t sl_config_size =
sizeof(uint8_t);
+ 189 const uint8_t es_size = decoder_config_size + kHeaderSize + sl_config_size +
+ 190 kHeaderSize +
sizeof(esid_) +
sizeof(uint8_t);
+ 191 return es_size + kHeaderSize;
+
+
+
+
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 44cc2ce0d7..0fbeb602fd 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 1ac0c5b5e9..f384d02387 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 ad8c715791..9fc5313258 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 ed99a1fa63..36b08ac7f7 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 3e45a5417b..b515477c98 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 1ced5fa728..de72349073 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 98ce0ba0f1..788c0a7ce5 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 bfef25a6e9..2ee82586d4 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 2f467634be..457c323ec7 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 f44342fada..9cd4bbda29 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 502b0e0f2c..d357c048a4 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 6978b877ef..85e2cf7ed2 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 e6476375cd..3601c206da 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 9dd89c830e..265bb97b98 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 fbe70540ce..e655911388 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
@@ -186,7 +186,7 @@ Additional Inherited Members
Implements shaka::media::mp4::Box.
-Definition at line 1486 of file box_definitions.cc.
+Definition at line 1487 of file box_definitions.cc.
@@ -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 9bcf15df61..91edcd6052 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
@@ -177,7 +177,7 @@ Additional Inherited Members
Implements shaka::media::mp4::Box.
-Definition at line 1078 of file box_definitions.cc.
+Definition at line 1079 of file box_definitions.cc.
@@ -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 be0acfc14a..4b5fef9094 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 7cc68a9130..b14161a008 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 1baaea8fdf..5dc54de915 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 09c70a7181..0a4a9e71c6 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 b583674966..e08e5636e9 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
@@ -175,7 +175,7 @@ Additional Inherited Members
Implements shaka::media::mp4::Box.
-Definition at line 2207 of file box_definitions.cc.
+Definition at line 2208 of file box_definitions.cc.
@@ -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 dd0a7ca0bd..55c243acaf 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 466320109e..e82ffe251b 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 f0cca34a61..3fc22d8ccb 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 e23dd171b3..36bbe76496 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 a7ff7fd9d1..b5061e6d4f 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 889ce93291..b85dd5d2e1 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 996d961388..6db7438d09 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 950c562d9e..0f0f666708 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 0e9f28e00a..58f51062d8 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 bc28420ce0..372bb2b1a2 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 d0a093d34b..64304e810e 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
@@ -162,7 +162,7 @@ Additional Inherited Members
Implements shaka::media::mp4::Box.
-Definition at line 2653 of file box_definitions.cc.
+Definition at line 2654 of file box_definitions.cc.
@@ -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 52d9f666a4..fb6ab3f71d 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 d5b6f89222..0d6b94e0f8 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 a03708aef4..e14e3750d0 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 f41c6a877f..4492988f61 100644
--- a/docs/d0/dee/segmenter__test__base_8h_source.html
+++ b/docs/d0/dee/segmenter__test__base_8h_source.html
@@ -215,7 +215,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
diff --git a/docs/d0/df3/packager__util_8cc_source.html b/docs/d0/df3/packager__util_8cc_source.html
index 098374e5eb..8476190e6f 100644
--- a/docs/d0/df3/packager__util_8cc_source.html
+++ b/docs/d0/df3/packager__util_8cc_source.html
@@ -330,11 +330,11 @@ 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 0cd27da0d1..bdb4013ea6 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 127b1478c4..9d4d7385dc 100644
--- a/docs/d1/d0a/classshaka_1_1media_1_1MkvWriter.html
+++ b/docs/d1/d0a/classshaka_1_1media_1_1MkvWriter.html
@@ -127,8 +127,8 @@ Public Member Functions |
|
int64_t | WriteFromFile (File *source) |
|
-int64_t | WriteFromFile (File *source, uint64_t max_copy) |
- |
+int64_t | WriteFromFile (File *source, int64_t max_copy) |
+ |
File * | file () |
|
@@ -339,7 +339,7 @@ Public Member Functions
-
+
@@ -352,7 +352,7 @@ Public Member Functions
|
|
- uint64_t |
+ int64_t |
max_copy |
@@ -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 840299d0ff..d3e0fec383 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 b11876bd48..03df4f25c3 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 0483d388ba..b12dd6812b 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 2917e23b4e..48cb048c63 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 2f701d9530..10d947ddf0 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
@@ -128,154 +128,155 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
41 std::string file_prefix =
42 base::StringPrintf(
"packager-tempfile-%x-%" PRIx64
".tmp", tid, rand);
- 43 return base::FilePath(options.temp_dir).Append(file_prefix).value();
-
-
-
-
- 48 bool ReadSkip(File* file, int64_t byte_count) {
- 49 const int64_t kBufferSize = 0x40000;
- 50 scoped_ptr<char[]> buffer(
new char[kBufferSize]);
- 51 int64_t bytes_read = 0;
- 52 while (bytes_read < byte_count) {
- 53 int64_t size = std::min(kBufferSize, byte_count - bytes_read);
- 54 int64_t result = file->Read(buffer.get(), size);
-
-
-
-
-
-
-
-
- 63 DCHECK_EQ(bytes_read, byte_count);
-
-
-
-
- 68 TwoPassSingleSegmentSegmenter::TwoPassSingleSegmentSegmenter(
- 69 const MuxerOptions& options)
- 70 : SingleSegmentSegmenter(options) {}
-
- 72 TwoPassSingleSegmentSegmenter::~TwoPassSingleSegmentSegmenter() {}
-
-
- 75 TwoPassSingleSegmentSegmenter::DoInitialize(scoped_ptr<MkvWriter> writer) {
-
-
- 78 set_progress_target(info()->duration() * 2);
-
- 80 real_writer_ = writer.Pass();
-
- 82 temp_file_name_ = TempFileName(options());
- 83 scoped_ptr<MkvWriter> temp(
new MkvWriter);
- 84 Status status = temp->Open(temp_file_name_);
-
-
-
- 88 return SingleSegmentSegmenter::DoInitialize(temp.Pass());
-
-
- 91 Status TwoPassSingleSegmentSegmenter::DoFinalize() {
- 92 if (!cluster()->Finalize())
- 93 return Status(error::FILE_FAILURE,
"Error finalizing cluster.");
-
-
- 96 uint64_t cues_pos = writer()->Position();
- 97 set_index_start(cues_pos);
- 98 seek_head()->set_cues_pos(cues_pos - segment_payload_pos());
- 99 if (!cues()->Write(writer()))
- 100 return Status(error::FILE_FAILURE,
"Error writing Cues data.");
-
-
- 103 Status temp = WriteSegmentHeader(writer()->Position(), real_writer_.get());
-
-
-
-
- 108 set_writer(scoped_ptr<MkvWriter>());
- 109 scoped_ptr<File, FileCloser> temp_reader(
-
-
- 112 return Status(error::FILE_FAILURE,
"Error opening temp file.");
-
-
- 115 uint64_t header_size = real_writer_->Position();
- 116 if (!ReadSkip(temp_reader.get(), header_size))
- 117 return Status(error::FILE_FAILURE,
"Error reading temp file.");
-
-
- 120 if (!CopyFileWithClusterRewrite(temp_reader.get(), real_writer_.get(),
-
- 122 return Status(error::FILE_FAILURE,
"Error copying temp file.");
-
-
-
-
- 127 LOG(WARNING) <<
"Unable to delete temporary file " << temp_file_name_;
-
-
-
- 131 set_index_end(real_writer_->file()->Size() - 1);
- 132 return real_writer_->Close();
-
-
- 135 bool TwoPassSingleSegmentSegmenter::CopyFileWithClusterRewrite(
-
-
- 138 uint64_t last_size) {
- 139 const int cluster_id_size = mkvmuxer::GetUIntSize(mkvmuxer::kMkvCluster);
- 140 const int cluster_size_size = 8;
- 141 const int cluster_header_size = cluster_id_size + cluster_size_size;
-
-
- 144 if (dest->WriteFromFile(source, cluster_id_size) != cluster_id_size)
-
-
- 147 for (
int i = 0; i < cues()->cue_entries_size() - 1; ++i) {
-
- 149 const mkvmuxer::CuePoint* cue = cues()->GetCueByIndex(i);
- 150 const mkvmuxer::CuePoint* next_cue = cues()->GetCueByIndex(i + 1);
- 151 const int64_t cluster_payload_size =
- 152 next_cue->cluster_pos() - cue->cluster_pos() - cluster_header_size;
- 153 if (mkvmuxer::WriteUIntSize(dest, cluster_payload_size, cluster_size_size))
-
- 155 if (!ReadSkip(source, cluster_size_size))
-
-
-
- 159 int64_t to_copy = cluster_payload_size + cluster_id_size;
- 160 if (dest->WriteFromFile(source, to_copy) != to_copy)
-
-
-
- 164 const uint64_t webm_delta_time = next_cue->time() - cue->time();
- 165 const uint64_t delta_time = FromWebMTimecode(webm_delta_time);
- 166 UpdateProgress(delta_time);
-
-
-
- 170 const uint64_t last_cluster_payload_size = last_size - cluster_header_size;
- 171 if (mkvmuxer::WriteUIntSize(dest, last_cluster_payload_size,
-
-
- 174 if (!ReadSkip(source, cluster_size_size))
-
-
-
- 178 return dest->WriteFromFile(source) ==
- 179 static_cast<int64_t
>(last_cluster_payload_size + cues()->Size());
-
-
-
-
-
+ 43 return base::FilePath::FromUTF8Unsafe(options.temp_dir).Append(
+ 44 base::FilePath::FromUTF8Unsafe(file_prefix)).AsUTF8Unsafe();
+
+
+
+
+ 49 bool ReadSkip(File* file, int64_t byte_count) {
+ 50 const int64_t kBufferSize = 0x40000;
+ 51 scoped_ptr<char[]> buffer(
new char[kBufferSize]);
+ 52 int64_t bytes_read = 0;
+ 53 while (bytes_read < byte_count) {
+ 54 int64_t size = std::min(kBufferSize, byte_count - bytes_read);
+ 55 int64_t result = file->Read(buffer.get(), size);
+
+
+
+
+
+
+
+
+ 64 DCHECK_EQ(bytes_read, byte_count);
+
+
+
+
+ 69 TwoPassSingleSegmentSegmenter::TwoPassSingleSegmentSegmenter(
+ 70 const MuxerOptions& options)
+ 71 : SingleSegmentSegmenter(options) {}
+
+ 73 TwoPassSingleSegmentSegmenter::~TwoPassSingleSegmentSegmenter() {}
+
+
+ 76 TwoPassSingleSegmentSegmenter::DoInitialize(scoped_ptr<MkvWriter> writer) {
+
+
+ 79 set_progress_target(info()->duration() * 2);
+
+ 81 real_writer_ = writer.Pass();
+
+ 83 temp_file_name_ = TempFileName(options());
+ 84 scoped_ptr<MkvWriter> temp(
new MkvWriter);
+ 85 Status status = temp->Open(temp_file_name_);
+
+
+
+ 89 return SingleSegmentSegmenter::DoInitialize(temp.Pass());
+
+
+ 92 Status TwoPassSingleSegmentSegmenter::DoFinalize() {
+ 93 if (!cluster()->Finalize())
+ 94 return Status(error::FILE_FAILURE,
"Error finalizing cluster.");
+
+
+ 97 uint64_t cues_pos = writer()->Position();
+ 98 set_index_start(cues_pos);
+ 99 seek_head()->set_cues_pos(cues_pos - segment_payload_pos());
+ 100 if (!cues()->Write(writer()))
+ 101 return Status(error::FILE_FAILURE,
"Error writing Cues data.");
+
+
+ 104 Status temp = WriteSegmentHeader(writer()->Position(), real_writer_.get());
+
+
+
+
+ 109 set_writer(scoped_ptr<MkvWriter>());
+ 110 scoped_ptr<File, FileCloser> temp_reader(
+
+
+ 113 return Status(error::FILE_FAILURE,
"Error opening temp file.");
+
+
+ 116 uint64_t header_size = real_writer_->Position();
+ 117 if (!ReadSkip(temp_reader.get(), header_size))
+ 118 return Status(error::FILE_FAILURE,
"Error reading temp file.");
+
+
+ 121 if (!CopyFileWithClusterRewrite(temp_reader.get(), real_writer_.get(),
+
+ 123 return Status(error::FILE_FAILURE,
"Error copying temp file.");
+
+
+
+
+ 128 LOG(WARNING) <<
"Unable to delete temporary file " << temp_file_name_;
+
+
+
+ 132 set_index_end(real_writer_->file()->Size() - 1);
+ 133 return real_writer_->Close();
+
+
+ 136 bool TwoPassSingleSegmentSegmenter::CopyFileWithClusterRewrite(
+
+
+ 139 uint64_t last_size) {
+ 140 const int cluster_id_size = mkvmuxer::GetUIntSize(mkvmuxer::kMkvCluster);
+ 141 const int cluster_size_size = 8;
+ 142 const int cluster_header_size = cluster_id_size + cluster_size_size;
+
+
+ 145 if (dest->WriteFromFile(source, cluster_id_size) != cluster_id_size)
+
+
+ 148 for (
int i = 0; i < cues()->cue_entries_size() - 1; ++i) {
+
+ 150 const mkvmuxer::CuePoint* cue = cues()->GetCueByIndex(i);
+ 151 const mkvmuxer::CuePoint* next_cue = cues()->GetCueByIndex(i + 1);
+ 152 const int64_t cluster_payload_size =
+ 153 next_cue->cluster_pos() - cue->cluster_pos() - cluster_header_size;
+ 154 if (mkvmuxer::WriteUIntSize(dest, cluster_payload_size, cluster_size_size))
+
+ 156 if (!ReadSkip(source, cluster_size_size))
+
+
+
+ 160 int64_t to_copy = cluster_payload_size + cluster_id_size;
+ 161 if (dest->WriteFromFile(source, to_copy) != to_copy)
+
+
+
+ 165 const uint64_t webm_delta_time = next_cue->time() - cue->time();
+ 166 const uint64_t delta_time = FromWebMTimecode(webm_delta_time);
+ 167 UpdateProgress(delta_time);
+
+
+
+ 171 const uint64_t last_cluster_payload_size = last_size - cluster_header_size;
+ 172 if (mkvmuxer::WriteUIntSize(dest, last_cluster_payload_size,
+
+
+ 175 if (!ReadSkip(source, cluster_size_size))
+
+
+
+ 179 return dest->WriteFromFile(source) ==
+ 180 static_cast<int64_t
>(last_cluster_payload_size + cues()->Size());
+
+
+
+
+
-
+
diff --git a/docs/d1/d1d/muxer__flags_8cc_source.html b/docs/d1/d1d/muxer__flags_8cc_source.html
index 8b7784b894..0c80e16aef 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 1492b30430..53abfb8689 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 d94735256c..91d734df90 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 28dd38ed3a..18e553aaec 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 bdab91bbbe..597bbfeca6 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 692760694d..c2f9702a3a 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 b30724ed4c..f2b6156525 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 d48f5a8ea5..503fb604c9 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 696a57426e..3157e3691d 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 b60b87c25d..dd0e3e1a45 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 d9397d2a4d..1d1637c96e 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 02b8dde6f8..b68ed1c605 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 b603495a86..1f23f5fd64 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 b9f3386af2..2262f959e4 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 d2282e2fa8..8f916b7f4d 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
@@ -165,7 +165,7 @@ Additional Inherited Members |
Implements shaka::media::mp4::Box.
-Definition at line 2179 of file box_definitions.cc.
+Definition at line 2180 of file box_definitions.cc.
@@ -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 0b08e9bda7..61606f28b4 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 9d4161ef43..856dfb5515 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 a4c8ac8bb4..ca5391b568 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 96647a47ce..6ea5546af8 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 2b03a22bbe..6b4cf2323a 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 7ddff3b60e..5b2fb5625b 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
@@ -211,7 +211,7 @@ Additional Inherited Members
Implements shaka::media::mp4::Box.
-Definition at line 2276 of file box_definitions.cc.
+Definition at line 2277 of file box_definitions.cc.
@@ -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 7e408f5f89..a5081daff0 100644
--- a/docs/d1/d70/vp8__parser_8cc_source.html
+++ b/docs/d1/d70/vp8__parser_8cc_source.html
@@ -286,14 +286,14 @@ 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 3d73e79579..acc31e5a6b 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 62a685ebcb..23f07a4cbe 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 6d021aecea..2e6982a5c1 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 83a1d2f9b0..a11b623289 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 86078185d5..574384572e 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 12c119a193..f8481badca 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 6a87f036df..455df65e86 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 cf5fc599d5..4392a17e43 100644
--- a/docs/d1/d86/classshaka_1_1media_1_1mp4_1_1KeyRotationFragmenter-members.html
+++ b/docs/d1/d86/classshaka_1_1media_1_1mp4_1_1KeyRotationFragmenter-members.html
@@ -124,7 +124,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
diff --git a/docs/d1/d8e/webm__audio__client_8cc_source.html b/docs/d1/d8e/webm__audio__client_8cc_source.html
index 809ae4b9c8..acbab1cf7b 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 e28764443e..8f5946e421 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 cc4be9c44a..e76bf6e88d 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 bfa1a8f870..35d523fd38 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 806e702e07..719bb053b6 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 2ed5763d49..1e37190951 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 a0dd8f7ddb..2907b08e31 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 8ee8bbd9db..e64b899738 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 53cf7e221f..aea1d67be1 100644
--- a/docs/d1/da5/classshaka_1_1media_1_1VPCodecConfigurationRecord.html
+++ b/docs/d1/da5/classshaka_1_1media_1_1VPCodecConfigurationRecord.html
@@ -207,7 +207,7 @@ bool | video_full_range_flag
@@ -295,7 +295,7 @@ bool | video_full_range_flag
- Definition at line 170 of file vp_codec_configuration_record.cc.
+Definition at line 171 of file vp_codec_configuration_record.cc.
@@ -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 84bc5d3e9d..56b2d2d702 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 23a6e96c70..f36936297e 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
@@ -180,7 +180,7 @@ Additional Inherited Members |
Implements shaka::media::mp4::Box.
-Definition at line 1932 of file box_definitions.cc.
+Definition at line 1933 of file box_definitions.cc.
@@ -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 22847aea33..913378796b 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 70b3947279..649d93656a 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 cc93d7728c..aa4fc9a67e 100644
--- a/docs/d1/dcb/encrypting__fragmenter_8h_source.html
+++ b/docs/d1/dcb/encrypting__fragmenter_8h_source.html
@@ -189,13 +189,13 @@ 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 59610c2747..ced4664dfa 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 3fa56be05f..72f209374b 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 9c7f0c2f6c..2002183749 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 adfcc928b8..283d994831 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 1d05bd3687..1e6d4467d8 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 3628ce3b5f..67dc16b2a1 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 cd4edd83e2..ec9f96886c 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 4710b6d1a5..6a56fbb49a 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 55617d15b6..e62f16d046 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 22a54db4f7..842f6f3839 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
@@ -187,7 +187,7 @@ Additional Inherited Members
Implements shaka::media::mp4::Box.
-Definition at line 1114 of file box_definitions.cc.
+Definition at line 1115 of file box_definitions.cc.
@@ -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 69aa3da564..f128438583 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 bf42106869..7aec038693 100644
--- a/docs/d1/df3/structshaka_1_1MpdOptions.html
+++ b/docs/d1/df3/structshaka_1_1MpdOptions.html
@@ -127,7 +127,7 @@ double suggested_presentat
diff --git a/docs/d1/df5/nalu__reader_8cc_source.html b/docs/d1/df5/nalu__reader_8cc_source.html
index 726e1dca44..58c1ded760 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 d8f7d9c8ea..8340effeae 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 5a1ab0fb53..3fc8e03957 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 c9d59ffdcd..67e23227d9 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 c8a0214ce8..18e49ad14f 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 e468ebb3f1..65c96b597b 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 527765477a..188d645e37 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 07b18a92d5..f9c87013c7 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 d204acb2a9..e285dc7933 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 1249a6c3b2..667e1035fc 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 85f96b6d5e..ea6a0cf488 100644
--- a/docs/d2/d29/classshaka_1_1media_1_1mp4_1_1KeyRotationFragmenter.html
+++ b/docs/d2/d29/classshaka_1_1media_1_1mp4_1_1KeyRotationFragmenter.html
@@ -328,7 +328,7 @@ void | set_encryption_key
diff --git a/docs/d2/d30/tracks__builder_8cc_source.html b/docs/d2/d30/tracks__builder_8cc_source.html
index cd39480870..ad417faafa 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 9c8acf0863..59512637f8 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 a930071389..262ed9c177 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 025921b819..c5c7d84e2e 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 d5c6c100e2..2a867e269a 100644
--- a/docs/d2/d45/program__map__table__writer_8cc_source.html
+++ b/docs/d2/d45/program__map__table__writer_8cc_source.html
@@ -467,7 +467,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
380 if (aac_audio_specific_config_.size() >
- 381 std::numeric_limits<uint8_t>::max() - 12) {
+ 381 std::numeric_limits<uint8_t>::max() - 12U) {
382 LOG(ERROR) << "AACAudioSpecificConfig of size: "
383 << aac_audio_specific_config_.size()
384 << " will not fit in the descriptor.";
@@ -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 aece94de3f..7d7b86c6f5 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 2c691ad0d7..174d4a38da 100644
--- a/docs/d2/d4d/file_8h_source.html
+++ b/docs/d2/d4d/file_8h_source.html
@@ -171,27 +171,27 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
153 #endif // PACKAGER_FILE_FILE_H_
-
-
+
+
-
+
-
-
+
+
-
+
diff --git a/docs/d2/d4f/structshaka_1_1Element-members.html b/docs/d2/d4f/structshaka_1_1Element-members.html
index 2e60938f4e..caeff49fbe 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 97892026eb..5fd14feac6 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 4d39f32c84..81a6bc9a4f 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 8d327bc952..f6734ad318 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 c5c812f43a..769635d70c 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 46ec6afbfd..cfebbadcd2 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 95f8eb5e4e..e0fabde8b6 100644
--- a/docs/d2/d62/simple__mpd__notifier_8h_source.html
+++ b/docs/d2/d62/simple__mpd__notifier_8h_source.html
@@ -186,7 +186,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
diff --git a/docs/d2/d62/structshaka_1_1media_1_1mp4_1_1Movie-members.html b/docs/d2/d62/structshaka_1_1media_1_1mp4_1_1Movie-members.html
index b781d10b73..55c7d77c95 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 0c65d2ade3..6b98d402c4 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 4ea2654dd1..55dfa2f3d7 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 541388376a..b1dbcaa58c 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
@@ -162,7 +162,7 @@ Additional Inherited Members |
Implements shaka::media::mp4::Box.
-Definition at line 470 of file box_definitions.cc.
+Definition at line 471 of file box_definitions.cc.
@@ -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 add33e5b9a..1dbe98a63d 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 eac108e223..8caf87db53 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)
+static void MakePathsRelativeToMpd(const std::string &mpd_path, MediaInfo *media_info)
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 f0ef77b5e3..96eef595a2 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 e4628922a6..b471cb7eda 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
@@ -162,7 +162,7 @@ Additional Inherited Members
Implements shaka::media::mp4::Box.
-Definition at line 2672 of file box_definitions.cc.
+Definition at line 2673 of file box_definitions.cc.
@@ -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 77d7542fdd..1fb0d75bfe 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 ee65e70325..db069f7fdc 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 21bd431935..7771740265 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 576a0c33e1..74b81378fb 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 c2577e93a1..c429ecb8aa 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 05c54ac869..55801069f6 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 2ed4e9f3ec..b59764e715 100644
--- a/docs/d2/da8/mp4_2segmenter_8cc_source.html
+++ b/docs/d2/da8/mp4_2segmenter_8cc_source.html
@@ -191,388 +191,389 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
102 track_encryption.default_per_sample_iv_size = 0;
103 track_encryption.default_constant_iv = encryption_key.iv;
- 105 track_encryption.default_per_sample_iv_size = encryption_key.iv.size();
-
- 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;
-
-
- 112 void GenerateEncryptedSampleEntry( const EncryptionKey& encryption_key,
- 113 double clear_lead_in_seconds,
- 114 FourCC protection_scheme,
- 115 ProtectionPattern pattern,
- 116 SampleDescription* description) {
-
- 118 if (description->type == kVideo) {
- 119 DCHECK_EQ(1u, description->video_entries.size());
-
-
- 122 if (clear_lead_in_seconds > 0)
- 123 description->video_entries.push_back(description->video_entries[0]);
-
-
- 126 VideoSampleEntry& entry = description->video_entries[0];
- 127 GenerateSinf(encryption_key, entry.format, protection_scheme, pattern,
-
- 129 entry.format = FOURCC_encv;
-
- 131 DCHECK_EQ(kAudio, description->type);
- 132 DCHECK_EQ(1u, description->audio_entries.size());
-
-
- 135 if (clear_lead_in_seconds > 0)
- 136 description->audio_entries.push_back(description->audio_entries[0]);
-
-
- 139 AudioSampleEntry& entry = description->audio_entries[0];
- 140 GenerateSinf(encryption_key, entry.format, protection_scheme, pattern,
-
- 142 entry.format = FOURCC_enca;
-
-
-
-
-
- 148 Segmenter::Segmenter( const MuxerOptions& options,
- 149 scoped_ptr<FileType> ftyp,
- 150 scoped_ptr<Movie> moov)
-
-
-
- 154 moof_(new MovieFragment()),
- 155 fragment_buffer_(new BufferWriter()),
- 156 sidx_(new SegmentIndex()),
- 157 muxer_listener_(NULL),
- 158 progress_listener_(NULL),
-
- 160 accumulated_progress_(0),
- 161 sample_duration_(0u) {}
-
- 163 Segmenter::~Segmenter() { STLDeleteElements(&fragmenters_); }
-
-
-
-
-
- 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;
-
- 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;
-
- 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) {
-
- 189 if (sidx_->reference_id == 0)
- 190 sidx_->reference_id = i + 1;
-
- 192 if (!encryption_key_source) {
- 193 fragmenters_[i] = new Fragmenter(streams[i]->info(), &moof_->tracks[i]);
-
-
-
- 197 KeySource::TrackType track_type =
- 198 GetTrackTypeForEncryption(*streams[i]->info(), max_sd_pixels);
-
- 200 moov_->tracks[i].media.information.sample_table.description;
- 201 ProtectionPattern pattern =
- 202 GetProtectionPattern(protection_scheme, description.type);
-
- 204 if (key_rotation_enabled) {
-
-
- 207 encryption_key.key_id.assign(
- 208 kKeyRotationDefaultKeyId,
- 209 kKeyRotationDefaultKeyId + arraysize(kKeyRotationDefaultKeyId));
-
- 211 &encryption_key.iv)) {
- 212 return Status(error::INTERNAL_ERROR, "Failed to generate random iv.");
-
- 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);
-
-
-
- 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,
-
-
-
-
- 232 scoped_ptr<EncryptionKey> encryption_key( new EncryptionKey());
-
- 234 encryption_key_source-> GetKey(track_type, encryption_key.get());
-
-
- 237 if (encryption_key->iv.empty()) {
-
- 239 &encryption_key->iv)) {
- 240 return Status(error::INTERNAL_ERROR, "Failed to generate random iv.");
-
-
-
- 244 GenerateEncryptedSampleEntry(*encryption_key, clear_lead_in_seconds,
- 245 protection_scheme, pattern, &description);
-
- 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();
-
-
- 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);
-
-
-
-
- 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,
-
-
-
-
- 268 for (uint32_t i = 0; i < streams.size(); ++i)
- 269 fragmenters_[i]->set_use_decoding_timestamp_in_timeline( true);
-
-
-
- 273 if (sidx_->reference_id == 0)
- 274 sidx_->reference_id = 1;
- 275 sidx_->timescale = streams[GetReferenceStreamId()]->info()->time_scale();
-
-
- 278 progress_target_ = streams[GetReferenceStreamId()]->info()->duration();
-
-
- 281 moov_->header.timescale = sidx_->timescale;
- 282 moof_->header.sequence_number = 1;
-
-
- 285 const std::string version = GetPackagerVersion();
- 286 if (!version.empty()) {
- 287 moov_->metadata.handler.handler_type = FOURCC_ID32;
- 288 moov_->metadata.id3v2.language.code = "eng";
- 289 moov_->metadata.id3v2.private_frame.owner = GetPackagerProjectUrl();
- 290 moov_->metadata.id3v2.private_frame.value = version;
-
- 292 return DoInitialize();
-
-
-
- 296 for (std::vector<Fragmenter*>::iterator it = fragmenters_.begin();
- 297 it != fragmenters_.end();
-
- 299 Status status = FinalizeFragment( true, *it);
-
-
-
-
-
-
-
- 307 for (std::vector<Track>::iterator track = moov_->tracks.begin();
- 308 track != moov_->tracks.end();
-
- 310 track->header.duration = Rescale(track->media.header.duration,
- 311 track->media.header.timescale,
- 312 moov_->header.timescale);
- 313 if (track->header.duration > moov_->header.duration)
- 314 moov_->header.duration = track->header.duration;
-
- 316 moov_->extends.header.fragment_duration = moov_->header.duration;
-
-
-
-
-
- 322 scoped_refptr<MediaSample> sample) {
-
-
- 325 DCHECK(stream_map_.find(stream) != stream_map_.end());
- 326 uint32_t stream_id = stream_map_[stream];
- 327 Fragmenter* fragmenter = fragmenters_[stream_id];
-
-
- 330 if (moov_->extends.tracks[stream_id].default_sample_duration == 0) {
- 331 moov_->extends.tracks[stream_id].default_sample_duration =
-
-
-
- 335 if (fragmenter->fragment_finalized()) {
- 336 return Status(error::FRAGMENT_FINALIZED,
- 337 "Current fragment is finalized already.");
-
-
- 340 bool finalize_fragment = false;
- 341 if (fragmenter->fragment_duration() >=
-
-
- 344 finalize_fragment = true;
-
-
- 347 bool finalize_segment = false;
- 348 if (segment_durations_[stream_id] >=
-
-
- 351 finalize_segment = true;
- 352 finalize_fragment = true;
-
-
-
-
- 357 if (finalize_fragment) {
- 358 status = FinalizeFragment(finalize_segment, fragmenter);
-
-
-
-
-
-
-
-
- 367 if (sample_duration_ == 0)
- 368 sample_duration_ = sample->duration();
- 369 moov_->tracks[stream_id].media.header.duration += sample->duration();
- 370 segment_durations_[stream_id] += sample->duration();
- 371 DCHECK_GE(segment_durations_[stream_id], fragmenter->fragment_duration());
-
-
-
- 375 uint32_t Segmenter::GetReferenceTimeScale() const {
- 376 return moov_->header.timescale;
-
-
-
- 380 if (moov_->header.timescale == 0) {
-
-
-
-
- 385 return static_cast<double>(moov_->header.duration) / moov_->header.timescale;
-
-
-
- 389 accumulated_progress_ += progress;
-
- 391 if (!progress_listener_) return;
- 392 if (progress_target_ == 0) return;
-
-
-
- 396 if (accumulated_progress_ >= progress_target_) {
-
-
- 399 progress_listener_-> OnProgress(static_cast<double>(accumulated_progress_) /
-
-
-
-
- 404 void Segmenter::SetComplete() {
- 405 if (!progress_listener_) return;
-
-
-
- 409 Status Segmenter::FinalizeSegment() {
- 410 Status status = DoFinalizeSegment();
-
-
- 413 sidx_->references.clear();
- 414 std::vector<uint64_t>::iterator it = segment_durations_.begin();
- 415 for (; it != segment_durations_.end(); ++it)
-
-
-
-
-
- 421 uint32_t Segmenter::GetReferenceStreamId() {
-
- 423 return sidx_->reference_id - 1;
-
-
- 426 Status Segmenter::FinalizeFragment( bool finalize_segment,
- 427 Fragmenter* fragmenter) {
- 428 fragmenter->FinalizeFragment();
-
-
- 431 for (std::vector<Fragmenter*>::iterator it = fragmenters_.begin();
- 432 it != fragmenters_.end();
-
- 434 if (!(*it)->fragment_finalized())
-
-
-
-
-
-
- 441 uint64_t data_offset = moof_->ComputeSize() + mdat.HeaderSize();
-
- 443 uint64_t next_traf_position = moof_->HeaderSize() + moof_->header.box_size();
- 444 for ( size_t i = 0; i < moof_->tracks.size(); ++i) {
- 445 TrackFragment& traf = moof_->tracks[i];
- 446 if (traf.auxiliary_offset.offsets.size() > 0) {
- 447 DCHECK_EQ(traf.auxiliary_offset.offsets.size(), 1u);
- 448 DCHECK(!traf.sample_encryption.sample_encryption_entries.empty());
-
- 450 next_traf_position += traf.box_size();
-
-
- 453 traf.auxiliary_offset.offsets[0] =
- 454 next_traf_position - traf.sample_encryption.box_size() +
- 455 traf.sample_encryption.HeaderSize() +
-
-
- 458 traf.runs[0].data_offset = data_offset + mdat.data_size;
- 459 mdat.data_size += fragmenters_[i]->data()->Size();
-
-
-
- 463 sidx_->references.resize(sidx_->references.size() + 1);
- 464 fragmenters_[GetReferenceStreamId()]->GenerateSegmentReference(
- 465 &sidx_->references[sidx_->references.size() - 1]);
- 466 sidx_->references[sidx_->references.size() - 1].referenced_size =
- 467 data_offset + mdat.data_size;
-
-
- 470 moof_->Write(fragment_buffer_.get());
- 471 mdat.WriteHeader(fragment_buffer_.get());
- 472 for (Fragmenter* fragmenter : fragmenters_)
- 473 fragment_buffer_->AppendBuffer(*fragmenter->data());
-
-
- 476 ++moof_->header.sequence_number;
-
- 478 if (finalize_segment)
- 479 return FinalizeSegment();
-
-
-
-
-
-
-
+ 105 track_encryption.default_per_sample_iv_size =
+ 106 static_cast<uint8_t >(encryption_key.iv.size());
+
+ 108 track_encryption.default_crypt_byte_block = pattern.crypt_byte_block;
+ 109 track_encryption.default_skip_byte_block = pattern.skip_byte_block;
+ 110 track_encryption.default_kid = encryption_key.key_id;
+
+
+ 113 void GenerateEncryptedSampleEntry( const EncryptionKey& encryption_key,
+ 114 double clear_lead_in_seconds,
+ 115 FourCC protection_scheme,
+ 116 ProtectionPattern pattern,
+ 117 SampleDescription* description) {
+
+ 119 if (description->type == kVideo) {
+ 120 DCHECK_EQ(1u, description->video_entries.size());
+
+
+ 123 if (clear_lead_in_seconds > 0)
+ 124 description->video_entries.push_back(description->video_entries[0]);
+
+
+ 127 VideoSampleEntry& entry = description->video_entries[0];
+ 128 GenerateSinf(encryption_key, entry.format, protection_scheme, pattern,
+
+ 130 entry.format = FOURCC_encv;
+
+ 132 DCHECK_EQ(kAudio, description->type);
+ 133 DCHECK_EQ(1u, description->audio_entries.size());
+
+
+ 136 if (clear_lead_in_seconds > 0)
+ 137 description->audio_entries.push_back(description->audio_entries[0]);
+
+
+ 140 AudioSampleEntry& entry = description->audio_entries[0];
+ 141 GenerateSinf(encryption_key, entry.format, protection_scheme, pattern,
+
+ 143 entry.format = FOURCC_enca;
+
+
+
+
+
+ 149 Segmenter::Segmenter( const MuxerOptions& options,
+ 150 scoped_ptr<FileType> ftyp,
+ 151 scoped_ptr<Movie> moov)
+
+
+
+ 155 moof_(new MovieFragment()),
+ 156 fragment_buffer_(new BufferWriter()),
+ 157 sidx_(new SegmentIndex()),
+ 158 muxer_listener_(NULL),
+ 159 progress_listener_(NULL),
+
+ 161 accumulated_progress_(0),
+ 162 sample_duration_(0u) {}
+
+ 164 Segmenter::~Segmenter() { STLDeleteElements(&fragmenters_); }
+
+
+
+
+
+ 170 uint32_t max_sd_pixels,
+ 171 double clear_lead_in_seconds,
+ 172 double crypto_period_duration_in_seconds,
+ 173 FourCC protection_scheme) {
+ 174 DCHECK_LT(0u, streams.size());
+ 175 muxer_listener_ = muxer_listener;
+ 176 progress_listener_ = progress_listener;
+ 177 moof_->header.sequence_number = 0;
+
+ 179 moof_->tracks.resize(streams.size());
+ 180 segment_durations_.resize(streams.size());
+ 181 fragmenters_.resize(streams.size());
+ 182 const bool key_rotation_enabled = crypto_period_duration_in_seconds != 0;
+ 183 const bool kInitialEncryptionInfo = true;
+
+ 185 for (uint32_t i = 0; i < streams.size(); ++i) {
+ 186 stream_map_[streams[i]] = i;
+ 187 moof_->tracks[i].header.track_id = i + 1;
+ 188 if (streams[i]->info()->stream_type() == kStreamVideo) {
+
+ 190 if (sidx_->reference_id == 0)
+ 191 sidx_->reference_id = i + 1;
+
+ 193 if (!encryption_key_source) {
+ 194 fragmenters_[i] = new Fragmenter(streams[i]->info(), &moof_->tracks[i]);
+
+
+
+ 198 KeySource::TrackType track_type =
+ 199 GetTrackTypeForEncryption(*streams[i]->info(), max_sd_pixels);
+
+ 201 moov_->tracks[i].media.information.sample_table.description;
+ 202 ProtectionPattern pattern =
+ 203 GetProtectionPattern(protection_scheme, description.type);
+
+ 205 if (key_rotation_enabled) {
+
+
+ 208 encryption_key.key_id.assign(
+ 209 kKeyRotationDefaultKeyId,
+ 210 kKeyRotationDefaultKeyId + arraysize(kKeyRotationDefaultKeyId));
+
+ 212 &encryption_key.iv)) {
+ 213 return Status(error::INTERNAL_ERROR, "Failed to generate random iv.");
+
+ 215 GenerateEncryptedSampleEntry(encryption_key, clear_lead_in_seconds,
+ 216 protection_scheme, pattern, &description);
+ 217 if (muxer_listener_) {
+ 218 muxer_listener_->OnEncryptionInfoReady(
+ 219 kInitialEncryptionInfo, protection_scheme, encryption_key.key_id,
+ 220 encryption_key.iv, encryption_key.key_system_info);
+
+
+
+ 224 moof_.get(), streams[i]->info(), &moof_->tracks[i],
+ 225 encryption_key_source, track_type,
+ 226 crypto_period_duration_in_seconds * streams[i]->info()->time_scale(),
+ 227 clear_lead_in_seconds * streams[i]->info()->time_scale(),
+ 228 protection_scheme, pattern.crypt_byte_block, pattern.skip_byte_block,
+
+
+
+
+ 233 scoped_ptr<EncryptionKey> encryption_key( new EncryptionKey());
+
+ 235 encryption_key_source-> GetKey(track_type, encryption_key.get());
+
+
+ 238 if (encryption_key->iv.empty()) {
+
+ 240 &encryption_key->iv)) {
+ 241 return Status(error::INTERNAL_ERROR, "Failed to generate random iv.");
+
+
+
+ 245 GenerateEncryptedSampleEntry(*encryption_key, clear_lead_in_seconds,
+ 246 protection_scheme, pattern, &description);
+
+ 248 if (moov_->pssh.empty()) {
+ 249 moov_->pssh.resize(encryption_key->key_system_info.size());
+ 250 for ( size_t i = 0; i < encryption_key->key_system_info.size(); i++) {
+ 251 moov_->pssh[i].raw_box = encryption_key->key_system_info[i].CreateBox();
+
+
+ 254 if (muxer_listener_) {
+ 255 muxer_listener_->OnEncryptionInfoReady(
+ 256 kInitialEncryptionInfo, protection_scheme, encryption_key->key_id,
+ 257 encryption_key->iv, encryption_key->key_system_info);
+
+
+
+
+ 262 streams[i]->info(), &moof_->tracks[i], encryption_key.Pass(),
+ 263 clear_lead_in_seconds * streams[i]->info()->time_scale(),
+ 264 protection_scheme, pattern.crypt_byte_block, pattern.skip_byte_block,
+
+
+
+
+ 269 for (uint32_t i = 0; i < streams.size(); ++i)
+ 270 fragmenters_[i]->set_use_decoding_timestamp_in_timeline( true);
+
+
+
+ 274 if (sidx_->reference_id == 0)
+ 275 sidx_->reference_id = 1;
+ 276 sidx_->timescale = streams[GetReferenceStreamId()]->info()->time_scale();
+
+
+ 279 progress_target_ = streams[GetReferenceStreamId()]->info()->duration();
+
+
+ 282 moov_->header.timescale = sidx_->timescale;
+ 283 moof_->header.sequence_number = 1;
+
+
+ 286 const std::string version = GetPackagerVersion();
+ 287 if (!version.empty()) {
+ 288 moov_->metadata.handler.handler_type = FOURCC_ID32;
+ 289 moov_->metadata.id3v2.language.code = "eng";
+ 290 moov_->metadata.id3v2.private_frame.owner = GetPackagerProjectUrl();
+ 291 moov_->metadata.id3v2.private_frame.value = version;
+
+ 293 return DoInitialize();
+
+
+
+ 297 for (std::vector<Fragmenter*>::iterator it = fragmenters_.begin();
+ 298 it != fragmenters_.end();
+
+ 300 Status status = FinalizeFragment( true, *it);
+
+
+
+
+
+
+
+ 308 for (std::vector<Track>::iterator track = moov_->tracks.begin();
+ 309 track != moov_->tracks.end();
+
+ 311 track->header.duration = Rescale(track->media.header.duration,
+ 312 track->media.header.timescale,
+ 313 moov_->header.timescale);
+ 314 if (track->header.duration > moov_->header.duration)
+ 315 moov_->header.duration = track->header.duration;
+
+ 317 moov_->extends.header.fragment_duration = moov_->header.duration;
+
+
+
+
+
+ 323 scoped_refptr<MediaSample> sample) {
+
+
+ 326 DCHECK(stream_map_.find(stream) != stream_map_.end());
+ 327 uint32_t stream_id = stream_map_[stream];
+ 328 Fragmenter* fragmenter = fragmenters_[stream_id];
+
+
+ 331 if (moov_->extends.tracks[stream_id].default_sample_duration == 0) {
+ 332 moov_->extends.tracks[stream_id].default_sample_duration =
+
+
+
+ 336 if (fragmenter->fragment_finalized()) {
+ 337 return Status(error::FRAGMENT_FINALIZED,
+ 338 "Current fragment is finalized already.");
+
+
+ 341 bool finalize_fragment = false;
+ 342 if (fragmenter->fragment_duration() >=
+
+
+ 345 finalize_fragment = true;
+
+
+ 348 bool finalize_segment = false;
+ 349 if (segment_durations_[stream_id] >=
+
+
+ 352 finalize_segment = true;
+ 353 finalize_fragment = true;
+
+
+
+
+ 358 if (finalize_fragment) {
+ 359 status = FinalizeFragment(finalize_segment, fragmenter);
+
+
+
+
+
+
+
+
+ 368 if (sample_duration_ == 0)
+ 369 sample_duration_ = sample->duration();
+ 370 moov_->tracks[stream_id].media.header.duration += sample->duration();
+ 371 segment_durations_[stream_id] += sample->duration();
+ 372 DCHECK_GE(segment_durations_[stream_id], fragmenter->fragment_duration());
+
+
+
+ 376 uint32_t Segmenter::GetReferenceTimeScale() const {
+ 377 return moov_->header.timescale;
+
+
+
+ 381 if (moov_->header.timescale == 0) {
+
+
+
+
+ 386 return static_cast<double>(moov_->header.duration) / moov_->header.timescale;
+
+
+
+ 390 accumulated_progress_ += progress;
+
+ 392 if (!progress_listener_) return;
+ 393 if (progress_target_ == 0) return;
+
+
+
+ 397 if (accumulated_progress_ >= progress_target_) {
+
+
+ 400 progress_listener_-> OnProgress(static_cast<double>(accumulated_progress_) /
+
+
+
+
+ 405 void Segmenter::SetComplete() {
+ 406 if (!progress_listener_) return;
+
+
+
+ 410 Status Segmenter::FinalizeSegment() {
+ 411 Status status = DoFinalizeSegment();
+
+
+ 414 sidx_->references.clear();
+ 415 std::vector<uint64_t>::iterator it = segment_durations_.begin();
+ 416 for (; it != segment_durations_.end(); ++it)
+
+
+
+
+
+ 422 uint32_t Segmenter::GetReferenceStreamId() {
+
+ 424 return sidx_->reference_id - 1;
+
+
+ 427 Status Segmenter::FinalizeFragment( bool finalize_segment,
+ 428 Fragmenter* fragmenter) {
+ 429 fragmenter->FinalizeFragment();
+
+
+ 432 for (std::vector<Fragmenter*>::iterator it = fragmenters_.begin();
+ 433 it != fragmenters_.end();
+
+ 435 if (!(*it)->fragment_finalized())
+
+
+
+
+
+
+ 442 uint64_t data_offset = moof_->ComputeSize() + mdat.HeaderSize();
+
+ 444 uint64_t next_traf_position = moof_->HeaderSize() + moof_->header.box_size();
+ 445 for ( size_t i = 0; i < moof_->tracks.size(); ++i) {
+ 446 TrackFragment& traf = moof_->tracks[i];
+ 447 if (traf.auxiliary_offset.offsets.size() > 0) {
+ 448 DCHECK_EQ(traf.auxiliary_offset.offsets.size(), 1u);
+ 449 DCHECK(!traf.sample_encryption.sample_encryption_entries.empty());
+
+ 451 next_traf_position += traf.box_size();
+
+
+ 454 traf.auxiliary_offset.offsets[0] =
+ 455 next_traf_position - traf.sample_encryption.box_size() +
+ 456 traf.sample_encryption.HeaderSize() +
+
+
+ 459 traf.runs[0].data_offset = data_offset + mdat.data_size;
+ 460 mdat.data_size += fragmenters_[i]->data()->Size();
+
+
+
+ 464 sidx_->references.resize(sidx_->references.size() + 1);
+ 465 fragmenters_[GetReferenceStreamId()]->GenerateSegmentReference(
+ 466 &sidx_->references[sidx_->references.size() - 1]);
+ 467 sidx_->references[sidx_->references.size() - 1].referenced_size =
+ 468 data_offset + mdat.data_size;
+
+
+ 471 moof_->Write(fragment_buffer_.get());
+ 472 mdat.WriteHeader(fragment_buffer_.get());
+ 473 for (Fragmenter* fragmenter : fragmenters_)
+ 474 fragment_buffer_->AppendBuffer(*fragmenter->data());
+
+
+ 477 ++moof_->header.sequence_number;
+
+ 479 if (finalize_segment)
+ 480 return FinalizeSegment();
+
+
+
+
+
+
+
@@ -600,7 +601,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
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 c82aa3f6ad..74edfc355c 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 fa2934cdb9..49c4703b50 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 62162f95b3..4a970628b0 100644
--- a/docs/d2/dae/webm__muxer_8cc_source.html
+++ b/docs/d2/dae/webm__muxer_8cc_source.html
@@ -216,7 +216,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
-
+
@@ -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 082023afed..b360338aa3 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 a22579356e..45677b9053 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 cb37c604c9..ad3e364168 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 9b89b9530b..891e59e002 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 7f29119e22..dfa0002b27 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 8d50b77a79..2e6dcdb948 100644
--- a/docs/d2/dc7/structshaka_1_1MpdOptions-members.html
+++ b/docs/d2/dc7/structshaka_1_1MpdOptions-members.html
@@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
diff --git a/docs/d2/dcd/program__map__table__writer_8h_source.html b/docs/d2/dcd/program__map__table__writer_8h_source.html
index 4124f201d4..33862a4b1c 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 a9d1591aae..1815b1709f 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 697e6be3a5..c76ed6b97a 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 5a87edca3b..4e78cc2ddd 100644
--- a/docs/d2/dd6/mkv__writer_8h_source.html
+++ b/docs/d2/dd6/mkv__writer_8h_source.html
@@ -122,7 +122,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
51 mkvmuxer::int64 position) override;
-
+
61 File* file() { return file_.get(); }
@@ -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 fa36997046..ce9e89dfd5 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 0b971739b1..92a9d6dad5 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 30c725b676..135e09ada0 100644
--- a/docs/d2/de6/packager__main_8cc_source.html
+++ b/docs/d2/de6/packager__main_8cc_source.html
@@ -109,550 +109,590 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
20 #include "packager/base/command_line.h"
21 #include "packager/base/files/file_path.h"
22 #include "packager/base/logging.h"
- 23 #include "packager/base/stl_util.h"
- 24 #include "packager/base/strings/string_split.h"
- 25 #include "packager/base/strings/stringprintf.h"
- 26 #include "packager/base/threading/simple_thread.h"
- 27 #include "packager/base/time/clock.h"
- 28 #include "packager/hls/base/hls_notifier.h"
- 29 #include "packager/hls/base/simple_hls_notifier.h"
- 30 #include "packager/media/base/container_names.h"
- 31 #include "packager/media/base/demuxer.h"
- 32 #include "packager/media/base/fourccs.h"
- 33 #include "packager/media/base/key_source.h"
- 34 #include "packager/media/base/muxer_options.h"
- 35 #include "packager/media/base/muxer_util.h"
- 36 #include "packager/media/event/hls_notify_muxer_listener.h"
- 37 #include "packager/media/event/mpd_notify_muxer_listener.h"
- 38 #include "packager/media/event/vod_media_info_dump_muxer_listener.h"
- 39 #include "packager/media/file/file.h"
- 40 #include "packager/media/formats/mp2t/ts_muxer.h"
- 41 #include "packager/media/formats/mp4/mp4_muxer.h"
- 42 #include "packager/media/formats/webm/webm_muxer.h"
- 43 #include "packager/mpd/base/dash_iop_mpd_notifier.h"
- 44 #include "packager/mpd/base/media_info.pb.h"
- 45 #include "packager/mpd/base/mpd_builder.h"
- 46 #include "packager/mpd/base/simple_mpd_notifier.h"
- 47 #include "packager/version/version.h"
-
- 49 DEFINE_bool(use_fake_clock_for_muxer,
-
- 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 DEFINE_bool(override_version,
-
- 56 "Override packager version in the generated outputs with "
- 57 "--test_version if it is set to true. Should be used for "
-
- 59 DEFINE_string(test_version,
-
- 61 "Packager version for testing. Ignored if --override_version is "
- 62 "false. Should be used for testing only.");
-
-
-
-
-
-
- 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"
-
- 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"
-
- 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";
-
- 103 const char kMediaInfoSuffix[] = ".media_info";
-
-
-
- 107 kArgumentValidationFailed,
-
-
-
+ 23 #include "packager/base/path_service.h"
+ 24 #include "packager/base/stl_util.h"
+ 25 #include "packager/base/strings/string_split.h"
+ 26 #include "packager/base/strings/stringprintf.h"
+ 27 #include "packager/base/threading/simple_thread.h"
+ 28 #include "packager/base/time/clock.h"
+ 29 #include "packager/hls/base/hls_notifier.h"
+ 30 #include "packager/hls/base/simple_hls_notifier.h"
+ 31 #include "packager/media/base/container_names.h"
+ 32 #include "packager/media/base/demuxer.h"
+ 33 #include "packager/media/base/fourccs.h"
+ 34 #include "packager/media/base/key_source.h"
+ 35 #include "packager/media/base/muxer_options.h"
+ 36 #include "packager/media/base/muxer_util.h"
+ 37 #include "packager/media/event/hls_notify_muxer_listener.h"
+ 38 #include "packager/media/event/mpd_notify_muxer_listener.h"
+ 39 #include "packager/media/event/vod_media_info_dump_muxer_listener.h"
+ 40 #include "packager/media/file/file.h"
+ 41 #include "packager/media/formats/mp2t/ts_muxer.h"
+ 42 #include "packager/media/formats/mp4/mp4_muxer.h"
+ 43 #include "packager/media/formats/webm/webm_muxer.h"
+ 44 #include "packager/mpd/base/dash_iop_mpd_notifier.h"
+ 45 #include "packager/mpd/base/media_info.pb.h"
+ 46 #include "packager/mpd/base/mpd_builder.h"
+ 47 #include "packager/mpd/base/simple_mpd_notifier.h"
+ 48 #include "packager/version/version.h"
+
+
+
+
+
+ 54 #endif // defined(OS_WIN)
+
+ 56 DEFINE_bool(use_fake_clock_for_muxer,
+
+ 58 "Set to true to use a fake clock for muxer. With this flag set, "
+ 59 "creation time and modification time in outputs are set to 0. "
+ 60 "Should only be used for testing.");
+ 61 DEFINE_bool(override_version,
+
+ 63 "Override packager version in the generated outputs with "
+ 64 "--test_version if it is set to true. Should be used for "
+
+ 66 DEFINE_string(test_version,
+
+ 68 "Packager version for testing. Ignored if --override_version is "
+ 69 "false. Should be used for testing only.");
+
+
+
+
+
+
+ 76 "Packager driver program. Usage:\n\n"
+ 77 "%s [flags] <stream_descriptor> ...\n"
+ 78 "stream_descriptor consists of comma separated field_name/value pairs:\n"
+ 79 "field_name=value,[field_name=value,]...\n"
+ 80 "Supported field names are as follows:\n"
+ 81 " - input (in): Required input/source media file path or network stream\n"
+
+ 83 " - stream_selector (stream): Required field with value 'audio',\n"
+ 84 " 'video', or stream number (zero based).\n"
+ 85 " - output (out): Required output file (single file) or initialization\n"
+ 86 " file path (multiple file).\n"
+ 87 " - segment_template (segment): Optional value which specifies the\n"
+ 88 " naming pattern for the segment files, and that the stream should be\n"
+ 89 " split into multiple files. Its presence should be consistent across\n"
+
+ 91 " - bandwidth (bw): Optional value which contains a user-specified\n"
+ 92 " content bit rate for the stream, in bits/sec. If specified, this\n"
+ 93 " value is propagated to the $Bandwidth$ template parameter for\n"
+ 94 " segment names. If not specified, its value may be estimated.\n"
+ 95 " - language (lang): Optional value which contains a user-specified\n"
+ 96 " language tag. If specified, this value overrides any language\n"
+ 97 " metadata in the input track.\n"
+ 98 " - output_format (format): Optional value which specifies the format\n"
+ 99 " of the output files (MP4 or WebM). If not specified, it will be\n"
+ 100 " derived from the file extension of the output file.\n"
+ 101 " - hls_name: Required for audio when outputting HLS.\n"
+ 102 " name of the output stream. This is not (necessarily) the same as\n"
+ 103 " output. This is used as the NAME attribute for EXT-X-MEDIA\n"
+ 104 " - hls_group_id: Required for audio when outputting HLS.\n"
+ 105 " The group ID for the output stream. For HLS this is used as the\n"
+ 106 " GROUP-ID attribute for EXT-X-MEDIA.\n"
+ 107 " - playlist_name: Required for HLS output.\n"
+ 108 " Name of the playlist for the stream. Usually ends with '.m3u8'.\n";
+
+ 110 const char kMediaInfoSuffix[] = ".media_info";
-
-
-
- 115 std::string DetermineTextFileFormat( const std::string& file) {
-
-
- 118 LOG(ERROR) << "Failed to open file " << file
- 119 << " to determine file format.";
-
-
- 122 MediaContainerName container_name = DetermineContainer(
- 123 reinterpret_cast<const uint8_t*>(content.data()), content.size());
- 124 if (container_name == CONTAINER_WEBVTT) {
-
- 126 } else if (container_name == CONTAINER_TTML) {
-
+
+
+ 114 kArgumentValidationFailed,
+
+
+
+
+
+
+
+ 122 std::string DetermineTextFileFormat( const std::string& file) {
+
+
+ 125 LOG(ERROR) << "Failed to open file " << file
+ 126 << " to determine file format.";
+
-
-
-
-
- 133 FourCC GetProtectionScheme( const std::string& protection_scheme) {
- 134 if (protection_scheme == "cenc") {
-
- 136 } else if (protection_scheme == "cens") {
-
- 138 } else if (protection_scheme == "cbc1") {
-
- 140 } else if (protection_scheme == "cbcs") {
-
-
- 143 LOG(ERROR) << "Unknown protection scheme: " << protection_scheme;
-
-
-
-
-
-
-
-
- 152 class FakeClock : public base::Clock {
-
- 154 base::Time Now() override { return base::Time(); }
-
+ 129 MediaContainerName container_name = DetermineContainer(
+ 130 reinterpret_cast<const uint8_t*>(content.data()), content.size());
+ 131 if (container_name == CONTAINER_WEBVTT) {
+
+ 133 } else if (container_name == CONTAINER_TTML) {
+
+
+
+
+
+
+ 140 FourCC GetProtectionScheme( const std::string& protection_scheme) {
+ 141 if (protection_scheme == "cenc") {
+
+ 143 } else if (protection_scheme == "cens") {
+
+ 145 } else if (protection_scheme == "cbc1") {
+
+ 147 } else if (protection_scheme == "cbcs") {
+
+
+ 150 LOG(ERROR) << "Unknown protection scheme: " << protection_scheme;
+
+
+
+
+
-
- 158 class RemuxJob : public base::SimpleThread {
-
- 160 RemuxJob(scoped_ptr<Demuxer> demuxer)
- 161 : SimpleThread( "RemuxJob"),
- 162 demuxer_(demuxer.Pass()) {}
+
+
+ 159 class FakeClock : public base::Clock {
+
+ 161 base::Time Now() override { return base::Time(); }
+
- 164 ~RemuxJob() override {
- 165 STLDeleteElements(&muxers_);
-
-
- 168 void AddMuxer(scoped_ptr<Muxer> mux) {
- 169 muxers_.push_back(mux.release());
-
-
- 172 Demuxer* demuxer() { return demuxer_.get(); }
- 173 Status status() { return status_; }
+
+ 165 class RemuxJob : public base::SimpleThread {
+
+ 167 RemuxJob(scoped_ptr<Demuxer> demuxer)
+ 168 : SimpleThread( "RemuxJob"),
+ 169 demuxer_(demuxer.Pass()) {}
+
+ 171 ~RemuxJob() override {
+ 172 STLDeleteElements(&muxers_);
+
-
- 176 void Run() override {
-
- 178 status_ = demuxer_->Run();
-
-
- 181 scoped_ptr<Demuxer> demuxer_;
- 182 std::vector<Muxer*> muxers_;
-
-
- 185 DISALLOW_COPY_AND_ASSIGN(RemuxJob);
-
+ 175 void AddMuxer(scoped_ptr<Muxer> mux) {
+ 176 muxers_.push_back(mux.release());
+
+
+ 179 Demuxer* demuxer() { return demuxer_.get(); }
+ 180 Status status() { return status_; }
+
+
+ 183 void Run() override {
+
+ 185 status_ = demuxer_->Run();
+
- 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;
-
-
-
- 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
-
-
-
-
- 207 text_media_info->set_media_file_name(stream_muxer_options.output_file_name);
- 208 text_media_info->set_container_type(MediaInfo::CONTAINER_TEXT);
-
- 210 if (stream_muxer_options.bandwidth != 0) {
- 211 text_media_info->set_bandwidth(stream_muxer_options.bandwidth);
-
-
-
-
- 216 text_media_info->set_bandwidth(256);
-
-
- 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);
-
-
-
-
- 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));
-
- 234 DCHECK_EQ(container, CONTAINER_MOV);
- 235 return scoped_ptr<Muxer>( new mp4::MP4Muxer(options));
-
-
-
- 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) {
-
- 247 DCHECK(!(mpd_notifier && hls_notifier));
-
-
- 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) {
-
- 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.";
-
-
- 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;
-
-
- 272 stream_muxer_options.bandwidth = stream_iter->bandwidth;
-
-
- 275 if (stream_iter->stream_selector == "text") {
- 276 MediaInfo text_media_info;
- 277 if (!StreamInfoToTextMediaInfo(*stream_iter, stream_muxer_options,
-
-
-
-
-
-
- 284 if (!mpd_notifier->NotifyNewContainer(text_media_info, &unused)) {
- 285 LOG(ERROR) << "Failed to process text file " << stream_iter->input;
-
- 287 mpd_notifier->Flush();
-
- 289 } else if (FLAGS_output_media_info) {
-
-
- 292 stream_muxer_options.output_file_name + kMediaInfoSuffix);
-
-
- 295 << "--mpd_output or --output_media_info flags are "
- 296 "required for text output. Skipping manifest related output for "
- 297 << stream_iter->input;
-
-
-
-
- 302 if (stream_iter->input != previous_input) {
-
- 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());
-
-
- 310 demuxer->SetKeySource(key_source.Pass());
-
- 312 Status status = demuxer->Initialize();
-
- 314 LOG(ERROR) << "Demuxer failed to initialize: " << status.ToString();
-
-
- 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())
-
-
- 323 remux_jobs->push_back( new RemuxJob(demuxer.Pass()));
- 324 previous_input = stream_iter->input;
-
- 326 DCHECK(!remux_jobs->empty());
-
- 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);
-
-
- 333 muxer->SetKeySource(key_source,
-
-
- 336 FLAGS_crypto_period_duration,
- 337 GetProtectionScheme(FLAGS_protection_scheme));
-
-
- 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();
-
-
- 351 scoped_ptr<MpdNotifyMuxerListener> mpd_notify_muxer_listener(
- 352 new MpdNotifyMuxerListener(mpd_notifier));
- 353 muxer_listener = mpd_notify_muxer_listener.Pass();
-
-
-
-
-
- 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())
-
-
- 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);
-
- 369 muxer_listener.reset( new HlsNotifyMuxerListener(hls_playlist_name, name,
- 370 group_id, hls_notifier));
-
-
-
- 374 muxer->SetMuxerListener(muxer_listener.Pass());
+ 188 scoped_ptr<Demuxer> demuxer_;
+ 189 std::vector<Muxer*> muxers_;
+
+
+ 192 DISALLOW_COPY_AND_ASSIGN(RemuxJob);
+
+
+ 195 bool StreamInfoToTextMediaInfo( const StreamDescriptor& stream_descriptor,
+ 196 const MuxerOptions& stream_muxer_options,
+ 197 MediaInfo* text_media_info) {
+ 198 const std::string& language = stream_descriptor.language;
+ 199 std::string format = DetermineTextFileFormat(stream_descriptor.input);
+ 200 if (format.empty()) {
+ 201 LOG(ERROR) << "Failed to determine the text file format for "
+ 202 << stream_descriptor.input;
+
+
+
+ 206 if (! File::Copy(stream_descriptor.input.c_str(),
+ 207 stream_muxer_options.output_file_name.c_str())) {
+ 208 LOG(ERROR) << "Failed to copy the input file (" << stream_descriptor.input
+ 209 << ") to output file (" << stream_muxer_options.output_file_name
+
+
+
+
+ 214 text_media_info->set_media_file_name(stream_muxer_options.output_file_name);
+ 215 text_media_info->set_container_type(MediaInfo::CONTAINER_TEXT);
+
+ 217 if (stream_muxer_options.bandwidth != 0) {
+ 218 text_media_info->set_bandwidth(stream_muxer_options.bandwidth);
+
+
+
+
+ 223 text_media_info->set_bandwidth(256);
+
+
+ 226 MediaInfo::TextInfo* text_info = text_media_info->mutable_text_info();
+ 227 text_info->set_format(format);
+ 228 if (!language.empty())
+ 229 text_info->set_language(language);
+
+
+
+
+ 234 scoped_ptr<Muxer> CreateOutputMuxer( const MuxerOptions& options,
+ 235 MediaContainerName container) {
+ 236 if (container == CONTAINER_WEBM) {
+ 237 return scoped_ptr<Muxer>( new webm::WebMMuxer(options));
+ 238 } else if (container == CONTAINER_MPEG2TS) {
+ 239 return scoped_ptr<Muxer>( new mp2t::TsMuxer(options));
+
+ 241 DCHECK_EQ(container, CONTAINER_MOV);
+ 242 return scoped_ptr<Muxer>( new mp4::MP4Muxer(options));
+
+
+
+ 246 bool CreateRemuxJobs( const StreamDescriptorList& stream_descriptors,
+ 247 const MuxerOptions& muxer_options,
+ 248 FakeClock* fake_clock,
+ 249 KeySource* key_source,
+ 250 MpdNotifier* mpd_notifier,
+ 251 hls::HlsNotifier* hls_notifier,
+ 252 std::vector<RemuxJob*>* remux_jobs) {
+
+ 254 DCHECK(!(mpd_notifier && hls_notifier));
+
+
+ 257 std::string previous_input;
+ 258 int stream_number = 0;
+ 259 for (StreamDescriptorList::const_iterator
+ 260 stream_iter = stream_descriptors.begin();
+ 261 stream_iter != stream_descriptors.end();
+ 262 ++stream_iter, ++stream_number) {
+
+ 264 MuxerOptions stream_muxer_options(muxer_options);
+ 265 stream_muxer_options.output_file_name = stream_iter->output;
+ 266 if (!stream_iter->segment_template.empty()) {
+ 267 if (!ValidateSegmentTemplate(stream_iter->segment_template)) {
+ 268 LOG(ERROR) << "ERROR: segment template with '"
+ 269 << stream_iter->segment_template << "' is invalid.";
+
+
+ 272 stream_muxer_options.segment_template = stream_iter->segment_template;
+ 273 if (stream_muxer_options.single_segment) {
+ 274 LOG(WARNING) << "Segment template and single segment are incompatible, "
+ 275 "setting single segment to false.";
+ 276 stream_muxer_options.single_segment = false;
+
+
+ 279 stream_muxer_options.bandwidth = stream_iter->bandwidth;
+
+
+ 282 if (stream_iter->stream_selector == "text") {
+ 283 MediaInfo text_media_info;
+ 284 if (!StreamInfoToTextMediaInfo(*stream_iter, stream_muxer_options,
+
+
+
+
+
+
+ 291 if (!mpd_notifier->NotifyNewContainer(text_media_info, &unused)) {
+ 292 LOG(ERROR) << "Failed to process text file " << stream_iter->input;
+
+ 294 mpd_notifier->Flush();
+
+ 296 } else if (FLAGS_output_media_info) {
+
+
+ 299 stream_muxer_options.output_file_name + kMediaInfoSuffix);
+
+
+ 302 << "--mpd_output or --output_media_info flags are "
+ 303 "required for text output. Skipping manifest related output for "
+ 304 << stream_iter->input;
+
+
+
+
+ 309 if (stream_iter->input != previous_input) {
+
+ 311 scoped_ptr<Demuxer> demuxer( new Demuxer(stream_iter->input));
+ 312 if (FLAGS_enable_widevine_decryption ||
+ 313 FLAGS_enable_fixed_key_decryption) {
+ 314 scoped_ptr<KeySource> key_source(CreateDecryptionKeySource());
+
+
+ 317 demuxer->SetKeySource(key_source.Pass());
+
+ 319 Status status = demuxer->Initialize();
+
+ 321 LOG(ERROR) << "Demuxer failed to initialize: " << status.ToString();
+
+
+ 324 if (FLAGS_dump_stream_info) {
+ 325 printf( "\nFile \"%s\":\n", stream_iter->input.c_str());
+ 326 DumpStreamInfo(demuxer->streams());
+ 327 if (stream_iter->output.empty())
+
+
+ 330 remux_jobs->push_back( new RemuxJob(demuxer.Pass()));
+ 331 previous_input = stream_iter->input;
+
+ 333 DCHECK(!remux_jobs->empty());
+
+ 335 scoped_ptr<Muxer> muxer(
+ 336 CreateOutputMuxer(stream_muxer_options, stream_iter->output_format));
+ 337 if (FLAGS_use_fake_clock_for_muxer) muxer->set_clock(fake_clock);
+
+
+ 340 muxer->SetKeySource(key_source,
+
+
+ 343 FLAGS_crypto_period_duration,
+ 344 GetProtectionScheme(FLAGS_protection_scheme));
+
+
+ 347 scoped_ptr<MuxerListener> muxer_listener;
+ 348 DCHECK(!(FLAGS_output_media_info && mpd_notifier));
+ 349 if (FLAGS_output_media_info) {
+ 350 const std::string output_media_info_file_name =
+ 351 stream_muxer_options.output_file_name + kMediaInfoSuffix;
+ 352 scoped_ptr<VodMediaInfoDumpMuxerListener>
+ 353 vod_media_info_dump_muxer_listener(
+ 354 new VodMediaInfoDumpMuxerListener(output_media_info_file_name));
+ 355 muxer_listener = vod_media_info_dump_muxer_listener.Pass();
+
+
+ 358 scoped_ptr<MpdNotifyMuxerListener> mpd_notify_muxer_listener(
+ 359 new MpdNotifyMuxerListener(mpd_notifier));
+ 360 muxer_listener = mpd_notify_muxer_listener.Pass();
+
+
+
+
+
+ 366 std::string group_id = stream_iter->hls_group_id;
+ 367 std::string name = stream_iter->hls_name;
+ 368 std::string hls_playlist_name = stream_iter->hls_playlist_name;
+ 369 if (group_id.empty())
+
+
+ 372 name = base::StringPrintf( "stream_%d", stream_number);
+ 373 if (hls_playlist_name.empty())
+ 374 hls_playlist_name = base::StringPrintf( "stream_%d.m3u8", stream_number);
- 376 if (!AddStreamToMuxer(remux_jobs->back()->demuxer()->streams(),
- 377 stream_iter->stream_selector,
- 378 stream_iter->language,
-
-
-
- 382 remux_jobs->back()->AddMuxer(muxer.Pass());
-
-
-
-
-
- 388 Status RunRemuxJobs( const std::vector<RemuxJob*>& remux_jobs) {
-
- 390 for (std::vector<RemuxJob*>::const_iterator job_iter = remux_jobs.begin();
- 391 job_iter != remux_jobs.end();
-
- 393 (*job_iter)->Start();
-
-
-
-
-
-
-
- 401 for (std::vector<RemuxJob*>::const_iterator job_iter = remux_jobs.begin();
- 402 job_iter != remux_jobs.end();
-
- 404 if ((*job_iter)->HasBeenJoined()) {
- 405 status = (*job_iter)->status();
-
-
-
-
-
-
-
- 413 } while (!all_joined && status.ok());
-
-
-
-
- 418 bool RunPackager( const StreamDescriptorList& stream_descriptors) {
- 419 const FourCC protection_scheme = GetProtectionScheme(FLAGS_protection_scheme);
- 420 if (protection_scheme == FOURCC_NULL)
-
-
- 423 if (!AssignFlagsFromProfile())
-
-
- 426 if (FLAGS_output_media_info && !FLAGS_mpd_output.empty()) {
- 427 NOTIMPLEMENTED() << "ERROR: --output_media_info and --mpd_output do not "
-
-
-
- 431 if (FLAGS_output_media_info && !FLAGS_single_segment) {
-
- 433 NOTIMPLEMENTED() << "ERROR: --output_media_info is only supported if "
- 434 "--single_segment is true.";
-
-
-
-
-
- 440 if (!FLAGS_mpd_output.empty() && !FLAGS_hls_master_playlist_output.empty()) {
- 441 LOG(ERROR) << "Cannot output both MPD and HLS.";
+ 376 muxer_listener.reset( new HlsNotifyMuxerListener(hls_playlist_name, name,
+ 377 group_id, hls_notifier));
+
+
+
+ 381 muxer->SetMuxerListener(muxer_listener.Pass());
+
+ 383 if (!AddStreamToMuxer(remux_jobs->back()->demuxer()->streams(),
+ 384 stream_iter->stream_selector,
+ 385 stream_iter->language,
+
+
+
+ 389 remux_jobs->back()->AddMuxer(muxer.Pass());
+
+
+
+
+
+ 395 Status RunRemuxJobs( const std::vector<RemuxJob*>& remux_jobs) {
+
+ 397 for (std::vector<RemuxJob*>::const_iterator job_iter = remux_jobs.begin();
+ 398 job_iter != remux_jobs.end();
+
+ 400 (*job_iter)->Start();
+
+
+
+
+
+
+
+ 408 for (std::vector<RemuxJob*>::const_iterator job_iter = remux_jobs.begin();
+ 409 job_iter != remux_jobs.end();
+
+ 411 if ((*job_iter)->HasBeenJoined()) {
+ 412 status = (*job_iter)->status();
+
+
+
+
+
+
+
+ 420 } while (!all_joined && status.ok());
+
+
+
+
+ 425 bool RunPackager( const StreamDescriptorList& stream_descriptors) {
+ 426 const FourCC protection_scheme = GetProtectionScheme(FLAGS_protection_scheme);
+ 427 if (protection_scheme == FOURCC_NULL)
+
+
+ 430 if (!AssignFlagsFromProfile())
+
+
+ 433 if (FLAGS_output_media_info && !FLAGS_mpd_output.empty()) {
+ 434 NOTIMPLEMENTED() << "ERROR: --output_media_info and --mpd_output do not "
+
+
+
+ 438 if (FLAGS_output_media_info && !FLAGS_single_segment) {
+
+ 440 NOTIMPLEMENTED() << "ERROR: --output_media_info is only supported if "
+ 441 "--single_segment is true.";
-
- 446 MuxerOptions muxer_options;
- 447 if (!GetMuxerOptions(&muxer_options))
-
-
- 450 MpdOptions mpd_options;
- 451 if (!GetMpdOptions(&mpd_options))
-
-
-
- 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)
-
-
-
- 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,
-
-
- 472 mpd_notifier.reset( new SimpleMpdNotifier(profile, mpd_options, base_urls,
-
-
- 475 if (!mpd_notifier->Init()) {
- 476 LOG(ERROR) << "MpdNotifier failed to initialize.";
-
-
-
-
- 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();
-
- 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()));
-
-
- 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)) {
-
-
-
- 501 Status status = RunRemuxJobs(remux_jobs);
-
- 503 LOG(ERROR) << "Packaging Error: " << status.ToString();
-
-
-
-
- 508 if (!hls_notifier->Flush())
-
-
-
- 512 if (!mpd_notifier->Flush())
-
-
-
- 516 printf( "Packaging completed successfully.\n");
-
-
-
- 520 int PackagerMain( int argc, char** argv) {
- 521 base::AtExitManager exit;
-
- 523 base::CommandLine::Init(argc, argv);
- 524 CHECK(logging::InitLogging(logging::LoggingSettings()));
-
- 526 google::SetUsageMessage(base::StringPrintf(kUsage, argv[0]));
- 527 google::ParseCommandLineFlags(&argc, &argv, true);
-
- 529 const std::string version_string = base::StringPrintf(
- 530 "shaka-packager version %s", GetPackagerVersion().c_str());
- 531 google::ShowUsageWithFlags(version_string.c_str());
-
-
-
-
- 536 return kArgumentValidationFailed;
-
- 538 if (FLAGS_override_version)
- 539 SetPackagerVersionForTesting(FLAGS_test_version);
-
- 541 LibcryptoThreading libcrypto_threading;
-
-
- 544 StreamDescriptorList stream_descriptors;
- 545 for ( int i = 1; i < argc; ++i) {
- 546 if (!InsertStreamDescriptor(argv[i], &stream_descriptors))
- 547 return kArgumentValidationFailed;
-
- 549 return RunPackager(stream_descriptors) ? kSuccess : kPackagingFailed;
-
+
+
+ 447 if (!FLAGS_mpd_output.empty() && !FLAGS_hls_master_playlist_output.empty()) {
+ 448 LOG(ERROR) << "Cannot output both MPD and HLS.";
+
+
+
+
+ 453 MuxerOptions muxer_options;
+ 454 if (!GetMuxerOptions(&muxer_options))
+
+
+ 457 MpdOptions mpd_options;
+ 458 if (!GetMpdOptions(&mpd_options))
+
+
+
+ 462 scoped_ptr<KeySource> encryption_key_source;
+ 463 if (FLAGS_enable_widevine_encryption || FLAGS_enable_fixed_key_encryption) {
+ 464 encryption_key_source = CreateEncryptionKeySource();
+ 465 if (!encryption_key_source)
+
+
+
+ 469 scoped_ptr<MpdNotifier> mpd_notifier;
+ 470 if (!FLAGS_mpd_output.empty()) {
+ 471 DashProfile profile =
+ 472 FLAGS_single_segment ? kOnDemandProfile : kLiveProfile;
+ 473 std::vector<std::string> base_urls;
+ 474 base::SplitString(FLAGS_base_urls, ',', &base_urls);
+ 475 if (FLAGS_generate_dash_if_iop_compliant_mpd) {
+ 476 mpd_notifier.reset( new DashIopMpdNotifier(profile, mpd_options, base_urls,
+
+
+ 479 mpd_notifier.reset( new SimpleMpdNotifier(profile, mpd_options, base_urls,
+
+
+ 482 if (!mpd_notifier->Init()) {
+ 483 LOG(ERROR) << "MpdNotifier failed to initialize.";
+
+
+
+
+ 488 scoped_ptr<hls::HlsNotifier> hls_notifier;
+ 489 if (!FLAGS_hls_master_playlist_output.empty()) {
+ 490 base::FilePath master_playlist_path(
+ 491 base::FilePath::FromUTF8Unsafe(FLAGS_hls_master_playlist_output));
+ 492 base::FilePath master_playlist_name = master_playlist_path.BaseName();
+
+ 494 hls_notifier.reset( new hls::SimpleHlsNotifier(
+ 495 hls::HlsNotifier::HlsProfile::kOnDemandProfile, FLAGS_hls_base_url,
+ 496 master_playlist_path.DirName().AsEndingWithSeparator().AsUTF8Unsafe(),
+ 497 master_playlist_name.AsUTF8Unsafe()));
+
+
+ 500 std::vector<RemuxJob*> remux_jobs;
+ 501 STLElementDeleter<std::vector<RemuxJob*> > scoped_jobs_deleter(&remux_jobs);
+ 502 FakeClock fake_clock;
+ 503 if (!CreateRemuxJobs(stream_descriptors, muxer_options, &fake_clock,
+ 504 encryption_key_source.get(), mpd_notifier.get(),
+ 505 hls_notifier.get(), &remux_jobs)) {
+
+
+
+ 509 Status status = RunRemuxJobs(remux_jobs);
+
+ 511 LOG(ERROR) << "Packaging Error: " << status.ToString();
+
+
+
+
+ 516 if (!hls_notifier->Flush())
+
+
+
+ 520 if (!mpd_notifier->Flush())
+
+
+
+ 524 printf( "Packaging completed successfully.\n");
+
+
+
+ 528 int PackagerMain( int argc, char** argv) {
+ 529 base::AtExitManager exit;
+
+ 531 base::CommandLine::Init(argc, argv);
+
+
+ 534 logging::LoggingSettings log_settings;
+ 535 base::FilePath log_filename;
+ 536 PathService::Get(base::DIR_EXE, &log_filename);
+ 537 log_filename = log_filename.AppendASCII( "packager.log");
+ 538 log_settings.logging_dest = logging::LOG_TO_ALL;
+ 539 log_settings.log_file = log_filename.value().c_str();
+ 540 log_settings.delete_old = logging::DELETE_OLD_LOG_FILE;
+ 541 CHECK(logging::InitLogging(log_settings));
+
+ 543 google::SetUsageMessage(base::StringPrintf(kUsage, argv[0]));
+ 544 google::ParseCommandLineFlags(&argc, &argv, true);
+
+ 546 const std::string version_string = base::StringPrintf(
+ 547 "shaka-packager version %s", GetPackagerVersion().c_str());
+ 548 google::ShowUsageWithFlags(version_string.c_str());
+
+
-
-
+
+ 553 return kArgumentValidationFailed;
- 555 int main( int argc, char** argv) {
- 556 return shaka::media::PackagerMain(argc, argv);
-
-
+ 555 if (FLAGS_override_version)
+ 556 SetPackagerVersionForTesting(FLAGS_test_version);
+
+ 558 LibcryptoThreading libcrypto_threading;
+
+
+ 561 StreamDescriptorList stream_descriptors;
+ 562 for ( int i = 1; i < argc; ++i) {
+ 563 if (!InsertStreamDescriptor(argv[i], &stream_descriptors))
+ 564 return kArgumentValidationFailed;
+
+ 566 return RunPackager(stream_descriptors) ? kSuccess : kPackagingFailed;
+
+
+
+
+
+
+
+ 574 int wmain( int argc, wchar_t* argv[], wchar_t* envp[]) {
+ 575 std::unique_ptr<char* [], std::function<void(char**)>> utf8_argv(
+ 576 new char*[argc], [argc]( char** utf8_args) {
+
+
+
+
+
+
+
+ 584 std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;
+ 585 for ( int idx = 0; idx < argc; ++idx) {
+ 586 std::string utf8_arg(converter.to_bytes(argv[idx]));
+
+ 588 utf8_argv[idx] = new char[utf8_arg.size()];
+ 589 memcpy(utf8_argv[idx], &utf8_arg[0], utf8_arg.size());
+
+ 591 return shaka::media::PackagerMain(argc, utf8_argv.get());
+
+
+ 594 int main( int argc, char** argv) {
+ 595 return shaka::media::PackagerMain(argc, argv);
+
+ 597 #endif // defined(OS_WIN)
+
bool ValidateWidevineCryptoFlags()
-
+
bool ValidateFixedCryptoFlags()
diff --git a/docs/d2/de7/classshaka_1_1media_1_1TextStreamInfo-members.html b/docs/d2/de7/classshaka_1_1media_1_1TextStreamInfo-members.html
index 6287f3c8db..e9015ddf9c 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 58dc57192e..f0ffd3f823 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 e4e5d7b553..ec04a527b9 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 664cf6a4c6..b288072648 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 406ac32e0f..3dd57bc417 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 0e232e7197..a82763f86a 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 41814ef598..8b5d525cf3 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 c04637cb67..b4bf3c9eed 100644
--- a/docs/d2/dfc/classshaka_1_1media_1_1MkvWriter-members.html
+++ b/docs/d2/dfc/classshaka_1_1media_1_1MkvWriter-members.html
@@ -103,12 +103,12 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
| Seekable() const override | shaka::media::MkvWriter | |
Write(const void *buf, mkvmuxer::uint32 len) override | shaka::media::MkvWriter | |
WriteFromFile(File *source) | shaka::media::MkvWriter | |
- WriteFromFile(File *source, uint64_t max_copy) | shaka::media::MkvWriter | |
+ WriteFromFile(File *source, int64_t max_copy) | shaka::media::MkvWriter | |
~MkvWriter() override (defined in shaka::media::MkvWriter) | shaka::media::MkvWriter | |
diff --git a/docs/d2/dfd/adts__header_8h_source.html b/docs/d2/dfd/adts__header_8h_source.html
index c4cde37753..10f5096362 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 c033beca7e..47fe0f487a 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 263e910f8e..110358d0cf 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 f1b98db84f..68056c8ecb 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 0c618ba208..3335e2209d 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 64a1161e04..2031bdf89b 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 a8f407f474..729f36457e 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 cda1b99be0..7fd5efb9fb 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 ed767404ec..3a3fd9c02a 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 1352bd7b37..17562f6f46 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 d360019485..2e05930f25 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 13e80ec6d1..b85732ed87 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 65c09ae3a6..1f09d738d5 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 daf64e59c3..5177afb955 100644
--- a/docs/d3/d61/classshaka_1_1media_1_1File.html
+++ b/docs/d3/d61/classshaka_1_1media_1_1File.html
@@ -270,7 +270,7 @@ class ThreadedIoFile
- Returns
- true on success, false otherwise.
-Definition at line 202 of file file.cc.
+Definition at line 207 of file file.cc.
@@ -315,7 +315,7 @@ class | ThreadedIoFile
- Returns
- Number of bytes written, or a value < 0 on error.
-Definition at line 231 of file file.cc.
+Definition at line 236 of file file.cc.
@@ -367,7 +367,7 @@ class | ThreadedIoFile
- Returns
- Number of bytes written, or a value < 0 on error.
-Definition at line 235 of file file.cc.
+Definition at line 240 of file file.cc.
@@ -401,7 +401,7 @@ class | ThreadedIoFile
- Returns
- true if successful, false otherwise.
-Definition at line 162 of file file.cc.
+Definition at line 167 of file file.cc.
@@ -481,7 +481,7 @@ class | ThreadedIoFile
- Returns
- The size of a file in bytes on success, a value < 0 otherwise. The file will be opened and closed in the process.
- Definition at line 175 of file file.cc.
+ Definition at line 180 of file file.cc.
@@ -526,7 +526,7 @@ class | ThreadedIoFile
- Returns
- A File pointer on success, false otherwise.
-Definition at line 140 of file file.cc.
+Definition at line 145 of file file.cc.
@@ -571,7 +571,7 @@ class | ThreadedIoFile
- Returns
- A File pointer on success, false otherwise.
-Definition at line 151 of file file.cc.
+Definition at line 156 of file file.cc.
@@ -661,7 +661,7 @@ class | ThreadedIoFile
- Returns
- true on success, false otherwise.
-Definition at line 184 of file file.cc.
+Definition at line 189 of file file.cc.
@@ -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 46eddeaf9a..115f04adf4 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 227f0bedab..86f0ddf49f 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 8338b5c6d3..4d18ec407a 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 00c1aeeafd..37e3d28823 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 231d3bf7e2..e7a4557272 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 83f1977b0e..d7378e1caa 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 b004d19b46..a352e37805 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 c51d10cbae..8e4c0291f1 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 a376120164..d1c15e4627 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 dd8b7aa0a3..7fd957fe5c 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 a2c6edfd73..9c6e8c7e0a 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 9d77b4ac4b..3a2171b2e4 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 905e269d63..30ac0b37c7 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 6f71e9a3b7..d13fff7c6d 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 6218d874af..c42b440b3b 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 aaa7bfdb93..e6be9e411f 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
@@ -171,7 +171,7 @@ Additional Inherited Members |
Implements shaka::media::mp4::Box.
-Definition at line 750 of file box_definitions.cc.
+Definition at line 751 of file box_definitions.cc.
@@ -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 32909f6543..2e6c594592 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 685cb44d26..f9201c4443 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 7c18a9044c..cd6413a7e6 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 9b2c13783e..52f288c4c1 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 35a06e9603..44125c4da5 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 df5947d9b5..9accd988d9 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 f1add200e0..bd1be83d06 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 3ed9ede470..31f7918aeb 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
@@ -178,7 +178,7 @@ Additional Inherited Members
Implements shaka::media::mp4::Box.
-Definition at line 1371 of file box_definitions.cc.
+Definition at line 1372 of file box_definitions.cc.
@@ -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 6e7fbdd5cd..34a33dc086 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 0b160db214..f66a364985 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
@@ -171,7 +171,7 @@ Additional Inherited Members
Implements shaka::media::mp4::Box.
-Definition at line 2115 of file box_definitions.cc.
+Definition at line 2116 of file box_definitions.cc.
@@ -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 d01941dc63..3afa330510 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 9e6522d511..d1ee938014 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 b2002bb86d..53a6726ef2 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 d74b31fa27..b44728e349 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
@@ -171,7 +171,7 @@ Additional Inherited Members
Implements shaka::media::mp4::Box.
-Definition at line 1180 of file box_definitions.cc.
+Definition at line 1181 of file box_definitions.cc.
@@ -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 960feef6ee..92c5913797 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 ec894f93ae..9a897c9d31 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 d7ceba05e6..5ae744116f 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 5b93fd2bf7..28ab163b06 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 772510b8a6..a8b4493e6b 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 423b1769a6..e51e1eebb1 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 df024abf49..4ef379c8e9 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 7cb08bb221..d675ab7005 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 03ca9235a1..47c52db63a 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');
-
-
+
+
@@ -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 a4793b115e..7f2b2bb275 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 84709535a7..d1c4059605 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 4cb2b4f82a..1318a5d1b7 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 a6908cc5dc..a42b48f68f 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 91fc194442..c27921bf04 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 20ff65cf46..51035c0f24 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 f86a601270..bee13b7e8c 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 cd3986097e..67ac9c234b 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
@@ -162,7 +162,7 @@ Additional Inherited Members |
Implements shaka::media::mp4::Box.
-Definition at line 1848 of file box_definitions.cc.
+Definition at line 1849 of file box_definitions.cc.
@@ -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 ee8c55495c..f2dc5ca04c 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 9115d78ac3..a1d56c2f61 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 11276e21ff..f95396ab11 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 a55ede6125..4d780c6650 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 e83cd32211..e0c8ff3cf6 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 0612fbed95..5d481d07f6 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 e8798988a2..2221a267ef 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 0d320c376b..ddcb4047c7 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 90c4db50db..42c2ee6bc9 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 6eea64049b..db2428d820 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 ca73053027..c572988f74 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 240f9294ae..02b3144335 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 a78ce4a26a..f879317f42 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
@@ -162,7 +162,7 @@ Additional Inherited Members |
Implements shaka::media::mp4::Box.
-Definition at line 1691 of file box_definitions.cc.
+Definition at line 1692 of file box_definitions.cc.
@@ -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 9f1c8857c5..1888011a4a 100644
--- a/docs/d4/da7/segmenter__test__base_8cc_source.html
+++ b/docs/d4/da7/segmenter__test__base_8cc_source.html
@@ -299,7 +299,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
-
+
@@ -311,7 +311,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
diff --git a/docs/d4/dad/structshaka_1_1media_1_1mp4_1_1SampleEncryption.html b/docs/d4/dad/structshaka_1_1media_1_1mp4_1_1SampleEncryption.html
index 1509ec8f08..15d1853000 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
@@ -116,8 +116,8 @@ Public Types
Public Member Functions
FourCC | BoxType () const override |
|
-bool | ParseFromSampleEncryptionData (size_t iv_size, std::vector< SampleEncryptionEntry > *sample_encryption_entries) const |
- |
+bool | ParseFromSampleEncryptionData (uint8_t iv_size, std::vector< SampleEncryptionEntry > *sample_encryption_entries) const |
+ |
uint32_t | HeaderSize () const final |
|
@@ -137,9 +137,9 @@ Public Member Functions
Public Attributes
std::vector< uint8_t > | sample_encryption_data |
|
-
-size_t | iv_size |
- |
+
+uint8_t | iv_size |
+ |
std::vector
< SampleEncryptionEntry > | sample_encryption_entries |
@@ -190,14 +190,14 @@ Additional Inherited Members
-
+
bool shaka::media::mp4::SampleEncryption::ParseFromSampleEncryptionData |
( |
- size_t |
+ uint8_t |
iv_size, |
@@ -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 5e33fb9bf3..c65ab60422 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 32cfc39d60..cbfe492acf 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 76aef2166b..40ff70b897 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 61bac39cc6..4243bf5fbf 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
@@ -183,7 +183,7 @@ Additional Inherited Members
Implements shaka::media::mp4::Box.
-Definition at line 1904 of file box_definitions.cc.
+Definition at line 1905 of file box_definitions.cc.
@@ -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 f91f199278..ab35be23c6 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 4cfbd9e014..a817d89e0a 100644
--- a/docs/d4/dd3/bit__reader_8h_source.html
+++ b/docs/d4/dd3/bit__reader_8h_source.html
@@ -116,69 +116,78 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
-
-
-
- 61 bool condition_read = true;
-
-
- 64 return condition_read == condition ? SkipBits(num_bits) : true;
-
-
-
-
-
- 77 return 8 * bytes_left_ + num_remaining_bits_in_curr_byte_;
-
-
-
-
-
-
- 85 bool ReadBitsInternal( int num_bits, uint64_t* out);
-
-
-
-
- 90 void UpdateCurrByte();
+
+ 44 bool ReadBits( int num_bits, bool* out) {
+ 45 DCHECK_EQ(num_bits, 1);
+
+ 47 bool ret = ReadBitsInternal(num_bits, &temp);
+
+
+
+
+
+
+
+ 70 bool condition_read = true;
+
+
+ 73 return condition_read == condition ? SkipBits(num_bits) : true;
+
+
+
+
+
+ 86 return 8 * bytes_left_ + num_remaining_bits_in_curr_byte_;
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 107 int num_remaining_bits_in_curr_byte_;
-
-
-
-
-
-
-
-
- 116 #endif // MEDIA_BASE_BIT_READER_H_
+
+
+ 94 bool ReadBitsInternal( int num_bits, uint64_t* out);
+
+
+
+
+ 99 void UpdateCurrByte();
+
+
+ 102 const uint8_t* data_;
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 116 int num_remaining_bits_in_curr_byte_;
+
+
+
+
+
+
+
+
+ 125 #endif // MEDIA_BASE_BIT_READER_H_
-
-
+
+
-
+
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 66adde72b5..f205bbbfed 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 6af0f90317..469d515055 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 73b0ab5836..a1fe607a5b 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 7c40b2bcd4..e720ea7a8b 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
@@ -171,7 +171,7 @@ Additional Inherited Members |
Implements shaka::media::mp4::Box.
-Definition at line 1999 of file box_definitions.cc.
+Definition at line 2000 of file box_definitions.cc.
@@ -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 fc85a13815..5a1573589a 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 072e2231ef..d3a6505220 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 0eeaff9897..c4cfd98db3 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 d8c64eafee..7bbc77772c 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 b5d35f6b1e..3da988f177 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
@@ -183,7 +183,7 @@ Additional Inherited Members
Implements shaka::media::mp4::Box.
-Definition at line 2532 of file box_definitions.cc.
+Definition at line 2533 of file box_definitions.cc.
@@ -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 113241b16c..c81eca0bb5 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
@@ -162,7 +162,7 @@ Additional Inherited Members
Implements shaka::media::mp4::Box.
-Definition at line 1672 of file box_definitions.cc.
+Definition at line 1673 of file box_definitions.cc.
@@ -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 91e9be1c2b..868de63f72 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 5728af8938..f5daaa26fc 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 2031d3e5cb..629ba6778d 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 4e88b8917e..26d7d2c029 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 203c7a4278..ce7e20ae77 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
@@ -162,7 +162,7 @@ Additional Inherited Members
Implements shaka::media::mp4::Box.
-Definition at line 2634 of file box_definitions.cc.
+Definition at line 2635 of file box_definitions.cc.
@@ -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 75a63ba5ef..9415105216 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 7c5226b849..4af3c72c9a 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
@@ -174,7 +174,7 @@ Additional Inherited Members
Implements shaka::media::mp4::Box.
-Definition at line 1607 of file box_definitions.cc.
+Definition at line 1608 of file box_definitions.cc.
@@ -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 41ff1a5e99..ace6c1f2be 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 14ecae9822..3e418215d1 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 50f591e5c2..0b5aefc1a3 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 9966af3633..f141a85ec3 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 e9fc23d2d1..c3e1a096b6 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 60477a0c77..3d622f1828 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 0c369e60fb..e9b3d022ce 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 1e4d2bfc7e..4edf446bcf 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 ed7b1bb5f0..54d29ae922 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 43fb54cca8..dce52d1ef6 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 4c05af88ba..e7d027548c 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 e8749b9824..62e93bea13 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 43c634c9eb..4e74aaed15 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 7d1561ab81..deeeb5e5fd 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 03dbc36b08..11825620f4 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 ddb3df3081..52bcfd64b4 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 9119f7fdbb..cca972202f 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 9a7bcf0ed0..f81f5afb5a 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 bcd0495cdf..01df42884d 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 677cd096fc..13bc3502ec 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 2e8925074e..ec090b56a8 100644
--- a/docs/d5/d7b/box__definitions_8h_source.html
+++ b/docs/d5/d7b/box__definitions_8h_source.html
@@ -185,13 +185,13 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
-
-
+
+
121 std::vector<SampleEncryptionEntry>* sample_encryption_entries) const;
-
+
128 std::vector<SampleEncryptionEntry> sample_encryption_entries;
@@ -940,7 +940,6 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
uint32_t GetTotalSizeOfSubsamples() const
-
bool ReadWrite(uint8_t iv_size, bool has_subsamples, BoxBuffer *buffer)
@@ -953,6 +952,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
+
@@ -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 cb84507cd9..6d147853c7 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
@@ -174,7 +174,7 @@ Additional Inherited Members |
Implements shaka::media::mp4::Box.
-Definition at line 2035 of file box_definitions.cc.
+Definition at line 2036 of file box_definitions.cc.
@@ -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 30b67b7795..1e666d2ade 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 f9cedc1177..2fe6eebf10 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 12139237a8..2703921795 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 d4491a5143..212c426ae1 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 56f6910fd1..68f77c6909 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 5d0940b9e1..e50637960f 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 9696dbd6b1..f905e69900 100644
--- a/docs/d5/d9b/vp__codec__configuration__record_8h_source.html
+++ b/docs/d5/d9b/vp__codec__configuration__record_8h_source.html
@@ -217,14 +217,14 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
138 #endif // MEDIA_CODECS_VP_CODEC_CONFIGURATION_RECORD_H_
-
+
-
+
diff --git a/docs/d5/d9d/structshaka_1_1media_1_1H265ReferencePictureListModifications.html b/docs/d5/d9d/structshaka_1_1media_1_1H265ReferencePictureListModifications.html
index fa145f5492..2b14a44c2b 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 22442056ce..268b679720 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 14f22c6678..cab0990ced 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 f30d5e6ed0..c06150233e 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 db14da4e14..ed866e2245 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 dbef206d95..04534f0adb 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 402424dba8..d98b828b04 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 b809dca0d9..9fc1bfad3e 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 d1836ce76c..c1f8036848 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 75e9442227..093f88b7ca 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 8466fb091e..c04787b863 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 180cf29bde..4240a96db8 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 63397d5b15..f25b6fbfcd 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 d08b06fe1b..41da6c3a24 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 31aa6c5bbf..b27e5f1bbc 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 19688e6c49..0ef5d08392 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 a9dd2afd7d..7666515964 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 e909680cc6..40f73860b1 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 6aae2620f0..8768eaf2bb 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 89cf5a9b3e..060a754fac 100644
--- a/docs/d5/dfc/file_8cc_source.html
+++ b/docs/d5/dfc/file_8cc_source.html
@@ -114,268 +114,273 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
26 "Size of the block size used for threaded I/O, in bytes.");
-
-
-
- 31 const char* kLocalFilePrefix =
"file://";
- 32 const char* kUdpFilePrefix =
"udp://";
- 33 const char* kMemoryFilePrefix =
"memory://";
-
-
-
- 37 typedef File* (*FileFactoryFunction)(
const char* file_name,
const char* mode);
- 38 typedef bool (*FileDeleteFunction)(
const char* file_name);
+
+
+
+
+
+
+
+
+ 36 const char* kLocalFilePrefix =
"file://";
+ 37 const char* kUdpFilePrefix =
"udp://";
+ 38 const char* kMemoryFilePrefix =
"memory://";
- 40 struct SupportedTypeInfo {
-
-
- 43 const FileFactoryFunction factory_function;
- 44 const FileDeleteFunction delete_function;
-
-
- 47 File* CreateLocalFile(
const char* file_name,
const char* mode) {
- 48 return new LocalFile(file_name, mode);
-
-
- 51 bool DeleteLocalFile(
const char* file_name) {
-
-
-
- 55 File* CreateUdpFile(
const char* file_name,
const char* mode) {
- 56 if (base::strcasecmp(mode,
"r")) {
- 57 NOTIMPLEMENTED() <<
"UdpFile only supports read (receive) mode.";
-
-
- 60 return new UdpFile(file_name);
-
-
- 63 File* CreateMemoryFile(
const char* file_name,
const char* mode) {
- 64 return new MemoryFile(file_name, mode);
-
-
- 67 bool DeleteMemoryFile(
const char* file_name) {
-
-
+
+
+ 42 typedef File* (*FileFactoryFunction)(
const char* file_name,
const char* mode);
+ 43 typedef bool (*FileDeleteFunction)(
const char* file_name);
+
+ 45 struct SupportedTypeInfo {
+
+
+ 48 const FileFactoryFunction factory_function;
+ 49 const FileDeleteFunction delete_function;
+
+
+ 52 File* CreateLocalFile(
const char* file_name,
const char* mode) {
+ 53 return new LocalFile(file_name, mode);
+
+
+ 56 bool DeleteLocalFile(
const char* file_name) {
+
+
+
+ 60 File* CreateUdpFile(
const char* file_name,
const char* mode) {
+ 61 if (base::strcasecmp(mode,
"r")) {
+ 62 NOTIMPLEMENTED() <<
"UdpFile only supports read (receive) mode.";
+
+
+ 65 return new UdpFile(file_name);
+
+
+ 68 File* CreateMemoryFile(
const char* file_name,
const char* mode) {
+ 69 return new MemoryFile(file_name, mode);
- 72 static const SupportedTypeInfo kSupportedTypeInfo[] = {
-
-
- 75 strlen(kLocalFilePrefix),
-
-
-
-
-
- 81 strlen(kUdpFilePrefix),
-
-
-
-
-
- 87 strlen(kMemoryFilePrefix),
-
-
-
-
-
-
-
- 95 File* File::Create(
const char* file_name,
const char* mode) {
- 96 scoped_ptr<File, FileCloser> internal_file(
- 97 CreateInternalFile(file_name, mode));
-
- 99 if (!strncmp(file_name, kMemoryFilePrefix, strlen(kMemoryFilePrefix))) {
-
- 101 return internal_file.release();
-
+ 72 bool DeleteMemoryFile(
const char* file_name) {
+
+
+
+
+ 77 static const SupportedTypeInfo kSupportedTypeInfo[] = {
+
+
+ 80 strlen(kLocalFilePrefix),
+
+
+
+
+
+ 86 strlen(kUdpFilePrefix),
+
+
+
+
+
+ 92 strlen(kMemoryFilePrefix),
+
+
+
+
+
+
+
+ 100 File* File::Create(
const char* file_name,
const char* mode) {
+ 101 scoped_ptr<File, FileCloser> internal_file(
+ 102 CreateInternalFile(file_name, mode));
- 104 if (FLAGS_io_cache_size) {
-
- 106 if (!strcmp(mode,
"r")) {
- 107 return new ThreadedIoFile(internal_file.Pass(),
- 108 ThreadedIoFile::kInputMode,
-
- 110 FLAGS_io_block_size);
- 111 }
else if (!strcmp(mode,
"w") || !strcmp(mode,
"a")) {
+ 104 if (!strncmp(file_name, kMemoryFilePrefix, strlen(kMemoryFilePrefix))) {
+
+ 106 return internal_file.release();
+
+
+ 109 if (FLAGS_io_cache_size) {
+
+ 111 if (!strcmp(mode,
"r")) {
112 return new ThreadedIoFile(internal_file.Pass(),
- 113 ThreadedIoFile::kOutputMode,
+ 113 ThreadedIoFile::kInputMode,
115 FLAGS_io_block_size);
-
-
-
-
- 120 DLOG(WARNING) <<
"Threaded I/O is disabled. Performance may be decreased.";
- 121 return internal_file.release();
-
+ 116 }
else if (!strcmp(mode,
"w") || !strcmp(mode,
"a")) {
+ 117 return new ThreadedIoFile(internal_file.Pass(),
+ 118 ThreadedIoFile::kOutputMode,
+
+ 120 FLAGS_io_block_size);
+
+
- 124 File* File::CreateInternalFile(
const char* file_name,
const char* mode) {
- 125 scoped_ptr<File, FileCloser> internal_file;
- 126 for (
size_t i = 0; i < arraysize(kSupportedTypeInfo); ++i) {
- 127 const SupportedTypeInfo& type_info = kSupportedTypeInfo[i];
- 128 if (strncmp(type_info.type, file_name, type_info.type_length) == 0) {
- 129 internal_file.reset(type_info.factory_function(
- 130 file_name + type_info.type_length, mode));
-
-
-
-
- 135 internal_file.reset(CreateLocalFile(file_name, mode));
-
- 137 return internal_file.release();
-
-
-
- 141 File* file = File::Create(file_name, mode);
-
-
-
-
-
-
-
-
-
-
- 152 File* file = File::CreateInternalFile(file_name, mode);
-
-
-
-
-
-
-
-
-
-
- 163 for (
size_t i = 0; i < arraysize(kSupportedTypeInfo); ++i) {
- 164 const SupportedTypeInfo& type_info = kSupportedTypeInfo[i];
- 165 if (strncmp(type_info.type, file_name, type_info.type_length) == 0) {
- 166 return type_info.delete_function ?
- 167 type_info.delete_function(file_name + type_info.type_length) :
-
-
-
-
- 172 return DeleteLocalFile(file_name);
-
-
-
-
-
-
- 179 int64_t res = file->
Size();
-
-
-
-
-
-
-
-
-
-
-
- 191 const size_t kBufferSize = 0x40000;
- 192 scoped_ptr<char[]> buf(
new char[kBufferSize]);
-
-
- 195 while ((len = file->
Read(buf.get(), kBufferSize)) > 0)
- 196 contents->append(buf.get(), len);
-
-
-
-
-
- 202 bool File::Copy(
const char* from_file_name,
const char* to_file_name) {
-
-
- 205 LOG(ERROR) <<
"Failed to open file " << from_file_name;
-
-
-
- 209 scoped_ptr<File, FileCloser> output_file(
File::Open(to_file_name,
"w"));
-
- 211 LOG(ERROR) <<
"Failed to write to " << to_file_name;
-
-
-
- 215 uint64_t bytes_left = content.size();
- 216 uint64_t total_bytes_written = 0;
- 217 const char* content_cstr = content.c_str();
- 218 while (bytes_left > total_bytes_written) {
- 219 const int64_t bytes_written =
- 220 output_file->Write(content_cstr + total_bytes_written, bytes_left);
- 221 if (bytes_written < 0) {
- 222 LOG(ERROR) <<
"Failure while writing to " << to_file_name;
-
-
-
- 226 total_bytes_written += bytes_written;
-
-
-
+
+ 125 DLOG(WARNING) <<
"Threaded I/O is disabled. Performance may be decreased.";
+ 126 return internal_file.release();
+
+
+ 129 File* File::CreateInternalFile(
const char* file_name,
const char* mode) {
+ 130 scoped_ptr<File, FileCloser> internal_file;
+ 131 for (
size_t i = 0; i < arraysize(kSupportedTypeInfo); ++i) {
+ 132 const SupportedTypeInfo& type_info = kSupportedTypeInfo[i];
+ 133 if (strncmp(type_info.type, file_name, type_info.type_length) == 0) {
+ 134 internal_file.reset(type_info.factory_function(
+ 135 file_name + type_info.type_length, mode));
+
+
+
+
+ 140 internal_file.reset(CreateLocalFile(file_name, mode));
+
+ 142 return internal_file.release();
+
+
+
+ 146 File* file = File::Create(file_name, mode);
+
+
+
+
+
+
+
+
+
+
+ 157 File* file = File::CreateInternalFile(file_name, mode);
+
+
+
+
+
+
+
+
+
+
+ 168 for (
size_t i = 0; i < arraysize(kSupportedTypeInfo); ++i) {
+ 169 const SupportedTypeInfo& type_info = kSupportedTypeInfo[i];
+ 170 if (strncmp(type_info.type, file_name, type_info.type_length) == 0) {
+ 171 return type_info.delete_function ?
+ 172 type_info.delete_function(file_name + type_info.type_length) :
+
+
+
+
+ 177 return DeleteLocalFile(file_name);
+
+
+
+
+
+
+ 184 int64_t res = file->
Size();
+
+
+
+
+
+
+
+
+
+
+
+ 196 const size_t kBufferSize = 0x40000;
+ 197 scoped_ptr<char[]> buf(
new char[kBufferSize]);
+
+
+ 200 while ((len = file->
Read(buf.get(), kBufferSize)) > 0)
+ 201 contents->append(buf.get(), len);
+
+
+
+
+
+ 207 bool File::Copy(
const char* from_file_name,
const char* to_file_name) {
+
+
+ 210 LOG(ERROR) <<
"Failed to open file " << from_file_name;
+
+
+
+ 214 scoped_ptr<File, FileCloser> output_file(
File::Open(to_file_name,
"w"));
+
+ 216 LOG(ERROR) <<
"Failed to write to " << to_file_name;
+
+
+
+ 220 uint64_t bytes_left = content.size();
+ 221 uint64_t total_bytes_written = 0;
+ 222 const char* content_cstr = content.c_str();
+ 223 while (bytes_left > total_bytes_written) {
+ 224 const int64_t bytes_written =
+ 225 output_file->Write(content_cstr + total_bytes_written, bytes_left);
+ 226 if (bytes_written < 0) {
+ 227 LOG(ERROR) <<
"Failure while writing to " << to_file_name;
+
+
-
- 232 return CopyFile(source, destination, kWholeFile);
-
-
-
-
-
-
- 239 max_copy = std::numeric_limits<int64_t>::max();
-
- 241 const int64_t kBufferSize = 0x40000;
- 242 scoped_ptr<uint8_t[]> buffer(
new uint8_t[kBufferSize]);
- 243 int64_t bytes_copied = 0;
- 244 while (bytes_copied < max_copy) {
- 245 const int64_t size = std::min(kBufferSize, max_copy - bytes_copied);
- 246 const int64_t bytes_read = source->
Read(buffer.get(), size);
-
-
-
-
-
- 252 int64_t total_bytes_written = 0;
- 253 while (total_bytes_written < bytes_read) {
- 254 const int64_t bytes_written = destination->
Write(
- 255 buffer.get() + total_bytes_written, bytes_read - total_bytes_written);
- 256 if (bytes_written < 0)
- 257 return bytes_written;
-
- 259 total_bytes_written += bytes_written;
-
-
- 262 DCHECK_EQ(total_bytes_written, bytes_read);
- 263 bytes_copied += bytes_read;
-
-
-
-
-
-
-
+ 231 total_bytes_written += bytes_written;
+
+
+
+
+
+ 237 return CopyFile(source, destination, kWholeFile);
+
+
+
+
+
+
+ 244 max_copy = std::numeric_limits<int64_t>::max();
+
+ 246 const int64_t kBufferSize = 0x40000;
+ 247 scoped_ptr<uint8_t[]> buffer(
new uint8_t[kBufferSize]);
+ 248 int64_t bytes_copied = 0;
+ 249 while (bytes_copied < max_copy) {
+ 250 const int64_t size = std::min(kBufferSize, max_copy - bytes_copied);
+ 251 const int64_t bytes_read = source->
Read(buffer.get(), size);
+
+
+
+
+
+ 257 int64_t total_bytes_written = 0;
+ 258 while (total_bytes_written < bytes_read) {
+ 259 const int64_t bytes_written = destination->
Write(
+ 260 buffer.get() + total_bytes_written, bytes_read - total_bytes_written);
+ 261 if (bytes_written < 0)
+ 262 return bytes_written;
+
+ 264 total_bytes_written += bytes_written;
+
+
+ 267 DCHECK_EQ(total_bytes_written, bytes_read);
+ 268 bytes_copied += bytes_read;
+
+
+
+
+
+
+
-
-
+
+
-
+
-
-
-
-
-
+
+
+
+
+
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 700d4f9fda..9d753fb152 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 b0106abc08..578a5fb5be 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 4174a92995..4401bde8a1 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 9303fdb0f8..612da6bf4a 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 f6b8ac5246..27439b46f9 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
@@ -189,7 +189,7 @@ Additional Inherited Members
Implements shaka::media::mp4::Box.
-Definition at line 521 of file box_definitions.cc.
+Definition at line 522 of file box_definitions.cc.
@@ -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 d89e4a151b..3280a70b05 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 e8e750936b..4c1e4d6f13 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 0f36e2c202..e05886de1e 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');
This class generates DASH MPDs (Media Presentation Descriptions).
std::string Uint8VectorToBase64(const std::vector< uint8_t > &input)
Converts uint8 vector into base64 encoded string.
-virtual bool ToString(std::string *output)
+virtual bool ToString(std::string *output)
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 2ee588a6be..96f4f6e490 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 f49e15caef..031367b393 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 6c222a5167..926f43583e 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 e535d3fc92..4660f55d4e 100644
--- a/docs/d6/d41/encrypting__fragmenter_8cc_source.html
+++ b/docs/d6/d41/encrypting__fragmenter_8cc_source.html
@@ -262,214 +262,216 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
173 traf()->auxiliary_offset.offsets.push_back(0);
- 176 const size_t per_sample_iv_size =
- 177 (protection_scheme_ == FOURCC_cbcs) ? 0 : encryptor_->iv().size();
- 178 traf()->sample_encryption.iv_size = per_sample_iv_size;
-
-
-
- 182 saiz.sample_count = traf()->runs[0].sample_sizes.size();
- 183 if (!saiz.sample_info_sizes.empty()) {
-
- 185 &saiz.default_sample_info_size)) {
- 186 saiz.default_sample_info_size = 0;
-
-
-
-
- 191 DCHECK(!IsSubsampleEncryptionRequired());
- 192 saiz.default_sample_info_size = per_sample_iv_size;
-
-
-
-
- 197 if (saiz.default_sample_info_size == 0 && saiz.sample_info_sizes.empty()) {
- 198 DCHECK_EQ(protection_scheme_, FOURCC_cbcs);
- 199 DCHECK(!IsSubsampleEncryptionRequired());
-
-
-
- 203 saiz.sample_count = 0;
- 204 traf()->auxiliary_offset.offsets.clear();
-
-
-
-
- 209 DCHECK(encryption_key_);
- 210 scoped_ptr<AesCryptor> encryptor;
- 211 switch (protection_scheme_) {
-
-
-
-
-
-
-
-
- 220 crypt_byte_block(), skip_byte_block(),
-
- 222 AesCryptor::kDontUseConstantIv,
-
-
-
-
- 227 crypt_byte_block(), skip_byte_block(),
-
- 229 AesCryptor::kUseConstantIv,
-
-
-
- 233 return Status(error::MUXER_FAILURE,
"Unsupported protection scheme.");
-
-
- 236 DCHECK(!encryption_key_->iv.empty());
- 237 const bool initialized =
- 238 encryptor->InitializeWithIv(encryption_key_->key, encryption_key_->iv);
-
- 240 return Status(error::MUXER_FAILURE,
"Failed to create the encryptor.");
- 241 encryptor_ = encryptor.Pass();
-
-
-
- 245 void EncryptingFragmenter::EncryptBytes(uint8_t* data, uint32_t size) {
-
- 247 CHECK(encryptor_->Crypt(data, size, data));
-
-
- 250 Status EncryptingFragmenter::EncryptSample(scoped_refptr<MediaSample> sample) {
-
-
- 253 SampleEncryptionEntry sample_encryption_entry;
-
- 255 if (protection_scheme_ != FOURCC_cbcs)
- 256 sample_encryption_entry.initialization_vector = encryptor_->iv();
- 257 uint8_t* data = sample->writable_data();
- 258 if (IsSubsampleEncryptionRequired()) {
-
- 260 std::vector<VPxFrameInfo> vpx_frames;
- 261 if (!vpx_parser_->Parse(sample->data(), sample->data_size(),
-
- 263 return Status(error::MUXER_FAILURE,
"Failed to parse vpx frame.");
-
-
- 266 const bool is_superframe = vpx_frames.size() > 1;
- 267 for (
const VPxFrameInfo& frame : vpx_frames) {
- 268 SubsampleEntry subsample;
- 269 subsample.clear_bytes = frame.uncompressed_header_size;
- 270 subsample.cipher_bytes =
- 271 frame.frame_size - frame.uncompressed_header_size;
-
-
-
-
-
-
-
-
- 280 if (is_superframe || protection_scheme_ == FOURCC_cbc1 ||
- 281 protection_scheme_ == FOURCC_cens) {
- 282 const uint16_t misalign_bytes =
- 283 subsample.cipher_bytes % kCencBlockSize;
- 284 subsample.clear_bytes += misalign_bytes;
- 285 subsample.cipher_bytes -= misalign_bytes;
-
-
- 288 sample_encryption_entry.subsamples.push_back(subsample);
- 289 if (subsample.cipher_bytes > 0)
- 290 EncryptBytes(data + subsample.clear_bytes, subsample.cipher_bytes);
- 291 data += frame.frame_size;
-
-
-
- 295 size_t index_size = sample->data() + sample->data_size() - data;
- 296 DCHECK_LE(index_size, 2 + vpx_frames.size() * 4);
- 297 DCHECK_GE(index_size, 2 + vpx_frames.size() * 1);
- 298 SubsampleEntry subsample;
- 299 subsample.clear_bytes = index_size;
- 300 subsample.cipher_bytes = 0;
- 301 sample_encryption_entry.subsamples.push_back(subsample);
-
-
- 304 const Nalu::CodecType nalu_type =
- 305 (video_codec_ == kCodecHVC1 || video_codec_ == kCodecHEV1)
-
-
- 308 NaluReader reader(nalu_type, nalu_length_size_, data,
- 309 sample->data_size());
-
-
-
- 313 uint64_t accumulated_clear_bytes = 0;
-
-
- 316 NaluReader::Result result;
- 317 while ((result = reader.Advance(&nalu)) == NaluReader::kOk) {
- 318 if (nalu.is_video_slice()) {
-
-
-
- 322 const int64_t video_slice_header_size =
- 323 header_parser_ ? header_parser_->GetHeaderSize(nalu) : 0;
- 324 if (video_slice_header_size < 0)
- 325 return Status(error::MUXER_FAILURE,
"Failed to read slice header.");
-
- 327 uint64_t current_clear_bytes =
- 328 nalu.header_size() + video_slice_header_size;
- 329 uint64_t cipher_bytes = nalu.payload_size() - video_slice_header_size;
-
-
-
-
- 334 if (protection_scheme_ == FOURCC_cbc1 ||
- 335 protection_scheme_ == FOURCC_cens) {
- 336 const uint16_t misalign_bytes = cipher_bytes % kCencBlockSize;
- 337 current_clear_bytes += misalign_bytes;
- 338 cipher_bytes -= misalign_bytes;
-
-
- 341 const uint8_t* nalu_data = nalu.data() + current_clear_bytes;
- 342 EncryptBytes(const_cast<uint8_t*>(nalu_data), cipher_bytes);
-
-
- 345 accumulated_clear_bytes + nalu_length_size_ + current_clear_bytes,
- 346 cipher_bytes, &sample_encryption_entry.subsamples);
- 347 accumulated_clear_bytes = 0;
-
-
- 350 accumulated_clear_bytes +=
- 351 nalu_length_size_ + nalu.header_size() + nalu.payload_size();
-
-
- 354 if (result != NaluReader::kEOStream)
- 355 return Status(error::MUXER_FAILURE,
"Failed to parse NAL units.");
- 356 AddSubsamples(accumulated_clear_bytes, 0,
- 357 &sample_encryption_entry.subsamples);
-
- 359 DCHECK_EQ(sample_encryption_entry.GetTotalSizeOfSubsamples(),
- 360 sample->data_size());
-
-
- 363 traf()->auxiliary_size.sample_info_sizes.push_back(
- 364 sample_encryption_entry.ComputeSize());
-
- 366 DCHECK_LE(crypt_byte_block(), 1u);
- 367 DCHECK_EQ(skip_byte_block(), 0u);
- 368 EncryptBytes(data, sample->data_size());
-
-
- 371 traf()->sample_encryption.sample_encryption_entries.push_back(
- 372 sample_encryption_entry);
- 373 encryptor_->UpdateIv();
-
-
-
- 377 bool EncryptingFragmenter::IsSubsampleEncryptionRequired() {
- 378 return vpx_parser_ || nalu_length_size_ != 0;
-
-
-
-
-
+ 176 const uint8_t per_sample_iv_size =
+ 177 (protection_scheme_ == FOURCC_cbcs) ? 0 :
+ 178 static_cast<uint8_t>(encryptor_->iv().size());
+ 179 traf()->sample_encryption.iv_size = per_sample_iv_size;
+
+
+
+ 183 saiz.sample_count = traf()->runs[0].sample_sizes.size();
+ 184 if (!saiz.sample_info_sizes.empty()) {
+
+ 186 &saiz.default_sample_info_size)) {
+ 187 saiz.default_sample_info_size = 0;
+
+
+
+
+ 192 DCHECK(!IsSubsampleEncryptionRequired());
+ 193 saiz.default_sample_info_size =
static_cast<uint8_t
>(per_sample_iv_size);
+
+
+
+
+ 198 if (saiz.default_sample_info_size == 0 && saiz.sample_info_sizes.empty()) {
+ 199 DCHECK_EQ(protection_scheme_, FOURCC_cbcs);
+ 200 DCHECK(!IsSubsampleEncryptionRequired());
+
+
+
+ 204 saiz.sample_count = 0;
+ 205 traf()->auxiliary_offset.offsets.clear();
+
+
+
+
+ 210 DCHECK(encryption_key_);
+ 211 scoped_ptr<AesCryptor> encryptor;
+ 212 switch (protection_scheme_) {
+
+
+
+
+
+
+
+
+ 221 crypt_byte_block(), skip_byte_block(),
+
+ 223 AesCryptor::kDontUseConstantIv,
+
+
+
+
+ 228 crypt_byte_block(), skip_byte_block(),
+
+ 230 AesCryptor::kUseConstantIv,
+
+
+
+ 234 return Status(error::MUXER_FAILURE,
"Unsupported protection scheme.");
+
+
+ 237 DCHECK(!encryption_key_->iv.empty());
+ 238 const bool initialized =
+ 239 encryptor->InitializeWithIv(encryption_key_->key, encryption_key_->iv);
+
+ 241 return Status(error::MUXER_FAILURE,
"Failed to create the encryptor.");
+ 242 encryptor_ = encryptor.Pass();
+
+
+
+ 246 void EncryptingFragmenter::EncryptBytes(uint8_t* data, uint32_t size) {
+
+ 248 CHECK(encryptor_->Crypt(data, size, data));
+
+
+ 251 Status EncryptingFragmenter::EncryptSample(scoped_refptr<MediaSample> sample) {
+
+
+ 254 SampleEncryptionEntry sample_encryption_entry;
+
+ 256 if (protection_scheme_ != FOURCC_cbcs)
+ 257 sample_encryption_entry.initialization_vector = encryptor_->iv();
+ 258 uint8_t* data = sample->writable_data();
+ 259 if (IsSubsampleEncryptionRequired()) {
+
+ 261 std::vector<VPxFrameInfo> vpx_frames;
+ 262 if (!vpx_parser_->Parse(sample->data(), sample->data_size(),
+
+ 264 return Status(error::MUXER_FAILURE,
"Failed to parse vpx frame.");
+
+
+ 267 const bool is_superframe = vpx_frames.size() > 1;
+ 268 for (
const VPxFrameInfo& frame : vpx_frames) {
+ 269 SubsampleEntry subsample;
+ 270 subsample.clear_bytes =
+ 271 static_cast<uint16_t
>(frame.uncompressed_header_size);
+ 272 subsample.cipher_bytes =
+ 273 frame.frame_size - frame.uncompressed_header_size;
+
+
+
+
+
+
+
+
+ 282 if (is_superframe || protection_scheme_ == FOURCC_cbc1 ||
+ 283 protection_scheme_ == FOURCC_cens) {
+ 284 const uint16_t misalign_bytes =
+ 285 subsample.cipher_bytes % kCencBlockSize;
+ 286 subsample.clear_bytes += misalign_bytes;
+ 287 subsample.cipher_bytes -= misalign_bytes;
+
+
+ 290 sample_encryption_entry.subsamples.push_back(subsample);
+ 291 if (subsample.cipher_bytes > 0)
+ 292 EncryptBytes(data + subsample.clear_bytes, subsample.cipher_bytes);
+ 293 data += frame.frame_size;
+
+
+
+ 297 size_t index_size = sample->data() + sample->data_size() - data;
+ 298 DCHECK_LE(index_size, 2 + vpx_frames.size() * 4);
+ 299 DCHECK_GE(index_size, 2 + vpx_frames.size() * 1);
+ 300 SubsampleEntry subsample;
+ 301 subsample.clear_bytes =
static_cast<uint16_t
>(index_size);
+ 302 subsample.cipher_bytes = 0;
+ 303 sample_encryption_entry.subsamples.push_back(subsample);
+
+
+ 306 const Nalu::CodecType nalu_type =
+ 307 (video_codec_ == kCodecHVC1 || video_codec_ == kCodecHEV1)
+
+
+ 310 NaluReader reader(nalu_type, nalu_length_size_, data,
+ 311 sample->data_size());
+
+
+
+ 315 uint64_t accumulated_clear_bytes = 0;
+
+
+ 318 NaluReader::Result result;
+ 319 while ((result = reader.Advance(&nalu)) == NaluReader::kOk) {
+ 320 if (nalu.is_video_slice()) {
+
+
+
+ 324 const int64_t video_slice_header_size =
+ 325 header_parser_ ? header_parser_->GetHeaderSize(nalu) : 0;
+ 326 if (video_slice_header_size < 0)
+ 327 return Status(error::MUXER_FAILURE,
"Failed to read slice header.");
+
+ 329 uint64_t current_clear_bytes =
+ 330 nalu.header_size() + video_slice_header_size;
+ 331 uint64_t cipher_bytes = nalu.payload_size() - video_slice_header_size;
+
+
+
+
+ 336 if (protection_scheme_ == FOURCC_cbc1 ||
+ 337 protection_scheme_ == FOURCC_cens) {
+ 338 const uint16_t misalign_bytes = cipher_bytes % kCencBlockSize;
+ 339 current_clear_bytes += misalign_bytes;
+ 340 cipher_bytes -= misalign_bytes;
+
+
+ 343 const uint8_t* nalu_data = nalu.data() + current_clear_bytes;
+ 344 EncryptBytes(const_cast<uint8_t*>(nalu_data), cipher_bytes);
+
+
+ 347 accumulated_clear_bytes + nalu_length_size_ + current_clear_bytes,
+ 348 cipher_bytes, &sample_encryption_entry.subsamples);
+ 349 accumulated_clear_bytes = 0;
+
+
+ 352 accumulated_clear_bytes +=
+ 353 nalu_length_size_ + nalu.header_size() + nalu.payload_size();
+
+
+ 356 if (result != NaluReader::kEOStream)
+ 357 return Status(error::MUXER_FAILURE,
"Failed to parse NAL units.");
+ 358 AddSubsamples(accumulated_clear_bytes, 0,
+ 359 &sample_encryption_entry.subsamples);
+
+ 361 DCHECK_EQ(sample_encryption_entry.GetTotalSizeOfSubsamples(),
+ 362 sample->data_size());
+
+
+ 365 traf()->auxiliary_size.sample_info_sizes.push_back(
+ 366 sample_encryption_entry.ComputeSize());
+
+ 368 DCHECK_LE(crypt_byte_block(), 1u);
+ 369 DCHECK_EQ(skip_byte_block(), 0u);
+ 370 EncryptBytes(data, sample->data_size());
+
+
+ 373 traf()->sample_encryption.sample_encryption_entries.push_back(
+ 374 sample_encryption_entry);
+ 375 encryptor_->UpdateIv();
+
+
+
+ 379 bool EncryptingFragmenter::IsSubsampleEncryptionRequired() {
+ 380 return vpx_parser_ || nalu_length_size_ != 0;
+
+
+
+
+
@@ -491,14 +493,14 @@ 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 566591210a..14fb7f3062 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');
-
+
diff --git a/docs/d6/d55/aes__cryptor_8cc_source.html b/docs/d6/d55/aes__cryptor_8cc_source.html
index 334c719529..8bd2bdea85 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 297ff715e8..1f889c7580 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 9eb65e6c57..51d2ce1914 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 e46fccb196..419ae1dc49 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 fb374291e4..a6119b428d 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 eb16a1fafa..3804606ef3 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 3c0fafef20..7ca68063c6 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 485132ddc3..895a5d6525 100644
--- a/docs/d6/d77/dash__iop__mpd__notifier_8h_source.html
+++ b/docs/d6/d77/dash__iop__mpd__notifier_8h_source.html
@@ -210,7 +210,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
diff --git a/docs/d6/d79/structshaka_1_1media_1_1mp4_1_1VTTAdditionalTextBox.html b/docs/d6/d79/structshaka_1_1media_1_1mp4_1_1VTTAdditionalTextBox.html
index 30cb808a42..50776d36d3 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
@@ -162,7 +162,7 @@ Additional Inherited Members |
Implements shaka::media::mp4::Box.
-Definition at line 2704 of file box_definitions.cc.
+Definition at line 2705 of file box_definitions.cc.
@@ -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 264b097a00..6999d8c6dc 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 8f83042600..19d65e9a65 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 cf9b26c2c8..79fb579583 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 2844225018..8139ca3277 100644
--- a/docs/d6/d8a/vp9__parser_8cc_source.html
+++ b/docs/d6/d8a/vp9__parser_8cc_source.html
@@ -654,13 +654,13 @@ 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 11071e1773..c0895228fa 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 7366717e1d..e23f4c6bc5 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 e0b4758223..66115de2b2 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 9f42138d94..62c795be3c 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 3e1d06fcc8..ec9c28b24a 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');
580 #endif // MPD_BASE_MPD_BUILDER_H_
-void OnSetFrameRateForRepresentation(uint32_t representation_id, uint32_t frame_duration, uint32_t timescale)
+void OnSetFrameRateForRepresentation(uint32_t representation_id, uint32_t frame_duration, uint32_t timescale)
RepresentationType in MPD.
-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)
-AdaptationSet(uint32_t adaptation_set_id, const std::string &lang, const MpdOptions &mpd_options, MpdBuilder::MpdType mpd_type, base::AtomicSequenceNumber *representation_counter)
+
+bool WriteMpdToFile(media::File *output_file)
+AdaptationSet(uint32_t adaptation_set_id, const std::string &lang, const MpdOptions &mpd_options, MpdBuilder::MpdType mpd_type, base::AtomicSequenceNumber *representation_counter)
-virtual void SetSampleDuration(uint32_t sample_duration)
-virtual Representation * AddRepresentation(const MediaInfo &media_info)
+virtual void SetSampleDuration(uint32_t sample_duration)
+virtual Representation * AddRepresentation(const MediaInfo &media_info)
This class generates DASH MPDs (Media Presentation Descriptions).
-virtual void AddContentProtectionElement(const ContentProtectionElement &element)
-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)
+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.
-virtual void AddRole(Role role)
-void AddBaseUrl(const std::string &base_url)
-virtual void UpdateContentProtectionPssh(const std::string &drm_uuid, const std::string &pssh)
+virtual void AddRole(Role role)
+void AddBaseUrl(const std::string &base_url)
+virtual void UpdateContentProtectionPssh(const std::string &drm_uuid, const std::string &pssh)
-virtual void SetGroup(int group_number)
-xml::scoped_xml_ptr< xmlNode > GetXml()
+virtual void SetGroup(int group_number)
+xml::scoped_xml_ptr< xmlNode > GetXml()
-virtual bool ToString(std::string *output)
-virtual void ForceSetSegmentAlignment(bool segment_alignment)
-static void MakePathsRelativeToMpd(const std::string &mpd_path, MediaInfo *media_info)
-MpdBuilder(MpdType type, const MpdOptions &mpd_options)
-xml::scoped_xml_ptr< xmlNode > GetXml()
-virtual void AddContentProtectionElement(const ContentProtectionElement &element)
+virtual bool ToString(std::string *output)
+virtual void ForceSetSegmentAlignment(bool segment_alignment)
+static void MakePathsRelativeToMpd(const std::string &mpd_path, MediaInfo *media_info)
+MpdBuilder(MpdType type, const MpdOptions &mpd_options)
+xml::scoped_xml_ptr< xmlNode > GetXml()
+virtual void AddContentProtectionElement(const ContentProtectionElement &element)
-virtual AdaptationSet * AddAdaptationSet(const std::string &lang)
-virtual int Group() const
+virtual AdaptationSet * AddAdaptationSet(const std::string &lang)
+virtual int Group() const
-void OnNewSegmentForRepresentation(uint32_t representation_id, uint64_t start_time, uint64_t duration)
-virtual void UpdateContentProtectionPssh(const std::string &drm_uuid, const std::string &pssh)
+void OnNewSegmentForRepresentation(uint32_t representation_id, uint64_t start_time, uint64_t duration)
+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 4ae8de6215..0e2ad3b505 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 3a898dcf27..e8a739de6c 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 bd3d52514d..e689b09da6 100644
--- a/docs/d6/da9/classshaka_1_1media_1_1BitReader.html
+++ b/docs/d6/da9/classshaka_1_1media_1_1BitReader.html
@@ -106,6 +106,9 @@ Public Member Functions
template<typename T > |
bool | ReadBits (int num_bits, T *out) |
|
+
+bool | ReadBits (int num_bits, bool *out) |
+ |
bool | SkipBits (int num_bits) |
|
bool | SkipBitsConditional (bool condition, int num_bits) |
@@ -181,7 +184,7 @@ Public Member Functions
@@ -207,7 +210,7 @@ Public Member Functions
@@ -325,7 +328,7 @@ template<typename T >
- Returns
- false if the one bit cannot be read (not enough bits in the stream) or if the bit is set but the given number of bits cannot be skipped (not enough bits in the stream), true otherwise. When false is returned, the stream will enter a state where further ReadXXX/SkipXXX operations will always return false.
-Definition at line 60 of file bit_reader.h.
+Definition at line 69 of file bit_reader.h.
@@ -362,7 +365,7 @@ template<typename T >
diff --git a/docs/d6/daa/structshaka_1_1media_1_1mp4_1_1VTTCueBox.html b/docs/d6/daa/structshaka_1_1media_1_1mp4_1_1VTTCueBox.html
index 572083dd29..2ec5509a00 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
@@ -174,7 +174,7 @@ Additional Inherited Members
Implements shaka::media::mp4::Box.
-Definition at line 2722 of file box_definitions.cc.
+Definition at line 2723 of file box_definitions.cc.
@@ -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 52682e11cb..e4aaa397b5 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 af9c351361..2ec260971d 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 e124c71d42..7ac68e2552 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 4fb48d539f..17c342aa99 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 244d1d3627..060f0383b0 100644
--- a/docs/d6/dc8/mkv__writer_8cc_source.html
+++ b/docs/d6/dc8/mkv__writer_8cc_source.html
@@ -146,7 +146,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
57 return WriteFromFile(source, kWholeFile);
-
+
63 const int64_t size = File::CopyFile(source, file_.get(), max_copy);
@@ -186,7 +186,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
-
+
@@ -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 ff4cd74ad0..4e23779dfd 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 f53274f537..5a705b54c3 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 2a2be5e979..319e16b51c 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 a838bc9600..572572176d 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 9449e573ce..38f1cf8b49 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 67d636bb62..9c593e9f2a 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 3e6965c747..53cbdfc7f4 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 c328b0859e..54e274fc97 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 1e13fb5da5..2f6b8713f9 100644
--- a/docs/d6/de8/local__file_8cc_source.html
+++ b/docs/d6/de8/local__file_8cc_source.html
@@ -96,102 +96,122 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
7 #include "packager/media/file/local_file.h"
-
- 11 #include "packager/base/files/file_util.h"
- 12 #include "packager/base/logging.h"
-
-
-
-
-
- 18 :
File(file_name), file_mode_(mode), internal_file_(NULL) {}
-
-
-
-
- 23 result = base::CloseFile(internal_file_);
- 24 internal_file_ = NULL;
-
-
-
+
+
+ 12 #endif // defined(OS_WIN)
+ 13 #include "packager/base/files/file_util.h"
+ 14 #include "packager/base/logging.h"
+
+
+
+
+
+ 20 const char kAdditionalFileMode[] =
"b";
+
+
+
+
+ 25 internal_file_(NULL) {
+ 26 if (file_mode_.find(kAdditionalFileMode) == std::string::npos)
+ 27 file_mode_ += kAdditionalFileMode;
-
- 31 DCHECK(buffer != NULL);
- 32 DCHECK(internal_file_ != NULL);
- 33 return fread(buffer,
sizeof(
char), length, internal_file_);
-
-
-
- 37 DCHECK(buffer != NULL);
- 38 DCHECK(internal_file_ != NULL);
- 39 return fwrite(buffer,
sizeof(
char), length, internal_file_);
-
-
-
- 43 DCHECK(internal_file_ != NULL);
-
-
-
- 47 LOG(ERROR) <<
"Cannot flush file.";
-
-
-
-
- 52 if (!base::GetFileSize(base::FilePath(
file_name()), &file_size)) {
- 53 LOG(ERROR) <<
"Cannot get file size.";
-
-
-
-
-
-
- 60 DCHECK(internal_file_ != NULL);
- 61 return ((fflush(internal_file_) == 0) && !ferror(internal_file_));
-
-
-
- 65 return fseeko(internal_file_, position, SEEK_SET) >= 0;
-
-
-
- 69 off_t offset = ftello(internal_file_);
-
-
-
-
-
-
- 76 LocalFile::~LocalFile() {}
-
-
-
- 80 base::OpenFile(base::FilePath(
file_name()), file_mode_.c_str());
- 81 return (internal_file_ != NULL);
-
+
+
+
+ 33 result = base::CloseFile(internal_file_);
+ 34 internal_file_ = NULL;
+
+
+
+
+
+
+ 41 DCHECK(buffer != NULL);
+ 42 DCHECK(internal_file_ != NULL);
+ 43 return fread(buffer,
sizeof(
char), length, internal_file_);
+
+
+
+ 47 DCHECK(buffer != NULL);
+ 48 DCHECK(internal_file_ != NULL);
+ 49 return fwrite(buffer,
sizeof(
char), length, internal_file_);
+
+
+
+ 53 DCHECK(internal_file_ != NULL);
+
+
+
+ 57 LOG(ERROR) <<
"Cannot flush file.";
+
+
+
+
+ 62 if (!base::GetFileSize(base::FilePath::FromUTF8Unsafe(
file_name()),
+
+ 64 LOG(ERROR) <<
"Cannot get file size.";
+
+
+
+
+
+
+ 71 DCHECK(internal_file_ != NULL);
+ 72 return ((fflush(internal_file_) == 0) && !ferror(internal_file_));
+
+
+
+
+ 77 return _fseeki64(internal_file_, static_cast<__int64>(position),
+
+
+ 80 return fseeko(internal_file_, position, SEEK_SET) >= 0;
+ 81 #endif // !defined(OS_WIN)
+
-
- 85 return base::DeleteFile(base::FilePath(file_name),
false);
-
-
-
-
-
-
-
+
+
+ 86 __int64 offset = _ftelli64(internal_file_);
+
+ 88 off_t offset = ftello(internal_file_);
+ 89 #endif // !defined(OS_WIN)
+
+
+ 92 *position =
static_cast<uint64_t
>(offset);
+
+
+
+ 96 LocalFile::~LocalFile() {}
+
+
+
+ 100 base::OpenFile(base::FilePath::FromUTF8Unsafe(
file_name()), file_mode_.c_str());
+ 101 return (internal_file_ != NULL);
+
+
+
+ 105 return base::DeleteFile(base::FilePath::FromUTF8Unsafe(file_name),
false);
+
+
+
+
+
+
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
diff --git a/docs/d6/de8/network__util_8h_source.html b/docs/d6/de8/network__util_8h_source.html
index 6f310dafb7..4e689e1921 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 c774b134c5..1f5cce71b1 100644
--- a/docs/d6/de9/ts__segmenter_8cc_source.html
+++ b/docs/d6/de9/ts__segmenter_8cc_source.html
@@ -302,7 +302,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
-
+
@@ -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 4c03558fe0..6592bb8326 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 b0ad012bb5..5722e5e94b 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 743addac14..ab851b7a43 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 48e40044c3..948b24e215 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
@@ -183,7 +183,7 @@ Additional Inherited Members |
Implements shaka::media::mp4::Box.
-Definition at line 999 of file box_definitions.cc.
+Definition at line 1000 of file box_definitions.cc.
@@ -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 3f7b10eb26..f6690ef662 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
@@ -171,7 +171,7 @@ Additional Inherited Members
Implements shaka::media::mp4::Box.
-Definition at line 1949 of file box_definitions.cc.
+Definition at line 1950 of file box_definitions.cc.
@@ -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 ee2d44100d..c3d2887891 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 4a155f3d58..da2a9595ec 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 c264a67045..9378388aed 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 2184db3cf3..2a82fb0d2b 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 4038996b37..e30261f8ce 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 50faea1f6f..43c4ce6677 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 8ca7b2e0c4..20489847de 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 47f045d5f1..1f918d7b06 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 3e20d9ef5a..319b3574c0 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 bfe801e888..c6ceb44e02 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 d4fd831243..e84f14fd7f 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
@@ -177,7 +177,7 @@ Additional Inherited Members
Implements shaka::media::mp4::Box.
-Definition at line 776 of file box_definitions.cc.
+Definition at line 777 of file box_definitions.cc.
@@ -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 8710f16677..8b9b870288 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
@@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
iv_size (defined in shaka::media::mp4::SampleEncryption) | shaka::media::mp4::SampleEncryption | |
kUseSubsampleEncryption enum value (defined in shaka::media::mp4::SampleEncryption) | shaka::media::mp4::SampleEncryption | |
Parse(BoxReader *reader) | shaka::media::mp4::Box | |
- ParseFromSampleEncryptionData(size_t iv_size, std::vector< SampleEncryptionEntry > *sample_encryption_entries) const | shaka::media::mp4::SampleEncryption | |
+ ParseFromSampleEncryptionData(uint8_t iv_size, std::vector< SampleEncryptionEntry > *sample_encryption_entries) const | shaka::media::mp4::SampleEncryption | |
ReadWriteHeaderInternal(BoxBuffer *buffer) final | shaka::media::mp4::FullBox | protectedvirtual |
sample_encryption_data | shaka::media::mp4::SampleEncryption | |
sample_encryption_entries (defined in shaka::media::mp4::SampleEncryption) | shaka::media::mp4::SampleEncryption | |
@@ -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 5353e2e728..08ce42e8d6 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 4b2ef50162..975772db99 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 76806402e5..5e9c2c773f 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 3ecdd435b0..f28df12785 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 b3e43ebf6b..50262b8b4b 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 9ec028a25f..6027ec2033 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 0ee678ce00..29fdb50add 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 0f2b49a74d..0126ccf00a 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 fb3fc13117..062a00fee9 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 0e295b08c8..3c26a24f37 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 b95a89a967..be9c5797a5 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 9eefdb3be6..732a4068a4 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 a6fdec8f92..7222af4fcc 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
@@ -162,7 +162,7 @@ Additional Inherited Members |
Implements shaka::media::mp4::Box.
-Definition at line 2584 of file box_definitions.cc.
+Definition at line 2585 of file box_definitions.cc.
@@ -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 54b1bb0b91..c2c8aa22b5 100644
--- a/docs/d7/db0/mpd__writer_8h_source.html
+++ b/docs/d7/db0/mpd__writer_8h_source.html
@@ -182,7 +182,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
diff --git a/docs/d7/db7/structshaka_1_1media_1_1mp4_1_1SampleToChunk-members.html b/docs/d7/db7/structshaka_1_1media_1_1mp4_1_1SampleToChunk-members.html
index 302228632d..111f7f6a07 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 25fde56130..f109f2fc8b 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
@@ -171,7 +171,7 @@ Additional Inherited Members
Implements shaka::media::mp4::Box.
-Definition at line 1868 of file box_definitions.cc.
+Definition at line 1869 of file box_definitions.cc.
@@ -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 5b86e517db..b642f14fa6 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 bc7f90c951..03a6da8f28 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 0bdaa0583e..d40ea4c4b5 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 c7e0c43dbb..1c30a9d7c9 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 ee7b7bebd8..998a8721fb 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 811952daef..7218633cb3 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 734333e02a..71fa1172ba 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 cb0a458f05..5cee0e282e 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 2bc905c446..4e12c8eb1d 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 41b66f4d3b..be3dcd054a 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 176c44486d..f10ed718f9 100644
--- a/docs/d7/dee/mpd__generator_8cc_source.html
+++ b/docs/d7/dee/mpd__generator_8cc_source.html
@@ -103,102 +103,131 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
14 #include "packager/mpd/util/mpd_writer.h"
15 #include "packager/version/version.h"
-
-
-
- 20 "MPD generation driver program.\n"
- 21 "This program accepts MediaInfo files in human readable text "
- 22 "format and outputs an MPD.\n"
- 23 "The main use case for this is to output MPD for VOD.\n"
-
- 25 " Each MediaInfo can only have one of VideoInfo, AudioInfo, or TextInfo.\n"
- 26 " There will be at most 3 AdaptationSets in the MPD, i.e. 1 video, 1 "
- 27 "audio, and 1 text.\n"
-
- 29 "%s --input=\"video1.media_info,video2.media_info,audio1.media_info\" "
- 30 "--output=\"video_audio.mpd\"";
-
-
-
-
-
- 36 kFailedToWriteMpdToFileError
-
-
- 39 ExitStatus CheckRequiredFlags() {
- 40 if (FLAGS_input.empty()) {
- 41 LOG(ERROR) << "--input is required.";
- 42 return kEmptyInputError;
-
+
+
+
+
+ 21 #endif // defined(OS_WIN)
+
+
+
+
+ 26 "MPD generation driver program.\n"
+ 27 "This program accepts MediaInfo files in human readable text "
+ 28 "format and outputs an MPD.\n"
+ 29 "The main use case for this is to output MPD for VOD.\n"
+
+ 31 " Each MediaInfo can only have one of VideoInfo, AudioInfo, or TextInfo.\n"
+ 32 " There will be at most 3 AdaptationSets in the MPD, i.e. 1 video, 1 "
+ 33 "audio, and 1 text.\n"
+
+ 35 "%s --input=\"video1.media_info,video2.media_info,audio1.media_info\" "
+ 36 "--output=\"video_audio.mpd\"";
+
+
+
+
+
+ 42 kFailedToWriteMpdToFileError
+
- 45 if (FLAGS_output.empty()) {
- 46 LOG(ERROR) << "--output is required.";
- 47 return kEmptyOutputError;
-
-
-
-
-
- 53 ExitStatus RunMpdGenerator() {
- 54 DCHECK_EQ(CheckRequiredFlags(), kSuccess);
- 55 std::vector<std::string> base_urls;
- 56 std::vector<std::string> input_files;
- 57 typedef std::vector<std::string>::const_iterator Iterator;
+ 45 ExitStatus CheckRequiredFlags() {
+ 46 if (FLAGS_input.empty()) {
+ 47 LOG(ERROR) << "--input is required.";
+ 48 return kEmptyInputError;
+
+
+ 51 if (FLAGS_output.empty()) {
+ 52 LOG(ERROR) << "--output is required.";
+ 53 return kEmptyOutputError;
+
+
+
+
- 59 base::SplitString(FLAGS_input, ',', &input_files);
-
- 61 if (!FLAGS_base_urls.empty()) {
- 62 base::SplitString(FLAGS_base_urls, ',', &base_urls);
-
+ 59 ExitStatus RunMpdGenerator() {
+ 60 DCHECK_EQ(CheckRequiredFlags(), kSuccess);
+ 61 std::vector<std::string> base_urls;
+ 62 std::vector<std::string> input_files;
+ 63 typedef std::vector<std::string>::const_iterator Iterator;
-
- 66 for (Iterator it = base_urls.begin(); it != base_urls.end(); ++it)
- 67 mpd_writer.AddBaseUrl(*it);
-
- 69 for (Iterator it = input_files.begin(); it != input_files.end(); ++it) {
- 70 if (!mpd_writer.AddFile(it->c_str(), FLAGS_output)) {
- 71 LOG(WARNING) << "MpdWriter failed to read " << *it << ", skipping.";
-
-
+ 65 base::SplitString(FLAGS_input, ',', &input_files);
+
+ 67 if (!FLAGS_base_urls.empty()) {
+ 68 base::SplitString(FLAGS_base_urls, ',', &base_urls);
+
+
+
+ 72 for (Iterator it = base_urls.begin(); it != base_urls.end(); ++it)
+ 73 mpd_writer.AddBaseUrl(*it);
- 75 if (!mpd_writer.WriteMpdToFile(FLAGS_output.c_str())) {
- 76 LOG(ERROR) << "Failed to write MPD to " << FLAGS_output;
- 77 return kFailedToWriteMpdToFileError;
-
-
-
-
-
- 83 int MpdMain( int argc, char** argv) {
- 84 base::AtExitManager exit;
-
- 86 base::CommandLine::Init(argc, argv);
- 87 CHECK(logging::InitLogging(logging::LoggingSettings()));
+ 75 for (Iterator it = input_files.begin(); it != input_files.end(); ++it) {
+ 76 if (!mpd_writer.AddFile(it->c_str(), FLAGS_output)) {
+ 77 LOG(WARNING) << "MpdWriter failed to read " << *it << ", skipping.";
+
+
+
+ 81 if (!mpd_writer.WriteMpdToFile(FLAGS_output.c_str())) {
+ 82 LOG(ERROR) << "Failed to write MPD to " << FLAGS_output;
+ 83 return kFailedToWriteMpdToFileError;
+
+
+
+
- 89 google::SetUsageMessage(base::StringPrintf(kUsage, argv[0]));
- 90 google::ParseCommandLineFlags(&argc, &argv, true);
-
- 92 ExitStatus status = CheckRequiredFlags();
- 93 if (status != kSuccess) {
- 94 const std::string version_string = base::StringPrintf(
- 95 "mpd_generator version %s", GetPackagerVersion().c_str());
- 96 google::ShowUsageWithFlags(version_string.c_str());
-
-
-
- 100 return RunMpdGenerator();
-
-
-
-
+ 89 int MpdMain( int argc, char** argv) {
+ 90 base::AtExitManager exit;
+
+ 92 base::CommandLine::Init(argc, argv);
+ 93 CHECK(logging::InitLogging(logging::LoggingSettings()));
+
+ 95 google::SetUsageMessage(base::StringPrintf(kUsage, argv[0]));
+ 96 google::ParseCommandLineFlags(&argc, &argv, true);
+
+ 98 ExitStatus status = CheckRequiredFlags();
+ 99 if (status != kSuccess) {
+ 100 const std::string version_string = base::StringPrintf(
+ 101 "mpd_generator version %s", GetPackagerVersion().c_str());
+ 102 google::ShowUsageWithFlags(version_string.c_str());
+
+
- 106 int main( int argc, char** argv) {
- 107 return shaka::MpdMain(argc, argv);
-
+ 106 return RunMpdGenerator();
+
+
+
+
+
+
+
+ 114 int wmain( int argc, wchar_t* argv[], wchar_t* envp[]) {
+ 115 std::unique_ptr<char* [], std::function<void(char**)>> utf8_argv(
+ 116 new char*[argc], [argc]( char** utf8_args) {
+
+
+
+
+
+
+
+ 124 std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;
+ 125 for ( int idx = 0; idx < argc; ++idx) {
+ 126 std::string utf8_arg(converter.to_bytes(argv[idx]));
+
+ 128 utf8_argv[idx] = new char[utf8_arg.size()];
+ 129 memcpy(utf8_argv[idx], &utf8_arg[0], utf8_arg.size());
+
+ 131 return shaka::MpdMain(argc, utf8_argv.get());
+
+
+ 134 int main( int argc, char** argv) {
+ 135 return shaka::MpdMain(argc, argv);
+
+ 137 #endif // !defined(OS_WIN)
diff --git a/docs/d7/def/mp4__media__parser_8cc_source.html b/docs/d7/def/mp4__media__parser_8cc_source.html
index 0336eeabd3..8cf7043454 100644
--- a/docs/d7/def/mp4__media__parser_8cc_source.html
+++ b/docs/d7/def/mp4__media__parser_8cc_source.html
@@ -857,7 +857,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
-
+
@@ -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 ddcdd63ab6..8e5048ae2a 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 88aa6e0cac..17462c5234 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 fc29f8ae22..11f1334c34 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 93f2e5280a..5ab168a5e9 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 551b2977b2..334de5edd1 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 6a6ed4219e..0d783713f8 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 4158f812f0..9830d3666a 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 d21bbd542e..b0582a0b47 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 90f2a33a0c..ac92678a28 100644
--- a/docs/d8/d13/classshaka_1_1media_1_1BitReader-members.html
+++ b/docs/d8/d13/classshaka_1_1media_1_1BitReader-members.html
@@ -97,14 +97,15 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
| BitReader(const uint8_t *data, off_t size) | shaka::media::BitReader | |
bits_available() const | shaka::media::BitReader | inline |
ReadBits(int num_bits, T *out) | shaka::media::BitReader | inline |
- SkipBits(int num_bits) | shaka::media::BitReader | |
- SkipBitsConditional(bool condition, int num_bits) | shaka::media::BitReader | inline |
- SkipBytes(int num_bytes) | shaka::media::BitReader | |
- ~BitReader() (defined in shaka::media::BitReader) | shaka::media::BitReader | |
+ ReadBits(int num_bits, bool *out) (defined in shaka::media::BitReader) | shaka::media::BitReader | inline |
+ SkipBits(int num_bits) | shaka::media::BitReader | |
+ SkipBitsConditional(bool condition, int num_bits) | shaka::media::BitReader | inline |
+ SkipBytes(int num_bytes) | shaka::media::BitReader | |
+ ~BitReader() (defined in shaka::media::BitReader) | shaka::media::BitReader | |
diff --git a/docs/d8/d14/classshaka_1_1media_1_1VP8Parser.html b/docs/d8/d14/classshaka_1_1media_1_1VP8Parser.html
index 73d76b5fe1..045cf0a0e3 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 1dd596fd9a..0cabfd7970 100644
--- a/docs/d8/d16/structshaka_1_1media_1_1MuxerOptions-members.html
+++ b/docs/d8/d16/structshaka_1_1media_1_1MuxerOptions-members.html
@@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
diff --git a/docs/d8/d19/bandwidth__estimator_8h_source.html b/docs/d8/d19/bandwidth__estimator_8h_source.html
index e38e42ca37..6166541854 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 61b424dc3b..922eb620a9 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
@@ -162,7 +162,7 @@ Additional Inherited Members
Implements shaka::media::mp4::Box.
-Definition at line 1830 of file box_definitions.cc.
+Definition at line 1831 of file box_definitions.cc.
@@ -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 2c6e9c983e..1480faf0a5 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 79e538f6f8..46708d0e02 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 33c5733fc8..cdebdbef88 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 2d8cef12f3..3088808df0 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 ca8c1eafa2..16d8408856 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 6395a7711b..6293f30582 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
@@ -195,7 +195,7 @@ Additional Inherited Members |
Implements shaka::media::mp4::Box.
-Definition at line 1767 of file box_definitions.cc.
+Definition at line 1768 of file box_definitions.cc.
@@ -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 46cadaba92..e8f8404455 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 08a62e79b8..2b36e66cfc 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 e519f34ba4..6f28bdf808 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
@@ -162,7 +162,7 @@ Additional Inherited Members
Implements shaka::media::mp4::Box.
-Definition at line 2021 of file box_definitions.cc.
+Definition at line 2022 of file box_definitions.cc.
@@ -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 24be7a65bb..e489d8b057 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 386e0364df..2fd2382436 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 96c4ead04c..9d44cf2d8a 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 9c6af4c36e..20bb9837a0 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 65e887df6b..81822cf40b 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 675 of file mpd_builder.cc.
+Definition at line 674 of file mpd_builder.cc.
@@ -263,7 +263,7 @@ template<MpdBuilder::MpdType type>
-Definition at line 738 of file mpd_builder.cc.
+Definition at line 737 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 694 of file mpd_builder.cc.
+Definition at line 693 of file mpd_builder.cc.
@@ -330,7 +330,7 @@ template<MpdBuilder::MpdType type>
-Definition at line 750 of file mpd_builder.cc.
+Definition at line 749 of file mpd_builder.cc.
@@ -363,7 +363,7 @@ template<MpdBuilder::MpdType type>
-Definition at line 837 of file mpd_builder.cc.
+Definition at line 836 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 760 of file mpd_builder.cc.
+Definition at line 759 of file mpd_builder.cc.
@@ -408,7 +408,7 @@ template<MpdBuilder::MpdType type>
@@ -451,7 +451,7 @@ template<MpdBuilder::MpdType type>
-Definition at line 858 of file mpd_builder.cc.
+Definition at line 857 of file mpd_builder.cc.
@@ -493,7 +493,7 @@ template<MpdBuilder::MpdType type>
-Definition at line 869 of file mpd_builder.cc.
+Definition at line 868 of file mpd_builder.cc.
@@ -526,7 +526,7 @@ template<MpdBuilder::MpdType type>
-Definition at line 843 of file mpd_builder.cc.
+Definition at line 842 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 744 of file mpd_builder.cc.
+Definition at line 743 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 ba3ad3990c..66f83b554d 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 39865b3515..f72baa0e84 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 59420aa6e6..75e02d9a63 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 306d723ebe..40a55ad471 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 020c6a428e..bc674e44ff 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 5e7cb2b004..557ffbfdda 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 3a17531ca1..26f726f4e0 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 94de944ab3..bb32657659 100644
--- a/docs/d8/d9a/fragmenter_8cc_source.html
+++ b/docs/d8/d9a/fragmenter_8cc_source.html
@@ -301,7 +301,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 27573fc65b..f3fbc768eb 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 348713e408..349b6337d8 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 c83051dc53..bc056243ea 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 3399b94bc5..913408a171 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 bc405a5ec4..b5e3684130 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 14e688fd81..097aafd508 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 1df777c2ea..846eafd09b 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 298ad407d3..7cd3ef038e 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 6e30e7fa4a..df1111e34b 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 35816ed536..9b2400f808 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
@@ -162,7 +162,7 @@ Additional Inherited Members |
Implements shaka::media::mp4::Box.
-Definition at line 2614 of file box_definitions.cc.
+Definition at line 2615 of file box_definitions.cc.
@@ -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 1c4cd94306..fdca16082e 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 0b04ed086f..16f8a7f2b6 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 4ec75fd21a..3d62743cf0 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 d901ba9d9f..7dd40a6d3e 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 5c3b3824d8..481ae06fa2 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 90dc6cebce..61adb2226a 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 a5e67e66ac..ce1d60d93d 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 26c407b3b4..156f93ff5b 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 32517243fa..4a571fad09 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 9af30f0c27..80603182c4 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 d05b926a80..84da4de0ff 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');
-
+
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 2a1458b132..2bcdd0ca17 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 7e47fb4750..58b9926f25 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 6a655e5824..9712b88b41 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 3ebdcacd18..31e3936dd2 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 cdf929213d..0c2dae8526 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');
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)
+virtual void SetSampleDuration(uint32_t sample_duration)
+virtual Representation * AddRepresentation(const MediaInfo &media_info)
This class generates DASH MPDs (Media Presentation Descriptions).
-virtual void AddContentProtectionElement(const ContentProtectionElement &element)
+virtual void AddContentProtectionElement(const ContentProtectionElement &element)
-virtual void AddRole(Role role)
-virtual void UpdateContentProtectionPssh(const std::string &drm_uuid, const std::string &pssh)
+virtual void AddRole(Role role)
+virtual void UpdateContentProtectionPssh(const std::string &drm_uuid, const std::string &pssh)
-virtual void SetGroup(int group_number)
-virtual bool ToString(std::string *output)
-virtual void ForceSetSegmentAlignment(bool segment_alignment)
-virtual void AddContentProtectionElement(const ContentProtectionElement &element)
+virtual void SetGroup(int group_number)
+virtual bool ToString(std::string *output)
+virtual void ForceSetSegmentAlignment(bool segment_alignment)
+virtual void AddContentProtectionElement(const ContentProtectionElement &element)
-virtual AdaptationSet * AddAdaptationSet(const std::string &lang)
-virtual int Group() const
+virtual AdaptationSet * AddAdaptationSet(const std::string &lang)
+virtual int Group() const
-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 43327fa956..39cb5768b6 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 d83c2a8153..a77ece8c99 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 5b59af283d..3e2a03597e 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 603ccaef09..de0572b1a6 100644
--- a/docs/d9/d15/key__rotation__fragmenter_8cc_source.html
+++ b/docs/d9/d15/key__rotation__fragmenter_8cc_source.html
@@ -141,7 +141,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
52 bool enable_encryption) {
53 bool need_to_refresh_encryptor = !encryptor();
- 55 size_t current_crypto_period_index =
+ 55 int64_t current_crypto_period_index =
56 traf()->decode_time.decode_time / crypto_period_duration_;
57 if (current_crypto_period_index != prev_crypto_period_index_) {
58 scoped_ptr<EncryptionKey> encryption_key( new EncryptionKey());
@@ -212,18 +212,19 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
123 sample_group_entry.per_sample_iv_size = 0;
124 sample_group_entry.constant_iv = encryptor()-> iv();
- 126 sample_group_entry.per_sample_iv_size = encryptor()-> iv().size();
-
- 128 sample_group_entry.crypt_byte_block = crypt_byte_block();
- 129 sample_group_entry.skip_byte_block = skip_byte_block();
- 130 sample_group_entry.key_id = encryption_key()->key_id;
-
-
-
-
-
-
-
+ 126 sample_group_entry.per_sample_iv_size =
+ 127 static_cast<uint8_t >(encryptor()-> iv().size());
+
+ 129 sample_group_entry.crypt_byte_block = crypt_byte_block();
+ 130 sample_group_entry.skip_byte_block = skip_byte_block();
+ 131 sample_group_entry.key_id = encryption_key()->key_id;
+
+
+
+
+
+
+
@@ -235,7 +236,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
-
+
@@ -243,7 +244,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
diff --git a/docs/d9/d1f/structshaka_1_1media_1_1mp4_1_1MovieFragment.html b/docs/d9/d1f/structshaka_1_1media_1_1mp4_1_1MovieFragment.html
index c01b651022..6b0922830f 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
@@ -169,7 +169,7 @@ Additional Inherited Members |
Implements shaka::media::mp4::Box.
-Definition at line 2497 of file box_definitions.cc.
+Definition at line 2498 of file box_definitions.cc.
@@ -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 b15ea67bfe..e91d8acdec 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 4c40e64477..fe64f5b643 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 321 of file segmenter.cc.
+Definition at line 322 of file segmenter.cc.
@@ -222,7 +222,7 @@ void | set_progress_target
Finalize the segmenter.
- Returns
- OK on success, an error status otherwise.
-Definition at line 295 of file segmenter.cc.
+Definition at line 296 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 379 of file segmenter.cc.
+ Definition at line 380 of file segmenter.cc.
@@ -393,7 +393,7 @@ void | set_progress_target
- Returns
- OK on success, an error status otherwise.
-Definition at line 165 of file segmenter.cc.
+Definition at line 166 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 947438b0a4..3fce5c6227 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 cebb92e524..85c1c692c3 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 ec699f22c3..24e20457fa 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 6af6a406ff..2065a5b834 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
@@ -155,7 +155,7 @@ Additional Inherited Members |
Implements shaka::media::mp4::Box.
-Definition at line 2689 of file box_definitions.cc.
+Definition at line 2690 of file box_definitions.cc.
@@ -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 b60d4136da..8e27e869ca 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
@@ -162,7 +162,7 @@ Additional Inherited Members
Implements shaka::media::mp4::Box.
-Definition at line 2598 of file box_definitions.cc.
+Definition at line 2599 of file box_definitions.cc.
@@ -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 276a61da44..ed6aec90e1 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 3142f185bd..7fe80d38de 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 8741d6bd52..aff2269d8b 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 0e44a37c95..ea4d0396ae 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 f0685e8566..fed5bb134a 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 2248b12270..773ec49691 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 972e9862cd..9896f9f83d 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 4f7c7ddc62..bb468a5c1a 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 aa40cdc7bd..5b3e593723 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 0e6207b555..69545c1292 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 9b6a8047bc..ba53145c24 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 1095b92d94..b860dc1b03 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 0aab73c27c..420830d523 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 46ab3e7554..96b4d23fd7 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 b3dc7fe57e..f2f415a5df 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 5cfb69126d..9ae7044996 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 dbbd04d79d..c3c831f35e 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 59a8f1e46c..8718ffb07a 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 ea34ab1421..947e242f27 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 39c1075318..388b4253c0 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 871d91afff..654f011c68 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 0923a81910..938e3c96a6 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 e7af3b5688..79ba02d57f 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 2c0c0df4c6..a190c88ba8 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 48a138da5f..33b7b33db2 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 73ab5b631e..cdb9166e68 100644
--- a/docs/d9/de6/classshaka_1_1media_1_1LocalFile.html
+++ b/docs/d9/de6/classshaka_1_1media_1_1LocalFile.html
@@ -204,7 +204,7 @@ bool | 17 of file local_file.cc.
+ Definition at line 22 of file local_file.cc.
@@ -234,7 +234,7 @@ bool | shaka::media::File.
- Definition at line 20 of file local_file.cc.
+Definition at line 30 of file local_file.cc.
@@ -268,7 +268,7 @@ bool | Returnstrue if successful, or false otherwise.
- Definition at line 84 of file local_file.cc.
+Definition at line 104 of file local_file.cc.
@@ -297,7 +297,7 @@ bool | shaka::media::File.
- Definition at line 59 of file local_file.cc.
+Definition at line 70 of file local_file.cc.
@@ -344,7 +344,7 @@ bool | shaka::media::File.
- Definition at line 30 of file local_file.cc.
+Definition at line 40 of file local_file.cc.
@@ -380,7 +380,7 @@ bool | shaka::media::File.
- Definition at line 64 of file local_file.cc.
+Definition at line 75 of file local_file.cc.
@@ -408,7 +408,7 @@ bool | shaka::media::File.
- Definition at line 42 of file local_file.cc.
+Definition at line 52 of file local_file.cc.
@@ -444,7 +444,7 @@ bool | shaka::media::File.
- Definition at line 68 of file local_file.cc.
+Definition at line 84 of file local_file.cc.
@@ -491,7 +491,7 @@ bool | shaka::media::File.
- Definition at line 36 of file local_file.cc.
+Definition at line 46 of file local_file.cc.
@@ -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 8400357adb..43110cf1cb 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 e2f502d7af..fd2af0256c 100644
--- a/docs/d9/ded/aac__audio__specific__config_8cc_source.html
+++ b/docs/d9/ded/aac__audio__specific__config_8cc_source.html
@@ -231,9 +231,9 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
143 adts[2] = ((audio_object_type_ - 1) << 6) + (frequency_index_ << 2) +
144 (channel_config_ >> 2);
- 145 adts[3] = ((channel_config_ & 0x3) << 6) + (size >> 11);
- 146 adts[4] = (size & 0x7ff) >> 3;
- 147 adts[5] = ((size & 7) << 5) + 0x1f;
+ 145 adts[3] = ((channel_config_ & 0x3) << 6) + static_cast<uint8_t >(size >> 11);
+ 146 adts[4] = static_cast<uint8_t >((size & 0x7ff) >> 3);
+ 147 adts[5] = static_cast<uint8_t >(((size & 7) << 5) + 0x1f);
@@ -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 b190ccace5..b1e741a488 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 75d1fad18f..4b5f78d93b 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 0097327b5b..8306ce3ebb 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 63eae1f621..f070c9523a 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 e3d514fdc9..15b80e0d24 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 49219ac520..5a58429450 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 1dbc499563..6b3322af02 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 9a68e24e98..a50c0be8d2 100644
--- a/docs/da/d22/key__rotation__fragmenter_8h_source.html
+++ b/docs/da/d22/key__rotation__fragmenter_8h_source.html
@@ -131,7 +131,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
67 KeySource::TrackType track_type_;
68 const int64_t crypto_period_duration_;
- 69 size_t prev_crypto_period_index_;
+ 69 int64_t prev_crypto_period_index_;
@@ -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 3e686b0a0f..abad9d883c 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 7c61ebf75e..d3ace34c17 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 7ce91ade32..e8283f663f 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 f171f3cab8..4dd810c5bb 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 5b6fa4f8f7..eba8eec768 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 aa1e056455..ad7830420f 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 a247a7a990..91e374f175 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 be4803394a..3eb0fd3e12 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 6989197af8..01a3622894 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 49463a5b5b..117d8b37b2 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
@@ -171,7 +171,7 @@ Additional Inherited Members
Implements shaka::media::mp4::Box.
-Definition at line 2134 of file box_definitions.cc.
+Definition at line 2135 of file box_definitions.cc.
@@ -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 8d5adfcea5..ee72b09cbc 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 2ff0feaf11..5df72659f8 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
@@ -174,7 +174,7 @@ Additional Inherited Members
Implements shaka::media::mp4::Box.
-Definition at line 801 of file box_definitions.cc.
+Definition at line 802 of file box_definitions.cc.
@@ -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 0c18359a98..1cf924fcbd 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 b515c2ff04..78f1bbf444 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 5435d24c56..f1ea3da6ea 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 bc15cda171..7790f818be 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 6140f2c272..18f5f6637b 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 d7674ef2f9..d29a1f63e5 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 1d64bf0bba..678183035f 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 5b8e6ff818..fa9584b16c 100644
--- a/docs/da/d88/mp4__muxer_8cc_source.html
+++ b/docs/da/d88/mp4__muxer_8cc_source.html
@@ -393,8 +393,8 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
305 const uint64_t kNanosecondsPerSecond = 1000000000ull;
306 sample_group_description.audio_roll_recovery_entries[0].roll_distance =
- 307 -(audio_info->seek_preroll_ns() * audio.samplerate +
- 308 kNanosecondsPerSecond / 2) /
+ 307 (0 - (audio_info->seek_preroll_ns() * audio.samplerate +
+ 308 kNanosecondsPerSecond / 2)) /
309 kNanosecondsPerSecond;
311 sample_table.sample_to_groups.resize(1);
@@ -503,14 +503,14 @@ 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 825f56d940..311f990cb3 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 0acdf8ad60..c18fa1da9f 100644
--- a/docs/da/d8e/container__names_8cc_source.html
+++ b/docs/da/d8e/container__names_8cc_source.html
@@ -1863,7 +1863,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 e30f0c27fc..2c23111d38 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 cfe66373f2..8aca78c12f 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 3292755e97..acadea551f 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 0257e47922..05c774cc3b 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 c405b5fc01..f435d47dd5 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 d3b8d55dc9..e4b33b6882 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 ce54d46b8b..a43d218250 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
@@ -171,7 +171,7 @@ Additional Inherited Members |
Implements shaka::media::mp4::Box.
-Definition at line 1234 of file box_definitions.cc.
+Definition at line 1235 of file box_definitions.cc.
@@ -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 ba37e366fd..a5b755d7bd 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 a5a0fe8d45..336c96d702 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
@@ -204,7 +204,7 @@ Additional Inherited Members
Implements shaka::media::mp4::Box.
-Definition at line 564 of file box_definitions.cc.
+Definition at line 565 of file box_definitions.cc.
@@ -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 2ec44bf8c0..fd747436d1 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 c328ec480a..c3d86a65dd 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
@@ -162,7 +162,7 @@ Additional Inherited Members
Implements shaka::media::mp4::Box.
-Definition at line 1217 of file box_definitions.cc.
+Definition at line 1218 of file box_definitions.cc.
@@ -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 d9913893c4..9ccaefa63a 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 cf4fe75e07..5976647656 100644
--- a/docs/da/dd1/fragmenter_8h_source.html
+++ b/docs/da/dd1/fragmenter_8h_source.html
@@ -206,7 +206,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 f0c4f41c85..bd1cf32442 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 592eb99175..5d98426a83 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 74582a26f0..e0d98b87f6 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 4a66287117..7b4cfe8810 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 38989dbf17..614d635385 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 d5bf8ba9e6..742428b67a 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 047d7e2e60..7c775ec733 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 57481eb7ce..beb12377ef 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 5ffc168c70..8a2e04f0c3 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 9d73f54dea..50d6e1c815 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 59a06bd2e9..00583cdef4 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
@@ -168,7 +168,7 @@ Additional Inherited Members |
Implements shaka::media::mp4::Box.
-Definition at line 484 of file box_definitions.cc.
+Definition at line 485 of file box_definitions.cc.
@@ -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 be30aeb4ca..2743b270a3 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 5be9684d86..8f514fa12d 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 929c026f12..355e00a9c7 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
@@ -180,7 +180,7 @@ Additional Inherited Members |
Implements shaka::media::mp4::Box.
-Definition at line 604 of file box_definitions.cc.
+Definition at line 605 of file box_definitions.cc.
@@ -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 db6634c680..80eccf3bcc 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 43e17f18aa..d10c089e85 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 54a67f3b33..98bd7cd921 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
@@ -165,7 +165,7 @@ Additional Inherited Members |
Implements shaka::media::mp4::Box.
-Definition at line 1429 of file box_definitions.cc.
+Definition at line 1430 of file box_definitions.cc.
@@ -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 fc9a5bbf4f..72c157fc54 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 3e4052ea37..12dc8f7693 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 0780fc41b4..dc8d8b37e5 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
@@ -164,7 +164,7 @@ uint32_t flags | Implements shaka::media::mp4::Box.
-Definition at line 1964 of file box_definitions.cc.
+Definition at line 1965 of file box_definitions.cc.
@@ -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 a9c2303eb3..c33eee362d 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 774201e5db..2431fe50a6 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 c4480c4f14..f59791c0c0 100644
--- a/docs/db/d31/track__run__iterator_8cc_source.html
+++ b/docs/db/d31/track__run__iterator_8cc_source.html
@@ -430,7 +430,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
341 .default_per_sample_iv_size
342 : video_sample_entry->sinf.info.track_encryption
343 .default_per_sample_iv_size;
-
+
345 default_per_sample_iv_size, &sample_encryption_entries));
@@ -741,11 +741,11 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
-
+
@@ -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 c347fce06e..9db5ec5374 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 6b1695a75f..0d3ab2bf5a 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 6f12274942..b7e3403ba5 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 c3bb7a6012..2efbadc928 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 728188ae2a..1c3fbe86c0 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 e02090b027..fb23418e26 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 25822d031a..80df89d7d8 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 9d4d880bcd..b06d350db9 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 74c205bbdc..a1fac06d04 100644
--- a/docs/db/d60/mpd__options_8h_source.html
+++ b/docs/db/d60/mpd__options_8h_source.html
@@ -126,7 +126,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
diff --git a/docs/db/d64/webvtt__media__parser_8h_source.html b/docs/db/d64/webvtt__media__parser_8h_source.html
index 47699cad22..e84970e69a 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 950e9874e7..a96a53ffc2 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 d7de5cd0b3..a73211f93c 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 ac4567bd95..44857eb873 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 2d538debc2..f84aa77797 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 1c37ab06a0..2dd2792687 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 4b83d375d6..698306b2a4 100644
--- a/docs/db/d7e/muxer__options_8cc_source.html
+++ b/docs/db/d7e/muxer__options_8cc_source.html
@@ -114,7 +114,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
diff --git a/docs/db/d84/classshaka_1_1media_1_1AACAudioSpecificConfig-members.html b/docs/db/d84/classshaka_1_1media_1_1AACAudioSpecificConfig-members.html
index 9db3b984fc..d860df3baf 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 c1d1434fa2..a9c15185f4 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 07a9f101dc..cdcce37865 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 228a78cfb6..b6f2132e97 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 76e21881ab..5675c93412 100644
--- a/docs/db/d95/classshaka_1_1media_1_1mp4_1_1Fragmenter.html
+++ b/docs/db/d95/classshaka_1_1media_1_1mp4_1_1Fragmenter.html
@@ -339,7 +339,7 @@ template<typename T >
diff --git a/docs/db/d95/structshaka_1_1media_1_1mp4_1_1ChunkLargeOffset.html b/docs/db/d95/structshaka_1_1media_1_1mp4_1_1ChunkLargeOffset.html
index d3e873c111..83aafcf06f 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
@@ -174,7 +174,7 @@ Additional Inherited Members |
Reimplemented in shaka::media::mp4::ChunkOffset.
-Definition at line 875 of file box_definitions.cc.
+Definition at line 876 of file box_definitions.cc.
@@ -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 9af5faf1f4..8af7c28221 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 f3973cbbb6..8aba30bd68 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 bf335d565c..16215cc303 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 196eb72e48..cc6801d018 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 9d491ac610..f9513ccac8 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 9e58e45b6f..969c03156d 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 ad31b0112d..fb61b75fac 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 8708281960..c60473d89e 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 2cdf5f12db..77bd1f3130 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 8a27d5a9c5..14292da861 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 fba78b6b83..5873bd250a 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 26c6320145..91e0e6fca1 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 1c830c5fb0..d28d064036 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 aaec39ca5b..f858fdb4f2 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 de5628a4b1..ce326685af 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 4c8e00555b..364298ee5a 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 2cfe2a5a59..0756acfd9a 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 a78ad6c95d..a84a7360f2 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 a5c08d419e..b96359744e 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 0c30f2f57d..3e257ba37f 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 aa4387d035..1b963f3728 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 f1861bca96..5757b8bb89 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 6ebd1fc8e3..71c1b516ec 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 e8a1c09145..ebb02dfd69 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 c3915eb4c6..2f7960ba3b 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 c702f853d6..feeb3f3465 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 bf76ad2234..ffd10e3b18 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 0242c81b19..e6f229f5e3 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 dd30a34020..35628fbf6f 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 7dce98a1d6..a6a68bfe50 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 e81dfd06b9..e09329da12 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 f9b3b9d042..dd59b44159 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 1a5670b2c5..d98d6cba48 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 a20035a1dd..b0d2fbf8ff 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 3206065317..cc00142d3c 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)
+virtual Representation * AddRepresentation(const MediaInfo &media_info)
bool NotifySampleDuration(uint32_t container_id, uint32_t sample_duration) override
void AddContentProtectionElements(const MediaInfo &media_info, Representation *parent)
-virtual void UpdateContentProtectionPssh(const std::string &drm_uuid, const std::string &pssh)
+virtual void UpdateContentProtectionPssh(const std::string &drm_uuid, const std::string &pssh)
std::string Uint8VectorToBase64(const std::vector< uint8_t > &input) Converts uint8 vector into base64 encoded string.
-virtual void ForceSetSegmentAlignment(bool segment_alignment)
+virtual void ForceSetSegmentAlignment(bool segment_alignment)
bool AddContentProtectionElement(uint32_t id, const ContentProtectionElement &content_protection_element) override
-static void MakePathsRelativeToMpd(const std::string &mpd_path, MediaInfo *media_info)
+static void MakePathsRelativeToMpd(const std::string &mpd_path, MediaInfo *media_info)
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 6a59a10046..3034fbfb7a 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 eeaea028d8..03b662ee96 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 7e478041b7..0229eba9a9 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 e01cbe4cd6..3c101a74ac 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 34038fe35b..6ea0ef31ee 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 c9d0b85fe5..ee0c6ffcba 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 f90299c631..04e15cb868 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 ec7c8bcec5..4c026fb109 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 daad671bde..1873960237 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 78cfa72cc2..beb04ebb27 100644
--- a/docs/dc/d53/webm_2segmenter_8cc_source.html
+++ b/docs/dc/d53/webm_2segmenter_8cc_source.html
@@ -525,33 +525,33 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
-
-
+
+
-
+
-
+
-
+
-
+
diff --git a/docs/dc/d54/structshaka_1_1media_1_1H264DecRefPicMarking.html b/docs/dc/d54/structshaka_1_1media_1_1H264DecRefPicMarking.html
index fbc3b9dc23..636b60e451 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 e28d116422..fcb3a25c7d 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 470eeffdac..8bd4a284b6 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 7816d56813..56d24b1b3b 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 96ab7d5d88..76455fa158 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 af409553c8..d4131c72ae 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 d596cf0991..0cfbadc9ee 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 282ddb2b2e..ce76d27d2c 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 965033f898..b7371d5a42 100644
--- a/docs/dc/d7b/h264__parser_8cc_source.html
+++ b/docs/dc/d7b/h264__parser_8cc_source.html
@@ -1264,7 +1264,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 df46e4a326..6f85c99438 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 8e986e67a3..41cacc9f5f 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
@@ -171,7 +171,7 @@ Additional Inherited Members
Implements shaka::media::mp4::Box.
-Definition at line 2257 of file box_definitions.cc.
+Definition at line 2258 of file box_definitions.cc.
@@ -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 35c71ad11d..130c948dd8 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
@@ -174,7 +174,7 @@ Additional Inherited Members
Implements shaka::media::mp4::Box.
-Definition at line 1639 of file box_definitions.cc.
+Definition at line 1640 of file box_definitions.cc.
@@ -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 d843a6fd21..f391726225 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 402 of file mpd_builder.cc.
+Definition at line 401 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 414 of file mpd_builder.cc.
+Definition at line 413 of file mpd_builder.cc.
@@ -244,7 +244,7 @@ class | DynamicMpdBuilderTes
- Definition at line 410 of file mpd_builder.cc.
+Definition at line 409 of file mpd_builder.cc.
@@ -288,7 +288,7 @@ class | DynamicMpdBuilderTes
- Definition at line 647 of file mpd_builder.cc.
+Definition at line 646 of file mpd_builder.cc.
@@ -322,7 +322,7 @@ class | DynamicMpdBuilderTes
- Returns
- true on success, false otherwise.
-Definition at line 429 of file mpd_builder.cc.
+Definition at line 428 of file mpd_builder.cc.
@@ -374,7 +374,7 @@ class | DynamicMpdBuilderTes
- Returns
- true on success, false otherwise.
-Definition at line 424 of file mpd_builder.cc.
+Definition at line 423 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 e051c72673..01a3900b51 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 c97585dd64..7ab5cd6e1f 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 5fe77f6cfc..dbe9797d2c 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 952eaeb0d0..aeec3b41bd 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 ff9eb0fb22..1ae972da67 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 edd33cd6e8..8adb9b04ae 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 62081dcb8c..e341a30f20 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
@@ -168,7 +168,7 @@ Additional Inherited Members |
Implements shaka::media::mp4::Box.
-Definition at line 2080 of file box_definitions.cc.
+Definition at line 2081 of file box_definitions.cc.
@@ -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 127bd2e744..093c578984 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 d6e3309c52..7469f7a819 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 704e647a04..d6bf23b5e1 100644
--- a/docs/dc/deb/classshaka_1_1media_1_1mp4_1_1Fragmenter-members.html
+++ b/docs/dc/deb/classshaka_1_1media_1_1mp4_1_1Fragmenter-members.html
@@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
diff --git a/docs/dc/deb/h265__byte__to__unit__stream__converter_8h_source.html b/docs/dc/deb/h265__byte__to__unit__stream__converter_8h_source.html
index 93ea485f25..07a9f9cdb3 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 cb737f4d01..9780ead7ae 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 d3b7c690aa..7d6b47ff82 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 78bb66d8bd..88eb567d60 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 7b137d5fcd..20013884e8 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
@@ -328,7 +328,7 @@ void | set_encryption_keyCreate the encryptor for the internal encryption key. The existing encryptor will be reset if it is not NULL.
- Returns
- OK on success, an error status otherwise.
-Definition at line 208 of file encrypting_fragmenter.cc.
+Definition at line 209 of file encrypting_fragmenter.cc.
@@ -405,7 +405,7 @@ void | set_encryption_key
diff --git a/docs/dc/df4/classshaka_1_1media_1_1webm_1_1SingleSegmentSegmenter-members.html b/docs/dc/df4/classshaka_1_1media_1_1webm_1_1SingleSegmentSegmenter-members.html
index 3f36dc0a55..7a1cab4a6d 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 9784bd3431..21c4cb7bff 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 1b9242d970..c07fd8a0db 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 4862a08538..a980ac8f16 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
@@ -169,7 +169,7 @@ uint32_t | flags | Reimplemented from shaka::media::mp4::ChunkLargeOffset.
-Definition at line 856 of file box_definitions.cc.
+Definition at line 857 of file box_definitions.cc.
@@ -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 10430be191..10472d5748 100644
--- a/docs/dd/d11/mpd__builder_8cc_source.html
+++ b/docs/dd/d11/mpd__builder_8cc_source.html
@@ -421,1095 +421,1094 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
332 case AdaptationSet::kRoleDub:
-
-
-
-
-
-
-
-
-
- 344 class LibXmlInitializer {
-
- 346 LibXmlInitializer() : initialized_(false) {
- 347 base::AutoLock lock(lock_);
-
-
-
-
-
-
- 354 ~LibXmlInitializer() {
- 355 base::AutoLock lock(lock_);
-
-
- 358 initialized_ =
false;
-
-
-
-
-
-
-
- 366 DISALLOW_COPY_AND_ASSIGN(LibXmlInitializer);
-
-
- 369 class RepresentationStateChangeListenerImpl
- 370 :
public RepresentationStateChangeListener {
-
-
- 373 RepresentationStateChangeListenerImpl(uint32_t representation_id,
- 374 AdaptationSet* adaptation_set)
- 375 : representation_id_(representation_id), adaptation_set_(adaptation_set) {
- 376 DCHECK(adaptation_set_);
-
- 378 ~RepresentationStateChangeListenerImpl()
override {}
-
-
- 381 void OnNewSegmentForRepresentation(uint64_t start_time,
- 382 uint64_t duration)
override {
- 383 adaptation_set_->OnNewSegmentForRepresentation(representation_id_,
- 384 start_time, duration);
-
-
- 387 void OnSetFrameRateForRepresentation(uint32_t frame_duration,
- 388 uint32_t timescale)
override {
- 389 adaptation_set_->OnSetFrameRateForRepresentation(representation_id_,
- 390 frame_duration, timescale);
-
-
-
- 394 const uint32_t representation_id_;
- 395 AdaptationSet*
const adaptation_set_;
-
- 397 DISALLOW_COPY_AND_ASSIGN(RepresentationStateChangeListenerImpl);
-
-
-
-
-
-
- 404 mpd_options_(mpd_options),
- 405 adaptation_sets_deleter_(&adaptation_sets_),
- 406 clock_(new base::DefaultClock()) {}
-
- 408 MpdBuilder::~MpdBuilder() {}
-
-
- 411 base_urls_.push_back(base_url);
-
-
-
- 415 scoped_ptr<AdaptationSet> adaptation_set(
- 416 new AdaptationSet(adaptation_set_counter_.GetNext(), lang, mpd_options_,
- 417 type_, &representation_counter_));
-
- 419 DCHECK(adaptation_set);
- 420 adaptation_sets_.push_back(adaptation_set.get());
- 421 return adaptation_set.release();
-
-
-
-
- 426 return WriteMpdToOutput(output_file);
-
-
-
-
- 431 return WriteMpdToOutput(output);
-
- 433 template <
typename OutputType>
- 434 bool MpdBuilder::WriteMpdToOutput(OutputType* output) {
- 435 static LibXmlInitializer lib_xml_initializer;
-
- 437 xml::scoped_xml_ptr<xmlDoc> doc(GenerateMpd());
-
-
-
- 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",
-
-
- 447 bool result = WriteXmlCharArrayToOutput(doc_str, doc_str_size, output);
-
-
-
-
-
-
-
- 455 xmlDocPtr MpdBuilder::GenerateMpd() {
-
- 457 static const char kXmlVersion[] =
"1.0";
- 458 xml::scoped_xml_ptr<xmlDoc> doc(xmlNewDoc(BAD_CAST kXmlVersion));
-
-
-
- 462 XmlNode period(
"Period");
-
-
-
-
-
- 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()))
-
-
-
-
- 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);
-
- 482 if (!mpd.AddChild(base_url.PassScopedPtr()))
-
-
-
- 486 if (type_ == kDynamic) {
-
- 488 period.SetStringAttribute(
"start",
"PT0S");
-
-
- 491 if (!mpd.AddChild(period.PassScopedPtr()))
-
-
- 494 AddMpdNameSpaceInfo(&mpd);
- 495 AddCommonMpdInfo(&mpd);
-
-
- 498 AddStaticMpdInfo(&mpd);
-
-
- 501 AddDynamicMpdInfo(&mpd);
-
-
- 504 NOTREACHED() <<
"Unknown MPD type: " << type_;
-
-
-
-
- 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());
-
- 519 xmlDocSetRootElement(doc.get(), mpd.Release());
-
- 521 return doc.release();
-
-
- 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));
-
- 529 LOG(ERROR) <<
"minBufferTime value not specified.";
-
-
-
-
- 534 void MpdBuilder::AddStaticMpdInfo(XmlNode* mpd_node) {
-
- 536 DCHECK_EQ(MpdBuilder::kStatic, type_);
-
- 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)));
-
-
- 548 void MpdBuilder::AddDynamicMpdInfo(XmlNode* mpd_node) {
-
- 550 DCHECK_EQ(MpdBuilder::kDynamic, type_);
-
- 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);
-
-
- 559 mpd_node->SetStringAttribute(
"publishTime",
- 560 XmlDateTimeNowWithOffset(0, clock_.get()));
-
-
-
- 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),
-
-
- 572 LOG(ERROR) <<
"Could not determine the earliest segment presentation "
- 573 "time for availabilityStartTime calculation.";
-
-
-
- 577 if (!availability_start_time_.empty())
- 578 mpd_node->SetStringAttribute(
"availabilityStartTime",
- 579 availability_start_time_);
-
- 581 if (Positive(mpd_options_.minimum_update_period)) {
- 582 mpd_node->SetStringAttribute(
- 583 "minimumUpdatePeriod",
- 584 SecondsToXmlDuration(mpd_options_.minimum_update_period));
-
- 586 LOG(WARNING) <<
"The profile is dynamic but no minimumUpdatePeriod "
-
-
-
- 590 SetIfPositive(
"timeShiftBufferDepth", mpd_options_.time_shift_buffer_depth,
-
- 592 SetIfPositive(
"suggestedPresentationDelay",
- 593 mpd_options_.suggested_presentation_delay, mpd_node);
-
-
- 596 float MpdBuilder::GetStaticMpdDuration(XmlNode* mpd_node) {
-
- 598 DCHECK_EQ(MpdBuilder::kStatic, type_);
-
- 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));
-
-
-
-
- 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);
-
- 612 representation = xmlNextElementSibling(representation)) {
- 613 float duration = 0.0f;
- 614 if (GetDurationAttribute(representation, &duration)) {
- 615 max_duration = max_duration > duration ? max_duration : duration;
-
-
-
- 619 xmlUnsetProp(representation, BAD_CAST
"duration");
-
-
-
-
-
-
-
- 627 bool MpdBuilder::GetEarliestTimestamp(
double* timestamp_seconds) {
- 628 DCHECK(timestamp_seconds);
-
- 630 double earliest_timestamp(-1);
- 631 for (std::list<AdaptationSet*>::const_iterator iter =
- 632 adaptation_sets_.begin();
- 633 iter != adaptation_sets_.end(); ++iter) {
-
- 635 if ((*iter)->GetEarliestTimestamp(×tamp) &&
- 636 ((earliest_timestamp < 0) || (timestamp < earliest_timestamp))) {
- 637 earliest_timestamp = timestamp;
-
-
- 640 if (earliest_timestamp < 0)
-
-
- 643 *timestamp_seconds = earliest_timestamp;
-
-
-
-
- 648 MediaInfo* 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())
-
-
- 655 if (!mpd_file_path.empty()) {
-
- 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));
-
- 663 if (media_info->has_init_segment_name()) {
- 664 media_info->set_init_segment_name(
- 665 MakePathRelative(media_info->init_segment_name(), mpd_dir));
-
- 667 if (media_info->has_segment_template()) {
- 668 media_info->set_segment_template(
- 669 MakePathRelative(media_info->segment_template(), mpd_dir));
-
-
-
-
-
-
- 676 const std::string& lang,
-
- 678 MpdBuilder::MpdType mpd_type,
- 679 base::AtomicSequenceNumber* counter)
- 680 : representations_deleter_(&representations_),
- 681 representation_counter_(counter),
- 682 id_(adaptation_set_id),
-
- 684 mpd_options_(mpd_options),
-
- 686 group_(kAdaptationSetGroupNotSet),
- 687 segments_aligned_(kSegmentAlignmentUnknown),
- 688 force_set_segment_alignment_(false) {
-
-
-
- 692 AdaptationSet::~AdaptationSet() {}
-
-
- 695 const uint32_t representation_id = representation_counter_->GetNext();
-
-
- 698 scoped_ptr<RepresentationStateChangeListener> listener(
- 699 new RepresentationStateChangeListenerImpl(representation_id,
this));
-
- 701 media_info, mpd_options_, representation_id, listener.Pass()));
-
- 703 if (!representation->Init())
-
-
-
-
- 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());
-
- 715 if (video_info.has_time_scale() && video_info.has_frame_duration())
- 716 RecordFrameRate(video_info.frame_duration(), video_info.time_scale());
-
- 718 AddPictureAspectRatio(video_info, &picture_aspect_ratio_);
-
-
- 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";
-
- 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()));
-
-
-
- 734 representations_.push_back(representation.get());
- 735 return representation.release();
-
-
-
-
- 740 content_protection_elements_.push_back(content_protection_element);
- 741 RemoveDuplicateAttributes(&content_protection_elements_.back());
-
-
-
- 745 const std::string& pssh) {
- 746 UpdateContentProtectionPsshHelper(drm_uuid, pssh,
- 747 &content_protection_elements_);
-
-
-
-
-
-
-
-
-
-
-
-
-
- 761 AdaptationSetXmlNode adaptation_set;
-
- 763 bool suppress_representation_width =
false;
- 764 bool suppress_representation_height =
false;
- 765 bool suppress_representation_frame_rate =
false;
-
- 767 adaptation_set.SetId(id_);
- 768 adaptation_set.SetStringAttribute(
"contentType", content_type_);
- 769 if (!lang_.empty() && lang_ !=
"und") {
-
-
-
-
- 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());
-
- 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());
-
-
- 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);
-
-
-
-
- 798 if (mpd_type_ == MpdBuilder::kStatic) {
- 799 CheckVodSegmentAlignment();
-
-
- 802 if (segments_aligned_ == kSegmentAlignmentTrue) {
- 803 adaptation_set.SetStringAttribute(mpd_type_ == MpdBuilder::kStatic
- 804 ?
"subsegmentAlignment"
- 805 :
"segmentAlignment",
-
-
-
- 809 if (picture_aspect_ratio_.size() == 1)
- 810 adaptation_set.SetStringAttribute(
"par", *picture_aspect_ratio_.begin());
-
-
- 813 adaptation_set.SetIntegerAttribute(
"group", group_);
-
- 815 if (!adaptation_set.AddContentProtectionElements(
- 816 content_protection_elements_)) {
- 817 return xml::scoped_xml_ptr<xmlNode>();
-
- 819 for (AdaptationSet::Role role : roles_)
- 820 adaptation_set.AddRoleElement(
"urn:mpeg:dash:role:2011", RoleToText(role));
-
-
- 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>();
-
-
- 834 return adaptation_set.PassScopedPtr();
-
-
-
-
- 839 segment_alignment ? kSegmentAlignmentTrue : kSegmentAlignmentFalse;
- 840 force_set_segment_alignment_ =
true;
-
-
-
- 844 group_ = group_number;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 861 if (mpd_type_ == MpdBuilder::kDynamic) {
- 862 CheckLiveSegmentAlignment(representation_id, start_time, duration);
-
- 864 representation_segment_start_times_[representation_id].push_back(
-
-
-
-
-
- 870 uint32_t representation_id,
- 871 uint32_t frame_duration,
- 872 uint32_t timescale) {
- 873 RecordFrameRate(frame_duration, timescale);
-
-
- 876 bool AdaptationSet::GetEarliestTimestamp(
double* timestamp_seconds) {
- 877 DCHECK(timestamp_seconds);
-
- 879 double earliest_timestamp(-1);
- 880 for (std::list<Representation*>::const_iterator iter =
- 881 representations_.begin();
- 882 iter != representations_.end(); ++iter) {
-
- 884 if ((*iter)->GetEarliestTimestamp(×tamp) &&
- 885 ((earliest_timestamp < 0) || (timestamp < earliest_timestamp))) {
- 886 earliest_timestamp = timestamp;
-
-
- 889 if (earliest_timestamp < 0)
-
-
- 892 *timestamp_seconds = earliest_timestamp;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 920 void AdaptationSet::CheckLiveSegmentAlignment(uint32_t representation_id,
-
-
- 923 if (segments_aligned_ == kSegmentAlignmentFalse ||
- 924 force_set_segment_alignment_) {
-
-
-
- 928 std::list<uint64_t>& representation_start_times =
- 929 representation_segment_start_times_[representation_id];
- 930 representation_start_times.push_back(start_time);
-
-
- 933 if (representation_segment_start_times_.size() != representations_.size())
-
-
- 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) {
-
-
-
- 944 if (it->second.empty())
-
-
- 947 if (expected_start_time != it->second.front()) {
-
-
- 950 segments_aligned_ = kSegmentAlignmentFalse;
- 951 representation_segment_start_times_.clear();
-
-
-
- 955 segments_aligned_ = kSegmentAlignmentTrue;
-
- 957 for (RepresentationTimeline::iterator it =
- 958 representation_segment_start_times_.begin();
- 959 it != representation_segment_start_times_.end(); ++it) {
- 960 it->second.pop_front();
-
-
-
-
-
- 966 void AdaptationSet::CheckVodSegmentAlignment() {
- 967 if (segments_aligned_ == kSegmentAlignmentFalse ||
- 968 force_set_segment_alignment_) {
-
-
- 971 if (representation_segment_start_times_.empty())
-
- 973 if (representation_segment_start_times_.size() == 1) {
- 974 segments_aligned_ = kSegmentAlignmentTrue;
-
-
-
-
-
-
- 981 const std::list<uint64_t>& expected_time_line =
- 982 representation_segment_start_times_.begin()->second;
-
- 984 bool all_segment_time_line_same_length =
true;
-
- 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;
-
-
- 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;
-
-
- 1001 if (!std::equal(shorter_list->begin(), shorter_list->end(),
- 1002 longer_list->begin())) {
-
- 1004 segments_aligned_ = kSegmentAlignmentFalse;
- 1005 representation_segment_start_times_.clear();
-
-
-
-
-
-
-
-
-
-
- 1016 if (!all_segment_time_line_same_length) {
- 1017 segments_aligned_ = kSegmentAlignmentUnknown;
-
-
-
- 1021 segments_aligned_ = kSegmentAlignmentTrue;
-
-
-
-
- 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.";
-
-
- 1032 video_frame_rates_[
static_cast<double>(timescale) / frame_duration] =
- 1033 base::IntToString(timescale) +
"/" + base::IntToString(frame_duration);
-
-
-
- 1037 const MediaInfo& media_info,
-
-
- 1040 scoped_ptr<RepresentationStateChangeListener> state_change_listener)
- 1041 : media_info_(media_info),
-
-
- 1044 mpd_options_(mpd_options),
-
- 1046 state_change_listener_(state_change_listener.Pass()),
- 1047 output_suppression_flags_(0) {}
-
- 1049 Representation::~Representation() {}
-
-
- 1052 if (!AtLeastOneTrue(media_info_.has_video_info(),
- 1053 media_info_.has_audio_info(),
- 1054 media_info_.has_text_info())) {
-
-
-
- 1058 LOG(ERROR) <<
"Representation needs one of video, audio, or text.";
-
-
-
- 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.";
-
-
-
- 1069 if (media_info_.container_type() == MediaInfo::CONTAINER_UNKNOWN) {
- 1070 LOG(ERROR) <<
"'container_type' in MediaInfo cannot be CONTAINER_UNKNOWN.";
-
-
-
- 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.";
-
-
- 1080 }
else if (media_info_.has_audio_info()) {
- 1081 mime_type_ = GetAudioMimeType();
- 1082 }
else if (media_info_.has_text_info()) {
- 1083 mime_type_ = GetTextMimeType();
-
-
- 1086 if (mime_type_.empty())
-
-
- 1089 codecs_ = GetCodecs(media_info_);
-
-
-
-
-
- 1095 content_protection_elements_.push_back(content_protection_element);
- 1096 RemoveDuplicateAttributes(&content_protection_elements_.back());
-
-
-
- 1100 const std::string& pssh) {
- 1101 UpdateContentProtectionPsshHelper(drm_uuid, pssh,
- 1102 &content_protection_elements_);
-
-
-
-
-
- 1108 if (start_time == 0 && duration == 0) {
- 1109 LOG(WARNING) <<
"Got segment with start_time and duration == 0. Ignoring.";
-
-
-
- 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;
-
-
- 1119 segment_infos_.push_back(s);
-
-
- 1122 bandwidth_estimator_.AddBlock(
- 1123 size, static_cast<double>(duration) / media_info_.reference_time_scale());
-
-
- 1126 DCHECK_GE(segment_infos_.size(), 1u);
-
-
-
- 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());
-
-
-
-
-
-
-
-
-
-
-
- 1146 if (!HasRequiredMediaInfoFields()) {
- 1147 LOG(ERROR) <<
"MediaInfo missing required fields.";
- 1148 return xml::scoped_xml_ptr<xmlNode>();
-
-
- 1151 const uint64_t bandwidth = media_info_.has_bandwidth()
- 1152 ? media_info_.bandwidth()
- 1153 : bandwidth_estimator_.Estimate();
-
- 1155 DCHECK(!(HasVODOnlyFields(media_info_) && HasLiveOnlyFields(media_info_)));
-
- 1157 RepresentationXmlNode 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_);
-
- 1165 const bool has_video_info = media_info_.has_video_info();
- 1166 const bool has_audio_info = media_info_.has_audio_info();
-
- 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>();
-
-
- 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>();
-
-
- 1184 if (!representation.AddContentProtectionElements(
- 1185 content_protection_elements_)) {
- 1186 return xml::scoped_xml_ptr<xmlNode>();
-
-
- 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>();
-
-
- 1195 if (HasLiveOnlyFields(media_info_) &&
- 1196 !representation.AddLiveOnlyInfo(media_info_, segment_infos_,
-
- 1198 LOG(ERROR) <<
"Failed to add Live info.";
- 1199 return xml::scoped_xml_ptr<xmlNode>();
-
-
-
-
- 1204 output_suppression_flags_ = 0;
- 1205 return representation.PassScopedPtr();
-
-
-
- 1209 output_suppression_flags_ |= flag;
-
-
- 1212 bool Representation::HasRequiredMediaInfoFields() {
- 1213 if (HasVODOnlyFields(media_info_) && HasLiveOnlyFields(media_info_)) {
- 1214 LOG(ERROR) <<
"MediaInfo cannot have both VOD and Live fields.";
-
-
-
- 1218 if (!media_info_.has_container_type()) {
- 1219 LOG(ERROR) <<
"MediaInfo missing required field: container_type.";
-
-
-
- 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.";
-
-
-
- 1229 VLOG_IF(3, HasLiveOnlyFields(media_info_) && !media_info_.has_bandwidth())
- 1230 <<
"MediaInfo missing field 'bandwidth'. Using estimated from "
-
-
-
-
-
- 1236 bool Representation::IsContiguous(uint64_t start_time,
-
- 1238 uint64_t size)
const {
- 1239 if (segment_infos_.empty())
-
-
-
- 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) {
-
-
-
-
- 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 <<
".";
-
-
-
-
- 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 <<
".";
-
-
-
-
- 1275 if (start_time < previous_segment_end_time - kRoundingErrorGrace) {
-
- 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 <<
".";
-
-
-
-
-
-
-
- 1287 void Representation::SlideWindow() {
- 1288 DCHECK(!segment_infos_.empty());
- 1289 if (mpd_options_.time_shift_buffer_depth <= 0.0)
-
-
- 1292 const uint32_t time_scale = GetTimeScale(media_info_);
- 1293 DCHECK_GT(time_scale, 0u);
-
- 1295 uint64_t time_shift_buffer_depth =
- 1296 static_cast<uint64_t
>(mpd_options_.time_shift_buffer_depth * time_scale);
-
-
-
- 1300 const uint64_t current_play_time = LatestSegmentStartTime(segment_infos_);
- 1301 if (current_play_time <= time_shift_buffer_depth)
-
-
- 1304 const uint64_t timeshift_limit = current_play_time - time_shift_buffer_depth;
-
-
-
- 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)
-
- 1315 num_segments_removed += last->repeat + 1;
-
- 1317 segment_infos_.erase(first, last);
- 1318 start_number_ += num_segments_removed;
-
-
- 1321 SegmentInfo* first_segment_info = &segment_infos_.front();
- 1322 DCHECK_LE(timeshift_limit, LastSegmentEndTime(*first_segment_info));
-
-
- 1325 const int repeat_index =
- 1326 SearchTimedOutRepeatIndex(timeshift_limit, *first_segment_info);
- 1327 CHECK_GE(repeat_index, 0);
- 1328 if (repeat_index == 0)
-
-
- 1331 first_segment_info->start_time = first_segment_info->start_time +
- 1332 first_segment_info->duration * repeat_index;
-
- 1334 first_segment_info->repeat = first_segment_info->repeat - repeat_index;
- 1335 start_number_ += repeat_index;
-
-
- 1338 std::string Representation::GetVideoMimeType()
const {
- 1339 return GetMimeType(
"video", media_info_.container_type());
-
-
- 1342 std::string Representation::GetAudioMimeType()
const {
- 1343 return GetMimeType(
"audio", media_info_.container_type());
-
-
- 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";
-
- 1355 LOG(ERROR) <<
"Failed to determine MIME type for TTML container: "
- 1356 << media_info_.container_type();
-
-
-
- 1360 if (media_info_.text_info().format() ==
"vtt") {
- 1361 if (media_info_.container_type() == MediaInfo::CONTAINER_TEXT) {
-
-
- 1364 LOG(ERROR) <<
"Failed to determine MIME type for VTT container: "
- 1365 << media_info_.container_type();
-
-
-
- 1369 LOG(ERROR) <<
"Cannot determine MIME type for format: "
- 1370 << media_info_.text_info().format()
- 1371 <<
" container: " << media_info_.container_type();
-
-
-
- 1375 bool Representation::GetEarliestTimestamp(
double* timestamp_seconds) {
- 1376 DCHECK(timestamp_seconds);
-
- 1378 if (segment_infos_.empty())
-
-
- 1381 *timestamp_seconds =
static_cast<double>(segment_infos_.begin()->start_time) /
- 1382 GetTimeScale(media_info_);
-
-
-
-
-void OnSetFrameRateForRepresentation(uint32_t representation_id, uint32_t frame_duration, uint32_t timescale)
-virtual void AddNewSegment(uint64_t start_time, uint64_t duration, uint64_t size)
-
-bool WriteMpdToFile(media::File *output_file)
-AdaptationSet(uint32_t adaptation_set_id, const std::string &lang, const MpdOptions &mpd_options, MpdBuilder::MpdType mpd_type, base::AtomicSequenceNumber *representation_counter)
+
+
+
+
+
+
+
+
+ 343 class LibXmlInitializer {
+
+ 345 LibXmlInitializer() : initialized_(false) {
+ 346 base::AutoLock lock(lock_);
+
+
+
+
+
+
+ 353 ~LibXmlInitializer() {
+ 354 base::AutoLock lock(lock_);
+
+
+ 357 initialized_ =
false;
+
+
+
+
+
+
+
+ 365 DISALLOW_COPY_AND_ASSIGN(LibXmlInitializer);
+
+
+ 368 class RepresentationStateChangeListenerImpl
+ 369 :
public RepresentationStateChangeListener {
+
+
+ 372 RepresentationStateChangeListenerImpl(uint32_t representation_id,
+ 373 AdaptationSet* adaptation_set)
+ 374 : representation_id_(representation_id), adaptation_set_(adaptation_set) {
+ 375 DCHECK(adaptation_set_);
+
+ 377 ~RepresentationStateChangeListenerImpl()
override {}
+
+
+ 380 void OnNewSegmentForRepresentation(uint64_t start_time,
+ 381 uint64_t duration)
override {
+ 382 adaptation_set_->OnNewSegmentForRepresentation(representation_id_,
+ 383 start_time, duration);
+
+
+ 386 void OnSetFrameRateForRepresentation(uint32_t frame_duration,
+ 387 uint32_t timescale)
override {
+ 388 adaptation_set_->OnSetFrameRateForRepresentation(representation_id_,
+ 389 frame_duration, timescale);
+
+
+
+ 393 const uint32_t representation_id_;
+ 394 AdaptationSet*
const adaptation_set_;
+
+ 396 DISALLOW_COPY_AND_ASSIGN(RepresentationStateChangeListenerImpl);
+
+
+
+
+
+
+ 403 mpd_options_(mpd_options),
+ 404 adaptation_sets_deleter_(&adaptation_sets_),
+ 405 clock_(new base::DefaultClock()) {}
+
+ 407 MpdBuilder::~MpdBuilder() {}
+
+
+ 410 base_urls_.push_back(base_url);
+
+
+
+ 414 scoped_ptr<AdaptationSet> adaptation_set(
+ 415 new AdaptationSet(adaptation_set_counter_.GetNext(), lang, mpd_options_,
+ 416 type_, &representation_counter_));
+
+ 418 DCHECK(adaptation_set);
+ 419 adaptation_sets_.push_back(adaptation_set.get());
+ 420 return adaptation_set.release();
+
+
+
+
+ 425 return WriteMpdToOutput(output_file);
+
+
+
+
+ 430 return WriteMpdToOutput(output);
+
+ 432 template <
typename OutputType>
+ 433 bool MpdBuilder::WriteMpdToOutput(OutputType* output) {
+ 434 static LibXmlInitializer lib_xml_initializer;
+
+ 436 xml::scoped_xml_ptr<xmlDoc> doc(GenerateMpd());
+
+
+
+ 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",
+
+
+ 446 bool result = WriteXmlCharArrayToOutput(doc_str, doc_str_size, output);
+
+
+
+
+
+
+
+ 454 xmlDocPtr MpdBuilder::GenerateMpd() {
+
+ 456 static const char kXmlVersion[] =
"1.0";
+ 457 xml::scoped_xml_ptr<xmlDoc> doc(xmlNewDoc(BAD_CAST kXmlVersion));
+
+
+
+ 461 XmlNode period(
"Period");
+
+
+
+
+
+ 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()))
+
+
+
+
+ 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);
+
+ 481 if (!mpd.AddChild(base_url.PassScopedPtr()))
+
+
+
+ 485 if (type_ == kDynamic) {
+
+ 487 period.SetStringAttribute(
"start",
"PT0S");
+
+
+ 490 if (!mpd.AddChild(period.PassScopedPtr()))
+
+
+ 493 AddMpdNameSpaceInfo(&mpd);
+ 494 AddCommonMpdInfo(&mpd);
+
+
+ 497 AddStaticMpdInfo(&mpd);
+
+
+ 500 AddDynamicMpdInfo(&mpd);
+
+
+ 503 NOTREACHED() <<
"Unknown MPD type: " << type_;
+
+
+
+
+ 508 const std::string version = GetPackagerVersion();
+ 509 if (!version.empty()) {
+ 510 std::string version_string =
+ 511 base::StringPrintf(
"Generated with %s version %s",
+ 512 GetPackagerProjectUrl().c_str(), version.c_str());
+ 513 xml::scoped_xml_ptr<xmlNode> comment(
+ 514 xmlNewDocComment(doc.get(), BAD_CAST version_string.c_str()));
+ 515 xmlDocSetRootElement(doc.get(), comment.get());
+ 516 xmlAddSibling(comment.release(), mpd.Release());
+
+ 518 xmlDocSetRootElement(doc.get(), mpd.Release());
+
+ 520 return doc.release();
+
+
+ 523 void MpdBuilder::AddCommonMpdInfo(XmlNode* mpd_node) {
+ 524 if (Positive(mpd_options_.min_buffer_time)) {
+ 525 mpd_node->SetStringAttribute(
+ 526 "minBufferTime", SecondsToXmlDuration(mpd_options_.min_buffer_time));
+
+ 528 LOG(ERROR) <<
"minBufferTime value not specified.";
+
+
+
+
+ 533 void MpdBuilder::AddStaticMpdInfo(XmlNode* mpd_node) {
+
+ 535 DCHECK_EQ(MpdBuilder::kStatic, type_);
+
+ 537 static const char kStaticMpdType[] =
"static";
+ 538 static const char kStaticMpdProfile[] =
+ 539 "urn:mpeg:dash:profile:isoff-on-demand:2011";
+ 540 mpd_node->SetStringAttribute(
"type", kStaticMpdType);
+ 541 mpd_node->SetStringAttribute(
"profiles", kStaticMpdProfile);
+ 542 mpd_node->SetStringAttribute(
+ 543 "mediaPresentationDuration",
+ 544 SecondsToXmlDuration(GetStaticMpdDuration(mpd_node)));
+
+
+ 547 void MpdBuilder::AddDynamicMpdInfo(XmlNode* mpd_node) {
+
+ 549 DCHECK_EQ(MpdBuilder::kDynamic, type_);
+
+ 551 static const char kDynamicMpdType[] =
"dynamic";
+ 552 static const char kDynamicMpdProfile[] =
+ 553 "urn:mpeg:dash:profile:isoff-live:2011";
+ 554 mpd_node->SetStringAttribute(
"type", kDynamicMpdType);
+ 555 mpd_node->SetStringAttribute(
"profiles", kDynamicMpdProfile);
+
+
+ 558 mpd_node->SetStringAttribute(
"publishTime",
+ 559 XmlDateTimeNowWithOffset(0, clock_.get()));
+
+
+
+ 563 if (availability_start_time_.empty()) {
+ 564 double earliest_presentation_time;
+ 565 if (GetEarliestTimestamp(&earliest_presentation_time)) {
+ 566 availability_start_time_ =
+ 567 XmlDateTimeNowWithOffset(mpd_options_.availability_time_offset -
+ 568 std::ceil(earliest_presentation_time),
+
+
+ 571 LOG(ERROR) <<
"Could not determine the earliest segment presentation "
+ 572 "time for availabilityStartTime calculation.";
+
+
+
+ 576 if (!availability_start_time_.empty())
+ 577 mpd_node->SetStringAttribute(
"availabilityStartTime",
+ 578 availability_start_time_);
+
+ 580 if (Positive(mpd_options_.minimum_update_period)) {
+ 581 mpd_node->SetStringAttribute(
+ 582 "minimumUpdatePeriod",
+ 583 SecondsToXmlDuration(mpd_options_.minimum_update_period));
+
+ 585 LOG(WARNING) <<
"The profile is dynamic but no minimumUpdatePeriod "
+
+
+
+ 589 SetIfPositive(
"timeShiftBufferDepth", mpd_options_.time_shift_buffer_depth,
+
+ 591 SetIfPositive(
"suggestedPresentationDelay",
+ 592 mpd_options_.suggested_presentation_delay, mpd_node);
+
+
+ 595 float MpdBuilder::GetStaticMpdDuration(XmlNode* mpd_node) {
+
+ 597 DCHECK_EQ(MpdBuilder::kStatic, type_);
+
+ 599 xmlNodePtr period_node = FindPeriodNode(mpd_node);
+ 600 DCHECK(period_node) <<
"Period element must be a child of mpd_node.";
+ 601 DCHECK(IsPeriodNode(period_node));
+
+
+
+
+ 606 float max_duration = 0.0f;
+ 607 for (xmlNodePtr adaptation_set = xmlFirstElementChild(period_node);
+ 608 adaptation_set; adaptation_set = xmlNextElementSibling(adaptation_set)) {
+ 609 for (xmlNodePtr representation = xmlFirstElementChild(adaptation_set);
+
+ 611 representation = xmlNextElementSibling(representation)) {
+ 612 float duration = 0.0f;
+ 613 if (GetDurationAttribute(representation, &duration)) {
+ 614 max_duration = max_duration > duration ? max_duration : duration;
+
+
+
+ 618 xmlUnsetProp(representation, BAD_CAST
"duration");
+
+
+
+
+
+
+
+ 626 bool MpdBuilder::GetEarliestTimestamp(
double* timestamp_seconds) {
+ 627 DCHECK(timestamp_seconds);
+
+ 629 double earliest_timestamp(-1);
+ 630 for (std::list<AdaptationSet*>::const_iterator iter =
+ 631 adaptation_sets_.begin();
+ 632 iter != adaptation_sets_.end(); ++iter) {
+
+ 634 if ((*iter)->GetEarliestTimestamp(×tamp) &&
+ 635 ((earliest_timestamp < 0) || (timestamp < earliest_timestamp))) {
+ 636 earliest_timestamp = timestamp;
+
+
+ 639 if (earliest_timestamp < 0)
+
+
+ 642 *timestamp_seconds = earliest_timestamp;
+
+
+
+
+ 647 MediaInfo* media_info) {
+
+ 649 const std::string kFileProtocol(
"file://");
+ 650 std::string mpd_file_path = (mpd_path.find(kFileProtocol) == 0)
+ 651 ? mpd_path.substr(kFileProtocol.size())
+
+
+ 654 if (!mpd_file_path.empty()) {
+ 655 std::string mpd_dir(FilePath::FromUTF8Unsafe(mpd_file_path)
+ 656 .DirName().AsEndingWithSeparator().AsUTF8Unsafe());
+ 657 if (!mpd_dir.empty()) {
+ 658 if (media_info->has_media_file_name()) {
+ 659 media_info->set_media_file_name(
+ 660 MakePathRelative(media_info->media_file_name(), mpd_dir));
+
+ 662 if (media_info->has_init_segment_name()) {
+ 663 media_info->set_init_segment_name(
+ 664 MakePathRelative(media_info->init_segment_name(), mpd_dir));
+
+ 666 if (media_info->has_segment_template()) {
+ 667 media_info->set_segment_template(
+ 668 MakePathRelative(media_info->segment_template(), mpd_dir));
+
+
+
+
+
+
+ 675 const std::string& lang,
+
+ 677 MpdBuilder::MpdType mpd_type,
+ 678 base::AtomicSequenceNumber* counter)
+ 679 : representations_deleter_(&representations_),
+ 680 representation_counter_(counter),
+ 681 id_(adaptation_set_id),
+
+ 683 mpd_options_(mpd_options),
+
+ 685 group_(kAdaptationSetGroupNotSet),
+ 686 segments_aligned_(kSegmentAlignmentUnknown),
+ 687 force_set_segment_alignment_(false) {
+
+
+
+ 691 AdaptationSet::~AdaptationSet() {}
+
+
+ 694 const uint32_t representation_id = representation_counter_->GetNext();
+
+
+ 697 scoped_ptr<RepresentationStateChangeListener> listener(
+ 698 new RepresentationStateChangeListenerImpl(representation_id,
this));
+
+ 700 media_info, mpd_options_, representation_id, listener.Pass()));
+
+ 702 if (!representation->Init())
+
+
+
+
+ 707 if (media_info.has_video_info()) {
+ 708 const MediaInfo::VideoInfo& video_info = media_info.video_info();
+ 709 DCHECK(video_info.has_width());
+ 710 DCHECK(video_info.has_height());
+ 711 video_widths_.insert(video_info.width());
+ 712 video_heights_.insert(video_info.height());
+
+ 714 if (video_info.has_time_scale() && video_info.has_frame_duration())
+ 715 RecordFrameRate(video_info.frame_duration(), video_info.time_scale());
+
+ 717 AddPictureAspectRatio(video_info, &picture_aspect_ratio_);
+
+
+ 720 if (media_info.has_video_info()) {
+ 721 content_type_ =
"video";
+ 722 }
else if (media_info.has_audio_info()) {
+ 723 content_type_ =
"audio";
+ 724 }
else if (media_info.has_text_info()) {
+ 725 content_type_ =
"text";
+
+ 727 if (media_info.text_info().has_type() &&
+ 728 (media_info.text_info().type() != MediaInfo::TextInfo::UNKNOWN)) {
+ 729 roles_.insert(MediaInfoTextTypeToRole(media_info.text_info().type()));
+
+
+
+ 733 representations_.push_back(representation.get());
+ 734 return representation.release();
+
+
+
+
+ 739 content_protection_elements_.push_back(content_protection_element);
+ 740 RemoveDuplicateAttributes(&content_protection_elements_.back());
+
+
+
+ 744 const std::string& pssh) {
+ 745 UpdateContentProtectionPsshHelper(drm_uuid, pssh,
+ 746 &content_protection_elements_);
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 760 AdaptationSetXmlNode adaptation_set;
+
+ 762 bool suppress_representation_width =
false;
+ 763 bool suppress_representation_height =
false;
+ 764 bool suppress_representation_frame_rate =
false;
+
+ 766 adaptation_set.SetId(id_);
+ 767 adaptation_set.SetStringAttribute(
"contentType", content_type_);
+ 768 if (!lang_.empty() && lang_ !=
"und") {
+
+
+
+
+ 773 if (video_widths_.size() == 1) {
+ 774 suppress_representation_width =
true;
+ 775 adaptation_set.SetIntegerAttribute(
"width", *video_widths_.begin());
+ 776 }
else if (video_widths_.size() > 1) {
+ 777 adaptation_set.SetIntegerAttribute(
"maxWidth", *video_widths_.rbegin());
+
+ 779 if (video_heights_.size() == 1) {
+ 780 suppress_representation_height =
true;
+ 781 adaptation_set.SetIntegerAttribute(
"height", *video_heights_.begin());
+ 782 }
else if (video_heights_.size() > 1) {
+ 783 adaptation_set.SetIntegerAttribute(
"maxHeight", *video_heights_.rbegin());
+
+
+ 786 if (video_frame_rates_.size() == 1) {
+ 787 suppress_representation_frame_rate =
true;
+ 788 adaptation_set.SetStringAttribute(
"frameRate",
+ 789 video_frame_rates_.begin()->second);
+ 790 }
else if (video_frame_rates_.size() > 1) {
+ 791 adaptation_set.SetStringAttribute(
"maxFrameRate",
+ 792 video_frame_rates_.rbegin()->second);
+
+
+
+
+ 797 if (mpd_type_ == MpdBuilder::kStatic) {
+ 798 CheckVodSegmentAlignment();
+
+
+ 801 if (segments_aligned_ == kSegmentAlignmentTrue) {
+ 802 adaptation_set.SetStringAttribute(mpd_type_ == MpdBuilder::kStatic
+ 803 ?
"subsegmentAlignment"
+ 804 :
"segmentAlignment",
+
+
+
+ 808 if (picture_aspect_ratio_.size() == 1)
+ 809 adaptation_set.SetStringAttribute(
"par", *picture_aspect_ratio_.begin());
+
+
+ 812 adaptation_set.SetIntegerAttribute(
"group", group_);
+
+ 814 if (!adaptation_set.AddContentProtectionElements(
+ 815 content_protection_elements_)) {
+ 816 return xml::scoped_xml_ptr<xmlNode>();
+
+ 818 for (AdaptationSet::Role role : roles_)
+ 819 adaptation_set.AddRoleElement(
"urn:mpeg:dash:role:2011", RoleToText(role));
+
+
+ 822 if (suppress_representation_width)
+ 823 representation->SuppressOnce(Representation::kSuppressWidth);
+ 824 if (suppress_representation_height)
+ 825 representation->SuppressOnce(Representation::kSuppressHeight);
+ 826 if (suppress_representation_frame_rate)
+ 827 representation->SuppressOnce(Representation::kSuppressFrameRate);
+ 828 xml::scoped_xml_ptr<xmlNode> child(representation->GetXml());
+ 829 if (!child || !adaptation_set.AddChild(child.Pass()))
+ 830 return xml::scoped_xml_ptr<xmlNode>();
+
+
+ 833 return adaptation_set.PassScopedPtr();
+
+
+
+
+ 838 segment_alignment ? kSegmentAlignmentTrue : kSegmentAlignmentFalse;
+ 839 force_set_segment_alignment_ =
true;
+
+
+
+ 843 group_ = group_number;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 860 if (mpd_type_ == MpdBuilder::kDynamic) {
+ 861 CheckLiveSegmentAlignment(representation_id, start_time, duration);
+
+ 863 representation_segment_start_times_[representation_id].push_back(
+
+
+
+
+
+ 869 uint32_t representation_id,
+ 870 uint32_t frame_duration,
+ 871 uint32_t timescale) {
+ 872 RecordFrameRate(frame_duration, timescale);
+
+
+ 875 bool AdaptationSet::GetEarliestTimestamp(
double* timestamp_seconds) {
+ 876 DCHECK(timestamp_seconds);
+
+ 878 double earliest_timestamp(-1);
+ 879 for (std::list<Representation*>::const_iterator iter =
+ 880 representations_.begin();
+ 881 iter != representations_.end(); ++iter) {
+
+ 883 if ((*iter)->GetEarliestTimestamp(×tamp) &&
+ 884 ((earliest_timestamp < 0) || (timestamp < earliest_timestamp))) {
+ 885 earliest_timestamp = timestamp;
+
+
+ 888 if (earliest_timestamp < 0)
+
+
+ 891 *timestamp_seconds = earliest_timestamp;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 919 void AdaptationSet::CheckLiveSegmentAlignment(uint32_t representation_id,
+
+
+ 922 if (segments_aligned_ == kSegmentAlignmentFalse ||
+ 923 force_set_segment_alignment_) {
+
+
+
+ 927 std::list<uint64_t>& representation_start_times =
+ 928 representation_segment_start_times_[representation_id];
+ 929 representation_start_times.push_back(start_time);
+
+
+ 932 if (representation_segment_start_times_.size() != representations_.size())
+
+
+ 935 DCHECK(!representation_start_times.empty());
+ 936 const uint64_t expected_start_time = representation_start_times.front();
+ 937 for (RepresentationTimeline::const_iterator it =
+ 938 representation_segment_start_times_.begin();
+ 939 it != representation_segment_start_times_.end(); ++it) {
+
+
+
+ 943 if (it->second.empty())
+
+
+ 946 if (expected_start_time != it->second.front()) {
+
+
+ 949 segments_aligned_ = kSegmentAlignmentFalse;
+ 950 representation_segment_start_times_.clear();
+
+
+
+ 954 segments_aligned_ = kSegmentAlignmentTrue;
+
+ 956 for (RepresentationTimeline::iterator it =
+ 957 representation_segment_start_times_.begin();
+ 958 it != representation_segment_start_times_.end(); ++it) {
+ 959 it->second.pop_front();
+
+
+
+
+
+ 965 void AdaptationSet::CheckVodSegmentAlignment() {
+ 966 if (segments_aligned_ == kSegmentAlignmentFalse ||
+ 967 force_set_segment_alignment_) {
+
+
+ 970 if (representation_segment_start_times_.empty())
+
+ 972 if (representation_segment_start_times_.size() == 1) {
+ 973 segments_aligned_ = kSegmentAlignmentTrue;
+
+
+
+
+
+
+ 980 const std::list<uint64_t>& expected_time_line =
+ 981 representation_segment_start_times_.begin()->second;
+
+ 983 bool all_segment_time_line_same_length =
true;
+
+ 985 RepresentationTimeline::const_iterator it =
+ 986 representation_segment_start_times_.begin();
+ 987 for (++it; it != representation_segment_start_times_.end(); ++it) {
+ 988 const std::list<uint64_t>& other_time_line = it->second;
+ 989 if (expected_time_line.size() != other_time_line.size()) {
+ 990 all_segment_time_line_same_length =
false;
+
+
+ 993 const std::list<uint64_t>* longer_list = &other_time_line;
+ 994 const std::list<uint64_t>* shorter_list = &expected_time_line;
+ 995 if (expected_time_line.size() > other_time_line.size()) {
+ 996 shorter_list = &other_time_line;
+ 997 longer_list = &expected_time_line;
+
+
+ 1000 if (!std::equal(shorter_list->begin(), shorter_list->end(),
+ 1001 longer_list->begin())) {
+
+ 1003 segments_aligned_ = kSegmentAlignmentFalse;
+ 1004 representation_segment_start_times_.clear();
+
+
+
+
+
+
+
+
+
+
+ 1015 if (!all_segment_time_line_same_length) {
+ 1016 segments_aligned_ = kSegmentAlignmentUnknown;
+
+
+
+ 1020 segments_aligned_ = kSegmentAlignmentTrue;
+
+
+
+
+ 1025 void AdaptationSet::RecordFrameRate(uint32_t frame_duration,
+ 1026 uint32_t timescale) {
+ 1027 if (frame_duration == 0) {
+ 1028 LOG(ERROR) <<
"Frame duration is 0 and cannot be set.";
+
+
+ 1031 video_frame_rates_[
static_cast<double>(timescale) / frame_duration] =
+ 1032 base::IntToString(timescale) +
"/" + base::IntToString(frame_duration);
+
+
+
+ 1036 const MediaInfo& media_info,
+
+
+ 1039 scoped_ptr<RepresentationStateChangeListener> state_change_listener)
+ 1040 : media_info_(media_info),
+
+
+ 1043 mpd_options_(mpd_options),
+
+ 1045 state_change_listener_(state_change_listener.Pass()),
+ 1046 output_suppression_flags_(0) {}
+
+ 1048 Representation::~Representation() {}
+
+
+ 1051 if (!AtLeastOneTrue(media_info_.has_video_info(),
+ 1052 media_info_.has_audio_info(),
+ 1053 media_info_.has_text_info())) {
+
+
+
+ 1057 LOG(ERROR) <<
"Representation needs one of video, audio, or text.";
+
+
+
+ 1061 if (MoreThanOneTrue(media_info_.has_video_info(),
+ 1062 media_info_.has_audio_info(),
+ 1063 media_info_.has_text_info())) {
+ 1064 LOG(ERROR) <<
"Only one of VideoInfo, AudioInfo, or TextInfo can be set.";
+
+
+
+ 1068 if (media_info_.container_type() == MediaInfo::CONTAINER_UNKNOWN) {
+ 1069 LOG(ERROR) <<
"'container_type' in MediaInfo cannot be CONTAINER_UNKNOWN.";
+
+
+
+ 1073 if (media_info_.has_video_info()) {
+ 1074 mime_type_ = GetVideoMimeType();
+ 1075 if (!HasRequiredVideoFields(media_info_.video_info())) {
+ 1076 LOG(ERROR) <<
"Missing required fields to create a video Representation.";
+
+
+ 1079 }
else if (media_info_.has_audio_info()) {
+ 1080 mime_type_ = GetAudioMimeType();
+ 1081 }
else if (media_info_.has_text_info()) {
+ 1082 mime_type_ = GetTextMimeType();
+
+
+ 1085 if (mime_type_.empty())
+
+
+ 1088 codecs_ = GetCodecs(media_info_);
+
+
+
+
+
+ 1094 content_protection_elements_.push_back(content_protection_element);
+ 1095 RemoveDuplicateAttributes(&content_protection_elements_.back());
+
+
+
+ 1099 const std::string& pssh) {
+ 1100 UpdateContentProtectionPsshHelper(drm_uuid, pssh,
+ 1101 &content_protection_elements_);
+
+
+
+
+
+ 1107 if (start_time == 0 && duration == 0) {
+ 1108 LOG(WARNING) <<
"Got segment with start_time and duration == 0. Ignoring.";
+
+
+
+ 1112 if (state_change_listener_)
+ 1113 state_change_listener_->OnNewSegmentForRepresentation(start_time, duration);
+ 1114 if (IsContiguous(start_time, duration, size)) {
+ 1115 ++segment_infos_.back().repeat;
+
+
+ 1118 segment_infos_.push_back(s);
+
+
+ 1121 bandwidth_estimator_.AddBlock(
+ 1122 size, static_cast<double>(duration) / media_info_.reference_time_scale());
+
+
+ 1125 DCHECK_GE(segment_infos_.size(), 1u);
+
+
+
+ 1129 if (media_info_.has_video_info()) {
+ 1130 media_info_.mutable_video_info()->set_frame_duration(sample_duration);
+ 1131 if (state_change_listener_) {
+ 1132 state_change_listener_->OnSetFrameRateForRepresentation(
+ 1133 sample_duration, media_info_.video_info().time_scale());
+
+
+
+
+
+
+
+
+
+
+
+ 1145 if (!HasRequiredMediaInfoFields()) {
+ 1146 LOG(ERROR) <<
"MediaInfo missing required fields.";
+ 1147 return xml::scoped_xml_ptr<xmlNode>();
+
+
+ 1150 const uint64_t bandwidth = media_info_.has_bandwidth()
+ 1151 ? media_info_.bandwidth()
+ 1152 : bandwidth_estimator_.Estimate();
+
+ 1154 DCHECK(!(HasVODOnlyFields(media_info_) && HasLiveOnlyFields(media_info_)));
+
+ 1156 RepresentationXmlNode representation;
+
+ 1158 representation.SetId(id_);
+ 1159 representation.SetIntegerAttribute(
"bandwidth", bandwidth);
+ 1160 if (!codecs_.empty())
+ 1161 representation.SetStringAttribute(
"codecs", codecs_);
+ 1162 representation.SetStringAttribute(
"mimeType", mime_type_);
+
+ 1164 const bool has_video_info = media_info_.has_video_info();
+ 1165 const bool has_audio_info = media_info_.has_audio_info();
+
+ 1167 if (has_video_info &&
+ 1168 !representation.AddVideoInfo(
+ 1169 media_info_.video_info(),
+ 1170 !(output_suppression_flags_ & kSuppressWidth),
+ 1171 !(output_suppression_flags_ & kSuppressHeight),
+ 1172 !(output_suppression_flags_ & kSuppressFrameRate))) {
+ 1173 LOG(ERROR) <<
"Failed to add video info to Representation XML.";
+ 1174 return xml::scoped_xml_ptr<xmlNode>();
+
+
+ 1177 if (has_audio_info &&
+ 1178 !representation.AddAudioInfo(media_info_.audio_info())) {
+ 1179 LOG(ERROR) <<
"Failed to add audio info to Representation XML.";
+ 1180 return xml::scoped_xml_ptr<xmlNode>();
+
+
+ 1183 if (!representation.AddContentProtectionElements(
+ 1184 content_protection_elements_)) {
+ 1185 return xml::scoped_xml_ptr<xmlNode>();
+
+
+ 1188 if (HasVODOnlyFields(media_info_) &&
+ 1189 !representation.AddVODOnlyInfo(media_info_)) {
+ 1190 LOG(ERROR) <<
"Failed to add VOD segment info.";
+ 1191 return xml::scoped_xml_ptr<xmlNode>();
+
+
+ 1194 if (HasLiveOnlyFields(media_info_) &&
+ 1195 !representation.AddLiveOnlyInfo(media_info_, segment_infos_,
+
+ 1197 LOG(ERROR) <<
"Failed to add Live info.";
+ 1198 return xml::scoped_xml_ptr<xmlNode>();
+
+
+
+
+ 1203 output_suppression_flags_ = 0;
+ 1204 return representation.PassScopedPtr();
+
+
+
+ 1208 output_suppression_flags_ |= flag;
+
+
+ 1211 bool Representation::HasRequiredMediaInfoFields() {
+ 1212 if (HasVODOnlyFields(media_info_) && HasLiveOnlyFields(media_info_)) {
+ 1213 LOG(ERROR) <<
"MediaInfo cannot have both VOD and Live fields.";
+
+
+
+ 1217 if (!media_info_.has_container_type()) {
+ 1218 LOG(ERROR) <<
"MediaInfo missing required field: container_type.";
+
+
+
+ 1222 if (HasVODOnlyFields(media_info_) && !media_info_.has_bandwidth()) {
+ 1223 LOG(ERROR) <<
"Missing 'bandwidth' field. MediaInfo requires bandwidth for "
+ 1224 "static profile for generating a valid MPD.";
+
+
+
+ 1228 VLOG_IF(3, HasLiveOnlyFields(media_info_) && !media_info_.has_bandwidth())
+ 1229 <<
"MediaInfo missing field 'bandwidth'. Using estimated from "
+
+
+
+
+
+ 1235 bool Representation::IsContiguous(uint64_t start_time,
+
+ 1237 uint64_t size)
const {
+ 1238 if (segment_infos_.empty())
+
+
+
+ 1242 const SegmentInfo& previous = segment_infos_.back();
+ 1243 const uint64_t previous_segment_end_time =
+ 1244 previous.start_time + previous.duration * (previous.repeat + 1);
+ 1245 if (previous_segment_end_time == start_time &&
+ 1246 segment_infos_.back().duration == duration) {
+
+
+
+
+ 1251 const uint64_t previous_segment_start_time =
+ 1252 previous.start_time + previous.duration * previous.repeat;
+ 1253 if (previous_segment_start_time >= start_time) {
+ 1254 LOG(ERROR) <<
"Segments should not be out of order segment. Adding segment "
+ 1255 "with start_time == "
+ 1256 << start_time <<
" but the previous segment starts at "
+ 1257 << previous.start_time <<
".";
+
+
+
+
+ 1262 const uint64_t kRoundingErrorGrace = 5;
+ 1263 if (previous_segment_end_time + kRoundingErrorGrace < start_time) {
+ 1264 LOG(WARNING) <<
"Found a gap of size "
+ 1265 << (start_time - previous_segment_end_time)
+ 1266 <<
" > kRoundingErrorGrace (" << kRoundingErrorGrace
+ 1267 <<
"). The new segment starts at " << start_time
+ 1268 <<
" but the previous segment ends at "
+ 1269 << previous_segment_end_time <<
".";
+
+
+
+
+ 1274 if (start_time < previous_segment_end_time - kRoundingErrorGrace) {
+
+ 1276 <<
"Segments should not be overlapping. The new segment starts at "
+ 1277 << start_time <<
" but the previous segment ends at "
+ 1278 << previous_segment_end_time <<
".";
+
+
+
+
+
+
+
+ 1286 void Representation::SlideWindow() {
+ 1287 DCHECK(!segment_infos_.empty());
+ 1288 if (mpd_options_.time_shift_buffer_depth <= 0.0)
+
+
+ 1291 const uint32_t time_scale = GetTimeScale(media_info_);
+ 1292 DCHECK_GT(time_scale, 0u);
+
+ 1294 uint64_t time_shift_buffer_depth =
+ 1295 static_cast<uint64_t
>(mpd_options_.time_shift_buffer_depth * time_scale);
+
+
+
+ 1299 const uint64_t current_play_time = LatestSegmentStartTime(segment_infos_);
+ 1300 if (current_play_time <= time_shift_buffer_depth)
+
+
+ 1303 const uint64_t timeshift_limit = current_play_time - time_shift_buffer_depth;
+
+
+
+ 1307 std::list<SegmentInfo>::iterator first = segment_infos_.begin();
+ 1308 std::list<SegmentInfo>::iterator last = first;
+ 1309 size_t num_segments_removed = 0;
+ 1310 for (; last != segment_infos_.end(); ++last) {
+ 1311 const uint64_t last_segment_end_time = LastSegmentEndTime(*last);
+ 1312 if (timeshift_limit < last_segment_end_time)
+
+ 1314 num_segments_removed += last->repeat + 1;
+
+ 1316 segment_infos_.erase(first, last);
+ 1317 start_number_ += num_segments_removed;
+
+
+ 1320 SegmentInfo* first_segment_info = &segment_infos_.front();
+ 1321 DCHECK_LE(timeshift_limit, LastSegmentEndTime(*first_segment_info));
+
+
+ 1324 const int repeat_index =
+ 1325 SearchTimedOutRepeatIndex(timeshift_limit, *first_segment_info);
+ 1326 CHECK_GE(repeat_index, 0);
+ 1327 if (repeat_index == 0)
+
+
+ 1330 first_segment_info->start_time = first_segment_info->start_time +
+ 1331 first_segment_info->duration * repeat_index;
+
+ 1333 first_segment_info->repeat = first_segment_info->repeat - repeat_index;
+ 1334 start_number_ += repeat_index;
+
+
+ 1337 std::string Representation::GetVideoMimeType()
const {
+ 1338 return GetMimeType(
"video", media_info_.container_type());
+
+
+ 1341 std::string Representation::GetAudioMimeType()
const {
+ 1342 return GetMimeType(
"audio", media_info_.container_type());
+
+
+ 1345 std::string Representation::GetTextMimeType()
const {
+ 1346 CHECK(media_info_.has_text_info());
+ 1347 if (media_info_.text_info().format() ==
"ttml") {
+ 1348 switch (media_info_.container_type()) {
+ 1349 case MediaInfo::CONTAINER_TEXT:
+ 1350 return "application/ttml+xml";
+ 1351 case MediaInfo::CONTAINER_MP4:
+ 1352 return "application/mp4";
+
+ 1354 LOG(ERROR) <<
"Failed to determine MIME type for TTML container: "
+ 1355 << media_info_.container_type();
+
+
+
+ 1359 if (media_info_.text_info().format() ==
"vtt") {
+ 1360 if (media_info_.container_type() == MediaInfo::CONTAINER_TEXT) {
+
+
+ 1363 LOG(ERROR) <<
"Failed to determine MIME type for VTT container: "
+ 1364 << media_info_.container_type();
+
+
+
+ 1368 LOG(ERROR) <<
"Cannot determine MIME type for format: "
+ 1369 << media_info_.text_info().format()
+ 1370 <<
" container: " << media_info_.container_type();
+
+
+
+ 1374 bool Representation::GetEarliestTimestamp(
double* timestamp_seconds) {
+ 1375 DCHECK(timestamp_seconds);
+
+ 1377 if (segment_infos_.empty())
+
+
+ 1380 *timestamp_seconds =
static_cast<double>(segment_infos_.begin()->start_time) /
+ 1381 GetTimeScale(media_info_);
+
+
+
+
+void OnSetFrameRateForRepresentation(uint32_t representation_id, uint32_t frame_duration, uint32_t timescale)
+virtual void AddNewSegment(uint64_t start_time, uint64_t duration, uint64_t size)
+
+bool WriteMpdToFile(media::File *output_file)
+AdaptationSet(uint32_t adaptation_set_id, const std::string &lang, const MpdOptions &mpd_options, MpdBuilder::MpdType mpd_type, base::AtomicSequenceNumber *representation_counter)
-virtual void SetSampleDuration(uint32_t sample_duration)
-virtual Representation * AddRepresentation(const MediaInfo &media_info)
+virtual void SetSampleDuration(uint32_t sample_duration)
+virtual Representation * AddRepresentation(const MediaInfo &media_info)
std::string LanguageToShortestForm(const std::string &language)
-virtual void AddContentProtectionElement(const ContentProtectionElement &element)
-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)
+Representation(const MediaInfo &media_info, const MpdOptions &mpd_options, uint32_t representation_id, scoped_ptr< RepresentationStateChangeListener > state_change_listener)
-virtual void AddRole(Role role)
-void AddBaseUrl(const std::string &base_url)
-virtual void UpdateContentProtectionPssh(const std::string &drm_uuid, const std::string &pssh)
-virtual void SetGroup(int group_number)
-xml::scoped_xml_ptr< xmlNode > GetXml()
-virtual bool ToString(std::string *output)
-virtual void ForceSetSegmentAlignment(bool segment_alignment)
-static void MakePathsRelativeToMpd(const std::string &mpd_path, MediaInfo *media_info)
-MpdBuilder(MpdType type, const MpdOptions &mpd_options)
-xml::scoped_xml_ptr< xmlNode > GetXml()
-virtual void AddContentProtectionElement(const ContentProtectionElement &element)
+virtual void AddRole(Role role)
+void AddBaseUrl(const std::string &base_url)
+virtual void UpdateContentProtectionPssh(const std::string &drm_uuid, const std::string &pssh)
+virtual void SetGroup(int group_number)
+xml::scoped_xml_ptr< xmlNode > GetXml()
+virtual bool ToString(std::string *output)
+virtual void ForceSetSegmentAlignment(bool segment_alignment)
+static void MakePathsRelativeToMpd(const std::string &mpd_path, MediaInfo *media_info)
+MpdBuilder(MpdType type, const MpdOptions &mpd_options)
+xml::scoped_xml_ptr< xmlNode > GetXml()
+virtual void AddContentProtectionElement(const ContentProtectionElement &element)
-virtual AdaptationSet * AddAdaptationSet(const std::string &lang)
-virtual int Group() const
+virtual AdaptationSet * AddAdaptationSet(const std::string &lang)
+virtual int Group() const
-void OnNewSegmentForRepresentation(uint32_t representation_id, uint64_t start_time, uint64_t duration)
-virtual void UpdateContentProtectionPssh(const std::string &drm_uuid, const std::string &pssh)
+void OnNewSegmentForRepresentation(uint32_t representation_id, uint64_t start_time, uint64_t duration)
+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 46c1469891..d63c8ffab3 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');
-static void MakePathsRelativeToMpd(const std::string &mpd_path, MediaInfo *media_info)
-
+static void MakePathsRelativeToMpd(const std::string &mpd_path, MediaInfo *media_info)
+
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 83a748764e..20406fd881 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 d3423dc463..3937c88004 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 3c671ed005..912c046806 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 876f03d252..45555790dc 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 2539ac1d19..5e01d4222b 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 1c6a3e457c..f37f26a2d6 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');
154 #endif // MEDIA_FORMATS_MP4_SEGMENTER_H_
-
-
-
+
+
+
-
+
-
+
-
+
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 64cd67137e..df9dd864e0 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
@@ -171,7 +171,7 @@ Additional Inherited Members
Implements shaka::media::mp4::Box.
-Definition at line 911 of file box_definitions.cc.
+Definition at line 912 of file box_definitions.cc.
@@ -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 6d15b477e8..c0b2a0e51c 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 ed43505c59..2517146c99 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 56c95a2eec..7eab2c9ca8 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 884126edbc..f4c634a83d 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 416cad1c2a..e4a3fe2b67 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 297152c65d..b2ffa6ca6b 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 31b3442998..c3734eeca2 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 72f8676103..fbbb93c3a9 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 7c47010e36..e4c216522f 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 80798ce905..206df63bad 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 39ad22e4e7..a453488f03 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 347db86811..886880eca7 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
@@ -165,7 +165,7 @@ Additional Inherited Members
Implements shaka::media::mp4::Box.
-Definition at line 1464 of file box_definitions.cc.
+Definition at line 1465 of file box_definitions.cc.
@@ -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 0fe55f16c7..5cb5c4539f 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 2270945ae0..783e69d191 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 47c9a80242..9f39c39e0c 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 631f81f71e..03640c2749 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 640c755f87..b9edcf8cd8 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 b9745dff31..e9f2972ed6 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 f4103a5d91..42eb06a92f 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 d4cfc6df74..57a973cca6 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 af4e56a91a..eabc86176b 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 64bd1425af..0c829d3e83 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 b6b762df58..cfccb13967 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 06fdfaa2b3..f32ab6be78 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 50e1062b8b..7cef4c7351 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 2fd32c60c8..796e13f245 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 b577721ab2..8e069d632d 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 30a28cc056..1a8c6354ca 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 fea8aec910..c47ac9e129 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 e3df162b7b..5bb1dfc230 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 99f7cb4718..d4b430a88c 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 f19e458df1..58073e7dc8 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 4a61cd4a34..25521d1fcc 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 842a040817..0a5a5d83ac 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 e6f40cbf85..d85fe5df06 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 cdfec04689..8726ec4e95 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 26829755a0..91e4ed7fdd 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 729c4fcd09..d35bd0a030 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
@@ -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 607c36be45..3273e44b3b 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 95f25ebfcb..4a6618e52a 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 46ff6024e0..4aa82eebb5 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 72f4efe3a2..0c04f21896 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 a7127a6f4b..9321e6f885 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 c40e624456..04031579de 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 05f952c027..855e7a6952 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 bf458e02ba..cb38f3e8b8 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 c10506727b..fea0cdb4c1 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 ddc209ee86..8611dd7fca 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 eb0fea3c85..09a1c8cbff 100644
--- a/docs/dd/dee/box__definitions_8cc_source.html
+++ b/docs/dd/dee/box__definitions_8cc_source.html
@@ -135,7 +135,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
- 49 bool IsIvSizeValid( size_t per_sample_iv_size) {
+ 49 bool IsIvSizeValid(uint8_t per_sample_iv_size) {
50 return per_sample_iv_size == 0 || per_sample_iv_size == 8 ||
51 per_sample_iv_size == 16;
@@ -340,7 +340,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
- 254 uint16_t subsample_count = subsamples.size();
+ 254 uint16_t subsample_count = static_cast<uint16_t >(subsamples.size());
255 RCHECK(buffer->ReadWriteUInt16(&subsample_count));
256 RCHECK(subsample_count > 0);
257 subsamples.resize(subsample_count);
@@ -378,7 +378,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
291 const uint32_t subsample_entry_size = sizeof(uint16_t) + sizeof(uint32_t);
- 292 const uint16_t subsample_count = subsamples.size();
+ 292 const uint16_t subsample_count = static_cast<uint16_t >(subsamples.size());
293 return initialization_vector.size() +
294 (subsample_count > 0 ? ( sizeof(subsample_count) +
295 subsample_entry_size * subsample_count)
@@ -420,7 +420,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
331 sample_encryption_entries.resize(sample_count);
332 for ( auto& sample_encryption_entry : sample_encryption_entries) {
333 RCHECK(sample_encryption_entry.ReadWrite(
- 334 iv_size, flags & kUseSubsampleEncryption, buffer));
+ 334 iv_size, (flags & kUseSubsampleEncryption) != 0, buffer) != 0);
@@ -445,8 +445,8 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
-
-
+
+
361 std::vector<SampleEncryptionEntry>* sample_encryption_entries) const {
362 DCHECK(IsIvSizeValid(iv_size));
@@ -458,7 +458,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
369 sample_encryption_entries->resize(sample_count);
370 for ( auto& sample_encryption_entry : *sample_encryption_entries) {
371 RCHECK(sample_encryption_entry.ParseFromBuffer(
- 372 iv_size, flags & kUseSubsampleEncryption, &reader));
+ 372 iv_size, (flags & kUseSubsampleEncryption) != 0, &reader) != 0);
@@ -528,2422 +528,2423 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
440 if (default_is_protected == 1) {
441 if (default_per_sample_iv_size == 0) {
- 442 uint8_t default_constant_iv_size = default_constant_iv.size();
- 443 RCHECK(buffer->ReadWriteUInt8(&default_constant_iv_size));
- 444 RCHECK(default_constant_iv_size == 8 || default_constant_iv_size == 16);
- 445 RCHECK(buffer->ReadWriteVector(&default_constant_iv,
- 446 default_constant_iv_size));
-
- 448 RCHECK(default_per_sample_iv_size == 8 ||
- 449 default_per_sample_iv_size == 16);
- 450 RCHECK(default_constant_iv.empty());
-
-
-
-
- 455 RCHECK(default_is_protected == 0);
- 456 RCHECK(default_per_sample_iv_size == 0);
- 457 RCHECK(default_constant_iv.empty());
-
-
-
-
- 462 uint32_t TrackEncryption::ComputeSizeInternal() {
- 463 return HeaderSize() + sizeof(uint32_t) + kCencKeyIdSize +
- 464 (default_constant_iv.empty() ? 0 : ( sizeof(uint8_t) +
- 465 default_constant_iv.size()));
-
-
- 468 SchemeInfo::SchemeInfo() {}
- 469 SchemeInfo::~SchemeInfo() {}
-
-
- 472 bool SchemeInfo::ReadWriteInternal( BoxBuffer* buffer) {
-
-
-
-
-
- 478 uint32_t SchemeInfo::ComputeSizeInternal() {
-
-
-
- 482 ProtectionSchemeInfo::ProtectionSchemeInfo() {}
- 483 ProtectionSchemeInfo::~ProtectionSchemeInfo() {}
-
-
- 486 bool ProtectionSchemeInfo::ReadWriteInternal( BoxBuffer* buffer) {
-
-
-
-
- 491 if (IsProtectionSchemeSupported(type.type)) {
-
-
- 494 DLOG(WARNING) << "Ignore unsupported protection scheme: "
- 495 << FourCCToString(type.type);
-
-
-
-
-
-
-
-
- 504 uint32_t ProtectionSchemeInfo::ComputeSizeInternal() {
-
- 506 if (format.format == FOURCC_NULL)
-
-
-
-
-
- 512 MovieHeader::MovieHeader()
-
- 514 modification_time(0),
-
-
-
-
-
- 520 MovieHeader::~MovieHeader() {}
-
-
- 523 bool MovieHeader::ReadWriteInternal( BoxBuffer* buffer) {
-
-
- 526 size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
-
-
- 529 buffer->ReadWriteUInt32(×cale) &&
-
-
- 532 std::vector<uint8_t> matrix(kUnityMatrix,
- 533 kUnityMatrix + arraysize(kUnityMatrix));
- 534 RCHECK(buffer->ReadWriteInt32(&rate) &&
- 535 buffer->ReadWriteInt16(&volume) &&
-
- 537 buffer->ReadWriteVector(&matrix, matrix.size()) &&
-
- 539 buffer->ReadWriteUInt32(&next_track_id));
-
-
-
- 543 uint32_t MovieHeader::ComputeSizeInternal() {
- 544 version = IsFitIn32Bits(creation_time, modification_time, duration) ? 0 : 1;
- 545 return HeaderSize() + sizeof(uint32_t) * (1 + version) * 3 +
- 546 sizeof(timescale) + sizeof(rate) + sizeof(volume) +
- 547 sizeof(next_track_id) + sizeof(kUnityMatrix) + 10 +
-
-
-
- 551 TrackHeader::TrackHeader()
-
- 553 modification_time(0),
-
-
-
-
-
-
-
- 561 flags = kTrackEnabled | kTrackInMovie;
-
- 563 TrackHeader::~TrackHeader() {}
-
-
- 566 bool TrackHeader::ReadWriteInternal( BoxBuffer* buffer) {
-
-
- 569 size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
-
-
- 572 buffer->ReadWriteUInt32(&track_id) &&
-
-
-
-
-
-
- 579 volume = (width != 0 && height != 0) ? 0 : 0x100;
-
- 581 std::vector<uint8_t> matrix(kUnityMatrix,
- 582 kUnityMatrix + arraysize(kUnityMatrix));
-
- 584 buffer->ReadWriteInt16(&layer) &&
- 585 buffer->ReadWriteInt16(&alternate_group) &&
- 586 buffer->ReadWriteInt16(&volume) &&
-
- 588 buffer->ReadWriteVector(&matrix, matrix.size()) &&
- 589 buffer->ReadWriteUInt32(&width) &&
- 590 buffer->ReadWriteUInt32(&height));
-
-
-
- 594 uint32_t TrackHeader::ComputeSizeInternal() {
- 595 version = IsFitIn32Bits(creation_time, modification_time, duration) ? 0 : 1;
-
- 597 sizeof(uint32_t) * (1 + version) * 3 + sizeof(layer) +
- 598 sizeof(alternate_group) + sizeof(volume) + sizeof(width) +
- 599 sizeof(height) + sizeof(kUnityMatrix) + 14;
-
-
- 602 SampleDescription::SampleDescription() : type(kInvalid) {}
- 603 SampleDescription::~SampleDescription() {}
-
-
- 606 bool SampleDescription::ReadWriteInternal( BoxBuffer* buffer) {
-
-
-
- 610 count = video_entries.size();
-
-
- 613 count = audio_entries.size();
-
-
- 616 count = text_entries.size();
-
-
- 619 NOTIMPLEMENTED() << "SampleDecryption type " << type
- 620 << " is not handled. Skipping.";
-
-
- 623 buffer->ReadWriteUInt32(&count));
-
-
- 626 BoxReader* reader = buffer-> reader();
-
- 628 video_entries.clear();
- 629 audio_entries.clear();
-
-
- 632 if (type == kVideo) {
- 633 RCHECK(reader->ReadAllChildren(&video_entries));
- 634 RCHECK(video_entries.size() == count);
- 635 } else if (type == kAudio) {
- 636 RCHECK(reader->ReadAllChildren(&audio_entries));
- 637 RCHECK(audio_entries.size() == count);
- 638 } else if (type == kText) {
- 639 RCHECK(reader->ReadAllChildren(&text_entries));
- 640 RCHECK(text_entries.size() == count);
-
-
- 643 DCHECK_LT(0u, count);
- 644 if (type == kVideo) {
- 645 for (uint32_t i = 0; i < count; ++i)
-
- 647 } else if (type == kAudio) {
- 648 for (uint32_t i = 0; i < count; ++i)
-
- 650 } else if (type == kText) {
- 651 for (uint32_t i = 0; i < count; ++i)
-
-
-
-
-
-
-
-
- 660 uint32_t SampleDescription::ComputeSizeInternal() {
- 661 uint32_t box_size = HeaderSize() + sizeof(uint32_t);
- 662 if (type == kVideo) {
- 663 for (uint32_t i = 0; i < video_entries.size(); ++i)
-
- 665 } else if (type == kAudio) {
- 666 for (uint32_t i = 0; i < audio_entries.size(); ++i)
-
- 668 } else if (type == kText) {
- 669 for (uint32_t i = 0; i < text_entries.size(); ++i)
-
-
-
-
-
- 675 DecodingTimeToSample::DecodingTimeToSample() {}
- 676 DecodingTimeToSample::~DecodingTimeToSample() {}
-
-
- 679 bool DecodingTimeToSample::ReadWriteInternal( BoxBuffer* buffer) {
- 680 uint32_t count = decoding_time.size();
-
- 682 buffer->ReadWriteUInt32(&count));
-
- 684 decoding_time.resize(count);
- 685 for (uint32_t i = 0; i < count; ++i) {
- 686 RCHECK(buffer->ReadWriteUInt32(&decoding_time[i].sample_count) &&
- 687 buffer->ReadWriteUInt32(&decoding_time[i].sample_delta));
-
-
-
-
- 692 uint32_t DecodingTimeToSample::ComputeSizeInternal() {
-
- 694 sizeof(DecodingTime) * decoding_time.size();
-
-
- 697 CompositionTimeToSample::CompositionTimeToSample() {}
- 698 CompositionTimeToSample::~CompositionTimeToSample() {}
-
-
- 701 bool CompositionTimeToSample::ReadWriteInternal( BoxBuffer* buffer) {
- 702 uint32_t count = composition_offset.size();
-
-
-
-
-
- 708 for (uint32_t i = 0; i < count; ++i) {
- 709 if (composition_offset[i].sample_offset < 0) {
-
-
-
-
-
-
-
- 717 buffer->ReadWriteUInt32(&count));
-
- 719 composition_offset.resize(count);
- 720 for (uint32_t i = 0; i < count; ++i) {
- 721 RCHECK(buffer->ReadWriteUInt32(&composition_offset[i].sample_count));
-
-
- 724 uint32_t sample_offset = composition_offset[i].sample_offset;
- 725 RCHECK(buffer->ReadWriteUInt32(&sample_offset));
- 726 composition_offset[i].sample_offset = sample_offset;
-
- 728 int32_t sample_offset = composition_offset[i].sample_offset;
- 729 RCHECK(buffer->ReadWriteInt32(&sample_offset));
- 730 composition_offset[i].sample_offset = sample_offset;
-
-
-
-
-
- 736 uint32_t CompositionTimeToSample::ComputeSizeInternal() {
-
- 738 if (composition_offset.empty())
-
-
-
-
- 743 const uint32_t kCompositionOffsetSize = sizeof(uint32_t) * 2;
-
- 745 kCompositionOffsetSize * composition_offset.size();
-
-
- 748 SampleToChunk::SampleToChunk() {}
- 749 SampleToChunk::~SampleToChunk() {}
-
-
- 752 bool SampleToChunk::ReadWriteInternal( BoxBuffer* buffer) {
- 753 uint32_t count = chunk_info.size();
-
- 755 buffer->ReadWriteUInt32(&count));
-
- 757 chunk_info.resize(count);
- 758 for (uint32_t i = 0; i < count; ++i) {
- 759 RCHECK(buffer->ReadWriteUInt32(&chunk_info[i].first_chunk) &&
- 760 buffer->ReadWriteUInt32(&chunk_info[i].samples_per_chunk) &&
- 761 buffer->ReadWriteUInt32(&chunk_info[i].sample_description_index));
-
- 763 RCHECK(i == 0 ? chunk_info[i].first_chunk == 1
- 764 : chunk_info[i].first_chunk > chunk_info[i - 1].first_chunk);
-
-
-
-
- 769 uint32_t SampleToChunk::ComputeSizeInternal() {
-
- 771 sizeof(ChunkInfo) * chunk_info.size();
-
-
- 774 SampleSize::SampleSize() : sample_size(0), sample_count(0) {}
- 775 SampleSize::~SampleSize() {}
-
-
- 778 bool SampleSize::ReadWriteInternal( BoxBuffer* buffer) {
-
- 780 buffer->ReadWriteUInt32(&sample_size) &&
- 781 buffer->ReadWriteUInt32(&sample_count));
-
- 783 if (sample_size == 0) {
-
- 785 sizes.resize(sample_count);
-
- 787 DCHECK(sample_count == sizes.size());
- 788 for (uint32_t i = 0; i < sample_count; ++i)
- 789 RCHECK(buffer->ReadWriteUInt32(&sizes[i]));
-
-
-
-
- 794 uint32_t SampleSize::ComputeSizeInternal() {
- 795 return HeaderSize() + sizeof(sample_size) + sizeof(sample_count) +
- 796 (sample_size == 0 ? sizeof(uint32_t) * sizes.size() : 0);
-
-
- 799 CompactSampleSize::CompactSampleSize() : field_size(0) {}
- 800 CompactSampleSize::~CompactSampleSize() {}
-
-
- 803 bool CompactSampleSize::ReadWriteInternal( BoxBuffer* buffer) {
- 804 uint32_t sample_count = sizes.size();
-
-
- 807 buffer->ReadWriteUInt8(&field_size) &&
- 808 buffer->ReadWriteUInt32(&sample_count));
-
-
- 811 sizes.resize(sample_count + (field_size == 4 ? 1 : 0), 0);
- 812 switch (field_size) {
-
- 814 for (uint32_t i = 0; i < sample_count; i += 2) {
-
-
- 817 RCHECK(buffer->ReadWriteUInt8(&size));
- 818 sizes[i] = size >> 4;
- 819 sizes[i + 1] = size & 0x0F;
-
- 821 DCHECK_LT(sizes[i], 16u);
- 822 DCHECK_LT(sizes[i + 1], 16u);
- 823 uint8_t size = (sizes[i] << 4) | sizes[i + 1];
- 824 RCHECK(buffer->ReadWriteUInt8(&size));
-
-
-
-
- 829 for (uint32_t i = 0; i < sample_count; ++i) {
- 830 uint8_t size = sizes[i];
- 831 RCHECK(buffer->ReadWriteUInt8(&size));
-
-
-
-
- 836 for (uint32_t i = 0; i < sample_count; ++i) {
- 837 uint16_t size = sizes[i];
- 838 RCHECK(buffer->ReadWriteUInt16(&size));
-
-
-
-
-
-
- 845 sizes.resize(sample_count);
-
-
-
- 849 uint32_t CompactSampleSize::ComputeSizeInternal() {
- 850 return HeaderSize() + sizeof(uint32_t) + sizeof(uint32_t) +
- 851 (field_size * sizes.size() + 7) / 8;
-
-
- 854 ChunkOffset::ChunkOffset() {}
- 855 ChunkOffset::~ChunkOffset() {}
-
-
- 858 bool ChunkOffset::ReadWriteInternal( BoxBuffer* buffer) {
- 859 uint32_t count = offsets.size();
-
- 861 buffer->ReadWriteUInt32(&count));
-
- 863 offsets.resize(count);
- 864 for (uint32_t i = 0; i < count; ++i)
-
-
-
-
- 869 uint32_t ChunkOffset::ComputeSizeInternal() {
- 870 return HeaderSize() + sizeof(uint32_t) + sizeof(uint32_t) * offsets.size();
-
-
- 873 ChunkLargeOffset::ChunkLargeOffset() {}
- 874 ChunkLargeOffset::~ChunkLargeOffset() {}
-
-
- 877 bool ChunkLargeOffset::ReadWriteInternal( BoxBuffer* buffer) {
- 878 uint32_t count = offsets.size();
-
-
-
- 882 if (count == 0 || IsFitIn32Bits(offsets[count - 1])) {
-
- 884 stco.offsets.swap(offsets);
-
-
- 887 stco.offsets.swap(offsets);
-
-
-
-
-
- 893 buffer->ReadWriteUInt32(&count));
-
- 895 offsets.resize(count);
- 896 for (uint32_t i = 0; i < count; ++i)
- 897 RCHECK(buffer->ReadWriteUInt64(&offsets[i]));
-
-
-
- 901 uint32_t ChunkLargeOffset::ComputeSizeInternal() {
- 902 uint32_t count = offsets.size();
- 903 int use_large_offset =
- 904 (count > 0 && !IsFitIn32Bits(offsets[count - 1])) ? 1 : 0;
-
- 906 sizeof(uint32_t) * (1 + use_large_offset) * offsets.size();
-
-
- 909 SyncSample::SyncSample() {}
- 910 SyncSample::~SyncSample() {}
-
-
- 913 bool SyncSample::ReadWriteInternal( BoxBuffer* buffer) {
- 914 uint32_t count = sample_number.size();
-
- 916 buffer->ReadWriteUInt32(&count));
-
- 918 sample_number.resize(count);
- 919 for (uint32_t i = 0; i < count; ++i)
- 920 RCHECK(buffer->ReadWriteUInt32(&sample_number[i]));
-
-
-
- 924 uint32_t SyncSample::ComputeSizeInternal() {
-
- 926 if (sample_number.empty())
-
-
- 929 sizeof(uint32_t) * sample_number.size();
-
-
- 932 CencSampleEncryptionInfoEntry::CencSampleEncryptionInfoEntry()
-
- 934 per_sample_iv_size(0),
-
- 936 skip_byte_block(0) {}
- 937 CencSampleEncryptionInfoEntry::~CencSampleEncryptionInfoEntry() {};
-
- 939 bool CencSampleEncryptionInfoEntry::ReadWrite(BoxBuffer* buffer) {
- 940 if (!buffer->Reading()) {
- 941 if (key_id.size() != kCencKeyIdSize) {
- 942 LOG(WARNING) << "CENC defines key id length of " << kCencKeyIdSize
- 943 << " bytes; got " << key_id.size()
- 944 << ". Resized accordingly.";
- 945 key_id.resize(kCencKeyIdSize);
-
- 947 RCHECK(crypt_byte_block < 16 && skip_byte_block < 16);
-
-
- 950 RCHECK(buffer->IgnoreBytes(1));
-
- 952 uint8_t pattern = crypt_byte_block << 4 | skip_byte_block;
- 953 RCHECK(buffer->ReadWriteUInt8(&pattern));
- 954 crypt_byte_block = pattern >> 4;
- 955 skip_byte_block = pattern & 0x0F;
-
- 957 RCHECK(buffer->ReadWriteUInt8(&is_protected) &&
- 958 buffer->ReadWriteUInt8(&per_sample_iv_size) &&
- 959 buffer->ReadWriteVector(&key_id, kCencKeyIdSize));
-
- 961 if (is_protected == 1) {
- 962 if (per_sample_iv_size == 0) {
- 963 uint8_t constant_iv_size = constant_iv.size();
- 964 RCHECK(buffer->ReadWriteUInt8(&constant_iv_size));
- 965 RCHECK(constant_iv_size == 8 || constant_iv_size == 16);
- 966 RCHECK(buffer->ReadWriteVector(&constant_iv, constant_iv_size));
-
- 968 RCHECK(per_sample_iv_size == 8 || per_sample_iv_size == 16);
- 969 DCHECK(constant_iv.empty());
-
-
-
-
- 974 RCHECK(is_protected == 0);
- 975 RCHECK(per_sample_iv_size == 0);
-
-
-
-
- 980 uint32_t CencSampleEncryptionInfoEntry::ComputeSize() const {
- 981 return sizeof(uint32_t) + kCencKeyIdSize +
- 982 (constant_iv.empty() ? 0 : ( sizeof(uint8_t) + constant_iv.size()));
-
-
- 985 AudioRollRecoveryEntry::AudioRollRecoveryEntry(): roll_distance(0) {}
- 986 AudioRollRecoveryEntry::~AudioRollRecoveryEntry() {}
-
- 988 bool AudioRollRecoveryEntry::ReadWrite(BoxBuffer* buffer) {
- 989 RCHECK(buffer->ReadWriteInt16(&roll_distance));
-
-
-
- 993 uint32_t AudioRollRecoveryEntry::ComputeSize() const {
- 994 return sizeof(roll_distance);
-
-
- 997 SampleGroupDescription::SampleGroupDescription() : grouping_type(0) {}
- 998 SampleGroupDescription::~SampleGroupDescription() {}
-
-
- 1001 bool SampleGroupDescription::ReadWriteInternal( BoxBuffer* buffer) {
-
- 1003 buffer->ReadWriteUInt32(&grouping_type));
-
- 1005 switch (grouping_type) {
-
- 1007 return ReadWriteEntries(buffer, &cenc_sample_encryption_info_entries);
-
- 1009 return ReadWriteEntries(buffer, &audio_roll_recovery_entries);
-
-
- 1012 DLOG(WARNING) << "Ignore unsupported sample group: "
- 1013 << FourCCToString(static_cast<FourCC>(grouping_type));
-
-
-
-
- 1018 template < typename T>
- 1019 bool SampleGroupDescription::ReadWriteEntries(BoxBuffer* buffer,
- 1020 std::vector<T>* entries) {
- 1021 uint32_t default_length = 0;
- 1022 if (!buffer->Reading()) {
- 1023 DCHECK(!entries->empty());
- 1024 default_length = (*entries)[0].ComputeSize();
- 1025 DCHECK_NE(default_length, 0u);
-
-
- 1028 RCHECK(buffer->ReadWriteUInt32(&default_length));
-
- 1030 NOTIMPLEMENTED() << "Unsupported SampleGroupDescriptionBox 'sgpd' version "
- 1031 << static_cast<int>(version);
-
-
-
- 1035 uint32_t count = entries->size();
- 1036 RCHECK(buffer->ReadWriteUInt32(&count));
-
- 1038 entries->resize(count);
-
- 1040 for (T& entry : *entries) {
-
- 1042 uint32_t description_length = default_length;
- 1043 if (buffer->Reading() && default_length == 0)
- 1044 RCHECK(buffer->ReadWriteUInt32(&description_length));
- 1045 RCHECK(entry.ReadWrite(buffer));
- 1046 RCHECK(entry.ComputeSize() == description_length);
-
- 1048 RCHECK(entry.ReadWrite(buffer));
-
-
-
-
-
- 1054 uint32_t SampleGroupDescription::ComputeSizeInternal() {
-
-
- 1057 size_t entries_size = 0;
- 1058 switch (grouping_type) {
-
- 1060 for ( const auto& entry : cenc_sample_encryption_info_entries)
- 1061 entries_size += entry.ComputeSize();
-
-
- 1064 for ( const auto& entry : audio_roll_recovery_entries)
- 1065 entries_size += entry.ComputeSize();
-
-
-
- 1069 if (entries_size == 0)
-
- 1071 return HeaderSize() + sizeof(grouping_type) +
- 1072 (version == 1 ? sizeof(uint32_t) : 0) + sizeof(uint32_t) +
-
-
-
- 1076 SampleToGroup::SampleToGroup() : grouping_type(0), grouping_type_parameter(0) {}
- 1077 SampleToGroup::~SampleToGroup() {}
-
-
- 1080 bool SampleToGroup::ReadWriteInternal( BoxBuffer* buffer) {
-
- 1082 buffer->ReadWriteUInt32(&grouping_type));
-
- 1084 RCHECK(buffer->ReadWriteUInt32(&grouping_type_parameter));
-
- 1086 if (grouping_type != FOURCC_seig && grouping_type != FOURCC_roll) {
-
- 1088 DLOG(WARNING) << "Ignore unsupported sample group: "
- 1089 << FourCCToString(static_cast<FourCC>(grouping_type));
-
-
-
- 1093 uint32_t count = entries.size();
- 1094 RCHECK(buffer->ReadWriteUInt32(&count));
- 1095 entries.resize(count);
- 1096 for (uint32_t i = 0; i < count; ++i) {
- 1097 RCHECK(buffer->ReadWriteUInt32(&entries[i].sample_count) &&
- 1098 buffer->ReadWriteUInt32(&entries[i].group_description_index));
-
-
-
-
- 1103 uint32_t SampleToGroup::ComputeSizeInternal() {
-
- 1105 if (entries.empty())
-
- 1107 return HeaderSize() + sizeof(grouping_type) +
- 1108 (version == 1 ? sizeof(grouping_type_parameter) : 0) +
- 1109 sizeof(uint32_t) + entries.size() * sizeof(entries[0]);
-
-
- 1112 SampleTable::SampleTable() {}
- 1113 SampleTable::~SampleTable() {}
-
-
- 1116 bool SampleTable::ReadWriteInternal( BoxBuffer* buffer) {
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1130 RCHECK(reader-> ReadChild(&sample_size));
-
- 1132 CompactSampleSize compact_sample_size;
- 1133 RCHECK(reader-> ReadChild(&compact_sample_size));
- 1134 sample_size.sample_size = 0;
- 1135 sample_size.sample_count = compact_sample_size.sizes.size();
- 1136 sample_size.sizes.swap(compact_sample_size.sizes);
-
-
-
- 1140 if (reader-> ChildExist(&chunk_large_offset)) {
- 1141 RCHECK(reader-> ReadChild(&chunk_large_offset));
-
- 1143 ChunkOffset chunk_offset;
- 1144 RCHECK(reader-> ReadChild(&chunk_offset));
- 1145 chunk_large_offset.offsets.swap(chunk_offset.offsets);
-
-
-
-
-
-
-
-
-
-
- 1156 for ( auto& sample_group_description : sample_group_descriptions)
-
- 1158 for ( auto& sample_to_group : sample_to_groups)
-
-
-
-
-
- 1164 uint32_t SampleTable::ComputeSizeInternal() {
-
-
-
-
-
-
- 1171 for ( auto& sample_group_description : sample_group_descriptions)
- 1172 box_size += sample_group_description.ComputeSize();
- 1173 for ( auto& sample_to_group : sample_to_groups)
- 1174 box_size += sample_to_group.ComputeSize();
-
-
-
- 1178 EditList::EditList() {}
- 1179 EditList::~EditList() {}
-
-
- 1182 bool EditList::ReadWriteInternal( BoxBuffer* buffer) {
- 1183 uint32_t count = edits.size();
-
- 1185 edits.resize(count);
-
- 1187 size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
- 1188 for (uint32_t i = 0; i < count; ++i) {
-
-
- 1191 buffer->ReadWriteInt64NBytes(&edits[i].media_time, num_bytes) &&
- 1192 buffer->ReadWriteInt16(&edits[i].media_rate_integer) &&
- 1193 buffer->ReadWriteInt16(&edits[i].media_rate_fraction));
-
-
-
-
- 1198 uint32_t EditList::ComputeSizeInternal() {
-
-
-
-
-
- 1204 for (uint32_t i = 0; i < edits.size(); ++i) {
- 1205 if (!IsFitIn32Bits(edits[i].segment_duration, edits[i].media_time)) {
-
-
-
-
-
- 1211 ( sizeof(uint32_t) * (1 + version) * 2 + sizeof(int16_t) * 2) *
-
-
-
-
-
-
-
- 1219 bool Edit::ReadWriteInternal( BoxBuffer* buffer) {
-
-
-
-
-
- 1225 uint32_t Edit::ComputeSizeInternal() {
-
- 1227 if (list.edits.empty())
-
-
-
-
- 1232 HandlerReference::HandlerReference() : handler_type(FOURCC_NULL) {}
- 1233 HandlerReference::~HandlerReference() {}
-
-
- 1236 bool HandlerReference::ReadWriteInternal( BoxBuffer* buffer) {
- 1237 std::vector<uint8_t> handler_name;
-
- 1239 switch (handler_type) {
-
- 1241 handler_name.assign(kVideoHandlerName,
- 1242 kVideoHandlerName + arraysize(kVideoHandlerName));
-
-
- 1245 handler_name.assign(kAudioHandlerName,
- 1246 kAudioHandlerName + arraysize(kAudioHandlerName));
-
-
- 1249 handler_name.assign(kTextHandlerName,
- 1250 kTextHandlerName + arraysize(kTextHandlerName));
-
-
-
-
-
-
-
-
-
-
- 1261 buffer->ReadWriteFourCC(&handler_type));
-
-
- 1264 buffer->ReadWriteVector(&handler_name, handler_name.size()));
-
-
-
-
- 1269 uint32_t HandlerReference::ComputeSizeInternal() {
- 1270 uint32_t box_size = HeaderSize() + kFourCCSize + 16;
- 1271 switch (handler_type) {
-
- 1273 box_size += sizeof(kVideoHandlerName);
-
-
- 1276 box_size += sizeof(kAudioHandlerName);
-
-
- 1279 box_size += sizeof(kTextHandlerName);
-
-
-
-
-
-
-
-
-
- 1289 bool Language::ReadWrite(BoxBuffer* buffer) {
- 1290 if (buffer->Reading()) {
-
-
- 1293 std::vector<uint8_t> temp;
- 1294 RCHECK(buffer->ReadWriteVector(&temp, 2));
-
- 1296 BitReader bit_reader(&temp[0], 2);
- 1297 bit_reader.SkipBits(1);
-
- 1299 for ( int i = 0; i < 3; ++i) {
- 1300 CHECK(bit_reader.ReadBits(5, &language[i]));
- 1301 language[i] += 0x60;
-
- 1303 code.assign(language, 3);
-
-
- 1306 const char kUndefinedLanguage[] = "und";
-
- 1308 code = kUndefinedLanguage;
- 1309 DCHECK_EQ(code.size(), 3u);
-
-
-
- 1313 for ( int i = 0; i < 3; ++i)
- 1314 lang |= (code[i] - 0x60) << ((2 - i) * 5);
- 1315 RCHECK(buffer->ReadWriteUInt16(&lang));
-
-
-
-
- 1320 uint32_t Language::ComputeSize() const {
-
-
-
-
- 1325 bool PrivFrame::ReadWrite(BoxBuffer* buffer) {
- 1326 FourCC fourcc = FOURCC_PRIV;
- 1327 RCHECK(buffer->ReadWriteFourCC(&fourcc));
- 1328 if (fourcc != FOURCC_PRIV) {
- 1329 VLOG(1) << "Skip unrecognized id3 frame during read: "
- 1330 << FourCCToString(fourcc);
-
-
-
- 1334 uint32_t frame_size = owner.size() + 1 + value.size();
-
-
-
- 1338 DCHECK_LT(frame_size, 0x7Fu);
-
- 1340 RCHECK(buffer->ReadWriteUInt32(&frame_size) &&
- 1341 buffer->ReadWriteUInt16(&flags));
-
- 1343 if (buffer->Reading()) {
-
- 1345 RCHECK(buffer->ReadWriteString(&str, frame_size));
-
- 1347 size_t pos = str.find( '\0');
- 1348 RCHECK(pos < str.size());
- 1349 owner = str.substr(0, pos);
- 1350 value = str.substr(pos + 1);
-
-
- 1353 RCHECK(buffer->ReadWriteString(&owner, owner.size()) &&
- 1354 buffer->ReadWriteUInt8(&byte) &&
- 1355 buffer->ReadWriteString(&value, value.size()));
-
-
-
-
- 1360 uint32_t PrivFrame::ComputeSize() const {
- 1361 if (owner.empty() && value.empty())
-
- 1363 const uint32_t kFourCCSize = 4;
- 1364 return kFourCCSize + sizeof(uint32_t) + sizeof(uint16_t) + owner.size() + 1 +
-
-
-
-
-
-
-
-
- 1373 bool ID3v2::ReadWriteInternal( BoxBuffer* buffer) {
-
- 1375 language.ReadWrite(buffer));
-
-
- 1378 std::string id3v2_identifier = kID3v2Identifier;
- 1379 uint16_t version = kID3v2Version;
-
-
-
-
-
- 1385 DCHECK_LT(data_size, 0x7Fu);
-
- 1387 RCHECK(buffer-> ReadWriteString(&id3v2_identifier, id3v2_identifier.size()) &&
- 1388 buffer->ReadWriteUInt16(&version) &&
- 1389 buffer->ReadWriteUInt8(&flags) &&
- 1390 buffer->ReadWriteUInt32(&data_size));
-
-
-
-
-
- 1396 uint32_t ID3v2::ComputeSizeInternal() {
-
-
- 1399 return private_frame_size == 0 ? 0 : HeaderSize() + language.ComputeSize() +
-
-
-
-
- 1404 Metadata::Metadata() {}
- 1405 Metadata::~Metadata() {}
-
-
-
-
-
- 1411 bool Metadata::ReadWriteInternal( BoxBuffer* buffer) {
-
-
-
-
-
-
-
- 1419 uint32_t Metadata::ComputeSizeInternal() {
-
-
- 1422 return id3v2_size == 0 ? 0
-
-
-
- 1426 CodecConfiguration::CodecConfiguration() : box_type(FOURCC_NULL) {}
- 1427 CodecConfiguration::~CodecConfiguration() {}
-
-
-
-
-
-
-
- 1435 bool CodecConfiguration::ReadWriteInternal( BoxBuffer* buffer) {
- 1436 DCHECK_NE(box_type, FOURCC_NULL);
-
-
-
-
- 1441 if (box_type == FOURCC_vpcC) {
- 1442 uint32_t version_flags = 0;
- 1443 RCHECK(buffer->ReadWriteUInt32(&version_flags));
- 1444 RCHECK(version_flags == 0);
-
-
-
- 1448 RCHECK(buffer->ReadWriteVector(&data, buffer-> BytesLeft()));
-
- 1450 RCHECK(buffer->ReadWriteVector(&data, data.size()));
-
-
-
-
- 1455 uint32_t CodecConfiguration::ComputeSizeInternal() {
-
-
- 1458 DCHECK_NE(box_type, FOURCC_NULL);
- 1459 return HeaderSize() + (box_type == FOURCC_vpcC ? 4 : 0) + data.size();
-
-
- 1462 PixelAspectRatio::PixelAspectRatio() : h_spacing(0), v_spacing(0) {}
- 1463 PixelAspectRatio::~PixelAspectRatio() {}
-
-
- 1466 bool PixelAspectRatio::ReadWriteInternal( BoxBuffer* buffer) {
-
- 1468 buffer->ReadWriteUInt32(&h_spacing) &&
- 1469 buffer->ReadWriteUInt32(&v_spacing));
-
-
-
- 1473 uint32_t PixelAspectRatio::ComputeSizeInternal() {
-
- 1475 if (h_spacing == 0 && v_spacing == 0)
-
-
- 1478 DCHECK(h_spacing != 0 && v_spacing != 0);
- 1479 return HeaderSize() + sizeof(h_spacing) + sizeof(v_spacing);
-
-
- 1482 VideoSampleEntry::VideoSampleEntry()
- 1483 : format(FOURCC_NULL), data_reference_index(1), width(0), height(0) {}
-
- 1485 VideoSampleEntry::~VideoSampleEntry() {}
-
- 1487 if (format == FOURCC_NULL) {
- 1488 LOG(ERROR) << "VideoSampleEntry should be parsed according to the "
- 1489 << "handler type recovered in its Media ancestor.";
-
-
-
-
- 1494 bool VideoSampleEntry::ReadWriteInternal( BoxBuffer* buffer) {
- 1495 std::vector<uint8_t> compressor_name;
-
- 1497 DCHECK(buffer-> reader());
- 1498 format = buffer-> reader()->type();
-
-
-
- 1502 const FourCC actual_format = GetActualFormat();
- 1503 switch (actual_format) {
-
- 1505 compressor_name.assign(
-
- 1507 kAvcCompressorName + arraysize(kAvcCompressorName));
-
-
-
- 1511 compressor_name.assign(
- 1512 kHevcCompressorName,
- 1513 kHevcCompressorName + arraysize(kHevcCompressorName));
-
-
-
-
- 1518 compressor_name.assign(
-
- 1520 kVpcCompressorName + arraysize(kVpcCompressorName));
-
-
- 1523 LOG(ERROR) << FourCCToString(actual_format) << " is not supported.";
-
-
- 1526 compressor_name.resize(kCompressorNameSize);
-
-
- 1529 uint32_t video_resolution = kVideoResolution;
- 1530 uint16_t video_frame_count = kVideoFrameCount;
- 1531 uint16_t video_depth = kVideoDepth;
- 1532 int16_t predefined = -1;
-
- 1534 buffer->ReadWriteUInt16(&data_reference_index) &&
-
- 1536 buffer->ReadWriteUInt16(&width) &&
- 1537 buffer->ReadWriteUInt16(&height) &&
- 1538 buffer->ReadWriteUInt32(&video_resolution) &&
+ 442 uint8_t default_constant_iv_size =
+ 443 static_cast<uint8_t >(default_constant_iv.size());
+ 444 RCHECK(buffer->ReadWriteUInt8(&default_constant_iv_size));
+ 445 RCHECK(default_constant_iv_size == 8 || default_constant_iv_size == 16);
+ 446 RCHECK(buffer->ReadWriteVector(&default_constant_iv,
+ 447 default_constant_iv_size));
+
+ 449 RCHECK(default_per_sample_iv_size == 8 ||
+ 450 default_per_sample_iv_size == 16);
+ 451 RCHECK(default_constant_iv.empty());
+
+
+
+
+ 456 RCHECK(default_is_protected == 0);
+ 457 RCHECK(default_per_sample_iv_size == 0);
+ 458 RCHECK(default_constant_iv.empty());
+
+
+
+
+ 463 uint32_t TrackEncryption::ComputeSizeInternal() {
+ 464 return HeaderSize() + sizeof(uint32_t) + kCencKeyIdSize +
+ 465 (default_constant_iv.empty() ? 0 : ( sizeof(uint8_t) +
+ 466 default_constant_iv.size()));
+
+
+ 469 SchemeInfo::SchemeInfo() {}
+ 470 SchemeInfo::~SchemeInfo() {}
+
+
+ 473 bool SchemeInfo::ReadWriteInternal( BoxBuffer* buffer) {
+
+
+
+
+
+ 479 uint32_t SchemeInfo::ComputeSizeInternal() {
+
+
+
+ 483 ProtectionSchemeInfo::ProtectionSchemeInfo() {}
+ 484 ProtectionSchemeInfo::~ProtectionSchemeInfo() {}
+
+
+ 487 bool ProtectionSchemeInfo::ReadWriteInternal( BoxBuffer* buffer) {
+
+
+
+
+ 492 if (IsProtectionSchemeSupported(type.type)) {
+
+
+ 495 DLOG(WARNING) << "Ignore unsupported protection scheme: "
+ 496 << FourCCToString(type.type);
+
+
+
+
+
+
+
+
+ 505 uint32_t ProtectionSchemeInfo::ComputeSizeInternal() {
+
+ 507 if (format.format == FOURCC_NULL)
+
+
+
+
+
+ 513 MovieHeader::MovieHeader()
+
+ 515 modification_time(0),
+
+
+
+
+
+ 521 MovieHeader::~MovieHeader() {}
+
+
+ 524 bool MovieHeader::ReadWriteInternal( BoxBuffer* buffer) {
+
+
+ 527 size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
+
+
+ 530 buffer->ReadWriteUInt32(×cale) &&
+
+
+ 533 std::vector<uint8_t> matrix(kUnityMatrix,
+ 534 kUnityMatrix + arraysize(kUnityMatrix));
+ 535 RCHECK(buffer->ReadWriteInt32(&rate) &&
+ 536 buffer->ReadWriteInt16(&volume) &&
+
+ 538 buffer->ReadWriteVector(&matrix, matrix.size()) &&
+
+ 540 buffer->ReadWriteUInt32(&next_track_id));
+
+
+
+ 544 uint32_t MovieHeader::ComputeSizeInternal() {
+ 545 version = IsFitIn32Bits(creation_time, modification_time, duration) ? 0 : 1;
+ 546 return HeaderSize() + sizeof(uint32_t) * (1 + version) * 3 +
+ 547 sizeof(timescale) + sizeof(rate) + sizeof(volume) +
+ 548 sizeof(next_track_id) + sizeof(kUnityMatrix) + 10 +
+
+
+
+ 552 TrackHeader::TrackHeader()
+
+ 554 modification_time(0),
+
+
+
+
+
+
+
+ 562 flags = kTrackEnabled | kTrackInMovie;
+
+ 564 TrackHeader::~TrackHeader() {}
+
+
+ 567 bool TrackHeader::ReadWriteInternal( BoxBuffer* buffer) {
+
+
+ 570 size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
+
+
+ 573 buffer->ReadWriteUInt32(&track_id) &&
+
+
+
+
+
+
+ 580 volume = (width != 0 && height != 0) ? 0 : 0x100;
+
+ 582 std::vector<uint8_t> matrix(kUnityMatrix,
+ 583 kUnityMatrix + arraysize(kUnityMatrix));
+
+ 585 buffer->ReadWriteInt16(&layer) &&
+ 586 buffer->ReadWriteInt16(&alternate_group) &&
+ 587 buffer->ReadWriteInt16(&volume) &&
+
+ 589 buffer->ReadWriteVector(&matrix, matrix.size()) &&
+ 590 buffer->ReadWriteUInt32(&width) &&
+ 591 buffer->ReadWriteUInt32(&height));
+
+
+
+ 595 uint32_t TrackHeader::ComputeSizeInternal() {
+ 596 version = IsFitIn32Bits(creation_time, modification_time, duration) ? 0 : 1;
+
+ 598 sizeof(uint32_t) * (1 + version) * 3 + sizeof(layer) +
+ 599 sizeof(alternate_group) + sizeof(volume) + sizeof(width) +
+ 600 sizeof(height) + sizeof(kUnityMatrix) + 14;
+
+
+ 603 SampleDescription::SampleDescription() : type(kInvalid) {}
+ 604 SampleDescription::~SampleDescription() {}
+
+
+ 607 bool SampleDescription::ReadWriteInternal( BoxBuffer* buffer) {
+
+
+
+ 611 count = video_entries.size();
+
+
+ 614 count = audio_entries.size();
+
+
+ 617 count = text_entries.size();
+
+
+ 620 NOTIMPLEMENTED() << "SampleDecryption type " << type
+ 621 << " is not handled. Skipping.";
+
+
+ 624 buffer->ReadWriteUInt32(&count));
+
+
+ 627 BoxReader* reader = buffer-> reader();
+
+ 629 video_entries.clear();
+ 630 audio_entries.clear();
+
+
+ 633 if (type == kVideo) {
+ 634 RCHECK(reader->ReadAllChildren(&video_entries));
+ 635 RCHECK(video_entries.size() == count);
+ 636 } else if (type == kAudio) {
+ 637 RCHECK(reader->ReadAllChildren(&audio_entries));
+ 638 RCHECK(audio_entries.size() == count);
+ 639 } else if (type == kText) {
+ 640 RCHECK(reader->ReadAllChildren(&text_entries));
+ 641 RCHECK(text_entries.size() == count);
+
+
+ 644 DCHECK_LT(0u, count);
+ 645 if (type == kVideo) {
+ 646 for (uint32_t i = 0; i < count; ++i)
+
+ 648 } else if (type == kAudio) {
+ 649 for (uint32_t i = 0; i < count; ++i)
+
+ 651 } else if (type == kText) {
+ 652 for (uint32_t i = 0; i < count; ++i)
+
+
+
+
+
+
+
+
+ 661 uint32_t SampleDescription::ComputeSizeInternal() {
+ 662 uint32_t box_size = HeaderSize() + sizeof(uint32_t);
+ 663 if (type == kVideo) {
+ 664 for (uint32_t i = 0; i < video_entries.size(); ++i)
+
+ 666 } else if (type == kAudio) {
+ 667 for (uint32_t i = 0; i < audio_entries.size(); ++i)
+
+ 669 } else if (type == kText) {
+ 670 for (uint32_t i = 0; i < text_entries.size(); ++i)
+
+
+
+
+
+ 676 DecodingTimeToSample::DecodingTimeToSample() {}
+ 677 DecodingTimeToSample::~DecodingTimeToSample() {}
+
+
+ 680 bool DecodingTimeToSample::ReadWriteInternal( BoxBuffer* buffer) {
+ 681 uint32_t count = decoding_time.size();
+
+ 683 buffer->ReadWriteUInt32(&count));
+
+ 685 decoding_time.resize(count);
+ 686 for (uint32_t i = 0; i < count; ++i) {
+ 687 RCHECK(buffer->ReadWriteUInt32(&decoding_time[i].sample_count) &&
+ 688 buffer->ReadWriteUInt32(&decoding_time[i].sample_delta));
+
+
+
+
+ 693 uint32_t DecodingTimeToSample::ComputeSizeInternal() {
+
+ 695 sizeof(DecodingTime) * decoding_time.size();
+
+
+ 698 CompositionTimeToSample::CompositionTimeToSample() {}
+ 699 CompositionTimeToSample::~CompositionTimeToSample() {}
+
+
+ 702 bool CompositionTimeToSample::ReadWriteInternal( BoxBuffer* buffer) {
+ 703 uint32_t count = composition_offset.size();
+
+
+
+
+
+ 709 for (uint32_t i = 0; i < count; ++i) {
+ 710 if (composition_offset[i].sample_offset < 0) {
+
+
+
+
+
+
+
+ 718 buffer->ReadWriteUInt32(&count));
+
+ 720 composition_offset.resize(count);
+ 721 for (uint32_t i = 0; i < count; ++i) {
+ 722 RCHECK(buffer->ReadWriteUInt32(&composition_offset[i].sample_count));
+
+
+ 725 uint32_t sample_offset = composition_offset[i].sample_offset;
+ 726 RCHECK(buffer->ReadWriteUInt32(&sample_offset));
+ 727 composition_offset[i].sample_offset = sample_offset;
+
+ 729 int32_t sample_offset = composition_offset[i].sample_offset;
+ 730 RCHECK(buffer->ReadWriteInt32(&sample_offset));
+ 731 composition_offset[i].sample_offset = sample_offset;
+
+
+
+
+
+ 737 uint32_t CompositionTimeToSample::ComputeSizeInternal() {
+
+ 739 if (composition_offset.empty())
+
+
+
+
+ 744 const uint32_t kCompositionOffsetSize = sizeof(uint32_t) * 2;
+
+ 746 kCompositionOffsetSize * composition_offset.size();
+
+
+ 749 SampleToChunk::SampleToChunk() {}
+ 750 SampleToChunk::~SampleToChunk() {}
+
+
+ 753 bool SampleToChunk::ReadWriteInternal( BoxBuffer* buffer) {
+ 754 uint32_t count = chunk_info.size();
+
+ 756 buffer->ReadWriteUInt32(&count));
+
+ 758 chunk_info.resize(count);
+ 759 for (uint32_t i = 0; i < count; ++i) {
+ 760 RCHECK(buffer->ReadWriteUInt32(&chunk_info[i].first_chunk) &&
+ 761 buffer->ReadWriteUInt32(&chunk_info[i].samples_per_chunk) &&
+ 762 buffer->ReadWriteUInt32(&chunk_info[i].sample_description_index));
+
+ 764 RCHECK(i == 0 ? chunk_info[i].first_chunk == 1
+ 765 : chunk_info[i].first_chunk > chunk_info[i - 1].first_chunk);
+
+
+
+
+ 770 uint32_t SampleToChunk::ComputeSizeInternal() {
+
+ 772 sizeof(ChunkInfo) * chunk_info.size();
+
+
+ 775 SampleSize::SampleSize() : sample_size(0), sample_count(0) {}
+ 776 SampleSize::~SampleSize() {}
+
+
+ 779 bool SampleSize::ReadWriteInternal( BoxBuffer* buffer) {
+
+ 781 buffer->ReadWriteUInt32(&sample_size) &&
+ 782 buffer->ReadWriteUInt32(&sample_count));
+
+ 784 if (sample_size == 0) {
+
+ 786 sizes.resize(sample_count);
+
+ 788 DCHECK(sample_count == sizes.size());
+ 789 for (uint32_t i = 0; i < sample_count; ++i)
+ 790 RCHECK(buffer->ReadWriteUInt32(&sizes[i]));
+
+
+
+
+ 795 uint32_t SampleSize::ComputeSizeInternal() {
+ 796 return HeaderSize() + sizeof(sample_size) + sizeof(sample_count) +
+ 797 (sample_size == 0 ? sizeof(uint32_t) * sizes.size() : 0);
+
+
+ 800 CompactSampleSize::CompactSampleSize() : field_size(0) {}
+ 801 CompactSampleSize::~CompactSampleSize() {}
+
+
+ 804 bool CompactSampleSize::ReadWriteInternal( BoxBuffer* buffer) {
+ 805 uint32_t sample_count = sizes.size();
+
+
+ 808 buffer->ReadWriteUInt8(&field_size) &&
+ 809 buffer->ReadWriteUInt32(&sample_count));
+
+
+ 812 sizes.resize(sample_count + (field_size == 4 ? 1 : 0), 0);
+ 813 switch (field_size) {
+
+ 815 for (uint32_t i = 0; i < sample_count; i += 2) {
+
+
+ 818 RCHECK(buffer->ReadWriteUInt8(&size));
+ 819 sizes[i] = size >> 4;
+ 820 sizes[i + 1] = size & 0x0F;
+
+ 822 DCHECK_LT(sizes[i], 16u);
+ 823 DCHECK_LT(sizes[i + 1], 16u);
+ 824 uint8_t size = (sizes[i] << 4) | sizes[i + 1];
+ 825 RCHECK(buffer->ReadWriteUInt8(&size));
+
+
+
+
+ 830 for (uint32_t i = 0; i < sample_count; ++i) {
+ 831 uint8_t size = sizes[i];
+ 832 RCHECK(buffer->ReadWriteUInt8(&size));
+
+
+
+
+ 837 for (uint32_t i = 0; i < sample_count; ++i) {
+ 838 uint16_t size = sizes[i];
+ 839 RCHECK(buffer->ReadWriteUInt16(&size));
+
+
+
+
+
+
+ 846 sizes.resize(sample_count);
+
+
+
+ 850 uint32_t CompactSampleSize::ComputeSizeInternal() {
+ 851 return HeaderSize() + sizeof(uint32_t) + sizeof(uint32_t) +
+ 852 (field_size * sizes.size() + 7) / 8;
+
+
+ 855 ChunkOffset::ChunkOffset() {}
+ 856 ChunkOffset::~ChunkOffset() {}
+
+
+ 859 bool ChunkOffset::ReadWriteInternal( BoxBuffer* buffer) {
+ 860 uint32_t count = offsets.size();
+
+ 862 buffer->ReadWriteUInt32(&count));
+
+ 864 offsets.resize(count);
+ 865 for (uint32_t i = 0; i < count; ++i)
+
+
+
+
+ 870 uint32_t ChunkOffset::ComputeSizeInternal() {
+ 871 return HeaderSize() + sizeof(uint32_t) + sizeof(uint32_t) * offsets.size();
+
+
+ 874 ChunkLargeOffset::ChunkLargeOffset() {}
+ 875 ChunkLargeOffset::~ChunkLargeOffset() {}
+
+
+ 878 bool ChunkLargeOffset::ReadWriteInternal( BoxBuffer* buffer) {
+ 879 uint32_t count = offsets.size();
+
+
+
+ 883 if (count == 0 || IsFitIn32Bits(offsets[count - 1])) {
+
+ 885 stco.offsets.swap(offsets);
+
+
+ 888 stco.offsets.swap(offsets);
+
+
+
+
+
+ 894 buffer->ReadWriteUInt32(&count));
+
+ 896 offsets.resize(count);
+ 897 for (uint32_t i = 0; i < count; ++i)
+ 898 RCHECK(buffer->ReadWriteUInt64(&offsets[i]));
+
+
+
+ 902 uint32_t ChunkLargeOffset::ComputeSizeInternal() {
+ 903 uint32_t count = offsets.size();
+ 904 int use_large_offset =
+ 905 (count > 0 && !IsFitIn32Bits(offsets[count - 1])) ? 1 : 0;
+
+ 907 sizeof(uint32_t) * (1 + use_large_offset) * offsets.size();
+
+
+ 910 SyncSample::SyncSample() {}
+ 911 SyncSample::~SyncSample() {}
+
+
+ 914 bool SyncSample::ReadWriteInternal( BoxBuffer* buffer) {
+ 915 uint32_t count = sample_number.size();
+
+ 917 buffer->ReadWriteUInt32(&count));
+
+ 919 sample_number.resize(count);
+ 920 for (uint32_t i = 0; i < count; ++i)
+ 921 RCHECK(buffer->ReadWriteUInt32(&sample_number[i]));
+
+
+
+ 925 uint32_t SyncSample::ComputeSizeInternal() {
+
+ 927 if (sample_number.empty())
+
+
+ 930 sizeof(uint32_t) * sample_number.size();
+
+
+ 933 CencSampleEncryptionInfoEntry::CencSampleEncryptionInfoEntry()
+
+ 935 per_sample_iv_size(0),
+
+ 937 skip_byte_block(0) {}
+ 938 CencSampleEncryptionInfoEntry::~CencSampleEncryptionInfoEntry() {};
+
+ 940 bool CencSampleEncryptionInfoEntry::ReadWrite(BoxBuffer* buffer) {
+ 941 if (!buffer->Reading()) {
+ 942 if (key_id.size() != kCencKeyIdSize) {
+ 943 LOG(WARNING) << "CENC defines key id length of " << kCencKeyIdSize
+ 944 << " bytes; got " << key_id.size()
+ 945 << ". Resized accordingly.";
+ 946 key_id.resize(kCencKeyIdSize);
+
+ 948 RCHECK(crypt_byte_block < 16 && skip_byte_block < 16);
+
+
+ 951 RCHECK(buffer->IgnoreBytes(1));
+
+ 953 uint8_t pattern = crypt_byte_block << 4 | skip_byte_block;
+ 954 RCHECK(buffer->ReadWriteUInt8(&pattern));
+ 955 crypt_byte_block = pattern >> 4;
+ 956 skip_byte_block = pattern & 0x0F;
+
+ 958 RCHECK(buffer->ReadWriteUInt8(&is_protected) &&
+ 959 buffer->ReadWriteUInt8(&per_sample_iv_size) &&
+ 960 buffer->ReadWriteVector(&key_id, kCencKeyIdSize));
+
+ 962 if (is_protected == 1) {
+ 963 if (per_sample_iv_size == 0) {
+ 964 uint8_t constant_iv_size = static_cast<uint8_t >(constant_iv.size());
+ 965 RCHECK(buffer->ReadWriteUInt8(&constant_iv_size));
+ 966 RCHECK(constant_iv_size == 8 || constant_iv_size == 16);
+ 967 RCHECK(buffer->ReadWriteVector(&constant_iv, constant_iv_size));
+
+ 969 RCHECK(per_sample_iv_size == 8 || per_sample_iv_size == 16);
+ 970 DCHECK(constant_iv.empty());
+
+
+
+
+ 975 RCHECK(is_protected == 0);
+ 976 RCHECK(per_sample_iv_size == 0);
+
+
+
+
+ 981 uint32_t CencSampleEncryptionInfoEntry::ComputeSize() const {
+ 982 return sizeof(uint32_t) + kCencKeyIdSize +
+ 983 (constant_iv.empty() ? 0 : ( sizeof(uint8_t) + constant_iv.size()));
+
+
+ 986 AudioRollRecoveryEntry::AudioRollRecoveryEntry(): roll_distance(0) {}
+ 987 AudioRollRecoveryEntry::~AudioRollRecoveryEntry() {}
+
+ 989 bool AudioRollRecoveryEntry::ReadWrite(BoxBuffer* buffer) {
+ 990 RCHECK(buffer->ReadWriteInt16(&roll_distance));
+
+
+
+ 994 uint32_t AudioRollRecoveryEntry::ComputeSize() const {
+ 995 return sizeof(roll_distance);
+
+
+ 998 SampleGroupDescription::SampleGroupDescription() : grouping_type(0) {}
+ 999 SampleGroupDescription::~SampleGroupDescription() {}
+
+
+ 1002 bool SampleGroupDescription::ReadWriteInternal( BoxBuffer* buffer) {
+
+ 1004 buffer->ReadWriteUInt32(&grouping_type));
+
+ 1006 switch (grouping_type) {
+
+ 1008 return ReadWriteEntries(buffer, &cenc_sample_encryption_info_entries);
+
+ 1010 return ReadWriteEntries(buffer, &audio_roll_recovery_entries);
+
+
+ 1013 DLOG(WARNING) << "Ignore unsupported sample group: "
+ 1014 << FourCCToString(static_cast<FourCC>(grouping_type));
+
+
+
+
+ 1019 template < typename T>
+ 1020 bool SampleGroupDescription::ReadWriteEntries(BoxBuffer* buffer,
+ 1021 std::vector<T>* entries) {
+ 1022 uint32_t default_length = 0;
+ 1023 if (!buffer->Reading()) {
+ 1024 DCHECK(!entries->empty());
+ 1025 default_length = (*entries)[0].ComputeSize();
+ 1026 DCHECK_NE(default_length, 0u);
+
+
+ 1029 RCHECK(buffer->ReadWriteUInt32(&default_length));
+
+ 1031 NOTIMPLEMENTED() << "Unsupported SampleGroupDescriptionBox 'sgpd' version "
+ 1032 << static_cast<int>(version);
+
+
+
+ 1036 uint32_t count = entries->size();
+ 1037 RCHECK(buffer->ReadWriteUInt32(&count));
+
+ 1039 entries->resize(count);
+
+ 1041 for (T& entry : *entries) {
+
+ 1043 uint32_t description_length = default_length;
+ 1044 if (buffer->Reading() && default_length == 0)
+ 1045 RCHECK(buffer->ReadWriteUInt32(&description_length));
+ 1046 RCHECK(entry.ReadWrite(buffer));
+ 1047 RCHECK(entry.ComputeSize() == description_length);
+
+ 1049 RCHECK(entry.ReadWrite(buffer));
+
+
+
+
+
+ 1055 uint32_t SampleGroupDescription::ComputeSizeInternal() {
+
+
+ 1058 size_t entries_size = 0;
+ 1059 switch (grouping_type) {
+
+ 1061 for ( const auto& entry : cenc_sample_encryption_info_entries)
+ 1062 entries_size += entry.ComputeSize();
+
+
+ 1065 for ( const auto& entry : audio_roll_recovery_entries)
+ 1066 entries_size += entry.ComputeSize();
+
+
+
+ 1070 if (entries_size == 0)
+
+ 1072 return HeaderSize() + sizeof(grouping_type) +
+ 1073 (version == 1 ? sizeof(uint32_t) : 0) + sizeof(uint32_t) +
+
+
+
+ 1077 SampleToGroup::SampleToGroup() : grouping_type(0), grouping_type_parameter(0) {}
+ 1078 SampleToGroup::~SampleToGroup() {}
+
+
+ 1081 bool SampleToGroup::ReadWriteInternal( BoxBuffer* buffer) {
+
+ 1083 buffer->ReadWriteUInt32(&grouping_type));
+
+ 1085 RCHECK(buffer->ReadWriteUInt32(&grouping_type_parameter));
+
+ 1087 if (grouping_type != FOURCC_seig && grouping_type != FOURCC_roll) {
+
+ 1089 DLOG(WARNING) << "Ignore unsupported sample group: "
+ 1090 << FourCCToString(static_cast<FourCC>(grouping_type));
+
+
+
+ 1094 uint32_t count = entries.size();
+ 1095 RCHECK(buffer->ReadWriteUInt32(&count));
+ 1096 entries.resize(count);
+ 1097 for (uint32_t i = 0; i < count; ++i) {
+ 1098 RCHECK(buffer->ReadWriteUInt32(&entries[i].sample_count) &&
+ 1099 buffer->ReadWriteUInt32(&entries[i].group_description_index));
+
+
+
+
+ 1104 uint32_t SampleToGroup::ComputeSizeInternal() {
+
+ 1106 if (entries.empty())
+
+ 1108 return HeaderSize() + sizeof(grouping_type) +
+ 1109 (version == 1 ? sizeof(grouping_type_parameter) : 0) +
+ 1110 sizeof(uint32_t) + entries.size() * sizeof(entries[0]);
+
+
+ 1113 SampleTable::SampleTable() {}
+ 1114 SampleTable::~SampleTable() {}
+
+
+ 1117 bool SampleTable::ReadWriteInternal( BoxBuffer* buffer) {
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1131 RCHECK(reader-> ReadChild(&sample_size));
+
+ 1133 CompactSampleSize compact_sample_size;
+ 1134 RCHECK(reader-> ReadChild(&compact_sample_size));
+ 1135 sample_size.sample_size = 0;
+ 1136 sample_size.sample_count = compact_sample_size.sizes.size();
+ 1137 sample_size.sizes.swap(compact_sample_size.sizes);
+
+
+
+ 1141 if (reader-> ChildExist(&chunk_large_offset)) {
+ 1142 RCHECK(reader-> ReadChild(&chunk_large_offset));
+
+ 1144 ChunkOffset chunk_offset;
+ 1145 RCHECK(reader-> ReadChild(&chunk_offset));
+ 1146 chunk_large_offset.offsets.swap(chunk_offset.offsets);
+
+
+
+
+
+
+
+
+
+
+ 1157 for ( auto& sample_group_description : sample_group_descriptions)
+
+ 1159 for ( auto& sample_to_group : sample_to_groups)
+
+
+
+
+
+ 1165 uint32_t SampleTable::ComputeSizeInternal() {
+
+
+
+
+
+
+ 1172 for ( auto& sample_group_description : sample_group_descriptions)
+ 1173 box_size += sample_group_description.ComputeSize();
+ 1174 for ( auto& sample_to_group : sample_to_groups)
+ 1175 box_size += sample_to_group.ComputeSize();
+
+
+
+ 1179 EditList::EditList() {}
+ 1180 EditList::~EditList() {}
+
+
+ 1183 bool EditList::ReadWriteInternal( BoxBuffer* buffer) {
+ 1184 uint32_t count = edits.size();
+
+ 1186 edits.resize(count);
+
+ 1188 size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
+ 1189 for (uint32_t i = 0; i < count; ++i) {
+
+
+ 1192 buffer->ReadWriteInt64NBytes(&edits[i].media_time, num_bytes) &&
+ 1193 buffer->ReadWriteInt16(&edits[i].media_rate_integer) &&
+ 1194 buffer->ReadWriteInt16(&edits[i].media_rate_fraction));
+
+
+
+
+ 1199 uint32_t EditList::ComputeSizeInternal() {
+
+
+
+
+
+ 1205 for (uint32_t i = 0; i < edits.size(); ++i) {
+ 1206 if (!IsFitIn32Bits(edits[i].segment_duration, edits[i].media_time)) {
+
+
+
+
+
+ 1212 ( sizeof(uint32_t) * (1 + version) * 2 + sizeof(int16_t) * 2) *
+
+
+
+
+
+
+
+ 1220 bool Edit::ReadWriteInternal( BoxBuffer* buffer) {
+
+
+
+
+
+ 1226 uint32_t Edit::ComputeSizeInternal() {
+
+ 1228 if (list.edits.empty())
+
+
+
+
+ 1233 HandlerReference::HandlerReference() : handler_type(FOURCC_NULL) {}
+ 1234 HandlerReference::~HandlerReference() {}
+
+
+ 1237 bool HandlerReference::ReadWriteInternal( BoxBuffer* buffer) {
+ 1238 std::vector<uint8_t> handler_name;
+
+ 1240 switch (handler_type) {
+
+ 1242 handler_name.assign(kVideoHandlerName,
+ 1243 kVideoHandlerName + arraysize(kVideoHandlerName));
+
+
+ 1246 handler_name.assign(kAudioHandlerName,
+ 1247 kAudioHandlerName + arraysize(kAudioHandlerName));
+
+
+ 1250 handler_name.assign(kTextHandlerName,
+ 1251 kTextHandlerName + arraysize(kTextHandlerName));
+
+
+
+
+
+
+
+
+
+
+ 1262 buffer->ReadWriteFourCC(&handler_type));
+
+
+ 1265 buffer->ReadWriteVector(&handler_name, handler_name.size()));
+
+
+
+
+ 1270 uint32_t HandlerReference::ComputeSizeInternal() {
+ 1271 uint32_t box_size = HeaderSize() + kFourCCSize + 16;
+ 1272 switch (handler_type) {
+
+ 1274 box_size += sizeof(kVideoHandlerName);
+
+
+ 1277 box_size += sizeof(kAudioHandlerName);
+
+
+ 1280 box_size += sizeof(kTextHandlerName);
+
+
+
+
+
+
+
+
+
+ 1290 bool Language::ReadWrite(BoxBuffer* buffer) {
+ 1291 if (buffer->Reading()) {
+
+
+ 1294 std::vector<uint8_t> temp;
+ 1295 RCHECK(buffer->ReadWriteVector(&temp, 2));
+
+ 1297 BitReader bit_reader(&temp[0], 2);
+ 1298 bit_reader.SkipBits(1);
+
+ 1300 for ( int i = 0; i < 3; ++i) {
+ 1301 CHECK(bit_reader.ReadBits(5, &language[i]));
+ 1302 language[i] += 0x60;
+
+ 1304 code.assign(language, 3);
+
+
+ 1307 const char kUndefinedLanguage[] = "und";
+
+ 1309 code = kUndefinedLanguage;
+ 1310 DCHECK_EQ(code.size(), 3u);
+
+
+
+ 1314 for ( int i = 0; i < 3; ++i)
+ 1315 lang |= (code[i] - 0x60) << ((2 - i) * 5);
+ 1316 RCHECK(buffer->ReadWriteUInt16(&lang));
+
+
+
+
+ 1321 uint32_t Language::ComputeSize() const {
+
+
+
+
+ 1326 bool PrivFrame::ReadWrite(BoxBuffer* buffer) {
+ 1327 FourCC fourcc = FOURCC_PRIV;
+ 1328 RCHECK(buffer->ReadWriteFourCC(&fourcc));
+ 1329 if (fourcc != FOURCC_PRIV) {
+ 1330 VLOG(1) << "Skip unrecognized id3 frame during read: "
+ 1331 << FourCCToString(fourcc);
+
+
+
+ 1335 uint32_t frame_size = owner.size() + 1 + value.size();
+
+
+
+ 1339 DCHECK_LT(frame_size, 0x7Fu);
+
+ 1341 RCHECK(buffer->ReadWriteUInt32(&frame_size) &&
+ 1342 buffer->ReadWriteUInt16(&flags));
+
+ 1344 if (buffer->Reading()) {
+
+ 1346 RCHECK(buffer->ReadWriteString(&str, frame_size));
+
+ 1348 size_t pos = str.find( '\0');
+ 1349 RCHECK(pos < str.size());
+ 1350 owner = str.substr(0, pos);
+ 1351 value = str.substr(pos + 1);
+
+
+ 1354 RCHECK(buffer->ReadWriteString(&owner, owner.size()) &&
+ 1355 buffer->ReadWriteUInt8(&byte) &&
+ 1356 buffer->ReadWriteString(&value, value.size()));
+
+
+
+
+ 1361 uint32_t PrivFrame::ComputeSize() const {
+ 1362 if (owner.empty() && value.empty())
+
+ 1364 const uint32_t kFourCCSize = 4;
+ 1365 return kFourCCSize + sizeof(uint32_t) + sizeof(uint16_t) + owner.size() + 1 +
+
+
+
+
+
+
+
+
+ 1374 bool ID3v2::ReadWriteInternal( BoxBuffer* buffer) {
+
+ 1376 language.ReadWrite(buffer));
+
+
+ 1379 std::string id3v2_identifier = kID3v2Identifier;
+ 1380 uint16_t version = kID3v2Version;
+
+
+
+
+
+ 1386 DCHECK_LT(data_size, 0x7Fu);
+
+ 1388 RCHECK(buffer-> ReadWriteString(&id3v2_identifier, id3v2_identifier.size()) &&
+ 1389 buffer->ReadWriteUInt16(&version) &&
+ 1390 buffer->ReadWriteUInt8(&flags) &&
+ 1391 buffer->ReadWriteUInt32(&data_size));
+
+
+
+
+
+ 1397 uint32_t ID3v2::ComputeSizeInternal() {
+
+
+ 1400 return private_frame_size == 0 ? 0 : HeaderSize() + language.ComputeSize() +
+
+
+
+
+ 1405 Metadata::Metadata() {}
+ 1406 Metadata::~Metadata() {}
+
+
+
+
+
+ 1412 bool Metadata::ReadWriteInternal( BoxBuffer* buffer) {
+
+
+
+
+
+
+
+ 1420 uint32_t Metadata::ComputeSizeInternal() {
+
+
+ 1423 return id3v2_size == 0 ? 0
+
+
+
+ 1427 CodecConfiguration::CodecConfiguration() : box_type(FOURCC_NULL) {}
+ 1428 CodecConfiguration::~CodecConfiguration() {}
+
+
+
+
+
+
+
+ 1436 bool CodecConfiguration::ReadWriteInternal( BoxBuffer* buffer) {
+ 1437 DCHECK_NE(box_type, FOURCC_NULL);
+
+
+
+
+ 1442 if (box_type == FOURCC_vpcC) {
+ 1443 uint32_t version_flags = 0;
+ 1444 RCHECK(buffer->ReadWriteUInt32(&version_flags));
+ 1445 RCHECK(version_flags == 0);
+
+
+
+ 1449 RCHECK(buffer->ReadWriteVector(&data, buffer-> BytesLeft()));
+
+ 1451 RCHECK(buffer->ReadWriteVector(&data, data.size()));
+
+
+
+
+ 1456 uint32_t CodecConfiguration::ComputeSizeInternal() {
+
+
+ 1459 DCHECK_NE(box_type, FOURCC_NULL);
+ 1460 return HeaderSize() + (box_type == FOURCC_vpcC ? 4 : 0) + data.size();
+
+
+ 1463 PixelAspectRatio::PixelAspectRatio() : h_spacing(0), v_spacing(0) {}
+ 1464 PixelAspectRatio::~PixelAspectRatio() {}
+
+
+ 1467 bool PixelAspectRatio::ReadWriteInternal( BoxBuffer* buffer) {
+
+ 1469 buffer->ReadWriteUInt32(&h_spacing) &&
+ 1470 buffer->ReadWriteUInt32(&v_spacing));
+
+
+
+ 1474 uint32_t PixelAspectRatio::ComputeSizeInternal() {
+
+ 1476 if (h_spacing == 0 && v_spacing == 0)
+
+
+ 1479 DCHECK(h_spacing != 0 && v_spacing != 0);
+ 1480 return HeaderSize() + sizeof(h_spacing) + sizeof(v_spacing);
+
+
+ 1483 VideoSampleEntry::VideoSampleEntry()
+ 1484 : format(FOURCC_NULL), data_reference_index(1), width(0), height(0) {}
+
+ 1486 VideoSampleEntry::~VideoSampleEntry() {}
+
+ 1488 if (format == FOURCC_NULL) {
+ 1489 LOG(ERROR) << "VideoSampleEntry should be parsed according to the "
+ 1490 << "handler type recovered in its Media ancestor.";
+
+
+
+
+ 1495 bool VideoSampleEntry::ReadWriteInternal( BoxBuffer* buffer) {
+ 1496 std::vector<uint8_t> compressor_name;
+
+ 1498 DCHECK(buffer-> reader());
+ 1499 format = buffer-> reader()->type();
+
+
+
+ 1503 const FourCC actual_format = GetActualFormat();
+ 1504 switch (actual_format) {
+
+ 1506 compressor_name.assign(
+
+ 1508 kAvcCompressorName + arraysize(kAvcCompressorName));
+
+
+
+ 1512 compressor_name.assign(
+ 1513 kHevcCompressorName,
+ 1514 kHevcCompressorName + arraysize(kHevcCompressorName));
+
+
+
+
+ 1519 compressor_name.assign(
+
+ 1521 kVpcCompressorName + arraysize(kVpcCompressorName));
+
+
+ 1524 LOG(ERROR) << FourCCToString(actual_format) << " is not supported.";
+
+
+ 1527 compressor_name.resize(kCompressorNameSize);
+
+
+ 1530 uint32_t video_resolution = kVideoResolution;
+ 1531 uint16_t video_frame_count = kVideoFrameCount;
+ 1532 uint16_t video_depth = kVideoDepth;
+ 1533 int16_t predefined = -1;
+
+ 1535 buffer->ReadWriteUInt16(&data_reference_index) &&
+
+ 1537 buffer->ReadWriteUInt16(&width) &&
+ 1538 buffer->ReadWriteUInt16(&height) &&
1539 buffer->ReadWriteUInt32(&video_resolution) &&
-
- 1541 buffer->ReadWriteUInt16(&video_frame_count) &&
- 1542 buffer->ReadWriteVector(&compressor_name, kCompressorNameSize) &&
- 1543 buffer->ReadWriteUInt16(&video_depth) &&
- 1544 buffer->ReadWriteInt16(&predefined));
-
-
-
- 1548 if (format == FOURCC_encv) {
-
-
-
- 1552 while (!IsProtectionSchemeSupported(sinf.type.type))
-
-
- 1555 DCHECK(IsProtectionSchemeSupported(sinf.type.type));
-
-
-
-
- 1560 const FourCC actual_format = GetActualFormat();
-
- 1562 codec_configuration.box_type = GetCodecConfigurationBoxType(actual_format);
-
- 1564 DCHECK_EQ(codec_configuration.box_type,
- 1565 GetCodecConfigurationBoxType(actual_format));
-
- 1567 DCHECK_NE(codec_configuration.box_type, FOURCC_NULL);
-
-
-
-
-
-
- 1574 uint32_t VideoSampleEntry::ComputeSizeInternal() {
- 1575 const FourCC actual_format = GetActualFormat();
- 1576 if (actual_format == FOURCC_NULL)
-
- 1578 codec_configuration.box_type = GetCodecConfigurationBoxType(actual_format);
- 1579 DCHECK_NE(codec_configuration.box_type, FOURCC_NULL);
- 1580 return HeaderSize() + sizeof(data_reference_index) + sizeof(width) +
- 1581 sizeof(height) + sizeof(kVideoResolution) * 2 +
- 1582 sizeof(kVideoFrameCount) + sizeof(kVideoDepth) +
-
- 1584 codec_configuration. ComputeSize() + kCompressorNameSize + 6 + 4 + 16 +
-
-
-
- 1588 FourCC VideoSampleEntry::GetCodecConfigurationBoxType(FourCC format) const {
-
-
-
-
-
-
-
-
-
-
-
- 1600 LOG(ERROR) << FourCCToString(format) << " is not supported.";
-
-
-
-
- 1605 ElementaryStreamDescriptor::ElementaryStreamDescriptor() {}
- 1606 ElementaryStreamDescriptor::~ElementaryStreamDescriptor() {}
-
-
- 1609 bool ElementaryStreamDescriptor::ReadWriteInternal( BoxBuffer* buffer) {
-
-
- 1612 std::vector<uint8_t> data;
- 1613 RCHECK(buffer->ReadWriteVector(&data, buffer-> BytesLeft()));
- 1614 RCHECK(es_descriptor.Parse(data));
- 1615 if (es_descriptor. IsAAC()) {
- 1616 RCHECK(aac_audio_specific_config. Parse(
- 1617 es_descriptor.decoder_specific_info()));
-
-
- 1620 DCHECK(buffer-> writer());
- 1621 es_descriptor.Write(buffer-> writer());
-
-
-
-
- 1626 uint32_t ElementaryStreamDescriptor::ComputeSizeInternal() {
-
- 1628 if (es_descriptor.object_type() == kForbidden)
-
- 1630 return HeaderSize() + es_descriptor.ComputeSize();
-
-
- 1633 DTSSpecific::DTSSpecific()
- 1634 : sampling_frequency(0),
-
-
- 1637 pcm_sample_depth(0) {}
- 1638 DTSSpecific::~DTSSpecific() {}
-
-
- 1641 bool DTSSpecific::ReadWriteInternal( BoxBuffer* buffer) {
-
- 1643 buffer->ReadWriteUInt32(&sampling_frequency) &&
- 1644 buffer->ReadWriteUInt32(&max_bitrate) &&
- 1645 buffer->ReadWriteUInt32(&avg_bitrate) &&
- 1646 buffer->ReadWriteUInt8(&pcm_sample_depth));
-
-
- 1649 RCHECK(buffer->ReadWriteVector(&extra_data, buffer-> BytesLeft()));
-
- 1651 if (extra_data.empty()) {
- 1652 extra_data.assign(kDdtsExtraData,
- 1653 kDdtsExtraData + sizeof(kDdtsExtraData));
-
- 1655 RCHECK(buffer->ReadWriteVector(&extra_data, extra_data.size()));
-
-
-
-
- 1660 uint32_t DTSSpecific::ComputeSizeInternal() {
-
- 1662 if (sampling_frequency == 0)
-
- 1664 return HeaderSize() + sizeof(sampling_frequency) + sizeof(max_bitrate) +
- 1665 sizeof(avg_bitrate) + sizeof(pcm_sample_depth) +
- 1666 sizeof(kDdtsExtraData);
-
-
- 1669 AC3Specific::AC3Specific() {}
- 1670 AC3Specific::~AC3Specific() {}
-
-
-
- 1674 bool AC3Specific::ReadWriteInternal( BoxBuffer* buffer) {
-
- 1676 buffer->ReadWriteVector(
-
-
-
-
- 1681 uint32_t AC3Specific::ComputeSizeInternal() {
-
-
-
-
-
-
- 1688 EC3Specific::EC3Specific() {}
- 1689 EC3Specific::~EC3Specific() {}
-
-
-
- 1693 bool EC3Specific::ReadWriteInternal( BoxBuffer* buffer) {
-
-
- 1696 RCHECK(buffer->ReadWriteVector(&data, size));
-
-
-
- 1700 uint32_t EC3Specific::ComputeSizeInternal() {
-
-
-
-
-
-
- 1707 OpusSpecific::OpusSpecific() : preskip(0) {}
- 1708 OpusSpecific::~OpusSpecific() {}
-
-
-
- 1712 bool OpusSpecific::ReadWriteInternal( BoxBuffer* buffer) {
-
-
- 1715 std::vector<uint8_t> data;
- 1716 const int kMinOpusSpecificBoxDataSize = 11;
- 1717 RCHECK(buffer-> BytesLeft() >= kMinOpusSpecificBoxDataSize);
- 1718 RCHECK(buffer->ReadWriteVector(&data, buffer-> BytesLeft()));
- 1719 preskip = data[2] + (data[3] << 8);
-
-
-
-
- 1724 writer.AppendInt(FOURCC_Head);
-
- 1726 const uint8_t kOpusIdentificationHeaderVersion = 1;
- 1727 data[0] = kOpusIdentificationHeaderVersion;
- 1728 writer.AppendVector(data);
- 1729 writer.SwapBuffer(&opus_identification_header);
-
-
-
- 1733 const size_t kOpusMagicSignatureSize = 8u;
- 1734 DCHECK_GT(opus_identification_header.size(), kOpusMagicSignatureSize);
-
-
- 1737 const uint8_t kOpusSpecificBoxVersion = 0;
-
- 1739 buffer-> writer()->AppendArray(
- 1740 &opus_identification_header[kOpusMagicSignatureSize + 1],
- 1741 opus_identification_header.size() - kOpusMagicSignatureSize - 1);
-
-
-
-
- 1746 uint32_t OpusSpecific::ComputeSizeInternal() {
-
- 1748 if (opus_identification_header.empty())
-
-
-
- 1752 const size_t kOpusMagicSignatureSize = 8u;
- 1753 DCHECK_GT(opus_identification_header.size(), kOpusMagicSignatureSize);
- 1754 return HeaderSize() + opus_identification_header.size() -
- 1755 kOpusMagicSignatureSize;
-
-
- 1758 AudioSampleEntry::AudioSampleEntry()
- 1759 : format(FOURCC_NULL),
- 1760 data_reference_index(1),
-
-
-
-
- 1765 AudioSampleEntry::~AudioSampleEntry() {}
-
-
- 1768 if (format == FOURCC_NULL) {
- 1769 LOG(ERROR) << "AudioSampleEntry should be parsed according to the "
- 1770 << "handler type recovered in its Media ancestor.";
-
-
-
-
- 1775 bool AudioSampleEntry::ReadWriteInternal( BoxBuffer* buffer) {
-
- 1777 DCHECK(buffer-> reader());
- 1778 format = buffer-> reader()->type();
-
-
-
-
-
-
-
- 1786 buffer->ReadWriteUInt16(&data_reference_index) &&
-
- 1788 buffer->ReadWriteUInt16(&channelcount) &&
- 1789 buffer->ReadWriteUInt16(&samplesize) &&
-
- 1791 buffer->ReadWriteUInt32(&samplerate));
-
-
-
-
- 1796 if (format == FOURCC_enca) {
-
-
-
- 1800 while (!IsProtectionSchemeSupported(sinf.type.type))
-
-
- 1803 DCHECK(IsProtectionSchemeSupported(sinf.type.type));
-
-
-
-
-
-
-
-
-
-
-
-
- 1816 uint32_t AudioSampleEntry::ComputeSizeInternal() {
- 1817 if (GetActualFormat() == FOURCC_NULL)
-
- 1819 return HeaderSize() + sizeof(data_reference_index) + sizeof(channelcount) +
- 1820 sizeof(samplesize) + sizeof(samplerate) + sinf. ComputeSize() +
-
-
-
-
-
-
- 1827 WebVTTConfigurationBox::WebVTTConfigurationBox() {}
- 1828 WebVTTConfigurationBox::~WebVTTConfigurationBox() {}
-
-
-
-
-
- 1834 bool WebVTTConfigurationBox::ReadWriteInternal( BoxBuffer* buffer) {
-
-
-
-
-
-
- 1841 uint32_t WebVTTConfigurationBox::ComputeSizeInternal() {
-
-
-
- 1845 WebVTTSourceLabelBox::WebVTTSourceLabelBox() {}
- 1846 WebVTTSourceLabelBox::~WebVTTSourceLabelBox() {}
-
-
-
-
-
- 1852 bool WebVTTSourceLabelBox::ReadWriteInternal( BoxBuffer* buffer) {
-
-
-
- 1856 : source_label.size());
-
-
- 1859 uint32_t WebVTTSourceLabelBox::ComputeSizeInternal() {
- 1860 if (source_label.empty())
-
-
-
-
- 1865 TextSampleEntry::TextSampleEntry() : format(FOURCC_NULL) {}
- 1866 TextSampleEntry::~TextSampleEntry() {}
-
-
- 1869 if (format == FOURCC_NULL) {
- 1870 LOG(ERROR) << "TextSampleEntry should be parsed according to the "
- 1871 << "handler type recovered in its Media ancestor.";
-
-
-
-
- 1876 bool TextSampleEntry::ReadWriteInternal( BoxBuffer* buffer) {
-
- 1878 DCHECK(buffer-> reader());
- 1879 format = buffer-> reader()->type();
-
-
-
-
- 1884 buffer->ReadWriteUInt16(&data_reference_index));
-
- 1886 if (format == FOURCC_wvtt) {
-
-
-
-
-
-
-
-
- 1895 uint32_t TextSampleEntry::ComputeSizeInternal() {
-
- 1897 return HeaderSize() + 6 + sizeof(data_reference_index) +
-
-
-
- 1901 MediaHeader::MediaHeader()
- 1902 : creation_time(0), modification_time(0), timescale(0), duration(0) {}
- 1903 MediaHeader::~MediaHeader() {}
-
-
- 1906 bool MediaHeader::ReadWriteInternal( BoxBuffer* buffer) {
-
-
- 1909 uint8_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
-
-
- 1912 buffer->ReadWriteUInt32(×cale) &&
-
- 1914 language.ReadWrite(buffer) &&
-
-
-
-
- 1919 uint32_t MediaHeader::ComputeSizeInternal() {
- 1920 version = IsFitIn32Bits(creation_time, modification_time, duration) ? 0 : 1;
-
- 1922 sizeof(uint32_t) * (1 + version) * 3 + language.ComputeSize() +
-
-
-
- 1926 VideoMediaHeader::VideoMediaHeader()
- 1927 : graphicsmode(0), opcolor_red(0), opcolor_green(0), opcolor_blue(0) {
- 1928 const uint32_t kVideoMediaHeaderFlags = 1;
- 1929 flags = kVideoMediaHeaderFlags;
-
- 1931 VideoMediaHeader::~VideoMediaHeader() {}
-
- 1933 bool VideoMediaHeader::ReadWriteInternal( BoxBuffer* buffer) {
-
- 1935 buffer->ReadWriteUInt16(&graphicsmode) &&
- 1936 buffer->ReadWriteUInt16(&opcolor_red) &&
- 1937 buffer->ReadWriteUInt16(&opcolor_green) &&
- 1938 buffer->ReadWriteUInt16(&opcolor_blue));
-
-
-
- 1942 uint32_t VideoMediaHeader::ComputeSizeInternal() {
- 1943 return HeaderSize() + sizeof(graphicsmode) + sizeof(opcolor_red) +
- 1944 sizeof(opcolor_green) + sizeof(opcolor_blue);
-
-
- 1947 SoundMediaHeader::SoundMediaHeader() : balance(0) {}
- 1948 SoundMediaHeader::~SoundMediaHeader() {}
-
- 1950 bool SoundMediaHeader::ReadWriteInternal( BoxBuffer* buffer) {
-
- 1952 buffer->ReadWriteUInt16(&balance) &&
-
-
-
-
- 1957 uint32_t SoundMediaHeader::ComputeSizeInternal() {
- 1958 return HeaderSize() + sizeof(balance) + sizeof(uint16_t);
-
-
- 1961 SubtitleMediaHeader::SubtitleMediaHeader() {}
- 1962 SubtitleMediaHeader::~SubtitleMediaHeader() {}
-
-
-
- 1966 bool SubtitleMediaHeader::ReadWriteInternal( BoxBuffer* buffer) {
-
-
-
- 1970 uint32_t SubtitleMediaHeader::ComputeSizeInternal() {
-
-
-
- 1974 DataEntryUrl::DataEntryUrl() {
- 1975 const uint32_t kDataEntryUrlFlags = 1;
- 1976 flags = kDataEntryUrlFlags;
-
- 1978 DataEntryUrl::~DataEntryUrl() {}
-
- 1980 bool DataEntryUrl::ReadWriteInternal( BoxBuffer* buffer) {
-
-
- 1983 RCHECK(buffer->ReadWriteVector(&location, buffer-> BytesLeft()));
-
- 1985 RCHECK(buffer->ReadWriteVector(&location, location.size()));
-
-
-
-
- 1990 uint32_t DataEntryUrl::ComputeSizeInternal() {
-
-
-
- 1994 DataReference::DataReference() {
-
- 1996 data_entry.resize(1);
-
- 1998 DataReference::~DataReference() {}
-
- 2000 bool DataReference::ReadWriteInternal( BoxBuffer* buffer) {
- 2001 uint32_t entry_count = data_entry.size();
-
- 2003 buffer->ReadWriteUInt32(&entry_count));
- 2004 data_entry.resize(entry_count);
-
- 2006 for (uint32_t i = 0; i < entry_count; ++i)
-
-
-
-
- 2011 uint32_t DataReference::ComputeSizeInternal() {
- 2012 uint32_t count = data_entry.size();
- 2013 uint32_t box_size = HeaderSize() + sizeof(count);
- 2014 for (uint32_t i = 0; i < count; ++i)
-
-
-
-
- 2019 DataInformation::DataInformation() {}
- 2020 DataInformation::~DataInformation() {}
-
-
- 2023 bool DataInformation::ReadWriteInternal( BoxBuffer* buffer) {
-
-
-
-
-
- 2029 uint32_t DataInformation::ComputeSizeInternal() {
-
-
-
- 2033 MediaInformation::MediaInformation() {}
- 2034 MediaInformation::~MediaInformation() {}
-
-
- 2037 bool MediaInformation::ReadWriteInternal( BoxBuffer* buffer) {
-
-
-
-
- 2042 switch (sample_table.description.type) {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 2059 uint32_t MediaInformation::ComputeSizeInternal() {
-
-
- 2062 switch (sample_table.description.type) {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 2082 bool Media::ReadWriteInternal( BoxBuffer* buffer) {
-
-
-
-
-
-
-
-
-
-
-
- 2094 information.sample_table.description.type =
- 2095 FourCCToTrackType(handler.handler_type);
-
- 2097 handler.handler_type =
- 2098 TrackTypeToFourCC(information.sample_table.description.type);
- 2099 RCHECK(handler.handler_type != FOURCC_NULL);
-
-
-
-
-
-
- 2106 uint32_t Media::ComputeSizeInternal() {
- 2107 handler.handler_type =
- 2108 TrackTypeToFourCC(information.sample_table.description.type);
-
-
-
-
-
-
-
-
- 2117 bool Track::ReadWriteInternal( BoxBuffer* buffer) {
-
-
-
-
-
-
-
-
-
- 2127 uint32_t Track::ComputeSizeInternal() {
-
-
-
-
- 2132 MovieExtendsHeader::MovieExtendsHeader() : fragment_duration(0) {}
- 2133 MovieExtendsHeader::~MovieExtendsHeader() {}
-
-
- 2136 bool MovieExtendsHeader::ReadWriteInternal( BoxBuffer* buffer) {
-
- 2138 size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
-
-
-
-
- 2143 uint32_t MovieExtendsHeader::ComputeSizeInternal() {
-
- 2145 if (fragment_duration == 0)
-
- 2147 version = IsFitIn32Bits(fragment_duration) ? 0 : 1;
- 2148 return HeaderSize() + sizeof(uint32_t) * (1 + version);
-
-
- 2151 TrackExtends::TrackExtends()
-
- 2153 default_sample_description_index(0),
- 2154 default_sample_duration(0),
- 2155 default_sample_size(0),
- 2156 default_sample_flags(0) {}
- 2157 TrackExtends::~TrackExtends() {}
-
-
- 2160 bool TrackExtends::ReadWriteInternal( BoxBuffer* buffer) {
-
- 2162 buffer->ReadWriteUInt32(&track_id) &&
- 2163 buffer->ReadWriteUInt32(&default_sample_description_index) &&
- 2164 buffer->ReadWriteUInt32(&default_sample_duration) &&
- 2165 buffer->ReadWriteUInt32(&default_sample_size) &&
- 2166 buffer->ReadWriteUInt32(&default_sample_flags));
-
-
-
- 2170 uint32_t TrackExtends::ComputeSizeInternal() {
-
- 2172 sizeof(default_sample_description_index) +
- 2173 sizeof(default_sample_duration) + sizeof(default_sample_size) +
- 2174 sizeof(default_sample_flags);
-
-
- 2177 MovieExtends::MovieExtends() {}
- 2178 MovieExtends::~MovieExtends() {}
-
-
- 2181 bool MovieExtends::ReadWriteInternal( BoxBuffer* buffer) {
-
-
-
-
- 2186 DCHECK(buffer-> reader());
-
-
- 2189 for (uint32_t i = 0; i < tracks.size(); ++i)
-
-
-
-
-
- 2195 uint32_t MovieExtends::ComputeSizeInternal() {
-
- 2197 if (tracks.size() == 0)
-
-
- 2200 for (uint32_t i = 0; i < tracks.size(); ++i)
-
-
-
-
-
-
-
-
- 2209 bool Movie::ReadWriteInternal( BoxBuffer* buffer) {
-
-
-
-
-
-
-
-
-
-
-
- 2221 for (uint32_t i = 0; i < tracks.size(); ++i)
-
- 2223 for (uint32_t i = 0; i < pssh.size(); ++i)
-
-
-
-
-
- 2229 uint32_t Movie::ComputeSizeInternal() {
-
-
- 2232 for (uint32_t i = 0; i < tracks.size(); ++i)
-
- 2234 for (uint32_t i = 0; i < pssh.size(); ++i)
-
-
-
-
- 2239 TrackFragmentDecodeTime::TrackFragmentDecodeTime() : decode_time(0) {}
- 2240 TrackFragmentDecodeTime::~TrackFragmentDecodeTime() {}
-
-
- 2243 bool TrackFragmentDecodeTime::ReadWriteInternal( BoxBuffer* buffer) {
-
- 2245 size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
-
-
-
-
- 2250 uint32_t TrackFragmentDecodeTime::ComputeSizeInternal() {
- 2251 version = IsFitIn32Bits(decode_time) ? 0 : 1;
- 2252 return HeaderSize() + sizeof(uint32_t) * (1 + version);
-
-
- 2255 MovieFragmentHeader::MovieFragmentHeader() : sequence_number(0) {}
- 2256 MovieFragmentHeader::~MovieFragmentHeader() {}
-
-
- 2259 bool MovieFragmentHeader::ReadWriteInternal( BoxBuffer* buffer) {
-
- 2261 buffer->ReadWriteUInt32(&sequence_number);
-
-
- 2264 uint32_t MovieFragmentHeader::ComputeSizeInternal() {
- 2265 return HeaderSize() + sizeof(sequence_number);
-
-
- 2268 TrackFragmentHeader::TrackFragmentHeader()
-
- 2270 sample_description_index(0),
- 2271 default_sample_duration(0),
- 2272 default_sample_size(0),
- 2273 default_sample_flags(0) {}
-
- 2275 TrackFragmentHeader::~TrackFragmentHeader() {}
-
-
- 2278 bool TrackFragmentHeader::ReadWriteInternal( BoxBuffer* buffer) {
-
- 2280 buffer->ReadWriteUInt32(&track_id));
-
- 2282 if (flags & kBaseDataOffsetPresentMask) {
-
-
-
-
- 2287 uint64_t base_data_offset;
- 2288 RCHECK(buffer->ReadWriteUInt64(&base_data_offset));
- 2289 DLOG(WARNING) << "base-data-offset-present is not expected. Assumes "
- 2290 "default-base-is-moof.";
-
-
- 2293 if (flags & kSampleDescriptionIndexPresentMask) {
- 2294 RCHECK(buffer->ReadWriteUInt32(&sample_description_index));
- 2295 } else if (buffer-> Reading()) {
- 2296 sample_description_index = 0;
-
-
- 2299 if (flags & kDefaultSampleDurationPresentMask) {
- 2300 RCHECK(buffer->ReadWriteUInt32(&default_sample_duration));
- 2301 } else if (buffer-> Reading()) {
- 2302 default_sample_duration = 0;
-
-
- 2305 if (flags & kDefaultSampleSizePresentMask) {
- 2306 RCHECK(buffer->ReadWriteUInt32(&default_sample_size));
- 2307 } else if (buffer-> Reading()) {
- 2308 default_sample_size = 0;
-
-
- 2311 if (flags & kDefaultSampleFlagsPresentMask)
- 2312 RCHECK(buffer->ReadWriteUInt32(&default_sample_flags));
-
-
-
- 2316 uint32_t TrackFragmentHeader::ComputeSizeInternal() {
- 2317 uint32_t box_size = HeaderSize() + sizeof(track_id);
- 2318 if (flags & kSampleDescriptionIndexPresentMask)
- 2319 box_size += sizeof(sample_description_index);
- 2320 if (flags & kDefaultSampleDurationPresentMask)
- 2321 box_size += sizeof(default_sample_duration);
- 2322 if (flags & kDefaultSampleSizePresentMask)
- 2323 box_size += sizeof(default_sample_size);
- 2324 if (flags & kDefaultSampleFlagsPresentMask)
- 2325 box_size += sizeof(default_sample_flags);
-
-
-
- 2329 TrackFragmentRun::TrackFragmentRun() : sample_count(0), data_offset(0) {}
- 2330 TrackFragmentRun::~TrackFragmentRun() {}
-
-
- 2333 bool TrackFragmentRun::ReadWriteInternal( BoxBuffer* buffer) {
-
-
-
-
-
- 2339 if (flags & kSampleCompTimeOffsetsPresentMask) {
- 2340 for (uint32_t i = 0; i < sample_count; ++i) {
- 2341 if (sample_composition_time_offsets[i] < 0) {
-
-
-
-
-
-
-
-
- 2350 buffer->ReadWriteUInt32(&sample_count));
-
- 2352 bool data_offset_present = (flags & kDataOffsetPresentMask) != 0;
- 2353 bool first_sample_flags_present = (flags & kFirstSampleFlagsPresentMask) != 0;
- 2354 bool sample_duration_present = (flags & kSampleDurationPresentMask) != 0;
- 2355 bool sample_size_present = (flags & kSampleSizePresentMask) != 0;
- 2356 bool sample_flags_present = (flags & kSampleFlagsPresentMask) != 0;
- 2357 bool sample_composition_time_offsets_present =
- 2358 (flags & kSampleCompTimeOffsetsPresentMask) != 0;
-
- 2360 if (data_offset_present) {
- 2361 RCHECK(buffer->ReadWriteUInt32(&data_offset));
-
-
-
-
-
-
-
-
-
-
- 2372 uint32_t first_sample_flags;
-
-
- 2375 if (first_sample_flags_present)
- 2376 RCHECK(buffer->ReadWriteUInt32(&first_sample_flags));
-
- 2378 if (sample_duration_present)
- 2379 sample_durations.resize(sample_count);
- 2380 if (sample_size_present)
- 2381 sample_sizes.resize(sample_count);
- 2382 if (sample_flags_present)
- 2383 sample_flags.resize(sample_count);
- 2384 if (sample_composition_time_offsets_present)
- 2385 sample_composition_time_offsets.resize(sample_count);
-
- 2387 if (first_sample_flags_present) {
- 2388 first_sample_flags = sample_flags[0];
- 2389 DCHECK(sample_flags.size() == 1);
- 2390 RCHECK(buffer->ReadWriteUInt32(&first_sample_flags));
-
-
- 2393 if (sample_duration_present)
- 2394 DCHECK(sample_durations.size() == sample_count);
- 2395 if (sample_size_present)
- 2396 DCHECK(sample_sizes.size() == sample_count);
- 2397 if (sample_flags_present)
- 2398 DCHECK(sample_flags.size() == sample_count);
- 2399 if (sample_composition_time_offsets_present)
- 2400 DCHECK(sample_composition_time_offsets.size() == sample_count);
-
-
- 2403 for (uint32_t i = 0; i < sample_count; ++i) {
- 2404 if (sample_duration_present)
- 2405 RCHECK(buffer->ReadWriteUInt32(&sample_durations[i]));
- 2406 if (sample_size_present)
- 2407 RCHECK(buffer->ReadWriteUInt32(&sample_sizes[i]));
- 2408 if (sample_flags_present)
- 2409 RCHECK(buffer->ReadWriteUInt32(&sample_flags[i]));
-
- 2411 if (sample_composition_time_offsets_present) {
-
- 2413 uint32_t sample_offset = sample_composition_time_offsets[i];
- 2414 RCHECK(buffer->ReadWriteUInt32(&sample_offset));
- 2415 sample_composition_time_offsets[i] = sample_offset;
-
- 2417 int32_t sample_offset = sample_composition_time_offsets[i];
- 2418 RCHECK(buffer->ReadWriteInt32(&sample_offset));
- 2419 sample_composition_time_offsets[i] = sample_offset;
-
-
-
-
-
- 2425 if (first_sample_flags_present) {
- 2426 if (sample_flags.size() == 0) {
- 2427 sample_flags.push_back(first_sample_flags);
-
- 2429 sample_flags[0] = first_sample_flags;
-
-
-
-
-
-
- 2436 uint32_t TrackFragmentRun::ComputeSizeInternal() {
- 2437 uint32_t box_size = HeaderSize() + sizeof(sample_count);
- 2438 if (flags & kDataOffsetPresentMask)
- 2439 box_size += sizeof(data_offset);
- 2440 if (flags & kFirstSampleFlagsPresentMask)
- 2441 box_size += sizeof(uint32_t);
- 2442 uint32_t fields = (flags & kSampleDurationPresentMask ? 1 : 0) +
- 2443 (flags & kSampleSizePresentMask ? 1 : 0) +
- 2444 (flags & kSampleFlagsPresentMask ? 1 : 0) +
- 2445 (flags & kSampleCompTimeOffsetsPresentMask ? 1 : 0);
- 2446 box_size += fields * sizeof(uint32_t) * sample_count;
-
-
-
- 2450 TrackFragment::TrackFragment() : decode_time_absent(false) {}
- 2451 TrackFragment::~TrackFragment() {}
-
-
- 2454 bool TrackFragment::ReadWriteInternal( BoxBuffer* buffer) {
-
-
-
-
- 2459 DCHECK(buffer-> reader());
-
- 2461 if (!decode_time_absent)
-
-
-
-
-
- 2467 if (!decode_time_absent)
-
- 2469 for (uint32_t i = 0; i < runs.size(); ++i)
-
- 2471 for (uint32_t i = 0; i < sample_to_groups.size(); ++i)
-
- 2473 for (uint32_t i = 0; i < sample_group_descriptions.size(); ++i)
-
-
-
-
-
-
-
- 2481 uint32_t TrackFragment::ComputeSizeInternal() {
-
-
-
-
- 2486 for (uint32_t i = 0; i < runs.size(); ++i)
-
- 2488 for (uint32_t i = 0; i < sample_group_descriptions.size(); ++i)
- 2489 box_size += sample_group_descriptions[i]. ComputeSize();
- 2490 for (uint32_t i = 0; i < sample_to_groups.size(); ++i)
-
-
-
-
- 2495 MovieFragment::MovieFragment() {}
- 2496 MovieFragment::~MovieFragment() {}
-
-
- 2499 bool MovieFragment::ReadWriteInternal( BoxBuffer* buffer) {
-
-
-
-
-
-
-
-
-
- 2509 for (uint32_t i = 0; i < tracks.size(); ++i)
-
- 2511 for (uint32_t i = 0; i < pssh.size(); ++i)
-
-
-
-
-
- 2517 uint32_t MovieFragment::ComputeSizeInternal() {
-
- 2519 for (uint32_t i = 0; i < tracks.size(); ++i)
-
- 2521 for (uint32_t i = 0; i < pssh.size(); ++i)
-
-
-
-
- 2526 SegmentIndex::SegmentIndex()
-
-
- 2529 earliest_presentation_time(0),
-
- 2531 SegmentIndex::~SegmentIndex() {}
-
-
- 2534 bool SegmentIndex::ReadWriteInternal( BoxBuffer* buffer) {
-
- 2536 buffer->ReadWriteUInt32(&reference_id) &&
- 2537 buffer->ReadWriteUInt32(×cale));
-
- 2539 size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
-
-
-
-
- 2544 uint16_t reference_count = references.size();
-
- 2546 buffer->ReadWriteUInt16(&reference_count));
- 2547 references.resize(reference_count);
-
- 2549 uint32_t reference_type_size;
-
- 2551 for (uint32_t i = 0; i < reference_count; ++i) {
-
- 2553 reference_type_size = references[i].referenced_size;
- 2554 if (references[i].reference_type)
- 2555 reference_type_size |= (1 << 31);
- 2556 sap = (references[i].sap_type << 28) | references[i].sap_delta_time;
- 2557 if (references[i].starts_with_sap)
-
-
- 2560 RCHECK(buffer->ReadWriteUInt32(&reference_type_size) &&
- 2561 buffer->ReadWriteUInt32(&references[i].subsegment_duration) &&
- 2562 buffer->ReadWriteUInt32(&sap));
-
- 2564 references[i].reference_type = (reference_type_size >> 31) ? true : false;
- 2565 references[i].referenced_size = reference_type_size & ~(1 << 31);
- 2566 references[i].starts_with_sap = (sap >> 31) ? true : false;
- 2567 references[i].sap_type =
- 2568 static_cast<SegmentReference::SAPType >((sap >> 28) & 0x07);
- 2569 references[i].sap_delta_time = sap & ~(0xF << 28);
-
-
-
-
-
- 2575 uint32_t SegmentIndex::ComputeSizeInternal() {
- 2576 version = IsFitIn32Bits(earliest_presentation_time, first_offset) ? 0 : 1;
- 2577 return HeaderSize() + sizeof(reference_id) + sizeof(timescale) +
- 2578 sizeof(uint32_t) * (1 + version) * 2 + 2 * sizeof(uint16_t) +
- 2579 3 * sizeof(uint32_t) * references.size();
-
-
- 2582 MediaData::MediaData() : data_size(0) {}
- 2583 MediaData::~MediaData() {}
-
-
- 2586 bool MediaData::ReadWriteInternal( BoxBuffer* buffer) {
- 2587 NOTIMPLEMENTED() << "Actual data is parsed and written separately.";
-
-
-
- 2591 uint32_t MediaData::ComputeSizeInternal() {
-
-
-
- 2595 CueSourceIDBox::CueSourceIDBox() : source_id(kCueSourceIdNotSet) {}
- 2596 CueSourceIDBox::~CueSourceIDBox() {}
-
-
-
- 2600 bool CueSourceIDBox::ReadWriteInternal( BoxBuffer* buffer) {
-
-
-
-
- 2605 uint32_t CueSourceIDBox::ComputeSizeInternal() {
- 2606 if (source_id == kCueSourceIdNotSet)
-
-
-
-
- 2611 CueTimeBox::CueTimeBox() {}
- 2612 CueTimeBox::~CueTimeBox() {}
-
-
-
-
-
- 2618 bool CueTimeBox::ReadWriteInternal( BoxBuffer* buffer) {
-
-
-
-
-
-
- 2625 uint32_t CueTimeBox::ComputeSizeInternal() {
- 2626 if (cue_current_time.empty())
-
- 2628 return HeaderSize() + cue_current_time.size();
-
-
- 2631 CueIDBox::CueIDBox() {}
- 2632 CueIDBox::~CueIDBox() {}
-
-
-
-
-
- 2638 bool CueIDBox::ReadWriteInternal( BoxBuffer* buffer) {
-
-
-
-
-
- 2644 uint32_t CueIDBox::ComputeSizeInternal() {
-
-
-
-
-
- 2650 CueSettingsBox::CueSettingsBox() {}
- 2651 CueSettingsBox::~CueSettingsBox() {}
-
-
-
-
-
- 2657 bool CueSettingsBox::ReadWriteInternal( BoxBuffer* buffer) {
-
-
-
-
-
- 2663 uint32_t CueSettingsBox::ComputeSizeInternal() {
- 2664 if (settings.empty())
-
-
-
-
- 2669 CuePayloadBox::CuePayloadBox() {}
- 2670 CuePayloadBox::~CuePayloadBox() {}
-
-
-
-
-
- 2676 bool CuePayloadBox::ReadWriteInternal( BoxBuffer* buffer) {
-
-
-
-
-
- 2682 uint32_t CuePayloadBox::ComputeSizeInternal() {
-
-
-
- 2686 VTTEmptyCueBox::VTTEmptyCueBox() {}
- 2687 VTTEmptyCueBox::~VTTEmptyCueBox() {}
-
-
-
-
-
- 2693 bool VTTEmptyCueBox::ReadWriteInternal( BoxBuffer* buffer) {
-
-
-
- 2697 uint32_t VTTEmptyCueBox::ComputeSizeInternal() {
-
-
-
- 2701 VTTAdditionalTextBox::VTTAdditionalTextBox() {}
- 2702 VTTAdditionalTextBox::~VTTAdditionalTextBox() {}
-
-
-
-
-
- 2708 bool VTTAdditionalTextBox::ReadWriteInternal( BoxBuffer* buffer) {
-
-
- 2711 &cue_additional_text,
-
-
-
- 2715 uint32_t VTTAdditionalTextBox::ComputeSizeInternal() {
- 2716 return HeaderSize() + cue_additional_text.size();
-
-
- 2719 VTTCueBox::VTTCueBox() {}
- 2720 VTTCueBox::~VTTCueBox() {}
-
-
-
-
-
- 2726 bool VTTCueBox::ReadWriteInternal( BoxBuffer* buffer) {
-
-
-
-
-
-
-
-
-
-
- 2737 uint32_t VTTCueBox::ComputeSizeInternal() {
-
-
-
-
-
-
-
-
-
-
-
+ 1540 buffer->ReadWriteUInt32(&video_resolution) &&
+
+ 1542 buffer->ReadWriteUInt16(&video_frame_count) &&
+ 1543 buffer->ReadWriteVector(&compressor_name, kCompressorNameSize) &&
+ 1544 buffer->ReadWriteUInt16(&video_depth) &&
+ 1545 buffer->ReadWriteInt16(&predefined));
+
+
+
+ 1549 if (format == FOURCC_encv) {
+
+
+
+ 1553 while (!IsProtectionSchemeSupported(sinf.type.type))
+
+
+ 1556 DCHECK(IsProtectionSchemeSupported(sinf.type.type));
+
+
+
+
+ 1561 const FourCC actual_format = GetActualFormat();
+
+ 1563 codec_configuration.box_type = GetCodecConfigurationBoxType(actual_format);
+
+ 1565 DCHECK_EQ(codec_configuration.box_type,
+ 1566 GetCodecConfigurationBoxType(actual_format));
+
+ 1568 DCHECK_NE(codec_configuration.box_type, FOURCC_NULL);
+
+
+
+
+
+
+ 1575 uint32_t VideoSampleEntry::ComputeSizeInternal() {
+ 1576 const FourCC actual_format = GetActualFormat();
+ 1577 if (actual_format == FOURCC_NULL)
+
+ 1579 codec_configuration.box_type = GetCodecConfigurationBoxType(actual_format);
+ 1580 DCHECK_NE(codec_configuration.box_type, FOURCC_NULL);
+ 1581 return HeaderSize() + sizeof(data_reference_index) + sizeof(width) +
+ 1582 sizeof(height) + sizeof(kVideoResolution) * 2 +
+ 1583 sizeof(kVideoFrameCount) + sizeof(kVideoDepth) +
+
+ 1585 codec_configuration. ComputeSize() + kCompressorNameSize + 6 + 4 + 16 +
+
+
+
+ 1589 FourCC VideoSampleEntry::GetCodecConfigurationBoxType(FourCC format) const {
+
+
+
+
+
+
+
+
+
+
+
+ 1601 LOG(ERROR) << FourCCToString(format) << " is not supported.";
+
+
+
+
+ 1606 ElementaryStreamDescriptor::ElementaryStreamDescriptor() {}
+ 1607 ElementaryStreamDescriptor::~ElementaryStreamDescriptor() {}
+
+
+ 1610 bool ElementaryStreamDescriptor::ReadWriteInternal( BoxBuffer* buffer) {
+
+
+ 1613 std::vector<uint8_t> data;
+ 1614 RCHECK(buffer->ReadWriteVector(&data, buffer-> BytesLeft()));
+ 1615 RCHECK(es_descriptor.Parse(data));
+ 1616 if (es_descriptor. IsAAC()) {
+ 1617 RCHECK(aac_audio_specific_config. Parse(
+ 1618 es_descriptor.decoder_specific_info()));
+
+
+ 1621 DCHECK(buffer-> writer());
+ 1622 es_descriptor.Write(buffer-> writer());
+
+
+
+
+ 1627 uint32_t ElementaryStreamDescriptor::ComputeSizeInternal() {
+
+ 1629 if (es_descriptor.object_type() == kForbidden)
+
+ 1631 return HeaderSize() + es_descriptor.ComputeSize();
+
+
+ 1634 DTSSpecific::DTSSpecific()
+ 1635 : sampling_frequency(0),
+
+
+ 1638 pcm_sample_depth(0) {}
+ 1639 DTSSpecific::~DTSSpecific() {}
+
+
+ 1642 bool DTSSpecific::ReadWriteInternal( BoxBuffer* buffer) {
+
+ 1644 buffer->ReadWriteUInt32(&sampling_frequency) &&
+ 1645 buffer->ReadWriteUInt32(&max_bitrate) &&
+ 1646 buffer->ReadWriteUInt32(&avg_bitrate) &&
+ 1647 buffer->ReadWriteUInt8(&pcm_sample_depth));
+
+
+ 1650 RCHECK(buffer->ReadWriteVector(&extra_data, buffer-> BytesLeft()));
+
+ 1652 if (extra_data.empty()) {
+ 1653 extra_data.assign(kDdtsExtraData,
+ 1654 kDdtsExtraData + sizeof(kDdtsExtraData));
+
+ 1656 RCHECK(buffer->ReadWriteVector(&extra_data, extra_data.size()));
+
+
+
+
+ 1661 uint32_t DTSSpecific::ComputeSizeInternal() {
+
+ 1663 if (sampling_frequency == 0)
+
+ 1665 return HeaderSize() + sizeof(sampling_frequency) + sizeof(max_bitrate) +
+ 1666 sizeof(avg_bitrate) + sizeof(pcm_sample_depth) +
+ 1667 sizeof(kDdtsExtraData);
+
+
+ 1670 AC3Specific::AC3Specific() {}
+ 1671 AC3Specific::~AC3Specific() {}
+
+
+
+ 1675 bool AC3Specific::ReadWriteInternal( BoxBuffer* buffer) {
+
+ 1677 buffer->ReadWriteVector(
+
+
+
+
+ 1682 uint32_t AC3Specific::ComputeSizeInternal() {
+
+
+
+
+
+
+ 1689 EC3Specific::EC3Specific() {}
+ 1690 EC3Specific::~EC3Specific() {}
+
+
+
+ 1694 bool EC3Specific::ReadWriteInternal( BoxBuffer* buffer) {
+
+
+ 1697 RCHECK(buffer->ReadWriteVector(&data, size));
+
+
+
+ 1701 uint32_t EC3Specific::ComputeSizeInternal() {
+
+
+
+
+
+
+ 1708 OpusSpecific::OpusSpecific() : preskip(0) {}
+ 1709 OpusSpecific::~OpusSpecific() {}
+
+
+
+ 1713 bool OpusSpecific::ReadWriteInternal( BoxBuffer* buffer) {
+
+
+ 1716 std::vector<uint8_t> data;
+ 1717 const int kMinOpusSpecificBoxDataSize = 11;
+ 1718 RCHECK(buffer-> BytesLeft() >= kMinOpusSpecificBoxDataSize);
+ 1719 RCHECK(buffer->ReadWriteVector(&data, buffer-> BytesLeft()));
+ 1720 preskip = data[2] + (data[3] << 8);
+
+
+
+
+ 1725 writer.AppendInt(FOURCC_Head);
+
+ 1727 const uint8_t kOpusIdentificationHeaderVersion = 1;
+ 1728 data[0] = kOpusIdentificationHeaderVersion;
+ 1729 writer.AppendVector(data);
+ 1730 writer.SwapBuffer(&opus_identification_header);
+
+
+
+ 1734 const size_t kOpusMagicSignatureSize = 8u;
+ 1735 DCHECK_GT(opus_identification_header.size(), kOpusMagicSignatureSize);
+
+
+ 1738 const uint8_t kOpusSpecificBoxVersion = 0;
+
+ 1740 buffer-> writer()->AppendArray(
+ 1741 &opus_identification_header[kOpusMagicSignatureSize + 1],
+ 1742 opus_identification_header.size() - kOpusMagicSignatureSize - 1);
+
+
+
+
+ 1747 uint32_t OpusSpecific::ComputeSizeInternal() {
+
+ 1749 if (opus_identification_header.empty())
+
+
+
+ 1753 const size_t kOpusMagicSignatureSize = 8u;
+ 1754 DCHECK_GT(opus_identification_header.size(), kOpusMagicSignatureSize);
+ 1755 return HeaderSize() + opus_identification_header.size() -
+ 1756 kOpusMagicSignatureSize;
+
+
+ 1759 AudioSampleEntry::AudioSampleEntry()
+ 1760 : format(FOURCC_NULL),
+ 1761 data_reference_index(1),
+
+
+
+
+ 1766 AudioSampleEntry::~AudioSampleEntry() {}
+
+
+ 1769 if (format == FOURCC_NULL) {
+ 1770 LOG(ERROR) << "AudioSampleEntry should be parsed according to the "
+ 1771 << "handler type recovered in its Media ancestor.";
+
+
+
+
+ 1776 bool AudioSampleEntry::ReadWriteInternal( BoxBuffer* buffer) {
+
+ 1778 DCHECK(buffer-> reader());
+ 1779 format = buffer-> reader()->type();
+
+
+
+
+
+
+
+ 1787 buffer->ReadWriteUInt16(&data_reference_index) &&
+
+ 1789 buffer->ReadWriteUInt16(&channelcount) &&
+ 1790 buffer->ReadWriteUInt16(&samplesize) &&
+
+ 1792 buffer->ReadWriteUInt32(&samplerate));
+
+
+
+
+ 1797 if (format == FOURCC_enca) {
+
+
+
+ 1801 while (!IsProtectionSchemeSupported(sinf.type.type))
+
+
+ 1804 DCHECK(IsProtectionSchemeSupported(sinf.type.type));
+
+
+
+
+
+
+
+
+
+
+
+
+ 1817 uint32_t AudioSampleEntry::ComputeSizeInternal() {
+ 1818 if (GetActualFormat() == FOURCC_NULL)
+
+ 1820 return HeaderSize() + sizeof(data_reference_index) + sizeof(channelcount) +
+ 1821 sizeof(samplesize) + sizeof(samplerate) + sinf. ComputeSize() +
+
+
+
+
+
+
+ 1828 WebVTTConfigurationBox::WebVTTConfigurationBox() {}
+ 1829 WebVTTConfigurationBox::~WebVTTConfigurationBox() {}
+
+
+
+
+
+ 1835 bool WebVTTConfigurationBox::ReadWriteInternal( BoxBuffer* buffer) {
+
+
+
+
+
+
+ 1842 uint32_t WebVTTConfigurationBox::ComputeSizeInternal() {
+
+
+
+ 1846 WebVTTSourceLabelBox::WebVTTSourceLabelBox() {}
+ 1847 WebVTTSourceLabelBox::~WebVTTSourceLabelBox() {}
+
+
+
+
+
+ 1853 bool WebVTTSourceLabelBox::ReadWriteInternal( BoxBuffer* buffer) {
+
+
+
+ 1857 : source_label.size());
+
+
+ 1860 uint32_t WebVTTSourceLabelBox::ComputeSizeInternal() {
+ 1861 if (source_label.empty())
+
+
+
+
+ 1866 TextSampleEntry::TextSampleEntry() : format(FOURCC_NULL) {}
+ 1867 TextSampleEntry::~TextSampleEntry() {}
+
+
+ 1870 if (format == FOURCC_NULL) {
+ 1871 LOG(ERROR) << "TextSampleEntry should be parsed according to the "
+ 1872 << "handler type recovered in its Media ancestor.";
+
+
+
+
+ 1877 bool TextSampleEntry::ReadWriteInternal( BoxBuffer* buffer) {
+
+ 1879 DCHECK(buffer-> reader());
+ 1880 format = buffer-> reader()->type();
+
+
+
+
+ 1885 buffer->ReadWriteUInt16(&data_reference_index));
+
+ 1887 if (format == FOURCC_wvtt) {
+
+
+
+
+
+
+
+
+ 1896 uint32_t TextSampleEntry::ComputeSizeInternal() {
+
+ 1898 return HeaderSize() + 6 + sizeof(data_reference_index) +
+
+
+
+ 1902 MediaHeader::MediaHeader()
+ 1903 : creation_time(0), modification_time(0), timescale(0), duration(0) {}
+ 1904 MediaHeader::~MediaHeader() {}
+
+
+ 1907 bool MediaHeader::ReadWriteInternal( BoxBuffer* buffer) {
+
+
+ 1910 uint8_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
+
+
+ 1913 buffer->ReadWriteUInt32(×cale) &&
+
+ 1915 language.ReadWrite(buffer) &&
+
+
+
+
+ 1920 uint32_t MediaHeader::ComputeSizeInternal() {
+ 1921 version = IsFitIn32Bits(creation_time, modification_time, duration) ? 0 : 1;
+
+ 1923 sizeof(uint32_t) * (1 + version) * 3 + language.ComputeSize() +
+
+
+
+ 1927 VideoMediaHeader::VideoMediaHeader()
+ 1928 : graphicsmode(0), opcolor_red(0), opcolor_green(0), opcolor_blue(0) {
+ 1929 const uint32_t kVideoMediaHeaderFlags = 1;
+ 1930 flags = kVideoMediaHeaderFlags;
+
+ 1932 VideoMediaHeader::~VideoMediaHeader() {}
+
+ 1934 bool VideoMediaHeader::ReadWriteInternal( BoxBuffer* buffer) {
+
+ 1936 buffer->ReadWriteUInt16(&graphicsmode) &&
+ 1937 buffer->ReadWriteUInt16(&opcolor_red) &&
+ 1938 buffer->ReadWriteUInt16(&opcolor_green) &&
+ 1939 buffer->ReadWriteUInt16(&opcolor_blue));
+
+
+
+ 1943 uint32_t VideoMediaHeader::ComputeSizeInternal() {
+ 1944 return HeaderSize() + sizeof(graphicsmode) + sizeof(opcolor_red) +
+ 1945 sizeof(opcolor_green) + sizeof(opcolor_blue);
+
+
+ 1948 SoundMediaHeader::SoundMediaHeader() : balance(0) {}
+ 1949 SoundMediaHeader::~SoundMediaHeader() {}
+
+ 1951 bool SoundMediaHeader::ReadWriteInternal( BoxBuffer* buffer) {
+
+ 1953 buffer->ReadWriteUInt16(&balance) &&
+
+
+
+
+ 1958 uint32_t SoundMediaHeader::ComputeSizeInternal() {
+ 1959 return HeaderSize() + sizeof(balance) + sizeof(uint16_t);
+
+
+ 1962 SubtitleMediaHeader::SubtitleMediaHeader() {}
+ 1963 SubtitleMediaHeader::~SubtitleMediaHeader() {}
+
+
+
+ 1967 bool SubtitleMediaHeader::ReadWriteInternal( BoxBuffer* buffer) {
+
+
+
+ 1971 uint32_t SubtitleMediaHeader::ComputeSizeInternal() {
+
+
+
+ 1975 DataEntryUrl::DataEntryUrl() {
+ 1976 const uint32_t kDataEntryUrlFlags = 1;
+ 1977 flags = kDataEntryUrlFlags;
+
+ 1979 DataEntryUrl::~DataEntryUrl() {}
+
+ 1981 bool DataEntryUrl::ReadWriteInternal( BoxBuffer* buffer) {
+
+
+ 1984 RCHECK(buffer->ReadWriteVector(&location, buffer-> BytesLeft()));
+
+ 1986 RCHECK(buffer->ReadWriteVector(&location, location.size()));
+
+
+
+
+ 1991 uint32_t DataEntryUrl::ComputeSizeInternal() {
+
+
+
+ 1995 DataReference::DataReference() {
+
+ 1997 data_entry.resize(1);
+
+ 1999 DataReference::~DataReference() {}
+
+ 2001 bool DataReference::ReadWriteInternal( BoxBuffer* buffer) {
+ 2002 uint32_t entry_count = data_entry.size();
+
+ 2004 buffer->ReadWriteUInt32(&entry_count));
+ 2005 data_entry.resize(entry_count);
+
+ 2007 for (uint32_t i = 0; i < entry_count; ++i)
+
+
+
+
+ 2012 uint32_t DataReference::ComputeSizeInternal() {
+ 2013 uint32_t count = data_entry.size();
+ 2014 uint32_t box_size = HeaderSize() + sizeof(count);
+ 2015 for (uint32_t i = 0; i < count; ++i)
+
+
+
+
+ 2020 DataInformation::DataInformation() {}
+ 2021 DataInformation::~DataInformation() {}
+
+
+ 2024 bool DataInformation::ReadWriteInternal( BoxBuffer* buffer) {
+
+
+
+
+
+ 2030 uint32_t DataInformation::ComputeSizeInternal() {
+
+
+
+ 2034 MediaInformation::MediaInformation() {}
+ 2035 MediaInformation::~MediaInformation() {}
+
+
+ 2038 bool MediaInformation::ReadWriteInternal( BoxBuffer* buffer) {
+
+
+
+
+ 2043 switch (sample_table.description.type) {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2060 uint32_t MediaInformation::ComputeSizeInternal() {
+
+
+ 2063 switch (sample_table.description.type) {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2083 bool Media::ReadWriteInternal( BoxBuffer* buffer) {
+
+
+
+
+
+
+
+
+
+
+
+ 2095 information.sample_table.description.type =
+ 2096 FourCCToTrackType(handler.handler_type);
+
+ 2098 handler.handler_type =
+ 2099 TrackTypeToFourCC(information.sample_table.description.type);
+ 2100 RCHECK(handler.handler_type != FOURCC_NULL);
+
+
+
+
+
+
+ 2107 uint32_t Media::ComputeSizeInternal() {
+ 2108 handler.handler_type =
+ 2109 TrackTypeToFourCC(information.sample_table.description.type);
+
+
+
+
+
+
+
+
+ 2118 bool Track::ReadWriteInternal( BoxBuffer* buffer) {
+
+
+
+
+
+
+
+
+
+ 2128 uint32_t Track::ComputeSizeInternal() {
+
+
+
+
+ 2133 MovieExtendsHeader::MovieExtendsHeader() : fragment_duration(0) {}
+ 2134 MovieExtendsHeader::~MovieExtendsHeader() {}
+
+
+ 2137 bool MovieExtendsHeader::ReadWriteInternal( BoxBuffer* buffer) {
+
+ 2139 size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
+
+
+
+
+ 2144 uint32_t MovieExtendsHeader::ComputeSizeInternal() {
+
+ 2146 if (fragment_duration == 0)
+
+ 2148 version = IsFitIn32Bits(fragment_duration) ? 0 : 1;
+ 2149 return HeaderSize() + sizeof(uint32_t) * (1 + version);
+
+
+ 2152 TrackExtends::TrackExtends()
+
+ 2154 default_sample_description_index(0),
+ 2155 default_sample_duration(0),
+ 2156 default_sample_size(0),
+ 2157 default_sample_flags(0) {}
+ 2158 TrackExtends::~TrackExtends() {}
+
+
+ 2161 bool TrackExtends::ReadWriteInternal( BoxBuffer* buffer) {
+
+ 2163 buffer->ReadWriteUInt32(&track_id) &&
+ 2164 buffer->ReadWriteUInt32(&default_sample_description_index) &&
+ 2165 buffer->ReadWriteUInt32(&default_sample_duration) &&
+ 2166 buffer->ReadWriteUInt32(&default_sample_size) &&
+ 2167 buffer->ReadWriteUInt32(&default_sample_flags));
+
+
+
+ 2171 uint32_t TrackExtends::ComputeSizeInternal() {
+
+ 2173 sizeof(default_sample_description_index) +
+ 2174 sizeof(default_sample_duration) + sizeof(default_sample_size) +
+ 2175 sizeof(default_sample_flags);
+
+
+ 2178 MovieExtends::MovieExtends() {}
+ 2179 MovieExtends::~MovieExtends() {}
+
+
+ 2182 bool MovieExtends::ReadWriteInternal( BoxBuffer* buffer) {
+
+
+
+
+ 2187 DCHECK(buffer-> reader());
+
+
+ 2190 for (uint32_t i = 0; i < tracks.size(); ++i)
+
+
+
+
+
+ 2196 uint32_t MovieExtends::ComputeSizeInternal() {
+
+ 2198 if (tracks.size() == 0)
+
+
+ 2201 for (uint32_t i = 0; i < tracks.size(); ++i)
+
+
+
+
+
+
+
+
+ 2210 bool Movie::ReadWriteInternal( BoxBuffer* buffer) {
+
+
+
+
+
+
+
+
+
+
+
+ 2222 for (uint32_t i = 0; i < tracks.size(); ++i)
+
+ 2224 for (uint32_t i = 0; i < pssh.size(); ++i)
+
+
+
+
+
+ 2230 uint32_t Movie::ComputeSizeInternal() {
+
+
+ 2233 for (uint32_t i = 0; i < tracks.size(); ++i)
+
+ 2235 for (uint32_t i = 0; i < pssh.size(); ++i)
+
+
+
+
+ 2240 TrackFragmentDecodeTime::TrackFragmentDecodeTime() : decode_time(0) {}
+ 2241 TrackFragmentDecodeTime::~TrackFragmentDecodeTime() {}
+
+
+ 2244 bool TrackFragmentDecodeTime::ReadWriteInternal( BoxBuffer* buffer) {
+
+ 2246 size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
+
+
+
+
+ 2251 uint32_t TrackFragmentDecodeTime::ComputeSizeInternal() {
+ 2252 version = IsFitIn32Bits(decode_time) ? 0 : 1;
+ 2253 return HeaderSize() + sizeof(uint32_t) * (1 + version);
+
+
+ 2256 MovieFragmentHeader::MovieFragmentHeader() : sequence_number(0) {}
+ 2257 MovieFragmentHeader::~MovieFragmentHeader() {}
+
+
+ 2260 bool MovieFragmentHeader::ReadWriteInternal( BoxBuffer* buffer) {
+
+ 2262 buffer->ReadWriteUInt32(&sequence_number);
+
+
+ 2265 uint32_t MovieFragmentHeader::ComputeSizeInternal() {
+ 2266 return HeaderSize() + sizeof(sequence_number);
+
+
+ 2269 TrackFragmentHeader::TrackFragmentHeader()
+
+ 2271 sample_description_index(0),
+ 2272 default_sample_duration(0),
+ 2273 default_sample_size(0),
+ 2274 default_sample_flags(0) {}
+
+ 2276 TrackFragmentHeader::~TrackFragmentHeader() {}
+
+
+ 2279 bool TrackFragmentHeader::ReadWriteInternal( BoxBuffer* buffer) {
+
+ 2281 buffer->ReadWriteUInt32(&track_id));
+
+ 2283 if (flags & kBaseDataOffsetPresentMask) {
+
+
+
+
+ 2288 uint64_t base_data_offset;
+ 2289 RCHECK(buffer->ReadWriteUInt64(&base_data_offset));
+ 2290 DLOG(WARNING) << "base-data-offset-present is not expected. Assumes "
+ 2291 "default-base-is-moof.";
+
+
+ 2294 if (flags & kSampleDescriptionIndexPresentMask) {
+ 2295 RCHECK(buffer->ReadWriteUInt32(&sample_description_index));
+ 2296 } else if (buffer-> Reading()) {
+ 2297 sample_description_index = 0;
+
+
+ 2300 if (flags & kDefaultSampleDurationPresentMask) {
+ 2301 RCHECK(buffer->ReadWriteUInt32(&default_sample_duration));
+ 2302 } else if (buffer-> Reading()) {
+ 2303 default_sample_duration = 0;
+
+
+ 2306 if (flags & kDefaultSampleSizePresentMask) {
+ 2307 RCHECK(buffer->ReadWriteUInt32(&default_sample_size));
+ 2308 } else if (buffer-> Reading()) {
+ 2309 default_sample_size = 0;
+
+
+ 2312 if (flags & kDefaultSampleFlagsPresentMask)
+ 2313 RCHECK(buffer->ReadWriteUInt32(&default_sample_flags));
+
+
+
+ 2317 uint32_t TrackFragmentHeader::ComputeSizeInternal() {
+ 2318 uint32_t box_size = HeaderSize() + sizeof(track_id);
+ 2319 if (flags & kSampleDescriptionIndexPresentMask)
+ 2320 box_size += sizeof(sample_description_index);
+ 2321 if (flags & kDefaultSampleDurationPresentMask)
+ 2322 box_size += sizeof(default_sample_duration);
+ 2323 if (flags & kDefaultSampleSizePresentMask)
+ 2324 box_size += sizeof(default_sample_size);
+ 2325 if (flags & kDefaultSampleFlagsPresentMask)
+ 2326 box_size += sizeof(default_sample_flags);
+
+
+
+ 2330 TrackFragmentRun::TrackFragmentRun() : sample_count(0), data_offset(0) {}
+ 2331 TrackFragmentRun::~TrackFragmentRun() {}
+
+
+ 2334 bool TrackFragmentRun::ReadWriteInternal( BoxBuffer* buffer) {
+
+
+
+
+
+ 2340 if (flags & kSampleCompTimeOffsetsPresentMask) {
+ 2341 for (uint32_t i = 0; i < sample_count; ++i) {
+ 2342 if (sample_composition_time_offsets[i] < 0) {
+
+
+
+
+
+
+
+
+ 2351 buffer->ReadWriteUInt32(&sample_count));
+
+ 2353 bool data_offset_present = (flags & kDataOffsetPresentMask) != 0;
+ 2354 bool first_sample_flags_present = (flags & kFirstSampleFlagsPresentMask) != 0;
+ 2355 bool sample_duration_present = (flags & kSampleDurationPresentMask) != 0;
+ 2356 bool sample_size_present = (flags & kSampleSizePresentMask) != 0;
+ 2357 bool sample_flags_present = (flags & kSampleFlagsPresentMask) != 0;
+ 2358 bool sample_composition_time_offsets_present =
+ 2359 (flags & kSampleCompTimeOffsetsPresentMask) != 0;
+
+ 2361 if (data_offset_present) {
+ 2362 RCHECK(buffer->ReadWriteUInt32(&data_offset));
+
+
+
+
+
+
+
+
+
+
+ 2373 uint32_t first_sample_flags(0);
+
+
+ 2376 if (first_sample_flags_present)
+ 2377 RCHECK(buffer->ReadWriteUInt32(&first_sample_flags));
+
+ 2379 if (sample_duration_present)
+ 2380 sample_durations.resize(sample_count);
+ 2381 if (sample_size_present)
+ 2382 sample_sizes.resize(sample_count);
+ 2383 if (sample_flags_present)
+ 2384 sample_flags.resize(sample_count);
+ 2385 if (sample_composition_time_offsets_present)
+ 2386 sample_composition_time_offsets.resize(sample_count);
+
+ 2388 if (first_sample_flags_present) {
+ 2389 first_sample_flags = sample_flags[0];
+ 2390 DCHECK(sample_flags.size() == 1);
+ 2391 RCHECK(buffer->ReadWriteUInt32(&first_sample_flags));
+
+
+ 2394 if (sample_duration_present)
+ 2395 DCHECK(sample_durations.size() == sample_count);
+ 2396 if (sample_size_present)
+ 2397 DCHECK(sample_sizes.size() == sample_count);
+ 2398 if (sample_flags_present)
+ 2399 DCHECK(sample_flags.size() == sample_count);
+ 2400 if (sample_composition_time_offsets_present)
+ 2401 DCHECK(sample_composition_time_offsets.size() == sample_count);
+
+
+ 2404 for (uint32_t i = 0; i < sample_count; ++i) {
+ 2405 if (sample_duration_present)
+ 2406 RCHECK(buffer->ReadWriteUInt32(&sample_durations[i]));
+ 2407 if (sample_size_present)
+ 2408 RCHECK(buffer->ReadWriteUInt32(&sample_sizes[i]));
+ 2409 if (sample_flags_present)
+ 2410 RCHECK(buffer->ReadWriteUInt32(&sample_flags[i]));
+
+ 2412 if (sample_composition_time_offsets_present) {
+
+ 2414 uint32_t sample_offset = sample_composition_time_offsets[i];
+ 2415 RCHECK(buffer->ReadWriteUInt32(&sample_offset));
+ 2416 sample_composition_time_offsets[i] = sample_offset;
+
+ 2418 int32_t sample_offset = sample_composition_time_offsets[i];
+ 2419 RCHECK(buffer->ReadWriteInt32(&sample_offset));
+ 2420 sample_composition_time_offsets[i] = sample_offset;
+
+
+
+
+
+ 2426 if (first_sample_flags_present) {
+ 2427 if (sample_flags.size() == 0) {
+ 2428 sample_flags.push_back(first_sample_flags);
+
+ 2430 sample_flags[0] = first_sample_flags;
+
+
+
+
+
+
+ 2437 uint32_t TrackFragmentRun::ComputeSizeInternal() {
+ 2438 uint32_t box_size = HeaderSize() + sizeof(sample_count);
+ 2439 if (flags & kDataOffsetPresentMask)
+ 2440 box_size += sizeof(data_offset);
+ 2441 if (flags & kFirstSampleFlagsPresentMask)
+ 2442 box_size += sizeof(uint32_t);
+ 2443 uint32_t fields = (flags & kSampleDurationPresentMask ? 1 : 0) +
+ 2444 (flags & kSampleSizePresentMask ? 1 : 0) +
+ 2445 (flags & kSampleFlagsPresentMask ? 1 : 0) +
+ 2446 (flags & kSampleCompTimeOffsetsPresentMask ? 1 : 0);
+ 2447 box_size += fields * sizeof(uint32_t) * sample_count;
+
+
+
+ 2451 TrackFragment::TrackFragment() : decode_time_absent(false) {}
+ 2452 TrackFragment::~TrackFragment() {}
+
+
+ 2455 bool TrackFragment::ReadWriteInternal( BoxBuffer* buffer) {
+
+
+
+
+ 2460 DCHECK(buffer-> reader());
+
+ 2462 if (!decode_time_absent)
+
+
+
+
+
+ 2468 if (!decode_time_absent)
+
+ 2470 for (uint32_t i = 0; i < runs.size(); ++i)
+
+ 2472 for (uint32_t i = 0; i < sample_to_groups.size(); ++i)
+
+ 2474 for (uint32_t i = 0; i < sample_group_descriptions.size(); ++i)
+
+
+
+
+
+
+
+ 2482 uint32_t TrackFragment::ComputeSizeInternal() {
+
+
+
+
+ 2487 for (uint32_t i = 0; i < runs.size(); ++i)
+
+ 2489 for (uint32_t i = 0; i < sample_group_descriptions.size(); ++i)
+ 2490 box_size += sample_group_descriptions[i]. ComputeSize();
+ 2491 for (uint32_t i = 0; i < sample_to_groups.size(); ++i)
+
+
+
+
+ 2496 MovieFragment::MovieFragment() {}
+ 2497 MovieFragment::~MovieFragment() {}
+
+
+ 2500 bool MovieFragment::ReadWriteInternal( BoxBuffer* buffer) {
+
+
+
+
+
+
+
+
+
+ 2510 for (uint32_t i = 0; i < tracks.size(); ++i)
+
+ 2512 for (uint32_t i = 0; i < pssh.size(); ++i)
+
+
+
+
+
+ 2518 uint32_t MovieFragment::ComputeSizeInternal() {
+
+ 2520 for (uint32_t i = 0; i < tracks.size(); ++i)
+
+ 2522 for (uint32_t i = 0; i < pssh.size(); ++i)
+
+
+
+
+ 2527 SegmentIndex::SegmentIndex()
+
+
+ 2530 earliest_presentation_time(0),
+
+ 2532 SegmentIndex::~SegmentIndex() {}
+
+
+ 2535 bool SegmentIndex::ReadWriteInternal( BoxBuffer* buffer) {
+
+ 2537 buffer->ReadWriteUInt32(&reference_id) &&
+ 2538 buffer->ReadWriteUInt32(×cale));
+
+ 2540 size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
+
+
+
+
+ 2545 uint16_t reference_count = static_cast<uint16_t >(references.size());
+
+ 2547 buffer->ReadWriteUInt16(&reference_count));
+ 2548 references.resize(reference_count);
+
+ 2550 uint32_t reference_type_size;
+
+ 2552 for (uint32_t i = 0; i < reference_count; ++i) {
+
+ 2554 reference_type_size = references[i].referenced_size;
+ 2555 if (references[i].reference_type)
+ 2556 reference_type_size |= (1 << 31);
+ 2557 sap = (references[i].sap_type << 28) | references[i].sap_delta_time;
+ 2558 if (references[i].starts_with_sap)
+
+
+ 2561 RCHECK(buffer->ReadWriteUInt32(&reference_type_size) &&
+ 2562 buffer->ReadWriteUInt32(&references[i].subsegment_duration) &&
+ 2563 buffer->ReadWriteUInt32(&sap));
+
+ 2565 references[i].reference_type = (reference_type_size >> 31) ? true : false;
+ 2566 references[i].referenced_size = reference_type_size & ~(1 << 31);
+ 2567 references[i].starts_with_sap = (sap >> 31) ? true : false;
+ 2568 references[i].sap_type =
+ 2569 static_cast<SegmentReference::SAPType >((sap >> 28) & 0x07);
+ 2570 references[i].sap_delta_time = sap & ~(0xF << 28);
+
+
+
+
+
+ 2576 uint32_t SegmentIndex::ComputeSizeInternal() {
+ 2577 version = IsFitIn32Bits(earliest_presentation_time, first_offset) ? 0 : 1;
+ 2578 return HeaderSize() + sizeof(reference_id) + sizeof(timescale) +
+ 2579 sizeof(uint32_t) * (1 + version) * 2 + 2 * sizeof(uint16_t) +
+ 2580 3 * sizeof(uint32_t) * references.size();
+
+
+ 2583 MediaData::MediaData() : data_size(0) {}
+ 2584 MediaData::~MediaData() {}
+
+
+ 2587 bool MediaData::ReadWriteInternal( BoxBuffer* buffer) {
+ 2588 NOTIMPLEMENTED() << "Actual data is parsed and written separately.";
+
+
+
+ 2592 uint32_t MediaData::ComputeSizeInternal() {
+
+
+
+ 2596 CueSourceIDBox::CueSourceIDBox() : source_id(kCueSourceIdNotSet) {}
+ 2597 CueSourceIDBox::~CueSourceIDBox() {}
+
+
+
+ 2601 bool CueSourceIDBox::ReadWriteInternal( BoxBuffer* buffer) {
+
+
+
+
+ 2606 uint32_t CueSourceIDBox::ComputeSizeInternal() {
+ 2607 if (source_id == kCueSourceIdNotSet)
+
+
+
+
+ 2612 CueTimeBox::CueTimeBox() {}
+ 2613 CueTimeBox::~CueTimeBox() {}
+
+
+
+
+
+ 2619 bool CueTimeBox::ReadWriteInternal( BoxBuffer* buffer) {
+
+
+
+
+
+
+ 2626 uint32_t CueTimeBox::ComputeSizeInternal() {
+ 2627 if (cue_current_time.empty())
+
+ 2629 return HeaderSize() + cue_current_time.size();
+
+
+ 2632 CueIDBox::CueIDBox() {}
+ 2633 CueIDBox::~CueIDBox() {}
+
+
+
+
+
+ 2639 bool CueIDBox::ReadWriteInternal( BoxBuffer* buffer) {
+
+
+
+
+
+ 2645 uint32_t CueIDBox::ComputeSizeInternal() {
+
+
+
+
+
+ 2651 CueSettingsBox::CueSettingsBox() {}
+ 2652 CueSettingsBox::~CueSettingsBox() {}
+
+
+
+
+
+ 2658 bool CueSettingsBox::ReadWriteInternal( BoxBuffer* buffer) {
+
+
+
+
+
+ 2664 uint32_t CueSettingsBox::ComputeSizeInternal() {
+ 2665 if (settings.empty())
+
+
+
+
+ 2670 CuePayloadBox::CuePayloadBox() {}
+ 2671 CuePayloadBox::~CuePayloadBox() {}
+
+
+
+
+
+ 2677 bool CuePayloadBox::ReadWriteInternal( BoxBuffer* buffer) {
+
+
+
+
+
+ 2683 uint32_t CuePayloadBox::ComputeSizeInternal() {
+
+
+
+ 2687 VTTEmptyCueBox::VTTEmptyCueBox() {}
+ 2688 VTTEmptyCueBox::~VTTEmptyCueBox() {}
+
+
+
+
+
+ 2694 bool VTTEmptyCueBox::ReadWriteInternal( BoxBuffer* buffer) {
+
+
+
+ 2698 uint32_t VTTEmptyCueBox::ComputeSizeInternal() {
+
+
+
+ 2702 VTTAdditionalTextBox::VTTAdditionalTextBox() {}
+ 2703 VTTAdditionalTextBox::~VTTAdditionalTextBox() {}
+
+
+
+
+
+ 2709 bool VTTAdditionalTextBox::ReadWriteInternal( BoxBuffer* buffer) {
+
+
+ 2712 &cue_additional_text,
+
+
+
+ 2716 uint32_t VTTAdditionalTextBox::ComputeSizeInternal() {
+ 2717 return HeaderSize() + cue_additional_text.size();
+
+
+ 2720 VTTCueBox::VTTCueBox() {}
+ 2721 VTTCueBox::~VTTCueBox() {}
+
+
+
+
+
+ 2727 bool VTTCueBox::ReadWriteInternal( BoxBuffer* buffer) {
+
+
+
+
+
+
+
+
+
+
+ 2738 uint32_t VTTCueBox::ComputeSizeInternal() {
+
+
+
+
+
+
+
+
+
+
+
-
-FourCC BoxType() const override
-
-
-
-
-
+
+FourCC BoxType() const override
+
+
+
+
+
bool ParseFromBuffer(uint8_t iv_size, bool has_subsamples, BufferReader *reader)
-
+
-
-
+
+
-
-
+
+
-
+
-
+
-
-
-
-
+
+
+
+
-
-
-
-FourCC BoxType() const override
-
+
+
+
+FourCC BoxType() const override
+
-
-
-
-FourCC BoxType() const override
+
+
+
+FourCC BoxType() const override
-
+
-
-FourCC BoxType() const override
-
+
+FourCC BoxType() const override
+
-
+
uint32_t GetTotalSizeOfSubsamples() const
-
bool ReadWrite(uint8_t iv_size, bool has_subsamples, BoxBuffer *buffer)
-
-
-
-
+
+
+
+
-
-
-
+
+
+
+
-
+
-
-
+
+
-
-
-
+
+
+
-
+
-
-
+
+
-
-
-
-
+
+
+
+
-
-FourCC BoxType() const override
+
+FourCC BoxType() const override
-
-
+
+
-
+
uint32_t ComputeSize() const
-
-
+
+
-
+
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 d20672edd7..56704a4a90 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 0092a181ef..4c193b0ba5 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
@@ -201,7 +201,7 @@ Additional Inherited Members |
Implements shaka::media::mp4::Box.
-Definition at line 2331 of file box_definitions.cc.
+Definition at line 2332 of file box_definitions.cc.
@@ -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 1f8a343cde..0812f1d2c7 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
@@ -174,7 +174,7 @@ Additional Inherited Members
Implements shaka::media::mp4::Box.
-Definition at line 1407 of file box_definitions.cc.
+Definition at line 1408 of file box_definitions.cc.
@@ -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 4bfa75922a..fe3c46431a 100644
--- a/docs/de/d0f/local__file_8h_source.html
+++ b/docs/de/d0f/local__file_8h_source.html
@@ -137,22 +137,22 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
59 #endif // PACKAGER_FILE_LOCAL_FILE_H_
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
diff --git a/docs/de/d12/container__names_8h_source.html b/docs/de/d12/container__names_8h_source.html
index e7997b671b..bb64ee2abc 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 86eee8af6a..4236344afa 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 02461cc11c..c814e8cbd5 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 6682436c18..cb820a53eb 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 82e20afa2f..fab7311273 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 a5ebfbeedf..444a5bf097 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 cdbcac1347..f8e89ebbde 100644
--- a/docs/de/d1e/mp4_2single__segment__segmenter_8cc_source.html
+++ b/docs/de/d1e/mp4_2single__segment__segmenter_8cc_source.html
@@ -172,170 +172,171 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
83 LOG(ERROR) <<
"Failed to create temporary file.";
84 return Status(error::FILE_FAILURE,
"Unable to create temporary file.");
- 86 temp_file_name_ = temp_file_path.value();
+ 86 temp_file_name_ = temp_file_path.AsUTF8Unsafe();
- 89 base::FilePath(options().temp_dir).Append(TempFileName()).value();
-
- 91 temp_file_.reset(
File::Open(temp_file_name_.c_str(),
"w"));
-
-
- 94 : Status(error::FILE_FAILURE,
- 95 "Cannot open file to write " + temp_file_name_);
-
-
- 98 Status SingleSegmentSegmenter::DoFinalize() {
-
-
-
-
-
-
- 105 if (!temp_file_.release()->Close()) {
- 106 return Status(error::FILE_FAILURE,
- 107 "Cannot close the temp file " + temp_file_name_);
-
-
- 110 scoped_ptr<File, FileCloser> file(
- 111 File::Open(options().output_file_name.c_str(),
"w"));
-
- 113 return Status(error::FILE_FAILURE,
- 114 "Cannot open file to write " + options().output_file_name);
-
-
- 117 LOG(INFO) <<
"Update media header (moov) and rewrite the file to '"
-
-
-
- 121 scoped_ptr<BufferWriter> buffer(
new BufferWriter());
- 122 ftyp()->Write(buffer.get());
- 123 moov()->Write(buffer.get());
- 124 vod_sidx_->Write(buffer.get());
- 125 Status status = buffer->WriteToFile(file.get());
-
-
-
-
- 130 scoped_ptr<File, FileCloser> temp_file(
-
- 132 if (temp_file == NULL) {
- 133 return Status(error::FILE_FAILURE,
- 134 "Cannot open file to read " + temp_file_name_);
-
-
-
- 138 const uint64_t re_segment_progress_target = progress_target() * 0.5;
-
- 140 const int kBufSize = 0x200000;
- 141 scoped_ptr<uint8_t[]> buf(
new uint8_t[kBufSize]);
-
- 143 int64_t size = temp_file->Read(buf.get(), kBufSize);
-
-
- 146 }
else if (size < 0) {
- 147 return Status(error::FILE_FAILURE,
- 148 "Failed to read file " + temp_file_name_);
-
- 150 int64_t size_written = file->Write(buf.get(), size);
- 151 if (size_written != size) {
- 152 return Status(error::FILE_FAILURE,
- 153 "Failed to write file " + options().output_file_name);
-
-
- 156 re_segment_progress_target);
-
-
-
-
-
- 162 Status SingleSegmentSegmenter::DoFinalizeSegment() {
-
- 164 DCHECK(fragment_buffer());
-
-
-
- 168 std::vector<SegmentReference>& refs = sidx()->references;
- 169 SegmentReference& vod_ref = refs[0];
- 170 uint64_t first_sap_time =
- 171 refs[0].sap_delta_time + refs[0].earliest_presentation_time;
- 172 for (uint32_t i = 1; i < refs.size(); ++i) {
- 173 vod_ref.referenced_size += refs[i].referenced_size;
-
-
-
- 177 vod_ref.subsegment_duration += refs[i].subsegment_duration;
- 178 vod_ref.earliest_presentation_time = std::min(
- 179 vod_ref.earliest_presentation_time, refs[i].earliest_presentation_time);
-
- 181 if (vod_ref.sap_type == SegmentReference::TypeUnknown &&
- 182 refs[i].sap_type != SegmentReference::TypeUnknown) {
- 183 vod_ref.sap_type = refs[i].sap_type;
-
- 185 refs[i].sap_delta_time + refs[i].earliest_presentation_time;
-
-
-
- 189 if (vod_ref.sap_type != SegmentReference::TypeUnknown) {
- 190 vod_ref.sap_delta_time =
- 191 first_sap_time - vod_ref.earliest_presentation_time;
-
-
-
- 195 if (vod_sidx_ == NULL) {
- 196 vod_sidx_.reset(
new SegmentIndex());
- 197 vod_sidx_->reference_id = sidx()->reference_id;
- 198 vod_sidx_->timescale = sidx()->timescale;
-
- 200 if (vod_ref.earliest_presentation_time > 0) {
- 201 const double starting_time_in_seconds =
- 202 static_cast<double>(vod_ref.earliest_presentation_time) /
- 203 GetReferenceTimeScale();
-
- 205 if (starting_time_in_seconds > 0.5) {
-
-
-
-
- 210 LOG(WARNING) <<
"Warning! Non-zero starting time (in seconds): "
- 211 << starting_time_in_seconds
- 212 <<
". Manual adjustment of presentationTimeOffset in "
- 213 "mpd might be necessary.";
-
-
-
- 217 vod_sidx_->earliest_presentation_time = 0;
-
- 219 vod_sidx_->references.push_back(vod_ref);
-
-
- 222 size_t segment_size = fragment_buffer()->Size();
- 223 Status status = fragment_buffer()->WriteToFile(temp_file_.get());
- 224 if (!status.ok())
return status;
-
-
- 227 if (muxer_listener()) {
-
- 229 muxer_listener()->
OnNewSegment(options().output_file_name,
- 230 vod_ref.earliest_presentation_time,
- 231 vod_ref.subsegment_duration, segment_size);
-
-
-
-
-
-
-
+ 89 base::FilePath::FromUTF8Unsafe(options().temp_dir)
+ 90 .Append(base::FilePath::FromUTF8Unsafe(TempFileName())).AsUTF8Unsafe();
+
+ 92 temp_file_.reset(
File::Open(temp_file_name_.c_str(),
"w"));
+
+
+ 95 : Status(error::FILE_FAILURE,
+ 96 "Cannot open file to write " + temp_file_name_);
+
+
+ 99 Status SingleSegmentSegmenter::DoFinalize() {
+
+
+
+
+
+
+ 106 if (!temp_file_.release()->Close()) {
+ 107 return Status(error::FILE_FAILURE,
+ 108 "Cannot close the temp file " + temp_file_name_);
+
+
+ 111 scoped_ptr<File, FileCloser> file(
+ 112 File::Open(options().output_file_name.c_str(),
"w"));
+
+ 114 return Status(error::FILE_FAILURE,
+ 115 "Cannot open file to write " + options().output_file_name);
+
+
+ 118 LOG(INFO) <<
"Update media header (moov) and rewrite the file to '"
+
+
+
+ 122 scoped_ptr<BufferWriter> buffer(
new BufferWriter());
+ 123 ftyp()->Write(buffer.get());
+ 124 moov()->Write(buffer.get());
+ 125 vod_sidx_->Write(buffer.get());
+ 126 Status status = buffer->WriteToFile(file.get());
+
+
+
+
+ 131 scoped_ptr<File, FileCloser> temp_file(
+
+ 133 if (temp_file == NULL) {
+ 134 return Status(error::FILE_FAILURE,
+ 135 "Cannot open file to read " + temp_file_name_);
+
+
+
+ 139 const uint64_t re_segment_progress_target = progress_target() * 0.5;
+
+ 141 const int kBufSize = 0x200000;
+ 142 scoped_ptr<uint8_t[]> buf(
new uint8_t[kBufSize]);
+
+ 144 int64_t size = temp_file->Read(buf.get(), kBufSize);
+
+
+ 147 }
else if (size < 0) {
+ 148 return Status(error::FILE_FAILURE,
+ 149 "Failed to read file " + temp_file_name_);
+
+ 151 int64_t size_written = file->Write(buf.get(), size);
+ 152 if (size_written != size) {
+ 153 return Status(error::FILE_FAILURE,
+ 154 "Failed to write file " + options().output_file_name);
+
+
+ 157 re_segment_progress_target);
+
+
+
+
+
+ 163 Status SingleSegmentSegmenter::DoFinalizeSegment() {
+
+ 165 DCHECK(fragment_buffer());
+
+
+
+ 169 std::vector<SegmentReference>& refs = sidx()->references;
+ 170 SegmentReference& vod_ref = refs[0];
+ 171 uint64_t first_sap_time =
+ 172 refs[0].sap_delta_time + refs[0].earliest_presentation_time;
+ 173 for (uint32_t i = 1; i < refs.size(); ++i) {
+ 174 vod_ref.referenced_size += refs[i].referenced_size;
+
+
+
+ 178 vod_ref.subsegment_duration += refs[i].subsegment_duration;
+ 179 vod_ref.earliest_presentation_time = std::min(
+ 180 vod_ref.earliest_presentation_time, refs[i].earliest_presentation_time);
+
+ 182 if (vod_ref.sap_type == SegmentReference::TypeUnknown &&
+ 183 refs[i].sap_type != SegmentReference::TypeUnknown) {
+ 184 vod_ref.sap_type = refs[i].sap_type;
+
+ 186 refs[i].sap_delta_time + refs[i].earliest_presentation_time;
+
+
+
+ 190 if (vod_ref.sap_type != SegmentReference::TypeUnknown) {
+ 191 vod_ref.sap_delta_time =
+ 192 first_sap_time - vod_ref.earliest_presentation_time;
+
+
+
+ 196 if (vod_sidx_ == NULL) {
+ 197 vod_sidx_.reset(
new SegmentIndex());
+ 198 vod_sidx_->reference_id = sidx()->reference_id;
+ 199 vod_sidx_->timescale = sidx()->timescale;
+
+ 201 if (vod_ref.earliest_presentation_time > 0) {
+ 202 const double starting_time_in_seconds =
+ 203 static_cast<double>(vod_ref.earliest_presentation_time) /
+ 204 GetReferenceTimeScale();
+
+ 206 if (starting_time_in_seconds > 0.5) {
+
+
+
+
+ 211 LOG(WARNING) <<
"Warning! Non-zero starting time (in seconds): "
+ 212 << starting_time_in_seconds
+ 213 <<
". Manual adjustment of presentationTimeOffset in "
+ 214 "mpd might be necessary.";
+
+
+
+ 218 vod_sidx_->earliest_presentation_time = 0;
+
+ 220 vod_sidx_->references.push_back(vod_ref);
+
+
+ 223 size_t segment_size = fragment_buffer()->Size();
+ 224 Status status = fragment_buffer()->WriteToFile(temp_file_.get());
+ 225 if (!status.ok())
return status;
+
+
+ 228 if (muxer_listener()) {
+
+ 230 muxer_listener()->
OnNewSegment(options().output_file_name,
+ 231 vod_ref.earliest_presentation_time,
+ 232 vod_ref.subsegment_duration, segment_size);
+
+
+
+
+
+
+
-
+
diff --git a/docs/de/d22/aes__pattern__cryptor_8cc_source.html b/docs/de/d22/aes__pattern__cryptor_8cc_source.html
index 1b04d84f83..47587b906b 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 ee0d7737bb..05ab208037 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 5ab2e7f5d3..913706ad46 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
@@ -183,7 +183,7 @@ Additional Inherited Members |
Implements shaka::media::mp4::Box.
-Definition at line 2158 of file box_definitions.cc.
+Definition at line 2159 of file box_definitions.cc.
@@ -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 8e4349ac42..247489cd6e 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 1bd571989b..de32c2fc03 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 7bbe921f8f..b50340a98b 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 1cf99b53bd..f59a4c4df4 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 3cf82f70b7..01a373d45c 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 adef03988a..d35402a19e 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 ee9a3394e6..a9ef905e9e 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 8b9cb1154f..34aa68954e 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 0c2ff6f320..de4b0d1f28 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 06ddbd580c..5734449e40 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 9dfe3ec737..22697acbf2 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 1036 of file mpd_builder.cc.
+Definition at line 1035 of file mpd_builder.cc.
@@ -234,7 +234,7 @@ template<MpdBuilder::MpdType type>
-Definition at line 1093 of file mpd_builder.cc.
+Definition at line 1092 of file mpd_builder.cc.
@@ -285,7 +285,7 @@ template<MpdBuilder::MpdType type>
-Definition at line 1105 of file mpd_builder.cc.
+Definition at line 1104 of file mpd_builder.cc.
@@ -303,7 +303,7 @@ template<MpdBuilder::MpdType type>
@@ -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 1051 of file mpd_builder.cc.
+Definition at line 1050 of file mpd_builder.cc.
@@ -381,7 +381,7 @@ template<MpdBuilder::MpdType type>
-Definition at line 1129 of file mpd_builder.cc.
+Definition at line 1128 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 1208 of file mpd_builder.cc.
+
Definition at line 1207 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 1099 of file mpd_builder.cc.
+Definition at line 1098 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 cbdca0e7e9..12d1b51cdf 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 177878f9cb..41cbf7bbab 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 2525b20115..522fba352b 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 2fcd79eb64..651dd5b84d 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 bab2c67127..a5eb721ea0 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 6a8283e90c..56aeca9668 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 c717ad2978..ee39d2657f 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 bec89d96c9..cf82ad2b28 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 9f331ec623..7d566f7723 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 1b47439af5..74305652da 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 e35efc403c..9f9e9964bf 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 3ca64f23a7..5e4bd69fb5 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 57a2973f56..c6a55d3a3f 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 a16cf6b1cb..48b3d0b356 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 108c15263d..ad606e440a 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 0f4f43d58c..64bec7120a 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 81bd62d396..f7ef365d45 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 5dabe57177..e4cce4b9e3 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 2ea26decd1..b847a242f0 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 0e78feab2f..da03e64fd4 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 f7abe7392c..f16f14cd6b 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 df15ee262b..39e6af8171 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 99fea4db04..de8fcd1be8 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 7bedcbae1c..14d0292704 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 639010c2a3..bd0464aabf 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 6283ef2657..dfe428e2b1 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 ad093dabad..e0337d1830 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 c22ba53bec..b70ce03e6b 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 ecc1fc040d..004d605582 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 99ffafe443..35e4c79d53 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 726efe54ae..8236139f0a 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 343e287ffc..844197e460 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 60a4e55119..8217f6ac21 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 b9dbbabcf1..c13efaeb03 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 5894b6b388..0cee8c6821 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 da86468cc6..d9b8328a34 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 c80bddadc1..a9602a7cac 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
@@ -171,7 +171,7 @@ Additional Inherited Members |
Implements shaka::media::mp4::Box.
-Definition at line 677 of file box_definitions.cc.
+Definition at line 678 of file box_definitions.cc.
@@ -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 a0c2e479d6..45bf4007c5 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 d4c929e035..7655308874 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 f2e47e406f..c9266898e5 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 e528712461..000fb6623a 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
@@ -165,7 +165,7 @@ Additional Inherited Members
Implements shaka::media::mp4::Box.
-Definition at line 1710 of file box_definitions.cc.
+Definition at line 1711 of file box_definitions.cc.
@@ -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 780ba55e84..bb92686226 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 484ce26375..e27665e3ff 100644
--- a/docs/df/d05/vp__codec__configuration__record_8cc_source.html
+++ b/docs/df/d05/vp__codec__configuration__record_8cc_source.html
@@ -250,116 +250,117 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
161 uint8_t chroma = (chroma_subsampling_ << 4) | (transfer_function_ << 1) |
162 (video_full_range_flag_ ? 1 : 0);
- 164 uint16_t codec_initialization_data_size = codec_initialization_data_.size();
- 165 writer.
AppendInt(codec_initialization_data_size);
- 166 writer.AppendVector(codec_initialization_data_);
- 167 writer.SwapBuffer(data);
-
-
-
-
-
- 173 if (profile_is_set_) {
- 174 writer.
AppendInt(static_cast<uint8_t>(kFeatureProfile));
- 175 writer.
AppendInt(static_cast<uint8_t>(1));
- 176 writer.
AppendInt(static_cast<uint8_t>(profile_));
-
-
- 179 if (level_is_set_ && level_ != 0) {
- 180 writer.
AppendInt(static_cast<uint8_t>(kFeatureLevel));
- 181 writer.
AppendInt(static_cast<uint8_t>(1));
- 182 writer.
AppendInt(static_cast<uint8_t>(level_));
-
-
- 185 if (bit_depth_is_set_) {
- 186 writer.
AppendInt(static_cast<uint8_t>(kFeatureBitDepth));
- 187 writer.
AppendInt(static_cast<uint8_t>(1));
- 188 writer.
AppendInt(static_cast<uint8_t>(bit_depth_));
-
-
- 191 if (chroma_subsampling_is_set_) {
-
-
- 194 const uint8_t subsampling =
- 195 chroma_subsampling_ == CHROMA_420_COLLOCATED_WITH_LUMA
- 196 ? CHROMA_420_VERTICAL
- 197 : chroma_subsampling_;
-
- 199 writer.
AppendInt(static_cast<uint8_t>(kFeatureChromaSubsampling));
- 200 writer.
AppendInt(static_cast<uint8_t>(1));
-
-
-
- 204 writer.SwapBuffer(data);
-
-
-
- 208 const std::string fields[] = {
- 209 base::IntToString(profile_),
- 210 base::IntToString(level_),
- 211 base::IntToString(bit_depth_),
- 212 base::IntToString(color_space_),
- 213 base::IntToString(chroma_subsampling_),
- 214 base::IntToString(transfer_function_),
- 215 (video_full_range_flag_ ?
"01" :
"00"),
-
-
- 218 std::string codec_string = VPCodecAsString(codec);
- 219 for (
const std::string& field : fields) {
-
-
- 222 base::StringAppendF(&codec_string,
".%2s", field.c_str());
-
- 224 base::ReplaceChars(codec_string,
" ",
"0", &codec_string);
-
-
-
- 228 void VPCodecConfigurationRecord::MergeFrom(
-
- 230 MergeField(
"profile", other.profile_, other.profile_is_set_, &profile_,
-
- 232 MergeField(
"level", other.level_, other.level_is_set_, &level_,
-
- 234 MergeField(
"bit depth", other.bit_depth_, other.bit_depth_is_set_,
- 235 &bit_depth_, &bit_depth_is_set_);
- 236 MergeField(
"color space", other.color_space_, other.color_space_is_set_,
- 237 &color_space_, &color_space_is_set_);
- 238 MergeField(
"chroma subsampling", other.chroma_subsampling_,
- 239 other.chroma_subsampling_is_set_, &chroma_subsampling_,
- 240 &chroma_subsampling_is_set_);
- 241 MergeField(
"transfer function", other.transfer_function_,
- 242 other.transfer_function_is_set_, &transfer_function_,
- 243 &transfer_function_is_set_);
- 244 MergeField(
"video full range flag", other.video_full_range_flag_,
- 245 other.video_full_range_flag_is_set_, &video_full_range_flag_,
- 246 &video_full_range_flag_is_set_);
-
- 248 if (codec_initialization_data_.empty() ||
- 249 !other.codec_initialization_data_.empty()) {
- 250 if (!codec_initialization_data_.empty() &&
- 251 codec_initialization_data_ != other.codec_initialization_data_) {
- 252 LOG(WARNING) <<
"VPx codec initialization data is inconsistent";
-
- 254 codec_initialization_data_ = other.codec_initialization_data_;
-
-
-
-
-
+ 164 uint16_t codec_initialization_data_size =
+ 165 static_cast<uint16_t
>(codec_initialization_data_.size());
+ 166 writer.
AppendInt(codec_initialization_data_size);
+ 167 writer.AppendVector(codec_initialization_data_);
+ 168 writer.SwapBuffer(data);
+
+
+
+
+
+ 174 if (profile_is_set_) {
+ 175 writer.
AppendInt(static_cast<uint8_t>(kFeatureProfile));
+ 176 writer.
AppendInt(static_cast<uint8_t>(1));
+ 177 writer.
AppendInt(static_cast<uint8_t>(profile_));
+
+
+ 180 if (level_is_set_ && level_ != 0) {
+ 181 writer.
AppendInt(static_cast<uint8_t>(kFeatureLevel));
+ 182 writer.
AppendInt(static_cast<uint8_t>(1));
+ 183 writer.
AppendInt(static_cast<uint8_t>(level_));
+
+
+ 186 if (bit_depth_is_set_) {
+ 187 writer.
AppendInt(static_cast<uint8_t>(kFeatureBitDepth));
+ 188 writer.
AppendInt(static_cast<uint8_t>(1));
+ 189 writer.
AppendInt(static_cast<uint8_t>(bit_depth_));
+
+
+ 192 if (chroma_subsampling_is_set_) {
+
+
+ 195 const uint8_t subsampling =
+ 196 chroma_subsampling_ == CHROMA_420_COLLOCATED_WITH_LUMA
+ 197 ? CHROMA_420_VERTICAL
+ 198 : chroma_subsampling_;
+
+ 200 writer.
AppendInt(static_cast<uint8_t>(kFeatureChromaSubsampling));
+ 201 writer.
AppendInt(static_cast<uint8_t>(1));
+
+
+
+ 205 writer.SwapBuffer(data);
+
+
+
+ 209 const std::string fields[] = {
+ 210 base::IntToString(profile_),
+ 211 base::IntToString(level_),
+ 212 base::IntToString(bit_depth_),
+ 213 base::IntToString(color_space_),
+ 214 base::IntToString(chroma_subsampling_),
+ 215 base::IntToString(transfer_function_),
+ 216 (video_full_range_flag_ ?
"01" :
"00"),
+
+
+ 219 std::string codec_string = VPCodecAsString(codec);
+ 220 for (
const std::string& field : fields) {
+
+
+ 223 base::StringAppendF(&codec_string,
".%2s", field.c_str());
+
+ 225 base::ReplaceChars(codec_string,
" ",
"0", &codec_string);
+
+
+
+ 229 void VPCodecConfigurationRecord::MergeFrom(
+
+ 231 MergeField(
"profile", other.profile_, other.profile_is_set_, &profile_,
+
+ 233 MergeField(
"level", other.level_, other.level_is_set_, &level_,
+
+ 235 MergeField(
"bit depth", other.bit_depth_, other.bit_depth_is_set_,
+ 236 &bit_depth_, &bit_depth_is_set_);
+ 237 MergeField(
"color space", other.color_space_, other.color_space_is_set_,
+ 238 &color_space_, &color_space_is_set_);
+ 239 MergeField(
"chroma subsampling", other.chroma_subsampling_,
+ 240 other.chroma_subsampling_is_set_, &chroma_subsampling_,
+ 241 &chroma_subsampling_is_set_);
+ 242 MergeField(
"transfer function", other.transfer_function_,
+ 243 other.transfer_function_is_set_, &transfer_function_,
+ 244 &transfer_function_is_set_);
+ 245 MergeField(
"video full range flag", other.video_full_range_flag_,
+ 246 other.video_full_range_flag_is_set_, &video_full_range_flag_,
+ 247 &video_full_range_flag_is_set_);
+
+ 249 if (codec_initialization_data_.empty() ||
+ 250 !other.codec_initialization_data_.empty()) {
+ 251 if (!codec_initialization_data_.empty() &&
+ 252 codec_initialization_data_ != other.codec_initialization_data_) {
+ 253 LOG(WARNING) <<
"VPx codec initialization data is inconsistent";
+
+ 255 codec_initialization_data_ = other.codec_initialization_data_;
+
+
+
+
+
-
+
-
+
diff --git a/docs/df/d1a/offset__byte__queue_8cc_source.html b/docs/df/d1a/offset__byte__queue_8cc_source.html
index daebca096a..1ff0302c38 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 dbf368dda5..8930ee1fe3 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 2e5772461a..958d1b3a72 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 b4ec681225..f5d334af1e 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 3dd25b40b2..70e8d31e3b 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 1b2e86911e..5d4c1f39c9 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 75c6e6ca99..d4a0a1888c 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 9acc8868d2..1e0dd8d504 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 b4d89aebf6..70da571a42 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 a2b49ac0b0..08ae74ea6e 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 3e060ebfb3..14bb156bd6 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 fd64acb53c..608da62668 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 54d184c26d..2ae392a638 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 398f3c392f..1508a576d0 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 19ee5c2958..f3d4d9ade1 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 1482995ab8..7fb5cf06f7 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 93aa4df2d9..a7549016ae 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 ff10b30577..64f02df5af 100644
--- a/docs/df/d51/classshaka_1_1media_1_1mp4_1_1EncryptingFragmenter-members.html
+++ b/docs/df/d51/classshaka_1_1media_1_1mp4_1_1EncryptingFragmenter-members.html
@@ -122,7 +122,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
diff --git a/docs/df/d60/classshaka_1_1MockMpdBuilder.html b/docs/df/d60/classshaka_1_1MockMpdBuilder.html
index 8ad86d7fb5..230819e4df 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 d0a1d9101d..5212dbec6c 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 ca5ecb3443..4e753a379c 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 7e330eb49c..692523d582 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 14c856a8af..d06ab24c13 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 74ec8507ee..27b89ed431 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
@@ -171,7 +171,7 @@ Additional Inherited Members
Implements shaka::media::mp4::Box.
-Definition at line 699 of file box_definitions.cc.
+Definition at line 700 of file box_definitions.cc.
@@ -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 d884e5b32c..8abd7bcd14 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
@@ -187,7 +187,7 @@ Additional Inherited Members
Implements shaka::media::mp4::Box.
-Definition at line 2452 of file box_definitions.cc.
+Definition at line 2453 of file box_definitions.cc.
@@ -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 24cc3c4da2..d09b2eae73 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 2719c64787..172ae59c90 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 73d353d4f4..bb3b47f525 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 6a8db148e1..c2483499e9 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
@@ -171,7 +171,7 @@ Additional Inherited Members |
Implements shaka::media::mp4::Box.
-Definition at line 1979 of file box_definitions.cc.
+Definition at line 1980 of file box_definitions.cc.
@@ -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 d7d383975b..df1c162757 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 07b492834b..978b65a5f9 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 3d118c4dbe..922c94082a 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 73ed77e25c..c77270712b 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 1fd14745e4..7992d18951 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 fb41e04398..69fffa11c3 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 411a4ddd00..73bdd5e749 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
@@ -171,7 +171,7 @@ Additional Inherited Members
Implements shaka::media::mp4::Box.
-Definition at line 2241 of file box_definitions.cc.
+Definition at line 2242 of file box_definitions.cc.
@@ -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 b983055c46..9f28f4f0f2 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 0e913fc377..d7c7e064ae 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 e980ce89b4..ab29ce7d9e 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 032b785c7b..1f876dcce0 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 5543470618..6b9a692cfc 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 6ea6d94f23..472c64135a 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 950069acae..057a4852bd 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 e2b734f020..4d5e33e6b4 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 a8ab9cc630..4521511a0b 100644
--- a/docs/df/ddc/webm_2segmenter_8h_source.html
+++ b/docs/df/ddc/webm_2segmenter_8h_source.html
@@ -250,7 +250,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
diff --git a/docs/df/dde/ts__section__psi_8cc_source.html b/docs/df/dde/ts__section__psi_8cc_source.html
index c8a8d967f6..4f55668500 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 d97f0a8e57..84336d122b 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 48a913fdbd..05851c502a 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 384056b08b..5805839677 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 60f997f4e5..ed27fd2b04 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 86577ef08a..f8ba3c2c62 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 a2762f78d7..593576dbce 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 de09f41f7c..74cd0346d0 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 ae226e3e37..5c6ca22317 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 2e74d476cb..8673d6d722 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 ef925a3188..5354354470 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 864b230dce..417a3fd3b4 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 94be196cba..539146e522 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 fe1ea1f130..07b60d44c6 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 8238b0df78..33021ba2bd 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 91c7d26487..23d2735f12 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 3dec6cfdb2..400c105bd1 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 fcf2b60093..194426e261 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 d3c2f960c2..2bc160e7e6 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 a485bce26b..ff077a182e 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 007cad1f18..af4c8d4819 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 515ad13564..481a8a62d4 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 0e4c5280f1..50feba4f0d 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 32eb26c235..34b28c0a75 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 77b3d22e4f..e5297c3835 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 df33eada39..2e8df11a9f 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 74ee8a5a61..968e85f836 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 0a58c9248f..5731fd266c 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 2d96acab1b..a7b4c6bc8d 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 54846248e2..d8d2220677 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 ed3f0e4681..51c98563a4 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 e8662bac02..b46a182aff 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 53e9b3d64a..b1c08823e4 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 971522efb8..e8c18bb399 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 4b483f23fd..d37abef476 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 66bd12dc28..0d154ffd84 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 2e95bf6f53..d9cecb3ce8 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 0392112266..f7b9367367 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 733c175fde..8591ddaaf0 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 4eaacd8e68..d2a74ec1d1 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 194344ce96..960ea4c19e 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 45b019114a..3f8040ec46 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 728e794528..1a0cc1afd0 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 5fb50beaee..9105f00cef 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 6cee86104f..f94c9506a7 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 f7af7f8677..b2a8318aec 100644
--- a/docs/functions_func_p.html
+++ b/docs/functions_func_p.html
@@ -151,7 +151,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
: shaka::media::mp4::SampleEncryptionEntry
ParseFromSampleEncryptionData()
-: shaka::media::mp4::SampleEncryption
+: shaka::media::mp4::SampleEncryption
ParseMP4()
: shaka::media::VPCodecConfigurationRecord
@@ -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 95dc6a1e8c..5b1fb5074f 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 13c6cb08a4..e5e718b594 100644
--- a/docs/functions_func_s.html
+++ b/docs/functions_func_s.html
@@ -285,7 +285,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/docs/functions_func_t.html b/docs/functions_func_t.html
index 9b25679c76..2b132e5d00 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 95788a17b4..7f82f8f7ea 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 480c54535d..72696fdd32 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 ae64684b82..be90aa10d1 100644
--- a/docs/functions_func_w.html
+++ b/docs/functions_func_w.html
@@ -149,7 +149,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
, shaka::media::UdpFile
WriteFromFile()
-: shaka::media::MkvWriter
+: shaka::media::MkvWriter
WriteHeader()
: shaka::media::mp4::Box
@@ -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 afb5a10b4c..758243767b 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 e0efeaea59..25b21fa87c 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 6c87c5b5fb..9f5012a5c2 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 fd0097b27f..45b2c28342 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 6f6d841284..1139577fd4 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 ed5adbc5db..b119d725c3 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 0045627885..26b590983a 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 bfe94b465e..d1e2655069 100644
--- a/docs/functions_m.html
+++ b/docs/functions_m.html
@@ -150,7 +150,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/docs/functions_n.html b/docs/functions_n.html
index 352688bec8..7cb20ad8be 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 571610a9f5..1771ba5e09 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 c7108f9d69..2daeb92793 100644
--- a/docs/functions_p.html
+++ b/docs/functions_p.html
@@ -151,7 +151,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
: shaka::media::mp4::SampleEncryptionEntry
ParseFromSampleEncryptionData()
-: shaka::media::mp4::SampleEncryption
+: shaka::media::mp4::SampleEncryption
ParseMP4()
: shaka::media::VPCodecConfigurationRecord
@@ -234,7 +234,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/docs/functions_r.html b/docs/functions_r.html
index 15b8d18ca8..198b5b1fb2 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 d31b4ee26b..d823c13f8d 100644
--- a/docs/functions_s.html
+++ b/docs/functions_s.html
@@ -300,7 +300,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/docs/functions_t.html b/docs/functions_t.html
index 6d351a4fee..6c2201552b 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 d4cba37a14..879fa72461 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 7ba80497a2..b3ceb7225b 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 4f3d21c2f3..abf7ea0223 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 933f4f6bac..afd7c05e43 100644
--- a/docs/functions_vars.html
+++ b/docs/functions_vars.html
@@ -145,7 +145,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/docs/functions_w.html b/docs/functions_w.html
index 6f7cfa8b56..d68b6f7b23 100644
--- a/docs/functions_w.html
+++ b/docs/functions_w.html
@@ -149,7 +149,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
, shaka::media::UdpFile
WriteFromFile()
-: shaka::media::MkvWriter
+: shaka::media::MkvWriter
WriteHeader()
: shaka::media::mp4::Box
@@ -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 3d8fba6492..8fa1b845bd 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 423094068d..bbfefadd30 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 bce3bdd6c0..85cd65fc9e 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 ccc58c4b4c..2b016bb893 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 d28e43c654..5c7ad1807d 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 b19d857d43..53ad01caae 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 54a3224fad..8557238662 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_14.js b/docs/search/all_14.js
index 5c0e269004..7989dc37e1 100644
--- a/docs/search/all_14.js
+++ b/docs/search/all_14.js
@@ -21,7 +21,7 @@ var searchData=
['widevinekeysource',['WidevineKeySource',['../da/ddd/classshaka_1_1media_1_1WidevineKeySource.html#a93480a98e423d0456482844ac629bd2e',1,'shaka::media::WidevineKeySource']]],
['widevinekeysource',['WidevineKeySource',['../da/ddd/classshaka_1_1media_1_1WidevineKeySource.html',1,'shaka::media']]],
['write',['Write',['../d3/d61/classshaka_1_1media_1_1File.html#a3149670c0d085e71f0aa085ee87fdda5',1,'shaka::media::File::Write()'],['../dd/d7c/classshaka_1_1media_1_1IoCache.html#a0349796209c24a99bfe3c1bfdafb1d28',1,'shaka::media::IoCache::Write()'],['../d9/de6/classshaka_1_1media_1_1LocalFile.html#ac23125695f0cfe77adee36df9650da8b',1,'shaka::media::LocalFile::Write()'],['../d9/dbd/classshaka_1_1media_1_1MemoryFile.html#a429e316e7bf529acb3586df1cd02be64',1,'shaka::media::MemoryFile::Write()'],['../d0/d66/classshaka_1_1media_1_1ThreadedIoFile.html#aa14502dd48c1c64329283f5f1340f60f',1,'shaka::media::ThreadedIoFile::Write()'],['../d7/d7a/classshaka_1_1media_1_1UdpFile.html#a7039c2dbc214f755a9eaaab4d3e10cb9',1,'shaka::media::UdpFile::Write()'],['../d1/d2d/structshaka_1_1media_1_1mp4_1_1Box.html#a15bd0622fdb129d921287e690f117bde',1,'shaka::media::mp4::Box::Write()'],['../d1/d0a/classshaka_1_1media_1_1MkvWriter.html#a2468514d1d9efdb15a9e4df2e44b75d8',1,'shaka::media::MkvWriter::Write()'],['../dc/d16/classshaka_1_1media_1_1SeekHead.html#a46313134eebf68a7c34187705726b982',1,'shaka::media::SeekHead::Write()']]],
- ['writefromfile',['WriteFromFile',['../d1/d0a/classshaka_1_1media_1_1MkvWriter.html#ab331684a758a93bf0c77fa224fe429ea',1,'shaka::media::MkvWriter::WriteFromFile(File *source)'],['../d1/d0a/classshaka_1_1media_1_1MkvWriter.html#a3d2b28502f9d1fe721c59d67e7d5a436',1,'shaka::media::MkvWriter::WriteFromFile(File *source, uint64_t max_copy)']]],
+ ['writefromfile',['WriteFromFile',['../d1/d0a/classshaka_1_1media_1_1MkvWriter.html#ab331684a758a93bf0c77fa224fe429ea',1,'shaka::media::MkvWriter::WriteFromFile(File *source)'],['../d1/d0a/classshaka_1_1media_1_1MkvWriter.html#a2dfac99ec5531ca2e102e5b145bb29ed',1,'shaka::media::MkvWriter::WriteFromFile(File *source, int64_t max_copy)']]],
['writeheader',['WriteHeader',['../d1/d2d/structshaka_1_1media_1_1mp4_1_1Box.html#a57b8837c93d51f5cf03d3862069d509a',1,'shaka::media::mp4::Box']]],
['writemediainfotofile',['WriteMediaInfoToFile',['../db/dd0/classshaka_1_1media_1_1VodMediaInfoDumpMuxerListener.html#ae0a573e1c785164f40bfbfba2ced6a16',1,'shaka::media::VodMediaInfoDumpMuxerListener']]],
['writemp4',['WriteMP4',['../d1/da5/classshaka_1_1media_1_1VPCodecConfigurationRecord.html#a790c2bbfed9caa79aefb5c597c892e00',1,'shaka::media::VPCodecConfigurationRecord']]],
diff --git a/docs/search/all_e.js b/docs/search/all_e.js
index a92b5b00e1..adc7450a38 100644
--- a/docs/search/all_e.js
+++ b/docs/search/all_e.js
@@ -3,7 +3,7 @@ var searchData=
['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']]],
- ['parsefromsampleencryptiondata',['ParseFromSampleEncryptionData',['../d4/dad/structshaka_1_1media_1_1mp4_1_1SampleEncryption.html#a2ed0aa8236ed7bc84fc605eeca61146a',1,'shaka::media::mp4::SampleEncryption']]],
+ ['parsefromsampleencryptiondata',['ParseFromSampleEncryptionData',['../d4/dad/structshaka_1_1media_1_1mp4_1_1SampleEncryption.html#a0498009b07beb46e029c65bfb55fc741',1,'shaka::media::mp4::SampleEncryption']]],
['parsemp4',['ParseMP4',['../d1/da5/classshaka_1_1media_1_1VPCodecConfigurationRecord.html#aac5eac6e0a62201dcb68fd3f084bb281',1,'shaka::media::VPCodecConfigurationRecord']]],
['parsepps',['ParsePps',['../de/dc2/classshaka_1_1media_1_1H265Parser.html#a222c85ac46e908c8478304f2be769d6d',1,'shaka::media::H265Parser']]],
['parsesliceheader',['ParseSliceHeader',['../de/dc2/classshaka_1_1media_1_1H265Parser.html#ae94e80774a60cc7b9cfdb7503f5047fe',1,'shaka::media::H265Parser']]],
diff --git a/docs/search/functions_14.js b/docs/search/functions_14.js
index be3d667b30..1fa0a454b8 100644
--- a/docs/search/functions_14.js
+++ b/docs/search/functions_14.js
@@ -6,7 +6,7 @@ var searchData=
['webmmuxer',['WebMMuxer',['../d3/d73/classshaka_1_1media_1_1webm_1_1WebMMuxer.html#a17b47db217334b2ec328bdbf1a9c7e29',1,'shaka::media::webm::WebMMuxer']]],
['widevinekeysource',['WidevineKeySource',['../da/ddd/classshaka_1_1media_1_1WidevineKeySource.html#a93480a98e423d0456482844ac629bd2e',1,'shaka::media::WidevineKeySource']]],
['write',['Write',['../d3/d61/classshaka_1_1media_1_1File.html#a3149670c0d085e71f0aa085ee87fdda5',1,'shaka::media::File::Write()'],['../dd/d7c/classshaka_1_1media_1_1IoCache.html#a0349796209c24a99bfe3c1bfdafb1d28',1,'shaka::media::IoCache::Write()'],['../d9/de6/classshaka_1_1media_1_1LocalFile.html#ac23125695f0cfe77adee36df9650da8b',1,'shaka::media::LocalFile::Write()'],['../d9/dbd/classshaka_1_1media_1_1MemoryFile.html#a429e316e7bf529acb3586df1cd02be64',1,'shaka::media::MemoryFile::Write()'],['../d0/d66/classshaka_1_1media_1_1ThreadedIoFile.html#aa14502dd48c1c64329283f5f1340f60f',1,'shaka::media::ThreadedIoFile::Write()'],['../d7/d7a/classshaka_1_1media_1_1UdpFile.html#a7039c2dbc214f755a9eaaab4d3e10cb9',1,'shaka::media::UdpFile::Write()'],['../d1/d2d/structshaka_1_1media_1_1mp4_1_1Box.html#a15bd0622fdb129d921287e690f117bde',1,'shaka::media::mp4::Box::Write()'],['../d1/d0a/classshaka_1_1media_1_1MkvWriter.html#a2468514d1d9efdb15a9e4df2e44b75d8',1,'shaka::media::MkvWriter::Write()'],['../dc/d16/classshaka_1_1media_1_1SeekHead.html#a46313134eebf68a7c34187705726b982',1,'shaka::media::SeekHead::Write()']]],
- ['writefromfile',['WriteFromFile',['../d1/d0a/classshaka_1_1media_1_1MkvWriter.html#ab331684a758a93bf0c77fa224fe429ea',1,'shaka::media::MkvWriter::WriteFromFile(File *source)'],['../d1/d0a/classshaka_1_1media_1_1MkvWriter.html#a3d2b28502f9d1fe721c59d67e7d5a436',1,'shaka::media::MkvWriter::WriteFromFile(File *source, uint64_t max_copy)']]],
+ ['writefromfile',['WriteFromFile',['../d1/d0a/classshaka_1_1media_1_1MkvWriter.html#ab331684a758a93bf0c77fa224fe429ea',1,'shaka::media::MkvWriter::WriteFromFile(File *source)'],['../d1/d0a/classshaka_1_1media_1_1MkvWriter.html#a2dfac99ec5531ca2e102e5b145bb29ed',1,'shaka::media::MkvWriter::WriteFromFile(File *source, int64_t max_copy)']]],
['writeheader',['WriteHeader',['../d1/d2d/structshaka_1_1media_1_1mp4_1_1Box.html#a57b8837c93d51f5cf03d3862069d509a',1,'shaka::media::mp4::Box']]],
['writemediainfotofile',['WriteMediaInfoToFile',['../db/dd0/classshaka_1_1media_1_1VodMediaInfoDumpMuxerListener.html#ae0a573e1c785164f40bfbfba2ced6a16',1,'shaka::media::VodMediaInfoDumpMuxerListener']]],
['writemp4',['WriteMP4',['../d1/da5/classshaka_1_1media_1_1VPCodecConfigurationRecord.html#a790c2bbfed9caa79aefb5c597c892e00',1,'shaka::media::VPCodecConfigurationRecord']]],
diff --git a/docs/search/functions_e.js b/docs/search/functions_e.js
index e1ea85d214..768e30bde0 100644
--- a/docs/search/functions_e.js
+++ b/docs/search/functions_e.js
@@ -3,7 +3,7 @@ var searchData=
['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']]],
- ['parsefromsampleencryptiondata',['ParseFromSampleEncryptionData',['../d4/dad/structshaka_1_1media_1_1mp4_1_1SampleEncryption.html#a2ed0aa8236ed7bc84fc605eeca61146a',1,'shaka::media::mp4::SampleEncryption']]],
+ ['parsefromsampleencryptiondata',['ParseFromSampleEncryptionData',['../d4/dad/structshaka_1_1media_1_1mp4_1_1SampleEncryption.html#a0498009b07beb46e029c65bfb55fc741',1,'shaka::media::mp4::SampleEncryption']]],
['parsemp4',['ParseMP4',['../d1/da5/classshaka_1_1media_1_1VPCodecConfigurationRecord.html#aac5eac6e0a62201dcb68fd3f084bb281',1,'shaka::media::VPCodecConfigurationRecord']]],
['parsepps',['ParsePps',['../de/dc2/classshaka_1_1media_1_1H265Parser.html#a222c85ac46e908c8478304f2be769d6d',1,'shaka::media::H265Parser']]],
['parsesliceheader',['ParseSliceHeader',['../de/dc2/classshaka_1_1media_1_1H265Parser.html#ae94e80774a60cc7b9cfdb7503f5047fe',1,'shaka::media::H265Parser']]],