From 256cacd96e3eb6a81d389f99cd41d4e02e0cbdd7 Mon Sep 17 00:00:00 2001 From: Widevine Buildbot Date: Fri, 6 Jan 2017 19:31:11 +0000 Subject: [PATCH] Generate SDK documents for commit 93fe5457bf183d5e75482b3d6c3b8599d699ee0b --- docs/annotated.html | 2 +- docs/classes.html | 2 +- ...ia_1_1mp4_1_1HandlerReference-members.html | 2 +- ..._1_1media_1_1RsaRequestSigner-members.html | 2 +- docs/d0/d06/mpd__flags_8cc_source.html | 2 +- ...ka_1_1media_1_1HttpKeyFetcher-members.html | 2 +- ...oder__configuration__record_8h_source.html | 2 +- docs/d0/d0e/muxer__options_8h_source.html | 2 +- ...media_1_1mp2t_1_1TsSectionPmt-members.html | 2 +- .../structshaka_1_1media_1_1VPxFrameInfo.html | 2 +- ...H265ByteToUnitStreamConverter-members.html | 2 +- ..._1_1media_1_1mp4_1_1VTTCueBox-members.html | 2 +- ...haka_1_1media_1_1mp2t_1_1TsSectionPat.html | 2 +- .../structshaka_1_1media_1_1MuxerOptions.html | 2 +- .../d0/d30/mock__mpd__notifier_8h_source.html | 2 +- docs/d0/d32/mp2t__common_8h_source.html | 2 +- .../d33/classshaka_1_1MockRepresentation.html | 2 +- docs/d0/d35/es__descriptor_8cc_source.html | 2 +- ...s__notify__muxer__listener_8cc_source.html | 2 +- docs/d0/d3a/webm__constants_8h_source.html | 2 +- ...mp4_1_1ProtectionSystemSpecificHeader.html | 2 +- docs/d0/d42/aes__cryptor_8h_source.html | 2 +- ...idevine__encryption__flags_8cc_source.html | 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 +- docs/d0/dae/file__util_8h_source.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 | 4 +- ...lassshaka_1_1media_1_1AesCtrEncryptor.html | 2 +- .../dee/segmenter__test__base_8h_source.html | 4 +- docs/d0/df3/packager__util_8cc_source.html | 2 +- ...ia_1_1mp4_1_1AudioSampleEntry-members.html | 2 +- .../d0a/classshaka_1_1media_1_1MkvWriter.html | 2 +- .../d0a/structshaka_1_1media_1_1H264Sps.html | 2 +- ...der__configuration__record_8cc_source.html | 2 +- ...media_1_1mp2t_1_1EsParserH264-members.html | 2 +- docs/d1/d13/status_8h_source.html | 2 +- ...single__segment__segmenter_8cc_source.html | 2 +- docs/d1/d1d/muxer__flags_8cc_source.html | 2 +- .../d1f/classshaka_1_1media_1_1KeySource.html | 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 +- docs/d1/d2b/file__util_8cc_source.html | 2 +- ...media_1_1mp4_1_1DataReference-members.html | 2 +- .../structshaka_1_1media_1_1mp4_1_1Box.html | 2 +- .../d2f/webvtt__media__parser_8cc_source.html | 2 +- ...haka_1_1media_1_1mp2t_1_1TsSectionPes.html | 2 +- docs/d1/d31/classshaka_1_1xml_1_1XmlNode.html | 2 +- ...tructshaka_1_1media_1_1SubsampleEntry.html | 2 +- docs/d1/d37/es__parser__h264_8h_source.html | 2 +- .../d3b/mpd__generator__flags_8h_source.html | 2 +- ...shaka_1_1media_1_1mp4_1_1MovieExtends.html | 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 | 28 +- docs/d1/d72/language__utils_8cc_source.html | 2 +- .../d74/mp2t__media__parser_8cc_source.html | 2 +- ..._1media_1_1H265VideoSliceHeaderParser.html | 4 +- .../d7d/webm__video__client_8cc_source.html | 2 +- ...ia_1_1H265ReferencePictureSet-members.html | 2 +- docs/d1/d82/adts__constants_8h_source.html | 2 +- ..._1_1media_1_1WebMParserClient-members.html | 2 +- ...1mp4_1_1KeyRotationFragmenter-members.html | 2 +- .../d8e/webm__audio__client_8cc_source.html | 2 +- ...aka_1_1media_1_1H26xBitReader-members.html | 2 +- ...ssshaka_1_1media_1_1ByteQueue-members.html | 2 +- docs/d1/d9d/tracks__builder_8h_source.html | 2 +- ..._1_1mp4_1_1CodecConfiguration-members.html | 2 +- ...assshaka_1_1media_1_1mp4_1_1BoxBuffer.html | 2 +- ...ia_1_1wvm_1_1DemuxStreamIdMediaSample.html | 2 +- ...1NalUnitToByteStreamConverter-members.html | 2 +- ..._1media_1_1VPCodecConfigurationRecord.html | 2 +- ...lassshaka_1_1media_1_1Demuxer-members.html | 2 +- ...a_1_1media_1_1mp4_1_1VideoMediaHeader.html | 4 +- ...oder__configuration__record_8h_source.html | 2 +- docs/d1/dc2/h26x__bit__reader_8h_source.html | 2 +- .../dcb/encrypting__fragmenter_8h_source.html | 6 +- .../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 | 669 ++- ...ideo__slice__header__parser_8h_source.html | 10 +- ...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 | 6 +- docs/d2/d4d/file_8h_source.html | 2 +- .../d4f/structshaka_1_1Element-members.html | 2 +- ...classshaka_1_1MockMpdNotifier-members.html | 2 +- ...ructshaka_1_1media_1_1H264SliceHeader.html | 14 +- ...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 | 2 +- ...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 | 4 +- ...haka_1_1media_1_1BufferWriter-members.html | 2 +- ...assshaka_1_1MockAdaptationSet-members.html | 2 +- docs/d2/dae/webm__muxer_8cc_source.html | 2 +- ...media_1_1mp4_1_1SampleToGroup-members.html | 2 +- ...a_1_1media_1_1mp4_1_1FileType-members.html | 2 +- ...edia_1_1mp4_1_1CueSourceIDBox-members.html | 2 +- ...lassshaka_1_1media_1_1SegmentTestBase.html | 2 +- ...haka_1_1media_1_1mp4_1_1Track-members.html | 2 +- .../structshaka_1_1MpdOptions-members.html | 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 | 2 +- ...lassshaka_1_1media_1_1WebMMediaParser.html | 2 +- ...haka_1_1media_1_1mp2t_1_1TsSectionPmt.html | 2 +- docs/d2/de6/packager__main_8cc_source.html | 2 +- ...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 | 8 +- ...ssshaka_1_1media_1_1MkvWriter-members.html | 2 +- docs/d2/dfd/adts__header_8h_source.html | 2 +- ..._1_1media_1_1mp4_1_1BoxReader-members.html | 2 +- ..._1_1mp4_1_1SyncSampleIterator-members.html | 2 +- .../classshaka_1_1media_1_1MediaParser.html | 2 +- ...sshaka_1_1media_1_1mp2t_1_1AdtsHeader.html | 2 +- ..._1media_1_1LibcryptoThreading-members.html | 2 +- docs/d3/d15/udp__file__win_8cc_source.html | 2 +- ...media_1_1mp2t_1_1TsSectionPat-members.html | 2 +- docs/d3/d19/io__cache_8h_source.html | 2 +- ...deo__slice__header__parser_8cc_source.html | 161 +- ...uctshaka_1_1media_1_1mp4_1_1PrivFrame.html | 2 +- ...sshaka_1_1media_1_1LibcryptoThreading.html | 2 +- docs/d3/d56/decrypt__config_8cc_source.html | 2 +- docs/d3/d61/classshaka_1_1media_1_1File.html | 2 +- .../d3/d62/continuity__counter_8h_source.html | 2 +- docs/d3/d62/rcheck_8h_source.html | 2 +- ...1media_1_1mp4_1_1DataEntryUrl-members.html | 2 +- ...lassshaka_1_1media_1_1WebMVideoClient.html | 2 +- .../d3/d6b/fixed__key__source_8cc_source.html | 2 +- ...lassshaka_1_1media_1_1mp2t_1_1TsMuxer.html | 2 +- docs/d3/d72/fixed__key__source_8h_source.html | 2 +- ...ssshaka_1_1media_1_1webm_1_1WebMMuxer.html | 2 +- .../classshaka_1_1media_1_1AesEncryptor.html | 2 +- ...a_1_1mp4_1_1ChunkInfoIterator-members.html | 2 +- docs/d3/d76/muxer__flags_8h_source.html | 2 +- ...dia_1_1mp4_1_1TextSampleEntry-members.html | 2 +- ...haka_1_1media_1_1RsaPublicKey-members.html | 2 +- ...lassshaka_1_1media_1_1WebMAudioClient.html | 2 +- docs/d3/d80/muxer__util_8h_source.html | 2 +- ...haka_1_1media_1_1mp4_1_1SampleToChunk.html | 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 | 4 +- .../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 | 161 +- 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 | 12 +- ...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 +- .../classshaka_1_1media_1_1UdpOptions.html | 2 +- .../da7/segmenter__test__base_8cc_source.html | 162 +- ...a_1_1media_1_1mp4_1_1SampleEncryption.html | 6 +- ...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 | 83 +- ...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 | 4 +- ...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 | 4 +- 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 | 8 +- ...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 | 8 +- ...media_1_1mp4_1_1EditListEntry-members.html | 2 +- docs/d5/d98/encryptor_8cc_source.html | 185 +- ...odec__configuration__record_8h_source.html | 2 +- ...H265ReferencePictureListModifications.html | 2 +- docs/d5/da4/aes__encryptor_8cc_source.html | 2 +- ...a_1_1media_1_1H265ReferencePictureSet.html | 2 +- .../classshaka_1_1media_1_1StreamInfo.html | 2 +- ...haka_1_1media_1_1mp2t_1_1EsParserH264.html | 2 +- docs/d5/dba/ts__packet_8cc_source.html | 153 +- .../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 | 172 +- ..._1media_1_1mp2t_1_1PesPacketGenerator.html | 2 +- ...assshaka_1_1media_1_1WebMParserClient.html | 2 +- ...der__configuration__record_8cc_source.html | 2 +- ...mp4_1_1WebVTTConfigurationBox-members.html | 2 +- docs/d5/def/ts__section__pmt_8h_source.html | 2 +- ...ka_1_1media_1_1HlsNotifyMuxerListener.html | 2 +- ...shaka_1_1media_1_1MediaParser-members.html | 2 +- docs/d5/dfc/file_8cc_source.html | 2 +- ...a_1_1media_1_1AesCbcDecryptor-members.html | 2 +- .../d09/aes__pattern__cryptor_8h_source.html | 2 +- .../d6/d16/text__stream__info_8cc_source.html | 2 +- docs/d6/d17/es__parser__h264_8cc_source.html | 2 +- ...tshaka_1_1media_1_1mp4_1_1MovieHeader.html | 4 +- .../ts__packet__writer__util_8cc_source.html | 14 +- ...1_1media_1_1VideoStreamInfoParameters.html | 2 +- .../d2e/mpd__notifier__util_8cc_source.html | 2 +- ...ssshaka_1_1media_1_1TextTrack-members.html | 2 +- .../webm__content__encodings_8cc_source.html | 2 +- .../d3b/chunk__info__iterator_8cc_source.html | 2 +- .../encrypting__fragmenter_8cc_source.html | 415 +- ...2multi__segment__segmenter_8cc_source.html | 2 +- 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 | 54 +- 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 | 64 +- ..._1_1RepresentationBaseXmlNode-members.html | 2 +- docs/d6/d9b/h264__parser_8h_source.html | 6 +- docs/d6/d9f/hls__flags_8cc_source.html | 2 +- docs/d6/da0/ts__section__pat_8h_source.html | 2 +- docs/d6/da3/mpd__builder_8h_source.html | 2 +- ...AVCDecoderConfigurationRecord-members.html | 2 +- ...iceHeader_1_1LongTermPicsInfo-members.html | 2 +- .../da9/classshaka_1_1media_1_1BitReader.html | 68 +- ...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 +- ...sParserH26x_1_1VideoSliceInfo-members.html | 2 +- ...media_1_1mp2t_1_1EsParserH26x-members.html | 2 +- docs/d6/dc8/mkv__writer_8cc_source.html | 2 +- ...media_1_1mp4_1_1SampleEncryptionEntry.html | 4 +- ...ssshaka_1_1media_1_1VP9Parser-members.html | 2 +- ...ia_1_1mp4_1_1SegmentReference-members.html | 2 +- ...haka_1_1media_1_1mp2t_1_1EsParserAdts.html | 2 +- ...tructshaka_1_1media_1_1H264SEIMessage.html | 2 +- ...1_1media_1_1H265VuiParameters-members.html | 2 +- ...1_1media_1_1mp4_1_1CueTimeBox-members.html | 2 +- ...haka_1_1media_1_1VPxFrameInfo-members.html | 2 +- docs/d6/de8/local__file_8cc_source.html | 2 +- docs/d6/de8/network__util_8h_source.html | 2 +- docs/d6/de9/ts__segmenter_8cc_source.html | 2 +- docs/d6/ded/ts__packet_8h_source.html | 2 +- .../sync__sample__iterator_8cc_source.html | 2 +- docs/d6/dff/classshaka_1_1media_1_1Nalu.html | 2 +- ...edia_1_1mp4_1_1SampleGroupDescription.html | 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 | 2 +- ...ka_1_1media_1_1WebMListParser-members.html | 2 +- ...H26xByteToUnitStreamConverter-members.html | 2 +- ...lassshaka_1_1media_1_1DecryptorSource.html | 2 +- .../classshaka_1_1media_1_1MediaSample.html | 2 +- ..._1media_1_1mp4_1_1MediaHeader-members.html | 2 +- ...ka_1_1media_1_1H264SEIMessage-members.html | 2 +- .../d7a/classshaka_1_1media_1_1UdpFile.html | 2 +- docs/d7/d7c/vlog__flags_8h_source.html | 2 +- .../d7/d87/video__stream__info_8h_source.html | 2 +- ..._1H265SliceHeader_1_1LongTermPicsInfo.html | 2 +- docs/d7/d9d/progress__listener_8h_source.html | 2 +- .../da4/track__run__iterator_8h_source.html | 22 +- ...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 | 2 +- .../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 | 18 +- .../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 | 2 +- ...a_1_1media_1_1AesCtrEncryptor-members.html | 2 +- ..._1_1media_1_1AesRequestSigner-members.html | 2 +- ...media_1_1H264DecRefPicMarking-members.html | 2 +- ...1_1mp4_1_1SubtitleMediaHeader-members.html | 2 +- docs/d8/d94/adts__constants_8cc_source.html | 2 +- docs/d8/d94/pes__packet_8h_source.html | 2 +- ..._1mp4_1_1VTTAdditionalTextBox-members.html | 2 +- docs/d8/d9a/fragmenter_8cc_source.html | 282 +- .../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 +- ...p2t_1_1EsParserH26x_1_1VideoSliceInfo.html | 2 +- ...ctshaka_1_1media_1_1mp4_1_1CueTimeBox.html | 4 +- docs/d8/dca/ts__writer_8h_source.html | 14 +- ...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 | 4 +- ..._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 | 2 +- ...a_1_1media_1_1SegmentTestBase-members.html | 2 +- ...to__byte__stream__converter_8h_source.html | 2 +- ...media_1_1OnMediaEndParameters-members.html | 2 +- ...2single__segment__segmenter_8h_source.html | 2 +- docs/d9/d08/mock__mpd__builder_8h_source.html | 2 +- ...dia_1_1HlsNotifyMuxerListener-members.html | 2 +- .../classshaka_1_1media_1_1RsaPublicKey.html | 2 +- .../classshaka_1_1media_1_1BufferReader.html | 2 +- .../key__rotation__fragmenter_8cc_source.html | 4 +- ...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 | 2 +- ...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 | 2 +- ...ka_1_1media_1_1FixedKeySource-members.html | 2 +- ...c__audio__specific__config_8cc_source.html | 2 +- ...p4_1_1TrackFragmentDecodeTime-members.html | 2 +- ...lassshaka_1_1media_1_1OffsetByteQueue.html | 2 +- ..._1_1media_1_1H264ModificationOfPicNum.html | 2 +- .../d04/audio__stream__info_8cc_source.html | 2 +- ...assshaka_1_1media_1_1mp2t_1_1EsParser.html | 2 +- ...ructshaka_1_1media_1_1mp4_1_1Language.html | 2 +- ...ssshaka_1_1media_1_1mp2t_1_1TsSection.html | 2 +- docs/da/d1d/udp__options_8cc_source.html | 2 +- .../key__rotation__fragmenter_8h_source.html | 2 +- ...haka_1_1media_1_1mp2t_1_1EsParserH26x.html | 2 +- docs/da/d23/ts__muxer_8h_source.html | 2 +- docs/da/d24/h265__parser_8h_source.html | 4 +- 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 | 4 +- ...a_1_1media_1_1WebMMediaParser-members.html | 2 +- docs/da/d8e/container__names_8cc_source.html | 10 +- ...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 | 8 +- ..._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 | 4 +- 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 | 8 +- ...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 | 477 +- ...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 | 4 +- ...a_1_1media_1_1mp4_1_1ChunkLargeOffset.html | 4 +- docs/db/d96/wvm__media__parser_8h_source.html | 8 +- .../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 | 4 +- .../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 | 4 +- .../dash__iop__mpd__notifier_8cc_source.html | 2 +- ...ed__key__encryption__flags_8cc_source.html | 2 +- .../d3c/webm__cluster__parser_8h_source.html | 2 +- docs/dc/d3f/key__source_8h_source.html | 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 | 2 +- ...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 | 2 +- ...lassshaka_1_1media_1_1ContentEncoding.html | 2 +- ...tshaka_1_1media_1_1FileCloser-members.html | 2 +- docs/dc/dbf/box__buffer_8h_source.html | 2 +- ...1xml_1_1RepresentationXmlNode-members.html | 2 +- ...classshaka_1_1media_1_1WebMListParser.html | 2 +- docs/dc/dd9/rsa__key_8cc_source.html | 2 +- .../structshaka_1_1media_1_1mp4_1_1Media.html | 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 | 83 +- .../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 | 2 +- docs/dd/d12/mpd__writer_8cc_source.html | 2 +- ...mp4_1_1SampleAuxiliaryInformationSize.html | 2 +- .../d17/classshaka_1_1media_1_1Demuxer.html | 2 +- docs/dd/d18/es__parser__adts_8h_source.html | 2 +- .../d19/video__stream__info_8cc_source.html | 2 +- .../dd/d30/wvm__media__parser_8cc_source.html | 16 +- docs/dd/d3b/mp4_2segmenter_8h_source.html | 2 +- ...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 | 4932 +++++++++-------- ..._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 | 2 +- docs/de/d12/container__names_8h_source.html | 2 +- docs/de/d13/ts__writer_8cc_source.html | 251 +- 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 | 2 +- .../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 | 2 +- ...a_1_1media_1_1mp4_1_1Language-members.html | 2 +- docs/de/d5b/adts__header_8cc_source.html | 28 +- docs/de/d5c/mpd__flags_8h_source.html | 2 +- ...mp2t_1_1ProgramMapTableWriter-members.html | 2 +- ...assshaka_1_1media_1_1mp2t_1_1TsWriter.html | 10 +- ..._1_1mp4_1_1SampleToGroupEntry-members.html | 2 +- docs/de/d6e/language__utils_8h_source.html | 2 +- .../de/d70/http__key__fetcher_8cc_source.html | 2 +- ...content__encodings__client_8cc_source.html | 2 +- docs/de/d7b/mp4__media__parser_8h_source.html | 2 +- ...haka_1_1media_1_1mp2t_1_1TsSectionPsi.html | 2 +- ...ox__definitions__comparison_8h_source.html | 2 +- ...ssshaka_1_1media_1_1LocalFile-members.html | 2 +- ...edia_1_1wvm_1_1PrevSampleData-members.html | 2 +- ...1_1mp4_1_1MovieFragmentHeader-members.html | 2 +- ...ssshaka_1_1media_1_1VP8Parser-members.html | 2 +- docs/de/da9/structshaka_1_1Element.html | 2 +- docs/de/dab/es__parser__h26x_8cc_source.html | 2 +- docs/de/dad/validate__flag_8cc_source.html | 2 +- ...lassshaka_1_1media_1_1TextTrackConfig.html | 2 +- .../classshaka_1_1media_1_1H26xBitReader.html | 2 +- docs/de/dbf/udp__options_8h_source.html | 2 +- docs/de/dc1/demuxer_8h_source.html | 2 +- .../classshaka_1_1media_1_1H265Parser.html | 2 +- ..._1mp4_1_1DecodingTimeToSample-members.html | 2 +- docs/de/dcb/ts__segmenter_8h_source.html | 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 | 18 +- ...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 | 2 +- .../d1a/offset__byte__queue_8cc_source.html | 2 +- ...shaka_1_1media_1_1MediaSample-members.html | 2 +- ...mposition__offset__iterator_8h_source.html | 2 +- ...mentTestBase_1_1ClusterParser-members.html | 2 +- docs/df/d22/validate__flag_8h_source.html | 2 +- ..._1mp4_1_1DecodingTimeIterator-members.html | 2 +- ...lassshaka_1_1media_1_1AesCbcDecryptor.html | 2 +- docs/df/d31/muxer__util_8cc_source.html | 2 +- .../df/d32/audio__stream__info_8h_source.html | 2 +- .../classshaka_1_1AdaptationSet-members.html | 2 +- ...uctshaka_1_1media_1_1mp4_1_1ChunkInfo.html | 2 +- ..._1_1mp4_1_1MovieExtendsHeader-members.html | 2 +- .../classshaka_1_1media_1_1RequestSigner.html | 2 +- docs/df/d46/classshaka_1_1media_1_1Muxer.html | 2 +- ...ka_1_1media_1_1ThreadedIoFile-members.html | 2 +- ...t_1_1AacProgramMapTableWriter-members.html | 2 +- ...aka_1_1media_1_1RsaPrivateKey-members.html | 2 +- ..._1mp4_1_1EncryptingFragmenter-members.html | 2 +- docs/df/d60/classshaka_1_1MockMpdBuilder.html | 2 +- ...mp4_1_1AudioRollRecoveryEntry-members.html | 2 +- .../classshaka_1_1media_1_1KeyFetcher.html | 2 +- .../classshaka_1_1MockMpdBuilder-members.html | 2 +- ...1media_1_1mp4_1_1OpusSpecific-members.html | 2 +- ...dia_1_1mp4_1_1CompositionTimeToSample.html | 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 +- ...sshaka_1_1media_1_1UdpOptions-members.html | 2 +- .../dir_0494b8c96e3190a776d2b97ade9c8ddf.html | 2 +- .../dir_2618cd273dea54f184e42d7a562af818.html | 2 +- .../dir_279fd47bebb21302c25cfb685e84c359.html | 2 +- .../dir_2eceb70145328c029a5f43350007537a.html | 2 +- .../dir_39dc0668bd5a501998f94e8b4e546c71.html | 2 +- .../dir_3e9291fd7a18fdecc763294cb2628910.html | 2 +- .../dir_49627ef5ef0630f6cf11dd06344c4cf0.html | 2 +- .../dir_5039d854a18988ed1f1dbebc120ffbf7.html | 2 +- .../dir_65f7acfa8cf3a5f1edc11faa2428b914.html | 2 +- .../dir_679a6f4e9fa092b388fc986148018f2a.html | 2 +- .../dir_7f5e01ba7faf319a30cabd201b6ef121.html | 2 +- .../dir_89dd766eb2df7d7257dbe806a34404af.html | 2 +- .../dir_aa73376d632f252584a1c0dfbefab2c4.html | 2 +- .../dir_c6ada2450b25ab5438a4dba6c9b890af.html | 2 +- .../dir_d422163b96683743ed3963d4aac17747.html | 2 +- .../dir_eeaeb49ac3913fcfb450d3ce9cc0141b.html | 2 +- .../dir_f7dcbe7025bbacfc4b9a7dff6ad41d72.html | 2 +- docs/files.html | 2 +- docs/functions.html | 2 +- docs/functions_b.html | 8 +- 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 | 8 +- docs/functions_func_c.html | 2 +- docs/functions_func_d.html | 2 +- docs/functions_func_e.html | 2 +- docs/functions_func_f.html | 2 +- docs/functions_func_g.html | 2 +- docs/functions_func_h.html | 2 +- docs/functions_func_i.html | 2 +- docs/functions_func_k.html | 2 +- docs/functions_func_l.html | 2 +- docs/functions_func_m.html | 2 +- docs/functions_func_n.html | 2 +- docs/functions_func_o.html | 2 +- docs/functions_func_p.html | 2 +- docs/functions_func_r.html | 4 +- docs/functions_func_s.html | 8 +- docs/functions_func_t.html | 2 +- docs/functions_func_u.html | 2 +- docs/functions_func_v.html | 2 +- docs/functions_func_w.html | 2 +- docs/functions_func_x.html | 2 +- docs/functions_func_~.html | 2 +- docs/functions_g.html | 2 +- docs/functions_h.html | 2 +- docs/functions_i.html | 2 +- docs/functions_k.html | 2 +- docs/functions_l.html | 2 +- docs/functions_m.html | 2 +- docs/functions_n.html | 2 +- docs/functions_o.html | 2 +- docs/functions_p.html | 2 +- docs/functions_r.html | 4 +- docs/functions_s.html | 8 +- docs/functions_t.html | 2 +- docs/functions_type.html | 2 +- docs/functions_u.html | 2 +- docs/functions_v.html | 2 +- docs/functions_vars.html | 2 +- docs/functions_w.html | 2 +- docs/functions_x.html | 2 +- docs/functions_~.html | 2 +- docs/hierarchy.html | 2 +- docs/index.html | 2 +- docs/namespacemembers.html | 2 +- docs/namespacemembers_func.html | 2 +- docs/namespaces.html | 2 +- docs/search/all_1.js | 6 +- docs/search/all_10.js | 6 +- docs/search/all_f.js | 2 +- docs/search/functions_1.js | 6 +- docs/search/functions_10.js | 6 +- docs/search/functions_f.js | 2 +- 955 files changed, 5355 insertions(+), 5341 deletions(-) diff --git a/docs/annotated.html b/docs/annotated.html index f472deea3e..7a51b91426 100644 --- a/docs/annotated.html +++ b/docs/annotated.html @@ -373,7 +373,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/classes.html b/docs/classes.html index a68d900527..b9183ad5f1 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 3ed906f652..b0a9bda5a3 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 6e71051889..aeeedb9609 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 f2f2fe4c2d..d33e2bd047 100644 --- a/docs/d0/d06/mpd__flags_8cc_source.html +++ b/docs/d0/d06/mpd__flags_8cc_source.html @@ -145,7 +145,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d0e/classshaka_1_1media_1_1HttpKeyFetcher-members.html b/docs/d0/d0e/classshaka_1_1media_1_1HttpKeyFetcher-members.html index a594a1ae2e..a9ada31232 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 0ad48c7214..502aac76b8 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 ef83448877..6958a78c1e 100644 --- a/docs/d0/d0e/muxer__options_8h_source.html +++ b/docs/d0/d0e/muxer__options_8h_source.html @@ -152,7 +152,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d0f/classshaka_1_1media_1_1mp2t_1_1TsSectionPmt-members.html b/docs/d0/d0f/classshaka_1_1media_1_1mp2t_1_1TsSectionPmt-members.html index cccd952b60..083066cd1e 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 ff1ecce76d..6217634079 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 d016c2791d..741f7d8dfa 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 a93b2da8a7..5911cd071d 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 73be4e521b..3a5f9b3999 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 f7916305c8..7f312a739f 100644 --- a/docs/d0/d27/structshaka_1_1media_1_1MuxerOptions.html +++ b/docs/d0/d27/structshaka_1_1media_1_1MuxerOptions.html @@ -291,7 +291,7 @@ bool webm_subsample_encryp diff --git a/docs/d0/d30/mock__mpd__notifier_8h_source.html b/docs/d0/d30/mock__mpd__notifier_8h_source.html index a0bef55fdc..991ee59d23 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 f9b68d75f5..37fec8dc4c 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 e5d0efece3..21f6c030b2 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 355b6c6ed2..a95990a3a6 100644 --- a/docs/d0/d35/es__descriptor_8cc_source.html +++ b/docs/d0/d35/es__descriptor_8cc_source.html @@ -285,7 +285,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d3a/hls__notify__muxer__listener_8cc_source.html b/docs/d0/d3a/hls__notify__muxer__listener_8cc_source.html index 99e371ff79..9e19575937 100644 --- a/docs/d0/d3a/hls__notify__muxer__listener_8cc_source.html +++ b/docs/d0/d3a/hls__notify__muxer__listener_8cc_source.html @@ -233,7 +233,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d3a/webm__constants_8h_source.html b/docs/d0/d3a/webm__constants_8h_source.html index 7f7d79e3a9..e3a32fb149 100644 --- a/docs/d0/d3a/webm__constants_8h_source.html +++ b/docs/d0/d3a/webm__constants_8h_source.html @@ -318,7 +318,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d3c/structshaka_1_1media_1_1mp4_1_1ProtectionSystemSpecificHeader.html b/docs/d0/d3c/structshaka_1_1media_1_1mp4_1_1ProtectionSystemSpecificHeader.html index f5c0c29390..ee78f69afe 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 1a3c13182a..17165993df 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 b5115390f7..7023ff841d 100644 --- a/docs/d0/d42/widevine__encryption__flags_8cc_source.html +++ b/docs/d0/d42/widevine__encryption__flags_8cc_source.html @@ -284,7 +284,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 ee5773abdb..fae65029ff 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 759813cb0f..dbb91ff1e4 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 d5093d887f..c5f0519c1b 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 f676ce937a..fac8339626 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 0ce6e3dcda..707545635d 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 e37736607d..45680f4d65 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 @@ -119,7 +119,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d5b/classshaka_1_1media_1_1MpdNotifyMuxerListener-members.html b/docs/d0/d5b/classshaka_1_1media_1_1MpdNotifyMuxerListener-members.html index 96a9f86d56..10808170bd 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 c39857edf6..81df03173d 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 76084f30db..82a694a2b1 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 31c893330f..591507f63a 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 1487 of file box_definitions.cc.

+

Definition at line 1493 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 f3f6d53914..218967b09b 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 1079 of file box_definitions.cc.

+

Definition at line 1083 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 82edc427e0..6bb001b2ec 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 f6a9a5ca36..a3ece459b9 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 fdf7c7e46a..327b7df69d 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 f9ceb38c3c..5312d37f41 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 19d16ac451..037aaa0186 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 2208 of file box_definitions.cc.

+

Definition at line 2214 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 74288dd6db..d0c219f722 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 492f9ed365..f0f24886cc 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 e44123725e..1a0374a4fb 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 a2c5db213c..ee942ddc2a 100644 --- a/docs/d0/da6/stream__descriptor_8cc_source.html +++ b/docs/d0/da6/stream__descriptor_8cc_source.html @@ -293,7 +293,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/dab/classshaka_1_1media_1_1mp4_1_1SingleSegmentSegmenter.html b/docs/d0/dab/classshaka_1_1media_1_1mp4_1_1SingleSegmentSegmenter.html index 01966d8d77..d69b5f9208 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 4fe11ba9d3..fa98bfed58 100644 --- a/docs/d0/dac/classshaka_1_1media_1_1FixedKeySource.html +++ b/docs/d0/dac/classshaka_1_1media_1_1FixedKeySource.html @@ -482,7 +482,7 @@ Additional Inherited Members diff --git a/docs/d0/dae/file__util_8h_source.html b/docs/d0/dae/file__util_8h_source.html index 1a10c073a0..8c95e3f296 100644 --- a/docs/d0/dae/file__util_8h_source.html +++ b/docs/d0/dae/file__util_8h_source.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/dbd/classshaka_1_1media_1_1webm_1_1MultiSegmentSegmenter-members.html b/docs/d0/dbd/classshaka_1_1media_1_1webm_1_1MultiSegmentSegmenter-members.html index ddd108559b..6812eb23c4 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 3d71446bf8..dd3aa13a26 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 3b097b9288..d53cd775d6 100644 --- a/docs/d0/dc8/classshaka_1_1xml_1_1AdaptationSetXmlNode-members.html +++ b/docs/d0/dc8/classshaka_1_1xml_1_1AdaptationSetXmlNode-members.html @@ -115,7 +115,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 faf4db61d7..c83d9bc820 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 cac74b15bb..e4299c5fdd 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 2654 of file box_definitions.cc.

+

Definition at line 2660 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 c02b31e821..0ab45f1a85 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 6137c206f2..52d926197e 100644 --- a/docs/d0/dd6/webm__crypto__helpers_8cc_source.html +++ b/docs/d0/dd6/webm__crypto__helpers_8cc_source.html @@ -119,7 +119,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
30 bool WebMCreateDecryptConfig(const uint8_t* data,
31  int data_size,
32  const uint8_t* key_id,
-
33  int key_id_size,
+
33  size_t key_id_size,
34  std::unique_ptr<DecryptConfig>* decrypt_config,
35  int* data_offset) {
36  int header_size = kWebMSignalByteSize;
@@ -205,7 +205,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/dd8/classshaka_1_1media_1_1AesCtrEncryptor.html b/docs/d0/dd8/classshaka_1_1media_1_1AesCtrEncryptor.html index c5904d1d0a..49906c3b6c 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 1f7de39920..0707dca383 100644 --- a/docs/d0/dee/segmenter__test__base_8h_source.html +++ b/docs/d0/dee/segmenter__test__base_8h_source.html @@ -172,7 +172,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
89 
90  int GetFrameCountForCluster(size_t i) const;
91 
-
92  int cluster_count() const;
+
92  size_t cluster_count() const;
93 
94  private:
95  // WebMParserClient overrides.
@@ -217,7 +217,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/df3/packager__util_8cc_source.html b/docs/d0/df3/packager__util_8cc_source.html index 0647576639..6176f508d4 100644 --- a/docs/d0/df3/packager__util_8cc_source.html +++ b/docs/d0/df3/packager__util_8cc_source.html @@ -337,7 +337,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/dfc/structshaka_1_1media_1_1mp4_1_1AudioSampleEntry-members.html b/docs/d0/dfc/structshaka_1_1media_1_1mp4_1_1AudioSampleEntry-members.html index 12c4a8abae..09509585ac 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 67285cd800..b7036d7329 100644 --- a/docs/d1/d0a/classshaka_1_1media_1_1MkvWriter.html +++ b/docs/d1/d0a/classshaka_1_1media_1_1MkvWriter.html @@ -376,7 +376,7 @@ Public Member Functions diff --git a/docs/d1/d0a/structshaka_1_1media_1_1H264Sps.html b/docs/d1/d0a/structshaka_1_1media_1_1H264Sps.html index e5a107537b..1b109f050c 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 79dd37d654..67e2a6ad2f 100644 --- a/docs/d1/d0b/hevc__decoder__configuration__record_8cc_source.html +++ b/docs/d1/d0b/hevc__decoder__configuration__record_8cc_source.html @@ -256,7 +256,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d12/classshaka_1_1media_1_1mp2t_1_1EsParserH264-members.html b/docs/d1/d12/classshaka_1_1media_1_1mp2t_1_1EsParserH264-members.html index dde834e0c5..036e920b99 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 f9c426f043..0e4b9ee8a4 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 670a7337b8..4000e8a500 100644 --- a/docs/d1/d1c/two__pass__single__segment__segmenter_8cc_source.html +++ b/docs/d1/d1c/two__pass__single__segment__segmenter_8cc_source.html @@ -284,7 +284,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d1d/muxer__flags_8cc_source.html b/docs/d1/d1d/muxer__flags_8cc_source.html index acdf26d2b4..17b2e76753 100644 --- a/docs/d1/d1d/muxer__flags_8cc_source.html +++ b/docs/d1/d1d/muxer__flags_8cc_source.html @@ -144,7 +144,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d1f/classshaka_1_1media_1_1KeySource.html b/docs/d1/d1f/classshaka_1_1media_1_1KeySource.html index 50871e61b3..423d5cc83e 100644 --- a/docs/d1/d1f/classshaka_1_1media_1_1KeySource.html +++ b/docs/d1/d1f/classshaka_1_1media_1_1KeySource.html @@ -409,7 +409,7 @@ static std::string  diff --git a/docs/d1/d20/classshaka_1_1media_1_1mp4_1_1DecodingTimeIterator.html b/docs/d1/d20/classshaka_1_1media_1_1mp4_1_1DecodingTimeIterator.html index b92ab097f4..2f84ec9fb2 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 a1bf6f7531..01172c70ee 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 ceeaea7955..459ebf925a 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 c17214a40e..32e1bb31cf 100644 --- a/docs/d1/d2a/decryptor__source_8cc_source.html +++ b/docs/d1/d2a/decryptor__source_8cc_source.html @@ -206,7 +206,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d2b/file__util_8cc_source.html b/docs/d1/d2b/file__util_8cc_source.html index be3163104a..5f06913ee4 100644 --- a/docs/d1/d2b/file__util_8cc_source.html +++ b/docs/d1/d2b/file__util_8cc_source.html @@ -135,7 +135,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d2c/structshaka_1_1media_1_1mp4_1_1DataReference-members.html b/docs/d1/d2c/structshaka_1_1media_1_1mp4_1_1DataReference-members.html index 744786cd65..070cd95bbc 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 af201671c9..0ccb3e6f9e 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 1649bbe39e..d3d31a4952 100644 --- a/docs/d1/d2f/webvtt__media__parser_8cc_source.html +++ b/docs/d1/d2f/webvtt__media__parser_8cc_source.html @@ -488,7 +488,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d30/classshaka_1_1media_1_1mp2t_1_1TsSectionPes.html b/docs/d1/d30/classshaka_1_1media_1_1mp2t_1_1TsSectionPes.html index e78a48c5f8..b128c310f6 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 9f09192d05..4f4c849a06 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 fc527c26c6..6625abe855 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 59bf888dbf..b8cb75380b 100644 --- a/docs/d1/d37/es__parser__h264_8h_source.html +++ b/docs/d1/d37/es__parser__h264_8h_source.html @@ -150,7 +150,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d3b/mpd__generator__flags_8h_source.html b/docs/d1/d3b/mpd__generator__flags_8h_source.html index c312b3bdd7..db6a9520b4 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 9b1a3a5cd6..ca1406c23e 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 2180 of file box_definitions.cc.

+

Definition at line 2186 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 87d6fc3cf2..d9fe10aaa4 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 f385c1ce5c..8f9c1ae1e4 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 7253492043..f0f22cc056 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 0f3bdc48df..23b5637f78 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 4aae5eaae3..a1ebffb94b 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 0d447ee2e6..7ba7dc8d1b 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 2277 of file box_definitions.cc.

+

Definition at line 2283 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 8d397d3932..99089075a6 100644 --- a/docs/d1/d70/vp8__parser_8cc_source.html +++ b/docs/d1/d70/vp8__parser_8cc_source.html @@ -194,7 +194,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
105 
106  BitReader reader(data, data_size);
107  // The following 3 bytes are read directly from |data|.
-
108  RCHECK(reader.SkipBytes(3));
+
108  RCHECK(reader.SkipBytes(3));
109 
110  // One bit for frame type.
111  bool is_interframe = data[0] & 1;
@@ -209,7 +209,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
120 
121  if (!is_interframe) {
122  // The following 7 bytes are read directly from |data|.
-
123  RCHECK(reader.SkipBytes(7));
+
123  RCHECK(reader.SkipBytes(7));
124 
125  RCHECK(VerifySyncCode(&data[3]));
126 
@@ -217,20 +217,20 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
128  width_ = data[6] | ((data[7] & 0x3f) << 8);
129  height_ = data[8] | ((data[9] & 0x3f) << 8);
130 
-
131  RCHECK(reader.SkipBits(2)); // colorspace and pixel value clamping.
+
131  RCHECK(reader.SkipBits(2)); // colorspace and pixel value clamping.
132  }
133 
134  RCHECK(ReadSegmentation(&reader));
135  RCHECK(ReadLoopFilter(&reader));
-
136  RCHECK(reader.SkipBits(2)); // partitions bits
+
136  RCHECK(reader.SkipBits(2)); // partitions bits
137  RCHECK(ReadQuantization(&reader));
138 
139  if (is_interframe) {
140  RCHECK(ReadRefreshFrame(&reader));
-
141  RCHECK(reader.SkipBits(1)); // refresh_entropy_probs
-
142  RCHECK(reader.SkipBits(1)); // refresh last frame flag
+
141  RCHECK(reader.SkipBits(1)); // refresh_entropy_probs
+
142  RCHECK(reader.SkipBits(1)); // refresh last frame flag
143  } else {
-
144  RCHECK(reader.SkipBits(1)); // refresh_entropy_probs
+
144  RCHECK(reader.SkipBits(1)); // refresh_entropy_probs
145  }
146 
147  // The next field is entropy header (coef probability tree), which is encoded
@@ -251,7 +251,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
162  VPxFrameInfo vpx_frame;
163  vpx_frame.frame_size = data_size;
164  vpx_frame.uncompressed_header_size =
-
165  vpx_frame.frame_size - reader.bits_available() / 8;
+
165  vpx_frame.frame_size - reader.bits_available() / 8;
166  vpx_frame.is_keyframe = !is_interframe;
167  vpx_frame.width = width_;
168  vpx_frame.height = height_;
@@ -262,7 +262,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
173  VLOG(3) << "\n frame_size: " << vpx_frame.frame_size
174  << "\n uncompressed_header_size: "
175  << vpx_frame.uncompressed_header_size
-
176  << "\n bits read: " << reader.bit_position()
+
176  << "\n bits read: " << reader.bit_position()
177  << "\n header_size: " << header_size
178  << "\n width: " << vpx_frame.width
179  << "\n height: " << vpx_frame.height;
@@ -285,15 +285,15 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
A class to read bit streams.
Definition: bit_reader.h:17
bool Parse(const uint8_t *data, size_t data_size, std::vector< VPxFrameInfo > *vpx_frames) override
Definition: vp8_parser.cc:100
-
bool SkipBytes(int num_bytes)
Definition: bit_reader.cc:56
-
int bits_available() const
Definition: bit_reader.h:85
-
bool SkipBits(int num_bits)
Definition: bit_reader.cc:24
+
bool SkipBits(size_t num_bits)
Definition: bit_reader.cc:24
static bool IsKeyframe(const uint8_t *data, size_t data_size)
Definition: vp8_parser.cc:183
-
int bit_position() const
Definition: bit_reader.h:90
+
bool SkipBytes(size_t num_bytes)
Definition: bit_reader.cc:54
+
size_t bits_available() const
Definition: bit_reader.h:85
+
size_t bit_position() const
Definition: bit_reader.h:90
diff --git a/docs/d1/d72/language__utils_8cc_source.html b/docs/d1/d72/language__utils_8cc_source.html index 69325ca853..83f0e0d58a 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 666ff60ce9..ddd1055ac0 100644 --- a/docs/d1/d74/mp2t__media__parser_8cc_source.html +++ b/docs/d1/d74/mp2t__media__parser_8cc_source.html @@ -531,7 +531,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d79/classshaka_1_1media_1_1H265VideoSliceHeaderParser.html b/docs/d1/d79/classshaka_1_1media_1_1H265VideoSliceHeaderParser.html index 1e6abc93ee..7089660da6 100644 --- a/docs/d1/d79/classshaka_1_1media_1_1H265VideoSliceHeaderParser.html +++ b/docs/d1/d79/classshaka_1_1media_1_1H265VideoSliceHeaderParser.html @@ -141,7 +141,7 @@ int64_t shaka::media::VideoSliceHeaderParser.

-

Definition at line 60 of file video_slice_header_parser.cc.

+

Definition at line 59 of file video_slice_header_parser.cc.

@@ -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 f7c30fc464..5893b5bd08 100644 --- a/docs/d1/d7d/webm__video__client_8cc_source.html +++ b/docs/d1/d7d/webm__video__client_8cc_source.html @@ -269,7 +269,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d81/structshaka_1_1media_1_1H265ReferencePictureSet-members.html b/docs/d1/d81/structshaka_1_1media_1_1H265ReferencePictureSet-members.html index 74f5258b24..55c68951e0 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 1df3a18353..ff31dea57d 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 94ebcf6b46..19c23edc26 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 2355449e37..1a32553878 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 49db4f735f..fad612c6ae 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 de1a0a108c..f12a57b0c9 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 c1dd8b86d8..6f3199eac0 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 a1b9827b76..5403bbe451 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 2675384608..ad0cf216c8 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 d566003e0d..245e775ee8 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 cc3f4bc771..e454a15890 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 8d53ed0d57..365a0c4d96 100644 --- a/docs/d1/da2/classshaka_1_1media_1_1NalUnitToByteStreamConverter-members.html +++ b/docs/d1/da2/classshaka_1_1media_1_1NalUnitToByteStreamConverter-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/da5/classshaka_1_1media_1_1VPCodecConfigurationRecord.html b/docs/d1/da5/classshaka_1_1media_1_1VPCodecConfigurationRecord.html index 3b9ceb0a06..3946b70ed1 100644 --- a/docs/d1/da5/classshaka_1_1media_1_1VPCodecConfigurationRecord.html +++ b/docs/d1/da5/classshaka_1_1media_1_1VPCodecConfigurationRecord.html @@ -306,7 +306,7 @@ bool video_full_range_flag diff --git a/docs/d1/dad/classshaka_1_1media_1_1Demuxer-members.html b/docs/d1/dad/classshaka_1_1media_1_1Demuxer-members.html index d2f6269569..ece7f61126 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 1203452a28..1e19d889ed 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 1933 of file box_definitions.cc.

+

Definition at line 1939 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 f6a593145d..3a1efb43df 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 ccd8587c93..bab6cbed8c 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 142f55f565..9b96cbe775 100644 --- a/docs/d1/dcb/encrypting__fragmenter_8h_source.html +++ b/docs/d1/dcb/encrypting__fragmenter_8h_source.html @@ -147,7 +147,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
79  }
80 
81  private:
-
82  void EncryptBytes(uint8_t* data, uint32_t size);
+
82  void EncryptBytes(uint8_t* data, size_t size);
83  Status EncryptSample(scoped_refptr<MediaSample> sample);
84 
85  // Should we enable subsample encryption?
@@ -188,14 +188,14 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
EncryptingFragmenter generates MP4 fragments with sample encrypted.
- +
virtual Status PrepareFragmentForEncryption(bool enable_encryption)
EncryptingFragmenter(scoped_refptr< StreamInfo > info, TrackFragment *traf, std::unique_ptr< EncryptionKey > encryption_key, int64_t clear_time, FourCC protection_scheme, uint8_t crypt_byte_block, uint8_t skip_byte_block, MuxerListener *listener)
diff --git a/docs/d1/dd5/classshaka_1_1media_1_1Cluster.html b/docs/d1/dd5/classshaka_1_1media_1_1Cluster.html index d613cb7881..b432aced92 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 e26ead11ea..0d383d9ca6 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 dfe60731d4..acd8938ac5 100644 --- a/docs/d1/de2/classshaka_1_1media_1_1VideoStreamInfo-members.html +++ b/docs/d1/de2/classshaka_1_1media_1_1VideoStreamInfo-members.html @@ -127,7 +127,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/de2/composition__offset__iterator_8cc_source.html b/docs/d1/de2/composition__offset__iterator_8cc_source.html index 84d2456bf1..edc4d0c97d 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 d8f04e5ed7..9ed8eb38b5 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 7e804be5c9..e96886b850 100644 --- a/docs/d1/de7/classshaka_1_1xml_1_1AdaptationSetXmlNode.html +++ b/docs/d1/de7/classshaka_1_1xml_1_1AdaptationSetXmlNode.html @@ -199,7 +199,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 e94103352f..6dd1de67fc 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 65d8cb02e0..c32a89eb44 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 4851f58018..0b6aea75d1 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 9a2dba6977..c9c4c03c05 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 1115 of file box_definitions.cc.

+

Definition at line 1119 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 6042ee677c..4357d3bbd7 100644 --- a/docs/d1/df0/aes__encryptor_8h_source.html +++ b/docs/d1/df0/aes__encryptor_8h_source.html @@ -194,7 +194,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/df3/structshaka_1_1MpdOptions.html b/docs/d1/df3/structshaka_1_1MpdOptions.html index 4944b7356a..5c3cae29bc 100644 --- a/docs/d1/df3/structshaka_1_1MpdOptions.html +++ b/docs/d1/df3/structshaka_1_1MpdOptions.html @@ -130,7 +130,7 @@ std::string default_langua diff --git a/docs/d1/df5/nalu__reader_8cc_source.html b/docs/d1/df5/nalu__reader_8cc_source.html index 27dc240a3d..cae932aa1d 100644 --- a/docs/d1/df5/nalu__reader_8cc_source.html +++ b/docs/d1/df5/nalu__reader_8cc_source.html @@ -428,7 +428,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/df9/structshaka_1_1media_1_1mp4_1_1VideoMediaHeader-members.html b/docs/d1/df9/structshaka_1_1media_1_1mp4_1_1VideoMediaHeader-members.html index 4d30998adc..a651999114 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 ba3b500deb..9acfc2c3ba 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 f8ffb3f373..280bf792c7 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 56be84e495..7cb442e753 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 3fcd8b0d6e..4f6cff141e 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 1baa0ec428..00dabe0556 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 3ea00418c7..ebc10744d5 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 a70381d66e..167e0054fd 100644 --- a/docs/d2/d23/threaded__io__file_8cc_source.html +++ b/docs/d2/d23/threaded__io__file_8cc_source.html @@ -317,7 +317,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d24/packager__util_8h_source.html b/docs/d2/d24/packager__util_8h_source.html index dd723a9274..63c31e53f4 100644 --- a/docs/d2/d24/packager__util_8h_source.html +++ b/docs/d2/d24/packager__util_8h_source.html @@ -140,7 +140,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d29/classshaka_1_1media_1_1mp4_1_1KeyRotationFragmenter.html b/docs/d2/d29/classshaka_1_1media_1_1mp4_1_1KeyRotationFragmenter.html index fc71257586..7019ea89b7 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 2211c521d8..90def52b4d 100644 --- a/docs/d2/d30/tracks__builder_8cc_source.html +++ b/docs/d2/d30/tracks__builder_8cc_source.html @@ -150,344 +150,343 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
61 }
62 
63 static int StringElementSize(int element_id, const std::string& value) {
-
64  return GetUIntSize(element_id) +
-
65  GetUIntMkvSize(value.length()) +
-
66  value.length();
-
67 }
-
68 
-
69 static void SerializeInt(uint8_t** buf_ptr,
-
70  int* buf_size_ptr,
-
71  int64_t value,
-
72  int size) {
-
73  uint8_t*& buf = *buf_ptr;
-
74  int& buf_size = *buf_size_ptr;
-
75 
-
76  for (int idx = 1; idx <= size; ++idx) {
-
77  *buf++ = static_cast<uint8_t>(value >> ((size - idx) * 8));
-
78  --buf_size;
-
79  }
-
80 }
-
81 
-
82 static void SerializeDouble(uint8_t** buf_ptr,
-
83  int* buf_size_ptr,
-
84  double value) {
-
85  // Use a union to convert |value| to native endian integer bit pattern.
-
86  union {
-
87  double src;
-
88  int64_t dst;
-
89  } tmp;
-
90  tmp.src = value;
-
91 
-
92  // Write the bytes from native endian |tmp.dst| to big-endian form in |buf|.
-
93  SerializeInt(buf_ptr, buf_size_ptr, tmp.dst, 8);
-
94 }
-
95 
-
96 static void WriteElementId(uint8_t** buf, int* buf_size, int element_id) {
-
97  SerializeInt(buf, buf_size, element_id, GetUIntSize(element_id));
-
98 }
-
99 
-
100 static void WriteUInt(uint8_t** buf, int* buf_size, uint64_t value) {
-
101  const int size = GetUIntMkvSize(value);
-
102  value |= (1ULL << (size * 7)); // Matroska formatting
-
103  SerializeInt(buf, buf_size, value, size);
-
104 }
-
105 
-
106 static void WriteMasterElement(uint8_t** buf,
-
107  int* buf_size,
-
108  int element_id,
-
109  int payload_size) {
-
110  WriteElementId(buf, buf_size, element_id);
-
111  WriteUInt(buf, buf_size, payload_size);
-
112 }
-
113 
-
114 static void WriteUIntElement(uint8_t** buf,
-
115  int* buf_size,
-
116  int element_id,
-
117  uint64_t value) {
-
118  WriteElementId(buf, buf_size, element_id);
-
119 
-
120  const int size = GetUIntSize(value);
-
121  WriteUInt(buf, buf_size, size);
-
122 
-
123  SerializeInt(buf, buf_size, value, size);
-
124 }
-
125 
-
126 static void WriteDoubleElement(uint8_t** buf,
-
127  int* buf_size,
-
128  int element_id,
-
129  double value) {
-
130  WriteElementId(buf, buf_size, element_id);
-
131  WriteUInt(buf, buf_size, 8);
-
132  SerializeDouble(buf, buf_size, value);
-
133 }
-
134 
-
135 static void WriteStringElement(uint8_t** buf_ptr,
-
136  int* buf_size_ptr,
-
137  int element_id,
-
138  const std::string& value) {
-
139  uint8_t*& buf = *buf_ptr;
-
140  int& buf_size = *buf_size_ptr;
-
141 
-
142  WriteElementId(&buf, &buf_size, element_id);
-
143 
-
144  const uint64_t size = value.length();
-
145  WriteUInt(&buf, &buf_size, size);
-
146 
-
147  memcpy(buf, value.data(), size);
-
148  buf += size;
-
149  buf_size -= size;
-
150 }
-
151 
-
152 TracksBuilder::TracksBuilder(bool allow_invalid_values)
-
153  : allow_invalid_values_(allow_invalid_values) {}
-
154 TracksBuilder::TracksBuilder()
-
155  : allow_invalid_values_(false) {}
-
156 TracksBuilder::~TracksBuilder() {}
-
157 
-
158 void TracksBuilder::AddVideoTrack(int track_num,
-
159  uint64_t track_uid,
-
160  const std::string& codec_id,
-
161  const std::string& name,
-
162  const std::string& language,
-
163  int default_duration,
-
164  int video_pixel_width,
-
165  int video_pixel_height) {
-
166  AddTrackInternal(track_num, kWebMTrackTypeVideo, track_uid, codec_id, name,
-
167  language, default_duration, video_pixel_width,
-
168  video_pixel_height, -1, -1);
-
169 }
-
170 
-
171 void TracksBuilder::AddAudioTrack(int track_num,
-
172  uint64_t track_uid,
-
173  const std::string& codec_id,
-
174  const std::string& name,
-
175  const std::string& language,
-
176  int default_duration,
-
177  int audio_channels,
-
178  double audio_sampling_frequency) {
-
179  AddTrackInternal(track_num, kWebMTrackTypeAudio, track_uid, codec_id, name,
-
180  language, default_duration, -1, -1, audio_channels,
-
181  audio_sampling_frequency);
-
182 }
-
183 
-
184 void TracksBuilder::AddTextTrack(int track_num,
-
185  uint64_t track_uid,
-
186  const std::string& codec_id,
-
187  const std::string& name,
-
188  const std::string& language) {
-
189  AddTrackInternal(track_num, kWebMTrackTypeSubtitlesOrCaptions, track_uid,
-
190  codec_id, name, language, -1, -1, -1, -1, -1);
-
191 }
-
192 
-
193 std::vector<uint8_t> TracksBuilder::Finish() {
-
194  // Allocate the storage
-
195  std::vector<uint8_t> buffer;
-
196  buffer.resize(GetTracksSize());
-
197 
-
198  // Populate the storage with a tracks header
-
199  WriteTracks(&buffer[0], buffer.size());
-
200 
-
201  return buffer;
-
202 }
-
203 
-
204 void TracksBuilder::AddTrackInternal(int track_num,
-
205  int track_type,
-
206  uint64_t track_uid,
-
207  const std::string& codec_id,
-
208  const std::string& name,
-
209  const std::string& language,
-
210  int default_duration,
-
211  int video_pixel_width,
-
212  int video_pixel_height,
-
213  int audio_channels,
-
214  double audio_sampling_frequency) {
-
215  tracks_.push_back(Track(track_num, track_type, track_uid, codec_id, name,
-
216  language, default_duration, video_pixel_width,
-
217  video_pixel_height, audio_channels,
-
218  audio_sampling_frequency, allow_invalid_values_));
-
219 }
-
220 
-
221 int TracksBuilder::GetTracksSize() const {
-
222  return MasterElementSize(kWebMIdTracks, GetTracksPayloadSize());
-
223 }
-
224 
-
225 int TracksBuilder::GetTracksPayloadSize() const {
-
226  int payload_size = 0;
-
227 
-
228  for (TrackList::const_iterator itr = tracks_.begin();
-
229  itr != tracks_.end(); ++itr) {
-
230  payload_size += itr->GetSize();
-
231  }
-
232 
-
233  return payload_size;
-
234 }
-
235 
-
236 void TracksBuilder::WriteTracks(uint8_t* buf, int buf_size) const {
-
237  WriteMasterElement(&buf, &buf_size, kWebMIdTracks, GetTracksPayloadSize());
-
238 
-
239  for (TrackList::const_iterator itr = tracks_.begin();
-
240  itr != tracks_.end(); ++itr) {
-
241  itr->Write(&buf, &buf_size);
-
242  }
-
243 }
-
244 
-
245 TracksBuilder::Track::Track(int track_num,
-
246  int track_type,
-
247  uint64_t track_uid,
-
248  const std::string& codec_id,
-
249  const std::string& name,
-
250  const std::string& language,
-
251  int default_duration,
-
252  int video_pixel_width,
-
253  int video_pixel_height,
-
254  int audio_channels,
-
255  double audio_sampling_frequency,
-
256  bool allow_invalid_values)
-
257  : track_num_(track_num),
-
258  track_type_(track_type),
-
259  track_uid_(track_uid),
-
260  codec_id_(codec_id),
-
261  name_(name),
-
262  language_(language),
-
263  default_duration_(default_duration),
-
264  video_pixel_width_(video_pixel_width),
-
265  video_pixel_height_(video_pixel_height),
-
266  audio_channels_(audio_channels),
-
267  audio_sampling_frequency_(audio_sampling_frequency) {
-
268  if (!allow_invalid_values) {
-
269  CHECK_GT(track_num_, 0);
-
270  CHECK_GT(track_type_, 0);
-
271  CHECK_LT(track_type_, 255);
-
272  CHECK_GT(track_uid_, 0);
-
273  if (track_type != kWebMTrackTypeVideo &&
-
274  track_type != kWebMTrackTypeAudio) {
-
275  CHECK_EQ(default_duration_, -1);
-
276  } else {
-
277  CHECK(default_duration_ == -1 || default_duration_ > 0);
-
278  }
-
279 
-
280  if (track_type == kWebMTrackTypeVideo) {
-
281  CHECK_GT(video_pixel_width_, 0);
-
282  CHECK_GT(video_pixel_height_, 0);
-
283  } else {
-
284  CHECK_EQ(video_pixel_width_, -1);
-
285  CHECK_EQ(video_pixel_height_, -1);
-
286  }
-
287 
-
288  if (track_type == kWebMTrackTypeAudio) {
-
289  CHECK_GT(audio_channels_, 0);
-
290  CHECK_GT(audio_sampling_frequency_, 0.0);
-
291  } else {
-
292  CHECK_EQ(audio_channels_, -1);
-
293  CHECK_EQ(audio_sampling_frequency_, -1.0);
-
294  }
-
295  }
-
296 }
-
297 
-
298 int TracksBuilder::Track::GetSize() const {
-
299  return MasterElementSize(kWebMIdTrackEntry, GetPayloadSize());
-
300 }
-
301 
-
302 int TracksBuilder::Track::GetVideoPayloadSize() const {
-
303  int payload_size = 0;
-
304 
-
305  if (video_pixel_width_ >= 0)
-
306  payload_size += UIntElementSize(kWebMIdPixelWidth, video_pixel_width_);
-
307  if (video_pixel_height_ >= 0)
-
308  payload_size += UIntElementSize(kWebMIdPixelHeight, video_pixel_height_);
-
309 
-
310  return payload_size;
-
311 }
-
312 
-
313 int TracksBuilder::Track::GetAudioPayloadSize() const {
-
314  int payload_size = 0;
-
315 
-
316  if (audio_channels_ >= 0)
-
317  payload_size += UIntElementSize(kWebMIdChannels, audio_channels_);
-
318  if (audio_sampling_frequency_ >= 0)
-
319  payload_size += DoubleElementSize(kWebMIdSamplingFrequency);
-
320 
-
321  return payload_size;
-
322 }
-
323 
-
324 int TracksBuilder::Track::GetPayloadSize() const {
-
325  int size = 0;
-
326 
-
327  size += UIntElementSize(kWebMIdTrackNumber, track_num_);
-
328  size += UIntElementSize(kWebMIdTrackType, track_type_);
-
329  size += UIntElementSize(kWebMIdTrackUID, track_uid_);
-
330 
-
331  if (default_duration_ >= 0)
-
332  size += UIntElementSize(kWebMIdDefaultDuration, default_duration_);
-
333 
-
334  if (!codec_id_.empty())
-
335  size += StringElementSize(kWebMIdCodecID, codec_id_);
-
336 
-
337  if (!name_.empty())
-
338  size += StringElementSize(kWebMIdName, name_);
-
339 
-
340  if (!language_.empty())
-
341  size += StringElementSize(kWebMIdLanguage, language_);
-
342 
-
343  if (GetVideoPayloadSize() > 0) {
-
344  size += MasterElementSize(kWebMIdVideo, GetVideoPayloadSize());
-
345  }
-
346 
-
347  if (GetAudioPayloadSize() > 0) {
-
348  size += MasterElementSize(kWebMIdAudio, GetAudioPayloadSize());
-
349  }
-
350 
-
351  return size;
-
352 }
-
353 
-
354 void TracksBuilder::Track::Write(uint8_t** buf, int* buf_size) const {
-
355  WriteMasterElement(buf, buf_size, kWebMIdTrackEntry, GetPayloadSize());
-
356 
-
357  WriteUIntElement(buf, buf_size, kWebMIdTrackNumber, track_num_);
-
358  WriteUIntElement(buf, buf_size, kWebMIdTrackType, track_type_);
-
359  WriteUIntElement(buf, buf_size, kWebMIdTrackUID, track_uid_);
-
360 
-
361  if (default_duration_ >= 0)
-
362  WriteUIntElement(buf, buf_size, kWebMIdDefaultDuration, default_duration_);
-
363 
-
364  if (!codec_id_.empty())
-
365  WriteStringElement(buf, buf_size, kWebMIdCodecID, codec_id_);
-
366 
-
367  if (!name_.empty())
-
368  WriteStringElement(buf, buf_size, kWebMIdName, name_);
-
369 
-
370  if (!language_.empty())
-
371  WriteStringElement(buf, buf_size, kWebMIdLanguage, language_);
-
372 
-
373  if (GetVideoPayloadSize() > 0) {
-
374  WriteMasterElement(buf, buf_size, kWebMIdVideo, GetVideoPayloadSize());
-
375 
-
376  if (video_pixel_width_ >= 0)
-
377  WriteUIntElement(buf, buf_size, kWebMIdPixelWidth, video_pixel_width_);
-
378 
-
379  if (video_pixel_height_ >= 0)
-
380  WriteUIntElement(buf, buf_size, kWebMIdPixelHeight, video_pixel_height_);
-
381  }
-
382 
-
383  if (GetAudioPayloadSize() > 0) {
-
384  WriteMasterElement(buf, buf_size, kWebMIdAudio, GetAudioPayloadSize());
-
385 
-
386  if (audio_channels_ >= 0)
-
387  WriteUIntElement(buf, buf_size, kWebMIdChannels, audio_channels_);
-
388 
-
389  if (audio_sampling_frequency_ >= 0) {
-
390  WriteDoubleElement(buf, buf_size, kWebMIdSamplingFrequency,
-
391  audio_sampling_frequency_);
-
392  }
-
393  }
-
394 }
-
395 
-
396 } // namespace media
-
397 } // namespace shaka
+
64  return GetUIntSize(element_id) + GetUIntMkvSize(value.length()) +
+
65  static_cast<int>(value.length());
+
66 }
+
67 
+
68 static void SerializeInt(uint8_t** buf_ptr,
+
69  int* buf_size_ptr,
+
70  int64_t value,
+
71  int size) {
+
72  uint8_t*& buf = *buf_ptr;
+
73  int& buf_size = *buf_size_ptr;
+
74 
+
75  for (int idx = 1; idx <= size; ++idx) {
+
76  *buf++ = static_cast<uint8_t>(value >> ((size - idx) * 8));
+
77  --buf_size;
+
78  }
+
79 }
+
80 
+
81 static void SerializeDouble(uint8_t** buf_ptr,
+
82  int* buf_size_ptr,
+
83  double value) {
+
84  // Use a union to convert |value| to native endian integer bit pattern.
+
85  union {
+
86  double src;
+
87  int64_t dst;
+
88  } tmp;
+
89  tmp.src = value;
+
90 
+
91  // Write the bytes from native endian |tmp.dst| to big-endian form in |buf|.
+
92  SerializeInt(buf_ptr, buf_size_ptr, tmp.dst, 8);
+
93 }
+
94 
+
95 static void WriteElementId(uint8_t** buf, int* buf_size, int element_id) {
+
96  SerializeInt(buf, buf_size, element_id, GetUIntSize(element_id));
+
97 }
+
98 
+
99 static void WriteUInt(uint8_t** buf, int* buf_size, uint64_t value) {
+
100  const int size = GetUIntMkvSize(value);
+
101  value |= (1ULL << (size * 7)); // Matroska formatting
+
102  SerializeInt(buf, buf_size, value, size);
+
103 }
+
104 
+
105 static void WriteMasterElement(uint8_t** buf,
+
106  int* buf_size,
+
107  int element_id,
+
108  int payload_size) {
+
109  WriteElementId(buf, buf_size, element_id);
+
110  WriteUInt(buf, buf_size, payload_size);
+
111 }
+
112 
+
113 static void WriteUIntElement(uint8_t** buf,
+
114  int* buf_size,
+
115  int element_id,
+
116  uint64_t value) {
+
117  WriteElementId(buf, buf_size, element_id);
+
118 
+
119  const int size = GetUIntSize(value);
+
120  WriteUInt(buf, buf_size, size);
+
121 
+
122  SerializeInt(buf, buf_size, value, size);
+
123 }
+
124 
+
125 static void WriteDoubleElement(uint8_t** buf,
+
126  int* buf_size,
+
127  int element_id,
+
128  double value) {
+
129  WriteElementId(buf, buf_size, element_id);
+
130  WriteUInt(buf, buf_size, 8);
+
131  SerializeDouble(buf, buf_size, value);
+
132 }
+
133 
+
134 static void WriteStringElement(uint8_t** buf_ptr,
+
135  int* buf_size_ptr,
+
136  int element_id,
+
137  const std::string& value) {
+
138  uint8_t*& buf = *buf_ptr;
+
139  int& buf_size = *buf_size_ptr;
+
140 
+
141  WriteElementId(&buf, &buf_size, element_id);
+
142 
+
143  const uint64_t size = value.length();
+
144  WriteUInt(&buf, &buf_size, size);
+
145 
+
146  memcpy(buf, value.data(), size);
+
147  buf += size;
+
148  buf_size -= size;
+
149 }
+
150 
+
151 TracksBuilder::TracksBuilder(bool allow_invalid_values)
+
152  : allow_invalid_values_(allow_invalid_values) {}
+
153 TracksBuilder::TracksBuilder()
+
154  : allow_invalid_values_(false) {}
+
155 TracksBuilder::~TracksBuilder() {}
+
156 
+
157 void TracksBuilder::AddVideoTrack(int track_num,
+
158  uint64_t track_uid,
+
159  const std::string& codec_id,
+
160  const std::string& name,
+
161  const std::string& language,
+
162  int default_duration,
+
163  int video_pixel_width,
+
164  int video_pixel_height) {
+
165  AddTrackInternal(track_num, kWebMTrackTypeVideo, track_uid, codec_id, name,
+
166  language, default_duration, video_pixel_width,
+
167  video_pixel_height, -1, -1);
+
168 }
+
169 
+
170 void TracksBuilder::AddAudioTrack(int track_num,
+
171  uint64_t track_uid,
+
172  const std::string& codec_id,
+
173  const std::string& name,
+
174  const std::string& language,
+
175  int default_duration,
+
176  int audio_channels,
+
177  double audio_sampling_frequency) {
+
178  AddTrackInternal(track_num, kWebMTrackTypeAudio, track_uid, codec_id, name,
+
179  language, default_duration, -1, -1, audio_channels,
+
180  audio_sampling_frequency);
+
181 }
+
182 
+
183 void TracksBuilder::AddTextTrack(int track_num,
+
184  uint64_t track_uid,
+
185  const std::string& codec_id,
+
186  const std::string& name,
+
187  const std::string& language) {
+
188  AddTrackInternal(track_num, kWebMTrackTypeSubtitlesOrCaptions, track_uid,
+
189  codec_id, name, language, -1, -1, -1, -1, -1);
+
190 }
+
191 
+
192 std::vector<uint8_t> TracksBuilder::Finish() {
+
193  // Allocate the storage
+
194  std::vector<uint8_t> buffer;
+
195  buffer.resize(GetTracksSize());
+
196 
+
197  // Populate the storage with a tracks header
+
198  WriteTracks(&buffer[0], static_cast<int>(buffer.size()));
+
199 
+
200  return buffer;
+
201 }
+
202 
+
203 void TracksBuilder::AddTrackInternal(int track_num,
+
204  int track_type,
+
205  uint64_t track_uid,
+
206  const std::string& codec_id,
+
207  const std::string& name,
+
208  const std::string& language,
+
209  int default_duration,
+
210  int video_pixel_width,
+
211  int video_pixel_height,
+
212  int audio_channels,
+
213  double audio_sampling_frequency) {
+
214  tracks_.push_back(Track(track_num, track_type, track_uid, codec_id, name,
+
215  language, default_duration, video_pixel_width,
+
216  video_pixel_height, audio_channels,
+
217  audio_sampling_frequency, allow_invalid_values_));
+
218 }
+
219 
+
220 int TracksBuilder::GetTracksSize() const {
+
221  return MasterElementSize(kWebMIdTracks, GetTracksPayloadSize());
+
222 }
+
223 
+
224 int TracksBuilder::GetTracksPayloadSize() const {
+
225  int payload_size = 0;
+
226 
+
227  for (TrackList::const_iterator itr = tracks_.begin();
+
228  itr != tracks_.end(); ++itr) {
+
229  payload_size += itr->GetSize();
+
230  }
+
231 
+
232  return payload_size;
+
233 }
+
234 
+
235 void TracksBuilder::WriteTracks(uint8_t* buf, int buf_size) const {
+
236  WriteMasterElement(&buf, &buf_size, kWebMIdTracks, GetTracksPayloadSize());
+
237 
+
238  for (TrackList::const_iterator itr = tracks_.begin();
+
239  itr != tracks_.end(); ++itr) {
+
240  itr->Write(&buf, &buf_size);
+
241  }
+
242 }
+
243 
+
244 TracksBuilder::Track::Track(int track_num,
+
245  int track_type,
+
246  uint64_t track_uid,
+
247  const std::string& codec_id,
+
248  const std::string& name,
+
249  const std::string& language,
+
250  int default_duration,
+
251  int video_pixel_width,
+
252  int video_pixel_height,
+
253  int audio_channels,
+
254  double audio_sampling_frequency,
+
255  bool allow_invalid_values)
+
256  : track_num_(track_num),
+
257  track_type_(track_type),
+
258  track_uid_(track_uid),
+
259  codec_id_(codec_id),
+
260  name_(name),
+
261  language_(language),
+
262  default_duration_(default_duration),
+
263  video_pixel_width_(video_pixel_width),
+
264  video_pixel_height_(video_pixel_height),
+
265  audio_channels_(audio_channels),
+
266  audio_sampling_frequency_(audio_sampling_frequency) {
+
267  if (!allow_invalid_values) {
+
268  CHECK_GT(track_num_, 0);
+
269  CHECK_GT(track_type_, 0);
+
270  CHECK_LT(track_type_, 255);
+
271  CHECK_GT(track_uid_, 0);
+
272  if (track_type != kWebMTrackTypeVideo &&
+
273  track_type != kWebMTrackTypeAudio) {
+
274  CHECK_EQ(default_duration_, -1);
+
275  } else {
+
276  CHECK(default_duration_ == -1 || default_duration_ > 0);
+
277  }
+
278 
+
279  if (track_type == kWebMTrackTypeVideo) {
+
280  CHECK_GT(video_pixel_width_, 0);
+
281  CHECK_GT(video_pixel_height_, 0);
+
282  } else {
+
283  CHECK_EQ(video_pixel_width_, -1);
+
284  CHECK_EQ(video_pixel_height_, -1);
+
285  }
+
286 
+
287  if (track_type == kWebMTrackTypeAudio) {
+
288  CHECK_GT(audio_channels_, 0);
+
289  CHECK_GT(audio_sampling_frequency_, 0.0);
+
290  } else {
+
291  CHECK_EQ(audio_channels_, -1);
+
292  CHECK_EQ(audio_sampling_frequency_, -1.0);
+
293  }
+
294  }
+
295 }
+
296 
+
297 int TracksBuilder::Track::GetSize() const {
+
298  return MasterElementSize(kWebMIdTrackEntry, GetPayloadSize());
+
299 }
+
300 
+
301 int TracksBuilder::Track::GetVideoPayloadSize() const {
+
302  int payload_size = 0;
+
303 
+
304  if (video_pixel_width_ >= 0)
+
305  payload_size += UIntElementSize(kWebMIdPixelWidth, video_pixel_width_);
+
306  if (video_pixel_height_ >= 0)
+
307  payload_size += UIntElementSize(kWebMIdPixelHeight, video_pixel_height_);
+
308 
+
309  return payload_size;
+
310 }
+
311 
+
312 int TracksBuilder::Track::GetAudioPayloadSize() const {
+
313  int payload_size = 0;
+
314 
+
315  if (audio_channels_ >= 0)
+
316  payload_size += UIntElementSize(kWebMIdChannels, audio_channels_);
+
317  if (audio_sampling_frequency_ >= 0)
+
318  payload_size += DoubleElementSize(kWebMIdSamplingFrequency);
+
319 
+
320  return payload_size;
+
321 }
+
322 
+
323 int TracksBuilder::Track::GetPayloadSize() const {
+
324  int size = 0;
+
325 
+
326  size += UIntElementSize(kWebMIdTrackNumber, track_num_);
+
327  size += UIntElementSize(kWebMIdTrackType, track_type_);
+
328  size += UIntElementSize(kWebMIdTrackUID, track_uid_);
+
329 
+
330  if (default_duration_ >= 0)
+
331  size += UIntElementSize(kWebMIdDefaultDuration, default_duration_);
+
332 
+
333  if (!codec_id_.empty())
+
334  size += StringElementSize(kWebMIdCodecID, codec_id_);
+
335 
+
336  if (!name_.empty())
+
337  size += StringElementSize(kWebMIdName, name_);
+
338 
+
339  if (!language_.empty())
+
340  size += StringElementSize(kWebMIdLanguage, language_);
+
341 
+
342  if (GetVideoPayloadSize() > 0) {
+
343  size += MasterElementSize(kWebMIdVideo, GetVideoPayloadSize());
+
344  }
+
345 
+
346  if (GetAudioPayloadSize() > 0) {
+
347  size += MasterElementSize(kWebMIdAudio, GetAudioPayloadSize());
+
348  }
+
349 
+
350  return size;
+
351 }
+
352 
+
353 void TracksBuilder::Track::Write(uint8_t** buf, int* buf_size) const {
+
354  WriteMasterElement(buf, buf_size, kWebMIdTrackEntry, GetPayloadSize());
+
355 
+
356  WriteUIntElement(buf, buf_size, kWebMIdTrackNumber, track_num_);
+
357  WriteUIntElement(buf, buf_size, kWebMIdTrackType, track_type_);
+
358  WriteUIntElement(buf, buf_size, kWebMIdTrackUID, track_uid_);
+
359 
+
360  if (default_duration_ >= 0)
+
361  WriteUIntElement(buf, buf_size, kWebMIdDefaultDuration, default_duration_);
+
362 
+
363  if (!codec_id_.empty())
+
364  WriteStringElement(buf, buf_size, kWebMIdCodecID, codec_id_);
+
365 
+
366  if (!name_.empty())
+
367  WriteStringElement(buf, buf_size, kWebMIdName, name_);
+
368 
+
369  if (!language_.empty())
+
370  WriteStringElement(buf, buf_size, kWebMIdLanguage, language_);
+
371 
+
372  if (GetVideoPayloadSize() > 0) {
+
373  WriteMasterElement(buf, buf_size, kWebMIdVideo, GetVideoPayloadSize());
+
374 
+
375  if (video_pixel_width_ >= 0)
+
376  WriteUIntElement(buf, buf_size, kWebMIdPixelWidth, video_pixel_width_);
+
377 
+
378  if (video_pixel_height_ >= 0)
+
379  WriteUIntElement(buf, buf_size, kWebMIdPixelHeight, video_pixel_height_);
+
380  }
+
381 
+
382  if (GetAudioPayloadSize() > 0) {
+
383  WriteMasterElement(buf, buf_size, kWebMIdAudio, GetAudioPayloadSize());
+
384 
+
385  if (audio_channels_ >= 0)
+
386  WriteUIntElement(buf, buf_size, kWebMIdChannels, audio_channels_);
+
387 
+
388  if (audio_sampling_frequency_ >= 0) {
+
389  WriteDoubleElement(buf, buf_size, kWebMIdSamplingFrequency,
+
390  audio_sampling_frequency_);
+
391  }
+
392  }
+
393 }
+
394 
+
395 } // namespace media
+
396 } // namespace shaka
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 1b44bfe1fd..f884c6df26 100644 --- a/docs/d2/d33/video__slice__header__parser_8h_source.html +++ b/docs/d2/d33/video__slice__header__parser_8h_source.html @@ -155,19 +155,19 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
virtual int64_t GetHeaderSize(const Nalu &nalu)=0
Gets the header size of the given NALU. Returns < 0 on error.
-
int64_t GetHeaderSize(const Nalu &nalu) override
Gets the header size of the given NALU. Returns < 0 on error.
-
int64_t GetHeaderSize(const Nalu &nalu) override
Gets the header size of the given NALU. Returns < 0 on error.
-
bool Initialize(const std::vector< uint8_t > &decoder_configuration) override
+
int64_t GetHeaderSize(const Nalu &nalu) override
Gets the header size of the given NALU. Returns < 0 on error.
+
int64_t GetHeaderSize(const Nalu &nalu) override
Gets the header size of the given NALU. Returns < 0 on error.
+
bool Initialize(const std::vector< uint8_t > &decoder_configuration) override
virtual bool Initialize(const std::vector< uint8_t > &decoder_configuration)=0
-
bool Initialize(const std::vector< uint8_t > &decoder_configuration) override
+
bool Initialize(const std::vector< uint8_t > &decoder_configuration) override
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 c3a45a3745..a0a47d2eed 100644 --- a/docs/d2/d35/classshaka_1_1media_1_1WidevineKeySource-members.html +++ b/docs/d2/d35/classshaka_1_1media_1_1WidevineKeySource-members.html @@ -121,7 +121,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d3c/structshaka_1_1media_1_1mp4_1_1TrackFragmentHeader-members.html b/docs/d2/d3c/structshaka_1_1media_1_1mp4_1_1TrackFragmentHeader-members.html index 54f046b960..1b808eb6ec 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 b1fa73c73b..b80d7dd3ac 100644 --- a/docs/d2/d45/program__map__table__writer_8cc_source.html +++ b/docs/d2/d45/program__map__table__writer_8cc_source.html @@ -268,7 +268,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
179 };
180 
181 void WritePmtToBuffer(const uint8_t* pmt,
-
182  int pmt_size,
+
182  size_t pmt_size,
183  ContinuityCounter* continuity_counter,
184  BufferWriter* writer) {
185  const bool kPayloadUnitStartIndicator = true;
@@ -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 584abfa31e..c810da0cd7 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 @@ -284,7 +284,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
195  if (is_key_frame)
196  buffer_writer.AppendVector(decoder_configuration_in_byte_stream_);
197 
-
198  int adjustment = buffer_writer.Size();
+
198  int adjustment = static_cast<int>(buffer_writer.Size());
199  size_t subsample_id = 0;
200 
201  NaluReader nalu_reader(Nalu::kH264, nalu_length_size_, sample, sample_size);
@@ -334,7 +334,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
245  DCHECK_LT(old_nalu_size, subsamples->at(subsample_id).clear_bytes);
246  subsamples->at(subsample_id).clear_bytes -=
247  static_cast<uint16_t>(old_nalu_size);
-
248  adjustment += old_nalu_size;
+
248  adjustment += static_cast<int>(old_nalu_size);
249  } else {
250  // Apply the adjustment on the current subsample, reset the
251  // adjustment and move to the next subsample.
@@ -379,7 +379,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d4d/file_8h_source.html b/docs/d2/d4d/file_8h_source.html index c7c213348b..22d0e1ef48 100644 --- a/docs/d2/d4d/file_8h_source.html +++ b/docs/d2/d4d/file_8h_source.html @@ -191,7 +191,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d4f/structshaka_1_1Element-members.html b/docs/d2/d4f/structshaka_1_1Element-members.html index e09b458801..1009e1e593 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 ee9f7c2b6a..bcb6341e1e 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 fa15d4a7f2..e0e48c5d5f 100644 --- a/docs/d2/d59/structshaka_1_1media_1_1H264SliceHeader.html +++ b/docs/d2/d59/structshaka_1_1media_1_1H264SliceHeader.html @@ -142,12 +142,12 @@ int nal_ref_idc const uint8_t * nalu_data   - -off_t nalu_size -  - -off_t header_bit_size -  + +size_t nalu_size +  + +size_t header_bit_size int first_mb_in_slice   @@ -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 182a91b3cc..75b33ab7cd 100644 --- a/docs/d2/d5b/classshaka_1_1media_1_1KeySource-members.html +++ b/docs/d2/d5b/classshaka_1_1media_1_1KeySource-members.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d5c/classshaka_1_1SimpleMpdNotifier-members.html b/docs/d2/d5c/classshaka_1_1SimpleMpdNotifier-members.html index 25362da5b2..561682635d 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 6afea3c279..f674713345 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 853a99ffa3..a0793fa38f 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 8440da960f..faf43d5bbe 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 1b455752ed..859e881292 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 a0a4688e45..9d1b7c6388 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 74ef15edcc..5e596f7b45 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 471 of file box_definitions.cc.

+

Definition at line 474 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 acb6262663..ff2cb8e6ce 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 02d3e3d2ae..204a4438a9 100644 --- a/docs/d2/d7b/simple__mpd__notifier_8cc_source.html +++ b/docs/d2/d7b/simple__mpd__notifier_8cc_source.html @@ -240,7 +240,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d7e/aac__audio__specific__config_8h_source.html b/docs/d2/d7e/aac__audio__specific__config_8h_source.html index 01e75617d5..9ac0a7940e 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 e868f8e361..d790c8ad2c 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 2673 of file box_definitions.cc.

+

Definition at line 2679 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 de6d7e7639..86c1ae01ec 100644 --- a/docs/d2/d8a/hls__notify__muxer__listener_8h_source.html +++ b/docs/d2/d8a/hls__notify__muxer__listener_8h_source.html @@ -176,7 +176,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d91/structshaka_1_1media_1_1mp4_1_1CuePayloadBox-members.html b/docs/d2/d91/structshaka_1_1media_1_1mp4_1_1CuePayloadBox-members.html index 2bd4802537..023e933909 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 f725568442..6a978edcac 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 2896521a99..ad7dd57592 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 63c3eef76c..b6ae1e052e 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 6c1dbbcfe7..94f036b91c 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 1d784bbefb..fb57a33437 100644 --- a/docs/d2/da8/mp4_2segmenter_8cc_source.html +++ b/docs/d2/da8/mp4_2segmenter_8cc_source.html @@ -545,7 +545,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
456  sizeof(uint32_t); // for sample count field in 'senc'
457  }
458  traf.runs[0].data_offset = data_offset + mdat.data_size;
-
459  mdat.data_size += fragmenters_[i]->data()->Size();
+
459  mdat.data_size += static_cast<uint32_t>(fragmenters_[i]->data()->Size());
460  }
461 
462  // Generate segment reference.
@@ -600,7 +600,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 66cd09680f..434596d9c8 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 bee580c77a..710e60723d 100644 --- a/docs/d2/dae/classshaka_1_1MockAdaptationSet-members.html +++ b/docs/d2/dae/classshaka_1_1MockAdaptationSet-members.html @@ -124,7 +124,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 ce621b7142..b001420dbc 100644 --- a/docs/d2/dae/webm__muxer_8cc_source.html +++ b/docs/d2/dae/webm__muxer_8cc_source.html @@ -223,7 +223,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/db1/structshaka_1_1media_1_1mp4_1_1SampleToGroup-members.html b/docs/d2/db1/structshaka_1_1media_1_1mp4_1_1SampleToGroup-members.html index bd98bbadde..82f8996f24 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 2c59337ece..8e08616b9f 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 b3dbb92c89..493d8cabbe 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 22152c006f..da535864a3 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 785599df0d..a9e26a6dac 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 2182bfc200..a202c78579 100644 --- a/docs/d2/dc7/structshaka_1_1MpdOptions-members.html +++ b/docs/d2/dc7/structshaka_1_1MpdOptions-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/dcd/program__map__table__writer_8h_source.html b/docs/d2/dcd/program__map__table__writer_8h_source.html index dde54f3684..9cf12e19d8 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 ca985723ce..78c0d8dbad 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 8e04b384a9..d9a3bfa0bc 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 @@ uint64_t cluster_length_in diff --git a/docs/d2/dd6/mkv__writer_8h_source.html b/docs/d2/dd6/mkv__writer_8h_source.html index ec1af47f00..da7741e646 100644 --- a/docs/d2/dd6/mkv__writer_8h_source.html +++ b/docs/d2/dd6/mkv__writer_8h_source.html @@ -152,7 +152,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/ddb/classshaka_1_1media_1_1WebMMediaParser.html b/docs/d2/ddb/classshaka_1_1media_1_1WebMMediaParser.html index 29cdcfad4a..3ea0425ece 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 df7626dfdb..73d146193b 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 abc045e69f..7c91ce9ba4 100644 --- a/docs/d2/de6/packager__main_8cc_source.html +++ b/docs/d2/de6/packager__main_8cc_source.html @@ -677,7 +677,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/de7/classshaka_1_1media_1_1TextStreamInfo-members.html b/docs/d2/de7/classshaka_1_1media_1_1TextStreamInfo-members.html index b37def0701..8a316d5b47 100644 --- a/docs/d2/de7/classshaka_1_1media_1_1TextStreamInfo-members.html +++ b/docs/d2/de7/classshaka_1_1media_1_1TextStreamInfo-members.html @@ -118,7 +118,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/de7/structshaka_1_1media_1_1mp4_1_1Edit-members.html b/docs/d2/de7/structshaka_1_1media_1_1mp4_1_1Edit-members.html index d1b8885a2e..5824352b11 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 b192123f80..fec10282c6 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 6c4c413bca..948da3753d 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 e1881f7c66..dcb44fca7a 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 1c06c0b50f..6c614f3734 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 86b8ac5081..d70ce398c1 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 @@ -114,9 +114,9 @@ void PopulateFromSegment int GetFrameCountForCluster (size_t i) const   - -int cluster_count () const -  + +size_t cluster_count () const + 

Detailed Description

@@ -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 c7b48d99b2..6ed49bd2d4 100644 --- a/docs/d2/dfc/classshaka_1_1media_1_1MkvWriter-members.html +++ b/docs/d2/dfc/classshaka_1_1media_1_1MkvWriter-members.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/dfd/adts__header_8h_source.html b/docs/d2/dfd/adts__header_8h_source.html index 80e83dce6c..8f09ac6a35 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 6d0a5bdb30..e496e0a51c 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 7fed3fb1aa..b88f6b4bae 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 7ad8533a76..25ae49840f 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 af6dde1fe8..47d2d74e5a 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 3c496f45f2..fc827a70b3 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 834ecbb974..1b6e42d2bf 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 06134a9ea3..2a89cfaf70 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 334f087c1d..9a4673fda9 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 9e3df39f7d..012ae35309 100644 --- a/docs/d3/d35/video__slice__header__parser_8cc_source.html +++ b/docs/d3/d35/video__slice__header__parser_8cc_source.html @@ -104,103 +104,102 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
15 
16 namespace {
17 
-
18 int NumBitsToNumBytes(int size_in_bits) {
+
18 size_t NumBitsToNumBytes(size_t size_in_bits) {
19  // Round-up division.
-
20  DCHECK_GE(size_in_bits, 0);
-
21  return (size_in_bits - 1) / 8 + 1;
-
22 }
-
23 
-
24 } // namespace
-
25 
-
26 H264VideoSliceHeaderParser::H264VideoSliceHeaderParser() {}
-
27 H264VideoSliceHeaderParser::~H264VideoSliceHeaderParser() {}
-
28 
- -
30  const std::vector<uint8_t>& decoder_configuration) {
- -
32  RCHECK(config.Parse(decoder_configuration));
-
33 
-
34  for (size_t i = 0; i < config.nalu_count(); i++) {
-
35  int id;
-
36  const Nalu& nalu = config.nalu(i);
-
37  if (nalu.type() == Nalu::H264_SPS) {
-
38  RCHECK(parser_.ParseSps(nalu, &id) == H264Parser::kOk);
-
39  } else {
-
40  DCHECK_EQ(Nalu::H264_PPS, nalu.type());
-
41  RCHECK(parser_.ParsePps(nalu, &id) == H264Parser::kOk);
-
42  }
-
43  }
-
44 
-
45  return true;
-
46 }
-
47 
- -
49  DCHECK(nalu.is_video_slice());
-
50  H264SliceHeader slice_header;
-
51  if (parser_.ParseSliceHeader(nalu, &slice_header) != H264Parser::kOk)
-
52  return -1;
-
53 
-
54  return NumBitsToNumBytes(slice_header.header_bit_size);
-
55 }
-
56 
-
57 H265VideoSliceHeaderParser::H265VideoSliceHeaderParser() {}
-
58 H265VideoSliceHeaderParser::~H265VideoSliceHeaderParser() {}
-
59 
- -
61  const std::vector<uint8_t>& decoder_configuration) {
-
62  int id;
- -
64  RCHECK(hevc_config.Parse(decoder_configuration));
-
65 
-
66  for (size_t i = 0; i < hevc_config.nalu_count(); i++) {
-
67  const Nalu& nalu = hevc_config.nalu(i);
-
68  if (nalu.type() == Nalu::H265_SPS) {
-
69  RCHECK(parser_.ParseSps(nalu, &id) == H265Parser::kOk);
-
70  } else if (nalu.type() == Nalu::H265_PPS) {
-
71  RCHECK(parser_.ParsePps(nalu, &id) == H265Parser::kOk);
-
72  } else if (nalu.type() == Nalu::H265_VPS) {
-
73  // Ignore since it does not affect video slice header parsing.
-
74  } else {
-
75  VLOG(1) << "Ignoring decoder configuration Nalu of unknown type "
-
76  << nalu.type();
-
77  }
-
78  }
-
79 
-
80  return true;
-
81 }
-
82 
- -
84  DCHECK(nalu.is_video_slice());
-
85  H265SliceHeader slice_header;
-
86  if (parser_.ParseSliceHeader(nalu, &slice_header) != H265Parser::kOk)
-
87  return -1;
-
88 
-
89  return NumBitsToNumBytes(slice_header.header_bit_size);
-
90 }
-
91 
-
92 } // namespace media
-
93 } // namespace shaka
-
94 
+
20  return (size_in_bits + 7) >> 3;
+
21 }
+
22 
+
23 } // namespace
+
24 
+
25 H264VideoSliceHeaderParser::H264VideoSliceHeaderParser() {}
+
26 H264VideoSliceHeaderParser::~H264VideoSliceHeaderParser() {}
+
27 
+ +
29  const std::vector<uint8_t>& decoder_configuration) {
+ +
31  RCHECK(config.Parse(decoder_configuration));
+
32 
+
33  for (size_t i = 0; i < config.nalu_count(); i++) {
+
34  int id;
+
35  const Nalu& nalu = config.nalu(i);
+
36  if (nalu.type() == Nalu::H264_SPS) {
+
37  RCHECK(parser_.ParseSps(nalu, &id) == H264Parser::kOk);
+
38  } else {
+
39  DCHECK_EQ(Nalu::H264_PPS, nalu.type());
+
40  RCHECK(parser_.ParsePps(nalu, &id) == H264Parser::kOk);
+
41  }
+
42  }
+
43 
+
44  return true;
+
45 }
+
46 
+ +
48  DCHECK(nalu.is_video_slice());
+
49  H264SliceHeader slice_header;
+
50  if (parser_.ParseSliceHeader(nalu, &slice_header) != H264Parser::kOk)
+
51  return -1;
+
52 
+
53  return NumBitsToNumBytes(slice_header.header_bit_size);
+
54 }
+
55 
+
56 H265VideoSliceHeaderParser::H265VideoSliceHeaderParser() {}
+
57 H265VideoSliceHeaderParser::~H265VideoSliceHeaderParser() {}
+
58 
+ +
60  const std::vector<uint8_t>& decoder_configuration) {
+
61  int id;
+ +
63  RCHECK(hevc_config.Parse(decoder_configuration));
+
64 
+
65  for (size_t i = 0; i < hevc_config.nalu_count(); i++) {
+
66  const Nalu& nalu = hevc_config.nalu(i);
+
67  if (nalu.type() == Nalu::H265_SPS) {
+
68  RCHECK(parser_.ParseSps(nalu, &id) == H265Parser::kOk);
+
69  } else if (nalu.type() == Nalu::H265_PPS) {
+
70  RCHECK(parser_.ParsePps(nalu, &id) == H265Parser::kOk);
+
71  } else if (nalu.type() == Nalu::H265_VPS) {
+
72  // Ignore since it does not affect video slice header parsing.
+
73  } else {
+
74  VLOG(1) << "Ignoring decoder configuration Nalu of unknown type "
+
75  << nalu.type();
+
76  }
+
77  }
+
78 
+
79  return true;
+
80 }
+
81 
+ +
83  DCHECK(nalu.is_video_slice());
+
84  H265SliceHeader slice_header;
+
85  if (parser_.ParseSliceHeader(nalu, &slice_header) != H265Parser::kOk)
+
86  return -1;
+
87 
+
88  return NumBitsToNumBytes(slice_header.header_bit_size);
+
89 }
+
90 
+
91 } // namespace media
+
92 } // namespace shaka
+
93 
Result ParseSliceHeader(const Nalu &nalu, H265SliceHeader *slice_header)
Definition: h265_parser.cc:183
Result ParsePps(const Nalu &nalu, int *pps_id)
Definition: h265_parser.cc:397
int type() const
Definition: nalu_reader.h:112
-
int64_t GetHeaderSize(const Nalu &nalu) override
Gets the header size of the given NALU. Returns < 0 on error.
-
int64_t GetHeaderSize(const Nalu &nalu) override
Gets the header size of the given NALU. Returns < 0 on error.
+
int64_t GetHeaderSize(const Nalu &nalu) override
Gets the header size of the given NALU. Returns < 0 on error.
+
int64_t GetHeaderSize(const Nalu &nalu) override
Gets the header size of the given NALU. Returns < 0 on error.
bool Parse(const std::vector< uint8_t > &data)
-
bool Initialize(const std::vector< uint8_t > &decoder_configuration) override
+
bool Initialize(const std::vector< uint8_t > &decoder_configuration) override
Class for parsing HEVC decoder configuration record.
Class for parsing AVC decoder configuration record.
Result ParseSps(const Nalu &nalu, int *sps_id)
Definition: h265_parser.cc:505
-
bool Initialize(const std::vector< uint8_t > &decoder_configuration) override
+
bool Initialize(const std::vector< uint8_t > &decoder_configuration) override
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 624aaf5ba9..3250d1030c 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 fd147b189e..d6257b77a8 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 938b46b5e8..45eb6a1abf 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 420932f783..925aa4845a 100644 --- a/docs/d3/d61/classshaka_1_1media_1_1File.html +++ b/docs/d3/d61/classshaka_1_1media_1_1File.html @@ -811,7 +811,7 @@ class ThreadedIoFile diff --git a/docs/d3/d62/continuity__counter_8h_source.html b/docs/d3/d62/continuity__counter_8h_source.html index 0a23180b33..eb6f94f48b 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 1838816cd4..fc9f303375 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 b3b211a1be..2f411f7e54 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 7562b0e4bc..c7c0f64f05 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 ea14536d21..389f28e073 100644 --- a/docs/d3/d6b/fixed__key__source_8cc_source.html +++ b/docs/d3/d6b/fixed__key__source_8cc_source.html @@ -247,7 +247,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d71/classshaka_1_1media_1_1mp2t_1_1TsMuxer.html b/docs/d3/d71/classshaka_1_1media_1_1mp2t_1_1TsMuxer.html index 85f74de033..7bcbe2f525 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 @@ -184,7 +184,7 @@ FourCC protection_scheme diff --git a/docs/d3/d72/fixed__key__source_8h_source.html b/docs/d3/d72/fixed__key__source_8h_source.html index 48dc2b2836..9286082b14 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 f54bfc9179..8779a08016 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 @@ -188,7 +188,7 @@ FourCC protection_scheme diff --git a/docs/d3/d75/classshaka_1_1media_1_1AesEncryptor.html b/docs/d3/d75/classshaka_1_1media_1_1AesEncryptor.html index e5719d114f..bdb2f75eb0 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 d32162439f..ab1acedd3b 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 2b97e717a1..a84fbd9a0f 100644 --- a/docs/d3/d76/muxer__flags_8h_source.html +++ b/docs/d3/d76/muxer__flags_8h_source.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d77/structshaka_1_1media_1_1mp4_1_1TextSampleEntry-members.html b/docs/d3/d77/structshaka_1_1media_1_1mp4_1_1TextSampleEntry-members.html index 508f23293c..c7f3b69a1e 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 931b12ab67..22d2baae05 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 cd93e90efb..21e06cf6a1 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 4c8ee43a47..98e838158f 100644 --- a/docs/d3/d80/muxer__util_8h_source.html +++ b/docs/d3/d80/muxer__util_8h_source.html @@ -129,7 +129,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 2b2d387b4d..97c6ed0613 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 751 of file box_definitions.cc.

+

Definition at line 754 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 4399ce30b4..2753d75871 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 dee5aa8977..1bcfda0179 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 6305c7e7a9..9ff88a1e6c 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 ad503f8338..a56b73e36c 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 af80683a24..62406642eb 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 4c97c9a716..4eaf596534 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 @@ -296,7 +296,7 @@ uint64_t cluster_length_in diff --git a/docs/d3/da2/structshaka_1_1media_1_1mp4_1_1SchemeType.html b/docs/d3/da2/structshaka_1_1media_1_1mp4_1_1SchemeType.html index ab929859c0..56ac84a245 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 @@ -174,7 +174,7 @@ Additional Inherited Members

Implements shaka::media::mp4::Box.

-

Definition at line 391 of file box_definitions.cc.

+

Definition at line 394 of file box_definitions.cc.

@@ -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 fd8db09b1c..7492a7eb81 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 1372 of file box_definitions.cc.

+

Definition at line 1378 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 0ec48e9730..e2a51cc666 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 b56980e4c9..80af99000e 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 2116 of file box_definitions.cc.

+

Definition at line 2122 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 9d154fc981..b8b1a180bb 100644 --- a/docs/d3/db6/webm__parser_8cc_source.html +++ b/docs/d3/db6/webm__parser_8cc_source.html @@ -981,85 +981,86 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
892  if (!element_info)
893  return false;
894 
-
895  int current_level = root_level_ + list_state_stack_.size() - 1;
-
896  if (current_level + 1 != element_info->level_)
-
897  return false;
-
898 
-
899  WebMParserClient* current_list_client = NULL;
-
900  if (!list_state_stack_.empty()) {
-
901  // Make sure the new list doesn't go past the end of the current list.
-
902  ListState current_list_state = list_state_stack_.back();
-
903  if (current_list_state.size_ != kWebMUnknownSize &&
-
904  current_list_state.size_ < current_list_state.bytes_parsed_ + size)
-
905  return false;
-
906  current_list_client = current_list_state.client_;
-
907  } else {
-
908  current_list_client = root_client_;
-
909  }
-
910 
-
911  WebMParserClient* new_list_client = current_list_client->OnListStart(id);
-
912  if (!new_list_client)
-
913  return false;
-
914 
-
915  ListState new_list_state = { id, size, 0, element_info, new_list_client };
-
916  list_state_stack_.push_back(new_list_state);
-
917 
-
918  if (size == 0)
-
919  return OnListEnd();
-
920 
-
921  return true;
-
922 }
-
923 
-
924 bool WebMListParser::OnListEnd() {
-
925  int lists_ended = 0;
-
926  for (; !list_state_stack_.empty(); ++lists_ended) {
-
927  const ListState& list_state = list_state_stack_.back();
-
928  int64_t bytes_parsed = list_state.bytes_parsed_;
-
929  int id = list_state.id_;
-
930 
-
931  if (bytes_parsed != list_state.size_)
-
932  break;
-
933 
-
934  list_state_stack_.pop_back();
-
935 
-
936  WebMParserClient* client = NULL;
-
937  if (!list_state_stack_.empty()) {
-
938  // Update the bytes_parsed_ for the parent element.
-
939  list_state_stack_.back().bytes_parsed_ += bytes_parsed;
-
940  client = list_state_stack_.back().client_;
-
941  } else {
-
942  client = root_client_;
-
943  }
-
944 
-
945  if (!client->OnListEnd(id))
-
946  return false;
-
947  }
-
948 
-
949  DCHECK_GE(lists_ended, 1);
-
950 
-
951  if (list_state_stack_.empty())
-
952  ChangeState(DONE_PARSING_LIST);
-
953 
-
954  return true;
-
955 }
-
956 
-
957 bool WebMListParser::IsSiblingOrAncestor(int id_a, int id_b) const {
-
958  DCHECK((id_a == kWebMIdSegment) || (id_a == kWebMIdCluster));
-
959 
-
960  if (id_a == kWebMIdCluster) {
-
961  // kWebMIdCluster siblings.
-
962  for (size_t i = 0; i < arraysize(kSegmentIds); i++) {
-
963  if (kSegmentIds[i].id_ == id_b)
-
964  return true;
-
965  }
-
966  }
-
967 
-
968  // kWebMIdSegment siblings.
-
969  return ((id_b == kWebMIdSegment) || (id_b == kWebMIdEBMLHeader));
-
970 }
-
971 
-
972 } // namespace media
-
973 } // namespace shaka
+
895  int current_level =
+
896  root_level_ + static_cast<int>(list_state_stack_.size()) - 1;
+
897  if (current_level + 1 != element_info->level_)
+
898  return false;
+
899 
+
900  WebMParserClient* current_list_client = NULL;
+
901  if (!list_state_stack_.empty()) {
+
902  // Make sure the new list doesn't go past the end of the current list.
+
903  ListState current_list_state = list_state_stack_.back();
+
904  if (current_list_state.size_ != kWebMUnknownSize &&
+
905  current_list_state.size_ < current_list_state.bytes_parsed_ + size)
+
906  return false;
+
907  current_list_client = current_list_state.client_;
+
908  } else {
+
909  current_list_client = root_client_;
+
910  }
+
911 
+
912  WebMParserClient* new_list_client = current_list_client->OnListStart(id);
+
913  if (!new_list_client)
+
914  return false;
+
915 
+
916  ListState new_list_state = { id, size, 0, element_info, new_list_client };
+
917  list_state_stack_.push_back(new_list_state);
+
918 
+
919  if (size == 0)
+
920  return OnListEnd();
+
921 
+
922  return true;
+
923 }
+
924 
+
925 bool WebMListParser::OnListEnd() {
+
926  int lists_ended = 0;
+
927  for (; !list_state_stack_.empty(); ++lists_ended) {
+
928  const ListState& list_state = list_state_stack_.back();
+
929  int64_t bytes_parsed = list_state.bytes_parsed_;
+
930  int id = list_state.id_;
+
931 
+
932  if (bytes_parsed != list_state.size_)
+
933  break;
+
934 
+
935  list_state_stack_.pop_back();
+
936 
+
937  WebMParserClient* client = NULL;
+
938  if (!list_state_stack_.empty()) {
+
939  // Update the bytes_parsed_ for the parent element.
+
940  list_state_stack_.back().bytes_parsed_ += bytes_parsed;
+
941  client = list_state_stack_.back().client_;
+
942  } else {
+
943  client = root_client_;
+
944  }
+
945 
+
946  if (!client->OnListEnd(id))
+
947  return false;
+
948  }
+
949 
+
950  DCHECK_GE(lists_ended, 1);
+
951 
+
952  if (list_state_stack_.empty())
+
953  ChangeState(DONE_PARSING_LIST);
+
954 
+
955  return true;
+
956 }
+
957 
+
958 bool WebMListParser::IsSiblingOrAncestor(int id_a, int id_b) const {
+
959  DCHECK((id_a == kWebMIdSegment) || (id_a == kWebMIdCluster));
+
960 
+
961  if (id_a == kWebMIdCluster) {
+
962  // kWebMIdCluster siblings.
+
963  for (size_t i = 0; i < arraysize(kSegmentIds); i++) {
+
964  if (kSegmentIds[i].id_ == id_b)
+
965  return true;
+
966  }
+
967  }
+
968 
+
969  // kWebMIdSegment siblings.
+
970  return ((id_b == kWebMIdSegment) || (id_b == kWebMIdEBMLHeader));
+
971 }
+
972 
+
973 } // namespace media
+
974 } // namespace shaka
WebMListParser(int id, WebMParserClient *client)
Definition: webm_parser.cc:703
void Reset()
Resets the state of the parser so it can start parsing a new list.
Definition: webm_parser.cc:714
int Parse(const uint8_t *buf, int size)
Definition: webm_parser.cc:719
@@ -1068,7 +1069,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 5fb917abe4..58350ee6c3 100644 --- a/docs/d3/dbc/seek__head_8cc_source.html +++ b/docs/d3/dbc/seek__head_8cc_source.html @@ -206,7 +206,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/dbe/demuxer_8cc_source.html b/docs/d3/dbe/demuxer_8cc_source.html index a84508ffcc..24eb57c08b 100644 --- a/docs/d3/dbe/demuxer_8cc_source.html +++ b/docs/d3/dbe/demuxer_8cc_source.html @@ -334,7 +334,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/dbe/structshaka_1_1media_1_1mp4_1_1EditList.html b/docs/d3/dbe/structshaka_1_1media_1_1mp4_1_1EditList.html index c1971ff5c3..2d0efde240 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 1181 of file box_definitions.cc.

+

Definition at line 1186 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 c9da4b2ed2..eab6eb6664 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 e8371d9477..e83bc80a43 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 d187ef7627..54b0c491fa 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 b6324fccc7..9226b226c4 100644 --- a/docs/d3/de4/seek__head_8h_source.html +++ b/docs/d3/de4/seek__head_8h_source.html @@ -153,7 +153,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/de9/classshaka_1_1media_1_1mp4_1_1BoxBuffer-members.html b/docs/d3/de9/classshaka_1_1media_1_1mp4_1_1BoxBuffer-members.html index 4d6b78de59..aed1e33370 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 53adf2191b..cbae1e03c9 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 1795932cba..2e348c1041 100644 --- a/docs/d3/df1/box__reader_8cc_source.html +++ b/docs/d3/df1/box__reader_8cc_source.html @@ -259,7 +259,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/dfe/classshaka_1_1media_1_1AesPatternCryptor.html b/docs/d3/dfe/classshaka_1_1media_1_1AesPatternCryptor.html index 73b4b1c1f8..e735c87d96 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 64a0f2a7f3..3cc51bee1f 100644 --- a/docs/d4/d00/mp4_2multi__segment__segmenter_8cc_source.html +++ b/docs/d4/d00/mp4_2multi__segment__segmenter_8cc_source.html @@ -174,18 +174,18 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
85  // sidx() contains pre-generated segment references with one reference per
86  // fragment. Calculate |num_fragments_per_subsegment| and combine
87  // pre-generated references into final subsegment references.
-
88  uint32_t num_fragments = sidx()->references.size();
-
89  uint32_t num_fragments_per_subsegment =
+
88  size_t num_fragments = sidx()->references.size();
+
89  size_t num_fragments_per_subsegment =
90  (num_fragments - 1) / options().num_subsegments_per_sidx + 1;
91  if (num_fragments_per_subsegment <= 1)
92  return WriteSegment();
93 
-
94  uint32_t frag_index = 0;
-
95  uint32_t subseg_index = 0;
+
94  size_t frag_index = 0;
+
95  size_t subseg_index = 0;
96  std::vector<SegmentReference>& refs = sidx()->references;
97  uint64_t first_sap_time =
98  refs[0].sap_delta_time + refs[0].earliest_presentation_time;
-
99  for (uint32_t i = 1; i < num_fragments; ++i) {
+
99  for (size_t i = 1; i < num_fragments; ++i) {
100  refs[subseg_index].referenced_size += refs[i].referenced_size;
101  refs[subseg_index].subsegment_duration += refs[i].subsegment_duration;
102  refs[subseg_index].earliest_presentation_time =
@@ -306,7 +306,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d08/classshaka_1_1media_1_1mp4_1_1MP4MediaParser-members.html b/docs/d4/d08/classshaka_1_1media_1_1mp4_1_1MP4MediaParser-members.html index 306af280ed..c422624d6f 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 3539c279a7..8e7556dceb 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 bb8c72a92f..3ce52686e9 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 c298b88216..33b7c9eea7 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 6ab71e4bf6..b01fda6d98 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 8324d1e31b..d9ced557a7 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 651a8832fe..698d9ecd7e 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 e78e662d29..2447ed13fe 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 1849 of file box_definitions.cc.

+

Definition at line 1855 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 a548ebf400..2870d8fed0 100644 --- a/docs/d4/d37/io__cache_8cc_source.html +++ b/docs/d4/d37/io__cache_8cc_source.html @@ -246,7 +246,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d3a/structshaka_1_1media_1_1H264Sps-members.html b/docs/d4/d3a/structshaka_1_1media_1_1H264Sps-members.html index adff157f5a..ec01ff5f51 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 9cd26d3487..776f70a24f 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 d0603e7c2c..4ad6d79bbd 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 fbbd349980..2e4380131f 100644 --- a/docs/d4/d58/classshaka_1_1media_1_1Nalu-members.html +++ b/docs/d4/d58/classshaka_1_1media_1_1Nalu-members.html @@ -158,7 +158,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d59/classshaka_1_1media_1_1WebMWebVTTParser.html b/docs/d4/d59/classshaka_1_1media_1_1WebMWebVTTParser.html index 88274441af..feadf29b43 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 60e14dd76b..d81a68e8f7 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 855f67f449..5f3d808f1f 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 2dba5b859b..b45e823bb3 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 0410b3a5ba..fe02c93177 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 becc7eaaa4..36dcc384a8 100644 --- a/docs/d4/d87/nalu__reader_8h_source.html +++ b/docs/d4/d87/nalu__reader_8h_source.html @@ -299,7 +299,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d8a/classshaka_1_1media_1_1HEVCDecoderConfigurationRecord.html b/docs/d4/d8a/classshaka_1_1media_1_1HEVCDecoderConfigurationRecord.html index 94d4a09edc..ebba7f86d4 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 de264834d7..589fc6cd2e 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 1692 of file box_definitions.cc.

+

Definition at line 1698 of file box_definitions.cc.

@@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d4/d8e/classshaka_1_1media_1_1UdpOptions.html b/docs/d4/d8e/classshaka_1_1media_1_1UdpOptions.html index 41e889afa2..bccb3bb83e 100644 --- a/docs/d4/d8e/classshaka_1_1media_1_1UdpOptions.html +++ b/docs/d4/d8e/classshaka_1_1media_1_1UdpOptions.html @@ -170,7 +170,7 @@ Static Public Member Functions diff --git a/docs/d4/da7/segmenter__test__base_8cc_source.html b/docs/d4/da7/segmenter__test__base_8cc_source.html index 61654c9168..03bf08dd4c 100644 --- a/docs/d4/da7/segmenter__test__base_8cc_source.html +++ b/docs/d4/da7/segmenter__test__base_8cc_source.html @@ -210,85 +210,87 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
121  WebMListParser cluster_parser(kWebMIdCluster, this);
122  size_t position = 0;
123  while (position < size) {
-
124  int read = cluster_parser.Parse(data + position, size - position);
-
125  ASSERT_LT(0, read);
-
126 
-
127  cluster_parser.Reset();
-
128  position += read;
-
129  }
-
130 }
-
131 
-
132 void SegmentTestBase::ClusterParser::PopulateFromSegment(
-
133  const std::string& file_name) {
-
134  cluster_sizes_.clear();
-
135  std::string file_contents;
-
136  ASSERT_TRUE(File::ReadFileToString(file_name.c_str(), &file_contents));
-
137 
-
138  const uint8_t* data = reinterpret_cast<const uint8_t*>(file_contents.c_str());
-
139  const size_t size = file_contents.size();
-
140  WebMListParser header_parser(kWebMIdEBMLHeader, this);
-
141  int offset = header_parser.Parse(data, size);
-
142  ASSERT_LT(0, offset);
-
143 
-
144  WebMListParser segment_parser(kWebMIdSegment, this);
-
145  ASSERT_LT(0, segment_parser.Parse(data + offset, size - offset));
-
146 }
-
147 
-
148 int SegmentTestBase::ClusterParser::GetFrameCountForCluster(size_t i) const {
-
149  DCHECK(i < cluster_sizes_.size());
-
150  return cluster_sizes_[i];
-
151 }
-
152 
-
153 int SegmentTestBase::ClusterParser::cluster_count() const {
-
154  return cluster_sizes_.size();
-
155 }
-
156 
-
157 WebMParserClient* SegmentTestBase::ClusterParser::OnListStart(int id) {
-
158  if (id == kWebMIdCluster) {
-
159  if (in_cluster_)
-
160  return NULL;
-
161 
-
162  cluster_sizes_.push_back(0);
-
163  in_cluster_ = true;
-
164  }
-
165 
-
166  return this;
-
167 }
-
168 
-
169 bool SegmentTestBase::ClusterParser::OnListEnd(int id) {
-
170  if (id == kWebMIdCluster) {
-
171  if (!in_cluster_)
-
172  return false;
-
173  in_cluster_ = false;
-
174  }
-
175 
-
176  return true;
-
177 }
-
178 
-
179 bool SegmentTestBase::ClusterParser::OnUInt(int id, int64_t val) {
-
180  return true;
-
181 }
-
182 
-
183 bool SegmentTestBase::ClusterParser::OnFloat(int id, double val) {
-
184  return true;
-
185 }
-
186 
-
187 bool SegmentTestBase::ClusterParser::OnBinary(int id,
-
188  const uint8_t* data,
-
189  int size) {
-
190  if (in_cluster_ && (id == kWebMIdSimpleBlock || id == kWebMIdBlock)) {
-
191  cluster_sizes_.back()++;
-
192  }
-
193 
-
194  return true;
-
195 }
-
196 
-
197 bool SegmentTestBase::ClusterParser::OnString(int id, const std::string& str) {
-
198  return true;
-
199 }
-
200 
-
201 } // namespace media
-
202 } // namespace shaka
+
124  int read = cluster_parser.Parse(data + position,
+
125  static_cast<int>(size - position));
+
126  ASSERT_LT(0, read);
+
127 
+
128  cluster_parser.Reset();
+
129  position += read;
+
130  }
+
131 }
+
132 
+
133 void SegmentTestBase::ClusterParser::PopulateFromSegment(
+
134  const std::string& file_name) {
+
135  cluster_sizes_.clear();
+
136  std::string file_contents;
+
137  ASSERT_TRUE(File::ReadFileToString(file_name.c_str(), &file_contents));
+
138 
+
139  const uint8_t* data = reinterpret_cast<const uint8_t*>(file_contents.c_str());
+
140  const size_t size = file_contents.size();
+
141  WebMListParser header_parser(kWebMIdEBMLHeader, this);
+
142  int offset = header_parser.Parse(data, static_cast<int>(size));
+
143  ASSERT_LT(0, offset);
+
144 
+
145  WebMListParser segment_parser(kWebMIdSegment, this);
+
146  ASSERT_LT(
+
147  0, segment_parser.Parse(data + offset, static_cast<int>(size) - offset));
+
148 }
+
149 
+
150 int SegmentTestBase::ClusterParser::GetFrameCountForCluster(size_t i) const {
+
151  DCHECK(i < cluster_sizes_.size());
+
152  return cluster_sizes_[i];
+
153 }
+
154 
+
155 size_t SegmentTestBase::ClusterParser::cluster_count() const {
+
156  return cluster_sizes_.size();
+
157 }
+
158 
+
159 WebMParserClient* SegmentTestBase::ClusterParser::OnListStart(int id) {
+
160  if (id == kWebMIdCluster) {
+
161  if (in_cluster_)
+
162  return NULL;
+
163 
+
164  cluster_sizes_.push_back(0);
+
165  in_cluster_ = true;
+
166  }
+
167 
+
168  return this;
+
169 }
+
170 
+
171 bool SegmentTestBase::ClusterParser::OnListEnd(int id) {
+
172  if (id == kWebMIdCluster) {
+
173  if (!in_cluster_)
+
174  return false;
+
175  in_cluster_ = false;
+
176  }
+
177 
+
178  return true;
+
179 }
+
180 
+
181 bool SegmentTestBase::ClusterParser::OnUInt(int id, int64_t val) {
+
182  return true;
+
183 }
+
184 
+
185 bool SegmentTestBase::ClusterParser::OnFloat(int id, double val) {
+
186  return true;
+
187 }
+
188 
+
189 bool SegmentTestBase::ClusterParser::OnBinary(int id,
+
190  const uint8_t* data,
+
191  int size) {
+
192  if (in_cluster_ && (id == kWebMIdSimpleBlock || id == kWebMIdBlock)) {
+
193  cluster_sizes_.back()++;
+
194  }
+
195 
+
196  return true;
+
197 }
+
198 
+
199 bool SegmentTestBase::ClusterParser::OnString(int id, const std::string& str) {
+
200  return true;
+
201 }
+
202 
+
203 } // namespace media
+
204 } // namespace shaka
VideoStreamInfo * CreateVideoStreamInfo() const
Creates a video stream info object for testing.
@@ -310,7 +312,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 cdb58c973b..63a15f3f2d 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 @@ -186,7 +186,7 @@ Additional Inherited Members

Implements shaka::media::mp4::Box.

-

Definition at line 308 of file box_definitions.cc.

+

Definition at line 309 of file box_definitions.cc.

@@ -223,7 +223,7 @@ Additional Inherited Members
Returns
true on success, false otherwise.
-

Definition at line 359 of file box_definitions.cc.

+

Definition at line 362 of file box_definitions.cc.

@@ -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 2509272eb2..a283dbeca6 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 92ceef8ed0..55ef303127 100644 --- a/docs/d4/db2/cluster__builder_8h_source.html +++ b/docs/d4/db2/cluster__builder_8h_source.html @@ -181,7 +181,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/db4/classshaka_1_1MpdNotifierFactory.html b/docs/d4/db4/classshaka_1_1MpdNotifierFactory.html index 2afe4f4b2c..2c76c439dc 100644 --- a/docs/d4/db4/classshaka_1_1MpdNotifierFactory.html +++ b/docs/d4/db4/classshaka_1_1MpdNotifierFactory.html @@ -113,7 +113,7 @@ virtual std::unique_ptr
diff --git a/docs/d4/db9/structshaka_1_1media_1_1mp4_1_1MediaHeader.html b/docs/d4/db9/structshaka_1_1media_1_1mp4_1_1MediaHeader.html index 730c24855b..142b551bf1 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 1905 of file box_definitions.cc.

+

Definition at line 1911 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 103f6a0993..c381b9c127 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 3d1f343df4..bcb8e95c06 100644 --- a/docs/d4/dd3/bit__reader_8h_source.html +++ b/docs/d4/dd3/bit__reader_8h_source.html @@ -104,12 +104,12 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
15 
17 class BitReader {
18  public:
-
22  BitReader(const uint8_t* data, off_t size);
+
22  BitReader(const uint8_t* data, size_t size);
23  ~BitReader();
24 
34  template <typename T>
-
35  bool ReadBits(int num_bits, T* out) {
-
36  DCHECK_LE(num_bits, static_cast<int>(sizeof(T) * 8));
+
35  bool ReadBits(size_t num_bits, T* out) {
+
36  DCHECK_LE(num_bits, sizeof(T) * 8);
37  uint64_t temp;
38  bool ret = ReadBitsInternal(num_bits, &temp);
39  *out = static_cast<T>(temp);
@@ -117,34 +117,34 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
41  }
42 
43  // Explicit T=bool overload to make MSVC happy.
-
44  bool ReadBits(int num_bits, bool* out) {
-
45  DCHECK_EQ(num_bits, 1);
+
44  bool ReadBits(size_t num_bits, bool* out) {
+
45  DCHECK_EQ(num_bits, 1u);
46  uint64_t temp;
47  bool ret = ReadBitsInternal(num_bits, &temp);
48  *out = temp != 0;
49  return ret;
50  }
51 
-
58  bool SkipBits(int num_bits);
+
58  bool SkipBits(size_t num_bits);
59 
-
69  bool SkipBitsConditional(bool condition, int num_bits) {
+
69  bool SkipBitsConditional(bool condition, size_t num_bits) {
70  bool condition_read = true;
-
71  if (!ReadBits(1, &condition_read))
+
71  if (!ReadBits(1, &condition_read))
72  return false;
-
73  return condition_read == condition ? SkipBits(num_bits) : true;
+
73  return condition_read == condition ? SkipBits(num_bits) : true;
74  }
75 
-
82  bool SkipBytes(int num_bytes);
+
82  bool SkipBytes(size_t num_bytes);
83 
-
85  int bits_available() const {
+
85  size_t bits_available() const {
86  return 8 * bytes_left_ + num_remaining_bits_in_curr_byte_;
87  }
88 
-
90  int bit_position() const { return 8 * initial_size_ - bits_available(); }
+
90  size_t bit_position() const { return 8 * initial_size_ - bits_available(); }
91 
92  private:
93  // Help function used by ReadBits to avoid inlining the bit reading logic.
-
94  bool ReadBitsInternal(int num_bits, uint64_t* out);
+
94  bool ReadBitsInternal(size_t num_bits, uint64_t* out);
95 
96  // Advance to the next byte, loading it into curr_byte_.
97  // If the num_remaining_bits_in_curr_byte_ is 0 after this function returns,
@@ -155,39 +155,38 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
102  const uint8_t* data_;
103 
104  // Initial size of the input data.
-
105  // TODO(kqyang): Use size_t instead of off_t instead.
-
106  off_t initial_size_;
-
107 
-
108  // Bytes left in the stream (without the curr_byte_).
-
109  off_t bytes_left_;
-
110 
-
111  // Contents of the current byte; first unread bit starting at position
-
112  // 8 - num_remaining_bits_in_curr_byte_ from MSB.
-
113  uint8_t curr_byte_;
-
114 
-
115  // Number of bits remaining in curr_byte_
-
116  int num_remaining_bits_in_curr_byte_;
-
117 
-
118  private:
-
119  DISALLOW_COPY_AND_ASSIGN(BitReader);
-
120 };
-
121 
-
122 } // namespace media
-
123 } // namespace shaka
-
124 
-
125 #endif // MEDIA_BASE_BIT_READER_H_
+
105  size_t initial_size_;
+
106 
+
107  // Bytes left in the stream (without the curr_byte_).
+
108  size_t bytes_left_;
+
109 
+
110  // Contents of the current byte; first unread bit starting at position
+
111  // 8 - num_remaining_bits_in_curr_byte_ from MSB.
+
112  uint8_t curr_byte_;
+
113 
+
114  // Number of bits remaining in curr_byte_
+
115  size_t num_remaining_bits_in_curr_byte_;
+
116 
+
117  private:
+
118  DISALLOW_COPY_AND_ASSIGN(BitReader);
+
119 };
+
120 
+
121 } // namespace media
+
122 } // namespace shaka
+
123 
+
124 #endif // MEDIA_BASE_BIT_READER_H_
+
bool ReadBits(size_t num_bits, T *out)
Definition: bit_reader.h:35
A class to read bit streams.
Definition: bit_reader.h:17
-
BitReader(const uint8_t *data, off_t size)
Definition: bit_reader.cc:12
-
bool ReadBits(int num_bits, T *out)
Definition: bit_reader.h:35
-
bool SkipBytes(int num_bytes)
Definition: bit_reader.cc:56
-
int bits_available() const
Definition: bit_reader.h:85
-
bool SkipBitsConditional(bool condition, int num_bits)
Definition: bit_reader.h:69
-
bool SkipBits(int num_bits)
Definition: bit_reader.cc:24
-
int bit_position() const
Definition: bit_reader.h:90
+
bool SkipBitsConditional(bool condition, size_t num_bits)
Definition: bit_reader.h:69
+
bool SkipBits(size_t num_bits)
Definition: bit_reader.cc:24
+
BitReader(const uint8_t *data, size_t size)
Definition: bit_reader.cc:12
+
bool SkipBytes(size_t num_bytes)
Definition: bit_reader.cc:54
+
size_t bits_available() const
Definition: bit_reader.h:85
+
size_t bit_position() const
Definition: bit_reader.h:90
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 250404451b..8369242ddc 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 7709577f20..f935041dbc 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 27d135e33a..4333c1eb4b 100644 --- a/docs/d4/dde/webvtt__util_8h_source.html +++ b/docs/d4/dde/webvtt__util_8h_source.html @@ -124,7 +124,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/de3/structshaka_1_1media_1_1mp4_1_1DataReference.html b/docs/d4/de3/structshaka_1_1media_1_1mp4_1_1DataReference.html index febdc1b6b2..837e628b4f 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 2000 of file box_definitions.cc.

+

Definition at line 2006 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 1c4be0d79f..e7406bf8ab 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 81fce3e01b..5d71ce0ab7 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 ac4c48aa89..c5f0e27228 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 51453f8340..2cd3b7d2b6 100644 --- a/docs/d4/df5/request__signer_8cc_source.html +++ b/docs/d4/df5/request__signer_8cc_source.html @@ -179,7 +179,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/df9/structshaka_1_1media_1_1mp4_1_1SegmentIndex.html b/docs/d4/df9/structshaka_1_1media_1_1mp4_1_1SegmentIndex.html index 82961431a9..f8cfea5dbe 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 2533 of file box_definitions.cc.

+

Definition at line 2539 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 8a29709622..a6a65dac14 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 1673 of file box_definitions.cc.

+

Definition at line 1679 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 dbb4a17471..af0a63dcb0 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 dec1f96c0d..76790680ee 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 f12960c87f..2df269bd69 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 5e00bdcf81..bc58169bc7 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 @@ -162,7 +162,7 @@ Additional Inherited Members

Implements shaka::media::mp4::Box.

-

Definition at line 379 of file box_definitions.cc.

+

Definition at line 382 of file box_definitions.cc.

@@ -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 e8893859d2..f42aa5324f 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 2635 of file box_definitions.cc.

+

Definition at line 2641 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 e8278ce203..f043d78eae 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 abcc0f8e7c..23b6bb1b7d 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 1608 of file box_definitions.cc.

+

Definition at line 1614 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 da0742b0c5..22bd34e5f3 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 6951f46989..82711388fb 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 caffb75fb3..9261c2ab85 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 702e0bef77..b5d3471da5 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 fd2a48bd47..31707f61e0 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 861f49439e..b36afed4c5 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 a245de1836..4afd504236 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 2741f7bafe..cf9bac8d7e 100644 --- a/docs/d5/d40/webm_2single__segment__segmenter_8h_source.html +++ b/docs/d5/d40/webm_2single__segment__segmenter_8h_source.html @@ -159,7 +159,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d4b/classshaka_1_1media_1_1mp2t_1_1TsSectionPsi-members.html b/docs/d5/d4b/classshaka_1_1media_1_1mp2t_1_1TsSectionPsi-members.html index 57f72c6c84..1db7e806de 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 d7b80f5b03..8fcd95bab2 100644 --- a/docs/d5/d4d/box_8cc_source.html +++ b/docs/d5/d4d/box_8cc_source.html @@ -137,7 +137,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
48 }
49 
50 uint32_t Box::ComputeSize() {
-
51  box_size_ = ComputeSizeInternal();
+
51  box_size_ = static_cast<uint32_t>(ComputeSizeInternal());
52  return box_size_;
53 }
54 
@@ -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 bef14d9961..b11f64d47b 100644 --- a/docs/d5/d52/ts__section__pes_8h_source.html +++ b/docs/d5/d52/ts__section__pes_8h_source.html @@ -160,7 +160,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d53/structshaka_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize-members.html b/docs/d5/d53/structshaka_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize-members.html index 2c47b20268..ed646e3156 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 dce2f08079..029e675fcc 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 5305dd6028..5684ce8c46 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 f9e054eecf..9224ece17c 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 d19f9025c2..675fbecab4 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 8e45a6d6ed..66317d01ff 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 e0efa7d661..c7ea6ce2dd 100644 --- a/docs/d5/d66/classshaka_1_1media_1_1NalUnitToByteStreamConverter.html +++ b/docs/d5/d66/classshaka_1_1media_1_1NalUnitToByteStreamConverter.html @@ -296,7 +296,7 @@ class NalUnitToByteStreamC diff --git a/docs/d5/d6f/vlog__flags_8cc_source.html b/docs/d5/d6f/vlog__flags_8cc_source.html index ba81eb048f..cb64d92a4c 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 80474467f5..5499561f1e 100644 --- a/docs/d5/d72/avc__decoder__configuration__record_8cc_source.html +++ b/docs/d5/d72/avc__decoder__configuration__record_8cc_source.html @@ -202,7 +202,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d7b/box__definitions_8h_source.html b/docs/d5/d7b/box__definitions_8h_source.html index 8c3a6b9c5d..52b9592457 100644 --- a/docs/d5/d7b/box__definitions_8h_source.html +++ b/docs/d5/d7b/box__definitions_8h_source.html @@ -127,7 +127,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
38  \
39  private: \
40  bool ReadWriteInternal(BoxBuffer* buffer) override; \
-
41  uint32_t ComputeSizeInternal() override; \
+
41  size_t ComputeSizeInternal() override; \
42  \
43  public:
44 
@@ -939,7 +939,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); - +
bool ReadWrite(uint8_t iv_size, bool has_subsamples, BoxBuffer *buffer)
@@ -952,7 +952,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
std::vector< uint8_t > sample_encryption_data
-
bool ParseFromSampleEncryptionData(uint8_t iv_size, std::vector< SampleEncryptionEntry > *sample_encryption_entries) const
+
bool ParseFromSampleEncryptionData(uint8_t iv_size, std::vector< SampleEncryptionEntry > *sample_encryption_entries) const
@@ -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 019eb8358e..23f6c5aec8 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 2036 of file box_definitions.cc.

+

Definition at line 2042 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 9066c9b007..2be2732326 100644 --- a/docs/d5/d89/widevine__key__source_8cc_source.html +++ b/docs/d5/d89/widevine__key__source_8cc_source.html @@ -722,7 +722,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d8c/structshaka_1_1media_1_1mp4_1_1CompositionOffset.html b/docs/d5/d8c/structshaka_1_1media_1_1mp4_1_1CompositionOffset.html index 9b75223293..414eff522c 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 05a1353a55..bf56308d73 100644 --- a/docs/d5/d8f/webm__cluster__parser_8cc_source.html +++ b/docs/d5/d8f/webm__cluster__parser_8cc_source.html @@ -722,7 +722,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d91/es__parser__adts_8cc_source.html b/docs/d5/d91/es__parser__adts_8cc_source.html index 1921d328be..7a89e9c656 100644 --- a/docs/d5/d91/es__parser__adts_8cc_source.html +++ b/docs/d5/d91/es__parser__adts_8cc_source.html @@ -152,8 +152,8 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
63  // The layer field (2 bits) must be set to 0.
64  continue;
65 
-
66  int frame_size =
-
67  mp2t::AdtsHeader::GetAdtsFrameSize(cur_buf, kAdtsHeaderMinSize);
+
66  int frame_size = static_cast<int>(
+
67  mp2t::AdtsHeader::GetAdtsFrameSize(cur_buf, kAdtsHeaderMinSize));
68  if (frame_size < kAdtsHeaderMinSize) {
69  // Too short to be an ADTS frame.
70  continue;
@@ -206,7 +206,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
117  }
118 
119  // Copy the input data to the ES buffer.
-
120  es_byte_queue_.Push(buf, size);
+
120  es_byte_queue_.Push(buf, static_cast<int>(size));
121  es_byte_queue_.Peek(&raw_es, &raw_es_size);
122 
123  // Look for every ADTS frame in the ES buffer starting at offset = 0
@@ -367,7 +367,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d95/structshaka_1_1media_1_1mp4_1_1EditListEntry-members.html b/docs/d5/d95/structshaka_1_1media_1_1mp4_1_1EditListEntry-members.html index e2d79d2ec1..dd219eb7ab 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 81b1cd8cdb..f0a455a6c2 100644 --- a/docs/d5/d98/encryptor_8cc_source.html +++ b/docs/d5/d98/encryptor_8cc_source.html @@ -207,98 +207,99 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
118  uint32_t partition_offset = 0;
119  BufferWriter offsets_buffer(kWebMPartitionOffsetSize * num_partitions);
120  for (const auto& vpx_frame : vpx_frames) {
-
121  uint32_t encrypted_size =
-
122  vpx_frame.frame_size - vpx_frame.uncompressed_header_size;
+
121  uint32_t encrypted_size = static_cast<uint32_t>(
+
122  vpx_frame.frame_size - vpx_frame.uncompressed_header_size);
123  encrypted_size -= encrypted_size % kAesBlockSize;
-
124  uint32_t clear_size = vpx_frame.frame_size - encrypted_size;
-
125  partition_offset += clear_size;
-
126  offsets_buffer.AppendInt(partition_offset);
-
127  if (encrypted_size > 0) {
-
128  uint8_t* encrypted_ptr = sample_data + header_size + partition_offset;
-
129  if (!encryptor_->Crypt(encrypted_ptr, encrypted_size, encrypted_ptr)) {
-
130  return Status(error::MUXER_FAILURE, "Failed to encrypt the frame.");
-
131  }
-
132  partition_offset += encrypted_size;
-
133  }
-
134  if (num_partitions > 1) {
-
135  offsets_buffer.AppendInt(partition_offset);
-
136  }
-
137  }
-
138  DCHECK_EQ(num_partitions * kWebMPartitionOffsetSize,
-
139  offsets_buffer.Size());
-
140  memcpy(sample_data + kWebMSignalByteSize + kWebMIvSize +
-
141  kWebMNumPartitionsSize,
-
142  offsets_buffer.Buffer(), offsets_buffer.Size());
-
143  } else {
-
144  // Use whole-frame encryption: | signal_byte(1) | iv | enc_data |
-
145 
-
146  sample->resize_data(sample_size + iv_size + kWebMSignalByteSize);
-
147  uint8_t* sample_data = sample->writable_data();
-
148 
-
149  // Encrypt the data in-place.
-
150  if (!encryptor_->Crypt(sample_data, sample_size, sample_data)) {
-
151  return Status(error::MUXER_FAILURE, "Failed to encrypt the frame.");
-
152  }
-
153 
-
154  // First move the sample data to after the IV; then write the IV and
-
155  // signal byte.
-
156  memmove(sample_data + iv_size + kWebMSignalByteSize, sample_data,
-
157  sample_size);
-
158  sample_data[0] = kWebMEncryptedSignal;
-
159  memcpy(sample_data + 1, encryptor_->iv().data(), iv_size);
-
160  }
-
161  encryptor_->UpdateIv();
-
162  } else {
-
163  // Clear sample: | signal_byte(0) | data |
-
164  sample->resize_data(sample_size + 1);
-
165  uint8_t* sample_data = sample->writable_data();
-
166  memmove(sample_data + 1, sample_data, sample_size);
-
167  sample_data[0] = 0x00;
-
168  }
-
169 
-
170  return Status::OK;
-
171 }
-
172 
-
173 Status Encryptor::CreateEncryptor(MuxerListener* muxer_listener,
-
174  KeySource::TrackType track_type,
-
175  Codec codec,
-
176  KeySource* key_source,
-
177  bool webm_subsample_encryption) {
-
178  std::unique_ptr<EncryptionKey> encryption_key(new EncryptionKey());
-
179  Status status = key_source->GetKey(track_type, encryption_key.get());
-
180  if (!status.ok())
-
181  return status;
-
182  if (encryption_key->iv.empty()) {
-
183  if (!AesCryptor::GenerateRandomIv(FOURCC_cenc, &encryption_key->iv))
-
184  return Status(error::INTERNAL_ERROR, "Failed to generate random iv.");
-
185  }
-
186  DCHECK_EQ(kWebMIvSize, encryption_key->iv.size());
-
187  std::unique_ptr<AesCtrEncryptor> encryptor(new AesCtrEncryptor());
-
188  const bool initialized =
-
189  encryptor->InitializeWithIv(encryption_key->key, encryption_key->iv);
-
190  if (!initialized)
-
191  return Status(error::INTERNAL_ERROR, "Failed to create the encryptor.");
-
192 
-
193  if (webm_subsample_encryption && codec == kCodecVP9) {
-
194  // Allocate VP9 parser to do subsample encryption of VP9.
-
195  vpx_parser_.reset(new VP9Parser);
-
196  }
-
197 
-
198  if (muxer_listener) {
-
199  const bool kInitialEncryptionInfo = true;
-
200  muxer_listener->OnEncryptionInfoReady(
-
201  kInitialEncryptionInfo, FOURCC_cenc, encryption_key->key_id,
-
202  encryptor->iv(), encryption_key->key_system_info);
-
203  }
-
204 
-
205  key_ = std::move(encryption_key);
-
206  encryptor_ = std::move(encryptor);
-
207  return Status::OK;
-
208 }
-
209 
-
210 } // namespace webm
-
211 } // namespace media
-
212 } // namespace shaka
+
124  uint32_t clear_size =
+
125  static_cast<uint32_t>(vpx_frame.frame_size - encrypted_size);
+
126  partition_offset += clear_size;
+
127  offsets_buffer.AppendInt(partition_offset);
+
128  if (encrypted_size > 0) {
+
129  uint8_t* encrypted_ptr = sample_data + header_size + partition_offset;
+
130  if (!encryptor_->Crypt(encrypted_ptr, encrypted_size, encrypted_ptr)) {
+
131  return Status(error::MUXER_FAILURE, "Failed to encrypt the frame.");
+
132  }
+
133  partition_offset += encrypted_size;
+
134  }
+
135  if (num_partitions > 1) {
+
136  offsets_buffer.AppendInt(partition_offset);
+
137  }
+
138  }
+
139  DCHECK_EQ(num_partitions * kWebMPartitionOffsetSize,
+
140  offsets_buffer.Size());
+
141  memcpy(sample_data + kWebMSignalByteSize + kWebMIvSize +
+
142  kWebMNumPartitionsSize,
+
143  offsets_buffer.Buffer(), offsets_buffer.Size());
+
144  } else {
+
145  // Use whole-frame encryption: | signal_byte(1) | iv | enc_data |
+
146 
+
147  sample->resize_data(sample_size + iv_size + kWebMSignalByteSize);
+
148  uint8_t* sample_data = sample->writable_data();
+
149 
+
150  // Encrypt the data in-place.
+
151  if (!encryptor_->Crypt(sample_data, sample_size, sample_data)) {
+
152  return Status(error::MUXER_FAILURE, "Failed to encrypt the frame.");
+
153  }
+
154 
+
155  // First move the sample data to after the IV; then write the IV and
+
156  // signal byte.
+
157  memmove(sample_data + iv_size + kWebMSignalByteSize, sample_data,
+
158  sample_size);
+
159  sample_data[0] = kWebMEncryptedSignal;
+
160  memcpy(sample_data + 1, encryptor_->iv().data(), iv_size);
+
161  }
+
162  encryptor_->UpdateIv();
+
163  } else {
+
164  // Clear sample: | signal_byte(0) | data |
+
165  sample->resize_data(sample_size + 1);
+
166  uint8_t* sample_data = sample->writable_data();
+
167  memmove(sample_data + 1, sample_data, sample_size);
+
168  sample_data[0] = 0x00;
+
169  }
+
170 
+
171  return Status::OK;
+
172 }
+
173 
+
174 Status Encryptor::CreateEncryptor(MuxerListener* muxer_listener,
+
175  KeySource::TrackType track_type,
+
176  Codec codec,
+
177  KeySource* key_source,
+
178  bool webm_subsample_encryption) {
+
179  std::unique_ptr<EncryptionKey> encryption_key(new EncryptionKey());
+
180  Status status = key_source->GetKey(track_type, encryption_key.get());
+
181  if (!status.ok())
+
182  return status;
+
183  if (encryption_key->iv.empty()) {
+
184  if (!AesCryptor::GenerateRandomIv(FOURCC_cenc, &encryption_key->iv))
+
185  return Status(error::INTERNAL_ERROR, "Failed to generate random iv.");
+
186  }
+
187  DCHECK_EQ(kWebMIvSize, encryption_key->iv.size());
+
188  std::unique_ptr<AesCtrEncryptor> encryptor(new AesCtrEncryptor());
+
189  const bool initialized =
+
190  encryptor->InitializeWithIv(encryption_key->key, encryption_key->iv);
+
191  if (!initialized)
+
192  return Status(error::INTERNAL_ERROR, "Failed to create the encryptor.");
+
193 
+
194  if (webm_subsample_encryption && codec == kCodecVP9) {
+
195  // Allocate VP9 parser to do subsample encryption of VP9.
+
196  vpx_parser_.reset(new VP9Parser);
+
197  }
+
198 
+
199  if (muxer_listener) {
+
200  const bool kInitialEncryptionInfo = true;
+
201  muxer_listener->OnEncryptionInfoReady(
+
202  kInitialEncryptionInfo, FOURCC_cenc, encryption_key->key_id,
+
203  encryptor->iv(), encryption_key->key_system_info);
+
204  }
+
205 
+
206  key_ = std::move(encryption_key);
+
207  encryptor_ = std::move(encryptor);
+
208  return Status::OK;
+
209 }
+
210 
+
211 } // namespace webm
+
212 } // namespace media
+
213 } // namespace shaka
virtual void OnEncryptionInfoReady(bool is_initial_encryption_info, FourCC protection_scheme, const std::vector< uint8_t > &key_id, const std::vector< uint8_t > &iv, const std::vector< ProtectionSystemSpecificInfo > &key_system_info)=0
Status AddTrackInfo(mkvmuxer::Track *track)
Definition: encryptor.cc:71
@@ -317,7 +318,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 b3f6d8ac44..949d8585f4 100644 --- a/docs/d5/d9b/vp__codec__configuration__record_8h_source.html +++ b/docs/d5/d9b/vp__codec__configuration__record_8h_source.html @@ -224,7 +224,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d9d/structshaka_1_1media_1_1H265ReferencePictureListModifications.html b/docs/d5/d9d/structshaka_1_1media_1_1H265ReferencePictureListModifications.html index 875e27cec2..e2cb09db64 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 4bfceae52d..d1523eae0c 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 e034671de0..e6f1728162 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 8bd657cac1..b772786c59 100644 --- a/docs/d5/db1/classshaka_1_1media_1_1StreamInfo.html +++ b/docs/d5/db1/classshaka_1_1media_1_1StreamInfo.html @@ -235,7 +235,7 @@ class base::RefCountedThre diff --git a/docs/d5/db9/classshaka_1_1media_1_1mp2t_1_1EsParserH264.html b/docs/d5/db9/classshaka_1_1media_1_1mp2t_1_1EsParserH264.html index 4848d87016..b6a734917d 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 4badc0b270..b32f818f06 100644 --- a/docs/d5/dba/ts__packet_8cc_source.html +++ b/docs/d5/dba/ts__packet_8cc_source.html @@ -227,84 +227,87 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
138 bool TsPacket::ParseAdaptationField(BitReader* bit_reader,
139  int adaptation_field_length) {
140  DCHECK_GT(adaptation_field_length, 0);
-
141  int adaptation_field_start_marker = bit_reader->bits_available() / 8;
-
142 
-
143  int discontinuity_indicator;
-
144  int random_access_indicator;
-
145  int elementary_stream_priority_indicator;
-
146  int pcr_flag;
-
147  int opcr_flag;
-
148  int splicing_point_flag;
-
149  int transport_private_data_flag;
-
150  int adaptation_field_extension_flag;
-
151  RCHECK(bit_reader->ReadBits(1, &discontinuity_indicator));
-
152  RCHECK(bit_reader->ReadBits(1, &random_access_indicator));
-
153  RCHECK(bit_reader->ReadBits(1, &elementary_stream_priority_indicator));
-
154  RCHECK(bit_reader->ReadBits(1, &pcr_flag));
-
155  RCHECK(bit_reader->ReadBits(1, &opcr_flag));
-
156  RCHECK(bit_reader->ReadBits(1, &splicing_point_flag));
-
157  RCHECK(bit_reader->ReadBits(1, &transport_private_data_flag));
-
158  RCHECK(bit_reader->ReadBits(1, &adaptation_field_extension_flag));
-
159  discontinuity_indicator_ = (discontinuity_indicator != 0);
-
160  random_access_indicator_ = (random_access_indicator != 0);
-
161 
-
162  if (pcr_flag) {
-
163  int64_t program_clock_reference_base;
-
164  int reserved;
-
165  int program_clock_reference_extension;
-
166  RCHECK(bit_reader->ReadBits(33, &program_clock_reference_base));
-
167  RCHECK(bit_reader->ReadBits(6, &reserved));
-
168  RCHECK(bit_reader->ReadBits(9, &program_clock_reference_extension));
-
169  }
-
170 
-
171  if (opcr_flag) {
-
172  int64_t original_program_clock_reference_base;
-
173  int reserved;
-
174  int original_program_clock_reference_extension;
-
175  RCHECK(bit_reader->ReadBits(33, &original_program_clock_reference_base));
-
176  RCHECK(bit_reader->ReadBits(6, &reserved));
-
177  RCHECK(
-
178  bit_reader->ReadBits(9, &original_program_clock_reference_extension));
-
179  }
-
180 
-
181  if (splicing_point_flag) {
-
182  int splice_countdown;
-
183  RCHECK(bit_reader->ReadBits(8, &splice_countdown));
-
184  }
-
185 
-
186  if (transport_private_data_flag) {
-
187  int transport_private_data_length;
-
188  RCHECK(bit_reader->ReadBits(8, &transport_private_data_length));
-
189  RCHECK(bit_reader->SkipBits(8 * transport_private_data_length));
-
190  }
-
191 
-
192  if (adaptation_field_extension_flag) {
-
193  int adaptation_field_extension_length;
-
194  RCHECK(bit_reader->ReadBits(8, &adaptation_field_extension_length));
-
195  RCHECK(bit_reader->SkipBits(8 * adaptation_field_extension_length));
-
196  }
-
197 
-
198  // The rest of the adaptation field should be stuffing bytes.
-
199  int adaptation_field_remaining_size = adaptation_field_length -
-
200  (adaptation_field_start_marker - bit_reader->bits_available() / 8);
-
201  RCHECK(adaptation_field_remaining_size >= 0);
-
202  for (int k = 0; k < adaptation_field_remaining_size; k++) {
-
203  int stuffing_byte;
-
204  RCHECK(bit_reader->ReadBits(8, &stuffing_byte));
-
205  RCHECK(stuffing_byte == 0xff);
-
206  }
-
207 
-
208  DVLOG(LOG_LEVEL_TS) << "random_access_indicator=" << random_access_indicator_;
-
209  return true;
-
210 }
-
211 
-
212 } // namespace mp2t
-
213 } // namespace media
-
214 } // namespace shaka
+
141  int adaptation_field_start_marker =
+
142  static_cast<int>(bit_reader->bits_available()) / 8;
+
143 
+
144  int discontinuity_indicator;
+
145  int random_access_indicator;
+
146  int elementary_stream_priority_indicator;
+
147  int pcr_flag;
+
148  int opcr_flag;
+
149  int splicing_point_flag;
+
150  int transport_private_data_flag;
+
151  int adaptation_field_extension_flag;
+
152  RCHECK(bit_reader->ReadBits(1, &discontinuity_indicator));
+
153  RCHECK(bit_reader->ReadBits(1, &random_access_indicator));
+
154  RCHECK(bit_reader->ReadBits(1, &elementary_stream_priority_indicator));
+
155  RCHECK(bit_reader->ReadBits(1, &pcr_flag));
+
156  RCHECK(bit_reader->ReadBits(1, &opcr_flag));
+
157  RCHECK(bit_reader->ReadBits(1, &splicing_point_flag));
+
158  RCHECK(bit_reader->ReadBits(1, &transport_private_data_flag));
+
159  RCHECK(bit_reader->ReadBits(1, &adaptation_field_extension_flag));
+
160  discontinuity_indicator_ = (discontinuity_indicator != 0);
+
161  random_access_indicator_ = (random_access_indicator != 0);
+
162 
+
163  if (pcr_flag) {
+
164  int64_t program_clock_reference_base;
+
165  int reserved;
+
166  int program_clock_reference_extension;
+
167  RCHECK(bit_reader->ReadBits(33, &program_clock_reference_base));
+
168  RCHECK(bit_reader->ReadBits(6, &reserved));
+
169  RCHECK(bit_reader->ReadBits(9, &program_clock_reference_extension));
+
170  }
+
171 
+
172  if (opcr_flag) {
+
173  int64_t original_program_clock_reference_base;
+
174  int reserved;
+
175  int original_program_clock_reference_extension;
+
176  RCHECK(bit_reader->ReadBits(33, &original_program_clock_reference_base));
+
177  RCHECK(bit_reader->ReadBits(6, &reserved));
+
178  RCHECK(
+
179  bit_reader->ReadBits(9, &original_program_clock_reference_extension));
+
180  }
+
181 
+
182  if (splicing_point_flag) {
+
183  int splice_countdown;
+
184  RCHECK(bit_reader->ReadBits(8, &splice_countdown));
+
185  }
+
186 
+
187  if (transport_private_data_flag) {
+
188  int transport_private_data_length;
+
189  RCHECK(bit_reader->ReadBits(8, &transport_private_data_length));
+
190  RCHECK(bit_reader->SkipBits(8 * transport_private_data_length));
+
191  }
+
192 
+
193  if (adaptation_field_extension_flag) {
+
194  int adaptation_field_extension_length;
+
195  RCHECK(bit_reader->ReadBits(8, &adaptation_field_extension_length));
+
196  RCHECK(bit_reader->SkipBits(8 * adaptation_field_extension_length));
+
197  }
+
198 
+
199  // The rest of the adaptation field should be stuffing bytes.
+
200  int adaptation_field_remaining_size =
+
201  adaptation_field_length -
+
202  (adaptation_field_start_marker -
+
203  static_cast<int>(bit_reader->bits_available()) / 8);
+
204  RCHECK(adaptation_field_remaining_size >= 0);
+
205  for (int k = 0; k < adaptation_field_remaining_size; k++) {
+
206  int stuffing_byte;
+
207  RCHECK(bit_reader->ReadBits(8, &stuffing_byte));
+
208  RCHECK(stuffing_byte == 0xff);
+
209  }
+
210 
+
211  DVLOG(LOG_LEVEL_TS) << "random_access_indicator=" << random_access_indicator_;
+
212  return true;
+
213 }
+
214 
+
215 } // namespace mp2t
+
216 } // namespace media
+
217 } // namespace shaka
diff --git a/docs/d5/dc1/webm__webvtt__parser_8cc_source.html b/docs/d5/dc1/webm__webvtt__parser_8cc_source.html index a68501adea..f58e70655d 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 85fde595bc..518c38b047 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 74167b76d1..bf28079407 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 2806ab344c..f2e2b3981a 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 d0ae97b104..5fc76d46d9 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 76e24be6d2..f633025ffd 100644 --- a/docs/d5/de0/bit__reader_8cc_source.html +++ b/docs/d5/de0/bit__reader_8cc_source.html @@ -98,7 +98,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
9 namespace shaka {
10 namespace media {
11 
-
12 BitReader::BitReader(const uint8_t* data, off_t size)
+
12 BitReader::BitReader(const uint8_t* data, size_t size)
13  : data_(data),
14  initial_size_(size),
15  bytes_left_(size),
@@ -110,96 +110,94 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
21 
22 BitReader::~BitReader() {}
23 
-
24 bool BitReader::SkipBits(int num_bits) {
-
25  DCHECK_GE(num_bits, 0);
-
26 
-
27  // Skip any bits in the current byte waiting to be processed, then
-
28  // process full bytes until less than 8 bits remaining.
-
29  if (num_bits > num_remaining_bits_in_curr_byte_) {
-
30  num_bits -= num_remaining_bits_in_curr_byte_;
-
31  num_remaining_bits_in_curr_byte_ = 0;
-
32 
-
33  int num_bytes = num_bits / 8;
-
34  num_bits %= 8;
-
35  if (bytes_left_ < num_bytes) {
-
36  bytes_left_ = 0;
-
37  return false;
-
38  }
-
39  bytes_left_ -= num_bytes;
-
40  data_ += num_bytes;
-
41  UpdateCurrByte();
-
42 
-
43  // If there is no more data remaining, only return true if we
-
44  // skipped all that were requested.
-
45  if (num_remaining_bits_in_curr_byte_ == 0)
-
46  return (num_bits == 0);
-
47  }
-
48 
-
49  // Less than 8 bits remaining to skip. Use ReadBitsInternal to verify
-
50  // that the remaining bits we need exist, and adjust them as necessary
-
51  // for subsequent operations.
-
52  uint64_t not_needed;
-
53  return ReadBitsInternal(num_bits, &not_needed);
-
54 }
-
55 
-
56 bool BitReader::SkipBytes(int num_bytes) {
-
57  if (num_remaining_bits_in_curr_byte_ != 8)
-
58  return false;
-
59  if (num_bytes == 0)
-
60  return true;
-
61 
-
62  data_ += num_bytes - 1; // One additional byte in curr_byte_.
-
63  if (num_bytes > bytes_left_ + 1)
-
64  return false;
-
65  bytes_left_ -= num_bytes - 1;
-
66  num_remaining_bits_in_curr_byte_ = 0;
-
67  UpdateCurrByte();
-
68  return true;
-
69 }
-
70 
-
71 bool BitReader::ReadBitsInternal(int num_bits, uint64_t* out) {
-
72  DCHECK_LE(num_bits, 64);
+
24 bool BitReader::SkipBits(size_t num_bits) {
+
25  // Skip any bits in the current byte waiting to be processed, then
+
26  // process full bytes until less than 8 bits remaining.
+
27  if (num_bits > num_remaining_bits_in_curr_byte_) {
+
28  num_bits -= num_remaining_bits_in_curr_byte_;
+
29  num_remaining_bits_in_curr_byte_ = 0;
+
30 
+
31  size_t num_bytes = num_bits / 8;
+
32  num_bits %= 8;
+
33  if (bytes_left_ < num_bytes) {
+
34  bytes_left_ = 0;
+
35  return false;
+
36  }
+
37  bytes_left_ -= num_bytes;
+
38  data_ += num_bytes;
+
39  UpdateCurrByte();
+
40 
+
41  // If there is no more data remaining, only return true if we
+
42  // skipped all that were requested.
+
43  if (num_remaining_bits_in_curr_byte_ == 0)
+
44  return (num_bits == 0);
+
45  }
+
46 
+
47  // Less than 8 bits remaining to skip. Use ReadBitsInternal to verify
+
48  // that the remaining bits we need exist, and adjust them as necessary
+
49  // for subsequent operations.
+
50  uint64_t not_needed;
+
51  return ReadBitsInternal(num_bits, &not_needed);
+
52 }
+
53 
+
54 bool BitReader::SkipBytes(size_t num_bytes) {
+
55  if (num_remaining_bits_in_curr_byte_ != 8)
+
56  return false;
+
57  if (num_bytes == 0)
+
58  return true;
+
59 
+
60  data_ += num_bytes - 1; // One additional byte in curr_byte_.
+
61  if (num_bytes > bytes_left_ + 1)
+
62  return false;
+
63  bytes_left_ -= num_bytes - 1;
+
64  num_remaining_bits_in_curr_byte_ = 0;
+
65  UpdateCurrByte();
+
66  return true;
+
67 }
+
68 
+
69 bool BitReader::ReadBitsInternal(size_t num_bits, uint64_t* out) {
+
70  DCHECK_LE(num_bits, 64u);
+
71 
+
72  *out = 0;
73 
-
74  *out = 0;
-
75 
-
76  while (num_remaining_bits_in_curr_byte_ != 0 && num_bits != 0) {
-
77  int bits_to_take = std::min(num_remaining_bits_in_curr_byte_, num_bits);
-
78 
-
79  *out <<= bits_to_take;
-
80  *out += curr_byte_ >> (num_remaining_bits_in_curr_byte_ - bits_to_take);
-
81  num_bits -= bits_to_take;
-
82  num_remaining_bits_in_curr_byte_ -= bits_to_take;
-
83  curr_byte_ &= (1 << num_remaining_bits_in_curr_byte_) - 1;
-
84 
-
85  if (num_remaining_bits_in_curr_byte_ == 0)
-
86  UpdateCurrByte();
-
87  }
-
88 
-
89  return num_bits == 0;
-
90 }
-
91 
-
92 void BitReader::UpdateCurrByte() {
-
93  DCHECK_EQ(num_remaining_bits_in_curr_byte_, 0);
-
94 
-
95  if (bytes_left_ == 0)
-
96  return;
-
97 
-
98  // Load a new byte and advance pointers.
-
99  curr_byte_ = *data_;
-
100  ++data_;
-
101  --bytes_left_;
-
102  num_remaining_bits_in_curr_byte_ = 8;
-
103 }
-
104 
-
105 } // namespace media
-
106 } // namespace shaka
-
BitReader(const uint8_t *data, off_t size)
Definition: bit_reader.cc:12
-
bool SkipBytes(int num_bytes)
Definition: bit_reader.cc:56
-
bool SkipBits(int num_bits)
Definition: bit_reader.cc:24
+
74  while (num_remaining_bits_in_curr_byte_ != 0 && num_bits != 0) {
+
75  size_t bits_to_take = std::min(num_remaining_bits_in_curr_byte_, num_bits);
+
76 
+
77  *out <<= bits_to_take;
+
78  *out += curr_byte_ >> (num_remaining_bits_in_curr_byte_ - bits_to_take);
+
79  num_bits -= bits_to_take;
+
80  num_remaining_bits_in_curr_byte_ -= bits_to_take;
+
81  curr_byte_ &= (1 << num_remaining_bits_in_curr_byte_) - 1;
+
82 
+
83  if (num_remaining_bits_in_curr_byte_ == 0)
+
84  UpdateCurrByte();
+
85  }
+
86 
+
87  return num_bits == 0;
+
88 }
+
89 
+
90 void BitReader::UpdateCurrByte() {
+
91  DCHECK_EQ(num_remaining_bits_in_curr_byte_, 0u);
+
92 
+
93  if (bytes_left_ == 0)
+
94  return;
+
95 
+
96  // Load a new byte and advance pointers.
+
97  curr_byte_ = *data_;
+
98  ++data_;
+
99  --bytes_left_;
+
100  num_remaining_bits_in_curr_byte_ = 8;
+
101 }
+
102 
+
103 } // namespace media
+
104 } // namespace shaka
+
bool SkipBits(size_t num_bits)
Definition: bit_reader.cc:24
+
BitReader(const uint8_t *data, size_t size)
Definition: bit_reader.cc:12
+
bool SkipBytes(size_t num_bytes)
Definition: bit_reader.cc:54
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 f2d4209d7c..7b7ee1e95d 100644 --- a/docs/d5/de0/classshaka_1_1media_1_1mp2t_1_1PesPacketGenerator.html +++ b/docs/d5/de0/classshaka_1_1media_1_1mp2t_1_1PesPacketGenerator.html @@ -307,7 +307,7 @@ class PesPacketGeneratorTe diff --git a/docs/d5/dec/classshaka_1_1media_1_1WebMParserClient.html b/docs/d5/dec/classshaka_1_1media_1_1WebMParserClient.html index 36b834f01d..187b415f52 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 e7c3ea491c..11d5081bde 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 290d9ea92a..fbaf68313e 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 32ca8016f4..47e12ecce7 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 e219800d94..609bd32f8f 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 518baadbe9..25ab86c255 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 53623eeb68..e8b78c948d 100644 --- a/docs/d5/dfc/file_8cc_source.html +++ b/docs/d5/dfc/file_8cc_source.html @@ -376,7 +376,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d03/classshaka_1_1media_1_1AesCbcDecryptor-members.html b/docs/d6/d03/classshaka_1_1media_1_1AesCbcDecryptor-members.html index 5a467eee1e..964036826c 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 fc753b095b..c659968d8f 100644 --- a/docs/d6/d09/aes__pattern__cryptor_8h_source.html +++ b/docs/d6/d09/aes__pattern__cryptor_8h_source.html @@ -149,7 +149,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d16/text__stream__info_8cc_source.html b/docs/d6/d16/text__stream__info_8cc_source.html index 318862bcca..5678bcff0c 100644 --- a/docs/d6/d16/text__stream__info_8cc_source.html +++ b/docs/d6/d16/text__stream__info_8cc_source.html @@ -124,7 +124,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d17/es__parser__h264_8cc_source.html b/docs/d6/d17/es__parser__h264_8cc_source.html index 775ed022b0..4178331167 100644 --- a/docs/d6/d17/es__parser__h264_8cc_source.html +++ b/docs/d6/d17/es__parser__h264_8cc_source.html @@ -261,7 +261,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d1a/structshaka_1_1media_1_1mp4_1_1MovieHeader.html b/docs/d6/d1a/structshaka_1_1media_1_1mp4_1_1MovieHeader.html index 8abcfdeebe..31557fc3c8 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 522 of file box_definitions.cc.

+

Definition at line 525 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 8a05effa13..a0a202d4f3 100644 --- a/docs/d6/d1a/ts__packet__writer__util_8cc_source.html +++ b/docs/d6/d1a/ts__packet__writer__util_8cc_source.html @@ -163,19 +163,19 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
74 
75  // The size of all leading flags (not including the adaptation_field_length).
76  const int kAdaptationFieldHeaderSize = 1;
-
77  int adaptation_field_length =
+
77  size_t adaptation_field_length =
78  kAdaptationFieldHeaderSize + (has_pcr ? kPcrFieldsSize : 0);
79  if (remaining_data_size < kTsPacketMaximumPayloadSize) {
-
80  const int current_ts_size = kTsPacketHeaderSize + remaining_data_size +
-
81  adaptation_field_length +
-
82  kAdaptationFieldLengthSize;
+
80  const size_t current_ts_size = kTsPacketHeaderSize + remaining_data_size +
+
81  adaptation_field_length +
+
82  kAdaptationFieldLengthSize;
83  if (current_ts_size < kTsPacketSize) {
84  adaptation_field_length += kTsPacketSize - current_ts_size;
85  }
86  }
87 
88  writer->AppendInt(static_cast<uint8_t>(adaptation_field_length));
-
89  int remaining_bytes = adaptation_field_length;
+
89  int remaining_bytes = static_cast<int>(adaptation_field_length);
90  writer->AppendInt(static_cast<uint8_t>(
91  // All flags except PCR_flag are 0.
92  static_cast<uint8_t>(has_pcr) << 4));
@@ -233,7 +233,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
144  WriteAdaptationField(has_pcr, pcr_base, bytes_left, writer);
145  const size_t bytes_for_adaptation_field = writer->Size() - before;
146 
-
147  const int write_bytes =
+
147  const size_t write_bytes =
148  kTsPacketMaximumPayloadSize - bytes_for_adaptation_field;
149  writer->AppendArray(payload + payload_bytes_written, write_bytes);
150  payload_bytes_written += write_bytes;
@@ -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 2c49fb297a..adf2858d09 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 203192bdcf..6a42dc85f3 100644 --- a/docs/d6/d2e/mpd__notifier__util_8cc_source.html +++ b/docs/d6/d2e/mpd__notifier__util_8cc_source.html @@ -170,7 +170,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d32/classshaka_1_1media_1_1TextTrack-members.html b/docs/d6/d32/classshaka_1_1media_1_1TextTrack-members.html index 7ab81babd2..6dd632e8d4 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 d03a4ad9ce..179d83a417 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 391a391a39..ee4c43a115 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 ec6dc6c579..bd74b44e6b 100644 --- a/docs/d6/d41/encrypting__fragmenter_8cc_source.html +++ b/docs/d6/d41/encrypting__fragmenter_8cc_source.html @@ -268,209 +268,210 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
179 
180  // Optimize saiz box.
181  SampleAuxiliaryInformationSize& saiz = traf()->auxiliary_size;
-
182  saiz.sample_count = traf()->runs[0].sample_sizes.size();
-
183  if (!saiz.sample_info_sizes.empty()) {
-
184  if (!OptimizeSampleEntries(&saiz.sample_info_sizes,
-
185  &saiz.default_sample_info_size)) {
-
186  saiz.default_sample_info_size = 0;
-
187  }
-
188  } else {
-
189  // |sample_info_sizes| table is filled in only for subsample encryption,
-
190  // otherwise |sample_info_size| is just the IV size.
-
191  DCHECK(!IsSubsampleEncryptionRequired());
-
192  saiz.default_sample_info_size = static_cast<uint8_t>(per_sample_iv_size);
-
193  }
-
194 
-
195  // It should only happen with full sample encryption + constant iv, i.e.
-
196  // 'cbcs' applying to audio.
-
197  if (saiz.default_sample_info_size == 0 && saiz.sample_info_sizes.empty()) {
-
198  DCHECK_EQ(protection_scheme_, FOURCC_cbcs);
-
199  DCHECK(!IsSubsampleEncryptionRequired());
-
200  // ISO/IEC 23001-7:2016(E) The sample auxiliary information would then be
-
201  // empty and should be emitted. Clear saiz and saio boxes so they are not
-
202  // written.
-
203  saiz.sample_count = 0;
-
204  traf()->auxiliary_offset.offsets.clear();
-
205  }
-
206 }
-
207 
- -
209  DCHECK(encryption_key_);
-
210  std::unique_ptr<AesCryptor> encryptor;
-
211  switch (protection_scheme_) {
-
212  case FOURCC_cenc:
-
213  encryptor.reset(new AesCtrEncryptor);
-
214  break;
-
215  case FOURCC_cbc1:
-
216  encryptor.reset(new AesCbcEncryptor(kNoPadding));
-
217  break;
-
218  case FOURCC_cens:
-
219  encryptor.reset(new AesPatternCryptor(
-
220  crypt_byte_block(), skip_byte_block(),
- -
222  AesCryptor::kDontUseConstantIv,
-
223  std::unique_ptr<AesCryptor>(new AesCtrEncryptor())));
-
224  break;
-
225  case FOURCC_cbcs:
-
226  encryptor.reset(new AesPatternCryptor(
-
227  crypt_byte_block(), skip_byte_block(),
- -
229  AesCryptor::kUseConstantIv,
-
230  std::unique_ptr<AesCryptor>(new AesCbcEncryptor(kNoPadding))));
-
231  break;
-
232  default:
-
233  return Status(error::MUXER_FAILURE, "Unsupported protection scheme.");
-
234  }
-
235 
-
236  DCHECK(!encryption_key_->iv.empty());
-
237  const bool initialized =
-
238  encryptor->InitializeWithIv(encryption_key_->key, encryption_key_->iv);
-
239  if (!initialized)
-
240  return Status(error::MUXER_FAILURE, "Failed to create the encryptor.");
-
241  encryptor_ = std::move(encryptor);
-
242  return Status::OK;
-
243 }
-
244 
-
245 void EncryptingFragmenter::EncryptBytes(uint8_t* data, uint32_t size) {
-
246  DCHECK(encryptor_);
-
247  CHECK(encryptor_->Crypt(data, size, data));
-
248 }
-
249 
-
250 Status EncryptingFragmenter::EncryptSample(scoped_refptr<MediaSample> sample) {
-
251  DCHECK(encryptor_);
-
252 
-
253  SampleEncryptionEntry sample_encryption_entry;
-
254  // For 'cbcs' scheme, Constant IVs SHALL be used.
-
255  if (protection_scheme_ != FOURCC_cbcs)
-
256  sample_encryption_entry.initialization_vector = encryptor_->iv();
-
257  uint8_t* data = sample->writable_data();
-
258  if (IsSubsampleEncryptionRequired()) {
-
259  if (vpx_parser_) {
-
260  std::vector<VPxFrameInfo> vpx_frames;
-
261  if (!vpx_parser_->Parse(sample->data(), sample->data_size(),
-
262  &vpx_frames)) {
-
263  return Status(error::MUXER_FAILURE, "Failed to parse vpx frame.");
-
264  }
-
265 
-
266  const bool is_superframe = vpx_frames.size() > 1;
-
267  for (const VPxFrameInfo& frame : vpx_frames) {
-
268  SubsampleEntry subsample;
-
269  subsample.clear_bytes =
-
270  static_cast<uint16_t>(frame.uncompressed_header_size);
-
271  subsample.cipher_bytes =
-
272  frame.frame_size - frame.uncompressed_header_size;
-
273 
-
274  // "VP Codec ISO Media File Format Binding" document requires that the
-
275  // encrypted bytes of each frame within the superframe must be block
-
276  // aligned so that the counter state can be computed for each frame
-
277  // within the superframe.
-
278  // ISO/IEC 23001-7:2016 10.2 'cbc1' 10.3 'cens'
-
279  // The BytesOfProtectedData size SHALL be a multiple of 16 bytes to
-
280  // avoid partial blocks in Subsamples.
-
281  if (is_superframe || protection_scheme_ == FOURCC_cbc1 ||
-
282  protection_scheme_ == FOURCC_cens) {
-
283  const uint16_t misalign_bytes =
-
284  subsample.cipher_bytes % kCencBlockSize;
-
285  subsample.clear_bytes += misalign_bytes;
-
286  subsample.cipher_bytes -= misalign_bytes;
-
287  }
-
288 
-
289  sample_encryption_entry.subsamples.push_back(subsample);
-
290  if (subsample.cipher_bytes > 0)
-
291  EncryptBytes(data + subsample.clear_bytes, subsample.cipher_bytes);
-
292  data += frame.frame_size;
-
293  }
-
294  // Add subsample for the superframe index if exists.
-
295  if (is_superframe) {
-
296  size_t index_size = sample->data() + sample->data_size() - data;
-
297  DCHECK_LE(index_size, 2 + vpx_frames.size() * 4);
-
298  DCHECK_GE(index_size, 2 + vpx_frames.size() * 1);
-
299  SubsampleEntry subsample;
-
300  subsample.clear_bytes = static_cast<uint16_t>(index_size);
-
301  subsample.cipher_bytes = 0;
-
302  sample_encryption_entry.subsamples.push_back(subsample);
-
303  }
-
304  } else {
-
305  const Nalu::CodecType nalu_type =
-
306  (video_codec_ == kCodecHVC1 || video_codec_ == kCodecHEV1)
-
307  ? Nalu::kH265
-
308  : Nalu::kH264;
-
309  NaluReader reader(nalu_type, nalu_length_size_, data,
-
310  sample->data_size());
-
311 
-
312  // Store the current length of clear data. This is used to squash
-
313  // multiple unencrypted NAL units into fewer subsample entries.
-
314  uint64_t accumulated_clear_bytes = 0;
-
315 
-
316  Nalu nalu;
-
317  NaluReader::Result result;
-
318  while ((result = reader.Advance(&nalu)) == NaluReader::kOk) {
-
319  if (nalu.is_video_slice()) {
-
320  // For video-slice NAL units, encrypt the video slice. This skips
-
321  // the frame header. If this is an unrecognized codec (e.g. H.265),
-
322  // the whole NAL unit will be encrypted.
-
323  const int64_t video_slice_header_size =
-
324  header_parser_ ? header_parser_->GetHeaderSize(nalu) : 0;
-
325  if (video_slice_header_size < 0)
-
326  return Status(error::MUXER_FAILURE, "Failed to read slice header.");
-
327 
-
328  uint64_t current_clear_bytes =
-
329  nalu.header_size() + video_slice_header_size;
-
330  uint64_t cipher_bytes = nalu.payload_size() - video_slice_header_size;
-
331 
-
332  // ISO/IEC 23001-7:2016 10.2 'cbc1' 10.3 'cens'
-
333  // The BytesOfProtectedData size SHALL be a multiple of 16 bytes to
-
334  // avoid partial blocks in Subsamples.
-
335  if (protection_scheme_ == FOURCC_cbc1 ||
-
336  protection_scheme_ == FOURCC_cens) {
-
337  const uint16_t misalign_bytes = cipher_bytes % kCencBlockSize;
-
338  current_clear_bytes += misalign_bytes;
-
339  cipher_bytes -= misalign_bytes;
-
340  }
-
341 
-
342  const uint8_t* nalu_data = nalu.data() + current_clear_bytes;
-
343  EncryptBytes(const_cast<uint8_t*>(nalu_data), cipher_bytes);
-
344 
-
345  AddSubsamples(
-
346  accumulated_clear_bytes + nalu_length_size_ + current_clear_bytes,
-
347  cipher_bytes, &sample_encryption_entry.subsamples);
-
348  accumulated_clear_bytes = 0;
-
349  } else {
-
350  // For non-video-slice NAL units, don't encrypt.
-
351  accumulated_clear_bytes +=
-
352  nalu_length_size_ + nalu.header_size() + nalu.payload_size();
-
353  }
-
354  }
-
355  if (result != NaluReader::kEOStream)
-
356  return Status(error::MUXER_FAILURE, "Failed to parse NAL units.");
-
357  AddSubsamples(accumulated_clear_bytes, 0,
-
358  &sample_encryption_entry.subsamples);
-
359  }
-
360  DCHECK_EQ(sample_encryption_entry.GetTotalSizeOfSubsamples(),
-
361  sample->data_size());
-
362 
-
363  // The length of per-sample auxiliary datum, defined in CENC ch. 7.
-
364  traf()->auxiliary_size.sample_info_sizes.push_back(
-
365  sample_encryption_entry.ComputeSize());
-
366  } else {
-
367  DCHECK_LE(crypt_byte_block(), 1u);
-
368  DCHECK_EQ(skip_byte_block(), 0u);
-
369  EncryptBytes(data, sample->data_size());
-
370  }
-
371 
-
372  traf()->sample_encryption.sample_encryption_entries.push_back(
-
373  sample_encryption_entry);
-
374  encryptor_->UpdateIv();
-
375  return Status::OK;
-
376 }
-
377 
-
378 bool EncryptingFragmenter::IsSubsampleEncryptionRequired() {
-
379  return vpx_parser_ || nalu_length_size_ != 0;
-
380 }
-
381 
-
382 } // namespace mp4
-
383 } // namespace media
-
384 } // namespace shaka
+
182  saiz.sample_count =
+
183  static_cast<uint32_t>(traf()->runs[0].sample_sizes.size());
+
184  if (!saiz.sample_info_sizes.empty()) {
+
185  if (!OptimizeSampleEntries(&saiz.sample_info_sizes,
+
186  &saiz.default_sample_info_size)) {
+
187  saiz.default_sample_info_size = 0;
+
188  }
+
189  } else {
+
190  // |sample_info_sizes| table is filled in only for subsample encryption,
+
191  // otherwise |sample_info_size| is just the IV size.
+
192  DCHECK(!IsSubsampleEncryptionRequired());
+
193  saiz.default_sample_info_size = static_cast<uint8_t>(per_sample_iv_size);
+
194  }
+
195 
+
196  // It should only happen with full sample encryption + constant iv, i.e.
+
197  // 'cbcs' applying to audio.
+
198  if (saiz.default_sample_info_size == 0 && saiz.sample_info_sizes.empty()) {
+
199  DCHECK_EQ(protection_scheme_, FOURCC_cbcs);
+
200  DCHECK(!IsSubsampleEncryptionRequired());
+
201  // ISO/IEC 23001-7:2016(E) The sample auxiliary information would then be
+
202  // empty and should be emitted. Clear saiz and saio boxes so they are not
+
203  // written.
+
204  saiz.sample_count = 0;
+
205  traf()->auxiliary_offset.offsets.clear();
+
206  }
+
207 }
+
208 
+ +
210  DCHECK(encryption_key_);
+
211  std::unique_ptr<AesCryptor> encryptor;
+
212  switch (protection_scheme_) {
+
213  case FOURCC_cenc:
+
214  encryptor.reset(new AesCtrEncryptor);
+
215  break;
+
216  case FOURCC_cbc1:
+
217  encryptor.reset(new AesCbcEncryptor(kNoPadding));
+
218  break;
+
219  case FOURCC_cens:
+
220  encryptor.reset(new AesPatternCryptor(
+
221  crypt_byte_block(), skip_byte_block(),
+ +
223  AesCryptor::kDontUseConstantIv,
+
224  std::unique_ptr<AesCryptor>(new AesCtrEncryptor())));
+
225  break;
+
226  case FOURCC_cbcs:
+
227  encryptor.reset(new AesPatternCryptor(
+
228  crypt_byte_block(), skip_byte_block(),
+ +
230  AesCryptor::kUseConstantIv,
+
231  std::unique_ptr<AesCryptor>(new AesCbcEncryptor(kNoPadding))));
+
232  break;
+
233  default:
+
234  return Status(error::MUXER_FAILURE, "Unsupported protection scheme.");
+
235  }
+
236 
+
237  DCHECK(!encryption_key_->iv.empty());
+
238  const bool initialized =
+
239  encryptor->InitializeWithIv(encryption_key_->key, encryption_key_->iv);
+
240  if (!initialized)
+
241  return Status(error::MUXER_FAILURE, "Failed to create the encryptor.");
+
242  encryptor_ = std::move(encryptor);
+
243  return Status::OK;
+
244 }
+
245 
+
246 void EncryptingFragmenter::EncryptBytes(uint8_t* data, size_t size) {
+
247  DCHECK(encryptor_);
+
248  CHECK(encryptor_->Crypt(data, size, data));
+
249 }
+
250 
+
251 Status EncryptingFragmenter::EncryptSample(scoped_refptr<MediaSample> sample) {
+
252  DCHECK(encryptor_);
+
253 
+
254  SampleEncryptionEntry sample_encryption_entry;
+
255  // For 'cbcs' scheme, Constant IVs SHALL be used.
+
256  if (protection_scheme_ != FOURCC_cbcs)
+
257  sample_encryption_entry.initialization_vector = encryptor_->iv();
+
258  uint8_t* data = sample->writable_data();
+
259  if (IsSubsampleEncryptionRequired()) {
+
260  if (vpx_parser_) {
+
261  std::vector<VPxFrameInfo> vpx_frames;
+
262  if (!vpx_parser_->Parse(sample->data(), sample->data_size(),
+
263  &vpx_frames)) {
+
264  return Status(error::MUXER_FAILURE, "Failed to parse vpx frame.");
+
265  }
+
266 
+
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 = static_cast<uint32_t>(
+
273  frame.frame_size - frame.uncompressed_header_size);
+
274 
+
275  // "VP Codec ISO Media File Format Binding" document requires that the
+
276  // encrypted bytes of each frame within the superframe must be block
+
277  // aligned so that the counter state can be computed for each frame
+
278  // within the superframe.
+
279  // ISO/IEC 23001-7:2016 10.2 'cbc1' 10.3 'cens'
+
280  // The BytesOfProtectedData size SHALL be a multiple of 16 bytes to
+
281  // avoid partial blocks in Subsamples.
+
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;
+
288  }
+
289 
+
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;
+
294  }
+
295  // Add subsample for the superframe index if exists.
+
296  if (is_superframe) {
+
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);
+
304  }
+
305  } else {
+
306  const Nalu::CodecType nalu_type =
+
307  (video_codec_ == kCodecHVC1 || video_codec_ == kCodecHEV1)
+
308  ? Nalu::kH265
+
309  : Nalu::kH264;
+
310  NaluReader reader(nalu_type, nalu_length_size_, data,
+
311  sample->data_size());
+
312 
+
313  // Store the current length of clear data. This is used to squash
+
314  // multiple unencrypted NAL units into fewer subsample entries.
+
315  uint64_t accumulated_clear_bytes = 0;
+
316 
+
317  Nalu nalu;
+
318  NaluReader::Result result;
+
319  while ((result = reader.Advance(&nalu)) == NaluReader::kOk) {
+
320  if (nalu.is_video_slice()) {
+
321  // For video-slice NAL units, encrypt the video slice. This skips
+
322  // the frame header. If this is an unrecognized codec (e.g. H.265),
+
323  // the whole NAL unit will be encrypted.
+
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.");
+
328 
+
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;
+
332 
+
333  // ISO/IEC 23001-7:2016 10.2 'cbc1' 10.3 'cens'
+
334  // The BytesOfProtectedData size SHALL be a multiple of 16 bytes to
+
335  // avoid partial blocks in Subsamples.
+
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;
+
341  }
+
342 
+
343  const uint8_t* nalu_data = nalu.data() + current_clear_bytes;
+
344  EncryptBytes(const_cast<uint8_t*>(nalu_data), cipher_bytes);
+
345 
+
346  AddSubsamples(
+
347  accumulated_clear_bytes + nalu_length_size_ + current_clear_bytes,
+
348  cipher_bytes, &sample_encryption_entry.subsamples);
+
349  accumulated_clear_bytes = 0;
+
350  } else {
+
351  // For non-video-slice NAL units, don't encrypt.
+
352  accumulated_clear_bytes +=
+
353  nalu_length_size_ + nalu.header_size() + nalu.payload_size();
+
354  }
+
355  }
+
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);
+
360  }
+
361  DCHECK_EQ(sample_encryption_entry.GetTotalSizeOfSubsamples(),
+
362  sample->data_size());
+
363 
+
364  // The length of per-sample auxiliary datum, defined in CENC ch. 7.
+
365  traf()->auxiliary_size.sample_info_sizes.push_back(
+
366  sample_encryption_entry.ComputeSize());
+
367  } else {
+
368  DCHECK_LE(crypt_byte_block(), 1u);
+
369  DCHECK_EQ(skip_byte_block(), 0u);
+
370  EncryptBytes(data, sample->data_size());
+
371  }
+
372 
+
373  traf()->sample_encryption.sample_encryption_entries.push_back(
+
374  sample_encryption_entry);
+
375  encryptor_->UpdateIv();
+
376  return Status::OK;
+
377 }
+
378 
+
379 bool EncryptingFragmenter::IsSubsampleEncryptionRequired() {
+
380  return vpx_parser_ || nalu_length_size_ != 0;
+
381 }
+
382 
+
383 } // namespace mp4
+
384 } // namespace media
+
385 } // namespace shaka
Status AddSample(scoped_refptr< MediaSample > sample) override
Status InitializeFragment(int64_t first_sample_dts) override
@@ -478,10 +479,10 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
virtual Status AddSample(scoped_refptr< MediaSample > sample)
Definition: fragmenter.cc:46
virtual void OnEncryptionStart()=0
void FinalizeFragment() override
Finalize and optimize the fragment.
-
virtual Status InitializeFragment(int64_t first_sample_dts)
Definition: fragmenter.cc:91
+
virtual Status InitializeFragment(int64_t first_sample_dts)
Definition: fragmenter.cc:92
-
virtual void FinalizeFragment()
Finalize and optimize the fragment.
Definition: fragmenter.cc:110
+
virtual void FinalizeFragment()
Finalize and optimize the fragment.
Definition: fragmenter.cc:111
virtual void FinalizeFragmentForEncryption()
Finalize current fragment for encryption.
@@ -491,7 +492,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); - +
virtual Status PrepareFragmentForEncryption(bool enable_encryption)
EncryptingFragmenter(scoped_refptr< StreamInfo > info, TrackFragment *traf, std::unique_ptr< EncryptionKey > encryption_key, int64_t clear_time, FourCC protection_scheme, uint8_t crypt_byte_block, uint8_t skip_byte_block, MuxerListener *listener)
@@ -499,7 +500,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d4e/webm_2multi__segment__segmenter_8cc_source.html b/docs/d6/d4e/webm_2multi__segment__segmenter_8cc_source.html index bfb676f45d..e4556178c7 100644 --- a/docs/d6/d4e/webm_2multi__segment__segmenter_8cc_source.html +++ b/docs/d6/d4e/webm_2multi__segment__segmenter_8cc_source.html @@ -187,7 +187,7 @@ 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 87239f0e80..42a35de81a 100644 --- a/docs/d6/d55/aes__cryptor_8cc_source.html +++ b/docs/d6/d55/aes__cryptor_8cc_source.html @@ -227,7 +227,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d57/classshaka_1_1media_1_1AVCDecoderConfigurationRecord.html b/docs/d6/d57/classshaka_1_1media_1_1AVCDecoderConfigurationRecord.html index 3a2993df50..524b56ef6c 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 4f31c07040..164f195703 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 89f2aa2d12..60e5e572fe 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 b18062675e..6b87be04ec 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 c3d64840eb..510f60dafa 100644 --- a/docs/d6/d6e/ts__section__pes_8cc_source.html +++ b/docs/d6/d6e/ts__section__pes_8cc_source.html @@ -284,7 +284,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
195  RCHECK(packet_start_code_prefix == kPesStartCode);
196  DVLOG(LOG_LEVEL_PES) << "stream_id=" << std::hex << stream_id << std::dec;
197  if (pes_packet_length == 0)
-
198  pes_packet_length = bit_reader.bits_available() / 8;
+
198  pes_packet_length = static_cast<int>(bit_reader.bits_available()) / 8;
199 
200  // Ignore the PES for unknown stream IDs.
201  // See ITU H.222 Table 2-22 "Stream_id assignments"
@@ -323,7 +323,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
234  RCHECK(bit_reader.ReadBits(1, &pes_crc_flag));
235  RCHECK(bit_reader.ReadBits(1, &pes_extension_flag));
236  RCHECK(bit_reader.ReadBits(8, &pes_header_data_length));
-
237  int pes_header_start_size = bit_reader.bits_available() / 8;
+
237  int pes_header_start_size = static_cast<int>(bit_reader.bits_available()) / 8;
238 
239  // Compute the size and the offset of the ES payload.
240  // "6" for the 6 bytes read before and including |pes_packet_length|.
@@ -376,36 +376,38 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
287  }
288 
289  // Discard the rest of the PES packet header.
-
290  DCHECK_EQ(bit_reader.bits_available() % 8, 0);
-
291  int pes_header_remaining_size = pes_header_data_length -
-
292  (pes_header_start_size - bit_reader.bits_available() / 8);
-
293  RCHECK(pes_header_remaining_size >= 0);
-
294 
-
295  // Read the PES packet.
-
296  DVLOG(LOG_LEVEL_PES)
-
297  << "Emit a reassembled PES:"
-
298  << " size=" << es_size
-
299  << " pts=" << media_pts
-
300  << " dts=" << media_dts
-
301  << " data_alignment_indicator=" << data_alignment_indicator;
-
302  return es_parser_->Parse(&raw_pes[es_offset], es_size, media_pts, media_dts);
-
303 }
-
304 
-
305 void TsSectionPes::ResetPesState() {
-
306  pes_byte_queue_.Reset();
-
307  wait_for_pusi_ = true;
-
308 }
-
309 
-
310 } // namespace mp2t
-
311 } // namespace media
-
312 } // namespace shaka
+
290  DCHECK_EQ(bit_reader.bits_available() % 8, 0u);
+
291  int pes_header_remaining_size =
+
292  pes_header_data_length -
+
293  (pes_header_start_size -
+
294  static_cast<int>(bit_reader.bits_available()) / 8);
+
295  RCHECK(pes_header_remaining_size >= 0);
+
296 
+
297  // Read the PES packet.
+
298  DVLOG(LOG_LEVEL_PES)
+
299  << "Emit a reassembled PES:"
+
300  << " size=" << es_size
+
301  << " pts=" << media_pts
+
302  << " dts=" << media_dts
+
303  << " data_alignment_indicator=" << data_alignment_indicator;
+
304  return es_parser_->Parse(&raw_pes[es_offset], es_size, media_pts, media_dts);
+
305 }
+
306 
+
307 void TsSectionPes::ResetPesState() {
+
308  pes_byte_queue_.Reset();
+
309  wait_for_pusi_ = true;
+
310 }
+
311 
+
312 } // namespace mp2t
+
313 } // namespace media
+
314 } // namespace shaka
void Push(const uint8_t *data, int size)
Append new bytes to the end of the queue.
Definition: byte_queue.cc:29
void Reset()
Reset the queue to the empty state.
Definition: byte_queue.cc:24
void Peek(const uint8_t **data, int *size) const
Definition: byte_queue.cc:63
diff --git a/docs/d6/d71/scoped__xml__ptr_8h_source.html b/docs/d6/d71/scoped__xml__ptr_8h_source.html index 99541967dd..b6e500a40d 100644 --- a/docs/d6/d71/scoped__xml__ptr_8h_source.html +++ b/docs/d6/d71/scoped__xml__ptr_8h_source.html @@ -132,7 +132,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d77/dash__iop__mpd__notifier_8h_source.html b/docs/d6/d77/dash__iop__mpd__notifier_8h_source.html index f3ceafe4b5..1a5a9e2aec 100644 --- a/docs/d6/d77/dash__iop__mpd__notifier_8h_source.html +++ b/docs/d6/d77/dash__iop__mpd__notifier_8h_source.html @@ -208,7 +208,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 da69903f4a..3f2f7456c4 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 2705 of file box_definitions.cc.

+

Definition at line 2711 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 da253523a0..7b26e9bde1 100644 --- a/docs/d6/d7b/webm__tracks__parser_8h_source.html +++ b/docs/d6/d7b/webm__tracks__parser_8h_source.html @@ -201,7 +201,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d7c/structshaka_1_1media_1_1mp4_1_1AC3Specific-members.html b/docs/d6/d7c/structshaka_1_1media_1_1mp4_1_1AC3Specific-members.html index 857361a911..a5c5ef8a2f 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 438da4f57a..6fa6b5f307 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 d7c92cc63b..a85a72a4c4 100644 --- a/docs/d6/d8a/vp9__parser_8cc_source.html +++ b/docs/d6/d8a/vp9__parser_8cc_source.html @@ -515,17 +515,17 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
426  VLOG(4) << "process frame with size " << vpx_frame.frame_size;
427  BitReader reader(data, vpx_frame.frame_size);
428  uint8_t frame_marker;
-
429  RCHECK(reader.ReadBits(2, &frame_marker));
+
429  RCHECK(reader.ReadBits(2, &frame_marker));
430  RCHECK(frame_marker == VP9_FRAME_MARKER);
431 
432  RCHECK(ReadProfile(&reader, writable_codec_config()));
433 
434  bool show_existing_frame;
-
435  RCHECK(reader.ReadBits(1, &show_existing_frame));
+
435  RCHECK(reader.ReadBits(1, &show_existing_frame));
436  if (show_existing_frame) {
-
437  RCHECK(reader.SkipBits(3)); // ref_frame_index
+
437  RCHECK(reader.SkipBits(3)); // ref_frame_index
438  // End of current frame data. There should be no more bytes available.
-
439  RCHECK(reader.bits_available() < 8);
+
439  RCHECK(reader.bits_available() < 8);
440 
441  vpx_frame.is_keyframe = false;
442  vpx_frame.uncompressed_header_size = vpx_frame.frame_size;
@@ -535,13 +535,13 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
446  }
447 
448  bool is_interframe;
-
449  RCHECK(reader.ReadBits(1, &is_interframe));
+
449  RCHECK(reader.ReadBits(1, &is_interframe));
450  vpx_frame.is_keyframe = !is_interframe;
451 
452  bool show_frame;
-
453  RCHECK(reader.ReadBits(1, &show_frame));
+
453  RCHECK(reader.ReadBits(1, &show_frame));
454  bool error_resilient_mode;
-
455  RCHECK(reader.ReadBits(1, &error_resilient_mode));
+
455  RCHECK(reader.ReadBits(1, &error_resilient_mode));
456 
457  if (vpx_frame.is_keyframe) {
458  RCHECK(ReadSyncCode(&reader));
@@ -550,9 +550,9 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
461  } else {
462  bool intra_only = false;
463  if (!show_frame)
-
464  RCHECK(reader.ReadBits(1, &intra_only));
+
464  RCHECK(reader.ReadBits(1, &intra_only));
465  if (!error_resilient_mode)
-
466  RCHECK(reader.SkipBits(2)); // reset_frame_context
+
466  RCHECK(reader.SkipBits(2)); // reset_frame_context
467 
468  if (intra_only) {
469  RCHECK(ReadSyncCode(&reader));
@@ -568,53 +568,53 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
479  writable_codec_config()->set_bit_depth(8);
480  }
481 
-
482  RCHECK(reader.SkipBits(REF_FRAMES)); // refresh_frame_flags
+
482  RCHECK(reader.SkipBits(REF_FRAMES)); // refresh_frame_flags
483  RCHECK(ReadFrameSizes(&reader, &width_, &height_));
484  } else {
-
485  RCHECK(reader.SkipBits(REF_FRAMES)); // refresh_frame_flags
-
486  RCHECK(reader.SkipBits(REFS_PER_FRAME * (REF_FRAMES_LOG2 + 1)));
+
485  RCHECK(reader.SkipBits(REF_FRAMES)); // refresh_frame_flags
+
486  RCHECK(reader.SkipBits(REFS_PER_FRAME * (REF_FRAMES_LOG2 + 1)));
487 
488  // TODO(kqyang): We may need to actually build the refs to extract the
489  // correct width and height for the current frame. The width will be
490  // used later in ReadTileInfo.
491  RCHECK(ReadFrameSizesWithRefs(&reader, &width_, &height_));
492 
-
493  RCHECK(reader.SkipBits(1)); // allow_high_precision_mv
+
493  RCHECK(reader.SkipBits(1)); // allow_high_precision_mv
494 
495  bool interp_filter;
-
496  RCHECK(reader.ReadBits(1, &interp_filter));
+
496  RCHECK(reader.ReadBits(1, &interp_filter));
497  if (!interp_filter)
-
498  RCHECK(reader.SkipBits(2)); // more interp_filter
+
498  RCHECK(reader.SkipBits(2)); // more interp_filter
499  }
500  }
501 
502  if (!error_resilient_mode) {
-
503  RCHECK(reader.SkipBits(1)); // refresh_frame_context
-
504  RCHECK(reader.SkipBits(1)); // frame_parallel_decoding_mode
+
503  RCHECK(reader.SkipBits(1)); // refresh_frame_context
+
504  RCHECK(reader.SkipBits(1)); // frame_parallel_decoding_mode
505  }
-
506  RCHECK(reader.SkipBits(FRAME_CONTEXTS_LOG2)); // frame_context_idx
+
506  RCHECK(reader.SkipBits(FRAME_CONTEXTS_LOG2)); // frame_context_idx
507 
-
508  VLOG(4) << "bits read before ReadLoopFilter: " << reader.bit_position();
+
508  VLOG(4) << "bits read before ReadLoopFilter: " << reader.bit_position();
509  RCHECK(ReadLoopFilter(&reader));
510  RCHECK(ReadQuantization(&reader));
511  RCHECK(ReadSegmentation(&reader));
512  RCHECK(ReadTileInfo(width_, &reader));
513 
514  uint16_t header_size;
-
515  RCHECK(reader.ReadBits(16, &header_size));
+
515  RCHECK(reader.ReadBits(16, &header_size));
516  vpx_frame.uncompressed_header_size =
-
517  vpx_frame.frame_size - reader.bits_available() / 8;
+
517  vpx_frame.frame_size - reader.bits_available() / 8;
518  vpx_frame.width = width_;
519  vpx_frame.height = height_;
520 
521  VLOG(3) << "\n frame_size: " << vpx_frame.frame_size
522  << "\n uncompressed_header_size: "
523  << vpx_frame.uncompressed_header_size
-
524  << "\n bits read: " << reader.bit_position()
+
524  << "\n bits read: " << reader.bit_position()
525  << "\n header_size: " << header_size;
526 
527  RCHECK(header_size > 0);
-
528  RCHECK(header_size * 8 <= reader.bits_available());
+
528  RCHECK(header_size * 8 <= reader.bits_available());
529 
530  data += vpx_frame.frame_size;
531  }
@@ -624,23 +624,23 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
535 bool VP9Parser::IsKeyframe(const uint8_t* data, size_t data_size) {
536  BitReader reader(data, data_size);
537  uint8_t frame_marker;
-
538  RCHECK(reader.ReadBits(2, &frame_marker));
+
538  RCHECK(reader.ReadBits(2, &frame_marker));
539  RCHECK(frame_marker == VP9_FRAME_MARKER);
540 
542  RCHECK(ReadProfile(&reader, &codec_config));
543 
544  bool show_existing_frame;
-
545  RCHECK(reader.ReadBits(1, &show_existing_frame));
+
545  RCHECK(reader.ReadBits(1, &show_existing_frame));
546  if (show_existing_frame)
547  return false;
548 
549  bool is_interframe;
-
550  RCHECK(reader.ReadBits(1, &is_interframe));
+
550  RCHECK(reader.ReadBits(1, &is_interframe));
551  if (is_interframe)
552  return false;
553 
-
554  RCHECK(reader.SkipBits(2)); // show_frame, error_resilient_mode.
+
554  RCHECK(reader.SkipBits(2)); // show_frame, error_resilient_mode.
555 
556  RCHECK(ReadSyncCode(&reader));
557  return true;
@@ -648,19 +648,19 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
559 
560 } // namespace media
561 } // namespace shaka
+
bool ReadBits(size_t num_bits, T *out)
Definition: bit_reader.h:35
Class for parsing or writing VP codec configuration record.
static bool IsKeyframe(const uint8_t *data, size_t data_size)
Definition: vp9_parser.cc:535
A class to read bit streams.
Definition: bit_reader.h:17
bool Parse(const uint8_t *data, size_t data_size, std::vector< VPxFrameInfo > *vpx_frames) override
Definition: vp9_parser.cc:418
const VPCodecConfigurationRecord & codec_config() const
Definition: vpx_parser.h:44
-
bool ReadBits(int num_bits, T *out)
Definition: bit_reader.h:35
-
int bits_available() const
Definition: bit_reader.h:85
-
bool SkipBits(int num_bits)
Definition: bit_reader.cc:24
-
int bit_position() const
Definition: bit_reader.h:90
+
bool SkipBits(size_t num_bits)
Definition: bit_reader.cc:24
+
size_t bits_available() const
Definition: bit_reader.h:85
+
size_t bit_position() const
Definition: bit_reader.h:90
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 92bf306224..459f32dcda 100644 --- a/docs/d6/d8f/classshaka_1_1xml_1_1RepresentationBaseXmlNode-members.html +++ b/docs/d6/d8f/classshaka_1_1xml_1_1RepresentationBaseXmlNode-members.html @@ -112,7 +112,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 5470b47668..ddcdcc168f 100644 --- a/docs/d6/d9b/h264__parser_8h_source.html +++ b/docs/d6/d9b/h264__parser_8h_source.html @@ -258,13 +258,13 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
169  const uint8_t* nalu_data;
170 
171  // Size of whole nalu unit.
-
172  off_t nalu_size;
+
172  size_t nalu_size;
173 
174  // This is the size of the slice header not including the nalu header byte.
175  // Sturcture: |NALU Header| Slice Header | Slice Data |
176  // Size: |<- 8bits ->|<- header_bit_size ->|<- Rest of nalu ->|
177  // Note that this is not a field in the H.264 spec.
-
178  off_t header_bit_size;
+
178  size_t header_bit_size;
179 
180  int first_mb_in_slice;
181  int slice_type;
@@ -448,7 +448,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 f8c8dbac6d..38014f5e8b 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 b6a67768ff..891a4ba71f 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 19808eec42..eed8fcb667 100644 --- a/docs/d6/da3/mpd__builder_8h_source.html +++ b/docs/d6/da3/mpd__builder_8h_source.html @@ -531,7 +531,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/da4/classshaka_1_1media_1_1AVCDecoderConfigurationRecord-members.html b/docs/d6/da4/classshaka_1_1media_1_1AVCDecoderConfigurationRecord-members.html index 1f5b017ee8..f7bd3ccd0e 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 8d1ac929a4..6799d8b068 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 039c0031aa..1bd9f8cb6a 100644 --- a/docs/d6/da9/classshaka_1_1media_1_1BitReader.html +++ b/docs/d6/da9/classshaka_1_1media_1_1BitReader.html @@ -101,31 +101,31 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + +

Public Member Functions

 BitReader (const uint8_t *data, off_t size)
 
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)
 
bool SkipBytes (int num_bytes)
 
int bits_available () const
 
int bit_position () const
 
 BitReader (const uint8_t *data, size_t size)
 
template<typename T >
bool ReadBits (size_t num_bits, T *out)
 
+bool ReadBits (size_t num_bits, bool *out)
 
bool SkipBits (size_t num_bits)
 
bool SkipBitsConditional (bool condition, size_t num_bits)
 
bool SkipBytes (size_t num_bytes)
 
size_t bits_available () const
 
size_t bit_position () const
 

Detailed Description

A class to read bit streams.

Definition at line 17 of file bit_reader.h.

Constructor & Destructor Documentation

- +
@@ -138,7 +138,7 @@ bool  - + @@ -162,7 +162,7 @@ bool 
ReadBits (int num
off_t size_t  size 
ReadBits (int num

Member Function Documentation

- +
@@ -170,7 +170,7 @@ bool 
ReadBits (int num - + @@ -188,7 +188,7 @@ bool 
int shaka::media::BitReader::bit_position size_t shaka::media::BitReader::bit_position ( ) constReadBits (int num - +
@@ -196,7 +196,7 @@ bool 
ReadBits (int num - + @@ -214,7 +214,7 @@ bool  - + @@ -261,14 +261,14 @@ template<typename T > - +
int shaka::media::BitReader::bits_available size_t shaka::media::BitReader::bits_available ( ) constReadBits (int num - +
@@ -226,7 +226,7 @@ template<typename T >
bool shaka::media::BitReader::ReadBits (int size_t  num_bits,
- + @@ -287,7 +287,7 @@ template<typename T > - +
bool shaka::media::BitReader::SkipBits (int size_t  num_bits)
@@ -303,7 +303,7 @@ template<typename T > - + @@ -332,14 +332,14 @@ template<typename T > - +
int size_t  num_bits 
- + @@ -354,7 +354,7 @@ template<typename T >
Returns
false if the current position is not byte aligned or if the given number of bytes cannot be skipped (not enough bytes in the stream), true otherwise.
-

Definition at line 56 of file bit_reader.cc.

+

Definition at line 54 of file bit_reader.cc.

@@ -365,7 +365,7 @@ template<typename T > diff --git a/docs/d6/daa/structshaka_1_1media_1_1mp4_1_1VTTCueBox.html b/docs/d6/daa/structshaka_1_1media_1_1mp4_1_1VTTCueBox.html index 94b6d35816..dca31c79be 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 2723 of file box_definitions.cc.

+

Definition at line 2729 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 afbd19b583..2b107ce79f 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');
bool shaka::media::BitReader::SkipBytes (int size_t  num_bytes)
diff --git a/docs/d6/db1/classshaka_1_1media_1_1VideoStreamInfo.html b/docs/d6/db1/classshaka_1_1media_1_1VideoStreamInfo.html index 1084cbc8fa..5df80fa4fb 100644 --- a/docs/d6/db1/classshaka_1_1media_1_1VideoStreamInfo.html +++ b/docs/d6/db1/classshaka_1_1media_1_1VideoStreamInfo.html @@ -435,7 +435,7 @@ void 
set_language (con diff --git a/docs/d6/db1/structshaka_1_1media_1_1VideoStreamInfoParameters-members.html b/docs/d6/db1/structshaka_1_1media_1_1VideoStreamInfoParameters-members.html index a86807f611..b4bad0cb55 100644 --- a/docs/d6/db1/structshaka_1_1media_1_1VideoStreamInfoParameters-members.html +++ b/docs/d6/db1/structshaka_1_1media_1_1VideoStreamInfoParameters-members.html @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
diff --git a/docs/d6/dc6/structshaka_1_1media_1_1mp2t_1_1EsParserH26x_1_1VideoSliceInfo-members.html b/docs/d6/dc6/structshaka_1_1media_1_1mp2t_1_1EsParserH26x_1_1VideoSliceInfo-members.html index 9d727caa49..b6f098cd45 100644 --- a/docs/d6/dc6/structshaka_1_1media_1_1mp2t_1_1EsParserH26x_1_1VideoSliceInfo-members.html +++ b/docs/d6/dc6/structshaka_1_1media_1_1mp2t_1_1EsParserH26x_1_1VideoSliceInfo-members.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
diff --git a/docs/d6/dc7/classshaka_1_1media_1_1mp2t_1_1EsParserH26x-members.html b/docs/d6/dc7/classshaka_1_1media_1_1mp2t_1_1EsParserH26x-members.html index 48aa5c9e51..ee0a37388b 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 e585515b3a..dba71460e2 100644 --- a/docs/d6/dc8/mkv__writer_8cc_source.html +++ b/docs/d6/dc8/mkv__writer_8cc_source.html @@ -195,7 +195,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
diff --git a/docs/d6/dcb/structshaka_1_1media_1_1mp4_1_1SampleEncryptionEntry.html b/docs/d6/dcb/structshaka_1_1media_1_1mp4_1_1SampleEncryptionEntry.html index a4fb1f3d36..fd290e4b49 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 @@ -151,7 +151,7 @@ std::vector<
Returns
The accumulated size of subsamples. Returns 0 if there is no subsamples.
-

Definition at line 299 of file box_definitions.cc.

+

Definition at line 300 of file box_definitions.cc.

@@ -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 2f988cd743..aa26220b9a 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 c5097b47b3..3daa83acbe 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 267c3c0c15..107aca6232 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 dd948b9052..adcc633b2c 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 ba931ba092..19805d3fe0 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 68fb1cb877..ddfed11a33 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 752d8e0d7f..8dcbfd27e2 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 a573a910c3..5187f7ea19 100644 --- a/docs/d6/de8/local__file_8cc_source.html +++ b/docs/d6/de8/local__file_8cc_source.html @@ -211,7 +211,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/de8/network__util_8h_source.html b/docs/d6/de8/network__util_8h_source.html index 437cc706a4..1a29d6a163 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 7871cf19d2..aaf9c88d24 100644 --- a/docs/d6/de9/ts__segmenter_8cc_source.html +++ b/docs/d6/de9/ts__segmenter_8cc_source.html @@ -316,7 +316,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 81ab376f55..f29aeb2bf0 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 93a35ce933..1ff094d1e9 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 6039a29e8f..11118e38b9 100644 --- a/docs/d6/dff/classshaka_1_1media_1_1Nalu.html +++ b/docs/d6/dff/classshaka_1_1media_1_1Nalu.html @@ -243,7 +243,7 @@ bool can_start_access_unit diff --git a/docs/d7/d01/structshaka_1_1media_1_1mp4_1_1SampleGroupDescription.html b/docs/d7/d01/structshaka_1_1media_1_1mp4_1_1SampleGroupDescription.html index f138c27d88..1fa8d926e0 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 1000 of file box_definitions.cc.

+

Definition at line 1004 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 4343780ce9..25b5c04c63 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 1950 of file box_definitions.cc.

+

Definition at line 1956 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 d2f7d38da2..6de8fd8380 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 a0502d9d0c..8e406567b6 100644 --- a/docs/d7/d12/media__parser_8h_source.html +++ b/docs/d7/d12/media__parser_8h_source.html @@ -149,7 +149,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d15/mpd__notifier_8h_source.html b/docs/d7/d15/mpd__notifier_8h_source.html index 525a353a94..07da5d4dab 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 514b4086b1..9e723aca4c 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 bb3c697277..42545c7e6c 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 ca1dc5a313..1c72334a2d 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 3b05aa3fcd..b541ee9dce 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 00df212734..de6e91ead5 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 4666336e04..202cfc11b9 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 d068c39b0c..971b8d0d5d 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 89d9750cf3..b47c7016b4 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 777 of file box_definitions.cc.

+

Definition at line 780 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 873a19a19c..1d6ca4710b 100644 --- a/docs/d7/d44/structshaka_1_1media_1_1mp4_1_1SampleEncryption-members.html +++ b/docs/d7/d44/structshaka_1_1media_1_1mp4_1_1SampleEncryption-members.html @@ -118,7 +118,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d46/classshaka_1_1media_1_1WebMListParser-members.html b/docs/d7/d46/classshaka_1_1media_1_1WebMListParser-members.html index 8b1ebbcc09..37d2e03bc6 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 d62ab7cbbf..8a879f786b 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 f40575ba96..c1bb553db6 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 95380e0eee..80e65b6a9e 100644 --- a/docs/d7/d6d/classshaka_1_1media_1_1MediaSample.html +++ b/docs/d7/d6d/classshaka_1_1media_1_1MediaSample.html @@ -417,7 +417,7 @@ class base::RefCountedThre diff --git a/docs/d7/d75/structshaka_1_1media_1_1mp4_1_1MediaHeader-members.html b/docs/d7/d75/structshaka_1_1media_1_1mp4_1_1MediaHeader-members.html index 9395d4e7ef..29d2f6fd37 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 b6de1ac0a7..1ca463a8be 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 42e61e60b9..ba0fab0fd4 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 6b10afb5cc..f987486e00 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 605d6a36d9..bc575c5f7d 100644 --- a/docs/d7/d87/video__stream__info_8h_source.html +++ b/docs/d7/d87/video__stream__info_8h_source.html @@ -171,7 +171,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d9c/structshaka_1_1media_1_1H265SliceHeader_1_1LongTermPicsInfo.html b/docs/d7/d9c/structshaka_1_1media_1_1H265SliceHeader_1_1LongTermPicsInfo.html index c922c9da52..5c26b74d79 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 a71eeac989..5752c4c38c 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 606a42cd2a..eda0257736 100644 --- a/docs/d7/da4/track__run__iterator_8h_source.html +++ b/docs/d7/da4/track__run__iterator_8h_source.html @@ -175,27 +175,27 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
126 
127 #endif // MEDIA_FORMATS_MP4_TRACK_RUN_ITERATOR_H_
-
const VideoSampleEntry & video_description() const
Only valid if is_video() is true.
+
const VideoSampleEntry & video_description() const
Only valid if is_video() is true.
- - + + - + -
std::unique_ptr< DecryptConfig > GetDecryptConfig()
+
std::unique_ptr< DecryptConfig > GetDecryptConfig()
-
const AudioSampleEntry & audio_description() const
Only valid if is_audio() is true.
- - +
const AudioSampleEntry & audio_description() const
Only valid if is_audio() is true.
+ + - -
bool CacheAuxInfo(const uint8_t *buf, int size)
+ +
bool CacheAuxInfo(const uint8_t *buf, int size)
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 460d4ca283..e4533d1cde 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 2585 of file box_definitions.cc.

+

Definition at line 2591 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 ba17dc3f54..749fae021f 100644 --- a/docs/d7/db0/mpd__writer_8h_source.html +++ b/docs/d7/db0/mpd__writer_8h_source.html @@ -183,7 +183,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/db7/structshaka_1_1media_1_1mp4_1_1SampleToChunk-members.html b/docs/d7/db7/structshaka_1_1media_1_1mp4_1_1SampleToChunk-members.html index 352ba04eb0..652f8bd8eb 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 70df2c3b27..fb728f3079 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 1869 of file box_definitions.cc.

+

Definition at line 1875 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 0dbcd5e4d7..64830cb753 100644 --- a/docs/d7/dc6/byte__queue_8h_source.html +++ b/docs/d7/dc6/byte__queue_8h_source.html @@ -146,7 +146,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/dd0/mpd__notifier__util_8h_source.html b/docs/d7/dd0/mpd__notifier__util_8h_source.html index d7c839fa00..6701345026 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 289846b2a5..dd90e8465a 100644 --- a/docs/d7/dd4/request__signer_8h_source.html +++ b/docs/d7/dd4/request__signer_8h_source.html @@ -179,7 +179,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/dd5/classshaka_1_1media_1_1mp4_1_1MP4MediaParser.html b/docs/d7/dd5/classshaka_1_1media_1_1mp4_1_1MP4MediaParser.html index 9cda76cc59..5af6f9eb8d 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 4923d08711..91e48f0685 100644 --- a/docs/d7/dd6/key__source_8cc_source.html +++ b/docs/d7/dd6/key__source_8cc_source.html @@ -150,7 +150,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 b002c22424..0aa3c38ca3 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 5f7882616c..c8bece9aae 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 da980ab6a3..b1ffff184c 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 8a8ef759ef..56ca9c6106 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 3b47143273..0f47ac828b 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 2bccaff44f..338934d528 100644 --- a/docs/d7/dee/mpd__generator_8cc_source.html +++ b/docs/d7/dee/mpd__generator_8cc_source.html @@ -231,7 +231,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/def/mp4__media__parser_8cc_source.html b/docs/d7/def/mp4__media__parser_8cc_source.html index 747dfba88c..57fb6f55c8 100644 --- a/docs/d7/def/mp4__media__parser_8cc_source.html +++ b/docs/d7/def/mp4__media__parser_8cc_source.html @@ -358,7 +358,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
269  VLOG(2) << "Skipping top-level box: " << FourCCToString(reader->type());
270  }
271 
-
272  queue_.Pop(reader->size());
+
272  queue_.Pop(static_cast<int>(reader->size()));
273  return !(*err);
274 }
275 
@@ -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 e99b22255f..cabe177826 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 2d87cd5830..3c5134f93a 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 a2948695ad..2c94e03bdc 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 0625fd1269..6854065795 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 dff0f723e9..56ee8e18ed 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 afe745377a..c70603c576 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 7a90cb69c7..9a56cf880f 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 00bdb5ae4e..db39811865 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 d8c50fa707..e11ddeb150 100644 --- a/docs/d8/d13/classshaka_1_1media_1_1BitReader-members.html +++ b/docs/d8/d13/classshaka_1_1media_1_1BitReader-members.html @@ -93,19 +93,19 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');

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

- - - - - - - - + + + + + + + +
bit_position() const shaka::media::BitReaderinline
BitReader(const uint8_t *data, off_t size)shaka::media::BitReader
bits_available() const shaka::media::BitReaderinline
ReadBits(int num_bits, T *out)shaka::media::BitReaderinline
ReadBits(int num_bits, bool *out) (defined in shaka::media::BitReader)shaka::media::BitReaderinline
SkipBits(int num_bits)shaka::media::BitReader
SkipBitsConditional(bool condition, int num_bits)shaka::media::BitReaderinline
SkipBytes(int num_bytes)shaka::media::BitReader
bit_position() const shaka::media::BitReaderinline
BitReader(const uint8_t *data, size_t size)shaka::media::BitReader
bits_available() const shaka::media::BitReaderinline
ReadBits(size_t num_bits, T *out)shaka::media::BitReaderinline
ReadBits(size_t num_bits, bool *out) (defined in shaka::media::BitReader)shaka::media::BitReaderinline
SkipBits(size_t num_bits)shaka::media::BitReader
SkipBitsConditional(bool condition, size_t num_bits)shaka::media::BitReaderinline
SkipBytes(size_t 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 fedc80a21c..68170735bb 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 ca05e9ff61..885bd5df32 100644 --- a/docs/d8/d16/structshaka_1_1media_1_1MuxerOptions-members.html +++ b/docs/d8/d16/structshaka_1_1media_1_1MuxerOptions-members.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d19/bandwidth__estimator_8h_source.html b/docs/d8/d19/bandwidth__estimator_8h_source.html index c5e3cce327..efb5381868 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 53e0a33891..18e51a57f3 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 1831 of file box_definitions.cc.

+

Definition at line 1837 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 7e405fda3d..aca966be7e 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 06e9c181da..088f42ca93 100644 --- a/docs/d8/d28/es__parser__h265_8h_source.html +++ b/docs/d8/d28/es__parser__h265_8h_source.html @@ -153,7 +153,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d33/webm__content__encodings__client_8h_source.html b/docs/d8/d33/webm__content__encodings__client_8h_source.html index 73549d2292..503141285a 100644 --- a/docs/d8/d33/webm__content__encodings__client_8h_source.html +++ b/docs/d8/d33/webm__content__encodings__client_8h_source.html @@ -139,7 +139,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d3e/classshaka_1_1media_1_1StreamDescriptorCompareFn.html b/docs/d8/d3e/classshaka_1_1media_1_1StreamDescriptorCompareFn.html index 19c8348285..4bd0757275 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 823ad4598d..fe15ecd6e6 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 80f5e7cb73..4fb03a9c29 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 1768 of file box_definitions.cc.

+

Definition at line 1774 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 fa463fdf55..d4bb2ec719 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 5cb76cc6c8..3a0ed36702 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 db4fd2e6b0..4fba552ba5 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 2022 of file box_definitions.cc.

+

Definition at line 2028 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 56fdd3e10d..12ddefbfd8 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 b980f83449..071283138e 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 32720ddf8c..d47632553d 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 2319d0c262..5373d24218 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 9b172f32a2..b9fcbeea8a 100644 --- a/docs/d8/d8e/classshaka_1_1AdaptationSet.html +++ b/docs/d8/d8e/classshaka_1_1AdaptationSet.html @@ -574,7 +574,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 c380adc555..09caee8835 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 430415d1d3..018a22b5ec 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 9f4f6e304d..fa3ff4fbf9 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 abb2deed2f..9d78b1069b 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 4494f8f911..10e74d616f 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 e04a68eec0..0b34ccb30c 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 ea5683789d..be7555646b 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 2e2b662967..8900eaa05e 100644 --- a/docs/d8/d9a/fragmenter_8cc_source.html +++ b/docs/d8/d9a/fragmenter_8cc_source.html @@ -149,158 +149,160 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
60  LOG(WARNING) << "MP4 samples do not support side data. Side data ignored.";
61 
62  // Fill in sample parameters. It will be optimized later.
-
63  traf_->runs[0].sample_sizes.push_back(sample->data_size());
-
64  traf_->runs[0].sample_durations.push_back(sample->duration());
-
65  traf_->runs[0].sample_flags.push_back(
-
66  sample->is_key_frame() ? 0 : TrackFragmentHeader::kNonKeySampleMask);
-
67 
-
68  data_->AppendArray(sample->data(), sample->data_size());
-
69  fragment_duration_ += sample->duration();
-
70 
-
71  const int64_t pts = sample->pts();
-
72  const int64_t dts = sample->dts();
-
73 
-
74  const int64_t timestamp = use_decoding_timestamp_in_timeline_ ? dts : pts;
-
75  // Set |earliest_presentation_time_| to |timestamp| if |timestamp| is smaller
-
76  // or if it is not yet initialized (kInvalidTime > timestamp is always true).
-
77  if (earliest_presentation_time_ > timestamp)
-
78  earliest_presentation_time_ = timestamp;
-
79 
-
80  traf_->runs[0].sample_composition_time_offsets.push_back(pts - dts);
-
81  if (pts != dts)
-
82  traf_->runs[0].flags |= TrackFragmentRun::kSampleCompTimeOffsetsPresentMask;
-
83 
-
84  if (sample->is_key_frame()) {
-
85  if (first_sap_time_ == kInvalidTime)
-
86  first_sap_time_ = pts;
-
87  }
-
88  return Status::OK;
-
89 }
-
90 
-
91 Status Fragmenter::InitializeFragment(int64_t first_sample_dts) {
-
92  fragment_initialized_ = true;
-
93  fragment_finalized_ = false;
-
94  traf_->decode_time.decode_time = first_sample_dts;
-
95  traf_->runs.clear();
-
96  traf_->runs.resize(1);
-
97  traf_->runs[0].flags = TrackFragmentRun::kDataOffsetPresentMask;
-
98  traf_->sample_group_descriptions.clear();
-
99  traf_->sample_to_groups.clear();
-
100  traf_->header.sample_description_index = 1; // 1-based.
-
101  traf_->header.flags = TrackFragmentHeader::kDefaultBaseIsMoofMask |
-
102  TrackFragmentHeader::kSampleDescriptionIndexPresentMask;
-
103  fragment_duration_ = 0;
-
104  earliest_presentation_time_ = kInvalidTime;
-
105  first_sap_time_ = kInvalidTime;
-
106  data_.reset(new BufferWriter());
-
107  return Status::OK;
-
108 }
-
109 
- -
111  // Optimize trun box.
-
112  traf_->runs[0].sample_count = traf_->runs[0].sample_sizes.size();
-
113  if (OptimizeSampleEntries(&traf_->runs[0].sample_durations,
-
114  &traf_->header.default_sample_duration)) {
-
115  traf_->header.flags |=
-
116  TrackFragmentHeader::kDefaultSampleDurationPresentMask;
-
117  } else {
-
118  traf_->runs[0].flags |= TrackFragmentRun::kSampleDurationPresentMask;
-
119  }
-
120  if (OptimizeSampleEntries(&traf_->runs[0].sample_sizes,
-
121  &traf_->header.default_sample_size)) {
-
122  traf_->header.flags |= TrackFragmentHeader::kDefaultSampleSizePresentMask;
-
123  } else {
-
124  traf_->runs[0].flags |= TrackFragmentRun::kSampleSizePresentMask;
-
125  }
-
126  if (OptimizeSampleEntries(&traf_->runs[0].sample_flags,
-
127  &traf_->header.default_sample_flags)) {
-
128  traf_->header.flags |= TrackFragmentHeader::kDefaultSampleFlagsPresentMask;
-
129  } else {
-
130  traf_->runs[0].flags |= TrackFragmentRun::kSampleFlagsPresentMask;
-
131  }
-
132 
-
133  // Add SampleToGroup boxes. A SampleToGroup box with grouping type of 'roll'
-
134  // needs to be added if there is seek preroll, referencing sample group
-
135  // description in track level; Also need to add SampleToGroup boxes
-
136  // correponding to every SampleGroupDescription boxes, referencing sample
-
137  // group description in fragment level.
-
138  DCHECK_EQ(traf_->sample_to_groups.size(), 0u);
-
139  if (seek_preroll_ > 0) {
-
140  traf_->sample_to_groups.resize(traf_->sample_to_groups.size() + 1);
-
141  SampleToGroup& sample_to_group = traf_->sample_to_groups.back();
-
142  sample_to_group.grouping_type = FOURCC_roll;
-
143 
-
144  sample_to_group.entries.resize(1);
-
145  SampleToGroupEntry& sample_to_group_entry = sample_to_group.entries.back();
-
146  sample_to_group_entry.sample_count = traf_->runs[0].sample_count;
-
147  sample_to_group_entry.group_description_index =
-
148  SampleToGroupEntry::kTrackGroupDescriptionIndexBase + 1;
-
149  }
-
150  for (const auto& sample_group_description :
-
151  traf_->sample_group_descriptions) {
-
152  traf_->sample_to_groups.resize(traf_->sample_to_groups.size() + 1);
-
153  SampleToGroup& sample_to_group = traf_->sample_to_groups.back();
-
154  sample_to_group.grouping_type = sample_group_description.grouping_type;
-
155 
-
156  sample_to_group.entries.resize(1);
-
157  SampleToGroupEntry& sample_to_group_entry = sample_to_group.entries.back();
-
158  sample_to_group_entry.sample_count = traf_->runs[0].sample_count;
-
159  sample_to_group_entry.group_description_index =
-
160  SampleToGroupEntry::kTrackFragmentGroupDescriptionIndexBase + 1;
-
161  }
-
162 
-
163  fragment_finalized_ = true;
-
164  fragment_initialized_ = false;
-
165 }
-
166 
- -
168  // NOTE: Daisy chain is not supported currently.
-
169  reference->reference_type = false;
-
170  reference->subsegment_duration = fragment_duration_;
-
171  reference->starts_with_sap = StartsWithSAP();
-
172  if (kInvalidTime == first_sap_time_) {
-
173  reference->sap_type = SegmentReference::TypeUnknown;
-
174  reference->sap_delta_time = 0;
-
175  } else {
-
176  reference->sap_type = SegmentReference::Type1;
-
177  reference->sap_delta_time = first_sap_time_ - earliest_presentation_time_;
-
178  }
-
179  reference->earliest_presentation_time = earliest_presentation_time_;
-
180 }
-
181 
-
182 bool Fragmenter::StartsWithSAP() {
-
183  DCHECK(!traf_->runs.empty());
-
184  uint32_t start_sample_flag;
-
185  if (traf_->runs[0].flags & TrackFragmentRun::kSampleFlagsPresentMask) {
-
186  DCHECK(!traf_->runs[0].sample_flags.empty());
-
187  start_sample_flag = traf_->runs[0].sample_flags[0];
-
188  } else {
-
189  DCHECK(traf_->header.flags &
-
190  TrackFragmentHeader::kDefaultSampleFlagsPresentMask);
-
191  start_sample_flag = traf_->header.default_sample_flags;
-
192  }
-
193  return (start_sample_flag & TrackFragmentHeader::kNonKeySampleMask) == 0;
-
194 }
-
195 
-
196 } // namespace mp4
-
197 } // namespace media
-
198 } // namespace shaka
+
63  traf_->runs[0].sample_sizes.push_back(
+
64  static_cast<uint32_t>(sample->data_size()));
+
65  traf_->runs[0].sample_durations.push_back(sample->duration());
+
66  traf_->runs[0].sample_flags.push_back(
+
67  sample->is_key_frame() ? 0 : TrackFragmentHeader::kNonKeySampleMask);
+
68 
+
69  data_->AppendArray(sample->data(), sample->data_size());
+
70  fragment_duration_ += sample->duration();
+
71 
+
72  const int64_t pts = sample->pts();
+
73  const int64_t dts = sample->dts();
+
74 
+
75  const int64_t timestamp = use_decoding_timestamp_in_timeline_ ? dts : pts;
+
76  // Set |earliest_presentation_time_| to |timestamp| if |timestamp| is smaller
+
77  // or if it is not yet initialized (kInvalidTime > timestamp is always true).
+
78  if (earliest_presentation_time_ > timestamp)
+
79  earliest_presentation_time_ = timestamp;
+
80 
+
81  traf_->runs[0].sample_composition_time_offsets.push_back(pts - dts);
+
82  if (pts != dts)
+
83  traf_->runs[0].flags |= TrackFragmentRun::kSampleCompTimeOffsetsPresentMask;
+
84 
+
85  if (sample->is_key_frame()) {
+
86  if (first_sap_time_ == kInvalidTime)
+
87  first_sap_time_ = pts;
+
88  }
+
89  return Status::OK;
+
90 }
+
91 
+
92 Status Fragmenter::InitializeFragment(int64_t first_sample_dts) {
+
93  fragment_initialized_ = true;
+
94  fragment_finalized_ = false;
+
95  traf_->decode_time.decode_time = first_sample_dts;
+
96  traf_->runs.clear();
+
97  traf_->runs.resize(1);
+
98  traf_->runs[0].flags = TrackFragmentRun::kDataOffsetPresentMask;
+
99  traf_->sample_group_descriptions.clear();
+
100  traf_->sample_to_groups.clear();
+
101  traf_->header.sample_description_index = 1; // 1-based.
+
102  traf_->header.flags = TrackFragmentHeader::kDefaultBaseIsMoofMask |
+
103  TrackFragmentHeader::kSampleDescriptionIndexPresentMask;
+
104  fragment_duration_ = 0;
+
105  earliest_presentation_time_ = kInvalidTime;
+
106  first_sap_time_ = kInvalidTime;
+
107  data_.reset(new BufferWriter());
+
108  return Status::OK;
+
109 }
+
110 
+ +
112  // Optimize trun box.
+
113  traf_->runs[0].sample_count =
+
114  static_cast<uint32_t>(traf_->runs[0].sample_sizes.size());
+
115  if (OptimizeSampleEntries(&traf_->runs[0].sample_durations,
+
116  &traf_->header.default_sample_duration)) {
+
117  traf_->header.flags |=
+
118  TrackFragmentHeader::kDefaultSampleDurationPresentMask;
+
119  } else {
+
120  traf_->runs[0].flags |= TrackFragmentRun::kSampleDurationPresentMask;
+
121  }
+
122  if (OptimizeSampleEntries(&traf_->runs[0].sample_sizes,
+
123  &traf_->header.default_sample_size)) {
+
124  traf_->header.flags |= TrackFragmentHeader::kDefaultSampleSizePresentMask;
+
125  } else {
+
126  traf_->runs[0].flags |= TrackFragmentRun::kSampleSizePresentMask;
+
127  }
+
128  if (OptimizeSampleEntries(&traf_->runs[0].sample_flags,
+
129  &traf_->header.default_sample_flags)) {
+
130  traf_->header.flags |= TrackFragmentHeader::kDefaultSampleFlagsPresentMask;
+
131  } else {
+
132  traf_->runs[0].flags |= TrackFragmentRun::kSampleFlagsPresentMask;
+
133  }
+
134 
+
135  // Add SampleToGroup boxes. A SampleToGroup box with grouping type of 'roll'
+
136  // needs to be added if there is seek preroll, referencing sample group
+
137  // description in track level; Also need to add SampleToGroup boxes
+
138  // correponding to every SampleGroupDescription boxes, referencing sample
+
139  // group description in fragment level.
+
140  DCHECK_EQ(traf_->sample_to_groups.size(), 0u);
+
141  if (seek_preroll_ > 0) {
+
142  traf_->sample_to_groups.resize(traf_->sample_to_groups.size() + 1);
+
143  SampleToGroup& sample_to_group = traf_->sample_to_groups.back();
+
144  sample_to_group.grouping_type = FOURCC_roll;
+
145 
+
146  sample_to_group.entries.resize(1);
+
147  SampleToGroupEntry& sample_to_group_entry = sample_to_group.entries.back();
+
148  sample_to_group_entry.sample_count = traf_->runs[0].sample_count;
+
149  sample_to_group_entry.group_description_index =
+
150  SampleToGroupEntry::kTrackGroupDescriptionIndexBase + 1;
+
151  }
+
152  for (const auto& sample_group_description :
+
153  traf_->sample_group_descriptions) {
+
154  traf_->sample_to_groups.resize(traf_->sample_to_groups.size() + 1);
+
155  SampleToGroup& sample_to_group = traf_->sample_to_groups.back();
+
156  sample_to_group.grouping_type = sample_group_description.grouping_type;
+
157 
+
158  sample_to_group.entries.resize(1);
+
159  SampleToGroupEntry& sample_to_group_entry = sample_to_group.entries.back();
+
160  sample_to_group_entry.sample_count = traf_->runs[0].sample_count;
+
161  sample_to_group_entry.group_description_index =
+
162  SampleToGroupEntry::kTrackFragmentGroupDescriptionIndexBase + 1;
+
163  }
+
164 
+
165  fragment_finalized_ = true;
+
166  fragment_initialized_ = false;
+
167 }
+
168 
+ +
170  // NOTE: Daisy chain is not supported currently.
+
171  reference->reference_type = false;
+
172  reference->subsegment_duration = fragment_duration_;
+
173  reference->starts_with_sap = StartsWithSAP();
+
174  if (kInvalidTime == first_sap_time_) {
+
175  reference->sap_type = SegmentReference::TypeUnknown;
+
176  reference->sap_delta_time = 0;
+
177  } else {
+
178  reference->sap_type = SegmentReference::Type1;
+
179  reference->sap_delta_time = first_sap_time_ - earliest_presentation_time_;
+
180  }
+
181  reference->earliest_presentation_time = earliest_presentation_time_;
+
182 }
+
183 
+
184 bool Fragmenter::StartsWithSAP() {
+
185  DCHECK(!traf_->runs.empty());
+
186  uint32_t start_sample_flag;
+
187  if (traf_->runs[0].flags & TrackFragmentRun::kSampleFlagsPresentMask) {
+
188  DCHECK(!traf_->runs[0].sample_flags.empty());
+
189  start_sample_flag = traf_->runs[0].sample_flags[0];
+
190  } else {
+
191  DCHECK(traf_->header.flags &
+
192  TrackFragmentHeader::kDefaultSampleFlagsPresentMask);
+
193  start_sample_flag = traf_->header.default_sample_flags;
+
194  }
+
195  return (start_sample_flag & TrackFragmentHeader::kNonKeySampleMask) == 0;
+
196 }
+
197 
+
198 } // namespace mp4
+
199 } // namespace media
+
200 } // namespace shaka
Fragmenter(scoped_refptr< StreamInfo > info, TrackFragment *traf)
Definition: fragmenter.cc:32
virtual Status AddSample(scoped_refptr< MediaSample > sample)
Definition: fragmenter.cc:46
-
virtual Status InitializeFragment(int64_t first_sample_dts)
Definition: fragmenter.cc:91
+
virtual Status InitializeFragment(int64_t first_sample_dts)
Definition: fragmenter.cc:92
-
virtual void FinalizeFragment()
Finalize and optimize the fragment.
Definition: fragmenter.cc:110
-
void GenerateSegmentReference(SegmentReference *reference)
Fill reference with current fragment information.
Definition: fragmenter.cc:167
+
virtual void FinalizeFragment()
Finalize and optimize the fragment.
Definition: fragmenter.cc:111
+
void GenerateSegmentReference(SegmentReference *reference)
Fill reference with current fragment information.
Definition: fragmenter.cc:169
bool OptimizeSampleEntries(std::vector< T > *entries, T *default_value)
Definition: fragmenter.h:101
diff --git a/docs/d8/d9c/webm__tracks__parser_8cc_source.html b/docs/d8/d9c/webm__tracks__parser_8cc_source.html index 2013eb6baf..3bae6032cb 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 10398a05a7..d33942f844 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 51982cc517..5b9461f1a4 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 dc2a464ac4..e8f9fef0bf 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 e24413e6af..00e84683e1 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 22963968c9..ff3bb52535 100644 --- a/docs/d8/daa/stream__info_8h_source.html +++ b/docs/d8/daa/stream__info_8h_source.html @@ -205,7 +205,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/daf/namespaceshaka.html b/docs/d8/daf/namespaceshaka.html index b5aa78e1a4..bb89402363 100644 --- a/docs/d8/daf/namespaceshaka.html +++ b/docs/d8/daf/namespaceshaka.html @@ -633,7 +633,7 @@ const char kPsshElementNam diff --git a/docs/d8/db7/classshaka_1_1media_1_1mp4_1_1MultiSegmentSegmenter.html b/docs/d8/db7/classshaka_1_1media_1_1mp4_1_1MultiSegmentSegmenter.html index 767ac9dcf4..f2d8f893d8 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 0dc731635e..277334aaff 100644 --- a/docs/d8/db9/classshaka_1_1media_1_1WebMContentEncodingsClient-members.html +++ b/docs/d8/db9/classshaka_1_1media_1_1WebMContentEncodingsClient-members.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/dc2/structshaka_1_1media_1_1mp2t_1_1EsParserH26x_1_1VideoSliceInfo.html b/docs/d8/dc2/structshaka_1_1media_1_1mp2t_1_1EsParserH26x_1_1VideoSliceInfo.html index 08a7ead20b..449371e1bb 100644 --- a/docs/d8/dc2/structshaka_1_1media_1_1mp2t_1_1EsParserH26x_1_1VideoSliceInfo.html +++ b/docs/d8/dc2/structshaka_1_1media_1_1mp2t_1_1EsParserH26x_1_1VideoSliceInfo.html @@ -118,7 +118,7 @@ int frame_num = 0 diff --git a/docs/d8/dc3/structshaka_1_1media_1_1mp4_1_1CueTimeBox.html b/docs/d8/dc3/structshaka_1_1media_1_1mp4_1_1CueTimeBox.html index 1787582874..c050930376 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 2615 of file box_definitions.cc.

+

Definition at line 2621 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 7c4ff9cea9..6280ab85ce 100644 --- a/docs/d8/dca/ts__writer_8h_source.html +++ b/docs/d8/dca/ts__writer_8h_source.html @@ -151,18 +151,18 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
80 
81 #endif // PACKAGER_MEDIA_FORMATS_MP2T_TS_WRITER_H_
Abstract class holds stream information.
Definition: stream_info.h:53
-
virtual bool NewSegment(const std::string &file_name)
Definition: ts_writer.cc:199
-
virtual bool AddPesPacket(std::unique_ptr< PesPacket > pes_packet)
Definition: ts_writer.cc:238
+
virtual bool NewSegment(const std::string &file_name)
Definition: ts_writer.cc:198
+
virtual bool AddPesPacket(std::unique_ptr< PesPacket > pes_packet)
Definition: ts_writer.cc:237
-
void SetProgramMapTableWriterForTesting(std::unique_ptr< ProgramMapTableWriter > table_writer)
Only for testing.
Definition: ts_writer.cc:250
+
void SetProgramMapTableWriterForTesting(std::unique_ptr< ProgramMapTableWriter > table_writer)
Only for testing.
Definition: ts_writer.cc:249
-
virtual bool FinalizeSegment()
Definition: ts_writer.cc:234
-
virtual bool Initialize(const StreamInfo &stream_info)
Definition: ts_writer.cc:165
-
virtual void SignalEncrypted()
Signals the writer that the rest of the segments are encrypted.
Definition: ts_writer.cc:230
+
virtual bool FinalizeSegment()
Definition: ts_writer.cc:233
+
virtual bool Initialize(const StreamInfo &stream_info)
Definition: ts_writer.cc:164
+
virtual void SignalEncrypted()
Signals the writer that the rest of the segments are encrypted.
Definition: ts_writer.cc:229
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 30ee737259..cf58ad1679 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 41f6aad1d1..783c4025d5 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 c80b6a5643..1d0ccc01c7 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 dbe81a4a94..c9225dfa0f 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 edb07de3a5..34c81f98f6 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 59720e1b9c..9efc04a14e 100644 --- a/docs/d8/de6/webm__crypto__helpers_8h_source.html +++ b/docs/d8/de6/webm__crypto__helpers_8h_source.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
23 bool WebMCreateDecryptConfig(const uint8_t* data,
24  int data_size,
25  const uint8_t* key_id,
-
26  int key_id_size,
+
26  size_t key_id_size,
27  std::unique_ptr<DecryptConfig>* decrypt_config,
28  int* data_offset);
29 
@@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/deb/classshaka_1_1media_1_1mp2t_1_1EsParser-members.html b/docs/d8/deb/classshaka_1_1media_1_1mp2t_1_1EsParser-members.html index 1e2ca9a2df..d58bcce5f1 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 c8b7311587..c93a46949f 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 e676a2bbd4..d5c57a06c8 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 9a673c7dc2..b5e1d55802 100644 --- a/docs/d8/df0/webm_2single__segment__segmenter_8cc_source.html +++ b/docs/d8/df0/webm_2single__segment__segmenter_8cc_source.html @@ -181,7 +181,7 @@ 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 38c82f3be0..624757767d 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 5696a4e9bc..332ecbe19e 100644 --- a/docs/d8/dfa/nal__unit__to__byte__stream__converter_8h_source.html +++ b/docs/d8/dfa/nal__unit__to__byte__stream__converter_8h_source.html @@ -156,7 +156,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d00/structshaka_1_1media_1_1OnMediaEndParameters-members.html b/docs/d9/d00/structshaka_1_1media_1_1OnMediaEndParameters-members.html index 00352ce4ae..3f93f8c2f7 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 542c4c5981..ead08b33cb 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 97a7a4ac65..5d48028845 100644 --- a/docs/d9/d08/mock__mpd__builder_8h_source.html +++ b/docs/d9/d08/mock__mpd__builder_8h_source.html @@ -175,7 +175,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d0b/classshaka_1_1media_1_1HlsNotifyMuxerListener-members.html b/docs/d9/d0b/classshaka_1_1media_1_1HlsNotifyMuxerListener-members.html index d0b4179ab4..3412486ad2 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 8384077411..d96d40d013 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 e61fa2b540..81c1913f6a 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 4d4a1d6d1b..88810f1071 100644 --- a/docs/d9/d15/key__rotation__fragmenter_8cc_source.html +++ b/docs/d9/d15/key__rotation__fragmenter_8cc_source.html @@ -236,7 +236,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
EncryptingFragmenter generates MP4 fragments with sample encrypted.
- +
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:30
Status PrepareFragmentForEncryption(bool enable_encryption) override
@@ -244,7 +244,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d1f/structshaka_1_1media_1_1mp4_1_1MovieFragment.html b/docs/d9/d1f/structshaka_1_1media_1_1mp4_1_1MovieFragment.html index a06677d82a..ec09af05fa 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 2498 of file box_definitions.cc.

+

Definition at line 2504 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 90908b68be..5598f6bd66 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 cf4c7db74f..e7809187f3 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 @@ -444,7 +444,7 @@ void set_progress_target diff --git a/docs/d9/d36/classshaka_1_1media_1_1TracksBuilder-members.html b/docs/d9/d36/classshaka_1_1media_1_1TracksBuilder-members.html index a9a012e8c7..a29c179b76 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 c6c4dae081..86f1f96848 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 b35dcd5ffb..f414ab74a0 100644 --- a/docs/d9/d3b/webm__content__encodings_8h_source.html +++ b/docs/d9/d3b/webm__content__encodings_8h_source.html @@ -178,7 +178,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d3c/structshaka_1_1media_1_1mp4_1_1VTTEmptyCueBox.html b/docs/d9/d3c/structshaka_1_1media_1_1mp4_1_1VTTEmptyCueBox.html index 7c2166c46a..8abbb0923f 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 2690 of file box_definitions.cc.

+

Definition at line 2696 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 00833a8791..674944a377 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 2599 of file box_definitions.cc.

+

Definition at line 2605 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 8413b71127..96b2e2d60d 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 f4bac1088f..38b2ebb7d6 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 23ddc62775..a91f65dddd 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 b455dffaf6..10dae3c689 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 c114934403..ed891540f9 100644 --- a/docs/d9/d76/ts__muxer_8cc_source.html +++ b/docs/d9/d76/ts__muxer_8cc_source.html @@ -156,7 +156,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 24d613b6f6..68f18542ef 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 e17feaff53..b841e46ba9 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 2b5c786171..855f5259b5 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 1e233fb00c..43a5eaeeb0 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 7d8302da0a..4b95f14bd4 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 0c8b43731e..51987ddac5 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 c991642ffd..901cac451d 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 d626a1b66a..112a697982 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 637f33c921..24f50eb5c2 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 5ac7e4dce5..a18adc2641 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 bbf6f27d0b..ad8b05f5c5 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 ec07a38edb..60259e234b 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 3c78907c3a..f491c32579 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 5282ffc34a..e1229d29fd 100644 --- a/docs/d9/db9/muxer_8cc_source.html +++ b/docs/d9/db9/muxer_8cc_source.html @@ -226,7 +226,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 f12f6eac95..fe48dd1ada 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 51454d59d3..0482c9e4da 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 7b8f309e71..e0ec117917 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 46dd5a76ba..012c5c8a21 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 3674b85c27..84972b8f85 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 e74f54d54e..41351a51d0 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 9751ae8d49..09e6814d6b 100644 --- a/docs/d9/de6/classshaka_1_1media_1_1LocalFile.html +++ b/docs/d9/de6/classshaka_1_1media_1_1LocalFile.html @@ -502,7 +502,7 @@ bool  diff --git a/docs/d9/dea/classshaka_1_1media_1_1FixedKeySource-members.html b/docs/d9/dea/classshaka_1_1media_1_1FixedKeySource-members.html index afa9e5b1ef..3cf76f69f3 100644 --- a/docs/d9/dea/classshaka_1_1media_1_1FixedKeySource-members.html +++ b/docs/d9/dea/classshaka_1_1media_1_1FixedKeySource-members.html @@ -118,7 +118,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/ded/aac__audio__specific__config_8cc_source.html b/docs/d9/ded/aac__audio__specific__config_8cc_source.html index 018df41e1e..611c95f367 100644 --- a/docs/d9/ded/aac__audio__specific__config_8cc_source.html +++ b/docs/d9/ded/aac__audio__specific__config_8cc_source.html @@ -358,7 +358,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/df8/structshaka_1_1media_1_1mp4_1_1TrackFragmentDecodeTime-members.html b/docs/d9/df8/structshaka_1_1media_1_1mp4_1_1TrackFragmentDecodeTime-members.html index 3658ffc7a9..e9ef8c976b 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 4bce29a843..5cfab72c05 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 10804fee1e..30fa8a2974 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 e93569a75b..682f283603 100644 --- a/docs/da/d04/audio__stream__info_8cc_source.html +++ b/docs/da/d04/audio__stream__info_8cc_source.html @@ -223,7 +223,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d10/classshaka_1_1media_1_1mp2t_1_1EsParser.html b/docs/da/d10/classshaka_1_1media_1_1mp2t_1_1EsParser.html index 3ce9369563..6150ba5ffc 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 dc45f78037..9bf917187a 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 a6a45e008f..fecf5743a6 100644 --- a/docs/da/d1c/classshaka_1_1media_1_1mp2t_1_1TsSection.html +++ b/docs/da/d1c/classshaka_1_1media_1_1mp2t_1_1TsSection.html @@ -141,7 +141,7 @@ virtual void Reset ()= diff --git a/docs/da/d1d/udp__options_8cc_source.html b/docs/da/d1d/udp__options_8cc_source.html index 9d2a19e9ac..4456b868c0 100644 --- a/docs/da/d1d/udp__options_8cc_source.html +++ b/docs/da/d1d/udp__options_8cc_source.html @@ -224,7 +224,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d22/key__rotation__fragmenter_8h_source.html b/docs/da/d22/key__rotation__fragmenter_8h_source.html index 847217a82e..8e4f530480 100644 --- a/docs/da/d22/key__rotation__fragmenter_8h_source.html +++ b/docs/da/d22/key__rotation__fragmenter_8h_source.html @@ -156,7 +156,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d23/classshaka_1_1media_1_1mp2t_1_1EsParserH26x.html b/docs/da/d23/classshaka_1_1media_1_1mp2t_1_1EsParserH26x.html index 9449fe042c..6d2a3e0356 100644 --- a/docs/da/d23/classshaka_1_1media_1_1mp2t_1_1EsParserH26x.html +++ b/docs/da/d23/classshaka_1_1media_1_1mp2t_1_1EsParserH26x.html @@ -164,7 +164,7 @@ const scoped_refptr
diff --git a/docs/da/d23/ts__muxer_8h_source.html b/docs/da/d23/ts__muxer_8h_source.html index 5f13193367..cdf9d5048c 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 646c867cd7..119eb92e59 100644 --- a/docs/da/d24/h265__parser_8h_source.html +++ b/docs/da/d24/h265__parser_8h_source.html @@ -311,7 +311,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
222  // Sturcture: |NALU Header | Slice Header | Slice Data |
223  // Size: |<- 16bits ->|<- header_bit_size ->|<- Rest of nalu ->|
224  // Note that this is not a field in the H.265 spec.
-
225  int header_bit_size = 0;
+
225  size_t header_bit_size = 0;
226 
227  bool first_slice_segment_in_pic_flag = false;
228  bool no_output_of_prior_pics_flag = false;
@@ -454,7 +454,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 135e8eeb21..fc2bd22aeb 100644 --- a/docs/da/d2a/text__stream__info_8h_source.html +++ b/docs/da/d2a/text__stream__info_8h_source.html @@ -136,7 +136,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d2d/classshaka_1_1media_1_1webm_1_1WebMMuxer-members.html b/docs/da/d2d/classshaka_1_1media_1_1webm_1_1WebMMuxer-members.html index 56bfeab800..9747b996bc 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 @@ -119,7 +119,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d3e/structshaka_1_1media_1_1mp4_1_1PixelAspectRatio-members.html b/docs/da/d3e/structshaka_1_1media_1_1mp4_1_1PixelAspectRatio-members.html index 46d4ac6cd0..86f21b1d40 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 ce9fee461d..d1a6320b73 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 0004ac5dc2..b135ae52e5 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 0631f46b98..be10583a0c 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 bf6af920c7..0176b5367c 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 2135 of file box_definitions.cc.

+

Definition at line 2141 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 654bcb1dd9..135bf5939e 100644 --- a/docs/da/d53/es__parser__h265_8cc_source.html +++ b/docs/da/d53/es__parser__h265_8cc_source.html @@ -259,7 +259,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d59/structshaka_1_1media_1_1mp4_1_1CompactSampleSize.html b/docs/da/d59/structshaka_1_1media_1_1mp4_1_1CompactSampleSize.html index c326a483a7..72e4eae48f 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 802 of file box_definitions.cc.

+

Definition at line 805 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 ebfdc3f723..7e79db264a 100644 --- a/docs/da/d5c/widevine__key__source_8h_source.html +++ b/docs/da/d5c/widevine__key__source_8h_source.html @@ -222,7 +222,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d5e/classshaka_1_1media_1_1H264VideoSliceHeaderParser-members.html b/docs/da/d5e/classshaka_1_1media_1_1H264VideoSliceHeaderParser-members.html index 421af884c4..81aa750e36 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 88ebca928c..8bbe5796a5 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 2d5fb1be5e..a5ab98567a 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 6fba9905b8..2841cc97c8 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 7358399ce3..fcbc07b094 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 9dfea71ca3..8b128f23a0 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 2563361eb9..04a834c1b8 100644 --- a/docs/da/d88/mp4__muxer_8cc_source.html +++ b/docs/da/d88/mp4__muxer_8cc_source.html @@ -190,7 +190,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
101 
102  moov->header.creation_time = IsoTimeNow();
103  moov->header.modification_time = IsoTimeNow();
-
104  moov->header.next_track_id = streams().size() + 1;
+
104  moov->header.next_track_id = static_cast<uint32_t>(streams().size()) + 1;
105 
106  moov->tracks.resize(streams().size());
107  moov->extends.tracks.resize(streams().size());
@@ -504,7 +504,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d8b/classshaka_1_1media_1_1WebMMediaParser-members.html b/docs/da/d8b/classshaka_1_1media_1_1WebMMediaParser-members.html index 0a2ba49759..841f1acb5e 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 430be9430f..f48285dc33 100644 --- a/docs/da/d8e/container__names_8cc_source.html +++ b/docs/da/d8e/container__names_8cc_source.html @@ -163,7 +163,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
74 
75 // Helper function to read up to 64 bits from a bit stream.
76 static uint64_t ReadBits(BitReader* reader, int num_bits) {
-
77  DCHECK_GE(reader->bits_available(), num_bits);
+
77  DCHECK_GE(static_cast<int>(reader->bits_available()), num_bits);
78  DCHECK((num_bits > 0) && (num_bits <= 64));
79  uint64_t value;
80  reader->ReadBits(num_bits, &value);
@@ -1312,7 +1312,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
1223  for (int i = 0; i < 4; ++i) {
1224  num_bits_to_read += 7;
1225  if (ReadBits(reader, 1) == 1) {
-
1226  if (reader->bits_available() < num_bits_to_read)
+
1226  if (static_cast<int>(reader->bits_available()) < num_bits_to_read)
1227  break;
1228  // prefix[] adds back the bits read individually.
1229  return ReadBits(reader, num_bits_to_read) | prefix[i];
@@ -1333,7 +1333,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
1244  for (int i = 0; i < 8; ++i) {
1245  num_bits_to_read += 7;
1246  if (ReadBits(reader, 1) == 1) {
-
1247  if (reader->bits_available() < num_bits_to_read)
+
1247  if (static_cast<int>(reader->bits_available()) < num_bits_to_read)
1248  break;
1249  return ReadBits(reader, num_bits_to_read);
1250  }
@@ -1357,7 +1357,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
1268 
1269  // Get the header size, and ensure there are enough bits to check.
1270  int header_size = GetVint(&reader);
-
1271  RCHECK(reader.bits_available() / 8 >= header_size);
+
1271  RCHECK(static_cast<int>(reader.bits_available()) / 8 >= header_size);
1272 
1273  // Loop through the header.
1274  while (reader.bits_available() > 0) {
@@ -1866,7 +1866,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d9b/structshaka_1_1media_1_1mp4_1_1CompositionOffset-members.html b/docs/da/d9b/structshaka_1_1media_1_1mp4_1_1CompositionOffset-members.html index ae4693cd42..36bd038811 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 5aeb9b24fc..270212713d 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 4ef2c1d58f..c986f9ed47 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 ecef3472e3..17e3dfa308 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 4a94495afb..ff2c55bb2a 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 b85449892e..f781f6a6c5 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 4a83dc738c..5492ecd247 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 1235 of file box_definitions.cc.

+

Definition at line 1240 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 24db5b2add..6d830d9c74 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 c35dd63f53..be06432324 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 565 of file box_definitions.cc.

+

Definition at line 568 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 ef4d0c2cdb..057b825ab4 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 86c383ab67..2c69ca6191 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 1218 of file box_definitions.cc.

+

Definition at line 1223 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 daa192a475..53a6f9cb55 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 52edaa2274..6ba0d5af42 100644 --- a/docs/da/dd1/fragmenter_8h_source.html +++ b/docs/da/dd1/fragmenter_8h_source.html @@ -195,17 +195,17 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
Fragmenter(scoped_refptr< StreamInfo > info, TrackFragment *traf)
Definition: fragmenter.cc:32
virtual Status AddSample(scoped_refptr< MediaSample > sample)
Definition: fragmenter.cc:46
-
virtual Status InitializeFragment(int64_t first_sample_dts)
Definition: fragmenter.cc:91
+
virtual Status InitializeFragment(int64_t first_sample_dts)
Definition: fragmenter.cc:92
-
virtual void FinalizeFragment()
Finalize and optimize the fragment.
Definition: fragmenter.cc:110
+
virtual void FinalizeFragment()
Finalize and optimize the fragment.
Definition: fragmenter.cc:111
-
void GenerateSegmentReference(SegmentReference *reference)
Fill reference with current fragment information.
Definition: fragmenter.cc:167
+
void GenerateSegmentReference(SegmentReference *reference)
Fill reference with current fragment information.
Definition: fragmenter.cc:169
bool OptimizeSampleEntries(std::vector< T > *entries, T *default_value)
Definition: fragmenter.h:101
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 053f9faa47..7ceba9d940 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 c4aa0bccd2..bd5569283a 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 636e4a7de1..dc793e7f70 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 5048752a6d..7773719945 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 e92210d14c..78be9fc616 100644 --- a/docs/da/ddd/classshaka_1_1media_1_1WidevineKeySource.html +++ b/docs/da/ddd/classshaka_1_1media_1_1WidevineKeySource.html @@ -552,7 +552,7 @@ static std::string  diff --git a/docs/da/ddf/structshaka_1_1media_1_1mp4_1_1SampleDescription-members.html b/docs/da/ddf/structshaka_1_1media_1_1mp4_1_1SampleDescription-members.html index 9ccc1862dd..cc5ea56298 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 474726040a..fb6e4a1b70 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 25813d6fed..76f2c41609 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 cffc04c12e..82ac5a6c91 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 73a3cf9772..816387378f 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 050d502bfe..df1b0a8afe 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 485 of file box_definitions.cc.

+

Definition at line 488 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 64153f76f0..1d46db9553 100644 --- a/docs/da/df0/classshaka_1_1media_1_1H264VideoSliceHeaderParser.html +++ b/docs/da/df0/classshaka_1_1media_1_1H264VideoSliceHeaderParser.html @@ -141,7 +141,7 @@ int64_t shaka::media::VideoSliceHeaderParser.

-

Definition at line 29 of file video_slice_header_parser.cc.

+

Definition at line 28 of file video_slice_header_parser.cc.

@@ -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 f2b9ebcc6a..4f76152aa2 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 bc12adde71..bb3d37c423 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 605 of file box_definitions.cc.

+

Definition at line 608 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 163aa45633..29d097f3bb 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 e2d2649d0c..939d8d0bc0 100644 --- a/docs/db/d05/structshaka_1_1media_1_1H265SliceHeader.html +++ b/docs/db/d05/structshaka_1_1media_1_1H265SliceHeader.html @@ -105,9 +105,9 @@ Public Attributes int used_by_curr_pic_lt = 0   - -int header_bit_size = 0 -  + +size_t header_bit_size = 0 +  bool first_slice_segment_in_pic_flag = false   @@ -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 e3f7fd0747..2e9946cc17 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 1430 of file box_definitions.cc.

+

Definition at line 1436 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 da7a0603b9..c0bcb6ef3d 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 87fca073d3..a32f14e5c9 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 e5fe3a435c..c0cba1ceb0 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 flagsImplements shaka::media::mp4::Box.

-

Definition at line 1965 of file box_definitions.cc.

+

Definition at line 1971 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 325b4d99fd..bc149845fe 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 @@ -185,7 +185,7 @@ FourCC protection_scheme diff --git a/docs/db/d31/h26x__byte__to__unit__stream__converter_8h_source.html b/docs/db/d31/h26x__byte__to__unit__stream__converter_8h_source.html index 215651d495..f78b7ae515 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 47ba46ef59..d24bdb4f2c 100644 --- a/docs/db/d31/track__run__iterator_8cc_source.html +++ b/docs/db/d31/track__run__iterator_8cc_source.html @@ -168,7 +168,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
79 static void PopulateSampleInfo(const TrackExtends& trex,
80  const TrackFragmentHeader& tfhd,
81  const TrackFragmentRun& trun,
-
82  const uint32_t i,
+
82  const size_t i,
83  SampleInfo* sample_info) {
84  if (i < trun.sample_sizes.size()) {
85  sample_info->size = trun.sample_sizes[i];
@@ -276,7 +276,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
187  int64_t run_start_dts = 0;
188 
189  uint32_t num_samples = sample_size.sample_count;
-
190  uint32_t num_chunks = chunk_offset_vector.size();
+
190  uint32_t num_chunks = static_cast<uint32_t>(chunk_offset_vector.size());
191 
192  // Check that total number of samples match.
193  DCHECK_EQ(num_samples, decoding_time.NumSamples());
@@ -499,234 +499,235 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
410 
411  tri.samples.resize(trun.sample_count);
412  for (size_t k = 0; k < trun.sample_count; k++) {
-
413  PopulateSampleInfo(*trex, traf.header, trun, k, &tri.samples[k]);
-
414  run_start_dts += tri.samples[k].duration;
-
415  }
-
416  runs_.push_back(tri);
-
417  sample_count_sum += trun.sample_count;
-
418  }
-
419  next_fragment_start_dts_[i] = run_start_dts;
-
420  }
-
421 
-
422  std::sort(runs_.begin(), runs_.end(), CompareMinTrackRunDataOffset());
-
423  run_itr_ = runs_.begin();
-
424  ResetRun();
-
425  return true;
-
426 }
-
427 
- -
429  ++run_itr_;
-
430  ResetRun();
-
431 }
-
432 
-
433 void TrackRunIterator::ResetRun() {
-
434  if (!IsRunValid())
-
435  return;
-
436  sample_dts_ = run_itr_->start_dts;
-
437  sample_offset_ = run_itr_->sample_start_offset;
-
438  sample_itr_ = run_itr_->samples.begin();
-
439 }
-
440 
- -
442  DCHECK(IsSampleValid());
-
443  sample_dts_ += sample_itr_->duration;
-
444  sample_offset_ += sample_itr_->size;
-
445  ++sample_itr_;
-
446 }
-
447 
-
448 // This implementation only indicates a need for caching if CENC auxiliary
-
449 // info is available in the stream.
- -
451  DCHECK(IsRunValid());
-
452  return is_encrypted() && aux_info_size() > 0 &&
-
453  run_itr_->sample_encryption_entries.size() == 0;
-
454 }
-
455 
-
456 // This implementation currently only caches CENC auxiliary info.
-
457 bool TrackRunIterator::CacheAuxInfo(const uint8_t* buf, int buf_size) {
-
458  RCHECK(AuxInfoNeedsToBeCached() && buf_size >= aux_info_size());
-
459 
-
460  std::vector<SampleEncryptionEntry>& sample_encryption_entries =
-
461  runs_[run_itr_ - runs_.begin()].sample_encryption_entries;
-
462  sample_encryption_entries.resize(run_itr_->samples.size());
-
463  int64_t pos = 0;
-
464  for (size_t i = 0; i < run_itr_->samples.size(); i++) {
-
465  int info_size = run_itr_->aux_info_default_size;
-
466  if (!info_size)
-
467  info_size = run_itr_->aux_info_sizes[i];
-
468 
-
469  BufferReader reader(buf + pos, info_size);
-
470  const bool has_subsamples =
-
471  info_size > track_encryption().default_per_sample_iv_size;
-
472  RCHECK(sample_encryption_entries[i].ParseFromBuffer(
-
473  track_encryption().default_per_sample_iv_size, has_subsamples,
-
474  &reader));
-
475  pos += info_size;
-
476  }
-
477 
-
478  return true;
-
479 }
-
480 
-
481 bool TrackRunIterator::IsRunValid() const { return run_itr_ != runs_.end(); }
-
482 
- -
484  return IsRunValid() && (sample_itr_ != run_itr_->samples.end());
-
485 }
-
486 
-
487 // Because tracks are in sorted order and auxiliary information is cached when
-
488 // returning samples, it is guaranteed that no data will be required before the
-
489 // lesser of the minimum data offset of this track and the next in sequence.
-
490 // (The stronger condition - that no data is required before the minimum data
-
491 // offset of this track alone - is not guaranteed, because the BMFF spec does
-
492 // not have any inter-run ordering restrictions.)
- -
494  int64_t offset = kInvalidOffset;
-
495 
-
496  if (IsSampleValid()) {
-
497  offset = std::min(offset, sample_offset_);
- -
499  offset = std::min(offset, aux_info_offset());
-
500  }
-
501  if (run_itr_ != runs_.end()) {
-
502  std::vector<TrackRunInfo>::const_iterator next_run = run_itr_ + 1;
-
503  if (next_run != runs_.end()) {
-
504  offset = std::min(offset, next_run->sample_start_offset);
-
505  if (next_run->aux_info_total_size)
-
506  offset = std::min(offset, next_run->aux_info_start_offset);
-
507  }
-
508  }
-
509  if (offset == kInvalidOffset)
-
510  return runs_.empty() ? 0 : runs_[0].sample_start_offset;
-
511  return offset;
-
512 }
-
513 
-
514 uint32_t TrackRunIterator::track_id() const {
-
515  DCHECK(IsRunValid());
-
516  return run_itr_->track_id;
-
517 }
-
518 
-
519 bool TrackRunIterator::is_encrypted() const {
-
520  DCHECK(IsRunValid());
-
521  return track_encryption().default_is_protected == 1;
-
522 }
-
523 
-
524 int64_t TrackRunIterator::aux_info_offset() const {
-
525  return run_itr_->aux_info_start_offset;
-
526 }
-
527 
-
528 int TrackRunIterator::aux_info_size() const {
-
529  return run_itr_->aux_info_total_size;
-
530 }
-
531 
-
532 bool TrackRunIterator::is_audio() const {
-
533  DCHECK(IsRunValid());
-
534  return run_itr_->track_type == kAudio;
-
535 }
-
536 
-
537 bool TrackRunIterator::is_video() const {
-
538  DCHECK(IsRunValid());
-
539  return run_itr_->track_type == kVideo;
-
540 }
-
541 
- -
543  DCHECK(is_audio());
-
544  DCHECK(run_itr_->audio_description);
-
545  return *run_itr_->audio_description;
-
546 }
-
547 
- -
549  DCHECK(is_video());
-
550  DCHECK(run_itr_->video_description);
-
551  return *run_itr_->video_description;
-
552 }
-
553 
-
554 int64_t TrackRunIterator::sample_offset() const {
-
555  DCHECK(IsSampleValid());
-
556  return sample_offset_;
-
557 }
-
558 
-
559 int TrackRunIterator::sample_size() const {
-
560  DCHECK(IsSampleValid());
-
561  return sample_itr_->size;
-
562 }
-
563 
-
564 int64_t TrackRunIterator::dts() const {
-
565  DCHECK(IsSampleValid());
-
566  return sample_dts_;
-
567 }
-
568 
-
569 int64_t TrackRunIterator::cts() const {
-
570  DCHECK(IsSampleValid());
-
571  return sample_dts_ + sample_itr_->cts_offset;
-
572 }
-
573 
-
574 int64_t TrackRunIterator::duration() const {
-
575  DCHECK(IsSampleValid());
-
576  return sample_itr_->duration;
-
577 }
-
578 
-
579 bool TrackRunIterator::is_keyframe() const {
-
580  DCHECK(IsSampleValid());
-
581  return sample_itr_->is_keyframe;
-
582 }
-
583 
-
584 const TrackEncryption& TrackRunIterator::track_encryption() const {
-
585  if (is_audio())
-
586  return audio_description().sinf.info.track_encryption;
-
587  DCHECK(is_video());
-
588  return video_description().sinf.info.track_encryption;
-
589 }
-
590 
-
591 std::unique_ptr<DecryptConfig> TrackRunIterator::GetDecryptConfig() {
-
592  std::vector<uint8_t> iv;
-
593  std::vector<SubsampleEntry> subsamples;
-
594 
-
595  size_t sample_idx = sample_itr_ - run_itr_->samples.begin();
-
596  if (sample_idx < run_itr_->sample_encryption_entries.size()) {
-
597  const SampleEncryptionEntry& sample_encryption_entry =
-
598  run_itr_->sample_encryption_entries[sample_idx];
-
599  DCHECK(is_encrypted());
-
600  DCHECK(!AuxInfoNeedsToBeCached());
-
601 
-
602  const size_t total_size_of_subsamples =
-
603  sample_encryption_entry.GetTotalSizeOfSubsamples();
-
604  if (total_size_of_subsamples != 0 &&
-
605  total_size_of_subsamples != static_cast<size_t>(sample_size())) {
-
606  LOG(ERROR) << "Incorrect CENC subsample size.";
-
607  return std::unique_ptr<DecryptConfig>();
-
608  }
-
609 
-
610  iv = sample_encryption_entry.initialization_vector;
-
611  subsamples = sample_encryption_entry.subsamples;
-
612  }
-
613 
-
614  FourCC protection_scheme = is_audio() ? audio_description().sinf.type.type
-
615  : video_description().sinf.type.type;
-
616  if (iv.empty()) {
-
617  if (protection_scheme != FOURCC_cbcs) {
-
618  LOG(WARNING)
-
619  << "Constant IV should only be used with 'cbcs' protection scheme.";
-
620  }
-
621  iv = track_encryption().default_constant_iv;
-
622  if (iv.empty()) {
-
623  LOG(ERROR) << "IV cannot be empty.";
-
624  return std::unique_ptr<DecryptConfig>();
-
625  }
-
626  }
-
627  return std::unique_ptr<DecryptConfig>(new DecryptConfig(
-
628  track_encryption().default_kid, iv, subsamples, protection_scheme,
-
629  track_encryption().default_crypt_byte_block,
-
630  track_encryption().default_skip_byte_block));
-
631 }
-
632 
-
633 } // namespace mp4
-
634 } // namespace media
-
635 } // namespace shaka
+
413  PopulateSampleInfo(*trex, traf.header, trun, k,
+
414  &tri.samples[k]);
+
415  run_start_dts += tri.samples[k].duration;
+
416  }
+
417  runs_.push_back(tri);
+
418  sample_count_sum += trun.sample_count;
+
419  }
+
420  next_fragment_start_dts_[i] = run_start_dts;
+
421  }
+
422 
+
423  std::sort(runs_.begin(), runs_.end(), CompareMinTrackRunDataOffset());
+
424  run_itr_ = runs_.begin();
+
425  ResetRun();
+
426  return true;
+
427 }
+
428 
+ +
430  ++run_itr_;
+
431  ResetRun();
+
432 }
+
433 
+
434 void TrackRunIterator::ResetRun() {
+
435  if (!IsRunValid())
+
436  return;
+
437  sample_dts_ = run_itr_->start_dts;
+
438  sample_offset_ = run_itr_->sample_start_offset;
+
439  sample_itr_ = run_itr_->samples.begin();
+
440 }
+
441 
+ +
443  DCHECK(IsSampleValid());
+
444  sample_dts_ += sample_itr_->duration;
+
445  sample_offset_ += sample_itr_->size;
+
446  ++sample_itr_;
+
447 }
+
448 
+
449 // This implementation only indicates a need for caching if CENC auxiliary
+
450 // info is available in the stream.
+ +
452  DCHECK(IsRunValid());
+
453  return is_encrypted() && aux_info_size() > 0 &&
+
454  run_itr_->sample_encryption_entries.size() == 0;
+
455 }
+
456 
+
457 // This implementation currently only caches CENC auxiliary info.
+
458 bool TrackRunIterator::CacheAuxInfo(const uint8_t* buf, int buf_size) {
+
459  RCHECK(AuxInfoNeedsToBeCached() && buf_size >= aux_info_size());
+
460 
+
461  std::vector<SampleEncryptionEntry>& sample_encryption_entries =
+
462  runs_[run_itr_ - runs_.begin()].sample_encryption_entries;
+
463  sample_encryption_entries.resize(run_itr_->samples.size());
+
464  int64_t pos = 0;
+
465  for (size_t i = 0; i < run_itr_->samples.size(); i++) {
+
466  int info_size = run_itr_->aux_info_default_size;
+
467  if (!info_size)
+
468  info_size = run_itr_->aux_info_sizes[i];
+
469 
+
470  BufferReader reader(buf + pos, info_size);
+
471  const bool has_subsamples =
+
472  info_size > track_encryption().default_per_sample_iv_size;
+
473  RCHECK(sample_encryption_entries[i].ParseFromBuffer(
+
474  track_encryption().default_per_sample_iv_size, has_subsamples,
+
475  &reader));
+
476  pos += info_size;
+
477  }
+
478 
+
479  return true;
+
480 }
+
481 
+
482 bool TrackRunIterator::IsRunValid() const { return run_itr_ != runs_.end(); }
+
483 
+ +
485  return IsRunValid() && (sample_itr_ != run_itr_->samples.end());
+
486 }
+
487 
+
488 // Because tracks are in sorted order and auxiliary information is cached when
+
489 // returning samples, it is guaranteed that no data will be required before the
+
490 // lesser of the minimum data offset of this track and the next in sequence.
+
491 // (The stronger condition - that no data is required before the minimum data
+
492 // offset of this track alone - is not guaranteed, because the BMFF spec does
+
493 // not have any inter-run ordering restrictions.)
+ +
495  int64_t offset = kInvalidOffset;
+
496 
+
497  if (IsSampleValid()) {
+
498  offset = std::min(offset, sample_offset_);
+ +
500  offset = std::min(offset, aux_info_offset());
+
501  }
+
502  if (run_itr_ != runs_.end()) {
+
503  std::vector<TrackRunInfo>::const_iterator next_run = run_itr_ + 1;
+
504  if (next_run != runs_.end()) {
+
505  offset = std::min(offset, next_run->sample_start_offset);
+
506  if (next_run->aux_info_total_size)
+
507  offset = std::min(offset, next_run->aux_info_start_offset);
+
508  }
+
509  }
+
510  if (offset == kInvalidOffset)
+
511  return runs_.empty() ? 0 : runs_[0].sample_start_offset;
+
512  return offset;
+
513 }
+
514 
+
515 uint32_t TrackRunIterator::track_id() const {
+
516  DCHECK(IsRunValid());
+
517  return run_itr_->track_id;
+
518 }
+
519 
+
520 bool TrackRunIterator::is_encrypted() const {
+
521  DCHECK(IsRunValid());
+
522  return track_encryption().default_is_protected == 1;
+
523 }
+
524 
+
525 int64_t TrackRunIterator::aux_info_offset() const {
+
526  return run_itr_->aux_info_start_offset;
+
527 }
+
528 
+
529 int TrackRunIterator::aux_info_size() const {
+
530  return run_itr_->aux_info_total_size;
+
531 }
+
532 
+
533 bool TrackRunIterator::is_audio() const {
+
534  DCHECK(IsRunValid());
+
535  return run_itr_->track_type == kAudio;
+
536 }
+
537 
+
538 bool TrackRunIterator::is_video() const {
+
539  DCHECK(IsRunValid());
+
540  return run_itr_->track_type == kVideo;
+
541 }
+
542 
+ +
544  DCHECK(is_audio());
+
545  DCHECK(run_itr_->audio_description);
+
546  return *run_itr_->audio_description;
+
547 }
+
548 
+ +
550  DCHECK(is_video());
+
551  DCHECK(run_itr_->video_description);
+
552  return *run_itr_->video_description;
+
553 }
+
554 
+
555 int64_t TrackRunIterator::sample_offset() const {
+
556  DCHECK(IsSampleValid());
+
557  return sample_offset_;
+
558 }
+
559 
+
560 int TrackRunIterator::sample_size() const {
+
561  DCHECK(IsSampleValid());
+
562  return sample_itr_->size;
+
563 }
+
564 
+
565 int64_t TrackRunIterator::dts() const {
+
566  DCHECK(IsSampleValid());
+
567  return sample_dts_;
+
568 }
+
569 
+
570 int64_t TrackRunIterator::cts() const {
+
571  DCHECK(IsSampleValid());
+
572  return sample_dts_ + sample_itr_->cts_offset;
+
573 }
+
574 
+
575 int64_t TrackRunIterator::duration() const {
+
576  DCHECK(IsSampleValid());
+
577  return sample_itr_->duration;
+
578 }
+
579 
+
580 bool TrackRunIterator::is_keyframe() const {
+
581  DCHECK(IsSampleValid());
+
582  return sample_itr_->is_keyframe;
+
583 }
+
584 
+
585 const TrackEncryption& TrackRunIterator::track_encryption() const {
+
586  if (is_audio())
+
587  return audio_description().sinf.info.track_encryption;
+
588  DCHECK(is_video());
+
589  return video_description().sinf.info.track_encryption;
+
590 }
+
591 
+
592 std::unique_ptr<DecryptConfig> TrackRunIterator::GetDecryptConfig() {
+
593  std::vector<uint8_t> iv;
+
594  std::vector<SubsampleEntry> subsamples;
+
595 
+
596  size_t sample_idx = sample_itr_ - run_itr_->samples.begin();
+
597  if (sample_idx < run_itr_->sample_encryption_entries.size()) {
+
598  const SampleEncryptionEntry& sample_encryption_entry =
+
599  run_itr_->sample_encryption_entries[sample_idx];
+
600  DCHECK(is_encrypted());
+
601  DCHECK(!AuxInfoNeedsToBeCached());
+
602 
+
603  const size_t total_size_of_subsamples =
+
604  sample_encryption_entry.GetTotalSizeOfSubsamples();
+
605  if (total_size_of_subsamples != 0 &&
+
606  total_size_of_subsamples != static_cast<size_t>(sample_size())) {
+
607  LOG(ERROR) << "Incorrect CENC subsample size.";
+
608  return std::unique_ptr<DecryptConfig>();
+
609  }
+
610 
+
611  iv = sample_encryption_entry.initialization_vector;
+
612  subsamples = sample_encryption_entry.subsamples;
+
613  }
+
614 
+
615  FourCC protection_scheme = is_audio() ? audio_description().sinf.type.type
+
616  : video_description().sinf.type.type;
+
617  if (iv.empty()) {
+
618  if (protection_scheme != FOURCC_cbcs) {
+
619  LOG(WARNING)
+
620  << "Constant IV should only be used with 'cbcs' protection scheme.";
+
621  }
+
622  iv = track_encryption().default_constant_iv;
+
623  if (iv.empty()) {
+
624  LOG(ERROR) << "IV cannot be empty.";
+
625  return std::unique_ptr<DecryptConfig>();
+
626  }
+
627  }
+
628  return std::unique_ptr<DecryptConfig>(new DecryptConfig(
+
629  track_encryption().default_kid, iv, subsamples, protection_scheme,
+
630  track_encryption().default_crypt_byte_block,
+
631  track_encryption().default_skip_byte_block));
+
632 }
+
633 
+
634 } // namespace mp4
+
635 } // namespace media
+
636 } // namespace shaka
-
const VideoSampleEntry & video_description() const
Only valid if is_video() is true.
+
const VideoSampleEntry & video_description() const
Only valid if is_video() is true.
@@ -734,8 +735,8 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); - - + + @@ -746,35 +747,35 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); - - + +
std::vector< uint8_t > sample_encryption_data
-
bool ParseFromSampleEncryptionData(uint8_t iv_size, std::vector< SampleEncryptionEntry > *sample_encryption_entries) const
+
bool ParseFromSampleEncryptionData(uint8_t iv_size, std::vector< SampleEncryptionEntry > *sample_encryption_entries) const
-
std::unique_ptr< DecryptConfig > GetDecryptConfig()
+
std::unique_ptr< DecryptConfig > GetDecryptConfig()
-
const AudioSampleEntry & audio_description() const
Only valid if is_audio() is true.
+
const AudioSampleEntry & audio_description() const
Only valid if is_audio() is true.
- + - + - -
bool CacheAuxInfo(const uint8_t *buf, int size)
+ +
bool CacheAuxInfo(const uint8_t *buf, int size)
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 0d0e31df28..d8c70fa05a 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 35621f5ed6..3532b5a1ca 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 d54b82dfff..ff73257239 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 d020bbacfa..6c3852dd00 100644 --- a/docs/db/d4b/classshaka_1_1MockAdaptationSet.html +++ b/docs/db/d4b/classshaka_1_1MockAdaptationSet.html @@ -177,7 +177,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 eae3da610b..fcb75a10e2 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 543ceb7fac..379501236e 100644 --- a/docs/db/d51/mp2t__media__parser_8h_source.html +++ b/docs/db/d51/mp2t__media__parser_8h_source.html @@ -192,7 +192,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d51/two__pass__single__segment__segmenter_8h_source.html b/docs/db/d51/two__pass__single__segment__segmenter_8h_source.html index f5cd75d791..1d77c92a2a 100644 --- a/docs/db/d51/two__pass__single__segment__segmenter_8h_source.html +++ b/docs/db/d51/two__pass__single__segment__segmenter_8h_source.html @@ -144,7 +144,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d5a/classshaka_1_1media_1_1VP9Parser.html b/docs/db/d5a/classshaka_1_1media_1_1VP9Parser.html index f317a40fb5..acd7aff2fc 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 9c7e6a3049..035e0c64a6 100644 --- a/docs/db/d60/mpd__options_8h_source.html +++ b/docs/db/d60/mpd__options_8h_source.html @@ -127,7 +127,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d64/webvtt__media__parser_8h_source.html b/docs/db/d64/webvtt__media__parser_8h_source.html index d504a8faf5..6f515f9da3 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 e8c8876596..d227583884 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 2042785515..9496d52eaf 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 d38038d5c3..9ad43c1ec0 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 c047b66481..60acc420aa 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 @@ -131,7 +131,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d78/classshaka_1_1media_1_1mp2t_1_1ContinuityCounter-members.html b/docs/db/d78/classshaka_1_1media_1_1mp2t_1_1ContinuityCounter-members.html index 5c5064987c..8de2dd56b8 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 65e2cbfaf0..af3e0347ec 100644 --- a/docs/db/d7e/muxer__options_8cc_source.html +++ b/docs/db/d7e/muxer__options_8cc_source.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d84/classshaka_1_1media_1_1AACAudioSpecificConfig-members.html b/docs/db/d84/classshaka_1_1media_1_1AACAudioSpecificConfig-members.html index 4b91e3664b..ab8323f7fa 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 cb9f220647..1e9af23da2 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 d7d21ac89c..691732a7ca 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 0d346f4789..06252e03a9 100644 --- a/docs/db/d94/classshaka_1_1media_1_1ClusterBuilder.html +++ b/docs/db/d94/classshaka_1_1media_1_1ClusterBuilder.html @@ -125,7 +125,7 @@ std::unique_ptr< diff --git a/docs/db/d95/classshaka_1_1media_1_1mp4_1_1Fragmenter.html b/docs/db/d95/classshaka_1_1media_1_1mp4_1_1Fragmenter.html index f61abc4924..d7b7d25f02 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 @@ -262,7 +262,7 @@ Protected Member Functions

Reimplemented in shaka::media::mp4::EncryptingFragmenter.

-

Definition at line 91 of file fragmenter.cc.

+

Definition at line 92 of file fragmenter.cc.

@@ -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 14e4d34bbe..5ebd695b91 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 876 of file box_definitions.cc.

+

Definition at line 879 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 b6dc649ad8..eacfac4ec5 100644 --- a/docs/db/d96/wvm__media__parser_8h_source.html +++ b/docs/db/d96/wvm__media__parser_8h_source.html @@ -314,17 +314,17 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
228  uint8_t current_program_id_;
229  uint32_t pes_stream_id_;
230  uint32_t prev_pes_stream_id_;
-
231  uint16_t pes_packet_bytes_;
+
231  size_t pes_packet_bytes_;
232  uint8_t pes_flags_1_;
233  uint8_t pes_flags_2_;
234  uint8_t prev_pes_flags_1_;
-
235  uint8_t pes_header_data_bytes_;
+
235  size_t pes_header_data_bytes_;
236  uint64_t timestamp_;
237  uint64_t pts_;
238  uint64_t dts_;
239  uint8_t index_program_id_;
240  scoped_refptr<MediaSample> media_sample_;
-
241  uint32_t crypto_unit_start_pos_;
+
241  size_t crypto_unit_start_pos_;
242  PrevSampleData prev_media_sample_data_;
243  H264ByteToUnitStreamConverter byte_to_unit_stream_converter_;
244 
@@ -362,7 +362,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/da4/classBandwidthEstimator-members.html b/docs/db/da4/classBandwidthEstimator-members.html index 5fdf5544b6..b7875852f8 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 b829eca36b..cfd4881234 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 eef3050bf9..aa8b702d41 100644 --- a/docs/db/dab/classshaka_1_1media_1_1TextStreamInfo.html +++ b/docs/db/dab/classshaka_1_1media_1_1TextStreamInfo.html @@ -282,7 +282,7 @@ void set_language (con diff --git a/docs/db/dae/classshaka_1_1media_1_1WebMInfoParser.html b/docs/db/dae/classshaka_1_1media_1_1WebMInfoParser.html index fd288284ee..05e585b793 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 020e8f7a31..092cd78e76 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 d58322cb18..477b2e1e7e 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 287954573f..2d1009e25e 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 e704acbb34..bd84d42ae9 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 @@ -186,7 +186,7 @@ Additional Inherited Members

Implements shaka::media::mp4::Box.

-

Definition at line 411 of file box_definitions.cc.

+

Definition at line 414 of file box_definitions.cc.

@@ -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 f615bdde69..a83eff70e2 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 4f2445d128..dc937efb05 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 479dc6c518..490511b812 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 753f79736e..17618bafc8 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 ad682f5088..589f445b9f 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 d74b44325c..d94ca59600 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 3a585e485c..826856a078 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 ab5d82c354..ca01c40f25 100644 --- a/docs/db/dde/h265__parser_8cc_source.html +++ b/docs/db/dde/h265__parser_8cc_source.html @@ -1212,7 +1212,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 781b270645..e19b5694bd 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 95f96d0e6b..c6a9673890 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 c0347aa1fe..7b636cc3ad 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 7b87a3ac26..a2e2c2e23b 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 9c41db917c..e8345619d9 100644 --- a/docs/db/df6/muxer_8h_source.html +++ b/docs/db/df6/muxer_8h_source.html @@ -221,7 +221,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 9c76da0959..9eef93846c 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 742f809272..2cca6ba595 100644 --- a/docs/db/dfb/mpd__utils_8cc_source.html +++ b/docs/db/dfb/mpd__utils_8cc_source.html @@ -453,7 +453,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/dfc/mpd__notify__muxer__listener_8cc_source.html b/docs/db/dfc/mpd__notify__muxer__listener_8cc_source.html index eb886e72dc..51113926d3 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 b096104a17..244aab3c04 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 ef53d93c76..857be68909 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 10e6b75bfa..0ec64f8622 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 2280b508f5..5666caf7a9 100644 --- a/docs/dc/d06/classshaka_1_1media_1_1StreamInfo-members.html +++ b/docs/dc/d06/classshaka_1_1media_1_1StreamInfo-members.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d0b/classshaka_1_1media_1_1ESDescriptor-members.html b/docs/dc/d0b/classshaka_1_1media_1_1ESDescriptor-members.html index 710c46202a..e0140d0c43 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 eaf5ce1922..7fb48afbef 100644 --- a/docs/dc/d16/classshaka_1_1media_1_1SeekHead.html +++ b/docs/dc/d16/classshaka_1_1media_1_1SeekHead.html @@ -149,7 +149,7 @@ void set_tracks_pos (u diff --git a/docs/dc/d18/classshaka_1_1media_1_1wvm_1_1WvmMediaParser.html b/docs/dc/d18/classshaka_1_1media_1_1wvm_1_1WvmMediaParser.html index 2f6034f058..013b5958f7 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 9805a2ba18..2ad02b9902 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 2fc0bdfbf5..d024434424 100644 --- a/docs/dc/d19/box_8h_source.html +++ b/docs/dc/d19/box_8h_source.html @@ -134,7 +134,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
67  virtual bool ReadWriteInternal(BoxBuffer* buffer) = 0;
68  // Compute the size of this box. A value of 0 should be returned if the box
69  // should not be written. Note that this function won't update box size.
-
70  virtual uint32_t ComputeSizeInternal() = 0;
+
70  virtual size_t ComputeSizeInternal() = 0;
71 
72  // We don't support 64-bit box sizes. 32-bit should be large enough for our
73  // current needs.
@@ -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 443f52d709..d08225b455 100644 --- a/docs/dc/d22/dash__iop__mpd__notifier_8cc_source.html +++ b/docs/dc/d22/dash__iop__mpd__notifier_8cc_source.html @@ -388,7 +388,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 dbc24d7e54..4505d30f7e 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 ae247e2f78..45cf6fdb4d 100644 --- a/docs/dc/d3c/webm__cluster__parser_8h_source.html +++ b/docs/dc/d3c/webm__cluster__parser_8h_source.html @@ -301,7 +301,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d3f/key__source_8h_source.html b/docs/dc/d3f/key__source_8h_source.html index ca8dba55ae..eaa72964bf 100644 --- a/docs/dc/d3f/key__source_8h_source.html +++ b/docs/dc/d3f/key__source_8h_source.html @@ -170,7 +170,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d40/classshaka_1_1xml_1_1XmlNode-members.html b/docs/dc/d40/classshaka_1_1xml_1_1XmlNode-members.html index 9508fb6080..6875d6eef3 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 3135921d80..4eed863f0b 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 3e1bce72db..3817cd5189 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 a671358661..f1dcd950be 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 587fa9483a..d17df00711 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 0c1814e9e1..6f7c5e60a3 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 3ae8099103..48ee246822 100644 --- a/docs/dc/d53/webm_2segmenter_8cc_source.html +++ b/docs/dc/d53/webm_2segmenter_8cc_source.html @@ -569,7 +569,7 @@ 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 211b7d72df..9057ab8afb 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 409dd85e6d..11c263b3e6 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 42fe18cea7..04b4ffcce9 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 8a7a9ba0a6..de27fb21b5 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 540fb0e872..a0af4c5f7e 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 793deb2db9..a3a505f8b8 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 57ef701aa0..48c6139253 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 30027aa34e..4ffccc8675 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 14966c60e8..223fe6189b 100644 --- a/docs/dc/d7b/h264__parser_8cc_source.html +++ b/docs/dc/d7b/h264__parser_8cc_source.html @@ -1256,7 +1256,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 b0dfcaaf34..847a09d2e9 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 c8b46d59f7..f42fe4f4b2 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 2258 of file box_definitions.cc.

+

Definition at line 2264 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 6cb28200cb..c79d60d475 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 1640 of file box_definitions.cc.

+

Definition at line 1646 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 2cb69c2d18..2119fd2fa3 100644 --- a/docs/dc/da1/classshaka_1_1MpdBuilder.html +++ b/docs/dc/da1/classshaka_1_1MpdBuilder.html @@ -385,7 +385,7 @@ class DynamicMpdBuilderTes diff --git a/docs/dc/da6/classshaka_1_1media_1_1ContentEncoding.html b/docs/dc/da6/classshaka_1_1media_1_1ContentEncoding.html index d2376f77e8..7790affcb0 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 84d0ffe05c..e9746cadca 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 4c8793953a..ca24eb7239 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 fa00bcfa69..4c6fcb4ab0 100644 --- a/docs/dc/dc1/classshaka_1_1xml_1_1RepresentationXmlNode-members.html +++ b/docs/dc/dc1/classshaka_1_1xml_1_1RepresentationXmlNode-members.html @@ -118,7 +118,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 9f42ded027..e4d3989874 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 3af72efe94..bb40052d26 100644 --- a/docs/dc/dd9/rsa__key_8cc_source.html +++ b/docs/dc/dd9/rsa__key_8cc_source.html @@ -340,7 +340,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/ddf/structshaka_1_1media_1_1mp4_1_1Media.html b/docs/dc/ddf/structshaka_1_1media_1_1mp4_1_1Media.html index 1027d77d6a..a1e748c819 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 2081 of file box_definitions.cc.

+

Definition at line 2087 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 dec7788a09..58345e9bbb 100644 --- a/docs/dc/ddf/udp__file__posix_8cc_source.html +++ b/docs/dc/ddf/udp__file__posix_8cc_source.html @@ -302,7 +302,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/de1/structshaka_1_1SegmentInfo.html b/docs/dc/de1/structshaka_1_1SegmentInfo.html index 5a85caf779..4391b03753 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 7e4892b8af..0dcedf05cb 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 11e4f4a567..1f8dd228f0 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 cd7855f9cb..25f3063b66 100644 --- a/docs/dc/dec/ts__section__pmt_8cc_source.html +++ b/docs/dc/dec/ts__section__pmt_8cc_source.html @@ -127,7 +127,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
38  RCHECK(bit_reader->ReadBits(1, &dummy_zero));
39  RCHECK(bit_reader->ReadBits(2, &reserved));
40  RCHECK(bit_reader->ReadBits(12, &section_length));
-
41  int section_start_marker = bit_reader->bits_available() / 8;
+
41  int section_start_marker = static_cast<int>(bit_reader->bits_available()) / 8;
42 
43  RCHECK(bit_reader->ReadBits(16, &program_number));
44  RCHECK(bit_reader->ReadBits(2, &reserved));
@@ -165,49 +165,50 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
76  // (4 bytes = size of the CRC).
77  int pid_map_end_marker = section_start_marker - section_length + 4;
78  std::map<int, int> pid_map;
-
79  while (bit_reader->bits_available() > 8 * pid_map_end_marker) {
-
80  int stream_type;
-
81  int reserved;
-
82  int pid_es;
-
83  int es_info_length;
-
84  RCHECK(bit_reader->ReadBits(8, &stream_type));
-
85  RCHECK(bit_reader->ReadBits(3, &reserved));
-
86  RCHECK(bit_reader->ReadBits(13, &pid_es));
-
87  RCHECK(bit_reader->ReadBits(4, &reserved));
-
88  RCHECK(bit_reader->ReadBits(12, &es_info_length));
-
89 
-
90  // Do not register the PID right away.
-
91  // Wait for the end of the section to be fully parsed
-
92  // to make sure there is no error.
-
93  pid_map.insert(std::pair<int, int>(pid_es, stream_type));
-
94 
-
95  // Read the ES info descriptors.
-
96  // Defined in section 2.6 of ISO-13818.
-
97  RCHECK(bit_reader->SkipBits(8 * es_info_length));
-
98  }
-
99 
-
100  // Read the CRC.
-
101  int crc32;
-
102  RCHECK(bit_reader->ReadBits(32, &crc32));
-
103 
-
104  // Once the PMT has been proved to be correct, register the PIDs.
-
105  for (std::map<int, int>::iterator it = pid_map.begin();
-
106  it != pid_map.end(); ++it)
-
107  register_pes_cb_.Run(it->first, it->second);
-
108 
-
109  return true;
-
110 }
-
111 
-
112 void TsSectionPmt::ResetPsiSection() {
-
113 }
-
114 
-
115 } // namespace mp2t
-
116 } // namespace media
-
117 } // namespace shaka
+
79  while (static_cast<int>(bit_reader->bits_available()) >
+
80  8 * pid_map_end_marker) {
+
81  int stream_type;
+
82  int reserved;
+
83  int pid_es;
+
84  int es_info_length;
+
85  RCHECK(bit_reader->ReadBits(8, &stream_type));
+
86  RCHECK(bit_reader->ReadBits(3, &reserved));
+
87  RCHECK(bit_reader->ReadBits(13, &pid_es));
+
88  RCHECK(bit_reader->ReadBits(4, &reserved));
+
89  RCHECK(bit_reader->ReadBits(12, &es_info_length));
+
90 
+
91  // Do not register the PID right away.
+
92  // Wait for the end of the section to be fully parsed
+
93  // to make sure there is no error.
+
94  pid_map.insert(std::pair<int, int>(pid_es, stream_type));
+
95 
+
96  // Read the ES info descriptors.
+
97  // Defined in section 2.6 of ISO-13818.
+
98  RCHECK(bit_reader->SkipBits(8 * es_info_length));
+
99  }
+
100 
+
101  // Read the CRC.
+
102  int crc32;
+
103  RCHECK(bit_reader->ReadBits(32, &crc32));
+
104 
+
105  // Once the PMT has been proved to be correct, register the PIDs.
+
106  for (std::map<int, int>::iterator it = pid_map.begin();
+
107  it != pid_map.end(); ++it)
+
108  register_pes_cb_.Run(it->first, it->second);
+
109 
+
110  return true;
+
111 }
+
112 
+
113 void TsSectionPmt::ResetPsiSection() {
+
114 }
+
115 
+
116 } // namespace mp2t
+
117 } // namespace media
+
118 } // namespace shaka
diff --git a/docs/dc/df0/classshaka_1_1media_1_1ClosureThread.html b/docs/dc/df0/classshaka_1_1media_1_1ClosureThread.html index a7250a0220..388d20b063 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 4431195243..f2d88054c7 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 79ae1ae14b..a69f610d02 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 4165003119..9115b7ffed 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 @@ -129,7 +129,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/df7/structshaka_1_1media_1_1mp4_1_1TrackFragmentRun-members.html b/docs/dc/df7/structshaka_1_1media_1_1mp4_1_1TrackFragmentRun-members.html index b701f6f657..363e864472 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 5eb5d9b517..9a27ea6790 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 1640f23261..276a83e3a2 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 flagsReimplemented from shaka::media::mp4::ChunkLargeOffset.

-

Definition at line 857 of file box_definitions.cc.

+

Definition at line 860 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 47fbd0e89c..339c6886b4 100644 --- a/docs/dd/d11/mpd__builder_8cc_source.html +++ b/docs/dd/d11/mpd__builder_8cc_source.html @@ -1509,7 +1509,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d12/mpd__writer_8cc_source.html b/docs/dd/d12/mpd__writer_8cc_source.html index 162950ce8a..24cf5c6290 100644 --- a/docs/dd/d12/mpd__writer_8cc_source.html +++ b/docs/dd/d12/mpd__writer_8cc_source.html @@ -221,7 +221,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d13/structshaka_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize.html b/docs/dd/d13/structshaka_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize.html index 4f25e2d521..ded35b9186 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 b6a29577c1..62aa719715 100644 --- a/docs/dd/d17/classshaka_1_1media_1_1Demuxer.html +++ b/docs/dd/d17/classshaka_1_1media_1_1Demuxer.html @@ -296,7 +296,7 @@ Public Member Functions diff --git a/docs/dd/d18/es__parser__adts_8h_source.html b/docs/dd/d18/es__parser__adts_8h_source.html index 8c240581d3..0adbaf8d8a 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 824f19b14a..95b5c1ebde 100644 --- a/docs/dd/d19/video__stream__info_8cc_source.html +++ b/docs/dd/d19/video__stream__info_8cc_source.html @@ -179,7 +179,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d30/wvm__media__parser_8cc_source.html b/docs/dd/d30/wvm__media__parser_8cc_source.html index 6edb1739d3..b70cd74be6 100644 --- a/docs/dd/d30/wvm__media__parser_8cc_source.html +++ b/docs/dd/d30/wvm__media__parser_8cc_source.html @@ -137,7 +137,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
48 const uint32_t kPesStreamIdAudioMask = 0xE0;
49 const uint32_t kPesStreamIdAudio = 0xC0;
50 const uint32_t kVersion4 = 4;
-
51 const int kAdtsHeaderMinSize = 7;
+
51 const size_t kAdtsHeaderMinSize = 7;
52 const uint8_t kAacSampleSizeBits = 16;
53 // Applies to all video streams.
54 const uint8_t kNaluLengthSize = 4; // unit is bytes.
@@ -214,8 +214,8 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
125 }
126 
127 bool WvmMediaParser::Parse(const uint8_t* buf, int size) {
-
128  uint32_t num_bytes, prev_size;
-
129  num_bytes = prev_size = 0;
+
128  size_t num_bytes = 0;
+
129  size_t prev_size = 0;
130  const uint8_t* read_ptr = buf;
131  const uint8_t* end = read_ptr + size;
132 
@@ -297,7 +297,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
208  parse_state_ = SystemHeaderSkip;
209  break;
210  case PackHeaderStuffingSkip:
-
211  if ((end - read_ptr) >= (int32_t)skip_bytes_) {
+
211  if ((end - read_ptr) >= skip_bytes_) {
212  read_ptr += skip_bytes_;
213  skip_bytes_ = 0;
214  parse_state_ = StartCode1;
@@ -307,7 +307,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
218  }
219  continue;
220  case SystemHeaderSkip:
-
221  if ((end - read_ptr) >= (int32_t)skip_bytes_) {
+
221  if ((end - read_ptr) >= skip_bytes_) {
222  read_ptr += skip_bytes_;
223  skip_bytes_ = 0;
224  parse_state_ = StartCode1;
@@ -984,8 +984,8 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
895  } else if ((prev_pes_stream_id_ & kPesStreamIdAudioMask) ==
896  kPesStreamIdAudio) {
897  // Set data on the audio stream.
-
898  int frame_size = mp2t::AdtsHeader::GetAdtsFrameSize(sample_data_.data(),
-
899  kAdtsHeaderMinSize);
+
898  int frame_size = static_cast<int>(mp2t::AdtsHeader::GetAdtsFrameSize(
+
899  sample_data_.data(), kAdtsHeaderMinSize));
900  mp2t::AdtsHeader adts_header;
901  const uint8_t* frame_ptr = sample_data_.data();
902  if (!adts_header.Parse(frame_ptr, frame_size)) {
@@ -1265,7 +1265,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d3b/mp4_2segmenter_8h_source.html b/docs/dd/d3b/mp4_2segmenter_8h_source.html index 1f887595d1..b093b20bcc 100644 --- a/docs/dd/d3b/mp4_2segmenter_8h_source.html +++ b/docs/dd/d3b/mp4_2segmenter_8h_source.html @@ -222,7 +222,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); 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 9867478881..391ddcb1e1 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 912 of file box_definitions.cc.

+

Definition at line 915 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 fa49b1f918..4b3cdf6a78 100644 --- a/docs/dd/d42/encryptor_8h_source.html +++ b/docs/dd/d42/encryptor_8h_source.html @@ -161,7 +161,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d46/webm__parser_8h_source.html b/docs/dd/d46/webm__parser_8h_source.html index f307dfa89f..66a56d20b9 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 1f3003d82c..bb7fefa04b 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 3cc1bc0ee1..df91421f52 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 7f550857b5..26b5a917ee 100644 --- a/docs/dd/d54/widevine__encryption__flags_8h_source.html +++ b/docs/dd/d54/widevine__encryption__flags_8h_source.html @@ -127,7 +127,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 c8eaca9eef..63ef679ba4 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 bfcbf8776a..c070895ee8 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 355870831c..c01773569d 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 aafbb51353..5871e10118 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 e6c13735a6..51b1031cf8 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 7c60fd84cf..7ad8bdc4f1 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 4b6cfe127e..2334167138 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 1465 of file box_definitions.cc.

+

Definition at line 1471 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 e0bec621a0..171e91dd5d 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 86ef012b84..b4a1318f0d 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 e7de4a2356..b4d3bc9f1a 100644 --- a/docs/dd/d80/media__sample_8h_source.html +++ b/docs/dd/d80/media__sample_8h_source.html @@ -272,7 +272,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d87/memory__file_8cc_source.html b/docs/dd/d87/memory__file_8cc_source.html index eee8f4a658..1fb501e7a5 100644 --- a/docs/dd/d87/memory__file_8cc_source.html +++ b/docs/dd/d87/memory__file_8cc_source.html @@ -242,7 +242,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d88/pes__packet__generator_8h_source.html b/docs/dd/d88/pes__packet__generator_8h_source.html index b581e6a912..83c81e2b8e 100644 --- a/docs/dd/d88/pes__packet__generator_8h_source.html +++ b/docs/dd/d88/pes__packet__generator_8h_source.html @@ -172,7 +172,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d8c/file__test__util_8h_source.html b/docs/dd/d8c/file__test__util_8h_source.html index 89a97ca981..3856eb5a23 100644 --- a/docs/dd/d8c/file__test__util_8h_source.html +++ b/docs/dd/d8c/file__test__util_8h_source.html @@ -130,7 +130,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d8d/structshaka_1_1media_1_1mp4_1_1SegmentIndex-members.html b/docs/dd/d8d/structshaka_1_1media_1_1mp4_1_1SegmentIndex-members.html index d014747f97..1584cdf0e2 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 c5462a9ddc..bff52de89c 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 2714f74aa2..925d2bddf4 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 94ced7d05f..40e44b1ae4 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 fa6ff21ac3..b0a7e8da52 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 1e8d933ec2..b1d4de3e40 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 3e4673476b..72c72635bf 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 @@ -220,7 +220,7 @@ uint64_t cluster_length_in diff --git a/docs/dd/daa/vod__media__info__dump__muxer__listener_8h_source.html b/docs/dd/daa/vod__media__info__dump__muxer__listener_8h_source.html index dcf7020a25..4c4dcdcea1 100644 --- a/docs/dd/daa/vod__media__info__dump__muxer__listener_8h_source.html +++ b/docs/dd/daa/vod__media__info__dump__muxer__listener_8h_source.html @@ -180,7 +180,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/dab/webm__muxer_8h_source.html b/docs/dd/dab/webm__muxer_8h_source.html index b9cc00562a..a57d771e03 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 ade6065b86..ba3caaa2af 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 3e907866b4..77d1887cca 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 d72ae85b66..7e0c304725 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 1f74e6a654..4f6042babd 100644 --- a/docs/dd/db9/classshaka_1_1xml_1_1RepresentationBaseXmlNode.html +++ b/docs/dd/db9/classshaka_1_1xml_1_1RepresentationBaseXmlNode.html @@ -194,7 +194,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 ebccea8a3d..9f6f7c3ff3 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 bd1abae427..476320f7c7 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 279f621622..e746e81029 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 a063ecc60f..9ff9997ec1 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 0d351ac648..5b0c561cd5 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 8380939d9f..b2d2262cbc 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 08b3179885..ad8ec473c3 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 @@ -441,7 +441,7 @@ virtual Sta diff --git a/docs/dd/dca/structshaka_1_1media_1_1mp4_1_1OriginalFormat-members.html b/docs/dd/dca/structshaka_1_1media_1_1mp4_1_1OriginalFormat-members.html index 7726acb311..6896d6dcc1 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 a84312b915..89399f6c02 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 7184f74c5c..d532bd237c 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 8ded848c7d..e755021a1d 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 bc7c67d7a5..0e1d3a4730 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 90187f6412..dc4623e320 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 ff0821c729..1be3df2e40 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 e30f121b7b..48253feb2c 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 3d62d79284..6f6760ca1c 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 56db6c4240..a9a38054f5 100644 --- a/docs/dd/de7/xml__node_8h_source.html +++ b/docs/dd/de7/xml__node_8h_source.html @@ -235,7 +235,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 fdb7285dcb..2118b05913 100644 --- a/docs/dd/dee/box__definitions_8cc_source.html +++ b/docs/dd/dee/box__definitions_8cc_source.html @@ -243,7 +243,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
154  return true;
155 }
156 
-
157 uint32_t FileType::ComputeSizeInternal() {
+
157 size_t FileType::ComputeSizeInternal() {
158  return HeaderSize() + kFourCCSize + sizeof(minor_version) +
159  kFourCCSize * compatible_brands.size();
160 }
@@ -267,7 +267,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
178  return true;
179 }
180 
-
181 uint32_t ProtectionSystemSpecificHeader::ComputeSizeInternal() {
+
181 size_t ProtectionSystemSpecificHeader::ComputeSizeInternal() {
182  return raw_box.size();
183 }
184 
@@ -280,7 +280,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
191  if (flags & 1)
192  RCHECK(buffer->IgnoreBytes(8)); // aux_info_type and parameter.
193 
-
194  uint32_t count = offsets.size();
+
194  uint32_t count = static_cast<uint32_t>(offsets.size());
195  RCHECK(buffer->ReadWriteUInt32(&count));
196  offsets.resize(count);
197 
@@ -290,7 +290,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
201  return true;
202 }
203 
-
204 uint32_t SampleAuxiliaryInformationOffset::ComputeSizeInternal() {
+
204 size_t SampleAuxiliaryInformationOffset::ComputeSizeInternal() {
205  // This box is optional. Skip it if it is empty.
206  if (offsets.size() == 0)
207  return 0;
@@ -315,7 +315,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
226  return true;
227 }
228 
-
229 uint32_t SampleAuxiliaryInformationSize::ComputeSizeInternal() {
+
229 size_t SampleAuxiliaryInformationSize::ComputeSizeInternal() {
230  // This box is optional. Skip it if it is empty.
231  if (sample_count == 0)
232  return 0;
@@ -379,2572 +379,2578 @@ 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 = static_cast<uint16_t>(subsamples.size());
-
293  return initialization_vector.size() +
-
294  (subsample_count > 0 ? (sizeof(subsample_count) +
-
295  subsample_entry_size * subsample_count)
-
296  : 0);
-
297 }
-
298 
- -
300  uint32_t size = 0;
-
301  for (uint32_t i = 0; i < subsamples.size(); ++i)
-
302  size += subsamples[i].clear_bytes + subsamples[i].cipher_bytes;
-
303  return size;
-
304 }
-
305 
-
306 SampleEncryption::SampleEncryption() : iv_size(kInvalidIvSize) {}
-
307 SampleEncryption::~SampleEncryption() {}
-
308 FourCC SampleEncryption::BoxType() const { return FOURCC_senc; }
-
309 
-
310 bool SampleEncryption::ReadWriteInternal(BoxBuffer* buffer) {
-
311  RCHECK(ReadWriteHeaderInternal(buffer));
-
312 
-
313  // If we don't know |iv_size|, store sample encryption data to parse later
-
314  // after we know iv_size.
-
315  if (buffer->Reading() && iv_size == kInvalidIvSize) {
-
316  RCHECK(
-
317  buffer->ReadWriteVector(&sample_encryption_data, buffer->BytesLeft()));
-
318  return true;
-
319  }
-
320 
-
321  if (!IsIvSizeValid(iv_size)) {
-
322  LOG(ERROR)
-
323  << "IV_size can only be 8 or 16 or 0 for constant iv, but seeing "
-
324  << iv_size;
-
325  return false;
-
326  }
-
327 
-
328  uint32_t sample_count = sample_encryption_entries.size();
-
329  RCHECK(buffer->ReadWriteUInt32(&sample_count));
-
330 
-
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) != 0, buffer) != 0);
-
335  }
-
336  return true;
-
337 }
-
338 
-
339 uint32_t SampleEncryption::ComputeSizeInternal() {
-
340  const uint32_t sample_count = sample_encryption_entries.size();
-
341  if (sample_count == 0) {
-
342  // Sample encryption box is optional. Skip it if it is empty.
-
343  return 0;
-
344  }
-
345 
-
346  DCHECK(IsIvSizeValid(iv_size));
-
347  uint32_t box_size = HeaderSize() + sizeof(sample_count);
-
348  if (flags & kUseSubsampleEncryption) {
-
349  for (const SampleEncryptionEntry& sample_encryption_entry :
-
350  sample_encryption_entries) {
-
351  box_size += sample_encryption_entry.ComputeSize();
-
352  }
-
353  } else {
-
354  box_size += sample_count * iv_size;
-
355  }
-
356  return box_size;
-
357 }
-
358 
- -
360  uint8_t iv_size,
-
361  std::vector<SampleEncryptionEntry>* sample_encryption_entries) const {
-
362  DCHECK(IsIvSizeValid(iv_size));
-
363 
-
364  BufferReader reader(sample_encryption_data.data(),
-
365  sample_encryption_data.size());
-
366  uint32_t sample_count = 0;
-
367  RCHECK(reader.Read4(&sample_count));
-
368 
-
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) != 0, &reader) != 0);
-
373  }
-
374  return true;
-
375 }
-
376 
-
377 OriginalFormat::OriginalFormat() : format(FOURCC_NULL) {}
-
378 OriginalFormat::~OriginalFormat() {}
-
379 FourCC OriginalFormat::BoxType() const { return FOURCC_frma; }
-
380 
-
381 bool OriginalFormat::ReadWriteInternal(BoxBuffer* buffer) {
-
382  return ReadWriteHeaderInternal(buffer) && buffer->ReadWriteFourCC(&format);
-
383 }
-
384 
-
385 uint32_t OriginalFormat::ComputeSizeInternal() {
-
386  return HeaderSize() + kFourCCSize;
-
387 }
-
388 
-
389 SchemeType::SchemeType() : type(FOURCC_NULL), version(0) {}
-
390 SchemeType::~SchemeType() {}
-
391 FourCC SchemeType::BoxType() const { return FOURCC_schm; }
-
392 
-
393 bool SchemeType::ReadWriteInternal(BoxBuffer* buffer) {
-
394  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
395  buffer->ReadWriteFourCC(&type) &&
-
396  buffer->ReadWriteUInt32(&version));
-
397  return true;
-
398 }
-
399 
-
400 uint32_t SchemeType::ComputeSizeInternal() {
-
401  return HeaderSize() + kFourCCSize + sizeof(version);
-
402 }
-
403 
-
404 TrackEncryption::TrackEncryption()
-
405  : default_is_protected(0),
-
406  default_per_sample_iv_size(0),
-
407  default_kid(16, 0),
-
408  default_crypt_byte_block(0),
-
409  default_skip_byte_block(0) {}
-
410 TrackEncryption::~TrackEncryption() {}
-
411 FourCC TrackEncryption::BoxType() const { return FOURCC_tenc; }
-
412 
-
413 bool TrackEncryption::ReadWriteInternal(BoxBuffer* buffer) {
-
414  if (!buffer->Reading()) {
-
415  if (default_kid.size() != kCencKeyIdSize) {
-
416  LOG(WARNING) << "CENC defines key id length of " << kCencKeyIdSize
-
417  << " bytes; got " << default_kid.size()
-
418  << ". Resized accordingly.";
-
419  default_kid.resize(kCencKeyIdSize);
-
420  }
-
421  RCHECK(default_crypt_byte_block < 16 && default_skip_byte_block < 16);
-
422  if (default_crypt_byte_block != 0 && default_skip_byte_block != 0) {
-
423  // Version 1 box is needed for pattern-based encryption.
-
424  version = 1;
-
425  }
-
426  }
-
427 
-
428  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
429  buffer->IgnoreBytes(1)); // reserved.
+
293  return static_cast<uint32_t>(
+
294  initialization_vector.size() +
+
295  (subsample_count > 0
+
296  ? (sizeof(subsample_count) + subsample_entry_size * subsample_count)
+
297  : 0));
+
298 }
+
299 
+ +
301  uint32_t size = 0;
+
302  for (uint32_t i = 0; i < subsamples.size(); ++i)
+
303  size += subsamples[i].clear_bytes + subsamples[i].cipher_bytes;
+
304  return size;
+
305 }
+
306 
+
307 SampleEncryption::SampleEncryption() : iv_size(kInvalidIvSize) {}
+
308 SampleEncryption::~SampleEncryption() {}
+
309 FourCC SampleEncryption::BoxType() const { return FOURCC_senc; }
+
310 
+
311 bool SampleEncryption::ReadWriteInternal(BoxBuffer* buffer) {
+
312  RCHECK(ReadWriteHeaderInternal(buffer));
+
313 
+
314  // If we don't know |iv_size|, store sample encryption data to parse later
+
315  // after we know iv_size.
+
316  if (buffer->Reading() && iv_size == kInvalidIvSize) {
+
317  RCHECK(
+
318  buffer->ReadWriteVector(&sample_encryption_data, buffer->BytesLeft()));
+
319  return true;
+
320  }
+
321 
+
322  if (!IsIvSizeValid(iv_size)) {
+
323  LOG(ERROR)
+
324  << "IV_size can only be 8 or 16 or 0 for constant iv, but seeing "
+
325  << iv_size;
+
326  return false;
+
327  }
+
328 
+
329  uint32_t sample_count =
+
330  static_cast<uint32_t>(sample_encryption_entries.size());
+
331  RCHECK(buffer->ReadWriteUInt32(&sample_count));
+
332 
+
333  sample_encryption_entries.resize(sample_count);
+
334  for (auto& sample_encryption_entry : sample_encryption_entries) {
+
335  RCHECK(sample_encryption_entry.ReadWrite(
+
336  iv_size, (flags & kUseSubsampleEncryption) != 0, buffer) != 0);
+
337  }
+
338  return true;
+
339 }
+
340 
+
341 size_t SampleEncryption::ComputeSizeInternal() {
+
342  const uint32_t sample_count =
+
343  static_cast<uint32_t>(sample_encryption_entries.size());
+
344  if (sample_count == 0) {
+
345  // Sample encryption box is optional. Skip it if it is empty.
+
346  return 0;
+
347  }
+
348 
+
349  DCHECK(IsIvSizeValid(iv_size));
+
350  size_t box_size = HeaderSize() + sizeof(sample_count);
+
351  if (flags & kUseSubsampleEncryption) {
+
352  for (const SampleEncryptionEntry& sample_encryption_entry :
+
353  sample_encryption_entries) {
+
354  box_size += sample_encryption_entry.ComputeSize();
+
355  }
+
356  } else {
+
357  box_size += sample_count * iv_size;
+
358  }
+
359  return box_size;
+
360 }
+
361 
+ +
363  uint8_t iv_size,
+
364  std::vector<SampleEncryptionEntry>* sample_encryption_entries) const {
+
365  DCHECK(IsIvSizeValid(iv_size));
+
366 
+
367  BufferReader reader(sample_encryption_data.data(),
+
368  sample_encryption_data.size());
+
369  uint32_t sample_count = 0;
+
370  RCHECK(reader.Read4(&sample_count));
+
371 
+
372  sample_encryption_entries->resize(sample_count);
+
373  for (auto& sample_encryption_entry : *sample_encryption_entries) {
+
374  RCHECK(sample_encryption_entry.ParseFromBuffer(
+
375  iv_size, (flags & kUseSubsampleEncryption) != 0, &reader) != 0);
+
376  }
+
377  return true;
+
378 }
+
379 
+
380 OriginalFormat::OriginalFormat() : format(FOURCC_NULL) {}
+
381 OriginalFormat::~OriginalFormat() {}
+
382 FourCC OriginalFormat::BoxType() const { return FOURCC_frma; }
+
383 
+
384 bool OriginalFormat::ReadWriteInternal(BoxBuffer* buffer) {
+
385  return ReadWriteHeaderInternal(buffer) && buffer->ReadWriteFourCC(&format);
+
386 }
+
387 
+
388 size_t OriginalFormat::ComputeSizeInternal() {
+
389  return HeaderSize() + kFourCCSize;
+
390 }
+
391 
+
392 SchemeType::SchemeType() : type(FOURCC_NULL), version(0) {}
+
393 SchemeType::~SchemeType() {}
+
394 FourCC SchemeType::BoxType() const { return FOURCC_schm; }
+
395 
+
396 bool SchemeType::ReadWriteInternal(BoxBuffer* buffer) {
+
397  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
398  buffer->ReadWriteFourCC(&type) &&
+
399  buffer->ReadWriteUInt32(&version));
+
400  return true;
+
401 }
+
402 
+
403 size_t SchemeType::ComputeSizeInternal() {
+
404  return HeaderSize() + kFourCCSize + sizeof(version);
+
405 }
+
406 
+
407 TrackEncryption::TrackEncryption()
+
408  : default_is_protected(0),
+
409  default_per_sample_iv_size(0),
+
410  default_kid(16, 0),
+
411  default_crypt_byte_block(0),
+
412  default_skip_byte_block(0) {}
+
413 TrackEncryption::~TrackEncryption() {}
+
414 FourCC TrackEncryption::BoxType() const { return FOURCC_tenc; }
+
415 
+
416 bool TrackEncryption::ReadWriteInternal(BoxBuffer* buffer) {
+
417  if (!buffer->Reading()) {
+
418  if (default_kid.size() != kCencKeyIdSize) {
+
419  LOG(WARNING) << "CENC defines key id length of " << kCencKeyIdSize
+
420  << " bytes; got " << default_kid.size()
+
421  << ". Resized accordingly.";
+
422  default_kid.resize(kCencKeyIdSize);
+
423  }
+
424  RCHECK(default_crypt_byte_block < 16 && default_skip_byte_block < 16);
+
425  if (default_crypt_byte_block != 0 && default_skip_byte_block != 0) {
+
426  // Version 1 box is needed for pattern-based encryption.
+
427  version = 1;
+
428  }
+
429  }
430 
-
431  uint8_t pattern = default_crypt_byte_block << 4 | default_skip_byte_block;
-
432  RCHECK(buffer->ReadWriteUInt8(&pattern));
-
433  default_crypt_byte_block = pattern >> 4;
-
434  default_skip_byte_block = pattern & 0x0F;
-
435 
-
436  RCHECK(buffer->ReadWriteUInt8(&default_is_protected) &&
-
437  buffer->ReadWriteUInt8(&default_per_sample_iv_size) &&
-
438  buffer->ReadWriteVector(&default_kid, kCencKeyIdSize));
-
439 
-
440  if (default_is_protected == 1) {
-
441  if (default_per_sample_iv_size == 0) { // For constant iv.
-
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));
-
448  } else {
-
449  RCHECK(default_per_sample_iv_size == 8 ||
-
450  default_per_sample_iv_size == 16);
-
451  RCHECK(default_constant_iv.empty());
-
452  }
-
453  } else {
-
454  // Expect |default_is_protected| to be 0, i.e. not protected. Other values
-
455  // of |default_is_protected| is not supported.
-
456  RCHECK(default_is_protected == 0);
-
457  RCHECK(default_per_sample_iv_size == 0);
-
458  RCHECK(default_constant_iv.empty());
-
459  }
-
460  return true;
-
461 }
-
462 
-
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()));
-
467 }
-
468 
-
469 SchemeInfo::SchemeInfo() {}
-
470 SchemeInfo::~SchemeInfo() {}
-
471 FourCC SchemeInfo::BoxType() const { return FOURCC_schi; }
-
472 
-
473 bool SchemeInfo::ReadWriteInternal(BoxBuffer* buffer) {
-
474  RCHECK(ReadWriteHeaderInternal(buffer) && buffer->PrepareChildren() &&
-
475  buffer->ReadWriteChild(&track_encryption));
-
476  return true;
-
477 }
-
478 
-
479 uint32_t SchemeInfo::ComputeSizeInternal() {
-
480  return HeaderSize() + track_encryption.ComputeSize();
-
481 }
-
482 
-
483 ProtectionSchemeInfo::ProtectionSchemeInfo() {}
-
484 ProtectionSchemeInfo::~ProtectionSchemeInfo() {}
-
485 FourCC ProtectionSchemeInfo::BoxType() const { return FOURCC_sinf; }
-
486 
-
487 bool ProtectionSchemeInfo::ReadWriteInternal(BoxBuffer* buffer) {
-
488  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
489  buffer->PrepareChildren() &&
-
490  buffer->ReadWriteChild(&format) &&
-
491  buffer->ReadWriteChild(&type));
-
492  if (IsProtectionSchemeSupported(type.type)) {
-
493  RCHECK(buffer->ReadWriteChild(&info));
-
494  } else {
-
495  DLOG(WARNING) << "Ignore unsupported protection scheme: "
-
496  << FourCCToString(type.type);
-
497  }
-
498  // Other protection schemes are silently ignored. Since the protection scheme
-
499  // type can't be determined until this box is opened, we return 'true' for
-
500  // non-CENC protection scheme types. It is the parent box's responsibility to
-
501  // ensure that this scheme type is a supported one.
-
502  return true;
-
503 }
-
504 
-
505 uint32_t ProtectionSchemeInfo::ComputeSizeInternal() {
-
506  // Skip sinf box if it is not initialized.
-
507  if (format.format == FOURCC_NULL)
-
508  return 0;
-
509  return HeaderSize() + format.ComputeSize() + type.ComputeSize() +
-
510  info.ComputeSize();
-
511 }
-
512 
-
513 MovieHeader::MovieHeader()
-
514  : creation_time(0),
-
515  modification_time(0),
-
516  timescale(0),
-
517  duration(0),
-
518  rate(1 << 16),
-
519  volume(1 << 8),
-
520  next_track_id(0) {}
-
521 MovieHeader::~MovieHeader() {}
-
522 FourCC MovieHeader::BoxType() const { return FOURCC_mvhd; }
-
523 
-
524 bool MovieHeader::ReadWriteInternal(BoxBuffer* buffer) {
-
525  RCHECK(ReadWriteHeaderInternal(buffer));
+
431  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
432  buffer->IgnoreBytes(1)); // reserved.
+
433 
+
434  uint8_t pattern = default_crypt_byte_block << 4 | default_skip_byte_block;
+
435  RCHECK(buffer->ReadWriteUInt8(&pattern));
+
436  default_crypt_byte_block = pattern >> 4;
+
437  default_skip_byte_block = pattern & 0x0F;
+
438 
+
439  RCHECK(buffer->ReadWriteUInt8(&default_is_protected) &&
+
440  buffer->ReadWriteUInt8(&default_per_sample_iv_size) &&
+
441  buffer->ReadWriteVector(&default_kid, kCencKeyIdSize));
+
442 
+
443  if (default_is_protected == 1) {
+
444  if (default_per_sample_iv_size == 0) { // For constant iv.
+
445  uint8_t default_constant_iv_size =
+
446  static_cast<uint8_t>(default_constant_iv.size());
+
447  RCHECK(buffer->ReadWriteUInt8(&default_constant_iv_size));
+
448  RCHECK(default_constant_iv_size == 8 || default_constant_iv_size == 16);
+
449  RCHECK(buffer->ReadWriteVector(&default_constant_iv,
+
450  default_constant_iv_size));
+
451  } else {
+
452  RCHECK(default_per_sample_iv_size == 8 ||
+
453  default_per_sample_iv_size == 16);
+
454  RCHECK(default_constant_iv.empty());
+
455  }
+
456  } else {
+
457  // Expect |default_is_protected| to be 0, i.e. not protected. Other values
+
458  // of |default_is_protected| is not supported.
+
459  RCHECK(default_is_protected == 0);
+
460  RCHECK(default_per_sample_iv_size == 0);
+
461  RCHECK(default_constant_iv.empty());
+
462  }
+
463  return true;
+
464 }
+
465 
+
466 size_t TrackEncryption::ComputeSizeInternal() {
+
467  return HeaderSize() + sizeof(uint32_t) + kCencKeyIdSize +
+
468  (default_constant_iv.empty() ? 0 : (sizeof(uint8_t) +
+
469  default_constant_iv.size()));
+
470 }
+
471 
+
472 SchemeInfo::SchemeInfo() {}
+
473 SchemeInfo::~SchemeInfo() {}
+
474 FourCC SchemeInfo::BoxType() const { return FOURCC_schi; }
+
475 
+
476 bool SchemeInfo::ReadWriteInternal(BoxBuffer* buffer) {
+
477  RCHECK(ReadWriteHeaderInternal(buffer) && buffer->PrepareChildren() &&
+
478  buffer->ReadWriteChild(&track_encryption));
+
479  return true;
+
480 }
+
481 
+
482 size_t SchemeInfo::ComputeSizeInternal() {
+
483  return HeaderSize() + track_encryption.ComputeSize();
+
484 }
+
485 
+
486 ProtectionSchemeInfo::ProtectionSchemeInfo() {}
+
487 ProtectionSchemeInfo::~ProtectionSchemeInfo() {}
+
488 FourCC ProtectionSchemeInfo::BoxType() const { return FOURCC_sinf; }
+
489 
+
490 bool ProtectionSchemeInfo::ReadWriteInternal(BoxBuffer* buffer) {
+
491  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
492  buffer->PrepareChildren() &&
+
493  buffer->ReadWriteChild(&format) &&
+
494  buffer->ReadWriteChild(&type));
+
495  if (IsProtectionSchemeSupported(type.type)) {
+
496  RCHECK(buffer->ReadWriteChild(&info));
+
497  } else {
+
498  DLOG(WARNING) << "Ignore unsupported protection scheme: "
+
499  << FourCCToString(type.type);
+
500  }
+
501  // Other protection schemes are silently ignored. Since the protection scheme
+
502  // type can't be determined until this box is opened, we return 'true' for
+
503  // non-CENC protection scheme types. It is the parent box's responsibility to
+
504  // ensure that this scheme type is a supported one.
+
505  return true;
+
506 }
+
507 
+
508 size_t ProtectionSchemeInfo::ComputeSizeInternal() {
+
509  // Skip sinf box if it is not initialized.
+
510  if (format.format == FOURCC_NULL)
+
511  return 0;
+
512  return HeaderSize() + format.ComputeSize() + type.ComputeSize() +
+
513  info.ComputeSize();
+
514 }
+
515 
+
516 MovieHeader::MovieHeader()
+
517  : creation_time(0),
+
518  modification_time(0),
+
519  timescale(0),
+
520  duration(0),
+
521  rate(1 << 16),
+
522  volume(1 << 8),
+
523  next_track_id(0) {}
+
524 MovieHeader::~MovieHeader() {}
+
525 FourCC MovieHeader::BoxType() const { return FOURCC_mvhd; }
526 
-
527  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
-
528  RCHECK(buffer->ReadWriteUInt64NBytes(&creation_time, num_bytes) &&
-
529  buffer->ReadWriteUInt64NBytes(&modification_time, num_bytes) &&
-
530  buffer->ReadWriteUInt32(&timescale) &&
-
531  buffer->ReadWriteUInt64NBytes(&duration, num_bytes));
-
532 
-
533  std::vector<uint8_t> matrix(kUnityMatrix,
-
534  kUnityMatrix + arraysize(kUnityMatrix));
-
535  RCHECK(buffer->ReadWriteInt32(&rate) &&
-
536  buffer->ReadWriteInt16(&volume) &&
-
537  buffer->IgnoreBytes(10) && // reserved
-
538  buffer->ReadWriteVector(&matrix, matrix.size()) &&
-
539  buffer->IgnoreBytes(24) && // predefined zero
-
540  buffer->ReadWriteUInt32(&next_track_id));
-
541  return true;
-
542 }
-
543 
-
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 +
-
549  24; // 10 bytes reserved, 24 bytes predefined.
-
550 }
-
551 
-
552 TrackHeader::TrackHeader()
-
553  : creation_time(0),
-
554  modification_time(0),
-
555  track_id(0),
-
556  duration(0),
-
557  layer(0),
-
558  alternate_group(0),
-
559  volume(-1),
-
560  width(0),
-
561  height(0) {
-
562  flags = kTrackEnabled | kTrackInMovie;
-
563 }
-
564 TrackHeader::~TrackHeader() {}
-
565 FourCC TrackHeader::BoxType() const { return FOURCC_tkhd; }
-
566 
-
567 bool TrackHeader::ReadWriteInternal(BoxBuffer* buffer) {
-
568  RCHECK(ReadWriteHeaderInternal(buffer));
+
527 bool MovieHeader::ReadWriteInternal(BoxBuffer* buffer) {
+
528  RCHECK(ReadWriteHeaderInternal(buffer));
+
529 
+
530  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
+
531  RCHECK(buffer->ReadWriteUInt64NBytes(&creation_time, num_bytes) &&
+
532  buffer->ReadWriteUInt64NBytes(&modification_time, num_bytes) &&
+
533  buffer->ReadWriteUInt32(&timescale) &&
+
534  buffer->ReadWriteUInt64NBytes(&duration, num_bytes));
+
535 
+
536  std::vector<uint8_t> matrix(kUnityMatrix,
+
537  kUnityMatrix + arraysize(kUnityMatrix));
+
538  RCHECK(buffer->ReadWriteInt32(&rate) &&
+
539  buffer->ReadWriteInt16(&volume) &&
+
540  buffer->IgnoreBytes(10) && // reserved
+
541  buffer->ReadWriteVector(&matrix, matrix.size()) &&
+
542  buffer->IgnoreBytes(24) && // predefined zero
+
543  buffer->ReadWriteUInt32(&next_track_id));
+
544  return true;
+
545 }
+
546 
+
547 size_t MovieHeader::ComputeSizeInternal() {
+
548  version = IsFitIn32Bits(creation_time, modification_time, duration) ? 0 : 1;
+
549  return HeaderSize() + sizeof(uint32_t) * (1 + version) * 3 +
+
550  sizeof(timescale) + sizeof(rate) + sizeof(volume) +
+
551  sizeof(next_track_id) + sizeof(kUnityMatrix) + 10 +
+
552  24; // 10 bytes reserved, 24 bytes predefined.
+
553 }
+
554 
+
555 TrackHeader::TrackHeader()
+
556  : creation_time(0),
+
557  modification_time(0),
+
558  track_id(0),
+
559  duration(0),
+
560  layer(0),
+
561  alternate_group(0),
+
562  volume(-1),
+
563  width(0),
+
564  height(0) {
+
565  flags = kTrackEnabled | kTrackInMovie;
+
566 }
+
567 TrackHeader::~TrackHeader() {}
+
568 FourCC TrackHeader::BoxType() const { return FOURCC_tkhd; }
569 
-
570  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
-
571  RCHECK(buffer->ReadWriteUInt64NBytes(&creation_time, num_bytes) &&
-
572  buffer->ReadWriteUInt64NBytes(&modification_time, num_bytes) &&
-
573  buffer->ReadWriteUInt32(&track_id) &&
-
574  buffer->IgnoreBytes(4) && // reserved
-
575  buffer->ReadWriteUInt64NBytes(&duration, num_bytes));
-
576 
-
577  if (!buffer->Reading()) {
-
578  // Set default value for volume, if track is audio, 0x100 else 0.
-
579  if (volume == -1)
-
580  volume = (width != 0 && height != 0) ? 0 : 0x100;
-
581  }
-
582  std::vector<uint8_t> matrix(kUnityMatrix,
-
583  kUnityMatrix + arraysize(kUnityMatrix));
-
584  RCHECK(buffer->IgnoreBytes(8) && // reserved
-
585  buffer->ReadWriteInt16(&layer) &&
-
586  buffer->ReadWriteInt16(&alternate_group) &&
-
587  buffer->ReadWriteInt16(&volume) &&
-
588  buffer->IgnoreBytes(2) && // reserved
-
589  buffer->ReadWriteVector(&matrix, matrix.size()) &&
-
590  buffer->ReadWriteUInt32(&width) &&
-
591  buffer->ReadWriteUInt32(&height));
-
592  return true;
-
593 }
-
594 
-
595 uint32_t TrackHeader::ComputeSizeInternal() {
-
596  version = IsFitIn32Bits(creation_time, modification_time, duration) ? 0 : 1;
-
597  return HeaderSize() + sizeof(track_id) +
-
598  sizeof(uint32_t) * (1 + version) * 3 + sizeof(layer) +
-
599  sizeof(alternate_group) + sizeof(volume) + sizeof(width) +
-
600  sizeof(height) + sizeof(kUnityMatrix) + 14; // 14 bytes reserved.
-
601 }
-
602 
-
603 SampleDescription::SampleDescription() : type(kInvalid) {}
-
604 SampleDescription::~SampleDescription() {}
-
605 FourCC SampleDescription::BoxType() const { return FOURCC_stsd; }
-
606 
-
607 bool SampleDescription::ReadWriteInternal(BoxBuffer* buffer) {
-
608  uint32_t count = 0;
-
609  switch (type) {
-
610  case kVideo:
-
611  count = video_entries.size();
-
612  break;
-
613  case kAudio:
-
614  count = audio_entries.size();
+
570 bool TrackHeader::ReadWriteInternal(BoxBuffer* buffer) {
+
571  RCHECK(ReadWriteHeaderInternal(buffer));
+
572 
+
573  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
+
574  RCHECK(buffer->ReadWriteUInt64NBytes(&creation_time, num_bytes) &&
+
575  buffer->ReadWriteUInt64NBytes(&modification_time, num_bytes) &&
+
576  buffer->ReadWriteUInt32(&track_id) &&
+
577  buffer->IgnoreBytes(4) && // reserved
+
578  buffer->ReadWriteUInt64NBytes(&duration, num_bytes));
+
579 
+
580  if (!buffer->Reading()) {
+
581  // Set default value for volume, if track is audio, 0x100 else 0.
+
582  if (volume == -1)
+
583  volume = (width != 0 && height != 0) ? 0 : 0x100;
+
584  }
+
585  std::vector<uint8_t> matrix(kUnityMatrix,
+
586  kUnityMatrix + arraysize(kUnityMatrix));
+
587  RCHECK(buffer->IgnoreBytes(8) && // reserved
+
588  buffer->ReadWriteInt16(&layer) &&
+
589  buffer->ReadWriteInt16(&alternate_group) &&
+
590  buffer->ReadWriteInt16(&volume) &&
+
591  buffer->IgnoreBytes(2) && // reserved
+
592  buffer->ReadWriteVector(&matrix, matrix.size()) &&
+
593  buffer->ReadWriteUInt32(&width) &&
+
594  buffer->ReadWriteUInt32(&height));
+
595  return true;
+
596 }
+
597 
+
598 size_t TrackHeader::ComputeSizeInternal() {
+
599  version = IsFitIn32Bits(creation_time, modification_time, duration) ? 0 : 1;
+
600  return HeaderSize() + sizeof(track_id) +
+
601  sizeof(uint32_t) * (1 + version) * 3 + sizeof(layer) +
+
602  sizeof(alternate_group) + sizeof(volume) + sizeof(width) +
+
603  sizeof(height) + sizeof(kUnityMatrix) + 14; // 14 bytes reserved.
+
604 }
+
605 
+
606 SampleDescription::SampleDescription() : type(kInvalid) {}
+
607 SampleDescription::~SampleDescription() {}
+
608 FourCC SampleDescription::BoxType() const { return FOURCC_stsd; }
+
609 
+
610 bool SampleDescription::ReadWriteInternal(BoxBuffer* buffer) {
+
611  uint32_t count = 0;
+
612  switch (type) {
+
613  case kVideo:
+
614  count = static_cast<uint32_t>(video_entries.size());
615  break;
-
616  case kText:
-
617  count = text_entries.size();
+
616  case kAudio:
+
617  count = static_cast<uint32_t>(audio_entries.size());
618  break;
-
619  default:
-
620  NOTIMPLEMENTED() << "SampleDecryption type " << type
-
621  << " is not handled. Skipping.";
-
622  }
-
623  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
624  buffer->ReadWriteUInt32(&count));
-
625 
-
626  if (buffer->Reading()) {
-
627  BoxReader* reader = buffer->reader();
-
628  DCHECK(reader);
-
629  video_entries.clear();
-
630  audio_entries.clear();
-
631  // Note: this value is preset before scanning begins. See comments in the
-
632  // Parse(Media*) function.
-
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);
-
642  }
-
643  } else {
-
644  DCHECK_LT(0u, count);
-
645  if (type == kVideo) {
-
646  for (uint32_t i = 0; i < count; ++i)
-
647  RCHECK(buffer->ReadWriteChild(&video_entries[i]));
-
648  } else if (type == kAudio) {
+
619  case kText:
+
620  count = static_cast<uint32_t>(text_entries.size());
+
621  break;
+
622  default:
+
623  NOTIMPLEMENTED() << "SampleDecryption type " << type
+
624  << " is not handled. Skipping.";
+
625  }
+
626  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
627  buffer->ReadWriteUInt32(&count));
+
628 
+
629  if (buffer->Reading()) {
+
630  BoxReader* reader = buffer->reader();
+
631  DCHECK(reader);
+
632  video_entries.clear();
+
633  audio_entries.clear();
+
634  // Note: this value is preset before scanning begins. See comments in the
+
635  // Parse(Media*) function.
+
636  if (type == kVideo) {
+
637  RCHECK(reader->ReadAllChildren(&video_entries));
+
638  RCHECK(video_entries.size() == count);
+
639  } else if (type == kAudio) {
+
640  RCHECK(reader->ReadAllChildren(&audio_entries));
+
641  RCHECK(audio_entries.size() == count);
+
642  } else if (type == kText) {
+
643  RCHECK(reader->ReadAllChildren(&text_entries));
+
644  RCHECK(text_entries.size() == count);
+
645  }
+
646  } else {
+
647  DCHECK_LT(0u, count);
+
648  if (type == kVideo) {
649  for (uint32_t i = 0; i < count; ++i)
-
650  RCHECK(buffer->ReadWriteChild(&audio_entries[i]));
-
651  } else if (type == kText) {
+
650  RCHECK(buffer->ReadWriteChild(&video_entries[i]));
+
651  } else if (type == kAudio) {
652  for (uint32_t i = 0; i < count; ++i)
-
653  RCHECK(buffer->ReadWriteChild(&text_entries[i]));
-
654  } else {
-
655  NOTIMPLEMENTED();
-
656  }
-
657  }
-
658  return true;
-
659 }
-
660 
-
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)
-
665  box_size += video_entries[i].ComputeSize();
-
666  } else if (type == kAudio) {
-
667  for (uint32_t i = 0; i < audio_entries.size(); ++i)
-
668  box_size += audio_entries[i].ComputeSize();
-
669  } else if (type == kText) {
-
670  for (uint32_t i = 0; i < text_entries.size(); ++i)
-
671  box_size += text_entries[i].ComputeSize();
-
672  }
-
673  return box_size;
-
674 }
-
675 
-
676 DecodingTimeToSample::DecodingTimeToSample() {}
-
677 DecodingTimeToSample::~DecodingTimeToSample() {}
-
678 FourCC DecodingTimeToSample::BoxType() const { return FOURCC_stts; }
-
679 
-
680 bool DecodingTimeToSample::ReadWriteInternal(BoxBuffer* buffer) {
-
681  uint32_t count = decoding_time.size();
-
682  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
683  buffer->ReadWriteUInt32(&count));
-
684 
-
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));
-
689  }
-
690  return true;
-
691 }
-
692 
-
693 uint32_t DecodingTimeToSample::ComputeSizeInternal() {
-
694  return HeaderSize() + sizeof(uint32_t) +
-
695  sizeof(DecodingTime) * decoding_time.size();
-
696 }
-
697 
-
698 CompositionTimeToSample::CompositionTimeToSample() {}
-
699 CompositionTimeToSample::~CompositionTimeToSample() {}
-
700 FourCC CompositionTimeToSample::BoxType() const { return FOURCC_ctts; }
-
701 
-
702 bool CompositionTimeToSample::ReadWriteInternal(BoxBuffer* buffer) {
-
703  uint32_t count = composition_offset.size();
-
704  if (!buffer->Reading()) {
-
705  // Determine whether version 0 or version 1 should be used.
-
706  // Use version 0 if possible, use version 1 if there is a negative
-
707  // sample_offset value.
-
708  version = 0;
-
709  for (uint32_t i = 0; i < count; ++i) {
-
710  if (composition_offset[i].sample_offset < 0) {
-
711  version = 1;
-
712  break;
-
713  }
-
714  }
-
715  }
-
716 
-
717  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
718  buffer->ReadWriteUInt32(&count));
+
653  RCHECK(buffer->ReadWriteChild(&audio_entries[i]));
+
654  } else if (type == kText) {
+
655  for (uint32_t i = 0; i < count; ++i)
+
656  RCHECK(buffer->ReadWriteChild(&text_entries[i]));
+
657  } else {
+
658  NOTIMPLEMENTED();
+
659  }
+
660  }
+
661  return true;
+
662 }
+
663 
+
664 size_t SampleDescription::ComputeSizeInternal() {
+
665  size_t box_size = HeaderSize() + sizeof(uint32_t);
+
666  if (type == kVideo) {
+
667  for (uint32_t i = 0; i < video_entries.size(); ++i)
+
668  box_size += video_entries[i].ComputeSize();
+
669  } else if (type == kAudio) {
+
670  for (uint32_t i = 0; i < audio_entries.size(); ++i)
+
671  box_size += audio_entries[i].ComputeSize();
+
672  } else if (type == kText) {
+
673  for (uint32_t i = 0; i < text_entries.size(); ++i)
+
674  box_size += text_entries[i].ComputeSize();
+
675  }
+
676  return box_size;
+
677 }
+
678 
+
679 DecodingTimeToSample::DecodingTimeToSample() {}
+
680 DecodingTimeToSample::~DecodingTimeToSample() {}
+
681 FourCC DecodingTimeToSample::BoxType() const { return FOURCC_stts; }
+
682 
+
683 bool DecodingTimeToSample::ReadWriteInternal(BoxBuffer* buffer) {
+
684  uint32_t count = static_cast<uint32_t>(decoding_time.size());
+
685  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
686  buffer->ReadWriteUInt32(&count));
+
687 
+
688  decoding_time.resize(count);
+
689  for (uint32_t i = 0; i < count; ++i) {
+
690  RCHECK(buffer->ReadWriteUInt32(&decoding_time[i].sample_count) &&
+
691  buffer->ReadWriteUInt32(&decoding_time[i].sample_delta));
+
692  }
+
693  return true;
+
694 }
+
695 
+
696 size_t DecodingTimeToSample::ComputeSizeInternal() {
+
697  return HeaderSize() + sizeof(uint32_t) +
+
698  sizeof(DecodingTime) * decoding_time.size();
+
699 }
+
700 
+
701 CompositionTimeToSample::CompositionTimeToSample() {}
+
702 CompositionTimeToSample::~CompositionTimeToSample() {}
+
703 FourCC CompositionTimeToSample::BoxType() const { return FOURCC_ctts; }
+
704 
+
705 bool CompositionTimeToSample::ReadWriteInternal(BoxBuffer* buffer) {
+
706  uint32_t count = static_cast<uint32_t>(composition_offset.size());
+
707  if (!buffer->Reading()) {
+
708  // Determine whether version 0 or version 1 should be used.
+
709  // Use version 0 if possible, use version 1 if there is a negative
+
710  // sample_offset value.
+
711  version = 0;
+
712  for (uint32_t i = 0; i < count; ++i) {
+
713  if (composition_offset[i].sample_offset < 0) {
+
714  version = 1;
+
715  break;
+
716  }
+
717  }
+
718  }
719 
-
720  composition_offset.resize(count);
-
721  for (uint32_t i = 0; i < count; ++i) {
-
722  RCHECK(buffer->ReadWriteUInt32(&composition_offset[i].sample_count));
-
723 
-
724  if (version == 0) {
-
725  uint32_t sample_offset = composition_offset[i].sample_offset;
-
726  RCHECK(buffer->ReadWriteUInt32(&sample_offset));
-
727  composition_offset[i].sample_offset = sample_offset;
-
728  } else {
-
729  int32_t sample_offset = composition_offset[i].sample_offset;
-
730  RCHECK(buffer->ReadWriteInt32(&sample_offset));
-
731  composition_offset[i].sample_offset = sample_offset;
-
732  }
-
733  }
-
734  return true;
-
735 }
-
736 
-
737 uint32_t CompositionTimeToSample::ComputeSizeInternal() {
-
738  // This box is optional. Skip it if it is empty.
-
739  if (composition_offset.empty())
-
740  return 0;
-
741  // Structure CompositionOffset contains |sample_offset| (uint32_t) and
-
742  // |sample_offset| (int64_t). The actual size of |sample_offset| is
-
743  // 4 bytes (uint32_t for version 0 and int32_t for version 1).
-
744  const uint32_t kCompositionOffsetSize = sizeof(uint32_t) * 2;
-
745  return HeaderSize() + sizeof(uint32_t) +
-
746  kCompositionOffsetSize * composition_offset.size();
-
747 }
-
748 
-
749 SampleToChunk::SampleToChunk() {}
-
750 SampleToChunk::~SampleToChunk() {}
-
751 FourCC SampleToChunk::BoxType() const { return FOURCC_stsc; }
-
752 
-
753 bool SampleToChunk::ReadWriteInternal(BoxBuffer* buffer) {
-
754  uint32_t count = chunk_info.size();
-
755  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
756  buffer->ReadWriteUInt32(&count));
-
757 
-
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));
-
763  // first_chunk values are always increasing.
-
764  RCHECK(i == 0 ? chunk_info[i].first_chunk == 1
-
765  : chunk_info[i].first_chunk > chunk_info[i - 1].first_chunk);
-
766  }
-
767  return true;
-
768 }
-
769 
-
770 uint32_t SampleToChunk::ComputeSizeInternal() {
-
771  return HeaderSize() + sizeof(uint32_t) +
-
772  sizeof(ChunkInfo) * chunk_info.size();
-
773 }
-
774 
-
775 SampleSize::SampleSize() : sample_size(0), sample_count(0) {}
-
776 SampleSize::~SampleSize() {}
-
777 FourCC SampleSize::BoxType() const { return FOURCC_stsz; }
-
778 
-
779 bool SampleSize::ReadWriteInternal(BoxBuffer* buffer) {
-
780  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
781  buffer->ReadWriteUInt32(&sample_size) &&
-
782  buffer->ReadWriteUInt32(&sample_count));
-
783 
-
784  if (sample_size == 0) {
-
785  if (buffer->Reading())
-
786  sizes.resize(sample_count);
-
787  else
-
788  DCHECK(sample_count == sizes.size());
-
789  for (uint32_t i = 0; i < sample_count; ++i)
-
790  RCHECK(buffer->ReadWriteUInt32(&sizes[i]));
-
791  }
-
792  return true;
-
793 }
-
794 
-
795 uint32_t SampleSize::ComputeSizeInternal() {
-
796  return HeaderSize() + sizeof(sample_size) + sizeof(sample_count) +
-
797  (sample_size == 0 ? sizeof(uint32_t) * sizes.size() : 0);
-
798 }
-
799 
-
800 CompactSampleSize::CompactSampleSize() : field_size(0) {}
-
801 CompactSampleSize::~CompactSampleSize() {}
-
802 FourCC CompactSampleSize::BoxType() const { return FOURCC_stz2; }
-
803 
-
804 bool CompactSampleSize::ReadWriteInternal(BoxBuffer* buffer) {
-
805  uint32_t sample_count = sizes.size();
-
806  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
807  buffer->IgnoreBytes(3) &&
-
808  buffer->ReadWriteUInt8(&field_size) &&
-
809  buffer->ReadWriteUInt32(&sample_count));
-
810 
-
811  // Reserve one more entry if field size is 4 bits.
-
812  sizes.resize(sample_count + (field_size == 4 ? 1 : 0), 0);
-
813  switch (field_size) {
-
814  case 4:
-
815  for (uint32_t i = 0; i < sample_count; i += 2) {
-
816  if (buffer->Reading()) {
-
817  uint8_t size = 0;
-
818  RCHECK(buffer->ReadWriteUInt8(&size));
-
819  sizes[i] = size >> 4;
-
820  sizes[i + 1] = size & 0x0F;
-
821  } else {
-
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));
-
826  }
-
827  }
-
828  break;
-
829  case 8:
-
830  for (uint32_t i = 0; i < sample_count; ++i) {
-
831  uint8_t size = sizes[i];
-
832  RCHECK(buffer->ReadWriteUInt8(&size));
-
833  sizes[i] = size;
-
834  }
-
835  break;
-
836  case 16:
-
837  for (uint32_t i = 0; i < sample_count; ++i) {
-
838  uint16_t size = sizes[i];
-
839  RCHECK(buffer->ReadWriteUInt16(&size));
-
840  sizes[i] = size;
-
841  }
-
842  break;
-
843  default:
-
844  RCHECK(false);
-
845  }
-
846  sizes.resize(sample_count);
-
847  return true;
-
848 }
-
849 
-
850 uint32_t CompactSampleSize::ComputeSizeInternal() {
-
851  return HeaderSize() + sizeof(uint32_t) + sizeof(uint32_t) +
-
852  (field_size * sizes.size() + 7) / 8;
-
853 }
-
854 
-
855 ChunkOffset::ChunkOffset() {}
-
856 ChunkOffset::~ChunkOffset() {}
-
857 FourCC ChunkOffset::BoxType() const { return FOURCC_stco; }
-
858 
-
859 bool ChunkOffset::ReadWriteInternal(BoxBuffer* buffer) {
-
860  uint32_t count = offsets.size();
-
861  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
862  buffer->ReadWriteUInt32(&count));
-
863 
-
864  offsets.resize(count);
-
865  for (uint32_t i = 0; i < count; ++i)
-
866  RCHECK(buffer->ReadWriteUInt64NBytes(&offsets[i], sizeof(uint32_t)));
-
867  return true;
-
868 }
-
869 
-
870 uint32_t ChunkOffset::ComputeSizeInternal() {
-
871  return HeaderSize() + sizeof(uint32_t) + sizeof(uint32_t) * offsets.size();
-
872 }
-
873 
-
874 ChunkLargeOffset::ChunkLargeOffset() {}
-
875 ChunkLargeOffset::~ChunkLargeOffset() {}
-
876 FourCC ChunkLargeOffset::BoxType() const { return FOURCC_co64; }
-
877 
-
878 bool ChunkLargeOffset::ReadWriteInternal(BoxBuffer* buffer) {
-
879  uint32_t count = offsets.size();
+
720  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
721  buffer->ReadWriteUInt32(&count));
+
722 
+
723  composition_offset.resize(count);
+
724  for (uint32_t i = 0; i < count; ++i) {
+
725  RCHECK(buffer->ReadWriteUInt32(&composition_offset[i].sample_count));
+
726 
+
727  if (version == 0) {
+
728  uint32_t sample_offset = composition_offset[i].sample_offset;
+
729  RCHECK(buffer->ReadWriteUInt32(&sample_offset));
+
730  composition_offset[i].sample_offset = sample_offset;
+
731  } else {
+
732  int32_t sample_offset = composition_offset[i].sample_offset;
+
733  RCHECK(buffer->ReadWriteInt32(&sample_offset));
+
734  composition_offset[i].sample_offset = sample_offset;
+
735  }
+
736  }
+
737  return true;
+
738 }
+
739 
+
740 size_t CompositionTimeToSample::ComputeSizeInternal() {
+
741  // This box is optional. Skip it if it is empty.
+
742  if (composition_offset.empty())
+
743  return 0;
+
744  // Structure CompositionOffset contains |sample_offset| (uint32_t) and
+
745  // |sample_offset| (int64_t). The actual size of |sample_offset| is
+
746  // 4 bytes (uint32_t for version 0 and int32_t for version 1).
+
747  const size_t kCompositionOffsetSize = sizeof(uint32_t) * 2;
+
748  return HeaderSize() + sizeof(uint32_t) +
+
749  kCompositionOffsetSize * composition_offset.size();
+
750 }
+
751 
+
752 SampleToChunk::SampleToChunk() {}
+
753 SampleToChunk::~SampleToChunk() {}
+
754 FourCC SampleToChunk::BoxType() const { return FOURCC_stsc; }
+
755 
+
756 bool SampleToChunk::ReadWriteInternal(BoxBuffer* buffer) {
+
757  uint32_t count = static_cast<uint32_t>(chunk_info.size());
+
758  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
759  buffer->ReadWriteUInt32(&count));
+
760 
+
761  chunk_info.resize(count);
+
762  for (uint32_t i = 0; i < count; ++i) {
+
763  RCHECK(buffer->ReadWriteUInt32(&chunk_info[i].first_chunk) &&
+
764  buffer->ReadWriteUInt32(&chunk_info[i].samples_per_chunk) &&
+
765  buffer->ReadWriteUInt32(&chunk_info[i].sample_description_index));
+
766  // first_chunk values are always increasing.
+
767  RCHECK(i == 0 ? chunk_info[i].first_chunk == 1
+
768  : chunk_info[i].first_chunk > chunk_info[i - 1].first_chunk);
+
769  }
+
770  return true;
+
771 }
+
772 
+
773 size_t SampleToChunk::ComputeSizeInternal() {
+
774  return HeaderSize() + sizeof(uint32_t) +
+
775  sizeof(ChunkInfo) * chunk_info.size();
+
776 }
+
777 
+
778 SampleSize::SampleSize() : sample_size(0), sample_count(0) {}
+
779 SampleSize::~SampleSize() {}
+
780 FourCC SampleSize::BoxType() const { return FOURCC_stsz; }
+
781 
+
782 bool SampleSize::ReadWriteInternal(BoxBuffer* buffer) {
+
783  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
784  buffer->ReadWriteUInt32(&sample_size) &&
+
785  buffer->ReadWriteUInt32(&sample_count));
+
786 
+
787  if (sample_size == 0) {
+
788  if (buffer->Reading())
+
789  sizes.resize(sample_count);
+
790  else
+
791  DCHECK(sample_count == sizes.size());
+
792  for (uint32_t i = 0; i < sample_count; ++i)
+
793  RCHECK(buffer->ReadWriteUInt32(&sizes[i]));
+
794  }
+
795  return true;
+
796 }
+
797 
+
798 size_t SampleSize::ComputeSizeInternal() {
+
799  return HeaderSize() + sizeof(sample_size) + sizeof(sample_count) +
+
800  (sample_size == 0 ? sizeof(uint32_t) * sizes.size() : 0);
+
801 }
+
802 
+
803 CompactSampleSize::CompactSampleSize() : field_size(0) {}
+
804 CompactSampleSize::~CompactSampleSize() {}
+
805 FourCC CompactSampleSize::BoxType() const { return FOURCC_stz2; }
+
806 
+
807 bool CompactSampleSize::ReadWriteInternal(BoxBuffer* buffer) {
+
808  uint32_t sample_count = static_cast<uint32_t>(sizes.size());
+
809  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
810  buffer->IgnoreBytes(3) &&
+
811  buffer->ReadWriteUInt8(&field_size) &&
+
812  buffer->ReadWriteUInt32(&sample_count));
+
813 
+
814  // Reserve one more entry if field size is 4 bits.
+
815  sizes.resize(sample_count + (field_size == 4 ? 1 : 0), 0);
+
816  switch (field_size) {
+
817  case 4:
+
818  for (uint32_t i = 0; i < sample_count; i += 2) {
+
819  if (buffer->Reading()) {
+
820  uint8_t size = 0;
+
821  RCHECK(buffer->ReadWriteUInt8(&size));
+
822  sizes[i] = size >> 4;
+
823  sizes[i + 1] = size & 0x0F;
+
824  } else {
+
825  DCHECK_LT(sizes[i], 16u);
+
826  DCHECK_LT(sizes[i + 1], 16u);
+
827  uint8_t size = (sizes[i] << 4) | sizes[i + 1];
+
828  RCHECK(buffer->ReadWriteUInt8(&size));
+
829  }
+
830  }
+
831  break;
+
832  case 8:
+
833  for (uint32_t i = 0; i < sample_count; ++i) {
+
834  uint8_t size = sizes[i];
+
835  RCHECK(buffer->ReadWriteUInt8(&size));
+
836  sizes[i] = size;
+
837  }
+
838  break;
+
839  case 16:
+
840  for (uint32_t i = 0; i < sample_count; ++i) {
+
841  uint16_t size = sizes[i];
+
842  RCHECK(buffer->ReadWriteUInt16(&size));
+
843  sizes[i] = size;
+
844  }
+
845  break;
+
846  default:
+
847  RCHECK(false);
+
848  }
+
849  sizes.resize(sample_count);
+
850  return true;
+
851 }
+
852 
+
853 size_t CompactSampleSize::ComputeSizeInternal() {
+
854  return HeaderSize() + sizeof(uint32_t) + sizeof(uint32_t) +
+
855  (field_size * sizes.size() + 7) / 8;
+
856 }
+
857 
+
858 ChunkOffset::ChunkOffset() {}
+
859 ChunkOffset::~ChunkOffset() {}
+
860 FourCC ChunkOffset::BoxType() const { return FOURCC_stco; }
+
861 
+
862 bool ChunkOffset::ReadWriteInternal(BoxBuffer* buffer) {
+
863  uint32_t count = static_cast<uint32_t>(offsets.size());
+
864  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
865  buffer->ReadWriteUInt32(&count));
+
866 
+
867  offsets.resize(count);
+
868  for (uint32_t i = 0; i < count; ++i)
+
869  RCHECK(buffer->ReadWriteUInt64NBytes(&offsets[i], sizeof(uint32_t)));
+
870  return true;
+
871 }
+
872 
+
873 size_t ChunkOffset::ComputeSizeInternal() {
+
874  return HeaderSize() + sizeof(uint32_t) + sizeof(uint32_t) * offsets.size();
+
875 }
+
876 
+
877 ChunkLargeOffset::ChunkLargeOffset() {}
+
878 ChunkLargeOffset::~ChunkLargeOffset() {}
+
879 FourCC ChunkLargeOffset::BoxType() const { return FOURCC_co64; }
880 
-
881  if (!buffer->Reading()) {
-
882  // Switch to ChunkOffset box if it is able to fit in 32 bits offset.
-
883  if (count == 0 || IsFitIn32Bits(offsets[count - 1])) {
-
884  ChunkOffset stco;
-
885  stco.offsets.swap(offsets);
-
886  DCHECK(buffer->writer());
-
887  stco.Write(buffer->writer());
+
881 bool ChunkLargeOffset::ReadWriteInternal(BoxBuffer* buffer) {
+
882  uint32_t count = static_cast<uint32_t>(offsets.size());
+
883 
+
884  if (!buffer->Reading()) {
+
885  // Switch to ChunkOffset box if it is able to fit in 32 bits offset.
+
886  if (count == 0 || IsFitIn32Bits(offsets[count - 1])) {
+
887  ChunkOffset stco;
888  stco.offsets.swap(offsets);
-
889  return true;
-
890  }
-
891  }
-
892 
-
893  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
894  buffer->ReadWriteUInt32(&count));
+
889  DCHECK(buffer->writer());
+
890  stco.Write(buffer->writer());
+
891  stco.offsets.swap(offsets);
+
892  return true;
+
893  }
+
894  }
895 
-
896  offsets.resize(count);
-
897  for (uint32_t i = 0; i < count; ++i)
-
898  RCHECK(buffer->ReadWriteUInt64(&offsets[i]));
-
899  return true;
-
900 }
-
901 
-
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;
-
906  return HeaderSize() + sizeof(count) +
-
907  sizeof(uint32_t) * (1 + use_large_offset) * offsets.size();
-
908 }
-
909 
-
910 SyncSample::SyncSample() {}
-
911 SyncSample::~SyncSample() {}
-
912 FourCC SyncSample::BoxType() const { return FOURCC_stss; }
-
913 
-
914 bool SyncSample::ReadWriteInternal(BoxBuffer* buffer) {
-
915  uint32_t count = sample_number.size();
-
916  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
917  buffer->ReadWriteUInt32(&count));
-
918 
-
919  sample_number.resize(count);
-
920  for (uint32_t i = 0; i < count; ++i)
-
921  RCHECK(buffer->ReadWriteUInt32(&sample_number[i]));
-
922  return true;
-
923 }
-
924 
-
925 uint32_t SyncSample::ComputeSizeInternal() {
-
926  // Sync sample box is optional. Skip it if it is empty.
-
927  if (sample_number.empty())
-
928  return 0;
-
929  return HeaderSize() + sizeof(uint32_t) +
-
930  sizeof(uint32_t) * sample_number.size();
-
931 }
-
932 
-
933 CencSampleEncryptionInfoEntry::CencSampleEncryptionInfoEntry()
-
934  : is_protected(0),
-
935  per_sample_iv_size(0),
-
936  crypt_byte_block(0),
-
937  skip_byte_block(0) {}
-
938 CencSampleEncryptionInfoEntry::~CencSampleEncryptionInfoEntry() {};
-
939 
-
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);
-
947  }
-
948  RCHECK(crypt_byte_block < 16 && skip_byte_block < 16);
-
949  }
-
950 
-
951  RCHECK(buffer->IgnoreBytes(1)); // reserved.
-
952 
-
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;
-
957 
-
958  RCHECK(buffer->ReadWriteUInt8(&is_protected) &&
-
959  buffer->ReadWriteUInt8(&per_sample_iv_size) &&
-
960  buffer->ReadWriteVector(&key_id, kCencKeyIdSize));
-
961 
-
962  if (is_protected == 1) {
-
963  if (per_sample_iv_size == 0) { // For constant iv.
-
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));
-
968  } else {
-
969  RCHECK(per_sample_iv_size == 8 || per_sample_iv_size == 16);
-
970  DCHECK(constant_iv.empty());
-
971  }
-
972  } else {
-
973  // Expect |is_protected| to be 0, i.e. not protected. Other values of
-
974  // |is_protected| is not supported.
-
975  RCHECK(is_protected == 0);
-
976  RCHECK(per_sample_iv_size == 0);
-
977  }
-
978  return true;
-
979 }
-
980 
-
981 uint32_t CencSampleEncryptionInfoEntry::ComputeSize() const {
-
982  return sizeof(uint32_t) + kCencKeyIdSize +
-
983  (constant_iv.empty() ? 0 : (sizeof(uint8_t) + constant_iv.size()));
-
984 }
-
985 
-
986 AudioRollRecoveryEntry::AudioRollRecoveryEntry(): roll_distance(0) {}
-
987 AudioRollRecoveryEntry::~AudioRollRecoveryEntry() {}
-
988 
-
989 bool AudioRollRecoveryEntry::ReadWrite(BoxBuffer* buffer) {
-
990  RCHECK(buffer->ReadWriteInt16(&roll_distance));
-
991  return true;
-
992 }
-
993 
-
994 uint32_t AudioRollRecoveryEntry::ComputeSize() const {
-
995  return sizeof(roll_distance);
+
896  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
897  buffer->ReadWriteUInt32(&count));
+
898 
+
899  offsets.resize(count);
+
900  for (uint32_t i = 0; i < count; ++i)
+
901  RCHECK(buffer->ReadWriteUInt64(&offsets[i]));
+
902  return true;
+
903 }
+
904 
+
905 size_t ChunkLargeOffset::ComputeSizeInternal() {
+
906  uint32_t count = static_cast<uint32_t>(offsets.size());
+
907  int use_large_offset =
+
908  (count > 0 && !IsFitIn32Bits(offsets[count - 1])) ? 1 : 0;
+
909  return HeaderSize() + sizeof(count) +
+
910  sizeof(uint32_t) * (1 + use_large_offset) * offsets.size();
+
911 }
+
912 
+
913 SyncSample::SyncSample() {}
+
914 SyncSample::~SyncSample() {}
+
915 FourCC SyncSample::BoxType() const { return FOURCC_stss; }
+
916 
+
917 bool SyncSample::ReadWriteInternal(BoxBuffer* buffer) {
+
918  uint32_t count = static_cast<uint32_t>(sample_number.size());
+
919  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
920  buffer->ReadWriteUInt32(&count));
+
921 
+
922  sample_number.resize(count);
+
923  for (uint32_t i = 0; i < count; ++i)
+
924  RCHECK(buffer->ReadWriteUInt32(&sample_number[i]));
+
925  return true;
+
926 }
+
927 
+
928 size_t SyncSample::ComputeSizeInternal() {
+
929  // Sync sample box is optional. Skip it if it is empty.
+
930  if (sample_number.empty())
+
931  return 0;
+
932  return HeaderSize() + sizeof(uint32_t) +
+
933  sizeof(uint32_t) * sample_number.size();
+
934 }
+
935 
+
936 CencSampleEncryptionInfoEntry::CencSampleEncryptionInfoEntry()
+
937  : is_protected(0),
+
938  per_sample_iv_size(0),
+
939  crypt_byte_block(0),
+
940  skip_byte_block(0) {}
+
941 CencSampleEncryptionInfoEntry::~CencSampleEncryptionInfoEntry() {};
+
942 
+
943 bool CencSampleEncryptionInfoEntry::ReadWrite(BoxBuffer* buffer) {
+
944  if (!buffer->Reading()) {
+
945  if (key_id.size() != kCencKeyIdSize) {
+
946  LOG(WARNING) << "CENC defines key id length of " << kCencKeyIdSize
+
947  << " bytes; got " << key_id.size()
+
948  << ". Resized accordingly.";
+
949  key_id.resize(kCencKeyIdSize);
+
950  }
+
951  RCHECK(crypt_byte_block < 16 && skip_byte_block < 16);
+
952  }
+
953 
+
954  RCHECK(buffer->IgnoreBytes(1)); // reserved.
+
955 
+
956  uint8_t pattern = crypt_byte_block << 4 | skip_byte_block;
+
957  RCHECK(buffer->ReadWriteUInt8(&pattern));
+
958  crypt_byte_block = pattern >> 4;
+
959  skip_byte_block = pattern & 0x0F;
+
960 
+
961  RCHECK(buffer->ReadWriteUInt8(&is_protected) &&
+
962  buffer->ReadWriteUInt8(&per_sample_iv_size) &&
+
963  buffer->ReadWriteVector(&key_id, kCencKeyIdSize));
+
964 
+
965  if (is_protected == 1) {
+
966  if (per_sample_iv_size == 0) { // For constant iv.
+
967  uint8_t constant_iv_size = static_cast<uint8_t>(constant_iv.size());
+
968  RCHECK(buffer->ReadWriteUInt8(&constant_iv_size));
+
969  RCHECK(constant_iv_size == 8 || constant_iv_size == 16);
+
970  RCHECK(buffer->ReadWriteVector(&constant_iv, constant_iv_size));
+
971  } else {
+
972  RCHECK(per_sample_iv_size == 8 || per_sample_iv_size == 16);
+
973  DCHECK(constant_iv.empty());
+
974  }
+
975  } else {
+
976  // Expect |is_protected| to be 0, i.e. not protected. Other values of
+
977  // |is_protected| is not supported.
+
978  RCHECK(is_protected == 0);
+
979  RCHECK(per_sample_iv_size == 0);
+
980  }
+
981  return true;
+
982 }
+
983 
+
984 uint32_t CencSampleEncryptionInfoEntry::ComputeSize() const {
+
985  return static_cast<uint32_t>(
+
986  sizeof(uint32_t) + kCencKeyIdSize +
+
987  (constant_iv.empty() ? 0 : (sizeof(uint8_t) + constant_iv.size())));
+
988 }
+
989 
+
990 AudioRollRecoveryEntry::AudioRollRecoveryEntry(): roll_distance(0) {}
+
991 AudioRollRecoveryEntry::~AudioRollRecoveryEntry() {}
+
992 
+
993 bool AudioRollRecoveryEntry::ReadWrite(BoxBuffer* buffer) {
+
994  RCHECK(buffer->ReadWriteInt16(&roll_distance));
+
995  return true;
996 }
997 
-
998 SampleGroupDescription::SampleGroupDescription() : grouping_type(0) {}
-
999 SampleGroupDescription::~SampleGroupDescription() {}
-
1000 FourCC SampleGroupDescription::BoxType() const { return FOURCC_sgpd; }
+
998 uint32_t AudioRollRecoveryEntry::ComputeSize() const {
+
999  return sizeof(roll_distance);
+
1000 }
1001 
-
1002 bool SampleGroupDescription::ReadWriteInternal(BoxBuffer* buffer) {
-
1003  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
1004  buffer->ReadWriteUInt32(&grouping_type));
+
1002 SampleGroupDescription::SampleGroupDescription() : grouping_type(0) {}
+
1003 SampleGroupDescription::~SampleGroupDescription() {}
+
1004 FourCC SampleGroupDescription::BoxType() const { return FOURCC_sgpd; }
1005 
-
1006  switch (grouping_type) {
-
1007  case FOURCC_seig:
-
1008  return ReadWriteEntries(buffer, &cenc_sample_encryption_info_entries);
-
1009  case FOURCC_roll:
-
1010  return ReadWriteEntries(buffer, &audio_roll_recovery_entries);
-
1011  default:
-
1012  DCHECK(buffer->Reading());
-
1013  DLOG(WARNING) << "Ignore unsupported sample group: "
-
1014  << FourCCToString(static_cast<FourCC>(grouping_type));
-
1015  return true;
-
1016  }
-
1017 }
-
1018 
-
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);
-
1027  }
-
1028  if (version == 1)
-
1029  RCHECK(buffer->ReadWriteUInt32(&default_length));
-
1030  if (version >= 2) {
-
1031  NOTIMPLEMENTED() << "Unsupported SampleGroupDescriptionBox 'sgpd' version "
-
1032  << static_cast<int>(version);
-
1033  return false;
-
1034  }
-
1035 
-
1036  uint32_t count = entries->size();
-
1037  RCHECK(buffer->ReadWriteUInt32(&count));
-
1038  RCHECK(count != 0);
-
1039  entries->resize(count);
-
1040 
-
1041  for (T& entry : *entries) {
-
1042  if (version == 1) {
-
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);
-
1048  } else {
-
1049  RCHECK(entry.ReadWrite(buffer));
-
1050  }
-
1051  }
-
1052  return true;
-
1053 }
-
1054 
-
1055 uint32_t SampleGroupDescription::ComputeSizeInternal() {
-
1056  // Version 0 is obsoleted, so always generate version 1 box.
-
1057  version = 1;
-
1058  size_t entries_size = 0;
-
1059  switch (grouping_type) {
-
1060  case FOURCC_seig:
-
1061  for (const auto& entry : cenc_sample_encryption_info_entries)
-
1062  entries_size += entry.ComputeSize();
-
1063  break;
-
1064  case FOURCC_roll:
-
1065  for (const auto& entry : audio_roll_recovery_entries)
+
1006 bool SampleGroupDescription::ReadWriteInternal(BoxBuffer* buffer) {
+
1007  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
1008  buffer->ReadWriteUInt32(&grouping_type));
+
1009 
+
1010  switch (grouping_type) {
+
1011  case FOURCC_seig:
+
1012  return ReadWriteEntries(buffer, &cenc_sample_encryption_info_entries);
+
1013  case FOURCC_roll:
+
1014  return ReadWriteEntries(buffer, &audio_roll_recovery_entries);
+
1015  default:
+
1016  DCHECK(buffer->Reading());
+
1017  DLOG(WARNING) << "Ignore unsupported sample group: "
+
1018  << FourCCToString(static_cast<FourCC>(grouping_type));
+
1019  return true;
+
1020  }
+
1021 }
+
1022 
+
1023 template <typename T>
+
1024 bool SampleGroupDescription::ReadWriteEntries(BoxBuffer* buffer,
+
1025  std::vector<T>* entries) {
+
1026  uint32_t default_length = 0;
+
1027  if (!buffer->Reading()) {
+
1028  DCHECK(!entries->empty());
+
1029  default_length = (*entries)[0].ComputeSize();
+
1030  DCHECK_NE(default_length, 0u);
+
1031  }
+
1032  if (version == 1)
+
1033  RCHECK(buffer->ReadWriteUInt32(&default_length));
+
1034  if (version >= 2) {
+
1035  NOTIMPLEMENTED() << "Unsupported SampleGroupDescriptionBox 'sgpd' version "
+
1036  << static_cast<int>(version);
+
1037  return false;
+
1038  }
+
1039 
+
1040  uint32_t count = static_cast<uint32_t>(entries->size());
+
1041  RCHECK(buffer->ReadWriteUInt32(&count));
+
1042  RCHECK(count != 0);
+
1043  entries->resize(count);
+
1044 
+
1045  for (T& entry : *entries) {
+
1046  if (version == 1) {
+
1047  uint32_t description_length = default_length;
+
1048  if (buffer->Reading() && default_length == 0)
+
1049  RCHECK(buffer->ReadWriteUInt32(&description_length));
+
1050  RCHECK(entry.ReadWrite(buffer));
+
1051  RCHECK(entry.ComputeSize() == description_length);
+
1052  } else {
+
1053  RCHECK(entry.ReadWrite(buffer));
+
1054  }
+
1055  }
+
1056  return true;
+
1057 }
+
1058 
+
1059 size_t SampleGroupDescription::ComputeSizeInternal() {
+
1060  // Version 0 is obsoleted, so always generate version 1 box.
+
1061  version = 1;
+
1062  size_t entries_size = 0;
+
1063  switch (grouping_type) {
+
1064  case FOURCC_seig:
+
1065  for (const auto& entry : cenc_sample_encryption_info_entries)
1066  entries_size += entry.ComputeSize();
1067  break;
-
1068  }
-
1069  // This box is optional. Skip it if it is not used.
-
1070  if (entries_size == 0)
-
1071  return 0;
-
1072  return HeaderSize() + sizeof(grouping_type) +
-
1073  (version == 1 ? sizeof(uint32_t) : 0) + sizeof(uint32_t) +
-
1074  entries_size;
-
1075 }
-
1076 
-
1077 SampleToGroup::SampleToGroup() : grouping_type(0), grouping_type_parameter(0) {}
-
1078 SampleToGroup::~SampleToGroup() {}
-
1079 FourCC SampleToGroup::BoxType() const { return FOURCC_sbgp; }
+
1068  case FOURCC_roll:
+
1069  for (const auto& entry : audio_roll_recovery_entries)
+
1070  entries_size += entry.ComputeSize();
+
1071  break;
+
1072  }
+
1073  // This box is optional. Skip it if it is not used.
+
1074  if (entries_size == 0)
+
1075  return 0;
+
1076  return HeaderSize() + sizeof(grouping_type) +
+
1077  (version == 1 ? sizeof(uint32_t) : 0) + sizeof(uint32_t) +
+
1078  entries_size;
+
1079 }
1080 
-
1081 bool SampleToGroup::ReadWriteInternal(BoxBuffer* buffer) {
-
1082  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
1083  buffer->ReadWriteUInt32(&grouping_type));
-
1084  if (version == 1)
-
1085  RCHECK(buffer->ReadWriteUInt32(&grouping_type_parameter));
-
1086 
-
1087  if (grouping_type != FOURCC_seig && grouping_type != FOURCC_roll) {
-
1088  DCHECK(buffer->Reading());
-
1089  DLOG(WARNING) << "Ignore unsupported sample group: "
-
1090  << FourCCToString(static_cast<FourCC>(grouping_type));
-
1091  return true;
-
1092  }
-
1093 
-
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));
-
1100  }
-
1101  return true;
-
1102 }
-
1103 
-
1104 uint32_t SampleToGroup::ComputeSizeInternal() {
-
1105  // This box is optional. Skip it if it is not used.
-
1106  if (entries.empty())
-
1107  return 0;
-
1108  return HeaderSize() + sizeof(grouping_type) +
-
1109  (version == 1 ? sizeof(grouping_type_parameter) : 0) +
-
1110  sizeof(uint32_t) + entries.size() * sizeof(entries[0]);
-
1111 }
-
1112 
-
1113 SampleTable::SampleTable() {}
-
1114 SampleTable::~SampleTable() {}
-
1115 FourCC SampleTable::BoxType() const { return FOURCC_stbl; }
+
1081 SampleToGroup::SampleToGroup() : grouping_type(0), grouping_type_parameter(0) {}
+
1082 SampleToGroup::~SampleToGroup() {}
+
1083 FourCC SampleToGroup::BoxType() const { return FOURCC_sbgp; }
+
1084 
+
1085 bool SampleToGroup::ReadWriteInternal(BoxBuffer* buffer) {
+
1086  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
1087  buffer->ReadWriteUInt32(&grouping_type));
+
1088  if (version == 1)
+
1089  RCHECK(buffer->ReadWriteUInt32(&grouping_type_parameter));
+
1090 
+
1091  if (grouping_type != FOURCC_seig && grouping_type != FOURCC_roll) {
+
1092  DCHECK(buffer->Reading());
+
1093  DLOG(WARNING) << "Ignore unsupported sample group: "
+
1094  << FourCCToString(static_cast<FourCC>(grouping_type));
+
1095  return true;
+
1096  }
+
1097 
+
1098  uint32_t count = static_cast<uint32_t>(entries.size());
+
1099  RCHECK(buffer->ReadWriteUInt32(&count));
+
1100  entries.resize(count);
+
1101  for (uint32_t i = 0; i < count; ++i) {
+
1102  RCHECK(buffer->ReadWriteUInt32(&entries[i].sample_count) &&
+
1103  buffer->ReadWriteUInt32(&entries[i].group_description_index));
+
1104  }
+
1105  return true;
+
1106 }
+
1107 
+
1108 size_t SampleToGroup::ComputeSizeInternal() {
+
1109  // This box is optional. Skip it if it is not used.
+
1110  if (entries.empty())
+
1111  return 0;
+
1112  return HeaderSize() + sizeof(grouping_type) +
+
1113  (version == 1 ? sizeof(grouping_type_parameter) : 0) +
+
1114  sizeof(uint32_t) + entries.size() * sizeof(entries[0]);
+
1115 }
1116 
-
1117 bool SampleTable::ReadWriteInternal(BoxBuffer* buffer) {
-
1118  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
1119  buffer->PrepareChildren() &&
-
1120  buffer->ReadWriteChild(&description) &&
-
1121  buffer->ReadWriteChild(&decoding_time_to_sample) &&
-
1122  buffer->TryReadWriteChild(&composition_time_to_sample) &&
-
1123  buffer->ReadWriteChild(&sample_to_chunk));
-
1124 
-
1125  if (buffer->Reading()) {
-
1126  BoxReader* reader = buffer->reader();
-
1127  DCHECK(reader);
+
1117 SampleTable::SampleTable() {}
+
1118 SampleTable::~SampleTable() {}
+
1119 FourCC SampleTable::BoxType() const { return FOURCC_stbl; }
+
1120 
+
1121 bool SampleTable::ReadWriteInternal(BoxBuffer* buffer) {
+
1122  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
1123  buffer->PrepareChildren() &&
+
1124  buffer->ReadWriteChild(&description) &&
+
1125  buffer->ReadWriteChild(&decoding_time_to_sample) &&
+
1126  buffer->TryReadWriteChild(&composition_time_to_sample) &&
+
1127  buffer->ReadWriteChild(&sample_to_chunk));
1128 
-
1129  // Either SampleSize or CompactSampleSize must present.
-
1130  if (reader->ChildExist(&sample_size)) {
-
1131  RCHECK(reader->ReadChild(&sample_size));
-
1132  } else {
-
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);
-
1138  }
-
1139 
-
1140  // Either ChunkOffset or ChunkLargeOffset must present.
-
1141  if (reader->ChildExist(&chunk_large_offset)) {
-
1142  RCHECK(reader->ReadChild(&chunk_large_offset));
-
1143  } else {
-
1144  ChunkOffset chunk_offset;
-
1145  RCHECK(reader->ReadChild(&chunk_offset));
-
1146  chunk_large_offset.offsets.swap(chunk_offset.offsets);
-
1147  }
-
1148  } else {
-
1149  RCHECK(buffer->ReadWriteChild(&sample_size) &&
-
1150  buffer->ReadWriteChild(&chunk_large_offset));
-
1151  }
-
1152  RCHECK(buffer->TryReadWriteChild(&sync_sample));
-
1153  if (buffer->Reading()) {
-
1154  RCHECK(buffer->reader()->TryReadChildren(&sample_group_descriptions) &&
-
1155  buffer->reader()->TryReadChildren(&sample_to_groups));
-
1156  } else {
-
1157  for (auto& sample_group_description : sample_group_descriptions)
-
1158  RCHECK(buffer->ReadWriteChild(&sample_group_description));
-
1159  for (auto& sample_to_group : sample_to_groups)
-
1160  RCHECK(buffer->ReadWriteChild(&sample_to_group));
-
1161  }
-
1162  return true;
-
1163 }
-
1164 
-
1165 uint32_t SampleTable::ComputeSizeInternal() {
-
1166  uint32_t box_size =
-
1167  HeaderSize() + description.ComputeSize() +
-
1168  decoding_time_to_sample.ComputeSize() +
-
1169  composition_time_to_sample.ComputeSize() + sample_to_chunk.ComputeSize() +
-
1170  sample_size.ComputeSize() + chunk_large_offset.ComputeSize() +
-
1171  sync_sample.ComputeSize();
-
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();
-
1176  return box_size;
-
1177 }
-
1178 
-
1179 EditList::EditList() {}
-
1180 EditList::~EditList() {}
-
1181 FourCC EditList::BoxType() const { return FOURCC_elst; }
-
1182 
-
1183 bool EditList::ReadWriteInternal(BoxBuffer* buffer) {
-
1184  uint32_t count = edits.size();
-
1185  RCHECK(ReadWriteHeaderInternal(buffer) && buffer->ReadWriteUInt32(&count));
-
1186  edits.resize(count);
+
1129  if (buffer->Reading()) {
+
1130  BoxReader* reader = buffer->reader();
+
1131  DCHECK(reader);
+
1132 
+
1133  // Either SampleSize or CompactSampleSize must present.
+
1134  if (reader->ChildExist(&sample_size)) {
+
1135  RCHECK(reader->ReadChild(&sample_size));
+
1136  } else {
+
1137  CompactSampleSize compact_sample_size;
+
1138  RCHECK(reader->ReadChild(&compact_sample_size));
+
1139  sample_size.sample_size = 0;
+
1140  sample_size.sample_count =
+
1141  static_cast<uint32_t>(compact_sample_size.sizes.size());
+
1142  sample_size.sizes.swap(compact_sample_size.sizes);
+
1143  }
+
1144 
+
1145  // Either ChunkOffset or ChunkLargeOffset must present.
+
1146  if (reader->ChildExist(&chunk_large_offset)) {
+
1147  RCHECK(reader->ReadChild(&chunk_large_offset));
+
1148  } else {
+
1149  ChunkOffset chunk_offset;
+
1150  RCHECK(reader->ReadChild(&chunk_offset));
+
1151  chunk_large_offset.offsets.swap(chunk_offset.offsets);
+
1152  }
+
1153  } else {
+
1154  RCHECK(buffer->ReadWriteChild(&sample_size) &&
+
1155  buffer->ReadWriteChild(&chunk_large_offset));
+
1156  }
+
1157  RCHECK(buffer->TryReadWriteChild(&sync_sample));
+
1158  if (buffer->Reading()) {
+
1159  RCHECK(buffer->reader()->TryReadChildren(&sample_group_descriptions) &&
+
1160  buffer->reader()->TryReadChildren(&sample_to_groups));
+
1161  } else {
+
1162  for (auto& sample_group_description : sample_group_descriptions)
+
1163  RCHECK(buffer->ReadWriteChild(&sample_group_description));
+
1164  for (auto& sample_to_group : sample_to_groups)
+
1165  RCHECK(buffer->ReadWriteChild(&sample_to_group));
+
1166  }
+
1167  return true;
+
1168 }
+
1169 
+
1170 size_t SampleTable::ComputeSizeInternal() {
+
1171  size_t box_size = HeaderSize() + description.ComputeSize() +
+
1172  decoding_time_to_sample.ComputeSize() +
+
1173  composition_time_to_sample.ComputeSize() +
+
1174  sample_to_chunk.ComputeSize() + sample_size.ComputeSize() +
+
1175  chunk_large_offset.ComputeSize() +
+
1176  sync_sample.ComputeSize();
+
1177  for (auto& sample_group_description : sample_group_descriptions)
+
1178  box_size += sample_group_description.ComputeSize();
+
1179  for (auto& sample_to_group : sample_to_groups)
+
1180  box_size += sample_to_group.ComputeSize();
+
1181  return box_size;
+
1182 }
+
1183 
+
1184 EditList::EditList() {}
+
1185 EditList::~EditList() {}
+
1186 FourCC EditList::BoxType() const { return FOURCC_elst; }
1187 
-
1188  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
-
1189  for (uint32_t i = 0; i < count; ++i) {
-
1190  RCHECK(
-
1191  buffer->ReadWriteUInt64NBytes(&edits[i].segment_duration, num_bytes) &&
-
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));
-
1195  }
-
1196  return true;
-
1197 }
-
1198 
-
1199 uint32_t EditList::ComputeSizeInternal() {
-
1200  // EditList box is optional. Skip it if it is empty.
-
1201  if (edits.empty())
-
1202  return 0;
+
1188 bool EditList::ReadWriteInternal(BoxBuffer* buffer) {
+
1189  uint32_t count = static_cast<uint32_t>(edits.size());
+
1190  RCHECK(ReadWriteHeaderInternal(buffer) && buffer->ReadWriteUInt32(&count));
+
1191  edits.resize(count);
+
1192 
+
1193  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
+
1194  for (uint32_t i = 0; i < count; ++i) {
+
1195  RCHECK(
+
1196  buffer->ReadWriteUInt64NBytes(&edits[i].segment_duration, num_bytes) &&
+
1197  buffer->ReadWriteInt64NBytes(&edits[i].media_time, num_bytes) &&
+
1198  buffer->ReadWriteInt16(&edits[i].media_rate_integer) &&
+
1199  buffer->ReadWriteInt16(&edits[i].media_rate_fraction));
+
1200  }
+
1201  return true;
+
1202 }
1203 
-
1204  version = 0;
-
1205  for (uint32_t i = 0; i < edits.size(); ++i) {
-
1206  if (!IsFitIn32Bits(edits[i].segment_duration, edits[i].media_time)) {
-
1207  version = 1;
-
1208  break;
-
1209  }
-
1210  }
-
1211  return HeaderSize() + sizeof(uint32_t) +
-
1212  (sizeof(uint32_t) * (1 + version) * 2 + sizeof(int16_t) * 2) *
-
1213  edits.size();
-
1214 }
-
1215 
-
1216 Edit::Edit() {}
-
1217 Edit::~Edit() {}
-
1218 FourCC Edit::BoxType() const { return FOURCC_edts; }
-
1219 
-
1220 bool Edit::ReadWriteInternal(BoxBuffer* buffer) {
-
1221  return ReadWriteHeaderInternal(buffer) &&
-
1222  buffer->PrepareChildren() &&
-
1223  buffer->ReadWriteChild(&list);
-
1224 }
-
1225 
-
1226 uint32_t Edit::ComputeSizeInternal() {
-
1227  // Edit box is optional. Skip it if it is empty.
-
1228  if (list.edits.empty())
-
1229  return 0;
-
1230  return HeaderSize() + list.ComputeSize();
-
1231 }
-
1232 
-
1233 HandlerReference::HandlerReference() : handler_type(FOURCC_NULL) {}
-
1234 HandlerReference::~HandlerReference() {}
-
1235 FourCC HandlerReference::BoxType() const { return FOURCC_hdlr; }
-
1236 
-
1237 bool HandlerReference::ReadWriteInternal(BoxBuffer* buffer) {
-
1238  std::vector<uint8_t> handler_name;
-
1239  if (!buffer->Reading()) {
-
1240  switch (handler_type) {
-
1241  case FOURCC_vide:
-
1242  handler_name.assign(kVideoHandlerName,
-
1243  kVideoHandlerName + arraysize(kVideoHandlerName));
-
1244  break;
-
1245  case FOURCC_soun:
-
1246  handler_name.assign(kAudioHandlerName,
-
1247  kAudioHandlerName + arraysize(kAudioHandlerName));
-
1248  break;
-
1249  case FOURCC_text:
-
1250  handler_name.assign(kTextHandlerName,
-
1251  kTextHandlerName + arraysize(kTextHandlerName));
-
1252  break;
-
1253  case FOURCC_ID32:
-
1254  break;
-
1255  default:
-
1256  NOTIMPLEMENTED();
-
1257  return false;
-
1258  }
-
1259  }
-
1260  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
1261  buffer->IgnoreBytes(4) && // predefined.
-
1262  buffer->ReadWriteFourCC(&handler_type));
-
1263  if (!buffer->Reading()) {
-
1264  RCHECK(buffer->IgnoreBytes(12) && // reserved.
-
1265  buffer->ReadWriteVector(&handler_name, handler_name.size()));
-
1266  }
-
1267  return true;
-
1268 }
-
1269 
-
1270 uint32_t HandlerReference::ComputeSizeInternal() {
-
1271  uint32_t box_size = HeaderSize() + kFourCCSize + 16; // 16 bytes Reserved
-
1272  switch (handler_type) {
-
1273  case FOURCC_vide:
-
1274  box_size += sizeof(kVideoHandlerName);
-
1275  break;
-
1276  case FOURCC_soun:
-
1277  box_size += sizeof(kAudioHandlerName);
-
1278  break;
-
1279  case FOURCC_text:
-
1280  box_size += sizeof(kTextHandlerName);
-
1281  break;
-
1282  case FOURCC_ID32:
+
1204 size_t EditList::ComputeSizeInternal() {
+
1205  // EditList box is optional. Skip it if it is empty.
+
1206  if (edits.empty())
+
1207  return 0;
+
1208 
+
1209  version = 0;
+
1210  for (uint32_t i = 0; i < edits.size(); ++i) {
+
1211  if (!IsFitIn32Bits(edits[i].segment_duration, edits[i].media_time)) {
+
1212  version = 1;
+
1213  break;
+
1214  }
+
1215  }
+
1216  return HeaderSize() + sizeof(uint32_t) +
+
1217  (sizeof(uint32_t) * (1 + version) * 2 + sizeof(int16_t) * 2) *
+
1218  edits.size();
+
1219 }
+
1220 
+
1221 Edit::Edit() {}
+
1222 Edit::~Edit() {}
+
1223 FourCC Edit::BoxType() const { return FOURCC_edts; }
+
1224 
+
1225 bool Edit::ReadWriteInternal(BoxBuffer* buffer) {
+
1226  return ReadWriteHeaderInternal(buffer) &&
+
1227  buffer->PrepareChildren() &&
+
1228  buffer->ReadWriteChild(&list);
+
1229 }
+
1230 
+
1231 size_t Edit::ComputeSizeInternal() {
+
1232  // Edit box is optional. Skip it if it is empty.
+
1233  if (list.edits.empty())
+
1234  return 0;
+
1235  return HeaderSize() + list.ComputeSize();
+
1236 }
+
1237 
+
1238 HandlerReference::HandlerReference() : handler_type(FOURCC_NULL) {}
+
1239 HandlerReference::~HandlerReference() {}
+
1240 FourCC HandlerReference::BoxType() const { return FOURCC_hdlr; }
+
1241 
+
1242 bool HandlerReference::ReadWriteInternal(BoxBuffer* buffer) {
+
1243  std::vector<uint8_t> handler_name;
+
1244  if (!buffer->Reading()) {
+
1245  switch (handler_type) {
+
1246  case FOURCC_vide:
+
1247  handler_name.assign(kVideoHandlerName,
+
1248  kVideoHandlerName + arraysize(kVideoHandlerName));
+
1249  break;
+
1250  case FOURCC_soun:
+
1251  handler_name.assign(kAudioHandlerName,
+
1252  kAudioHandlerName + arraysize(kAudioHandlerName));
+
1253  break;
+
1254  case FOURCC_text:
+
1255  handler_name.assign(kTextHandlerName,
+
1256  kTextHandlerName + arraysize(kTextHandlerName));
+
1257  break;
+
1258  case FOURCC_ID32:
+
1259  break;
+
1260  default:
+
1261  NOTIMPLEMENTED();
+
1262  return false;
+
1263  }
+
1264  }
+
1265  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
1266  buffer->IgnoreBytes(4) && // predefined.
+
1267  buffer->ReadWriteFourCC(&handler_type));
+
1268  if (!buffer->Reading()) {
+
1269  RCHECK(buffer->IgnoreBytes(12) && // reserved.
+
1270  buffer->ReadWriteVector(&handler_name, handler_name.size()));
+
1271  }
+
1272  return true;
+
1273 }
+
1274 
+
1275 size_t HandlerReference::ComputeSizeInternal() {
+
1276  size_t box_size = HeaderSize() + kFourCCSize + 16; // 16 bytes Reserved
+
1277  switch (handler_type) {
+
1278  case FOURCC_vide:
+
1279  box_size += sizeof(kVideoHandlerName);
+
1280  break;
+
1281  case FOURCC_soun:
+
1282  box_size += sizeof(kAudioHandlerName);
1283  break;
-
1284  default:
-
1285  NOTIMPLEMENTED();
-
1286  }
-
1287  return box_size;
-
1288 }
-
1289 
-
1290 bool Language::ReadWrite(BoxBuffer* buffer) {
-
1291  if (buffer->Reading()) {
-
1292  // Read language codes into temp first then use BitReader to read the
-
1293  // values. ISO-639-2/T language code: unsigned int(5)[3] language (2 bytes).
-
1294  std::vector<uint8_t> temp;
-
1295  RCHECK(buffer->ReadWriteVector(&temp, 2));
-
1296 
-
1297  BitReader bit_reader(&temp[0], 2);
-
1298  bit_reader.SkipBits(1);
-
1299  char language[3];
-
1300  for (int i = 0; i < 3; ++i) {
-
1301  CHECK(bit_reader.ReadBits(5, &language[i]));
-
1302  language[i] += 0x60;
-
1303  }
-
1304  code.assign(language, 3);
-
1305  } else {
-
1306  // Set up default language if it is not set.
-
1307  const char kUndefinedLanguage[] = "und";
-
1308  if (code.empty())
-
1309  code = kUndefinedLanguage;
-
1310  DCHECK_EQ(code.size(), 3u);
-
1311 
-
1312  // Lang format: bit(1) pad, unsigned int(5)[3] language.
-
1313  uint16_t lang = 0;
-
1314  for (int i = 0; i < 3; ++i)
-
1315  lang |= (code[i] - 0x60) << ((2 - i) * 5);
-
1316  RCHECK(buffer->ReadWriteUInt16(&lang));
-
1317  }
-
1318  return true;
-
1319 }
-
1320 
-
1321 uint32_t Language::ComputeSize() const {
-
1322  // ISO-639-2/T language code: unsigned int(5)[3] language (2 bytes).
-
1323  return 2;
+
1284  case FOURCC_text:
+
1285  box_size += sizeof(kTextHandlerName);
+
1286  break;
+
1287  case FOURCC_ID32:
+
1288  break;
+
1289  default:
+
1290  NOTIMPLEMENTED();
+
1291  }
+
1292  return box_size;
+
1293 }
+
1294 
+
1295 bool Language::ReadWrite(BoxBuffer* buffer) {
+
1296  if (buffer->Reading()) {
+
1297  // Read language codes into temp first then use BitReader to read the
+
1298  // values. ISO-639-2/T language code: unsigned int(5)[3] language (2 bytes).
+
1299  std::vector<uint8_t> temp;
+
1300  RCHECK(buffer->ReadWriteVector(&temp, 2));
+
1301 
+
1302  BitReader bit_reader(&temp[0], 2);
+
1303  bit_reader.SkipBits(1);
+
1304  char language[3];
+
1305  for (int i = 0; i < 3; ++i) {
+
1306  CHECK(bit_reader.ReadBits(5, &language[i]));
+
1307  language[i] += 0x60;
+
1308  }
+
1309  code.assign(language, 3);
+
1310  } else {
+
1311  // Set up default language if it is not set.
+
1312  const char kUndefinedLanguage[] = "und";
+
1313  if (code.empty())
+
1314  code = kUndefinedLanguage;
+
1315  DCHECK_EQ(code.size(), 3u);
+
1316 
+
1317  // Lang format: bit(1) pad, unsigned int(5)[3] language.
+
1318  uint16_t lang = 0;
+
1319  for (int i = 0; i < 3; ++i)
+
1320  lang |= (code[i] - 0x60) << ((2 - i) * 5);
+
1321  RCHECK(buffer->ReadWriteUInt16(&lang));
+
1322  }
+
1323  return true;
1324 }
1325 
-
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);
-
1332  return true;
-
1333  }
-
1334 
-
1335  uint32_t frame_size = owner.size() + 1 + value.size();
-
1336  // size should be encoded as synchsafe integer, which is not support here.
-
1337  // We don't expect frame_size to be larger than 0x7F. Synchsafe integers less
-
1338  // than 0x7F is encoded in the same way as normal integer.
-
1339  DCHECK_LT(frame_size, 0x7Fu);
-
1340  uint16_t flags = 0;
-
1341  RCHECK(buffer->ReadWriteUInt32(&frame_size) &&
-
1342  buffer->ReadWriteUInt16(&flags));
-
1343 
-
1344  if (buffer->Reading()) {
-
1345  std::string str;
-
1346  RCHECK(buffer->ReadWriteString(&str, frame_size));
-
1347  // |owner| is null terminated.
-
1348  size_t pos = str.find('\0');
-
1349  RCHECK(pos < str.size());
-
1350  owner = str.substr(0, pos);
-
1351  value = str.substr(pos + 1);
-
1352  } else {
-
1353  uint8_t byte = 0; // Null terminating byte between owner and value.
-
1354  RCHECK(buffer->ReadWriteString(&owner, owner.size()) &&
-
1355  buffer->ReadWriteUInt8(&byte) &&
-
1356  buffer->ReadWriteString(&value, value.size()));
-
1357  }
-
1358  return true;
-
1359 }
-
1360 
-
1361 uint32_t PrivFrame::ComputeSize() const {
-
1362  if (owner.empty() && value.empty())
-
1363  return 0;
-
1364  const uint32_t kFourCCSize = 4;
-
1365  return kFourCCSize + sizeof(uint32_t) + sizeof(uint16_t) + owner.size() + 1 +
-
1366  value.size();
-
1367 }
-
1368 
-
1369 ID3v2::ID3v2() {}
-
1370 ID3v2::~ID3v2() {}
-
1371 
-
1372 FourCC ID3v2::BoxType() const { return FOURCC_ID32; }
-
1373 
-
1374 bool ID3v2::ReadWriteInternal(BoxBuffer* buffer) {
-
1375  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
1376  language.ReadWrite(buffer));
+
1326 uint32_t Language::ComputeSize() const {
+
1327  // ISO-639-2/T language code: unsigned int(5)[3] language (2 bytes).
+
1328  return 2;
+
1329 }
+
1330 
+
1331 bool PrivFrame::ReadWrite(BoxBuffer* buffer) {
+
1332  FourCC fourcc = FOURCC_PRIV;
+
1333  RCHECK(buffer->ReadWriteFourCC(&fourcc));
+
1334  if (fourcc != FOURCC_PRIV) {
+
1335  VLOG(1) << "Skip unrecognized id3 frame during read: "
+
1336  << FourCCToString(fourcc);
+
1337  return true;
+
1338  }
+
1339 
+
1340  uint32_t frame_size = static_cast<uint32_t>(owner.size() + 1 + value.size());
+
1341  // size should be encoded as synchsafe integer, which is not support here.
+
1342  // We don't expect frame_size to be larger than 0x7F. Synchsafe integers less
+
1343  // than 0x7F is encoded in the same way as normal integer.
+
1344  DCHECK_LT(frame_size, 0x7Fu);
+
1345  uint16_t flags = 0;
+
1346  RCHECK(buffer->ReadWriteUInt32(&frame_size) &&
+
1347  buffer->ReadWriteUInt16(&flags));
+
1348 
+
1349  if (buffer->Reading()) {
+
1350  std::string str;
+
1351  RCHECK(buffer->ReadWriteString(&str, frame_size));
+
1352  // |owner| is null terminated.
+
1353  size_t pos = str.find('\0');
+
1354  RCHECK(pos < str.size());
+
1355  owner = str.substr(0, pos);
+
1356  value = str.substr(pos + 1);
+
1357  } else {
+
1358  uint8_t byte = 0; // Null terminating byte between owner and value.
+
1359  RCHECK(buffer->ReadWriteString(&owner, owner.size()) &&
+
1360  buffer->ReadWriteUInt8(&byte) &&
+
1361  buffer->ReadWriteString(&value, value.size()));
+
1362  }
+
1363  return true;
+
1364 }
+
1365 
+
1366 uint32_t PrivFrame::ComputeSize() const {
+
1367  if (owner.empty() && value.empty())
+
1368  return 0;
+
1369  const uint32_t kFourCCSize = 4;
+
1370  return kFourCCSize +
+
1371  static_cast<uint32_t>(sizeof(uint32_t) + sizeof(uint16_t) +
+
1372  owner.size() + 1 + value.size());
+
1373 }
+
1374 
+
1375 ID3v2::ID3v2() {}
+
1376 ID3v2::~ID3v2() {}
1377 
-
1378  // Read/Write ID3v2 header
-
1379  std::string id3v2_identifier = kID3v2Identifier;
-
1380  uint16_t version = kID3v2Version;
-
1381  // We only support PrivateFrame in ID3.
-
1382  uint32_t data_size = private_frame.ComputeSize();
-
1383  // size should be encoded as synchsafe integer, which is not support here.
-
1384  // We don't expect data_size to be larger than 0x7F. Synchsafe integers less
-
1385  // than 0x7F is encoded in the same way as normal integer.
-
1386  DCHECK_LT(data_size, 0x7Fu);
-
1387  uint8_t flags = 0;
-
1388  RCHECK(buffer->ReadWriteString(&id3v2_identifier, id3v2_identifier.size()) &&
-
1389  buffer->ReadWriteUInt16(&version) &&
-
1390  buffer->ReadWriteUInt8(&flags) &&
-
1391  buffer->ReadWriteUInt32(&data_size));
-
1392 
-
1393  RCHECK(private_frame.ReadWrite(buffer));
-
1394  return true;
-
1395 }
-
1396 
-
1397 uint32_t ID3v2::ComputeSizeInternal() {
-
1398  uint32_t private_frame_size = private_frame.ComputeSize();
-
1399  // Skip ID3v2 box generation if there is no private frame.
-
1400  return private_frame_size == 0 ? 0 : HeaderSize() + language.ComputeSize() +
-
1401  kID3v2HeaderSize +
-
1402  private_frame_size;
-
1403 }
-
1404 
-
1405 Metadata::Metadata() {}
-
1406 Metadata::~Metadata() {}
-
1407 
-
1408 FourCC Metadata::BoxType() const {
-
1409  return FOURCC_meta;
-
1410 }
-
1411 
-
1412 bool Metadata::ReadWriteInternal(BoxBuffer* buffer) {
-
1413  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
1414  buffer->PrepareChildren() &&
-
1415  buffer->ReadWriteChild(&handler) &&
-
1416  buffer->TryReadWriteChild(&id3v2));
-
1417  return true;
-
1418 }
-
1419 
-
1420 uint32_t Metadata::ComputeSizeInternal() {
-
1421  uint32_t id3v2_size = id3v2.ComputeSize();
-
1422  // Skip metadata box generation if there is no metadata box.
-
1423  return id3v2_size == 0 ? 0
-
1424  : HeaderSize() + handler.ComputeSize() + id3v2_size;
-
1425 }
-
1426 
-
1427 CodecConfiguration::CodecConfiguration() : box_type(FOURCC_NULL) {}
-
1428 CodecConfiguration::~CodecConfiguration() {}
-
1429 
- -
1431  // CodecConfiguration box should be parsed according to format recovered in
-
1432  // VideoSampleEntry. |box_type| is determined dynamically there.
-
1433  return box_type;
-
1434 }
+
1378 FourCC ID3v2::BoxType() const { return FOURCC_ID32; }
+
1379 
+
1380 bool ID3v2::ReadWriteInternal(BoxBuffer* buffer) {
+
1381  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
1382  language.ReadWrite(buffer));
+
1383 
+
1384  // Read/Write ID3v2 header
+
1385  std::string id3v2_identifier = kID3v2Identifier;
+
1386  uint16_t version = kID3v2Version;
+
1387  // We only support PrivateFrame in ID3.
+
1388  uint32_t data_size = private_frame.ComputeSize();
+
1389  // size should be encoded as synchsafe integer, which is not support here.
+
1390  // We don't expect data_size to be larger than 0x7F. Synchsafe integers less
+
1391  // than 0x7F is encoded in the same way as normal integer.
+
1392  DCHECK_LT(data_size, 0x7Fu);
+
1393  uint8_t flags = 0;
+
1394  RCHECK(buffer->ReadWriteString(&id3v2_identifier, id3v2_identifier.size()) &&
+
1395  buffer->ReadWriteUInt16(&version) &&
+
1396  buffer->ReadWriteUInt8(&flags) &&
+
1397  buffer->ReadWriteUInt32(&data_size));
+
1398 
+
1399  RCHECK(private_frame.ReadWrite(buffer));
+
1400  return true;
+
1401 }
+
1402 
+
1403 size_t ID3v2::ComputeSizeInternal() {
+
1404  uint32_t private_frame_size = private_frame.ComputeSize();
+
1405  // Skip ID3v2 box generation if there is no private frame.
+
1406  return private_frame_size == 0 ? 0 : HeaderSize() + language.ComputeSize() +
+
1407  kID3v2HeaderSize +
+
1408  private_frame_size;
+
1409 }
+
1410 
+
1411 Metadata::Metadata() {}
+
1412 Metadata::~Metadata() {}
+
1413 
+
1414 FourCC Metadata::BoxType() const {
+
1415  return FOURCC_meta;
+
1416 }
+
1417 
+
1418 bool Metadata::ReadWriteInternal(BoxBuffer* buffer) {
+
1419  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
1420  buffer->PrepareChildren() &&
+
1421  buffer->ReadWriteChild(&handler) &&
+
1422  buffer->TryReadWriteChild(&id3v2));
+
1423  return true;
+
1424 }
+
1425 
+
1426 size_t Metadata::ComputeSizeInternal() {
+
1427  size_t id3v2_size = id3v2.ComputeSize();
+
1428  // Skip metadata box generation if there is no metadata box.
+
1429  return id3v2_size == 0 ? 0
+
1430  : HeaderSize() + handler.ComputeSize() + id3v2_size;
+
1431 }
+
1432 
+
1433 CodecConfiguration::CodecConfiguration() : box_type(FOURCC_NULL) {}
+
1434 CodecConfiguration::~CodecConfiguration() {}
1435 
-
1436 bool CodecConfiguration::ReadWriteInternal(BoxBuffer* buffer) {
-
1437  DCHECK_NE(box_type, FOURCC_NULL);
-
1438  RCHECK(ReadWriteHeaderInternal(buffer));
-
1439 
-
1440  // VPCodecConfiguration box inherits from FullBox instead of Box. The extra 4
-
1441  // bytes are handled here.
-
1442  if (box_type == FOURCC_vpcC) {
-
1443  uint32_t version_flags = 0;
-
1444  RCHECK(buffer->ReadWriteUInt32(&version_flags));
-
1445  RCHECK(version_flags == 0);
-
1446  }
-
1447 
-
1448  if (buffer->Reading()) {
-
1449  RCHECK(buffer->ReadWriteVector(&data, buffer->BytesLeft()));
-
1450  } else {
-
1451  RCHECK(buffer->ReadWriteVector(&data, data.size()));
+ +
1437  // CodecConfiguration box should be parsed according to format recovered in
+
1438  // VideoSampleEntry. |box_type| is determined dynamically there.
+
1439  return box_type;
+
1440 }
+
1441 
+
1442 bool CodecConfiguration::ReadWriteInternal(BoxBuffer* buffer) {
+
1443  DCHECK_NE(box_type, FOURCC_NULL);
+
1444  RCHECK(ReadWriteHeaderInternal(buffer));
+
1445 
+
1446  // VPCodecConfiguration box inherits from FullBox instead of Box. The extra 4
+
1447  // bytes are handled here.
+
1448  if (box_type == FOURCC_vpcC) {
+
1449  uint32_t version_flags = 0;
+
1450  RCHECK(buffer->ReadWriteUInt32(&version_flags));
+
1451  RCHECK(version_flags == 0);
1452  }
-
1453  return true;
-
1454 }
-
1455 
-
1456 uint32_t CodecConfiguration::ComputeSizeInternal() {
-
1457  if (data.empty())
-
1458  return 0;
-
1459  DCHECK_NE(box_type, FOURCC_NULL);
-
1460  return HeaderSize() + (box_type == FOURCC_vpcC ? 4 : 0) + data.size();
-
1461 }
-
1462 
-
1463 PixelAspectRatio::PixelAspectRatio() : h_spacing(0), v_spacing(0) {}
-
1464 PixelAspectRatio::~PixelAspectRatio() {}
-
1465 FourCC PixelAspectRatio::BoxType() const { return FOURCC_pasp; }
-
1466 
-
1467 bool PixelAspectRatio::ReadWriteInternal(BoxBuffer* buffer) {
-
1468  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
1469  buffer->ReadWriteUInt32(&h_spacing) &&
-
1470  buffer->ReadWriteUInt32(&v_spacing));
-
1471  return true;
-
1472 }
-
1473 
-
1474 uint32_t PixelAspectRatio::ComputeSizeInternal() {
-
1475  // This box is optional. Skip it if it is not initialized.
-
1476  if (h_spacing == 0 && v_spacing == 0)
-
1477  return 0;
-
1478  // Both values must be positive.
-
1479  DCHECK(h_spacing != 0 && v_spacing != 0);
-
1480  return HeaderSize() + sizeof(h_spacing) + sizeof(v_spacing);
-
1481 }
-
1482 
-
1483 VideoSampleEntry::VideoSampleEntry()
-
1484  : format(FOURCC_NULL), data_reference_index(1), width(0), height(0) {}
-
1485 
-
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.";
-
1491  }
-
1492  return format;
-
1493 }
-
1494 
-
1495 bool VideoSampleEntry::ReadWriteInternal(BoxBuffer* buffer) {
-
1496  std::vector<uint8_t> compressor_name;
-
1497  if (buffer->Reading()) {
-
1498  DCHECK(buffer->reader());
-
1499  format = buffer->reader()->type();
-
1500  } else {
-
1501  RCHECK(ReadWriteHeaderInternal(buffer));
-
1502 
-
1503  const FourCC actual_format = GetActualFormat();
-
1504  switch (actual_format) {
-
1505  case FOURCC_avc1:
-
1506  compressor_name.assign(
-
1507  kAvcCompressorName,
-
1508  kAvcCompressorName + arraysize(kAvcCompressorName));
-
1509  break;
-
1510  case FOURCC_hev1:
-
1511  case FOURCC_hvc1:
+
1453 
+
1454  if (buffer->Reading()) {
+
1455  RCHECK(buffer->ReadWriteVector(&data, buffer->BytesLeft()));
+
1456  } else {
+
1457  RCHECK(buffer->ReadWriteVector(&data, data.size()));
+
1458  }
+
1459  return true;
+
1460 }
+
1461 
+
1462 size_t CodecConfiguration::ComputeSizeInternal() {
+
1463  if (data.empty())
+
1464  return 0;
+
1465  DCHECK_NE(box_type, FOURCC_NULL);
+
1466  return HeaderSize() + (box_type == FOURCC_vpcC ? 4 : 0) + data.size();
+
1467 }
+
1468 
+
1469 PixelAspectRatio::PixelAspectRatio() : h_spacing(0), v_spacing(0) {}
+
1470 PixelAspectRatio::~PixelAspectRatio() {}
+
1471 FourCC PixelAspectRatio::BoxType() const { return FOURCC_pasp; }
+
1472 
+
1473 bool PixelAspectRatio::ReadWriteInternal(BoxBuffer* buffer) {
+
1474  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
1475  buffer->ReadWriteUInt32(&h_spacing) &&
+
1476  buffer->ReadWriteUInt32(&v_spacing));
+
1477  return true;
+
1478 }
+
1479 
+
1480 size_t PixelAspectRatio::ComputeSizeInternal() {
+
1481  // This box is optional. Skip it if it is not initialized.
+
1482  if (h_spacing == 0 && v_spacing == 0)
+
1483  return 0;
+
1484  // Both values must be positive.
+
1485  DCHECK(h_spacing != 0 && v_spacing != 0);
+
1486  return HeaderSize() + sizeof(h_spacing) + sizeof(v_spacing);
+
1487 }
+
1488 
+
1489 VideoSampleEntry::VideoSampleEntry()
+
1490  : format(FOURCC_NULL), data_reference_index(1), width(0), height(0) {}
+
1491 
+
1492 VideoSampleEntry::~VideoSampleEntry() {}
+ +
1494  if (format == FOURCC_NULL) {
+
1495  LOG(ERROR) << "VideoSampleEntry should be parsed according to the "
+
1496  << "handler type recovered in its Media ancestor.";
+
1497  }
+
1498  return format;
+
1499 }
+
1500 
+
1501 bool VideoSampleEntry::ReadWriteInternal(BoxBuffer* buffer) {
+
1502  std::vector<uint8_t> compressor_name;
+
1503  if (buffer->Reading()) {
+
1504  DCHECK(buffer->reader());
+
1505  format = buffer->reader()->type();
+
1506  } else {
+
1507  RCHECK(ReadWriteHeaderInternal(buffer));
+
1508 
+
1509  const FourCC actual_format = GetActualFormat();
+
1510  switch (actual_format) {
+
1511  case FOURCC_avc1:
1512  compressor_name.assign(
-
1513  kHevcCompressorName,
-
1514  kHevcCompressorName + arraysize(kHevcCompressorName));
+
1513  kAvcCompressorName,
+
1514  kAvcCompressorName + arraysize(kAvcCompressorName));
1515  break;
-
1516  case FOURCC_vp08:
-
1517  case FOURCC_vp09:
-
1518  case FOURCC_vp10:
-
1519  compressor_name.assign(
-
1520  kVpcCompressorName,
-
1521  kVpcCompressorName + arraysize(kVpcCompressorName));
-
1522  break;
-
1523  default:
-
1524  LOG(ERROR) << FourCCToString(actual_format) << " is not supported.";
-
1525  return false;
-
1526  }
-
1527  compressor_name.resize(kCompressorNameSize);
-
1528  }
-
1529 
-
1530  uint32_t video_resolution = kVideoResolution;
-
1531  uint16_t video_frame_count = kVideoFrameCount;
-
1532  uint16_t video_depth = kVideoDepth;
-
1533  int16_t predefined = -1;
-
1534  RCHECK(buffer->IgnoreBytes(6) && // reserved.
-
1535  buffer->ReadWriteUInt16(&data_reference_index) &&
-
1536  buffer->IgnoreBytes(16) && // predefined 0.
-
1537  buffer->ReadWriteUInt16(&width) &&
-
1538  buffer->ReadWriteUInt16(&height) &&
-
1539  buffer->ReadWriteUInt32(&video_resolution) &&
-
1540  buffer->ReadWriteUInt32(&video_resolution) &&
-
1541  buffer->IgnoreBytes(4) && // reserved.
-
1542  buffer->ReadWriteUInt16(&video_frame_count) &&
-
1543  buffer->ReadWriteVector(&compressor_name, kCompressorNameSize) &&
-
1544  buffer->ReadWriteUInt16(&video_depth) &&
-
1545  buffer->ReadWriteInt16(&predefined));
-
1546 
-
1547  RCHECK(buffer->PrepareChildren());
-
1548 
-
1549  if (format == FOURCC_encv) {
-
1550  if (buffer->Reading()) {
-
1551  // Continue scanning until a supported protection scheme is found, or
-
1552  // until we run out of protection schemes.
-
1553  while (!IsProtectionSchemeSupported(sinf.type.type))
-
1554  RCHECK(buffer->ReadWriteChild(&sinf));
-
1555  } else {
-
1556  DCHECK(IsProtectionSchemeSupported(sinf.type.type));
-
1557  RCHECK(buffer->ReadWriteChild(&sinf));
-
1558  }
-
1559  }
-
1560 
-
1561  const FourCC actual_format = GetActualFormat();
-
1562  if (buffer->Reading()) {
-
1563  codec_configuration.box_type = GetCodecConfigurationBoxType(actual_format);
-
1564  } else {
-
1565  DCHECK_EQ(codec_configuration.box_type,
-
1566  GetCodecConfigurationBoxType(actual_format));
-
1567  }
-
1568  DCHECK_NE(codec_configuration.box_type, FOURCC_NULL);
-
1569 
-
1570  RCHECK(buffer->ReadWriteChild(&codec_configuration));
-
1571  RCHECK(buffer->TryReadWriteChild(&pixel_aspect));
-
1572  return true;
-
1573 }
-
1574 
-
1575 uint32_t VideoSampleEntry::ComputeSizeInternal() {
-
1576  const FourCC actual_format = GetActualFormat();
-
1577  if (actual_format == FOURCC_NULL)
-
1578  return 0;
-
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) +
-
1584  pixel_aspect.ComputeSize() + sinf.ComputeSize() +
-
1585  codec_configuration.ComputeSize() + kCompressorNameSize + 6 + 4 + 16 +
-
1586  2; // 6 + 4 bytes reserved, 16 + 2 bytes predefined.
-
1587 }
-
1588 
-
1589 FourCC VideoSampleEntry::GetCodecConfigurationBoxType(FourCC format) const {
-
1590  switch (format) {
-
1591  case FOURCC_avc1:
-
1592  return FOURCC_avcC;
-
1593  case FOURCC_hev1:
-
1594  case FOURCC_hvc1:
-
1595  return FOURCC_hvcC;
-
1596  case FOURCC_vp08:
-
1597  case FOURCC_vp09:
-
1598  case FOURCC_vp10:
-
1599  return FOURCC_vpcC;
-
1600  default:
-
1601  LOG(ERROR) << FourCCToString(format) << " is not supported.";
-
1602  return FOURCC_NULL;
-
1603  }
-
1604 }
-
1605 
-
1606 ElementaryStreamDescriptor::ElementaryStreamDescriptor() {}
-
1607 ElementaryStreamDescriptor::~ElementaryStreamDescriptor() {}
-
1608 FourCC ElementaryStreamDescriptor::BoxType() const { return FOURCC_esds; }
-
1609 
-
1610 bool ElementaryStreamDescriptor::ReadWriteInternal(BoxBuffer* buffer) {
-
1611  RCHECK(ReadWriteHeaderInternal(buffer));
-
1612  if (buffer->Reading()) {
-
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()));
-
1619  }
-
1620  } else {
-
1621  DCHECK(buffer->writer());
-
1622  es_descriptor.Write(buffer->writer());
-
1623  }
-
1624  return true;
-
1625 }
-
1626 
-
1627 uint32_t ElementaryStreamDescriptor::ComputeSizeInternal() {
-
1628  // This box is optional. Skip it if not initialized.
-
1629  if (es_descriptor.object_type() == kForbidden)
-
1630  return 0;
-
1631  return HeaderSize() + es_descriptor.ComputeSize();
-
1632 }
-
1633 
-
1634 DTSSpecific::DTSSpecific()
-
1635  : sampling_frequency(0),
-
1636  max_bitrate(0),
-
1637  avg_bitrate(0),
-
1638  pcm_sample_depth(0) {}
-
1639 DTSSpecific::~DTSSpecific() {}
-
1640 FourCC DTSSpecific::BoxType() const { return FOURCC_ddts; }
-
1641 
-
1642 bool DTSSpecific::ReadWriteInternal(BoxBuffer* buffer) {
-
1643  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
1644  buffer->ReadWriteUInt32(&sampling_frequency) &&
-
1645  buffer->ReadWriteUInt32(&max_bitrate) &&
-
1646  buffer->ReadWriteUInt32(&avg_bitrate) &&
-
1647  buffer->ReadWriteUInt8(&pcm_sample_depth));
-
1648 
-
1649  if (buffer->Reading()) {
-
1650  RCHECK(buffer->ReadWriteVector(&extra_data, buffer->BytesLeft()));
-
1651  } else {
-
1652  if (extra_data.empty()) {
-
1653  extra_data.assign(kDdtsExtraData,
-
1654  kDdtsExtraData + sizeof(kDdtsExtraData));
-
1655  }
-
1656  RCHECK(buffer->ReadWriteVector(&extra_data, extra_data.size()));
-
1657  }
-
1658  return true;
-
1659 }
-
1660 
-
1661 uint32_t DTSSpecific::ComputeSizeInternal() {
-
1662  // This box is optional. Skip it if not initialized.
-
1663  if (sampling_frequency == 0)
-
1664  return 0;
-
1665  return HeaderSize() + sizeof(sampling_frequency) + sizeof(max_bitrate) +
-
1666  sizeof(avg_bitrate) + sizeof(pcm_sample_depth) +
-
1667  sizeof(kDdtsExtraData);
-
1668 }
-
1669 
-
1670 AC3Specific::AC3Specific() {}
-
1671 AC3Specific::~AC3Specific() {}
-
1672 
-
1673 FourCC AC3Specific::BoxType() const { return FOURCC_dac3; }
-
1674 
-
1675 bool AC3Specific::ReadWriteInternal(BoxBuffer* buffer) {
-
1676  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
1677  buffer->ReadWriteVector(
-
1678  &data, buffer->Reading() ? buffer->BytesLeft() : data.size()));
-
1679  return true;
-
1680 }
-
1681 
-
1682 uint32_t AC3Specific::ComputeSizeInternal() {
-
1683  // This box is optional. Skip it if not initialized.
-
1684  if (data.empty())
-
1685  return 0;
-
1686  return HeaderSize() + data.size();
-
1687 }
-
1688 
-
1689 EC3Specific::EC3Specific() {}
-
1690 EC3Specific::~EC3Specific() {}
-
1691 
-
1692 FourCC EC3Specific::BoxType() const { return FOURCC_dec3; }
-
1693 
-
1694 bool EC3Specific::ReadWriteInternal(BoxBuffer* buffer) {
-
1695  RCHECK(ReadWriteHeaderInternal(buffer));
-
1696  uint32_t size = buffer->Reading() ? buffer->BytesLeft() : data.size();
-
1697  RCHECK(buffer->ReadWriteVector(&data, size));
-
1698  return true;
-
1699 }
-
1700 
-
1701 uint32_t EC3Specific::ComputeSizeInternal() {
-
1702  // This box is optional. Skip it if not initialized.
-
1703  if (data.empty())
-
1704  return 0;
-
1705  return HeaderSize() + data.size();
-
1706 }
-
1707 
-
1708 OpusSpecific::OpusSpecific() : preskip(0) {}
-
1709 OpusSpecific::~OpusSpecific() {}
-
1710 
-
1711 FourCC OpusSpecific::BoxType() const { return FOURCC_dOps; }
-
1712 
-
1713 bool OpusSpecific::ReadWriteInternal(BoxBuffer* buffer) {
-
1714  RCHECK(ReadWriteHeaderInternal(buffer));
-
1715  if (buffer->Reading()) {
-
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);
-
1721 
-
1722  // https://tools.ietf.org/html/draft-ietf-codec-oggopus-06#section-5
-
1723  BufferWriter writer;
-
1724  writer.AppendInt(FOURCC_Opus);
-
1725  writer.AppendInt(FOURCC_Head);
-
1726  // The version must always be 1.
-
1727  const uint8_t kOpusIdentificationHeaderVersion = 1;
-
1728  data[0] = kOpusIdentificationHeaderVersion;
-
1729  writer.AppendVector(data);
-
1730  writer.SwapBuffer(&opus_identification_header);
-
1731  } else {
-
1732  // https://tools.ietf.org/html/draft-ietf-codec-oggopus-06#section-5
-
1733  // The first 8 bytes is "magic signature".
-
1734  const size_t kOpusMagicSignatureSize = 8u;
-
1735  DCHECK_GT(opus_identification_header.size(), kOpusMagicSignatureSize);
-
1736  // https://www.opus-codec.org/docs/opus_in_isobmff.html
-
1737  // The version field shall be set to 0.
-
1738  const uint8_t kOpusSpecificBoxVersion = 0;
-
1739  buffer->writer()->AppendInt(kOpusSpecificBoxVersion);
-
1740  buffer->writer()->AppendArray(
-
1741  &opus_identification_header[kOpusMagicSignatureSize + 1],
-
1742  opus_identification_header.size() - kOpusMagicSignatureSize - 1);
-
1743  }
-
1744  return true;
-
1745 }
-
1746 
-
1747 uint32_t OpusSpecific::ComputeSizeInternal() {
-
1748  // This box is optional. Skip it if not initialized.
-
1749  if (opus_identification_header.empty())
-
1750  return 0;
-
1751  // https://tools.ietf.org/html/draft-ietf-codec-oggopus-06#section-5
-
1752  // The first 8 bytes is "magic signature".
-
1753  const size_t kOpusMagicSignatureSize = 8u;
-
1754  DCHECK_GT(opus_identification_header.size(), kOpusMagicSignatureSize);
-
1755  return HeaderSize() + opus_identification_header.size() -
-
1756  kOpusMagicSignatureSize;
-
1757 }
-
1758 
-
1759 AudioSampleEntry::AudioSampleEntry()
-
1760  : format(FOURCC_NULL),
-
1761  data_reference_index(1),
-
1762  channelcount(2),
-
1763  samplesize(16),
-
1764  samplerate(0) {}
-
1765 
-
1766 AudioSampleEntry::~AudioSampleEntry() {}
-
1767 
- -
1769  if (format == FOURCC_NULL) {
-
1770  LOG(ERROR) << "AudioSampleEntry should be parsed according to the "
-
1771  << "handler type recovered in its Media ancestor.";
-
1772  }
-
1773  return format;
-
1774 }
-
1775 
-
1776 bool AudioSampleEntry::ReadWriteInternal(BoxBuffer* buffer) {
-
1777  if (buffer->Reading()) {
-
1778  DCHECK(buffer->reader());
-
1779  format = buffer->reader()->type();
-
1780  } else {
-
1781  RCHECK(ReadWriteHeaderInternal(buffer));
-
1782  }
-
1783 
-
1784  // Convert from integer to 16.16 fixed point for writing.
-
1785  samplerate <<= 16;
-
1786  RCHECK(buffer->IgnoreBytes(6) && // reserved.
-
1787  buffer->ReadWriteUInt16(&data_reference_index) &&
-
1788  buffer->IgnoreBytes(8) && // reserved.
-
1789  buffer->ReadWriteUInt16(&channelcount) &&
-
1790  buffer->ReadWriteUInt16(&samplesize) &&
-
1791  buffer->IgnoreBytes(4) && // predefined.
-
1792  buffer->ReadWriteUInt32(&samplerate));
-
1793  // Convert from 16.16 fixed point to integer.
-
1794  samplerate >>= 16;
-
1795 
-
1796  RCHECK(buffer->PrepareChildren());
-
1797  if (format == FOURCC_enca) {
-
1798  if (buffer->Reading()) {
-
1799  // Continue scanning until a supported protection scheme is found, or
-
1800  // until we run out of protection schemes.
-
1801  while (!IsProtectionSchemeSupported(sinf.type.type))
-
1802  RCHECK(buffer->ReadWriteChild(&sinf));
-
1803  } else {
-
1804  DCHECK(IsProtectionSchemeSupported(sinf.type.type));
-
1805  RCHECK(buffer->ReadWriteChild(&sinf));
-
1806  }
-
1807  }
-
1808 
-
1809  RCHECK(buffer->TryReadWriteChild(&esds));
-
1810  RCHECK(buffer->TryReadWriteChild(&ddts));
-
1811  RCHECK(buffer->TryReadWriteChild(&dac3));
-
1812  RCHECK(buffer->TryReadWriteChild(&dec3));
-
1813  RCHECK(buffer->TryReadWriteChild(&dops));
-
1814  return true;
-
1815 }
-
1816 
-
1817 uint32_t AudioSampleEntry::ComputeSizeInternal() {
-
1818  if (GetActualFormat() == FOURCC_NULL)
-
1819  return 0;
-
1820  return HeaderSize() + sizeof(data_reference_index) + sizeof(channelcount) +
-
1821  sizeof(samplesize) + sizeof(samplerate) + sinf.ComputeSize() +
-
1822  esds.ComputeSize() + ddts.ComputeSize() + dac3.ComputeSize() +
-
1823  dec3.ComputeSize() + dops.ComputeSize() +
-
1824  6 + 8 + // 6 + 8 bytes reserved.
-
1825  4; // 4 bytes predefined.
-
1826 }
-
1827 
-
1828 WebVTTConfigurationBox::WebVTTConfigurationBox() {}
-
1829 WebVTTConfigurationBox::~WebVTTConfigurationBox() {}
-
1830 
- -
1832  return FOURCC_vttC;
-
1833 }
-
1834 
-
1835 bool WebVTTConfigurationBox::ReadWriteInternal(BoxBuffer* buffer) {
-
1836  RCHECK(ReadWriteHeaderInternal(buffer));
-
1837  return buffer->ReadWriteString(
-
1838  &config,
-
1839  buffer->Reading() ? buffer->BytesLeft() : config.size());
-
1840 }
-
1841 
-
1842 uint32_t WebVTTConfigurationBox::ComputeSizeInternal() {
-
1843  return HeaderSize() + config.size();
-
1844 }
-
1845 
-
1846 WebVTTSourceLabelBox::WebVTTSourceLabelBox() {}
-
1847 WebVTTSourceLabelBox::~WebVTTSourceLabelBox() {}
-
1848 
- -
1850  return FOURCC_vlab;
-
1851 }
-
1852 
-
1853 bool WebVTTSourceLabelBox::ReadWriteInternal(BoxBuffer* buffer) {
-
1854  RCHECK(ReadWriteHeaderInternal(buffer));
-
1855  return buffer->ReadWriteString(&source_label, buffer->Reading()
-
1856  ? buffer->BytesLeft()
-
1857  : source_label.size());
-
1858 }
-
1859 
-
1860 uint32_t WebVTTSourceLabelBox::ComputeSizeInternal() {
-
1861  if (source_label.empty())
-
1862  return 0;
-
1863  return HeaderSize() + source_label.size();
+
1516  case FOURCC_hev1:
+
1517  case FOURCC_hvc1:
+
1518  compressor_name.assign(
+
1519  kHevcCompressorName,
+
1520  kHevcCompressorName + arraysize(kHevcCompressorName));
+
1521  break;
+
1522  case FOURCC_vp08:
+
1523  case FOURCC_vp09:
+
1524  case FOURCC_vp10:
+
1525  compressor_name.assign(
+
1526  kVpcCompressorName,
+
1527  kVpcCompressorName + arraysize(kVpcCompressorName));
+
1528  break;
+
1529  default:
+
1530  LOG(ERROR) << FourCCToString(actual_format) << " is not supported.";
+
1531  return false;
+
1532  }
+
1533  compressor_name.resize(kCompressorNameSize);
+
1534  }
+
1535 
+
1536  uint32_t video_resolution = kVideoResolution;
+
1537  uint16_t video_frame_count = kVideoFrameCount;
+
1538  uint16_t video_depth = kVideoDepth;
+
1539  int16_t predefined = -1;
+
1540  RCHECK(buffer->IgnoreBytes(6) && // reserved.
+
1541  buffer->ReadWriteUInt16(&data_reference_index) &&
+
1542  buffer->IgnoreBytes(16) && // predefined 0.
+
1543  buffer->ReadWriteUInt16(&width) &&
+
1544  buffer->ReadWriteUInt16(&height) &&
+
1545  buffer->ReadWriteUInt32(&video_resolution) &&
+
1546  buffer->ReadWriteUInt32(&video_resolution) &&
+
1547  buffer->IgnoreBytes(4) && // reserved.
+
1548  buffer->ReadWriteUInt16(&video_frame_count) &&
+
1549  buffer->ReadWriteVector(&compressor_name, kCompressorNameSize) &&
+
1550  buffer->ReadWriteUInt16(&video_depth) &&
+
1551  buffer->ReadWriteInt16(&predefined));
+
1552 
+
1553  RCHECK(buffer->PrepareChildren());
+
1554 
+
1555  if (format == FOURCC_encv) {
+
1556  if (buffer->Reading()) {
+
1557  // Continue scanning until a supported protection scheme is found, or
+
1558  // until we run out of protection schemes.
+
1559  while (!IsProtectionSchemeSupported(sinf.type.type))
+
1560  RCHECK(buffer->ReadWriteChild(&sinf));
+
1561  } else {
+
1562  DCHECK(IsProtectionSchemeSupported(sinf.type.type));
+
1563  RCHECK(buffer->ReadWriteChild(&sinf));
+
1564  }
+
1565  }
+
1566 
+
1567  const FourCC actual_format = GetActualFormat();
+
1568  if (buffer->Reading()) {
+
1569  codec_configuration.box_type = GetCodecConfigurationBoxType(actual_format);
+
1570  } else {
+
1571  DCHECK_EQ(codec_configuration.box_type,
+
1572  GetCodecConfigurationBoxType(actual_format));
+
1573  }
+
1574  DCHECK_NE(codec_configuration.box_type, FOURCC_NULL);
+
1575 
+
1576  RCHECK(buffer->ReadWriteChild(&codec_configuration));
+
1577  RCHECK(buffer->TryReadWriteChild(&pixel_aspect));
+
1578  return true;
+
1579 }
+
1580 
+
1581 size_t VideoSampleEntry::ComputeSizeInternal() {
+
1582  const FourCC actual_format = GetActualFormat();
+
1583  if (actual_format == FOURCC_NULL)
+
1584  return 0;
+
1585  codec_configuration.box_type = GetCodecConfigurationBoxType(actual_format);
+
1586  DCHECK_NE(codec_configuration.box_type, FOURCC_NULL);
+
1587  return HeaderSize() + sizeof(data_reference_index) + sizeof(width) +
+
1588  sizeof(height) + sizeof(kVideoResolution) * 2 +
+
1589  sizeof(kVideoFrameCount) + sizeof(kVideoDepth) +
+
1590  pixel_aspect.ComputeSize() + sinf.ComputeSize() +
+
1591  codec_configuration.ComputeSize() + kCompressorNameSize + 6 + 4 + 16 +
+
1592  2; // 6 + 4 bytes reserved, 16 + 2 bytes predefined.
+
1593 }
+
1594 
+
1595 FourCC VideoSampleEntry::GetCodecConfigurationBoxType(FourCC format) const {
+
1596  switch (format) {
+
1597  case FOURCC_avc1:
+
1598  return FOURCC_avcC;
+
1599  case FOURCC_hev1:
+
1600  case FOURCC_hvc1:
+
1601  return FOURCC_hvcC;
+
1602  case FOURCC_vp08:
+
1603  case FOURCC_vp09:
+
1604  case FOURCC_vp10:
+
1605  return FOURCC_vpcC;
+
1606  default:
+
1607  LOG(ERROR) << FourCCToString(format) << " is not supported.";
+
1608  return FOURCC_NULL;
+
1609  }
+
1610 }
+
1611 
+
1612 ElementaryStreamDescriptor::ElementaryStreamDescriptor() {}
+
1613 ElementaryStreamDescriptor::~ElementaryStreamDescriptor() {}
+
1614 FourCC ElementaryStreamDescriptor::BoxType() const { return FOURCC_esds; }
+
1615 
+
1616 bool ElementaryStreamDescriptor::ReadWriteInternal(BoxBuffer* buffer) {
+
1617  RCHECK(ReadWriteHeaderInternal(buffer));
+
1618  if (buffer->Reading()) {
+
1619  std::vector<uint8_t> data;
+
1620  RCHECK(buffer->ReadWriteVector(&data, buffer->BytesLeft()));
+
1621  RCHECK(es_descriptor.Parse(data));
+
1622  if (es_descriptor.IsAAC()) {
+
1623  RCHECK(aac_audio_specific_config.Parse(
+
1624  es_descriptor.decoder_specific_info()));
+
1625  }
+
1626  } else {
+
1627  DCHECK(buffer->writer());
+
1628  es_descriptor.Write(buffer->writer());
+
1629  }
+
1630  return true;
+
1631 }
+
1632 
+
1633 size_t ElementaryStreamDescriptor::ComputeSizeInternal() {
+
1634  // This box is optional. Skip it if not initialized.
+
1635  if (es_descriptor.object_type() == kForbidden)
+
1636  return 0;
+
1637  return HeaderSize() + es_descriptor.ComputeSize();
+
1638 }
+
1639 
+
1640 DTSSpecific::DTSSpecific()
+
1641  : sampling_frequency(0),
+
1642  max_bitrate(0),
+
1643  avg_bitrate(0),
+
1644  pcm_sample_depth(0) {}
+
1645 DTSSpecific::~DTSSpecific() {}
+
1646 FourCC DTSSpecific::BoxType() const { return FOURCC_ddts; }
+
1647 
+
1648 bool DTSSpecific::ReadWriteInternal(BoxBuffer* buffer) {
+
1649  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
1650  buffer->ReadWriteUInt32(&sampling_frequency) &&
+
1651  buffer->ReadWriteUInt32(&max_bitrate) &&
+
1652  buffer->ReadWriteUInt32(&avg_bitrate) &&
+
1653  buffer->ReadWriteUInt8(&pcm_sample_depth));
+
1654 
+
1655  if (buffer->Reading()) {
+
1656  RCHECK(buffer->ReadWriteVector(&extra_data, buffer->BytesLeft()));
+
1657  } else {
+
1658  if (extra_data.empty()) {
+
1659  extra_data.assign(kDdtsExtraData,
+
1660  kDdtsExtraData + sizeof(kDdtsExtraData));
+
1661  }
+
1662  RCHECK(buffer->ReadWriteVector(&extra_data, extra_data.size()));
+
1663  }
+
1664  return true;
+
1665 }
+
1666 
+
1667 size_t DTSSpecific::ComputeSizeInternal() {
+
1668  // This box is optional. Skip it if not initialized.
+
1669  if (sampling_frequency == 0)
+
1670  return 0;
+
1671  return HeaderSize() + sizeof(sampling_frequency) + sizeof(max_bitrate) +
+
1672  sizeof(avg_bitrate) + sizeof(pcm_sample_depth) +
+
1673  sizeof(kDdtsExtraData);
+
1674 }
+
1675 
+
1676 AC3Specific::AC3Specific() {}
+
1677 AC3Specific::~AC3Specific() {}
+
1678 
+
1679 FourCC AC3Specific::BoxType() const { return FOURCC_dac3; }
+
1680 
+
1681 bool AC3Specific::ReadWriteInternal(BoxBuffer* buffer) {
+
1682  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
1683  buffer->ReadWriteVector(
+
1684  &data, buffer->Reading() ? buffer->BytesLeft() : data.size()));
+
1685  return true;
+
1686 }
+
1687 
+
1688 size_t AC3Specific::ComputeSizeInternal() {
+
1689  // This box is optional. Skip it if not initialized.
+
1690  if (data.empty())
+
1691  return 0;
+
1692  return HeaderSize() + data.size();
+
1693 }
+
1694 
+
1695 EC3Specific::EC3Specific() {}
+
1696 EC3Specific::~EC3Specific() {}
+
1697 
+
1698 FourCC EC3Specific::BoxType() const { return FOURCC_dec3; }
+
1699 
+
1700 bool EC3Specific::ReadWriteInternal(BoxBuffer* buffer) {
+
1701  RCHECK(ReadWriteHeaderInternal(buffer));
+
1702  size_t size = buffer->Reading() ? buffer->BytesLeft() : data.size();
+
1703  RCHECK(buffer->ReadWriteVector(&data, size));
+
1704  return true;
+
1705 }
+
1706 
+
1707 size_t EC3Specific::ComputeSizeInternal() {
+
1708  // This box is optional. Skip it if not initialized.
+
1709  if (data.empty())
+
1710  return 0;
+
1711  return HeaderSize() + data.size();
+
1712 }
+
1713 
+
1714 OpusSpecific::OpusSpecific() : preskip(0) {}
+
1715 OpusSpecific::~OpusSpecific() {}
+
1716 
+
1717 FourCC OpusSpecific::BoxType() const { return FOURCC_dOps; }
+
1718 
+
1719 bool OpusSpecific::ReadWriteInternal(BoxBuffer* buffer) {
+
1720  RCHECK(ReadWriteHeaderInternal(buffer));
+
1721  if (buffer->Reading()) {
+
1722  std::vector<uint8_t> data;
+
1723  const int kMinOpusSpecificBoxDataSize = 11;
+
1724  RCHECK(buffer->BytesLeft() >= kMinOpusSpecificBoxDataSize);
+
1725  RCHECK(buffer->ReadWriteVector(&data, buffer->BytesLeft()));
+
1726  preskip = data[2] + (data[3] << 8);
+
1727 
+
1728  // https://tools.ietf.org/html/draft-ietf-codec-oggopus-06#section-5
+
1729  BufferWriter writer;
+
1730  writer.AppendInt(FOURCC_Opus);
+
1731  writer.AppendInt(FOURCC_Head);
+
1732  // The version must always be 1.
+
1733  const uint8_t kOpusIdentificationHeaderVersion = 1;
+
1734  data[0] = kOpusIdentificationHeaderVersion;
+
1735  writer.AppendVector(data);
+
1736  writer.SwapBuffer(&opus_identification_header);
+
1737  } else {
+
1738  // https://tools.ietf.org/html/draft-ietf-codec-oggopus-06#section-5
+
1739  // The first 8 bytes is "magic signature".
+
1740  const size_t kOpusMagicSignatureSize = 8u;
+
1741  DCHECK_GT(opus_identification_header.size(), kOpusMagicSignatureSize);
+
1742  // https://www.opus-codec.org/docs/opus_in_isobmff.html
+
1743  // The version field shall be set to 0.
+
1744  const uint8_t kOpusSpecificBoxVersion = 0;
+
1745  buffer->writer()->AppendInt(kOpusSpecificBoxVersion);
+
1746  buffer->writer()->AppendArray(
+
1747  &opus_identification_header[kOpusMagicSignatureSize + 1],
+
1748  opus_identification_header.size() - kOpusMagicSignatureSize - 1);
+
1749  }
+
1750  return true;
+
1751 }
+
1752 
+
1753 size_t OpusSpecific::ComputeSizeInternal() {
+
1754  // This box is optional. Skip it if not initialized.
+
1755  if (opus_identification_header.empty())
+
1756  return 0;
+
1757  // https://tools.ietf.org/html/draft-ietf-codec-oggopus-06#section-5
+
1758  // The first 8 bytes is "magic signature".
+
1759  const size_t kOpusMagicSignatureSize = 8u;
+
1760  DCHECK_GT(opus_identification_header.size(), kOpusMagicSignatureSize);
+
1761  return HeaderSize() + opus_identification_header.size() -
+
1762  kOpusMagicSignatureSize;
+
1763 }
+
1764 
+
1765 AudioSampleEntry::AudioSampleEntry()
+
1766  : format(FOURCC_NULL),
+
1767  data_reference_index(1),
+
1768  channelcount(2),
+
1769  samplesize(16),
+
1770  samplerate(0) {}
+
1771 
+
1772 AudioSampleEntry::~AudioSampleEntry() {}
+
1773 
+ +
1775  if (format == FOURCC_NULL) {
+
1776  LOG(ERROR) << "AudioSampleEntry should be parsed according to the "
+
1777  << "handler type recovered in its Media ancestor.";
+
1778  }
+
1779  return format;
+
1780 }
+
1781 
+
1782 bool AudioSampleEntry::ReadWriteInternal(BoxBuffer* buffer) {
+
1783  if (buffer->Reading()) {
+
1784  DCHECK(buffer->reader());
+
1785  format = buffer->reader()->type();
+
1786  } else {
+
1787  RCHECK(ReadWriteHeaderInternal(buffer));
+
1788  }
+
1789 
+
1790  // Convert from integer to 16.16 fixed point for writing.
+
1791  samplerate <<= 16;
+
1792  RCHECK(buffer->IgnoreBytes(6) && // reserved.
+
1793  buffer->ReadWriteUInt16(&data_reference_index) &&
+
1794  buffer->IgnoreBytes(8) && // reserved.
+
1795  buffer->ReadWriteUInt16(&channelcount) &&
+
1796  buffer->ReadWriteUInt16(&samplesize) &&
+
1797  buffer->IgnoreBytes(4) && // predefined.
+
1798  buffer->ReadWriteUInt32(&samplerate));
+
1799  // Convert from 16.16 fixed point to integer.
+
1800  samplerate >>= 16;
+
1801 
+
1802  RCHECK(buffer->PrepareChildren());
+
1803  if (format == FOURCC_enca) {
+
1804  if (buffer->Reading()) {
+
1805  // Continue scanning until a supported protection scheme is found, or
+
1806  // until we run out of protection schemes.
+
1807  while (!IsProtectionSchemeSupported(sinf.type.type))
+
1808  RCHECK(buffer->ReadWriteChild(&sinf));
+
1809  } else {
+
1810  DCHECK(IsProtectionSchemeSupported(sinf.type.type));
+
1811  RCHECK(buffer->ReadWriteChild(&sinf));
+
1812  }
+
1813  }
+
1814 
+
1815  RCHECK(buffer->TryReadWriteChild(&esds));
+
1816  RCHECK(buffer->TryReadWriteChild(&ddts));
+
1817  RCHECK(buffer->TryReadWriteChild(&dac3));
+
1818  RCHECK(buffer->TryReadWriteChild(&dec3));
+
1819  RCHECK(buffer->TryReadWriteChild(&dops));
+
1820  return true;
+
1821 }
+
1822 
+
1823 size_t AudioSampleEntry::ComputeSizeInternal() {
+
1824  if (GetActualFormat() == FOURCC_NULL)
+
1825  return 0;
+
1826  return HeaderSize() + sizeof(data_reference_index) + sizeof(channelcount) +
+
1827  sizeof(samplesize) + sizeof(samplerate) + sinf.ComputeSize() +
+
1828  esds.ComputeSize() + ddts.ComputeSize() + dac3.ComputeSize() +
+
1829  dec3.ComputeSize() + dops.ComputeSize() +
+
1830  6 + 8 + // 6 + 8 bytes reserved.
+
1831  4; // 4 bytes predefined.
+
1832 }
+
1833 
+
1834 WebVTTConfigurationBox::WebVTTConfigurationBox() {}
+
1835 WebVTTConfigurationBox::~WebVTTConfigurationBox() {}
+
1836 
+ +
1838  return FOURCC_vttC;
+
1839 }
+
1840 
+
1841 bool WebVTTConfigurationBox::ReadWriteInternal(BoxBuffer* buffer) {
+
1842  RCHECK(ReadWriteHeaderInternal(buffer));
+
1843  return buffer->ReadWriteString(
+
1844  &config,
+
1845  buffer->Reading() ? buffer->BytesLeft() : config.size());
+
1846 }
+
1847 
+
1848 size_t WebVTTConfigurationBox::ComputeSizeInternal() {
+
1849  return HeaderSize() + config.size();
+
1850 }
+
1851 
+
1852 WebVTTSourceLabelBox::WebVTTSourceLabelBox() {}
+
1853 WebVTTSourceLabelBox::~WebVTTSourceLabelBox() {}
+
1854 
+ +
1856  return FOURCC_vlab;
+
1857 }
+
1858 
+
1859 bool WebVTTSourceLabelBox::ReadWriteInternal(BoxBuffer* buffer) {
+
1860  RCHECK(ReadWriteHeaderInternal(buffer));
+
1861  return buffer->ReadWriteString(&source_label, buffer->Reading()
+
1862  ? buffer->BytesLeft()
+
1863  : source_label.size());
1864 }
1865 
-
1866 TextSampleEntry::TextSampleEntry() : format(FOURCC_NULL) {}
-
1867 TextSampleEntry::~TextSampleEntry() {}
-
1868 
- -
1870  if (format == FOURCC_NULL) {
-
1871  LOG(ERROR) << "TextSampleEntry should be parsed according to the "
-
1872  << "handler type recovered in its Media ancestor.";
-
1873  }
-
1874  return format;
-
1875 }
-
1876 
-
1877 bool TextSampleEntry::ReadWriteInternal(BoxBuffer* buffer) {
-
1878  if (buffer->Reading()) {
-
1879  DCHECK(buffer->reader());
-
1880  format = buffer->reader()->type();
-
1881  } else {
-
1882  RCHECK(ReadWriteHeaderInternal(buffer));
-
1883  }
-
1884  RCHECK(buffer->IgnoreBytes(6) && // reserved for SampleEntry.
-
1885  buffer->ReadWriteUInt16(&data_reference_index));
-
1886 
-
1887  if (format == FOURCC_wvtt) {
-
1888  // TODO(rkuroiwa): Handle the optional MPEG4BitRateBox.
-
1889  RCHECK(buffer->PrepareChildren() &&
-
1890  buffer->ReadWriteChild(&config) &&
-
1891  buffer->ReadWriteChild(&label));
-
1892  }
-
1893  return true;
-
1894 }
-
1895 
-
1896 uint32_t TextSampleEntry::ComputeSizeInternal() {
-
1897  // 6 for the (anonymous) reserved bytes for SampleEntry class.
-
1898  return HeaderSize() + 6 + sizeof(data_reference_index) +
-
1899  config.ComputeSize() + label.ComputeSize();
+
1866 size_t WebVTTSourceLabelBox::ComputeSizeInternal() {
+
1867  if (source_label.empty())
+
1868  return 0;
+
1869  return HeaderSize() + source_label.size();
+
1870 }
+
1871 
+
1872 TextSampleEntry::TextSampleEntry() : format(FOURCC_NULL) {}
+
1873 TextSampleEntry::~TextSampleEntry() {}
+
1874 
+ +
1876  if (format == FOURCC_NULL) {
+
1877  LOG(ERROR) << "TextSampleEntry should be parsed according to the "
+
1878  << "handler type recovered in its Media ancestor.";
+
1879  }
+
1880  return format;
+
1881 }
+
1882 
+
1883 bool TextSampleEntry::ReadWriteInternal(BoxBuffer* buffer) {
+
1884  if (buffer->Reading()) {
+
1885  DCHECK(buffer->reader());
+
1886  format = buffer->reader()->type();
+
1887  } else {
+
1888  RCHECK(ReadWriteHeaderInternal(buffer));
+
1889  }
+
1890  RCHECK(buffer->IgnoreBytes(6) && // reserved for SampleEntry.
+
1891  buffer->ReadWriteUInt16(&data_reference_index));
+
1892 
+
1893  if (format == FOURCC_wvtt) {
+
1894  // TODO(rkuroiwa): Handle the optional MPEG4BitRateBox.
+
1895  RCHECK(buffer->PrepareChildren() &&
+
1896  buffer->ReadWriteChild(&config) &&
+
1897  buffer->ReadWriteChild(&label));
+
1898  }
+
1899  return true;
1900 }
1901 
-
1902 MediaHeader::MediaHeader()
-
1903  : creation_time(0), modification_time(0), timescale(0), duration(0) {}
-
1904 MediaHeader::~MediaHeader() {}
-
1905 FourCC MediaHeader::BoxType() const { return FOURCC_mdhd; }
-
1906 
-
1907 bool MediaHeader::ReadWriteInternal(BoxBuffer* buffer) {
-
1908  RCHECK(ReadWriteHeaderInternal(buffer));
-
1909 
-
1910  uint8_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
-
1911  RCHECK(buffer->ReadWriteUInt64NBytes(&creation_time, num_bytes) &&
-
1912  buffer->ReadWriteUInt64NBytes(&modification_time, num_bytes) &&
-
1913  buffer->ReadWriteUInt32(&timescale) &&
-
1914  buffer->ReadWriteUInt64NBytes(&duration, num_bytes) &&
-
1915  language.ReadWrite(buffer) &&
-
1916  buffer->IgnoreBytes(2)); // predefined.
-
1917  return true;
-
1918 }
-
1919 
-
1920 uint32_t MediaHeader::ComputeSizeInternal() {
-
1921  version = IsFitIn32Bits(creation_time, modification_time, duration) ? 0 : 1;
-
1922  return HeaderSize() + sizeof(timescale) +
-
1923  sizeof(uint32_t) * (1 + version) * 3 + language.ComputeSize() +
-
1924  2; // 2 bytes predefined.
-
1925 }
-
1926 
-
1927 VideoMediaHeader::VideoMediaHeader()
-
1928  : graphicsmode(0), opcolor_red(0), opcolor_green(0), opcolor_blue(0) {
-
1929  const uint32_t kVideoMediaHeaderFlags = 1;
-
1930  flags = kVideoMediaHeaderFlags;
+
1902 size_t TextSampleEntry::ComputeSizeInternal() {
+
1903  // 6 for the (anonymous) reserved bytes for SampleEntry class.
+
1904  return HeaderSize() + 6 + sizeof(data_reference_index) +
+
1905  config.ComputeSize() + label.ComputeSize();
+
1906 }
+
1907 
+
1908 MediaHeader::MediaHeader()
+
1909  : creation_time(0), modification_time(0), timescale(0), duration(0) {}
+
1910 MediaHeader::~MediaHeader() {}
+
1911 FourCC MediaHeader::BoxType() const { return FOURCC_mdhd; }
+
1912 
+
1913 bool MediaHeader::ReadWriteInternal(BoxBuffer* buffer) {
+
1914  RCHECK(ReadWriteHeaderInternal(buffer));
+
1915 
+
1916  uint8_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
+
1917  RCHECK(buffer->ReadWriteUInt64NBytes(&creation_time, num_bytes) &&
+
1918  buffer->ReadWriteUInt64NBytes(&modification_time, num_bytes) &&
+
1919  buffer->ReadWriteUInt32(&timescale) &&
+
1920  buffer->ReadWriteUInt64NBytes(&duration, num_bytes) &&
+
1921  language.ReadWrite(buffer) &&
+
1922  buffer->IgnoreBytes(2)); // predefined.
+
1923  return true;
+
1924 }
+
1925 
+
1926 size_t MediaHeader::ComputeSizeInternal() {
+
1927  version = IsFitIn32Bits(creation_time, modification_time, duration) ? 0 : 1;
+
1928  return HeaderSize() + sizeof(timescale) +
+
1929  sizeof(uint32_t) * (1 + version) * 3 + language.ComputeSize() +
+
1930  2; // 2 bytes predefined.
1931 }
-
1932 VideoMediaHeader::~VideoMediaHeader() {}
-
1933 FourCC VideoMediaHeader::BoxType() const { return FOURCC_vmhd; }
-
1934 bool VideoMediaHeader::ReadWriteInternal(BoxBuffer* buffer) {
-
1935  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
1936  buffer->ReadWriteUInt16(&graphicsmode) &&
-
1937  buffer->ReadWriteUInt16(&opcolor_red) &&
-
1938  buffer->ReadWriteUInt16(&opcolor_green) &&
-
1939  buffer->ReadWriteUInt16(&opcolor_blue));
-
1940  return true;
-
1941 }
-
1942 
-
1943 uint32_t VideoMediaHeader::ComputeSizeInternal() {
-
1944  return HeaderSize() + sizeof(graphicsmode) + sizeof(opcolor_red) +
-
1945  sizeof(opcolor_green) + sizeof(opcolor_blue);
-
1946 }
-
1947 
-
1948 SoundMediaHeader::SoundMediaHeader() : balance(0) {}
-
1949 SoundMediaHeader::~SoundMediaHeader() {}
-
1950 FourCC SoundMediaHeader::BoxType() const { return FOURCC_smhd; }
-
1951 bool SoundMediaHeader::ReadWriteInternal(BoxBuffer* buffer) {
-
1952  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
1953  buffer->ReadWriteUInt16(&balance) &&
-
1954  buffer->IgnoreBytes(2)); // reserved.
-
1955  return true;
-
1956 }
-
1957 
-
1958 uint32_t SoundMediaHeader::ComputeSizeInternal() {
-
1959  return HeaderSize() + sizeof(balance) + sizeof(uint16_t);
-
1960 }
-
1961 
-
1962 SubtitleMediaHeader::SubtitleMediaHeader() {}
-
1963 SubtitleMediaHeader::~SubtitleMediaHeader() {}
-
1964 
-
1965 FourCC SubtitleMediaHeader::BoxType() const { return FOURCC_sthd; }
-
1966 
-
1967 bool SubtitleMediaHeader::ReadWriteInternal(BoxBuffer* buffer) {
-
1968  return ReadWriteHeaderInternal(buffer);
-
1969 }
+
1932 
+
1933 VideoMediaHeader::VideoMediaHeader()
+
1934  : graphicsmode(0), opcolor_red(0), opcolor_green(0), opcolor_blue(0) {
+
1935  const uint32_t kVideoMediaHeaderFlags = 1;
+
1936  flags = kVideoMediaHeaderFlags;
+
1937 }
+
1938 VideoMediaHeader::~VideoMediaHeader() {}
+
1939 FourCC VideoMediaHeader::BoxType() const { return FOURCC_vmhd; }
+
1940 bool VideoMediaHeader::ReadWriteInternal(BoxBuffer* buffer) {
+
1941  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
1942  buffer->ReadWriteUInt16(&graphicsmode) &&
+
1943  buffer->ReadWriteUInt16(&opcolor_red) &&
+
1944  buffer->ReadWriteUInt16(&opcolor_green) &&
+
1945  buffer->ReadWriteUInt16(&opcolor_blue));
+
1946  return true;
+
1947 }
+
1948 
+
1949 size_t VideoMediaHeader::ComputeSizeInternal() {
+
1950  return HeaderSize() + sizeof(graphicsmode) + sizeof(opcolor_red) +
+
1951  sizeof(opcolor_green) + sizeof(opcolor_blue);
+
1952 }
+
1953 
+
1954 SoundMediaHeader::SoundMediaHeader() : balance(0) {}
+
1955 SoundMediaHeader::~SoundMediaHeader() {}
+
1956 FourCC SoundMediaHeader::BoxType() const { return FOURCC_smhd; }
+
1957 bool SoundMediaHeader::ReadWriteInternal(BoxBuffer* buffer) {
+
1958  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
1959  buffer->ReadWriteUInt16(&balance) &&
+
1960  buffer->IgnoreBytes(2)); // reserved.
+
1961  return true;
+
1962 }
+
1963 
+
1964 size_t SoundMediaHeader::ComputeSizeInternal() {
+
1965  return HeaderSize() + sizeof(balance) + sizeof(uint16_t);
+
1966 }
+
1967 
+
1968 SubtitleMediaHeader::SubtitleMediaHeader() {}
+
1969 SubtitleMediaHeader::~SubtitleMediaHeader() {}
1970 
-
1971 uint32_t SubtitleMediaHeader::ComputeSizeInternal() {
-
1972  return HeaderSize();
-
1973 }
-
1974 
-
1975 DataEntryUrl::DataEntryUrl() {
-
1976  const uint32_t kDataEntryUrlFlags = 1;
-
1977  flags = kDataEntryUrlFlags;
-
1978 }
-
1979 DataEntryUrl::~DataEntryUrl() {}
-
1980 FourCC DataEntryUrl::BoxType() const { return FOURCC_url; }
-
1981 bool DataEntryUrl::ReadWriteInternal(BoxBuffer* buffer) {
-
1982  RCHECK(ReadWriteHeaderInternal(buffer));
-
1983  if (buffer->Reading()) {
-
1984  RCHECK(buffer->ReadWriteVector(&location, buffer->BytesLeft()));
-
1985  } else {
-
1986  RCHECK(buffer->ReadWriteVector(&location, location.size()));
-
1987  }
-
1988  return true;
-
1989 }
-
1990 
-
1991 uint32_t DataEntryUrl::ComputeSizeInternal() {
-
1992  return HeaderSize() + location.size();
-
1993 }
-
1994 
-
1995 DataReference::DataReference() {
-
1996  // Default 1 entry.
-
1997  data_entry.resize(1);
-
1998 }
-
1999 DataReference::~DataReference() {}
-
2000 FourCC DataReference::BoxType() const { return FOURCC_dref; }
-
2001 bool DataReference::ReadWriteInternal(BoxBuffer* buffer) {
-
2002  uint32_t entry_count = data_entry.size();
-
2003  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
2004  buffer->ReadWriteUInt32(&entry_count));
-
2005  data_entry.resize(entry_count);
-
2006  RCHECK(buffer->PrepareChildren());
-
2007  for (uint32_t i = 0; i < entry_count; ++i)
-
2008  RCHECK(buffer->ReadWriteChild(&data_entry[i]));
-
2009  return true;
-
2010 }
-
2011 
-
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)
-
2016  box_size += data_entry[i].ComputeSize();
-
2017  return box_size;
-
2018 }
-
2019 
-
2020 DataInformation::DataInformation() {}
-
2021 DataInformation::~DataInformation() {}
-
2022 FourCC DataInformation::BoxType() const { return FOURCC_dinf; }
-
2023 
-
2024 bool DataInformation::ReadWriteInternal(BoxBuffer* buffer) {
-
2025  return ReadWriteHeaderInternal(buffer) &&
-
2026  buffer->PrepareChildren() &&
-
2027  buffer->ReadWriteChild(&dref);
-
2028 }
+
1971 FourCC SubtitleMediaHeader::BoxType() const { return FOURCC_sthd; }
+
1972 
+
1973 bool SubtitleMediaHeader::ReadWriteInternal(BoxBuffer* buffer) {
+
1974  return ReadWriteHeaderInternal(buffer);
+
1975 }
+
1976 
+
1977 size_t SubtitleMediaHeader::ComputeSizeInternal() {
+
1978  return HeaderSize();
+
1979 }
+
1980 
+
1981 DataEntryUrl::DataEntryUrl() {
+
1982  const uint32_t kDataEntryUrlFlags = 1;
+
1983  flags = kDataEntryUrlFlags;
+
1984 }
+
1985 DataEntryUrl::~DataEntryUrl() {}
+
1986 FourCC DataEntryUrl::BoxType() const { return FOURCC_url; }
+
1987 bool DataEntryUrl::ReadWriteInternal(BoxBuffer* buffer) {
+
1988  RCHECK(ReadWriteHeaderInternal(buffer));
+
1989  if (buffer->Reading()) {
+
1990  RCHECK(buffer->ReadWriteVector(&location, buffer->BytesLeft()));
+
1991  } else {
+
1992  RCHECK(buffer->ReadWriteVector(&location, location.size()));
+
1993  }
+
1994  return true;
+
1995 }
+
1996 
+
1997 size_t DataEntryUrl::ComputeSizeInternal() {
+
1998  return HeaderSize() + location.size();
+
1999 }
+
2000 
+
2001 DataReference::DataReference() {
+
2002  // Default 1 entry.
+
2003  data_entry.resize(1);
+
2004 }
+
2005 DataReference::~DataReference() {}
+
2006 FourCC DataReference::BoxType() const { return FOURCC_dref; }
+
2007 bool DataReference::ReadWriteInternal(BoxBuffer* buffer) {
+
2008  uint32_t entry_count = static_cast<uint32_t>(data_entry.size());
+
2009  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
2010  buffer->ReadWriteUInt32(&entry_count));
+
2011  data_entry.resize(entry_count);
+
2012  RCHECK(buffer->PrepareChildren());
+
2013  for (uint32_t i = 0; i < entry_count; ++i)
+
2014  RCHECK(buffer->ReadWriteChild(&data_entry[i]));
+
2015  return true;
+
2016 }
+
2017 
+
2018 size_t DataReference::ComputeSizeInternal() {
+
2019  uint32_t count = static_cast<uint32_t>(data_entry.size());
+
2020  size_t box_size = HeaderSize() + sizeof(count);
+
2021  for (uint32_t i = 0; i < count; ++i)
+
2022  box_size += data_entry[i].ComputeSize();
+
2023  return box_size;
+
2024 }
+
2025 
+
2026 DataInformation::DataInformation() {}
+
2027 DataInformation::~DataInformation() {}
+
2028 FourCC DataInformation::BoxType() const { return FOURCC_dinf; }
2029 
-
2030 uint32_t DataInformation::ComputeSizeInternal() {
-
2031  return HeaderSize() + dref.ComputeSize();
-
2032 }
-
2033 
-
2034 MediaInformation::MediaInformation() {}
-
2035 MediaInformation::~MediaInformation() {}
-
2036 FourCC MediaInformation::BoxType() const { return FOURCC_minf; }
-
2037 
-
2038 bool MediaInformation::ReadWriteInternal(BoxBuffer* buffer) {
-
2039  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
2040  buffer->PrepareChildren() &&
-
2041  buffer->ReadWriteChild(&dinf) &&
-
2042  buffer->ReadWriteChild(&sample_table));
-
2043  switch (sample_table.description.type) {
-
2044  case kVideo:
-
2045  RCHECK(buffer->ReadWriteChild(&vmhd));
-
2046  break;
-
2047  case kAudio:
-
2048  RCHECK(buffer->ReadWriteChild(&smhd));
-
2049  break;
-
2050  case kText:
-
2051  RCHECK(buffer->TryReadWriteChild(&sthd));
+
2030 bool DataInformation::ReadWriteInternal(BoxBuffer* buffer) {
+
2031  return ReadWriteHeaderInternal(buffer) &&
+
2032  buffer->PrepareChildren() &&
+
2033  buffer->ReadWriteChild(&dref);
+
2034 }
+
2035 
+
2036 size_t DataInformation::ComputeSizeInternal() {
+
2037  return HeaderSize() + dref.ComputeSize();
+
2038 }
+
2039 
+
2040 MediaInformation::MediaInformation() {}
+
2041 MediaInformation::~MediaInformation() {}
+
2042 FourCC MediaInformation::BoxType() const { return FOURCC_minf; }
+
2043 
+
2044 bool MediaInformation::ReadWriteInternal(BoxBuffer* buffer) {
+
2045  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
2046  buffer->PrepareChildren() &&
+
2047  buffer->ReadWriteChild(&dinf) &&
+
2048  buffer->ReadWriteChild(&sample_table));
+
2049  switch (sample_table.description.type) {
+
2050  case kVideo:
+
2051  RCHECK(buffer->ReadWriteChild(&vmhd));
2052  break;
-
2053  default:
-
2054  NOTIMPLEMENTED();
-
2055  }
-
2056  // Hint is not supported for now.
-
2057  return true;
-
2058 }
-
2059 
-
2060 uint32_t MediaInformation::ComputeSizeInternal() {
-
2061  uint32_t box_size =
-
2062  HeaderSize() + dinf.ComputeSize() + sample_table.ComputeSize();
-
2063  switch (sample_table.description.type) {
-
2064  case kVideo:
-
2065  box_size += vmhd.ComputeSize();
-
2066  break;
-
2067  case kAudio:
-
2068  box_size += smhd.ComputeSize();
-
2069  break;
-
2070  case kText:
-
2071  box_size += sthd.ComputeSize();
+
2053  case kAudio:
+
2054  RCHECK(buffer->ReadWriteChild(&smhd));
+
2055  break;
+
2056  case kText:
+
2057  RCHECK(buffer->TryReadWriteChild(&sthd));
+
2058  break;
+
2059  default:
+
2060  NOTIMPLEMENTED();
+
2061  }
+
2062  // Hint is not supported for now.
+
2063  return true;
+
2064 }
+
2065 
+
2066 size_t MediaInformation::ComputeSizeInternal() {
+
2067  size_t box_size =
+
2068  HeaderSize() + dinf.ComputeSize() + sample_table.ComputeSize();
+
2069  switch (sample_table.description.type) {
+
2070  case kVideo:
+
2071  box_size += vmhd.ComputeSize();
2072  break;
-
2073  default:
-
2074  NOTIMPLEMENTED();
-
2075  }
-
2076  return box_size;
-
2077 }
-
2078 
-
2079 Media::Media() {}
-
2080 Media::~Media() {}
-
2081 FourCC Media::BoxType() const { return FOURCC_mdia; }
-
2082 
-
2083 bool Media::ReadWriteInternal(BoxBuffer* buffer) {
-
2084  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
2085  buffer->PrepareChildren() &&
-
2086  buffer->ReadWriteChild(&header));
-
2087  if (buffer->Reading()) {
-
2088  RCHECK(buffer->ReadWriteChild(&handler));
-
2089  // Maddeningly, the HandlerReference box specifies how to parse the
-
2090  // SampleDescription box, making the latter the only box (of those that we
-
2091  // support) which cannot be parsed correctly on its own (or even with
-
2092  // information from its strict ancestor tree). We thus copy the handler type
-
2093  // to the sample description box *before* parsing it to provide this
-
2094  // information while parsing.
-
2095  information.sample_table.description.type =
-
2096  FourCCToTrackType(handler.handler_type);
-
2097  } else {
-
2098  handler.handler_type =
-
2099  TrackTypeToFourCC(information.sample_table.description.type);
-
2100  RCHECK(handler.handler_type != FOURCC_NULL);
-
2101  RCHECK(buffer->ReadWriteChild(&handler));
-
2102  }
-
2103  RCHECK(buffer->ReadWriteChild(&information));
-
2104  return true;
-
2105 }
-
2106 
-
2107 uint32_t Media::ComputeSizeInternal() {
-
2108  handler.handler_type =
-
2109  TrackTypeToFourCC(information.sample_table.description.type);
-
2110  return HeaderSize() + header.ComputeSize() + handler.ComputeSize() +
-
2111  information.ComputeSize();
-
2112 }
-
2113 
-
2114 Track::Track() {}
-
2115 Track::~Track() {}
-
2116 FourCC Track::BoxType() const { return FOURCC_trak; }
-
2117 
-
2118 bool Track::ReadWriteInternal(BoxBuffer* buffer) {
-
2119  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
2120  buffer->PrepareChildren() &&
-
2121  buffer->ReadWriteChild(&header) &&
-
2122  buffer->ReadWriteChild(&media) &&
-
2123  buffer->TryReadWriteChild(&edit) &&
-
2124  buffer->TryReadWriteChild(&sample_encryption));
-
2125  return true;
-
2126 }
-
2127 
-
2128 uint32_t Track::ComputeSizeInternal() {
-
2129  return HeaderSize() + header.ComputeSize() + media.ComputeSize() +
-
2130  edit.ComputeSize();
-
2131 }
-
2132 
-
2133 MovieExtendsHeader::MovieExtendsHeader() : fragment_duration(0) {}
-
2134 MovieExtendsHeader::~MovieExtendsHeader() {}
-
2135 FourCC MovieExtendsHeader::BoxType() const { return FOURCC_mehd; }
-
2136 
-
2137 bool MovieExtendsHeader::ReadWriteInternal(BoxBuffer* buffer) {
-
2138  RCHECK(ReadWriteHeaderInternal(buffer));
-
2139  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
-
2140  RCHECK(buffer->ReadWriteUInt64NBytes(&fragment_duration, num_bytes));
-
2141  return true;
-
2142 }
-
2143 
-
2144 uint32_t MovieExtendsHeader::ComputeSizeInternal() {
-
2145  // This box is optional. Skip it if it is not used.
-
2146  if (fragment_duration == 0)
-
2147  return 0;
-
2148  version = IsFitIn32Bits(fragment_duration) ? 0 : 1;
-
2149  return HeaderSize() + sizeof(uint32_t) * (1 + version);
-
2150 }
-
2151 
-
2152 TrackExtends::TrackExtends()
-
2153  : track_id(0),
-
2154  default_sample_description_index(0),
-
2155  default_sample_duration(0),
-
2156  default_sample_size(0),
-
2157  default_sample_flags(0) {}
-
2158 TrackExtends::~TrackExtends() {}
-
2159 FourCC TrackExtends::BoxType() const { return FOURCC_trex; }
-
2160 
-
2161 bool TrackExtends::ReadWriteInternal(BoxBuffer* buffer) {
-
2162  RCHECK(ReadWriteHeaderInternal(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));
-
2168  return true;
-
2169 }
-
2170 
-
2171 uint32_t TrackExtends::ComputeSizeInternal() {
-
2172  return HeaderSize() + sizeof(track_id) +
-
2173  sizeof(default_sample_description_index) +
-
2174  sizeof(default_sample_duration) + sizeof(default_sample_size) +
-
2175  sizeof(default_sample_flags);
-
2176 }
-
2177 
-
2178 MovieExtends::MovieExtends() {}
-
2179 MovieExtends::~MovieExtends() {}
-
2180 FourCC MovieExtends::BoxType() const { return FOURCC_mvex; }
-
2181 
-
2182 bool MovieExtends::ReadWriteInternal(BoxBuffer* buffer) {
-
2183  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
2184  buffer->PrepareChildren() &&
-
2185  buffer->TryReadWriteChild(&header));
-
2186  if (buffer->Reading()) {
-
2187  DCHECK(buffer->reader());
-
2188  RCHECK(buffer->reader()->ReadChildren(&tracks));
-
2189  } else {
-
2190  for (uint32_t i = 0; i < tracks.size(); ++i)
-
2191  RCHECK(buffer->ReadWriteChild(&tracks[i]));
-
2192  }
-
2193  return true;
-
2194 }
-
2195 
-
2196 uint32_t MovieExtends::ComputeSizeInternal() {
-
2197  // This box is optional. Skip it if it does not contain any track.
-
2198  if (tracks.size() == 0)
-
2199  return 0;
-
2200  uint32_t box_size = HeaderSize() + header.ComputeSize();
-
2201  for (uint32_t i = 0; i < tracks.size(); ++i)
-
2202  box_size += tracks[i].ComputeSize();
-
2203  return box_size;
-
2204 }
-
2205 
-
2206 Movie::Movie() {}
-
2207 Movie::~Movie() {}
-
2208 FourCC Movie::BoxType() const { return FOURCC_moov; }
-
2209 
-
2210 bool Movie::ReadWriteInternal(BoxBuffer* buffer) {
-
2211  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
2212  buffer->PrepareChildren() &&
-
2213  buffer->ReadWriteChild(&header) &&
-
2214  buffer->TryReadWriteChild(&metadata) &&
-
2215  buffer->TryReadWriteChild(&extends));
-
2216  if (buffer->Reading()) {
-
2217  BoxReader* reader = buffer->reader();
-
2218  DCHECK(reader);
-
2219  RCHECK(reader->ReadChildren(&tracks) &&
-
2220  reader->TryReadChildren(&pssh));
-
2221  } else {
-
2222  for (uint32_t i = 0; i < tracks.size(); ++i)
-
2223  RCHECK(buffer->ReadWriteChild(&tracks[i]));
-
2224  for (uint32_t i = 0; i < pssh.size(); ++i)
-
2225  RCHECK(buffer->ReadWriteChild(&pssh[i]));
-
2226  }
-
2227  return true;
-
2228 }
-
2229 
-
2230 uint32_t Movie::ComputeSizeInternal() {
-
2231  uint32_t box_size = HeaderSize() + header.ComputeSize() +
-
2232  metadata.ComputeSize() + extends.ComputeSize();
-
2233  for (uint32_t i = 0; i < tracks.size(); ++i)
-
2234  box_size += tracks[i].ComputeSize();
-
2235  for (uint32_t i = 0; i < pssh.size(); ++i)
-
2236  box_size += pssh[i].ComputeSize();
-
2237  return box_size;
-
2238 }
-
2239 
-
2240 TrackFragmentDecodeTime::TrackFragmentDecodeTime() : decode_time(0) {}
-
2241 TrackFragmentDecodeTime::~TrackFragmentDecodeTime() {}
-
2242 FourCC TrackFragmentDecodeTime::BoxType() const { return FOURCC_tfdt; }
-
2243 
-
2244 bool TrackFragmentDecodeTime::ReadWriteInternal(BoxBuffer* buffer) {
-
2245  RCHECK(ReadWriteHeaderInternal(buffer));
-
2246  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
-
2247  RCHECK(buffer->ReadWriteUInt64NBytes(&decode_time, num_bytes));
-
2248  return true;
-
2249 }
-
2250 
-
2251 uint32_t TrackFragmentDecodeTime::ComputeSizeInternal() {
-
2252  version = IsFitIn32Bits(decode_time) ? 0 : 1;
-
2253  return HeaderSize() + sizeof(uint32_t) * (1 + version);
-
2254 }
-
2255 
-
2256 MovieFragmentHeader::MovieFragmentHeader() : sequence_number(0) {}
-
2257 MovieFragmentHeader::~MovieFragmentHeader() {}
-
2258 FourCC MovieFragmentHeader::BoxType() const { return FOURCC_mfhd; }
-
2259 
-
2260 bool MovieFragmentHeader::ReadWriteInternal(BoxBuffer* buffer) {
-
2261  return ReadWriteHeaderInternal(buffer) &&
-
2262  buffer->ReadWriteUInt32(&sequence_number);
-
2263 }
-
2264 
-
2265 uint32_t MovieFragmentHeader::ComputeSizeInternal() {
-
2266  return HeaderSize() + sizeof(sequence_number);
-
2267 }
-
2268 
-
2269 TrackFragmentHeader::TrackFragmentHeader()
-
2270  : track_id(0),
-
2271  sample_description_index(0),
-
2272  default_sample_duration(0),
-
2273  default_sample_size(0),
-
2274  default_sample_flags(0) {}
-
2275 
-
2276 TrackFragmentHeader::~TrackFragmentHeader() {}
-
2277 FourCC TrackFragmentHeader::BoxType() const { return FOURCC_tfhd; }
-
2278 
-
2279 bool TrackFragmentHeader::ReadWriteInternal(BoxBuffer* buffer) {
-
2280  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
2281  buffer->ReadWriteUInt32(&track_id));
-
2282 
-
2283  if (flags & kBaseDataOffsetPresentMask) {
-
2284  // MSE requires 'default-base-is-moof' to be set and
-
2285  // 'base-data-offset-present' not to be set. We omit these checks as some
-
2286  // valid files in the wild don't follow these rules, though they use moof as
-
2287  // base.
-
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.";
-
2292  }
-
2293 
-
2294  if (flags & kSampleDescriptionIndexPresentMask) {
-
2295  RCHECK(buffer->ReadWriteUInt32(&sample_description_index));
-
2296  } else if (buffer->Reading()) {
-
2297  sample_description_index = 0;
+
2073  case kAudio:
+
2074  box_size += smhd.ComputeSize();
+
2075  break;
+
2076  case kText:
+
2077  box_size += sthd.ComputeSize();
+
2078  break;
+
2079  default:
+
2080  NOTIMPLEMENTED();
+
2081  }
+
2082  return box_size;
+
2083 }
+
2084 
+
2085 Media::Media() {}
+
2086 Media::~Media() {}
+
2087 FourCC Media::BoxType() const { return FOURCC_mdia; }
+
2088 
+
2089 bool Media::ReadWriteInternal(BoxBuffer* buffer) {
+
2090  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
2091  buffer->PrepareChildren() &&
+
2092  buffer->ReadWriteChild(&header));
+
2093  if (buffer->Reading()) {
+
2094  RCHECK(buffer->ReadWriteChild(&handler));
+
2095  // Maddeningly, the HandlerReference box specifies how to parse the
+
2096  // SampleDescription box, making the latter the only box (of those that we
+
2097  // support) which cannot be parsed correctly on its own (or even with
+
2098  // information from its strict ancestor tree). We thus copy the handler type
+
2099  // to the sample description box *before* parsing it to provide this
+
2100  // information while parsing.
+
2101  information.sample_table.description.type =
+
2102  FourCCToTrackType(handler.handler_type);
+
2103  } else {
+
2104  handler.handler_type =
+
2105  TrackTypeToFourCC(information.sample_table.description.type);
+
2106  RCHECK(handler.handler_type != FOURCC_NULL);
+
2107  RCHECK(buffer->ReadWriteChild(&handler));
+
2108  }
+
2109  RCHECK(buffer->ReadWriteChild(&information));
+
2110  return true;
+
2111 }
+
2112 
+
2113 size_t Media::ComputeSizeInternal() {
+
2114  handler.handler_type =
+
2115  TrackTypeToFourCC(information.sample_table.description.type);
+
2116  return HeaderSize() + header.ComputeSize() + handler.ComputeSize() +
+
2117  information.ComputeSize();
+
2118 }
+
2119 
+
2120 Track::Track() {}
+
2121 Track::~Track() {}
+
2122 FourCC Track::BoxType() const { return FOURCC_trak; }
+
2123 
+
2124 bool Track::ReadWriteInternal(BoxBuffer* buffer) {
+
2125  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
2126  buffer->PrepareChildren() &&
+
2127  buffer->ReadWriteChild(&header) &&
+
2128  buffer->ReadWriteChild(&media) &&
+
2129  buffer->TryReadWriteChild(&edit) &&
+
2130  buffer->TryReadWriteChild(&sample_encryption));
+
2131  return true;
+
2132 }
+
2133 
+
2134 size_t Track::ComputeSizeInternal() {
+
2135  return HeaderSize() + header.ComputeSize() + media.ComputeSize() +
+
2136  edit.ComputeSize();
+
2137 }
+
2138 
+
2139 MovieExtendsHeader::MovieExtendsHeader() : fragment_duration(0) {}
+
2140 MovieExtendsHeader::~MovieExtendsHeader() {}
+
2141 FourCC MovieExtendsHeader::BoxType() const { return FOURCC_mehd; }
+
2142 
+
2143 bool MovieExtendsHeader::ReadWriteInternal(BoxBuffer* buffer) {
+
2144  RCHECK(ReadWriteHeaderInternal(buffer));
+
2145  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
+
2146  RCHECK(buffer->ReadWriteUInt64NBytes(&fragment_duration, num_bytes));
+
2147  return true;
+
2148 }
+
2149 
+
2150 size_t MovieExtendsHeader::ComputeSizeInternal() {
+
2151  // This box is optional. Skip it if it is not used.
+
2152  if (fragment_duration == 0)
+
2153  return 0;
+
2154  version = IsFitIn32Bits(fragment_duration) ? 0 : 1;
+
2155  return HeaderSize() + sizeof(uint32_t) * (1 + version);
+
2156 }
+
2157 
+
2158 TrackExtends::TrackExtends()
+
2159  : track_id(0),
+
2160  default_sample_description_index(0),
+
2161  default_sample_duration(0),
+
2162  default_sample_size(0),
+
2163  default_sample_flags(0) {}
+
2164 TrackExtends::~TrackExtends() {}
+
2165 FourCC TrackExtends::BoxType() const { return FOURCC_trex; }
+
2166 
+
2167 bool TrackExtends::ReadWriteInternal(BoxBuffer* buffer) {
+
2168  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
2169  buffer->ReadWriteUInt32(&track_id) &&
+
2170  buffer->ReadWriteUInt32(&default_sample_description_index) &&
+
2171  buffer->ReadWriteUInt32(&default_sample_duration) &&
+
2172  buffer->ReadWriteUInt32(&default_sample_size) &&
+
2173  buffer->ReadWriteUInt32(&default_sample_flags));
+
2174  return true;
+
2175 }
+
2176 
+
2177 size_t TrackExtends::ComputeSizeInternal() {
+
2178  return HeaderSize() + sizeof(track_id) +
+
2179  sizeof(default_sample_description_index) +
+
2180  sizeof(default_sample_duration) + sizeof(default_sample_size) +
+
2181  sizeof(default_sample_flags);
+
2182 }
+
2183 
+
2184 MovieExtends::MovieExtends() {}
+
2185 MovieExtends::~MovieExtends() {}
+
2186 FourCC MovieExtends::BoxType() const { return FOURCC_mvex; }
+
2187 
+
2188 bool MovieExtends::ReadWriteInternal(BoxBuffer* buffer) {
+
2189  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
2190  buffer->PrepareChildren() &&
+
2191  buffer->TryReadWriteChild(&header));
+
2192  if (buffer->Reading()) {
+
2193  DCHECK(buffer->reader());
+
2194  RCHECK(buffer->reader()->ReadChildren(&tracks));
+
2195  } else {
+
2196  for (uint32_t i = 0; i < tracks.size(); ++i)
+
2197  RCHECK(buffer->ReadWriteChild(&tracks[i]));
+
2198  }
+
2199  return true;
+
2200 }
+
2201 
+
2202 size_t MovieExtends::ComputeSizeInternal() {
+
2203  // This box is optional. Skip it if it does not contain any track.
+
2204  if (tracks.size() == 0)
+
2205  return 0;
+
2206  size_t box_size = HeaderSize() + header.ComputeSize();
+
2207  for (uint32_t i = 0; i < tracks.size(); ++i)
+
2208  box_size += tracks[i].ComputeSize();
+
2209  return box_size;
+
2210 }
+
2211 
+
2212 Movie::Movie() {}
+
2213 Movie::~Movie() {}
+
2214 FourCC Movie::BoxType() const { return FOURCC_moov; }
+
2215 
+
2216 bool Movie::ReadWriteInternal(BoxBuffer* buffer) {
+
2217  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
2218  buffer->PrepareChildren() &&
+
2219  buffer->ReadWriteChild(&header) &&
+
2220  buffer->TryReadWriteChild(&metadata) &&
+
2221  buffer->TryReadWriteChild(&extends));
+
2222  if (buffer->Reading()) {
+
2223  BoxReader* reader = buffer->reader();
+
2224  DCHECK(reader);
+
2225  RCHECK(reader->ReadChildren(&tracks) &&
+
2226  reader->TryReadChildren(&pssh));
+
2227  } else {
+
2228  for (uint32_t i = 0; i < tracks.size(); ++i)
+
2229  RCHECK(buffer->ReadWriteChild(&tracks[i]));
+
2230  for (uint32_t i = 0; i < pssh.size(); ++i)
+
2231  RCHECK(buffer->ReadWriteChild(&pssh[i]));
+
2232  }
+
2233  return true;
+
2234 }
+
2235 
+
2236 size_t Movie::ComputeSizeInternal() {
+
2237  size_t box_size = HeaderSize() + header.ComputeSize() +
+
2238  metadata.ComputeSize() + extends.ComputeSize();
+
2239  for (uint32_t i = 0; i < tracks.size(); ++i)
+
2240  box_size += tracks[i].ComputeSize();
+
2241  for (uint32_t i = 0; i < pssh.size(); ++i)
+
2242  box_size += pssh[i].ComputeSize();
+
2243  return box_size;
+
2244 }
+
2245 
+
2246 TrackFragmentDecodeTime::TrackFragmentDecodeTime() : decode_time(0) {}
+
2247 TrackFragmentDecodeTime::~TrackFragmentDecodeTime() {}
+
2248 FourCC TrackFragmentDecodeTime::BoxType() const { return FOURCC_tfdt; }
+
2249 
+
2250 bool TrackFragmentDecodeTime::ReadWriteInternal(BoxBuffer* buffer) {
+
2251  RCHECK(ReadWriteHeaderInternal(buffer));
+
2252  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
+
2253  RCHECK(buffer->ReadWriteUInt64NBytes(&decode_time, num_bytes));
+
2254  return true;
+
2255 }
+
2256 
+
2257 size_t TrackFragmentDecodeTime::ComputeSizeInternal() {
+
2258  version = IsFitIn32Bits(decode_time) ? 0 : 1;
+
2259  return HeaderSize() + sizeof(uint32_t) * (1 + version);
+
2260 }
+
2261 
+
2262 MovieFragmentHeader::MovieFragmentHeader() : sequence_number(0) {}
+
2263 MovieFragmentHeader::~MovieFragmentHeader() {}
+
2264 FourCC MovieFragmentHeader::BoxType() const { return FOURCC_mfhd; }
+
2265 
+
2266 bool MovieFragmentHeader::ReadWriteInternal(BoxBuffer* buffer) {
+
2267  return ReadWriteHeaderInternal(buffer) &&
+
2268  buffer->ReadWriteUInt32(&sequence_number);
+
2269 }
+
2270 
+
2271 size_t MovieFragmentHeader::ComputeSizeInternal() {
+
2272  return HeaderSize() + sizeof(sequence_number);
+
2273 }
+
2274 
+
2275 TrackFragmentHeader::TrackFragmentHeader()
+
2276  : track_id(0),
+
2277  sample_description_index(0),
+
2278  default_sample_duration(0),
+
2279  default_sample_size(0),
+
2280  default_sample_flags(0) {}
+
2281 
+
2282 TrackFragmentHeader::~TrackFragmentHeader() {}
+
2283 FourCC TrackFragmentHeader::BoxType() const { return FOURCC_tfhd; }
+
2284 
+
2285 bool TrackFragmentHeader::ReadWriteInternal(BoxBuffer* buffer) {
+
2286  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
2287  buffer->ReadWriteUInt32(&track_id));
+
2288 
+
2289  if (flags & kBaseDataOffsetPresentMask) {
+
2290  // MSE requires 'default-base-is-moof' to be set and
+
2291  // 'base-data-offset-present' not to be set. We omit these checks as some
+
2292  // valid files in the wild don't follow these rules, though they use moof as
+
2293  // base.
+
2294  uint64_t base_data_offset;
+
2295  RCHECK(buffer->ReadWriteUInt64(&base_data_offset));
+
2296  DLOG(WARNING) << "base-data-offset-present is not expected. Assumes "
+
2297  "default-base-is-moof.";
2298  }
2299 
-
2300  if (flags & kDefaultSampleDurationPresentMask) {
-
2301  RCHECK(buffer->ReadWriteUInt32(&default_sample_duration));
+
2300  if (flags & kSampleDescriptionIndexPresentMask) {
+
2301  RCHECK(buffer->ReadWriteUInt32(&sample_description_index));
2302  } else if (buffer->Reading()) {
-
2303  default_sample_duration = 0;
+
2303  sample_description_index = 0;
2304  }
2305 
-
2306  if (flags & kDefaultSampleSizePresentMask) {
-
2307  RCHECK(buffer->ReadWriteUInt32(&default_sample_size));
+
2306  if (flags & kDefaultSampleDurationPresentMask) {
+
2307  RCHECK(buffer->ReadWriteUInt32(&default_sample_duration));
2308  } else if (buffer->Reading()) {
-
2309  default_sample_size = 0;
+
2309  default_sample_duration = 0;
2310  }
2311 
-
2312  if (flags & kDefaultSampleFlagsPresentMask)
-
2313  RCHECK(buffer->ReadWriteUInt32(&default_sample_flags));
-
2314  return true;
-
2315 }
-
2316 
-
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);
-
2327  return box_size;
-
2328 }
-
2329 
-
2330 TrackFragmentRun::TrackFragmentRun() : sample_count(0), data_offset(0) {}
-
2331 TrackFragmentRun::~TrackFragmentRun() {}
-
2332 FourCC TrackFragmentRun::BoxType() const { return FOURCC_trun; }
-
2333 
-
2334 bool TrackFragmentRun::ReadWriteInternal(BoxBuffer* buffer) {
-
2335  if (!buffer->Reading()) {
-
2336  // Determine whether version 0 or version 1 should be used.
-
2337  // Use version 0 if possible, use version 1 if there is a negative
-
2338  // sample_offset value.
-
2339  version = 0;
-
2340  if (flags & kSampleCompTimeOffsetsPresentMask) {
-
2341  for (uint32_t i = 0; i < sample_count; ++i) {
-
2342  if (sample_composition_time_offsets[i] < 0) {
-
2343  version = 1;
-
2344  break;
-
2345  }
-
2346  }
-
2347  }
-
2348  }
-
2349 
-
2350  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
2351  buffer->ReadWriteUInt32(&sample_count));
-
2352 
-
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;
-
2360 
-
2361  if (data_offset_present) {
-
2362  RCHECK(buffer->ReadWriteUInt32(&data_offset));
-
2363  } else {
-
2364  // NOTE: If the data-offset is not present, then the data for this run
-
2365  // starts immediately after the data of the previous run, or at the
-
2366  // base-data-offset defined by the track fragment header if this is the
-
2367  // first run in a track fragment. If the data-offset is present, it is
-
2368  // relative to the base-data-offset established in the track fragment
-
2369  // header.
-
2370  NOTIMPLEMENTED();
-
2371  }
-
2372 
-
2373  uint32_t first_sample_flags(0);
-
2374 
-
2375  if (buffer->Reading()) {
-
2376  if (first_sample_flags_present)
-
2377  RCHECK(buffer->ReadWriteUInt32(&first_sample_flags));
+
2312  if (flags & kDefaultSampleSizePresentMask) {
+
2313  RCHECK(buffer->ReadWriteUInt32(&default_sample_size));
+
2314  } else if (buffer->Reading()) {
+
2315  default_sample_size = 0;
+
2316  }
+
2317 
+
2318  if (flags & kDefaultSampleFlagsPresentMask)
+
2319  RCHECK(buffer->ReadWriteUInt32(&default_sample_flags));
+
2320  return true;
+
2321 }
+
2322 
+
2323 size_t TrackFragmentHeader::ComputeSizeInternal() {
+
2324  size_t box_size = HeaderSize() + sizeof(track_id);
+
2325  if (flags & kSampleDescriptionIndexPresentMask)
+
2326  box_size += sizeof(sample_description_index);
+
2327  if (flags & kDefaultSampleDurationPresentMask)
+
2328  box_size += sizeof(default_sample_duration);
+
2329  if (flags & kDefaultSampleSizePresentMask)
+
2330  box_size += sizeof(default_sample_size);
+
2331  if (flags & kDefaultSampleFlagsPresentMask)
+
2332  box_size += sizeof(default_sample_flags);
+
2333  return box_size;
+
2334 }
+
2335 
+
2336 TrackFragmentRun::TrackFragmentRun() : sample_count(0), data_offset(0) {}
+
2337 TrackFragmentRun::~TrackFragmentRun() {}
+
2338 FourCC TrackFragmentRun::BoxType() const { return FOURCC_trun; }
+
2339 
+
2340 bool TrackFragmentRun::ReadWriteInternal(BoxBuffer* buffer) {
+
2341  if (!buffer->Reading()) {
+
2342  // Determine whether version 0 or version 1 should be used.
+
2343  // Use version 0 if possible, use version 1 if there is a negative
+
2344  // sample_offset value.
+
2345  version = 0;
+
2346  if (flags & kSampleCompTimeOffsetsPresentMask) {
+
2347  for (uint32_t i = 0; i < sample_count; ++i) {
+
2348  if (sample_composition_time_offsets[i] < 0) {
+
2349  version = 1;
+
2350  break;
+
2351  }
+
2352  }
+
2353  }
+
2354  }
+
2355 
+
2356  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
2357  buffer->ReadWriteUInt32(&sample_count));
+
2358 
+
2359  bool data_offset_present = (flags & kDataOffsetPresentMask) != 0;
+
2360  bool first_sample_flags_present = (flags & kFirstSampleFlagsPresentMask) != 0;
+
2361  bool sample_duration_present = (flags & kSampleDurationPresentMask) != 0;
+
2362  bool sample_size_present = (flags & kSampleSizePresentMask) != 0;
+
2363  bool sample_flags_present = (flags & kSampleFlagsPresentMask) != 0;
+
2364  bool sample_composition_time_offsets_present =
+
2365  (flags & kSampleCompTimeOffsetsPresentMask) != 0;
+
2366 
+
2367  if (data_offset_present) {
+
2368  RCHECK(buffer->ReadWriteUInt32(&data_offset));
+
2369  } else {
+
2370  // NOTE: If the data-offset is not present, then the data for this run
+
2371  // starts immediately after the data of the previous run, or at the
+
2372  // base-data-offset defined by the track fragment header if this is the
+
2373  // first run in a track fragment. If the data-offset is present, it is
+
2374  // relative to the base-data-offset established in the track fragment
+
2375  // header.
+
2376  NOTIMPLEMENTED();
+
2377  }
2378 
-
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);
-
2387  } else {
-
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));
-
2392  }
-
2393 
-
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);
-
2402  }
-
2403 
-
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]));
-
2411 
-
2412  if (sample_composition_time_offsets_present) {
-
2413  if (version == 0) {
-
2414  uint32_t sample_offset = sample_composition_time_offsets[i];
-
2415  RCHECK(buffer->ReadWriteUInt32(&sample_offset));
-
2416  sample_composition_time_offsets[i] = sample_offset;
-
2417  } else {
-
2418  int32_t sample_offset = sample_composition_time_offsets[i];
-
2419  RCHECK(buffer->ReadWriteInt32(&sample_offset));
-
2420  sample_composition_time_offsets[i] = sample_offset;
-
2421  }
-
2422  }
-
2423  }
-
2424 
-
2425  if (buffer->Reading()) {
-
2426  if (first_sample_flags_present) {
-
2427  if (sample_flags.size() == 0) {
-
2428  sample_flags.push_back(first_sample_flags);
-
2429  } else {
-
2430  sample_flags[0] = first_sample_flags;
-
2431  }
-
2432  }
-
2433  }
-
2434  return true;
-
2435 }
-
2436 
-
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;
-
2448  return box_size;
-
2449 }
-
2450 
-
2451 TrackFragment::TrackFragment() : decode_time_absent(false) {}
-
2452 TrackFragment::~TrackFragment() {}
-
2453 FourCC TrackFragment::BoxType() const { return FOURCC_traf; }
-
2454 
-
2455 bool TrackFragment::ReadWriteInternal(BoxBuffer* buffer) {
-
2456  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
2457  buffer->PrepareChildren() &&
-
2458  buffer->ReadWriteChild(&header));
-
2459  if (buffer->Reading()) {
-
2460  DCHECK(buffer->reader());
-
2461  decode_time_absent = !buffer->reader()->ChildExist(&decode_time);
-
2462  if (!decode_time_absent)
-
2463  RCHECK(buffer->ReadWriteChild(&decode_time));
-
2464  RCHECK(buffer->reader()->TryReadChildren(&runs) &&
-
2465  buffer->reader()->TryReadChildren(&sample_group_descriptions) &&
-
2466  buffer->reader()->TryReadChildren(&sample_to_groups));
-
2467  } else {
+
2379  uint32_t first_sample_flags(0);
+
2380 
+
2381  if (buffer->Reading()) {
+
2382  if (first_sample_flags_present)
+
2383  RCHECK(buffer->ReadWriteUInt32(&first_sample_flags));
+
2384 
+
2385  if (sample_duration_present)
+
2386  sample_durations.resize(sample_count);
+
2387  if (sample_size_present)
+
2388  sample_sizes.resize(sample_count);
+
2389  if (sample_flags_present)
+
2390  sample_flags.resize(sample_count);
+
2391  if (sample_composition_time_offsets_present)
+
2392  sample_composition_time_offsets.resize(sample_count);
+
2393  } else {
+
2394  if (first_sample_flags_present) {
+
2395  first_sample_flags = sample_flags[0];
+
2396  DCHECK(sample_flags.size() == 1);
+
2397  RCHECK(buffer->ReadWriteUInt32(&first_sample_flags));
+
2398  }
+
2399 
+
2400  if (sample_duration_present)
+
2401  DCHECK(sample_durations.size() == sample_count);
+
2402  if (sample_size_present)
+
2403  DCHECK(sample_sizes.size() == sample_count);
+
2404  if (sample_flags_present)
+
2405  DCHECK(sample_flags.size() == sample_count);
+
2406  if (sample_composition_time_offsets_present)
+
2407  DCHECK(sample_composition_time_offsets.size() == sample_count);
+
2408  }
+
2409 
+
2410  for (uint32_t i = 0; i < sample_count; ++i) {
+
2411  if (sample_duration_present)
+
2412  RCHECK(buffer->ReadWriteUInt32(&sample_durations[i]));
+
2413  if (sample_size_present)
+
2414  RCHECK(buffer->ReadWriteUInt32(&sample_sizes[i]));
+
2415  if (sample_flags_present)
+
2416  RCHECK(buffer->ReadWriteUInt32(&sample_flags[i]));
+
2417 
+
2418  if (sample_composition_time_offsets_present) {
+
2419  if (version == 0) {
+
2420  uint32_t sample_offset = sample_composition_time_offsets[i];
+
2421  RCHECK(buffer->ReadWriteUInt32(&sample_offset));
+
2422  sample_composition_time_offsets[i] = sample_offset;
+
2423  } else {
+
2424  int32_t sample_offset = sample_composition_time_offsets[i];
+
2425  RCHECK(buffer->ReadWriteInt32(&sample_offset));
+
2426  sample_composition_time_offsets[i] = sample_offset;
+
2427  }
+
2428  }
+
2429  }
+
2430 
+
2431  if (buffer->Reading()) {
+
2432  if (first_sample_flags_present) {
+
2433  if (sample_flags.size() == 0) {
+
2434  sample_flags.push_back(first_sample_flags);
+
2435  } else {
+
2436  sample_flags[0] = first_sample_flags;
+
2437  }
+
2438  }
+
2439  }
+
2440  return true;
+
2441 }
+
2442 
+
2443 size_t TrackFragmentRun::ComputeSizeInternal() {
+
2444  size_t box_size = HeaderSize() + sizeof(sample_count);
+
2445  if (flags & kDataOffsetPresentMask)
+
2446  box_size += sizeof(data_offset);
+
2447  if (flags & kFirstSampleFlagsPresentMask)
+
2448  box_size += sizeof(uint32_t);
+
2449  uint32_t fields = (flags & kSampleDurationPresentMask ? 1 : 0) +
+
2450  (flags & kSampleSizePresentMask ? 1 : 0) +
+
2451  (flags & kSampleFlagsPresentMask ? 1 : 0) +
+
2452  (flags & kSampleCompTimeOffsetsPresentMask ? 1 : 0);
+
2453  box_size += fields * sizeof(uint32_t) * sample_count;
+
2454  return box_size;
+
2455 }
+
2456 
+
2457 TrackFragment::TrackFragment() : decode_time_absent(false) {}
+
2458 TrackFragment::~TrackFragment() {}
+
2459 FourCC TrackFragment::BoxType() const { return FOURCC_traf; }
+
2460 
+
2461 bool TrackFragment::ReadWriteInternal(BoxBuffer* buffer) {
+
2462  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
2463  buffer->PrepareChildren() &&
+
2464  buffer->ReadWriteChild(&header));
+
2465  if (buffer->Reading()) {
+
2466  DCHECK(buffer->reader());
+
2467  decode_time_absent = !buffer->reader()->ChildExist(&decode_time);
2468  if (!decode_time_absent)
2469  RCHECK(buffer->ReadWriteChild(&decode_time));
-
2470  for (uint32_t i = 0; i < runs.size(); ++i)
-
2471  RCHECK(buffer->ReadWriteChild(&runs[i]));
-
2472  for (uint32_t i = 0; i < sample_to_groups.size(); ++i)
-
2473  RCHECK(buffer->ReadWriteChild(&sample_to_groups[i]));
-
2474  for (uint32_t i = 0; i < sample_group_descriptions.size(); ++i)
-
2475  RCHECK(buffer->ReadWriteChild(&sample_group_descriptions[i]));
-
2476  }
-
2477  return buffer->TryReadWriteChild(&auxiliary_size) &&
-
2478  buffer->TryReadWriteChild(&auxiliary_offset) &&
-
2479  buffer->TryReadWriteChild(&sample_encryption);
-
2480 }
-
2481 
-
2482 uint32_t TrackFragment::ComputeSizeInternal() {
-
2483  uint32_t box_size =
-
2484  HeaderSize() + header.ComputeSize() + decode_time.ComputeSize() +
-
2485  auxiliary_size.ComputeSize() + auxiliary_offset.ComputeSize() +
-
2486  sample_encryption.ComputeSize();
-
2487  for (uint32_t i = 0; i < runs.size(); ++i)
-
2488  box_size += runs[i].ComputeSize();
-
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)
-
2492  box_size += sample_to_groups[i].ComputeSize();
-
2493  return box_size;
-
2494 }
-
2495 
-
2496 MovieFragment::MovieFragment() {}
-
2497 MovieFragment::~MovieFragment() {}
-
2498 FourCC MovieFragment::BoxType() const { return FOURCC_moof; }
-
2499 
-
2500 bool MovieFragment::ReadWriteInternal(BoxBuffer* buffer) {
-
2501  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
2502  buffer->PrepareChildren() &&
-
2503  buffer->ReadWriteChild(&header));
-
2504  if (buffer->Reading()) {
-
2505  BoxReader* reader = buffer->reader();
-
2506  DCHECK(reader);
-
2507  RCHECK(reader->ReadChildren(&tracks) &&
-
2508  reader->TryReadChildren(&pssh));
-
2509  } else {
-
2510  for (uint32_t i = 0; i < tracks.size(); ++i)
-
2511  RCHECK(buffer->ReadWriteChild(&tracks[i]));
-
2512  for (uint32_t i = 0; i < pssh.size(); ++i)
-
2513  RCHECK(buffer->ReadWriteChild(&pssh[i]));
-
2514  }
-
2515  return true;
-
2516 }
-
2517 
-
2518 uint32_t MovieFragment::ComputeSizeInternal() {
-
2519  uint32_t box_size = HeaderSize() + header.ComputeSize();
-
2520  for (uint32_t i = 0; i < tracks.size(); ++i)
-
2521  box_size += tracks[i].ComputeSize();
-
2522  for (uint32_t i = 0; i < pssh.size(); ++i)
-
2523  box_size += pssh[i].ComputeSize();
-
2524  return box_size;
-
2525 }
-
2526 
-
2527 SegmentIndex::SegmentIndex()
-
2528  : reference_id(0),
-
2529  timescale(0),
-
2530  earliest_presentation_time(0),
-
2531  first_offset(0) {}
-
2532 SegmentIndex::~SegmentIndex() {}
-
2533 FourCC SegmentIndex::BoxType() const { return FOURCC_sidx; }
-
2534 
-
2535 bool SegmentIndex::ReadWriteInternal(BoxBuffer* buffer) {
-
2536  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
2537  buffer->ReadWriteUInt32(&reference_id) &&
-
2538  buffer->ReadWriteUInt32(&timescale));
-
2539 
-
2540  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
-
2541  RCHECK(
-
2542  buffer->ReadWriteUInt64NBytes(&earliest_presentation_time, num_bytes) &&
-
2543  buffer->ReadWriteUInt64NBytes(&first_offset, num_bytes));
-
2544 
-
2545  uint16_t reference_count = static_cast<uint16_t>(references.size());
-
2546  RCHECK(buffer->IgnoreBytes(2) && // reserved.
-
2547  buffer->ReadWriteUInt16(&reference_count));
-
2548  references.resize(reference_count);
-
2549 
-
2550  uint32_t reference_type_size;
-
2551  uint32_t sap;
-
2552  for (uint32_t i = 0; i < reference_count; ++i) {
-
2553  if (!buffer->Reading()) {
-
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)
-
2559  sap |= (1 << 31);
-
2560  }
-
2561  RCHECK(buffer->ReadWriteUInt32(&reference_type_size) &&
-
2562  buffer->ReadWriteUInt32(&references[i].subsegment_duration) &&
-
2563  buffer->ReadWriteUInt32(&sap));
-
2564  if (buffer->Reading()) {
-
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);
-
2571  }
-
2572  }
-
2573  return true;
-
2574 }
-
2575 
-
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();
-
2581 }
-
2582 
-
2583 MediaData::MediaData() : data_size(0) {}
-
2584 MediaData::~MediaData() {}
-
2585 FourCC MediaData::BoxType() const { return FOURCC_mdat; }
-
2586 
-
2587 bool MediaData::ReadWriteInternal(BoxBuffer* buffer) {
-
2588  NOTIMPLEMENTED() << "Actual data is parsed and written separately.";
-
2589  return false;
-
2590 }
-
2591 
-
2592 uint32_t MediaData::ComputeSizeInternal() {
-
2593  return HeaderSize() + data_size;
-
2594 }
-
2595 
-
2596 CueSourceIDBox::CueSourceIDBox() : source_id(kCueSourceIdNotSet) {}
-
2597 CueSourceIDBox::~CueSourceIDBox() {}
-
2598 
-
2599 FourCC CueSourceIDBox::BoxType() const { return FOURCC_vsid; }
-
2600 
-
2601 bool CueSourceIDBox::ReadWriteInternal(BoxBuffer* buffer) {
-
2602  RCHECK(ReadWriteHeaderInternal(buffer) && buffer->ReadWriteInt32(&source_id));
-
2603  return true;
-
2604 }
-
2605 
-
2606 uint32_t CueSourceIDBox::ComputeSizeInternal() {
-
2607  if (source_id == kCueSourceIdNotSet)
-
2608  return 0;
-
2609  return HeaderSize() + sizeof(source_id);
+
2470  RCHECK(buffer->reader()->TryReadChildren(&runs) &&
+
2471  buffer->reader()->TryReadChildren(&sample_group_descriptions) &&
+
2472  buffer->reader()->TryReadChildren(&sample_to_groups));
+
2473  } else {
+
2474  if (!decode_time_absent)
+
2475  RCHECK(buffer->ReadWriteChild(&decode_time));
+
2476  for (uint32_t i = 0; i < runs.size(); ++i)
+
2477  RCHECK(buffer->ReadWriteChild(&runs[i]));
+
2478  for (uint32_t i = 0; i < sample_to_groups.size(); ++i)
+
2479  RCHECK(buffer->ReadWriteChild(&sample_to_groups[i]));
+
2480  for (uint32_t i = 0; i < sample_group_descriptions.size(); ++i)
+
2481  RCHECK(buffer->ReadWriteChild(&sample_group_descriptions[i]));
+
2482  }
+
2483  return buffer->TryReadWriteChild(&auxiliary_size) &&
+
2484  buffer->TryReadWriteChild(&auxiliary_offset) &&
+
2485  buffer->TryReadWriteChild(&sample_encryption);
+
2486 }
+
2487 
+
2488 size_t TrackFragment::ComputeSizeInternal() {
+
2489  size_t box_size = HeaderSize() + header.ComputeSize() +
+
2490  decode_time.ComputeSize() + auxiliary_size.ComputeSize() +
+
2491  auxiliary_offset.ComputeSize() +
+
2492  sample_encryption.ComputeSize();
+
2493  for (uint32_t i = 0; i < runs.size(); ++i)
+
2494  box_size += runs[i].ComputeSize();
+
2495  for (uint32_t i = 0; i < sample_group_descriptions.size(); ++i)
+
2496  box_size += sample_group_descriptions[i].ComputeSize();
+
2497  for (uint32_t i = 0; i < sample_to_groups.size(); ++i)
+
2498  box_size += sample_to_groups[i].ComputeSize();
+
2499  return box_size;
+
2500 }
+
2501 
+
2502 MovieFragment::MovieFragment() {}
+
2503 MovieFragment::~MovieFragment() {}
+
2504 FourCC MovieFragment::BoxType() const { return FOURCC_moof; }
+
2505 
+
2506 bool MovieFragment::ReadWriteInternal(BoxBuffer* buffer) {
+
2507  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
2508  buffer->PrepareChildren() &&
+
2509  buffer->ReadWriteChild(&header));
+
2510  if (buffer->Reading()) {
+
2511  BoxReader* reader = buffer->reader();
+
2512  DCHECK(reader);
+
2513  RCHECK(reader->ReadChildren(&tracks) &&
+
2514  reader->TryReadChildren(&pssh));
+
2515  } else {
+
2516  for (uint32_t i = 0; i < tracks.size(); ++i)
+
2517  RCHECK(buffer->ReadWriteChild(&tracks[i]));
+
2518  for (uint32_t i = 0; i < pssh.size(); ++i)
+
2519  RCHECK(buffer->ReadWriteChild(&pssh[i]));
+
2520  }
+
2521  return true;
+
2522 }
+
2523 
+
2524 size_t MovieFragment::ComputeSizeInternal() {
+
2525  size_t box_size = HeaderSize() + header.ComputeSize();
+
2526  for (uint32_t i = 0; i < tracks.size(); ++i)
+
2527  box_size += tracks[i].ComputeSize();
+
2528  for (uint32_t i = 0; i < pssh.size(); ++i)
+
2529  box_size += pssh[i].ComputeSize();
+
2530  return box_size;
+
2531 }
+
2532 
+
2533 SegmentIndex::SegmentIndex()
+
2534  : reference_id(0),
+
2535  timescale(0),
+
2536  earliest_presentation_time(0),
+
2537  first_offset(0) {}
+
2538 SegmentIndex::~SegmentIndex() {}
+
2539 FourCC SegmentIndex::BoxType() const { return FOURCC_sidx; }
+
2540 
+
2541 bool SegmentIndex::ReadWriteInternal(BoxBuffer* buffer) {
+
2542  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
2543  buffer->ReadWriteUInt32(&reference_id) &&
+
2544  buffer->ReadWriteUInt32(&timescale));
+
2545 
+
2546  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
+
2547  RCHECK(
+
2548  buffer->ReadWriteUInt64NBytes(&earliest_presentation_time, num_bytes) &&
+
2549  buffer->ReadWriteUInt64NBytes(&first_offset, num_bytes));
+
2550 
+
2551  uint16_t reference_count = static_cast<uint16_t>(references.size());
+
2552  RCHECK(buffer->IgnoreBytes(2) && // reserved.
+
2553  buffer->ReadWriteUInt16(&reference_count));
+
2554  references.resize(reference_count);
+
2555 
+
2556  uint32_t reference_type_size;
+
2557  uint32_t sap;
+
2558  for (uint32_t i = 0; i < reference_count; ++i) {
+
2559  if (!buffer->Reading()) {
+
2560  reference_type_size = references[i].referenced_size;
+
2561  if (references[i].reference_type)
+
2562  reference_type_size |= (1 << 31);
+
2563  sap = (references[i].sap_type << 28) | references[i].sap_delta_time;
+
2564  if (references[i].starts_with_sap)
+
2565  sap |= (1 << 31);
+
2566  }
+
2567  RCHECK(buffer->ReadWriteUInt32(&reference_type_size) &&
+
2568  buffer->ReadWriteUInt32(&references[i].subsegment_duration) &&
+
2569  buffer->ReadWriteUInt32(&sap));
+
2570  if (buffer->Reading()) {
+
2571  references[i].reference_type = (reference_type_size >> 31) ? true : false;
+
2572  references[i].referenced_size = reference_type_size & ~(1 << 31);
+
2573  references[i].starts_with_sap = (sap >> 31) ? true : false;
+
2574  references[i].sap_type =
+
2575  static_cast<SegmentReference::SAPType>((sap >> 28) & 0x07);
+
2576  references[i].sap_delta_time = sap & ~(0xF << 28);
+
2577  }
+
2578  }
+
2579  return true;
+
2580 }
+
2581 
+
2582 size_t SegmentIndex::ComputeSizeInternal() {
+
2583  version = IsFitIn32Bits(earliest_presentation_time, first_offset) ? 0 : 1;
+
2584  return HeaderSize() + sizeof(reference_id) + sizeof(timescale) +
+
2585  sizeof(uint32_t) * (1 + version) * 2 + 2 * sizeof(uint16_t) +
+
2586  3 * sizeof(uint32_t) * references.size();
+
2587 }
+
2588 
+
2589 MediaData::MediaData() : data_size(0) {}
+
2590 MediaData::~MediaData() {}
+
2591 FourCC MediaData::BoxType() const { return FOURCC_mdat; }
+
2592 
+
2593 bool MediaData::ReadWriteInternal(BoxBuffer* buffer) {
+
2594  NOTIMPLEMENTED() << "Actual data is parsed and written separately.";
+
2595  return false;
+
2596 }
+
2597 
+
2598 size_t MediaData::ComputeSizeInternal() {
+
2599  return HeaderSize() + data_size;
+
2600 }
+
2601 
+
2602 CueSourceIDBox::CueSourceIDBox() : source_id(kCueSourceIdNotSet) {}
+
2603 CueSourceIDBox::~CueSourceIDBox() {}
+
2604 
+
2605 FourCC CueSourceIDBox::BoxType() const { return FOURCC_vsid; }
+
2606 
+
2607 bool CueSourceIDBox::ReadWriteInternal(BoxBuffer* buffer) {
+
2608  RCHECK(ReadWriteHeaderInternal(buffer) && buffer->ReadWriteInt32(&source_id));
+
2609  return true;
2610 }
2611 
-
2612 CueTimeBox::CueTimeBox() {}
-
2613 CueTimeBox::~CueTimeBox() {}
-
2614 
-
2615 FourCC CueTimeBox::BoxType() const {
-
2616  return FOURCC_ctim;
-
2617 }
-
2618 
-
2619 bool CueTimeBox::ReadWriteInternal(BoxBuffer* buffer) {
-
2620  RCHECK(ReadWriteHeaderInternal(buffer));
-
2621  return buffer->ReadWriteString(
-
2622  &cue_current_time,
-
2623  buffer->Reading() ? buffer->BytesLeft() : cue_current_time.size());
-
2624 }
-
2625 
-
2626 uint32_t CueTimeBox::ComputeSizeInternal() {
-
2627  if (cue_current_time.empty())
-
2628  return 0;
-
2629  return HeaderSize() + cue_current_time.size();
+
2612 size_t CueSourceIDBox::ComputeSizeInternal() {
+
2613  if (source_id == kCueSourceIdNotSet)
+
2614  return 0;
+
2615  return HeaderSize() + sizeof(source_id);
+
2616 }
+
2617 
+
2618 CueTimeBox::CueTimeBox() {}
+
2619 CueTimeBox::~CueTimeBox() {}
+
2620 
+
2621 FourCC CueTimeBox::BoxType() const {
+
2622  return FOURCC_ctim;
+
2623 }
+
2624 
+
2625 bool CueTimeBox::ReadWriteInternal(BoxBuffer* buffer) {
+
2626  RCHECK(ReadWriteHeaderInternal(buffer));
+
2627  return buffer->ReadWriteString(
+
2628  &cue_current_time,
+
2629  buffer->Reading() ? buffer->BytesLeft() : cue_current_time.size());
2630 }
2631 
-
2632 CueIDBox::CueIDBox() {}
-
2633 CueIDBox::~CueIDBox() {}
-
2634 
-
2635 FourCC CueIDBox::BoxType() const {
-
2636  return FOURCC_iden;
-
2637 }
-
2638 
-
2639 bool CueIDBox::ReadWriteInternal(BoxBuffer* buffer) {
-
2640  RCHECK(ReadWriteHeaderInternal(buffer));
-
2641  return buffer->ReadWriteString(
-
2642  &cue_id, buffer->Reading() ? buffer->BytesLeft() : cue_id.size());
+
2632 size_t CueTimeBox::ComputeSizeInternal() {
+
2633  if (cue_current_time.empty())
+
2634  return 0;
+
2635  return HeaderSize() + cue_current_time.size();
+
2636 }
+
2637 
+
2638 CueIDBox::CueIDBox() {}
+
2639 CueIDBox::~CueIDBox() {}
+
2640 
+
2641 FourCC CueIDBox::BoxType() const {
+
2642  return FOURCC_iden;
2643 }
2644 
-
2645 uint32_t CueIDBox::ComputeSizeInternal() {
-
2646  if (cue_id.empty())
-
2647  return 0;
-
2648  return HeaderSize() + cue_id.size();
+
2645 bool CueIDBox::ReadWriteInternal(BoxBuffer* buffer) {
+
2646  RCHECK(ReadWriteHeaderInternal(buffer));
+
2647  return buffer->ReadWriteString(
+
2648  &cue_id, buffer->Reading() ? buffer->BytesLeft() : cue_id.size());
2649 }
2650 
-
2651 CueSettingsBox::CueSettingsBox() {}
-
2652 CueSettingsBox::~CueSettingsBox() {}
-
2653 
-
2654 FourCC CueSettingsBox::BoxType() const {
-
2655  return FOURCC_sttg;
-
2656 }
-
2657 
-
2658 bool CueSettingsBox::ReadWriteInternal(BoxBuffer* buffer) {
-
2659  RCHECK(ReadWriteHeaderInternal(buffer));
-
2660  return buffer->ReadWriteString(
-
2661  &settings, buffer->Reading() ? buffer->BytesLeft() : settings.size());
+
2651 size_t CueIDBox::ComputeSizeInternal() {
+
2652  if (cue_id.empty())
+
2653  return 0;
+
2654  return HeaderSize() + cue_id.size();
+
2655 }
+
2656 
+
2657 CueSettingsBox::CueSettingsBox() {}
+
2658 CueSettingsBox::~CueSettingsBox() {}
+
2659 
+
2660 FourCC CueSettingsBox::BoxType() const {
+
2661  return FOURCC_sttg;
2662 }
2663 
-
2664 uint32_t CueSettingsBox::ComputeSizeInternal() {
-
2665  if (settings.empty())
-
2666  return 0;
-
2667  return HeaderSize() + settings.size();
+
2664 bool CueSettingsBox::ReadWriteInternal(BoxBuffer* buffer) {
+
2665  RCHECK(ReadWriteHeaderInternal(buffer));
+
2666  return buffer->ReadWriteString(
+
2667  &settings, buffer->Reading() ? buffer->BytesLeft() : settings.size());
2668 }
2669 
-
2670 CuePayloadBox::CuePayloadBox() {}
-
2671 CuePayloadBox::~CuePayloadBox() {}
-
2672 
-
2673 FourCC CuePayloadBox::BoxType() const {
-
2674  return FOURCC_payl;
-
2675 }
-
2676 
-
2677 bool CuePayloadBox::ReadWriteInternal(BoxBuffer* buffer) {
-
2678  RCHECK(ReadWriteHeaderInternal(buffer));
-
2679  return buffer->ReadWriteString(
-
2680  &cue_text, buffer->Reading() ? buffer->BytesLeft() : cue_text.size());
+
2670 size_t CueSettingsBox::ComputeSizeInternal() {
+
2671  if (settings.empty())
+
2672  return 0;
+
2673  return HeaderSize() + settings.size();
+
2674 }
+
2675 
+
2676 CuePayloadBox::CuePayloadBox() {}
+
2677 CuePayloadBox::~CuePayloadBox() {}
+
2678 
+
2679 FourCC CuePayloadBox::BoxType() const {
+
2680  return FOURCC_payl;
2681 }
2682 
-
2683 uint32_t CuePayloadBox::ComputeSizeInternal() {
-
2684  return HeaderSize() + cue_text.size();
-
2685 }
-
2686 
-
2687 VTTEmptyCueBox::VTTEmptyCueBox() {}
-
2688 VTTEmptyCueBox::~VTTEmptyCueBox() {}
-
2689 
-
2690 FourCC VTTEmptyCueBox::BoxType() const {
-
2691  return FOURCC_vtte;
-
2692 }
-
2693 
-
2694 bool VTTEmptyCueBox::ReadWriteInternal(BoxBuffer* buffer) {
-
2695  return ReadWriteHeaderInternal(buffer);
-
2696 }
-
2697 
-
2698 uint32_t VTTEmptyCueBox::ComputeSizeInternal() {
-
2699  return HeaderSize();
-
2700 }
-
2701 
-
2702 VTTAdditionalTextBox::VTTAdditionalTextBox() {}
-
2703 VTTAdditionalTextBox::~VTTAdditionalTextBox() {}
-
2704 
- -
2706  return FOURCC_vtta;
-
2707 }
-
2708 
-
2709 bool VTTAdditionalTextBox::ReadWriteInternal(BoxBuffer* buffer) {
-
2710  RCHECK(ReadWriteHeaderInternal(buffer));
-
2711  return buffer->ReadWriteString(
-
2712  &cue_additional_text,
-
2713  buffer->Reading() ? buffer->BytesLeft() : cue_additional_text.size());
-
2714 }
-
2715 
-
2716 uint32_t VTTAdditionalTextBox::ComputeSizeInternal() {
-
2717  return HeaderSize() + cue_additional_text.size();
-
2718 }
-
2719 
-
2720 VTTCueBox::VTTCueBox() {}
-
2721 VTTCueBox::~VTTCueBox() {}
-
2722 
-
2723 FourCC VTTCueBox::BoxType() const {
-
2724  return FOURCC_vttc;
-
2725 }
-
2726 
-
2727 bool VTTCueBox::ReadWriteInternal(BoxBuffer* buffer) {
-
2728  RCHECK(ReadWriteHeaderInternal(buffer) &&
-
2729  buffer->PrepareChildren() &&
-
2730  buffer->ReadWriteChild(&cue_source_id) &&
-
2731  buffer->ReadWriteChild(&cue_id) &&
-
2732  buffer->ReadWriteChild(&cue_time) &&
-
2733  buffer->ReadWriteChild(&cue_settings) &&
-
2734  buffer->ReadWriteChild(&cue_payload));
-
2735  return true;
-
2736 }
-
2737 
-
2738 uint32_t VTTCueBox::ComputeSizeInternal() {
-
2739  return HeaderSize() + cue_source_id.ComputeSize() + cue_id.ComputeSize() +
-
2740  cue_time.ComputeSize() + cue_settings.ComputeSize() +
-
2741  cue_payload.ComputeSize();
+
2683 bool CuePayloadBox::ReadWriteInternal(BoxBuffer* buffer) {
+
2684  RCHECK(ReadWriteHeaderInternal(buffer));
+
2685  return buffer->ReadWriteString(
+
2686  &cue_text, buffer->Reading() ? buffer->BytesLeft() : cue_text.size());
+
2687 }
+
2688 
+
2689 size_t CuePayloadBox::ComputeSizeInternal() {
+
2690  return HeaderSize() + cue_text.size();
+
2691 }
+
2692 
+
2693 VTTEmptyCueBox::VTTEmptyCueBox() {}
+
2694 VTTEmptyCueBox::~VTTEmptyCueBox() {}
+
2695 
+
2696 FourCC VTTEmptyCueBox::BoxType() const {
+
2697  return FOURCC_vtte;
+
2698 }
+
2699 
+
2700 bool VTTEmptyCueBox::ReadWriteInternal(BoxBuffer* buffer) {
+
2701  return ReadWriteHeaderInternal(buffer);
+
2702 }
+
2703 
+
2704 size_t VTTEmptyCueBox::ComputeSizeInternal() {
+
2705  return HeaderSize();
+
2706 }
+
2707 
+
2708 VTTAdditionalTextBox::VTTAdditionalTextBox() {}
+
2709 VTTAdditionalTextBox::~VTTAdditionalTextBox() {}
+
2710 
+ +
2712  return FOURCC_vtta;
+
2713 }
+
2714 
+
2715 bool VTTAdditionalTextBox::ReadWriteInternal(BoxBuffer* buffer) {
+
2716  RCHECK(ReadWriteHeaderInternal(buffer));
+
2717  return buffer->ReadWriteString(
+
2718  &cue_additional_text,
+
2719  buffer->Reading() ? buffer->BytesLeft() : cue_additional_text.size());
+
2720 }
+
2721 
+
2722 size_t VTTAdditionalTextBox::ComputeSizeInternal() {
+
2723  return HeaderSize() + cue_additional_text.size();
+
2724 }
+
2725 
+
2726 VTTCueBox::VTTCueBox() {}
+
2727 VTTCueBox::~VTTCueBox() {}
+
2728 
+
2729 FourCC VTTCueBox::BoxType() const {
+
2730  return FOURCC_vttc;
+
2731 }
+
2732 
+
2733 bool VTTCueBox::ReadWriteInternal(BoxBuffer* buffer) {
+
2734  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
2735  buffer->PrepareChildren() &&
+
2736  buffer->ReadWriteChild(&cue_source_id) &&
+
2737  buffer->ReadWriteChild(&cue_id) &&
+
2738  buffer->ReadWriteChild(&cue_time) &&
+
2739  buffer->ReadWriteChild(&cue_settings) &&
+
2740  buffer->ReadWriteChild(&cue_payload));
+
2741  return true;
2742 }
2743 
-
2744 } // namespace mp4
-
2745 } // namespace media
-
2746 } // namespace shaka
-
FourCC BoxType() const override
- - +
2744 size_t VTTCueBox::ComputeSizeInternal() {
+
2745  return HeaderSize() + cue_source_id.ComputeSize() + cue_id.ComputeSize() +
+
2746  cue_time.ComputeSize() + cue_settings.ComputeSize() +
+
2747  cue_payload.ComputeSize();
+
2748 }
+
2749 
+
2750 } // namespace mp4
+
2751 } // namespace media
+
2752 } // namespace shaka
+
FourCC BoxType() const override
+ + - -
FourCC BoxType() const override
- - -
FourCC BoxType() const override
-
FourCC BoxType() const override
- + +
FourCC BoxType() const override
+ + +
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
+
uint32_t HeaderSize() const final
Definition: box.cc:75
-
FourCC BoxType() const override
-
FourCC BoxType() const override
- +
FourCC BoxType() const override
+
FourCC BoxType() const override
+
bool ReadWriteHeaderInternal(BoxBuffer *buffer) final
Definition: box.cc:80
-
FourCC BoxType() const override
+
FourCC BoxType() const override
bool TryReadChildren(std::vector< T > *children) WARN_UNUSED_RESULT
Definition: box_reader.h:134
- +
bool TryReadWriteChild(Box *box)
Definition: box_buffer.h:177
- - -
FourCC BoxType() const override
-
FourCC BoxType() const override
+ + +
FourCC BoxType() const override
+
FourCC BoxType() const override
size_t BytesLeft() const
Definition: box_buffer.h:62
- -
FourCC BoxType() const override
-
FourCC BoxType() const override
- -
FourCC BoxType() const override
+ +
FourCC BoxType() const override
+
FourCC BoxType() const override
+ +
FourCC BoxType() const override
virtual bool Parse(const std::vector< uint8_t > &data)
- - -
FourCC BoxType() const override
- + + +
FourCC BoxType() const override
+
virtual bool ReadWriteHeaderInternal(BoxBuffer *buffer)
Definition: box.cc:61
-
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 ComputeSize()
Definition: box.cc:50
bool ReadWrite(uint8_t iv_size, bool has_subsamples, BoxBuffer *buffer)
- -
FourCC BoxType() const override
-
FourCC BoxType() const override
- - + +
FourCC BoxType() const override
+
FourCC BoxType() const override
+ + -
FourCC BoxType() const override
+
FourCC BoxType() const override
bool ReadChildren(std::vector< T > *children) WARN_UNUSED_RESULT
Definition: box_reader.h:128
std::vector< uint8_t > sample_encryption_data
-
FourCC BoxType() const override
-
bool ParseFromSampleEncryptionData(uint8_t iv_size, std::vector< SampleEncryptionEntry > *sample_encryption_entries) const
- - +
FourCC BoxType() const override
+
bool ParseFromSampleEncryptionData(uint8_t iv_size, std::vector< SampleEncryptionEntry > *sample_encryption_entries) const
+ + -
FourCC BoxType() const override
+
FourCC BoxType() const override
uint32_t box_size()
Definition: box.h:55
- -
FourCC BoxType() const override
+ +
FourCC BoxType() const override
BufferWriter * writer()
Definition: box_buffer.h:200
-
FourCC BoxType() const override
-
FourCC BoxType() const override
- +
FourCC BoxType() const override
+
FourCC BoxType() const override
+
virtual uint32_t HeaderSize() const
Definition: box.cc:55
bool IgnoreBytes(size_t num_bytes)
Definition: box_buffer.h:189
Class for reading MP4 boxes.
Definition: box_reader.h:25
bool ReadWriteString(std::string *str, size_t size)
Definition: box_buffer.h:139
-
FourCC BoxType() const override
+
FourCC BoxType() const override
bool ReadChild(Box *child) WARN_UNUSED_RESULT
Definition: box_reader.cc:88
- -
FourCC BoxType() const override
+ +
FourCC BoxType() const override
bool ReadWriteUInt64NBytes(uint64_t *v, size_t num_bytes)
Definition: box_buffer.h:117
-
FourCC BoxType() const override
-
FourCC BoxType() const override
- - +
FourCC BoxType() const override
+
FourCC BoxType() const override
+ + -
FourCC BoxType() const override
- +
FourCC BoxType() const override
+ - -
FourCC BoxType() const override
+ +
FourCC BoxType() const override
PrivFrame private_frame
We only support PrivateFrame in ID3. Other frames are ignored.
-
FourCC BoxType() const override
+
FourCC BoxType() const override
void Write(BufferWriter *writer)
Definition: box.cc:25
-
FourCC BoxType() const override
-
FourCC BoxType() const override
+
FourCC BoxType() const override
+
FourCC BoxType() const override
FourCC BoxType() const override
-
FourCC BoxType() const override
+
FourCC BoxType() const override
bool ChildExist(Box *child) WARN_UNUSED_RESULT
Definition: box_reader.cc:100
bool ReadWriteChild(Box *box)
Definition: box_buffer.h:166
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 9ad895cb04..3c4d0d921f 100644 --- a/docs/dd/df2/webm_2multi__segment__segmenter_8h_source.html +++ b/docs/dd/df2/webm_2multi__segment__segmenter_8h_source.html @@ -148,7 +148,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/df5/structshaka_1_1media_1_1mp4_1_1TrackFragmentRun.html b/docs/dd/df5/structshaka_1_1media_1_1mp4_1_1TrackFragmentRun.html index 5cb4d7013a..c0132652f4 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 2332 of file box_definitions.cc.

+

Definition at line 2338 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 5f1f0f1e2a..20e6dca795 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 1408 of file box_definitions.cc.

+

Definition at line 1414 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 57613def10..7c55589c21 100644 --- a/docs/de/d0f/local__file_8h_source.html +++ b/docs/de/d0f/local__file_8h_source.html @@ -152,7 +152,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d12/container__names_8h_source.html b/docs/de/d12/container__names_8h_source.html index 3f4e0dcd74..54e132740a 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 71e3ef579a..e055deb5b2 100644 --- a/docs/de/d13/ts__writer_8cc_source.html +++ b/docs/de/d13/ts__writer_8cc_source.html @@ -224,144 +224,143 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
135  pes_packet_length > kMaxPesPacketLengthValue ? 0 : pes_packet_length));
136  first_ts_packet_buffer.AppendBuffer(pes_header_writer);
137 
-
138  const int available_payload =
+
138  const size_t available_payload =
139  kTsPacketMaxPayloadWithPcr - first_ts_packet_buffer.Size();
-
140  const int bytes_consumed =
-
141  std::min(static_cast<int>(pes.data().size()), available_payload);
-
142  first_ts_packet_buffer.AppendArray(pes.data().data(), bytes_consumed);
-
143 
-
144  BufferWriter output_writer;
-
145  WritePayloadToBufferWriter(first_ts_packet_buffer.Buffer(),
-
146  first_ts_packet_buffer.Size(),
-
147  kPayloadUnitStartIndicator, pid, kHasPcr, pcr_base,
-
148  continuity_counter, &output_writer);
-
149 
-
150  const size_t remaining_pes_data_size = pes.data().size() - bytes_consumed;
-
151  if (remaining_pes_data_size > 0) {
-
152  WritePayloadToBufferWriter(pes.data().data() + bytes_consumed,
-
153  remaining_pes_data_size,
-
154  !kPayloadUnitStartIndicator, pid, !kHasPcr, 0,
-
155  continuity_counter, &output_writer);
-
156  }
-
157  return output_writer.WriteToFile(file).ok();
-
158 }
-
159 
-
160 } // namespace
-
161 
-
162 TsWriter::TsWriter() {}
-
163 TsWriter::~TsWriter() {}
-
164 
-
165 bool TsWriter::Initialize(const StreamInfo& stream_info) {
-
166  const StreamType stream_type = stream_info.stream_type();
-
167  if (stream_type != StreamType::kStreamVideo &&
-
168  stream_type != StreamType::kStreamAudio) {
-
169  LOG(ERROR) << "TsWriter cannot handle stream type " << stream_type
-
170  << " yet.";
-
171  return false;
-
172  }
-
173 
-
174  if (stream_info.stream_type() == StreamType::kStreamVideo) {
-
175  const VideoStreamInfo& video_stream_info =
-
176  static_cast<const VideoStreamInfo&>(stream_info);
-
177  if (video_stream_info.codec() != Codec::kCodecH264) {
-
178  LOG(ERROR) << "TsWriter cannot handle video codec "
-
179  << video_stream_info.codec() << " yet.";
-
180  return false;
-
181  }
-
182  pmt_writer_.reset(new H264ProgramMapTableWriter(&pmt_continuity_counter_));
-
183  } else {
-
184  DCHECK_EQ(stream_type, StreamType::kStreamAudio);
-
185  const AudioStreamInfo& audio_stream_info =
-
186  static_cast<const AudioStreamInfo&>(stream_info);
-
187  if (audio_stream_info.codec() != Codec::kCodecAAC) {
-
188  LOG(ERROR) << "TsWriter cannot handle audio codec "
-
189  << audio_stream_info.codec() << " yet.";
-
190  return false;
-
191  }
-
192  pmt_writer_.reset(new AacProgramMapTableWriter(
-
193  audio_stream_info.codec_config(), &pmt_continuity_counter_));
-
194  }
-
195 
-
196  return true;
-
197 }
-
198 
-
199 bool TsWriter::NewSegment(const std::string& file_name) {
-
200  if (current_file_) {
-
201  LOG(ERROR) << "File " << current_file_->file_name() << " still open.";
-
202  return false;
-
203  }
-
204  current_file_.reset(File::Open(file_name.c_str(), "w"));
-
205  if (!current_file_) {
-
206  LOG(ERROR) << "Failed to open file " << file_name;
-
207  return false;
-
208  }
-
209 
-
210  BufferWriter psi;
-
211  WritePatToBuffer(kPat, arraysize(kPat), &pat_continuity_counter_, &psi);
-
212  if (encrypted_) {
-
213  if (!pmt_writer_->EncryptedSegmentPmt(&psi)) {
-
214  return false;
-
215  }
-
216  } else {
-
217  if (!pmt_writer_->ClearSegmentPmt(&psi)) {
-
218  return false;
-
219  }
-
220  }
-
221 
-
222  if (!psi.WriteToFile(current_file_.get()).ok()) {
-
223  LOG(ERROR) << "Failed to write PSI to file.";
-
224  return false;
-
225  }
-
226 
-
227  return true;
-
228 }
-
229 
- -
231  encrypted_ = true;
-
232 }
-
233 
- -
235  return current_file_.release()->Close();
-
236 }
-
237 
-
238 bool TsWriter::AddPesPacket(std::unique_ptr<PesPacket> pes_packet) {
-
239  DCHECK(current_file_);
-
240  if (!WritePesToFile(*pes_packet, &elementary_stream_continuity_counter_,
-
241  current_file_.get())) {
-
242  LOG(ERROR) << "Failed to write pes to file.";
-
243  return false;
-
244  }
-
245 
-
246  // No need to keep pes_packet around so not passing it anywhere.
-
247  return true;
-
248 }
-
249 
- -
251  std::unique_ptr<ProgramMapTableWriter> table_writer) {
-
252  pmt_writer_ = std::move(table_writer);
-
253 }
-
254 
-
255 } // namespace mp2t
-
256 } // namespace media
-
257 } // namespace shaka
+
140  const size_t bytes_consumed = std::min(pes.data().size(), available_payload);
+
141  first_ts_packet_buffer.AppendArray(pes.data().data(), bytes_consumed);
+
142 
+
143  BufferWriter output_writer;
+
144  WritePayloadToBufferWriter(first_ts_packet_buffer.Buffer(),
+
145  first_ts_packet_buffer.Size(),
+
146  kPayloadUnitStartIndicator, pid, kHasPcr, pcr_base,
+
147  continuity_counter, &output_writer);
+
148 
+
149  const size_t remaining_pes_data_size = pes.data().size() - bytes_consumed;
+
150  if (remaining_pes_data_size > 0) {
+
151  WritePayloadToBufferWriter(pes.data().data() + bytes_consumed,
+
152  remaining_pes_data_size,
+
153  !kPayloadUnitStartIndicator, pid, !kHasPcr, 0,
+
154  continuity_counter, &output_writer);
+
155  }
+
156  return output_writer.WriteToFile(file).ok();
+
157 }
+
158 
+
159 } // namespace
+
160 
+
161 TsWriter::TsWriter() {}
+
162 TsWriter::~TsWriter() {}
+
163 
+
164 bool TsWriter::Initialize(const StreamInfo& stream_info) {
+
165  const StreamType stream_type = stream_info.stream_type();
+
166  if (stream_type != StreamType::kStreamVideo &&
+
167  stream_type != StreamType::kStreamAudio) {
+
168  LOG(ERROR) << "TsWriter cannot handle stream type " << stream_type
+
169  << " yet.";
+
170  return false;
+
171  }
+
172 
+
173  if (stream_info.stream_type() == StreamType::kStreamVideo) {
+
174  const VideoStreamInfo& video_stream_info =
+
175  static_cast<const VideoStreamInfo&>(stream_info);
+
176  if (video_stream_info.codec() != Codec::kCodecH264) {
+
177  LOG(ERROR) << "TsWriter cannot handle video codec "
+
178  << video_stream_info.codec() << " yet.";
+
179  return false;
+
180  }
+
181  pmt_writer_.reset(new H264ProgramMapTableWriter(&pmt_continuity_counter_));
+
182  } else {
+
183  DCHECK_EQ(stream_type, StreamType::kStreamAudio);
+
184  const AudioStreamInfo& audio_stream_info =
+
185  static_cast<const AudioStreamInfo&>(stream_info);
+
186  if (audio_stream_info.codec() != Codec::kCodecAAC) {
+
187  LOG(ERROR) << "TsWriter cannot handle audio codec "
+
188  << audio_stream_info.codec() << " yet.";
+
189  return false;
+
190  }
+
191  pmt_writer_.reset(new AacProgramMapTableWriter(
+
192  audio_stream_info.codec_config(), &pmt_continuity_counter_));
+
193  }
+
194 
+
195  return true;
+
196 }
+
197 
+
198 bool TsWriter::NewSegment(const std::string& file_name) {
+
199  if (current_file_) {
+
200  LOG(ERROR) << "File " << current_file_->file_name() << " still open.";
+
201  return false;
+
202  }
+
203  current_file_.reset(File::Open(file_name.c_str(), "w"));
+
204  if (!current_file_) {
+
205  LOG(ERROR) << "Failed to open file " << file_name;
+
206  return false;
+
207  }
+
208 
+
209  BufferWriter psi;
+
210  WritePatToBuffer(kPat, arraysize(kPat), &pat_continuity_counter_, &psi);
+
211  if (encrypted_) {
+
212  if (!pmt_writer_->EncryptedSegmentPmt(&psi)) {
+
213  return false;
+
214  }
+
215  } else {
+
216  if (!pmt_writer_->ClearSegmentPmt(&psi)) {
+
217  return false;
+
218  }
+
219  }
+
220 
+
221  if (!psi.WriteToFile(current_file_.get()).ok()) {
+
222  LOG(ERROR) << "Failed to write PSI to file.";
+
223  return false;
+
224  }
+
225 
+
226  return true;
+
227 }
+
228 
+ +
230  encrypted_ = true;
+
231 }
+
232 
+ +
234  return current_file_.release()->Close();
+
235 }
+
236 
+
237 bool TsWriter::AddPesPacket(std::unique_ptr<PesPacket> pes_packet) {
+
238  DCHECK(current_file_);
+
239  if (!WritePesToFile(*pes_packet, &elementary_stream_continuity_counter_,
+
240  current_file_.get())) {
+
241  LOG(ERROR) << "Failed to write pes to file.";
+
242  return false;
+
243  }
+
244 
+
245  // No need to keep pes_packet around so not passing it anywhere.
+
246  return true;
+
247 }
+
248 
+ +
250  std::unique_ptr<ProgramMapTableWriter> table_writer) {
+
251  pmt_writer_ = std::move(table_writer);
+
252 }
+
253 
+
254 } // namespace mp2t
+
255 } // namespace media
+
256 } // namespace shaka
virtual bool Open()=0
Internal open. Should not be used directly.
Abstract class holds stream information.
Definition: stream_info.h:53
-
virtual bool NewSegment(const std::string &file_name)
Definition: ts_writer.cc:199
-
virtual bool AddPesPacket(std::unique_ptr< PesPacket > pes_packet)
Definition: ts_writer.cc:238
+
virtual bool NewSegment(const std::string &file_name)
Definition: ts_writer.cc:198
+
virtual bool AddPesPacket(std::unique_ptr< PesPacket > pes_packet)
Definition: ts_writer.cc:237
-
void SetProgramMapTableWriterForTesting(std::unique_ptr< ProgramMapTableWriter > table_writer)
Only for testing.
Definition: ts_writer.cc:250
-
virtual bool FinalizeSegment()
Definition: ts_writer.cc:234
-
virtual bool Initialize(const StreamInfo &stream_info)
Definition: ts_writer.cc:165
+
void SetProgramMapTableWriterForTesting(std::unique_ptr< ProgramMapTableWriter > table_writer)
Only for testing.
Definition: ts_writer.cc:249
+
virtual bool FinalizeSegment()
Definition: ts_writer.cc:233
+
virtual bool Initialize(const StreamInfo &stream_info)
Definition: ts_writer.cc:164
Holds video stream information.
Holds audio stream information.
Status WriteToFile(File *file)
-
virtual void SignalEncrypted()
Signals the writer that the rest of the segments are encrypted.
Definition: ts_writer.cc:230
+
virtual void SignalEncrypted()
Signals the writer that the rest of the segments are encrypted.
Definition: ts_writer.cc:229
diff --git a/docs/de/d15/media__stream_8cc_source.html b/docs/de/d15/media__stream_8cc_source.html index 87383117ce..074a7a3bf9 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 8528e8a67e..bd3dd564e8 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 0e5829bb58..7ce9c11cc2 100644 --- a/docs/de/d17/cluster__builder_8cc_source.html +++ b/docs/de/d17/cluster__builder_8cc_source.html @@ -346,7 +346,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d1a/classshaka_1_1media_1_1wvm_1_1WvmMediaParser-members.html b/docs/de/d1a/classshaka_1_1media_1_1wvm_1_1WvmMediaParser-members.html index 9b91280c47..3732a82c38 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 3b00c2ec4b..26f6ad88c8 100644 --- a/docs/de/d1e/mp4_2single__segment__segmenter_8cc_source.html +++ b/docs/de/d1e/mp4_2single__segment__segmenter_8cc_source.html @@ -309,7 +309,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d22/aes__pattern__cryptor_8cc_source.html b/docs/de/d22/aes__pattern__cryptor_8cc_source.html index a797654a09..e9dc10b2cb 100644 --- a/docs/de/d22/aes__pattern__cryptor_8cc_source.html +++ b/docs/de/d22/aes__pattern__cryptor_8cc_source.html @@ -185,7 +185,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d27/classshaka_1_1media_1_1mp2t_1_1H264ProgramMapTableWriter.html b/docs/de/d27/classshaka_1_1media_1_1mp2t_1_1H264ProgramMapTableWriter.html index 06a02c2548..a4565e93c6 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 567cbc42e7..c38d107413 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 2159 of file box_definitions.cc.

+

Definition at line 2165 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 0304f92f30..8cf19d4f55 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 36aa2ae40b..dbd1da5bbd 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 259c9c23c9..b8f757e4dd 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 9ea75a13f7..fbe4164fd2 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 4b01ed55b4..4a54dcf18d 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 3659e7947a..d03acacad9 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 d70873e90e..5e276188e8 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 b31110627a..89348b03b4 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 59b76aa031..8e777eefa8 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 7c02a5a778..7aaba3f024 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 f0542107a4..03ca364863 100644 --- a/docs/de/d52/classshaka_1_1Representation.html +++ b/docs/de/d52/classshaka_1_1Representation.html @@ -456,7 +456,7 @@ template<MpdBuilder::MpdType type> diff --git a/docs/de/d55/structshaka_1_1media_1_1mp4_1_1Language-members.html b/docs/de/d55/structshaka_1_1media_1_1mp4_1_1Language-members.html index c57e825a19..754c151ffa 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 2bc5e4d60c..07c382d0ee 100644 --- a/docs/de/d5b/adts__header_8cc_source.html +++ b/docs/de/d5b/adts__header_8cc_source.html @@ -133,34 +133,34 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
44  BitReader frame(adts_frame, adts_frame_size);
45  // Verify frame starts with sync bits (0xfff).
46  uint32_t sync;
-
47  RCHECK(frame.ReadBits(12, &sync));
+
47  RCHECK(frame.ReadBits(12, &sync));
48  RCHECK(sync == 0xfff);
49  // Skip MPEG version and layer.
-
50  RCHECK(frame.SkipBits(3));
+
50  RCHECK(frame.SkipBits(3));
51  // Get "protection absent" flag.
52  uint8_t protection_absent;
-
53  RCHECK(frame.ReadBits(1, &protection_absent));
+
53  RCHECK(frame.ReadBits(1, &protection_absent));
54  // Get profile.
-
55  RCHECK(frame.ReadBits(2, &profile_));
+
55  RCHECK(frame.ReadBits(2, &profile_));
56  // Get sampling frequency.
-
57  RCHECK(frame.ReadBits(4, &sampling_frequency_index_));
+
57  RCHECK(frame.ReadBits(4, &sampling_frequency_index_));
58  RCHECK(sampling_frequency_index_ < kAdtsFrequencyTableSize);
59  // Skip private stream bit.
-
60  RCHECK(frame.SkipBits(1));
+
60  RCHECK(frame.SkipBits(1));
61  // Get number of audio channels.
-
62  RCHECK(frame.ReadBits(3, &channel_configuration_));
+
62  RCHECK(frame.ReadBits(3, &channel_configuration_));
63  RCHECK((channel_configuration_ > 0) &&
64  (channel_configuration_ < kAdtsNumChannelsTableSize));
65  // Skip originality, home and copyright info.
-
66  RCHECK(frame.SkipBits(4));
+
66  RCHECK(frame.SkipBits(4));
67  // Verify that the frame size matches input parameters.
68  uint16_t frame_size;
-
69  RCHECK(frame.ReadBits(13, &frame_size));
+
69  RCHECK(frame.ReadBits(13, &frame_size));
70  RCHECK(frame_size == adts_frame_size);
71  // Skip buffer fullness indicator.
-
72  RCHECK(frame.SkipBits(11));
+
72  RCHECK(frame.SkipBits(11));
73  uint8_t num_blocks_minus_1;
-
74  RCHECK(frame.ReadBits(2, &num_blocks_minus_1));
+
74  RCHECK(frame.ReadBits(2, &num_blocks_minus_1));
75  if (num_blocks_minus_1) {
76  NOTIMPLEMENTED() << "ADTS frames with more than one data block "
77  "not supported.";
@@ -201,13 +201,13 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
112 } // namespace mp2t
113 } // namespace media
114 } // namespace shaka
+
bool ReadBits(size_t num_bits, T *out)
Definition: bit_reader.h:35
A class to read bit streams.
Definition: bit_reader.h:17
-
bool ReadBits(int num_bits, T *out)
Definition: bit_reader.h:35
-
bool SkipBits(int num_bits)
Definition: bit_reader.cc:24
+
bool SkipBits(size_t num_bits)
Definition: bit_reader.cc:24
diff --git a/docs/de/d5c/mpd__flags_8h_source.html b/docs/de/d5c/mpd__flags_8h_source.html index 3b292b598b..2d026dc4e6 100644 --- a/docs/de/d5c/mpd__flags_8h_source.html +++ b/docs/de/d5c/mpd__flags_8h_source.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d60/classshaka_1_1media_1_1mp2t_1_1ProgramMapTableWriter-members.html b/docs/de/d60/classshaka_1_1media_1_1mp2t_1_1ProgramMapTableWriter-members.html index 4abe0164c2..3a25ffff73 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 87f48a8bd3..130d41b3ce 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 @@ -150,7 +150,7 @@ void 
Returns
true on success, false otherwise.
-

Definition at line 238 of file ts_writer.cc.

+

Definition at line 237 of file ts_writer.cc.

@@ -177,7 +177,7 @@ void 
Returns
true on success, false otherwise.
-

Definition at line 234 of file ts_writer.cc.

+

Definition at line 233 of file ts_writer.cc.

@@ -211,7 +211,7 @@ void 
Returns
true on success, false otherwise.
-

Definition at line 165 of file ts_writer.cc.

+

Definition at line 164 of file ts_writer.cc.

@@ -246,7 +246,7 @@ void 
Returns
true on success, false otherwise.
-

Definition at line 199 of file ts_writer.cc.

+

Definition at line 198 of file ts_writer.cc.

@@ -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 bb3f35b3ac..8219e570f8 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 55f7fde1e3..271edccff1 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 f81fbae413..7187cce202 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 a86cab936b..b89de56d1f 100644 --- a/docs/de/d77/webm__content__encodings__client_8cc_source.html +++ b/docs/de/d77/webm__content__encodings__client_8cc_source.html @@ -358,7 +358,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d7b/mp4__media__parser_8h_source.html b/docs/de/d7b/mp4__media__parser_8h_source.html index 3589eebd5b..9e09aaa3b5 100644 --- a/docs/de/d7b/mp4__media__parser_8h_source.html +++ b/docs/de/d7b/mp4__media__parser_8h_source.html @@ -204,7 +204,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d7e/classshaka_1_1media_1_1mp2t_1_1TsSectionPsi.html b/docs/de/d7e/classshaka_1_1media_1_1mp2t_1_1TsSectionPsi.html index 7b33414817..95bd7a9900 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 b015fd0a2f..c433dbdc2a 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 48507093e2..ac9e5b12fe 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 25dbc51e33..cafbe87f19 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 ae8adb1074..50a9c7078f 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 e0349a59c2..673bb1cab7 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 4c1434cdd6..a7d945be88 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 15887835e0..d69f405317 100644 --- a/docs/de/dab/es__parser__h26x_8cc_source.html +++ b/docs/de/dab/es__parser__h26x_8cc_source.html @@ -410,7 +410,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/dad/validate__flag_8cc_source.html b/docs/de/dad/validate__flag_8cc_source.html index 264035cf39..b113a89262 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 f996b4fa19..b9022e76f1 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 7bb6d2ad13..91aa1edd40 100644 --- a/docs/de/db4/classshaka_1_1media_1_1H26xBitReader.html +++ b/docs/de/db4/classshaka_1_1media_1_1H26xBitReader.html @@ -134,7 +134,7 @@ size_t NumEmulationPrevent diff --git a/docs/de/dbf/udp__options_8h_source.html b/docs/de/dbf/udp__options_8h_source.html index 2b886fca95..ff0eacd7db 100644 --- a/docs/de/dbf/udp__options_8h_source.html +++ b/docs/de/dbf/udp__options_8h_source.html @@ -131,7 +131,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/dc1/demuxer_8h_source.html b/docs/de/dc1/demuxer_8h_source.html index 5da30b721d..7914403720 100644 --- a/docs/de/dc1/demuxer_8h_source.html +++ b/docs/de/dc1/demuxer_8h_source.html @@ -189,7 +189,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/dc2/classshaka_1_1media_1_1H265Parser.html b/docs/de/dc2/classshaka_1_1media_1_1H265Parser.html index a39927bbff..d84d1c40dd 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 04dd53afe2..6d76e5ad8c 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 aba5683142..8fe5f5df3e 100644 --- a/docs/de/dcb/ts__segmenter_8h_source.html +++ b/docs/de/dcb/ts__segmenter_8h_source.html @@ -213,7 +213,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 857bbe905b..5fea5d0d04 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 74753b5f39..2e9841ea6d 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 d4786500d3..cf4d2b3813 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 5bc6513488..c4dc136cfc 100644 --- a/docs/de/dd6/muxer__listener__test__helper_8cc_source.html +++ b/docs/de/dd6/muxer__listener__test__helper_8cc_source.html @@ -209,7 +209,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/ddd/classshaka_1_1media_1_1Muxer-members.html b/docs/de/ddd/classshaka_1_1media_1_1Muxer-members.html index 2201090177..c7492c1486 100644 --- a/docs/de/ddd/classshaka_1_1media_1_1Muxer-members.html +++ b/docs/de/ddd/classshaka_1_1media_1_1Muxer-members.html @@ -118,7 +118,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/dde/classshaka_1_1media_1_1mp2t_1_1TsSegmenter.html b/docs/de/dde/classshaka_1_1media_1_1mp2t_1_1TsSegmenter.html index 4b27b461ae..1db0099ab6 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 @@ -268,7 +268,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 8374135d51..7653835dfb 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 374e2cffe4..0cf8421cfe 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 0f7f99b593..d3af423aa2 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 @@ -119,7 +119,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/de4/structshaka_1_1media_1_1H264Pps.html b/docs/de/de4/structshaka_1_1media_1_1H264Pps.html index ad1a89c715..7807d3d61c 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 c6a8f85e2b..eea91bb5be 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 9df4ee8cb9..26a24da1ea 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 678 of file box_definitions.cc.

+

Definition at line 681 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 bd5d7ea617..be707616b5 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 @@ -217,7 +217,7 @@ bool is_keyframe () co

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

-

Definition at line 428 of file track_run_iterator.cc.

+

Definition at line 429 of file track_run_iterator.cc.

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

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

-

Definition at line 441 of file track_run_iterator.cc.

+

Definition at line 442 of file track_run_iterator.cc.

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

Definition at line 450 of file track_run_iterator.cc.

+

Definition at line 451 of file track_run_iterator.cc.

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

Definition at line 457 of file track_run_iterator.cc.

+

Definition at line 458 of file track_run_iterator.cc.

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

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

-

Definition at line 591 of file track_run_iterator.cc.

+

Definition at line 592 of file track_run_iterator.cc.

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

Definition at line 493 of file track_run_iterator.cc.

+

Definition at line 494 of file track_run_iterator.cc.

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

Definition at line 481 of file track_run_iterator.cc.

+

Definition at line 482 of file track_run_iterator.cc.

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

Definition at line 483 of file track_run_iterator.cc.

+

Definition at line 484 of file track_run_iterator.cc.

@@ -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 327d8d39d9..c781435df9 100644 --- a/docs/de/dfa/classshaka_1_1media_1_1webm_1_1Encryptor.html +++ b/docs/de/dfa/classshaka_1_1media_1_1webm_1_1Encryptor.html @@ -215,7 +215,7 @@ Public Member Functions diff --git a/docs/de/dfa/muxer__listener_8h_source.html b/docs/de/dfa/muxer__listener_8h_source.html index b9486e883c..223143321b 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 e6e43c931f..8e19c56922 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 1711 of file box_definitions.cc.

+

Definition at line 1717 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 5f5bcb6fd0..f339256b77 100644 --- a/docs/de/dfd/stream__info_8cc_source.html +++ b/docs/de/dfd/stream__info_8cc_source.html @@ -140,7 +140,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d05/vp__codec__configuration__record_8cc_source.html b/docs/df/d05/vp__codec__configuration__record_8cc_source.html index 7f2267af9d..ab4ca9d112 100644 --- a/docs/df/d05/vp__codec__configuration__record_8cc_source.html +++ b/docs/df/d05/vp__codec__configuration__record_8cc_source.html @@ -360,7 +360,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d1a/offset__byte__queue_8cc_source.html b/docs/df/d1a/offset__byte__queue_8cc_source.html index 2aa3458b55..48295298b4 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 bc4ea3701c..2d1eaea8b9 100644 --- a/docs/df/d1c/classshaka_1_1media_1_1MediaSample-members.html +++ b/docs/df/d1c/classshaka_1_1media_1_1MediaSample-members.html @@ -125,7 +125,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d1c/composition__offset__iterator_8h_source.html b/docs/df/d1c/composition__offset__iterator_8h_source.html index 763a8c9869..9d8d564c3d 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 3657a603ea..2eba2045fe 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 5875d065d2..254bff2d7e 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 d7decf90be..407f03a552 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 595010db4b..ba532de075 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 98c1f75c49..615f339508 100644 --- a/docs/df/d31/muxer__util_8cc_source.html +++ b/docs/df/d31/muxer__util_8cc_source.html @@ -272,7 +272,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 212666587f..081e6f4902 100644 --- a/docs/df/d32/audio__stream__info_8h_source.html +++ b/docs/df/d32/audio__stream__info_8h_source.html @@ -164,7 +164,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d33/classshaka_1_1AdaptationSet-members.html b/docs/df/d33/classshaka_1_1AdaptationSet-members.html index 4f38483a49..5ca2fb504d 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 d43786fcd6..bdcadcab2c 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 28541253e0..9d9470c419 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 1f2b174ada..5a2ed23718 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 6e9c44cca3..47e3d60fe1 100644 --- a/docs/df/d46/classshaka_1_1media_1_1Muxer.html +++ b/docs/df/d46/classshaka_1_1media_1_1Muxer.html @@ -362,7 +362,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 6ece4a3b34..49ae1357b4 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 0383168ba8..a852fb745e 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 ed376738d1..ca9dae9bb4 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 536ca4d56e..2f199f60d9 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 23e7b6c055..a899b44d0c 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 32ca0f2b63..fd2d23d89d 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 c187deca96..438a759eef 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 c21ef86ccb..328d4b8a3e 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 1bee1de6db..38970b357d 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 1dd31a6892..4b60cd7158 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 700 of file box_definitions.cc.

+

Definition at line 703 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 10aebf3e65..7c6c67b725 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 2453 of file box_definitions.cc.

+

Definition at line 2459 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 5d6aeebab5..e1183fa210 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 35a41b5b40..abbfbb1434 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 3391bc5c31..ece721d9a0 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 602f8e2211..1196bdfd79 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 1980 of file box_definitions.cc.

+

Definition at line 1986 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 73da70003e..2fe5a20243 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 3282823a93..a493ce8696 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 40080e8e99..7e555d19ea 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 5d60378cfe..dd65f971d6 100644 --- a/docs/df/d8d/es__parser__h26x_8h_source.html +++ b/docs/df/d8d/es__parser__h26x_8h_source.html @@ -235,7 +235,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d94/classshaka_1_1RepresentationStateChangeListener.html b/docs/df/d94/classshaka_1_1RepresentationStateChangeListener.html index e9b4792ff0..816adc66fa 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 6e9f7e030a..43edf795d9 100644 --- a/docs/df/d96/xml__node_8cc_source.html +++ b/docs/df/d96/xml__node_8cc_source.html @@ -499,7 +499,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 98f9bbc953..eceef529f2 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 2242 of file box_definitions.cc.

+

Definition at line 2248 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 ea40384695..2280188cc6 100644 --- a/docs/df/d9e/classshaka_1_1xml_1_1RepresentationXmlNode.html +++ b/docs/df/d9e/classshaka_1_1xml_1_1RepresentationXmlNode.html @@ -313,7 +313,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 7d61ebeddb..ef5d6f953f 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 264d3b3dc6..e8715522d8 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 64987f9caa..32586132a9 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 87d45f95f1..7f9d6be300 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 4c65c792ba..01db9caf3f 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 fb85179dcc..5e96c8189c 100644 --- a/docs/df/dd2/mpd__utils_8h_source.html +++ b/docs/df/dd2/mpd__utils_8h_source.html @@ -177,7 +177,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/dd2/structshaka_1_1media_1_1H264Pps-members.html b/docs/df/dd2/structshaka_1_1media_1_1H264Pps-members.html index 1e50859515..4451b9e218 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 3645ddcdc7..ac81351017 100644 --- a/docs/df/ddc/webm_2segmenter_8h_source.html +++ b/docs/df/ddc/webm_2segmenter_8h_source.html @@ -257,7 +257,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 23a7271017..3e75ff6867 100644 --- a/docs/df/dde/ts__section__psi_8cc_source.html +++ b/docs/df/dde/ts__section__psi_8cc_source.html @@ -230,7 +230,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/de2/structshaka_1_1media_1_1H264SEIRecoveryPoint.html b/docs/df/de2/structshaka_1_1media_1_1H264SEIRecoveryPoint.html index fee0340cc8..a08e8b2c68 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 468cf71d65..da3b342d79 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 7ebc606639..e34c9cb1c5 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 8030ba191d..9f6ebe2806 100644 --- a/docs/df/df1/structshaka_1_1ContentProtectionElement-members.html +++ b/docs/df/df1/structshaka_1_1ContentProtectionElement-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/dfb/classshaka_1_1media_1_1UdpOptions-members.html b/docs/df/dfb/classshaka_1_1media_1_1UdpOptions-members.html index 33f64924d8..6e8006b3f0 100644 --- a/docs/df/dfb/classshaka_1_1media_1_1UdpOptions-members.html +++ b/docs/df/dfb/classshaka_1_1media_1_1UdpOptions-members.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dir_0494b8c96e3190a776d2b97ade9c8ddf.html b/docs/dir_0494b8c96e3190a776d2b97ade9c8ddf.html index 5a9727968f..6af2852738 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 6b5969661e..81162bda0d 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 bbd42f2649..50e7313519 100644 --- a/docs/dir_279fd47bebb21302c25cfb685e84c359.html +++ b/docs/dir_279fd47bebb21302c25cfb685e84c359.html @@ -127,7 +127,7 @@ Files diff --git a/docs/dir_2eceb70145328c029a5f43350007537a.html b/docs/dir_2eceb70145328c029a5f43350007537a.html index e1825fa8c2..b5ab2ce03a 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 30ac6632fc..4759ff2679 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 7d0d67c262..8a386f2eff 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 20330aa667..f66e88243e 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 19f3e7b155..5d84fc1314 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 f1b9b1b779..f079bf739d 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 04ca88ae66..040cf70fd1 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 e44224ed0c..6b1eb57287 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 652da1e750..3f49d552f8 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 6573e04146..ef72508587 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 4970a51e02..6417899267 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 4a27a2c046..b82f163928 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 40dc9abe18..8ffe53f69b 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 8ee81f8901..e2c05fcfb2 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 0b4f789a5e..f1fa4d1260 100644 --- a/docs/files.html +++ b/docs/files.html @@ -434,7 +434,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions.html b/docs/functions.html index a43c555e63..74f7413a13 100644 --- a/docs/functions.html +++ b/docs/functions.html @@ -249,7 +249,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_b.html b/docs/functions_b.html index 38bbb515c1..31ac07657c 100644 --- a/docs/functions_b.html +++ b/docs/functions_b.html @@ -129,13 +129,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : BandwidthEstimator
  • bit_position() -: shaka::media::BitReader +: shaka::media::BitReader
  • BitReader() -: shaka::media::BitReader +: shaka::media::BitReader
  • bits_available() -: shaka::media::BitReader +: shaka::media::BitReader
  • box_size() : shaka::media::mp4::Box @@ -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 3d7347cd80..e51e352475 100644 --- a/docs/functions_c.html +++ b/docs/functions_c.html @@ -244,7 +244,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_d.html b/docs/functions_d.html index 9d6f3d4768..bfca6e3f07 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 6535c628e5..971b8352f1 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 329a11fb0e..74abc13dfc 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 4874fa54a5..29c94788fd 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 27a554316d..c10a62b767 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 85c18dd7b4..3d1d4f5d32 100644 --- a/docs/functions_func.html +++ b/docs/functions_func.html @@ -249,7 +249,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_b.html b/docs/functions_func_b.html index 98919b75b6..b4e598d5fb 100644 --- a/docs/functions_func_b.html +++ b/docs/functions_func_b.html @@ -126,13 +126,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : BandwidthEstimator
  • bit_position() -: shaka::media::BitReader +: shaka::media::BitReader
  • BitReader() -: shaka::media::BitReader +: shaka::media::BitReader
  • bits_available() -: shaka::media::BitReader +: shaka::media::BitReader
  • box_size() : shaka::media::mp4::Box @@ -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 98e4cfed6f..7a47376872 100644 --- a/docs/functions_func_c.html +++ b/docs/functions_func_c.html @@ -244,7 +244,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_d.html b/docs/functions_func_d.html index c10c618398..dbd42730ad 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 2aa9078e94..85802fe4e3 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 bfbf0a47c6..d2a16cdc16 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 bf61013870..4db6fc4717 100644 --- a/docs/functions_func_g.html +++ b/docs/functions_func_g.html @@ -256,7 +256,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_h.html b/docs/functions_func_h.html index 8fb00be5fc..0da643e006 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 6145b3cca6..3b64914c07 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 eed212a92f..6dcf476e9e 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 69a960ec27..398ad348ad 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 e29eb7217e..effec80e8b 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 0d1a7fc9d0..39ff5b0556 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 d1153beae3..342ae9df6c 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 77299bfc4c..f2bad2cdd9 100644 --- a/docs/functions_func_p.html +++ b/docs/functions_func_p.html @@ -231,7 +231,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_r.html b/docs/functions_func_r.html index 61175f437c..55c5a75eb0 100644 --- a/docs/functions_func_r.html +++ b/docs/functions_func_r.html @@ -137,7 +137,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : shaka::media::mp4::BoxReader
  • ReadBits() -: shaka::media::BitReader +: shaka::media::BitReader
  • ReadBox() : shaka::media::mp4::BoxReader @@ -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 5c53f26215..2d9b3a5967 100644 --- a/docs/functions_func_s.html +++ b/docs/functions_func_s.html @@ -239,13 +239,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , shaka::media::UdpFile
  • SkipBits() -: shaka::media::BitReader +: shaka::media::BitReader
  • SkipBitsConditional() -: shaka::media::BitReader +: shaka::media::BitReader
  • SkipBytes() -: shaka::media::BitReader +: shaka::media::BitReader , shaka::media::BufferReader
  • Start() @@ -282,7 +282,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_t.html b/docs/functions_func_t.html index 6b674919e5..ed00bdd95d 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 181da24bb8..b42557dcbe 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 51b043aa3b..eca59c1172 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 c4579ca674..508bc6283d 100644 --- a/docs/functions_func_w.html +++ b/docs/functions_func_w.html @@ -182,7 +182,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_x.html b/docs/functions_func_x.html index b9ff14a77b..e19f93985a 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 56712052cc..ebb6bfbe56 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 a7c4f70b71..ef1d798a8b 100644 --- a/docs/functions_g.html +++ b/docs/functions_g.html @@ -256,7 +256,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_h.html b/docs/functions_h.html index cc3f78b392..cd94bcfa21 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 4294822efa..7ab7f373b3 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 b4b25d134e..9de767ca63 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 501a3c45a7..b536d646d7 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 118ee5d3ac..bb305dbf74 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 fd763b8c1f..7ee039c398 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 74cfe7acd7..55025807fe 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 d96efb8299..27c78ef0c9 100644 --- a/docs/functions_p.html +++ b/docs/functions_p.html @@ -237,7 +237,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_r.html b/docs/functions_r.html index 240f3c94b2..1c21b7e698 100644 --- a/docs/functions_r.html +++ b/docs/functions_r.html @@ -137,7 +137,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : shaka::media::mp4::BoxReader
  • ReadBits() -: shaka::media::BitReader +: shaka::media::BitReader
  • ReadBox() : shaka::media::mp4::BoxReader @@ -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 24ee203a8e..46d9ab450a 100644 --- a/docs/functions_s.html +++ b/docs/functions_s.html @@ -254,13 +254,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , shaka::media::UdpFile
  • SkipBits() -: shaka::media::BitReader +: shaka::media::BitReader
  • SkipBitsConditional() -: shaka::media::BitReader +: shaka::media::BitReader
  • SkipBytes() -: shaka::media::BitReader +: shaka::media::BitReader , shaka::media::BufferReader
  • Start() @@ -297,7 +297,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_t.html b/docs/functions_t.html index 8366646850..b2395eb9c0 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 d5859e416d..8761a1c536 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 05bbd4b977..4f3e0701d7 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 b0d1a0d236..bd3dd1cdfe 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 84d1be03d6..3b981fca1f 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 426ba43591..12e1850464 100644 --- a/docs/functions_w.html +++ b/docs/functions_w.html @@ -182,7 +182,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_x.html b/docs/functions_x.html index 02d203406e..178dc0d825 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 60bd1971e7..c18972a2de 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 6596bbe8d5..6a1bb31fcb 100644 --- a/docs/hierarchy.html +++ b/docs/hierarchy.html @@ -370,7 +370,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/index.html b/docs/index.html index a0d7ce265c..fb3dd44c27 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 79a56f8015..672e24b472 100644 --- a/docs/namespacemembers.html +++ b/docs/namespacemembers.html @@ -130,7 +130,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/namespacemembers_func.html b/docs/namespacemembers_func.html index 126ce60d13..63b1495f40 100644 --- a/docs/namespacemembers_func.html +++ b/docs/namespacemembers_func.html @@ -130,7 +130,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/namespaces.html b/docs/namespaces.html index 6a66656ad0..d5a9729214 100644 --- a/docs/namespaces.html +++ b/docs/namespaces.html @@ -92,7 +92,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/search/all_1.js b/docs/search/all_1.js index 65794ceeb8..da9bbb7662 100644 --- a/docs/search/all_1.js +++ b/docs/search/all_1.js @@ -2,10 +2,10 @@ var searchData= [ ['bandwidth',['bandwidth',['../d0/d27/structshaka_1_1media_1_1MuxerOptions.html#a930587b1f3a3e38cf1e7974f01d8ce1e',1,'shaka::media::MuxerOptions']]], ['bandwidthestimator',['BandwidthEstimator',['../d2/d6f/classBandwidthEstimator.html',1,'BandwidthEstimator'],['../d2/d6f/classBandwidthEstimator.html#aaae9573785ee9d62e0927f806537ea97',1,'BandwidthEstimator::BandwidthEstimator()']]], - ['bit_5fposition',['bit_position',['../d6/da9/classshaka_1_1media_1_1BitReader.html#a580e91c610d3d58bee0f4f4ed8ef12ef',1,'shaka::media::BitReader']]], + ['bit_5fposition',['bit_position',['../d6/da9/classshaka_1_1media_1_1BitReader.html#a6b7456b84d6b463767127b57cd0dc898',1,'shaka::media::BitReader']]], ['bitreader',['BitReader',['../d6/da9/classshaka_1_1media_1_1BitReader.html',1,'shaka::media']]], - ['bitreader',['BitReader',['../d6/da9/classshaka_1_1media_1_1BitReader.html#a909f0d78f3cd87fcedd1d965eb2aea35',1,'shaka::media::BitReader']]], - ['bits_5favailable',['bits_available',['../d6/da9/classshaka_1_1media_1_1BitReader.html#a159b687704c85f0938918197b7d3b23d',1,'shaka::media::BitReader']]], + ['bitreader',['BitReader',['../d6/da9/classshaka_1_1media_1_1BitReader.html#a264dbe3e94ba76214c1af75ab3877945',1,'shaka::media::BitReader']]], + ['bits_5favailable',['bits_available',['../d6/da9/classshaka_1_1media_1_1BitReader.html#a1c1e1225c2780383e72996137bb7f86a',1,'shaka::media::BitReader']]], ['box',['Box',['../d1/d2d/structshaka_1_1media_1_1mp4_1_1Box.html',1,'shaka::media::mp4']]], ['box_5fsize',['box_size',['../d1/d2d/structshaka_1_1media_1_1mp4_1_1Box.html#ad0186e0f9301bd07c52a55a8b1db0419',1,'shaka::media::mp4::Box']]], ['boxbuffer',['BoxBuffer',['../d1/da1/classshaka_1_1media_1_1mp4_1_1BoxBuffer.html',1,'shaka::media::mp4']]], diff --git a/docs/search/all_10.js b/docs/search/all_10.js index 1b15c357d1..1fff17797b 100644 --- a/docs/search/all_10.js +++ b/docs/search/all_10.js @@ -65,9 +65,9 @@ var searchData= ['singlesegmentsegmenter',['SingleSegmentSegmenter',['../d0/dab/classshaka_1_1media_1_1mp4_1_1SingleSegmentSegmenter.html',1,'shaka::media::mp4']]], ['singlesegmentsegmenter',['SingleSegmentSegmenter',['../d3/da1/classshaka_1_1media_1_1webm_1_1SingleSegmentSegmenter.html',1,'shaka::media::webm']]], ['size',['Size',['../d5/d33/classshaka_1_1media_1_1ProducerConsumerQueue.html#a4f2483c665f2693f583e7b467101d844',1,'shaka::media::ProducerConsumerQueue::Size()'],['../d3/d61/classshaka_1_1media_1_1File.html#adffa2c3d12ae0a579704cf1f5b3bf8ab',1,'shaka::media::File::Size()'],['../d9/de6/classshaka_1_1media_1_1LocalFile.html#a4cc3427bb01a0989de7711b2a004a099',1,'shaka::media::LocalFile::Size()'],['../d9/dbd/classshaka_1_1media_1_1MemoryFile.html#ad52955a976c16b910dde372fe33b7b0d',1,'shaka::media::MemoryFile::Size()'],['../d0/d66/classshaka_1_1media_1_1ThreadedIoFile.html#ac8c1f49d9e7ff55b1484129240c065f3',1,'shaka::media::ThreadedIoFile::Size()'],['../d7/d7a/classshaka_1_1media_1_1UdpFile.html#a852424c6982850686f0419e84e222708',1,'shaka::media::UdpFile::Size()'],['../d1/da1/classshaka_1_1media_1_1mp4_1_1BoxBuffer.html#a90fe62338ba20817d27cf4e34949000e',1,'shaka::media::mp4::BoxBuffer::Size()']]], - ['skipbits',['SkipBits',['../d6/da9/classshaka_1_1media_1_1BitReader.html#a5c7e9d8cedb921042076770c8f6033d7',1,'shaka::media::BitReader']]], - ['skipbitsconditional',['SkipBitsConditional',['../d6/da9/classshaka_1_1media_1_1BitReader.html#a83d80cc51b96ca864a44fa169ce9c67a',1,'shaka::media::BitReader']]], - ['skipbytes',['SkipBytes',['../d6/da9/classshaka_1_1media_1_1BitReader.html#afe1b515788b0079fae42dbb43189121a',1,'shaka::media::BitReader::SkipBytes()'],['../d9/d13/classshaka_1_1media_1_1BufferReader.html#a2b15dfcd6ff891a9cb7b76f48d91d15d',1,'shaka::media::BufferReader::SkipBytes()']]], + ['skipbits',['SkipBits',['../d6/da9/classshaka_1_1media_1_1BitReader.html#a4ab20ef220c76072eaecb982aba0541d',1,'shaka::media::BitReader']]], + ['skipbitsconditional',['SkipBitsConditional',['../d6/da9/classshaka_1_1media_1_1BitReader.html#a98bbbbc849a3fadc1a136662174d470e',1,'shaka::media::BitReader']]], + ['skipbytes',['SkipBytes',['../d6/da9/classshaka_1_1media_1_1BitReader.html#a7d349253d5cc8f9aa33f1ca2ea94677c',1,'shaka::media::BitReader::SkipBytes()'],['../d9/d13/classshaka_1_1media_1_1BufferReader.html#a2b15dfcd6ff891a9cb7b76f48d91d15d',1,'shaka::media::BufferReader::SkipBytes()']]], ['soundmediaheader',['SoundMediaHeader',['../d7/d07/structshaka_1_1media_1_1mp4_1_1SoundMediaHeader.html',1,'shaka::media::mp4']]], ['start',['Start',['../d8/d5c/classshaka_1_1media_1_1MediaStream.html#af5eca8f2e63e762d52fcc30c5f8c38b0',1,'shaka::media::MediaStream']]], ['startbox',['StartBox',['../d1/dee/classshaka_1_1media_1_1mp4_1_1BoxReader.html#a6bafd9cd95a97c4c1475d1806d602ae2',1,'shaka::media::mp4::BoxReader']]], diff --git a/docs/search/all_f.js b/docs/search/all_f.js index a61850ad5b..7a69907b30 100644 --- a/docs/search/all_f.js +++ b/docs/search/all_f.js @@ -3,7 +3,7 @@ var searchData= ['read',['Read',['../d3/d61/classshaka_1_1media_1_1File.html#aed0c0793fd8751330583314a4d3012b9',1,'shaka::media::File::Read()'],['../dd/d7c/classshaka_1_1media_1_1IoCache.html#a3cb864f866af25f0ff92c367946b0945',1,'shaka::media::IoCache::Read()'],['../d9/de6/classshaka_1_1media_1_1LocalFile.html#a65a1abae386202a08deb5bfa8aeef7c1',1,'shaka::media::LocalFile::Read()'],['../d9/dbd/classshaka_1_1media_1_1MemoryFile.html#aac5f63ba0bb136eac2260a034edc10cf',1,'shaka::media::MemoryFile::Read()'],['../d0/d66/classshaka_1_1media_1_1ThreadedIoFile.html#a5bd05e37779441004cd7ba0c33de1ad6',1,'shaka::media::ThreadedIoFile::Read()'],['../d7/d7a/classshaka_1_1media_1_1UdpFile.html#a9e6387d6c23e6cfd7a91ed432fe3e81c',1,'shaka::media::UdpFile::Read()']]], ['read1',['Read1',['../d9/d13/classshaka_1_1media_1_1BufferReader.html#a65b65ad5a5ebc9d66182c38ec9876c05',1,'shaka::media::BufferReader']]], ['readallchildren',['ReadAllChildren',['../d1/dee/classshaka_1_1media_1_1mp4_1_1BoxReader.html#a8b5c7d5a487fb3063eae1495aa3a7566',1,'shaka::media::mp4::BoxReader']]], - ['readbits',['ReadBits',['../d6/da9/classshaka_1_1media_1_1BitReader.html#ad72778b38786be93fa55aa983501010d',1,'shaka::media::BitReader']]], + ['readbits',['ReadBits',['../d6/da9/classshaka_1_1media_1_1BitReader.html#ae40382c4ca4a57b3bb3531a337aebbe4',1,'shaka::media::BitReader']]], ['readbox',['ReadBox',['../d1/dee/classshaka_1_1media_1_1mp4_1_1BoxReader.html#ae348922875d67128d2af6d88b692e205',1,'shaka::media::mp4::BoxReader']]], ['readchild',['ReadChild',['../d1/dee/classshaka_1_1media_1_1mp4_1_1BoxReader.html#a68defcd9be85bbd5cbded3bee86aa03a',1,'shaka::media::mp4::BoxReader']]], ['readchildren',['ReadChildren',['../d1/dee/classshaka_1_1media_1_1mp4_1_1BoxReader.html#aedb3a49da398833cda1caa1ad01a364a',1,'shaka::media::mp4::BoxReader']]], diff --git a/docs/search/functions_1.js b/docs/search/functions_1.js index b46c7bc52f..8bcf884bee 100644 --- a/docs/search/functions_1.js +++ b/docs/search/functions_1.js @@ -1,9 +1,9 @@ var searchData= [ ['bandwidthestimator',['BandwidthEstimator',['../d2/d6f/classBandwidthEstimator.html#aaae9573785ee9d62e0927f806537ea97',1,'BandwidthEstimator']]], - ['bit_5fposition',['bit_position',['../d6/da9/classshaka_1_1media_1_1BitReader.html#a580e91c610d3d58bee0f4f4ed8ef12ef',1,'shaka::media::BitReader']]], - ['bitreader',['BitReader',['../d6/da9/classshaka_1_1media_1_1BitReader.html#a909f0d78f3cd87fcedd1d965eb2aea35',1,'shaka::media::BitReader']]], - ['bits_5favailable',['bits_available',['../d6/da9/classshaka_1_1media_1_1BitReader.html#a159b687704c85f0938918197b7d3b23d',1,'shaka::media::BitReader']]], + ['bit_5fposition',['bit_position',['../d6/da9/classshaka_1_1media_1_1BitReader.html#a6b7456b84d6b463767127b57cd0dc898',1,'shaka::media::BitReader']]], + ['bitreader',['BitReader',['../d6/da9/classshaka_1_1media_1_1BitReader.html#a264dbe3e94ba76214c1af75ab3877945',1,'shaka::media::BitReader']]], + ['bits_5favailable',['bits_available',['../d6/da9/classshaka_1_1media_1_1BitReader.html#a1c1e1225c2780383e72996137bb7f86a',1,'shaka::media::BitReader']]], ['box_5fsize',['box_size',['../d1/d2d/structshaka_1_1media_1_1mp4_1_1Box.html#ad0186e0f9301bd07c52a55a8b1db0419',1,'shaka::media::mp4::Box']]], ['boxbuffer',['BoxBuffer',['../d1/da1/classshaka_1_1media_1_1mp4_1_1BoxBuffer.html#a787a6a6404dfc1fed10dfd903b4e4d22',1,'shaka::media::mp4::BoxBuffer::BoxBuffer(BoxReader *reader)'],['../d1/da1/classshaka_1_1media_1_1mp4_1_1BoxBuffer.html#a021513a50af89992b15691dfc79ed447',1,'shaka::media::mp4::BoxBuffer::BoxBuffer(BufferWriter *writer)']]], ['boxtype',['BoxType',['../d1/d2d/structshaka_1_1media_1_1mp4_1_1Box.html#ac7c07671ab4c56d19e085570862015ca',1,'shaka::media::mp4::Box::BoxType()'],['../d5/d03/structshaka_1_1media_1_1mp4_1_1FileType.html#a038c8454ffed2e8bf32c858ddae320e1',1,'shaka::media::mp4::FileType::BoxType()'],['../d3/dd0/structshaka_1_1media_1_1mp4_1_1SegmentType.html#ab3c10a2cd4a8162a91265b0cfd53de09',1,'shaka::media::mp4::SegmentType::BoxType()'],['../d0/d3c/structshaka_1_1media_1_1mp4_1_1ProtectionSystemSpecificHeader.html#aae81fc1f70a0cdb8161dbafdbe80b099',1,'shaka::media::mp4::ProtectionSystemSpecificHeader::BoxType()'],['../d5/dca/structshaka_1_1media_1_1mp4_1_1SampleAuxiliaryInformationOffset.html#a63843ee864061fef2d6f788ad240aa44',1,'shaka::media::mp4::SampleAuxiliaryInformationOffset::BoxType()'],['../dd/d13/structshaka_1_1media_1_1mp4_1_1SampleAuxiliaryInformationSize.html#a909bcffee3acdc7754539a22546d1c76',1,'shaka::media::mp4::SampleAuxiliaryInformationSize::BoxType()'],['../d4/dad/structshaka_1_1media_1_1mp4_1_1SampleEncryption.html#a62cd7e5cc8c102db09cbd3d7947604dd',1,'shaka::media::mp4::SampleEncryption::BoxType()'],['../d5/d05/structshaka_1_1media_1_1mp4_1_1OriginalFormat.html#a4901c12c42b47485da0a95e8671de686',1,'shaka::media::mp4::OriginalFormat::BoxType()'],['../d3/da2/structshaka_1_1media_1_1mp4_1_1SchemeType.html#a76da5fef2de39a070fe61055e013b7c1',1,'shaka::media::mp4::SchemeType::BoxType()'],['../db/db8/structshaka_1_1media_1_1mp4_1_1TrackEncryption.html#a702b5c406fdac82ea3e3cb4de88d1c55',1,'shaka::media::mp4::TrackEncryption::BoxType()'],['../d2/d70/structshaka_1_1media_1_1mp4_1_1SchemeInfo.html#a5a50e58f6dcd3969bdeb07fb66a9d4dc',1,'shaka::media::mp4::SchemeInfo::BoxType()'],['../da/de9/structshaka_1_1media_1_1mp4_1_1ProtectionSchemeInfo.html#a09f2c7d00252d23003506285b30d9267',1,'shaka::media::mp4::ProtectionSchemeInfo::BoxType()'],['../d6/d1a/structshaka_1_1media_1_1mp4_1_1MovieHeader.html#a0bbd09e7f0bc8effc1c1ba7f5b8d49d6',1,'shaka::media::mp4::MovieHeader::BoxType()'],['../da/dc4/structshaka_1_1media_1_1mp4_1_1TrackHeader.html#a7880b5742f038be62ca83693883814d3',1,'shaka::media::mp4::TrackHeader::BoxType()'],['../d3/dbe/structshaka_1_1media_1_1mp4_1_1EditList.html#af8ba6778f3fa9b239126ae635d8e9703',1,'shaka::media::mp4::EditList::BoxType()'],['../da/dd0/structshaka_1_1media_1_1mp4_1_1Edit.html#a44e5523c2fa791cae8dd3e36feee81ac',1,'shaka::media::mp4::Edit::BoxType()'],['../da/dbb/structshaka_1_1media_1_1mp4_1_1HandlerReference.html#a71203a734c203f04967eaf1676440ad9',1,'shaka::media::mp4::HandlerReference::BoxType()'],['../d3/dad/structshaka_1_1media_1_1mp4_1_1ID3v2.html#acb41577286eeba57541fed6cd0cabbf2',1,'shaka::media::mp4::ID3v2::BoxType()'],['../dd/df6/structshaka_1_1media_1_1mp4_1_1Metadata.html#aca63db6a124f0d0a62b6a355a89d9f1d',1,'shaka::media::mp4::Metadata::BoxType()'],['../db/d11/structshaka_1_1media_1_1mp4_1_1CodecConfiguration.html#a1e9cb483b993bff202ec6143f892972e',1,'shaka::media::mp4::CodecConfiguration::BoxType()'],['../dd/d71/structshaka_1_1media_1_1mp4_1_1PixelAspectRatio.html#ae12482d2916a9e6b7ecdee1c944c3c91',1,'shaka::media::mp4::PixelAspectRatio::BoxType()'],['../d0/d73/structshaka_1_1media_1_1mp4_1_1VideoSampleEntry.html#a56ed4864ffdb37094b5f3352f53bc755',1,'shaka::media::mp4::VideoSampleEntry::BoxType()'],['../d5/d11/structshaka_1_1media_1_1mp4_1_1ElementaryStreamDescriptor.html#a579ea111ae1e304e27cb0b8d9f52c99c',1,'shaka::media::mp4::ElementaryStreamDescriptor::BoxType()'],['../dc/da0/structshaka_1_1media_1_1mp4_1_1DTSSpecific.html#aa84cd76627aaaf58e2137935b6116346',1,'shaka::media::mp4::DTSSpecific::BoxType()'],['../d4/dfa/structshaka_1_1media_1_1mp4_1_1AC3Specific.html#aa3d0fa9297d15d210f1529eeff8e3d09',1,'shaka::media::mp4::AC3Specific::BoxType()'],['../d4/d8d/structshaka_1_1media_1_1mp4_1_1EC3Specific.html#a926ae9221e26938071abb3ec5988eaf5',1,'shaka::media::mp4::EC3Specific::BoxType()'],['../de/dfa/structshaka_1_1media_1_1mp4_1_1OpusSpecific.html#a6d71265a8782db78c4ed3c2331179418',1,'shaka::media::mp4::OpusSpecific::BoxType()'],['../d8/d5b/structshaka_1_1media_1_1mp4_1_1AudioSampleEntry.html#ab10582a2954863ffcc26ec7373d42d56',1,'shaka::media::mp4::AudioSampleEntry::BoxType()'],['../d8/d20/structshaka_1_1media_1_1mp4_1_1WebVTTConfigurationBox.html#a90c78b82d88afcce6bcb4f5c96fa08b9',1,'shaka::media::mp4::WebVTTConfigurationBox::BoxType()'],['../d4/d33/structshaka_1_1media_1_1mp4_1_1WebVTTSourceLabelBox.html#a90a955dc811f20242aa03eea0758ae55',1,'shaka::media::mp4::WebVTTSourceLabelBox::BoxType()'],['../d7/dc3/structshaka_1_1media_1_1mp4_1_1TextSampleEntry.html#aa3471e1884adc4351293a18fb2ee33fb',1,'shaka::media::mp4::TextSampleEntry::BoxType()'],['../da/df5/structshaka_1_1media_1_1mp4_1_1SampleDescription.html#a55c299ae4b388109dccc7b84feb45089',1,'shaka::media::mp4::SampleDescription::BoxType()'],['../de/def/structshaka_1_1media_1_1mp4_1_1DecodingTimeToSample.html#a16599ced0758987dec6d8678faa7a7b9',1,'shaka::media::mp4::DecodingTimeToSample::BoxType()'],['../df/d7b/structshaka_1_1media_1_1mp4_1_1CompositionTimeToSample.html#a53a999ce269642a6f6cb5b9301ca0740',1,'shaka::media::mp4::CompositionTimeToSample::BoxType()'],['../d3/d87/structshaka_1_1media_1_1mp4_1_1SampleToChunk.html#a610c358480034e85cbea93b0b3406655',1,'shaka::media::mp4::SampleToChunk::BoxType()'],['../d7/d42/structshaka_1_1media_1_1mp4_1_1SampleSize.html#a18b9c0277deec16ff5ffef98c2dbadf3',1,'shaka::media::mp4::SampleSize::BoxType()'],['../da/d59/structshaka_1_1media_1_1mp4_1_1CompactSampleSize.html#affe88ea3f7899a791b616dfa12f794ee',1,'shaka::media::mp4::CompactSampleSize::BoxType()'],['../db/d95/structshaka_1_1media_1_1mp4_1_1ChunkLargeOffset.html#a8215c57361432ca6459cb0333034614d',1,'shaka::media::mp4::ChunkLargeOffset::BoxType()'],['../dd/d06/structshaka_1_1media_1_1mp4_1_1ChunkOffset.html#af4dd3a3ea67a2efb95ac3761b33a8fa0',1,'shaka::media::mp4::ChunkOffset::BoxType()'],['../dd/d3f/structshaka_1_1media_1_1mp4_1_1SyncSample.html#a9d03c709f7d1e51f8809322794756b3b',1,'shaka::media::mp4::SyncSample::BoxType()'],['../d7/d01/structshaka_1_1media_1_1mp4_1_1SampleGroupDescription.html#ad5d87ea02a51983fdb555f2e3638bfed',1,'shaka::media::mp4::SampleGroupDescription::BoxType()'],['../d0/d7c/structshaka_1_1media_1_1mp4_1_1SampleToGroup.html#a4bbaf4bfb39fb569eaeb78f1e9169794',1,'shaka::media::mp4::SampleToGroup::BoxType()'],['../d1/dee/structshaka_1_1media_1_1mp4_1_1SampleTable.html#a2771a6a7d82c1f544bafaf0709043fc1',1,'shaka::media::mp4::SampleTable::BoxType()'],['../d4/db9/structshaka_1_1media_1_1mp4_1_1MediaHeader.html#ad8edc72b3035e93b38ca51505ae01412',1,'shaka::media::mp4::MediaHeader::BoxType()'],['../d1/db0/structshaka_1_1media_1_1mp4_1_1VideoMediaHeader.html#afcca5343a3de868510a53de508730813',1,'shaka::media::mp4::VideoMediaHeader::BoxType()'],['../d7/d07/structshaka_1_1media_1_1mp4_1_1SoundMediaHeader.html#a0a546689f087197c1f9fa7db68887e76',1,'shaka::media::mp4::SoundMediaHeader::BoxType()'],['../db/d21/structshaka_1_1media_1_1mp4_1_1SubtitleMediaHeader.html#a66a134f3ab023831f569873177d4e727',1,'shaka::media::mp4::SubtitleMediaHeader::BoxType()'],['../df/d8a/structshaka_1_1media_1_1mp4_1_1DataEntryUrl.html#a8d46c2ad8b3dd9ae07bc3a73bb45da06',1,'shaka::media::mp4::DataEntryUrl::BoxType()'],['../d4/de3/structshaka_1_1media_1_1mp4_1_1DataReference.html#ad4241f10042e77cb12b30c654746253b',1,'shaka::media::mp4::DataReference::BoxType()'],['../d8/d6d/structshaka_1_1media_1_1mp4_1_1DataInformation.html#ad590eaa2b74fc18d22044abdeafe04c8',1,'shaka::media::mp4::DataInformation::BoxType()'],['../d5/d86/structshaka_1_1media_1_1mp4_1_1MediaInformation.html#a5536ed5769a974f5094c4120c66667fe',1,'shaka::media::mp4::MediaInformation::BoxType()'],['../dc/ddf/structshaka_1_1media_1_1mp4_1_1Media.html#a3a083251ea157e44befabf84b66b0c9e',1,'shaka::media::mp4::Media::BoxType()'],['../d3/db5/structshaka_1_1media_1_1mp4_1_1Track.html#a9ab0be777c96c884b73d2bb85cbb482c',1,'shaka::media::mp4::Track::BoxType()'],['../da/d50/structshaka_1_1media_1_1mp4_1_1MovieExtendsHeader.html#ab2afa24c2f0b694a141ebe58b06635aa',1,'shaka::media::mp4::MovieExtendsHeader::BoxType()'],['../de/d29/structshaka_1_1media_1_1mp4_1_1TrackExtends.html#adb2087c3c85693054596a26d6f31d4dd',1,'shaka::media::mp4::TrackExtends::BoxType()'],['../d1/d3e/structshaka_1_1media_1_1mp4_1_1MovieExtends.html#a3a24ad79e39a6dd24268a90fa5e3d47f',1,'shaka::media::mp4::MovieExtends::BoxType()'],['../d0/d9a/structshaka_1_1media_1_1mp4_1_1Movie.html#a623b673fb897f68e9c4e55682d6114dc',1,'shaka::media::mp4::Movie::BoxType()'],['../df/d9a/structshaka_1_1media_1_1mp4_1_1TrackFragmentDecodeTime.html#a036a76de5bb9287116a9ad94f8895e84',1,'shaka::media::mp4::TrackFragmentDecodeTime::BoxType()'],['../dc/d8f/structshaka_1_1media_1_1mp4_1_1MovieFragmentHeader.html#a68efde9cb48af4236d106dbfa46e96b0',1,'shaka::media::mp4::MovieFragmentHeader::BoxType()'],['../d1/d6e/structshaka_1_1media_1_1mp4_1_1TrackFragmentHeader.html#a227b3fd6cf16ac250ee08f1e41e27ef9',1,'shaka::media::mp4::TrackFragmentHeader::BoxType()'],['../dd/df5/structshaka_1_1media_1_1mp4_1_1TrackFragmentRun.html#a4484ad0299e15e642960702764427f2f',1,'shaka::media::mp4::TrackFragmentRun::BoxType()'],['../df/d7b/structshaka_1_1media_1_1mp4_1_1TrackFragment.html#a5776ac8e8cfd7fe2033432a4581e19ea',1,'shaka::media::mp4::TrackFragment::BoxType()'],['../d9/d1f/structshaka_1_1media_1_1mp4_1_1MovieFragment.html#ac6fab326de1329f291c8e427e99ce971',1,'shaka::media::mp4::MovieFragment::BoxType()'],['../d4/df9/structshaka_1_1media_1_1mp4_1_1SegmentIndex.html#ac95186c204fe8aeffc6c41ca8181af35',1,'shaka::media::mp4::SegmentIndex::BoxType()'],['../d7/dae/structshaka_1_1media_1_1mp4_1_1MediaData.html#a6b0601ae1defd84cda96d27e4659058a',1,'shaka::media::mp4::MediaData::BoxType()'],['../d9/d3e/structshaka_1_1media_1_1mp4_1_1CueSourceIDBox.html#a5a9cf523bd1f53f5d2abeaa5cfa20e4c',1,'shaka::media::mp4::CueSourceIDBox::BoxType()'],['../d8/dc3/structshaka_1_1media_1_1mp4_1_1CueTimeBox.html#ae027ee1285bc5d397c450df88d653ae1',1,'shaka::media::mp4::CueTimeBox::BoxType()'],['../d5/d09/structshaka_1_1media_1_1mp4_1_1CueIDBox.html#a29fe876a3059aa2f7a936ff1bf49b0ff',1,'shaka::media::mp4::CueIDBox::BoxType()'],['../d0/dd0/structshaka_1_1media_1_1mp4_1_1CueSettingsBox.html#ab3ab5a5e7b1702bd713433046b380c8d',1,'shaka::media::mp4::CueSettingsBox::BoxType()'],['../d2/d7f/structshaka_1_1media_1_1mp4_1_1CuePayloadBox.html#aefca706b24f701502a071d6c3bd51c2a',1,'shaka::media::mp4::CuePayloadBox::BoxType()'],['../d9/d3c/structshaka_1_1media_1_1mp4_1_1VTTEmptyCueBox.html#a0e463ad10c04f13125f146c5ef908f69',1,'shaka::media::mp4::VTTEmptyCueBox::BoxType()'],['../d6/d79/structshaka_1_1media_1_1mp4_1_1VTTAdditionalTextBox.html#ab22709c67041094daaaa6f0b42eca51d',1,'shaka::media::mp4::VTTAdditionalTextBox::BoxType()'],['../d6/daa/structshaka_1_1media_1_1mp4_1_1VTTCueBox.html#ae19e44ca727ff4ae010a8c62fc566f41',1,'shaka::media::mp4::VTTCueBox::BoxType()']]], diff --git a/docs/search/functions_10.js b/docs/search/functions_10.js index a3ca5d46de..fa353eb08e 100644 --- a/docs/search/functions_10.js +++ b/docs/search/functions_10.js @@ -35,9 +35,9 @@ var searchData= ['settswriterfileopenedfortesting',['SetTsWriterFileOpenedForTesting',['../de/dde/classshaka_1_1media_1_1mp2t_1_1TsSegmenter.html#a34ab9fbaee43115d68be87e4b9e90918',1,'shaka::media::mp2t::TsSegmenter']]], ['signalencrypted',['SignalEncrypted',['../de/d64/classshaka_1_1media_1_1mp2t_1_1TsWriter.html#afc47f61bce7cd4f8f6a6ea0ec2c96d4c',1,'shaka::media::mp2t::TsWriter']]], ['size',['Size',['../d5/d33/classshaka_1_1media_1_1ProducerConsumerQueue.html#a4f2483c665f2693f583e7b467101d844',1,'shaka::media::ProducerConsumerQueue::Size()'],['../d3/d61/classshaka_1_1media_1_1File.html#adffa2c3d12ae0a579704cf1f5b3bf8ab',1,'shaka::media::File::Size()'],['../d9/de6/classshaka_1_1media_1_1LocalFile.html#a4cc3427bb01a0989de7711b2a004a099',1,'shaka::media::LocalFile::Size()'],['../d9/dbd/classshaka_1_1media_1_1MemoryFile.html#ad52955a976c16b910dde372fe33b7b0d',1,'shaka::media::MemoryFile::Size()'],['../d0/d66/classshaka_1_1media_1_1ThreadedIoFile.html#ac8c1f49d9e7ff55b1484129240c065f3',1,'shaka::media::ThreadedIoFile::Size()'],['../d7/d7a/classshaka_1_1media_1_1UdpFile.html#a852424c6982850686f0419e84e222708',1,'shaka::media::UdpFile::Size()'],['../d1/da1/classshaka_1_1media_1_1mp4_1_1BoxBuffer.html#a90fe62338ba20817d27cf4e34949000e',1,'shaka::media::mp4::BoxBuffer::Size()']]], - ['skipbits',['SkipBits',['../d6/da9/classshaka_1_1media_1_1BitReader.html#a5c7e9d8cedb921042076770c8f6033d7',1,'shaka::media::BitReader']]], - ['skipbitsconditional',['SkipBitsConditional',['../d6/da9/classshaka_1_1media_1_1BitReader.html#a83d80cc51b96ca864a44fa169ce9c67a',1,'shaka::media::BitReader']]], - ['skipbytes',['SkipBytes',['../d6/da9/classshaka_1_1media_1_1BitReader.html#afe1b515788b0079fae42dbb43189121a',1,'shaka::media::BitReader::SkipBytes()'],['../d9/d13/classshaka_1_1media_1_1BufferReader.html#a2b15dfcd6ff891a9cb7b76f48d91d15d',1,'shaka::media::BufferReader::SkipBytes()']]], + ['skipbits',['SkipBits',['../d6/da9/classshaka_1_1media_1_1BitReader.html#a4ab20ef220c76072eaecb982aba0541d',1,'shaka::media::BitReader']]], + ['skipbitsconditional',['SkipBitsConditional',['../d6/da9/classshaka_1_1media_1_1BitReader.html#a98bbbbc849a3fadc1a136662174d470e',1,'shaka::media::BitReader']]], + ['skipbytes',['SkipBytes',['../d6/da9/classshaka_1_1media_1_1BitReader.html#a7d349253d5cc8f9aa33f1ca2ea94677c',1,'shaka::media::BitReader::SkipBytes()'],['../d9/d13/classshaka_1_1media_1_1BufferReader.html#a2b15dfcd6ff891a9cb7b76f48d91d15d',1,'shaka::media::BufferReader::SkipBytes()']]], ['start',['Start',['../d8/d5c/classshaka_1_1media_1_1MediaStream.html#af5eca8f2e63e762d52fcc30c5f8c38b0',1,'shaka::media::MediaStream']]], ['startbox',['StartBox',['../d1/dee/classshaka_1_1media_1_1mp4_1_1BoxReader.html#a6bafd9cd95a97c4c1475d1806d602ae2',1,'shaka::media::mp4::BoxReader']]], ['startswithstartcode',['StartsWithStartCode',['../db/d86/classshaka_1_1media_1_1NaluReader.html#a9ed9d56a06f43717cdb7035f86075975',1,'shaka::media::NaluReader']]], diff --git a/docs/search/functions_f.js b/docs/search/functions_f.js index d58f822997..33b3bda2c8 100644 --- a/docs/search/functions_f.js +++ b/docs/search/functions_f.js @@ -3,7 +3,7 @@ var searchData= ['read',['Read',['../d3/d61/classshaka_1_1media_1_1File.html#aed0c0793fd8751330583314a4d3012b9',1,'shaka::media::File::Read()'],['../dd/d7c/classshaka_1_1media_1_1IoCache.html#a3cb864f866af25f0ff92c367946b0945',1,'shaka::media::IoCache::Read()'],['../d9/de6/classshaka_1_1media_1_1LocalFile.html#a65a1abae386202a08deb5bfa8aeef7c1',1,'shaka::media::LocalFile::Read()'],['../d9/dbd/classshaka_1_1media_1_1MemoryFile.html#aac5f63ba0bb136eac2260a034edc10cf',1,'shaka::media::MemoryFile::Read()'],['../d0/d66/classshaka_1_1media_1_1ThreadedIoFile.html#a5bd05e37779441004cd7ba0c33de1ad6',1,'shaka::media::ThreadedIoFile::Read()'],['../d7/d7a/classshaka_1_1media_1_1UdpFile.html#a9e6387d6c23e6cfd7a91ed432fe3e81c',1,'shaka::media::UdpFile::Read()']]], ['read1',['Read1',['../d9/d13/classshaka_1_1media_1_1BufferReader.html#a65b65ad5a5ebc9d66182c38ec9876c05',1,'shaka::media::BufferReader']]], ['readallchildren',['ReadAllChildren',['../d1/dee/classshaka_1_1media_1_1mp4_1_1BoxReader.html#a8b5c7d5a487fb3063eae1495aa3a7566',1,'shaka::media::mp4::BoxReader']]], - ['readbits',['ReadBits',['../d6/da9/classshaka_1_1media_1_1BitReader.html#ad72778b38786be93fa55aa983501010d',1,'shaka::media::BitReader']]], + ['readbits',['ReadBits',['../d6/da9/classshaka_1_1media_1_1BitReader.html#ae40382c4ca4a57b3bb3531a337aebbe4',1,'shaka::media::BitReader']]], ['readbox',['ReadBox',['../d1/dee/classshaka_1_1media_1_1mp4_1_1BoxReader.html#ae348922875d67128d2af6d88b692e205',1,'shaka::media::mp4::BoxReader']]], ['readchild',['ReadChild',['../d1/dee/classshaka_1_1media_1_1mp4_1_1BoxReader.html#a68defcd9be85bbd5cbded3bee86aa03a',1,'shaka::media::mp4::BoxReader']]], ['readchildren',['ReadChildren',['../d1/dee/classshaka_1_1media_1_1mp4_1_1BoxReader.html#aedb3a49da398833cda1caa1ad01a364a',1,'shaka::media::mp4::BoxReader']]],