From d3c45aa09de973715f37ce9350b7139925b06529 Mon Sep 17 00:00:00 2001 From: Widevine Buildbot Date: Thu, 23 Mar 2017 23:54:18 +0000 Subject: [PATCH] Generate SDK documents for commit 277c5b23c01c8992e26ad12e11266043dead5c12 --- 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 | 69 +- docs/d0/d0e/muxer__options_8h_source.html | 2 +- ...media_1_1mp2t_1_1TsSectionPmt-members.html | 2 +- .../structshaka_1_1media_1_1VPxFrameInfo.html | 2 +- ...tshaka_1_1media_1_1StreamData-members.html | 2 +- ...H265ByteToUnitStreamConverter-members.html | 15 +- ..._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 | 4 +- 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 | 279 +- ...shaka_1_1media_1_1SegmentInfo-members.html | 2 +- ...nfo__dump__muxer__listener_8cc_source.html | 4 +- ...ia_1_1mp4_1_1MediaInformation-members.html | 2 +- .../structshaka_1_1media_1_1StreamData.html | 2 +- ...haka_1_1media_1_1AudioTimestampHelper.html | 2 +- .../d4e/libcrypto__threading_8cc_source.html | 2 +- ...a_1_1media_1_1mp2t_1_1TsMuxer-members.html | 2 +- ...dia_1_1MpdNotifyMuxerListener-members.html | 2 +- ...classshaka_1_1media_1_1ThreadedIoFile.html | 2 +- ..._1_1StreamDescriptorCompareFn-members.html | 2 +- ...a_1_1media_1_1mp4_1_1VideoSampleEntry.html | 2 +- ...haka_1_1media_1_1mp4_1_1SampleToGroup.html | 2 +- docs/d0/d7d/decryptor__source_8h_source.html | 2 +- ...a_1_1media_1_1AesCbcEncryptor-members.html | 2 +- ...classshaka_1_1media_1_1Status-members.html | 2 +- .../d0/d93/classshaka_1_1media_1_1Status.html | 2 +- .../structshaka_1_1media_1_1mp4_1_1Movie.html | 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 +- ...1_1media_1_1EncryptionHandler-members.html | 2 +- ...classshaka_1_1media_1_1FixedKeySource.html | 2 +- docs/d0/dae/file__util_8h_source.html | 2 +- ...webm_1_1MultiSegmentSegmenter-members.html | 2 +- .../structshaka_1_1media_1_1SegmentInfo.html | 2 +- ...edia_1_1mp4_1_1VTTEmptyCueBox-members.html | 2 +- ..._1xml_1_1AdaptationSetXmlNode-members.html | 2 +- .../classshaka_1_1media_1_1RsaPrivateKey.html | 2 +- ...aka_1_1media_1_1mp4_1_1CueSettingsBox.html | 4 +- ...media_1_1ProtectionSystemSpecificInfo.html | 2 +- .../dd6/webm__crypto__helpers_8cc_source.html | 2 +- ...lassshaka_1_1media_1_1AesCtrEncryptor.html | 2 +- .../dee/segmenter__test__base_8h_source.html | 6 +- 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 | 183 +- ...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 +- ...media_1_1MediaHandlerTestBase-members.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 | 2 +- docs/d1/d72/language__utils_8cc_source.html | 2 +- .../d74/mp2t__media__parser_8cc_source.html | 2 +- ..._1media_1_1H265VideoSliceHeaderParser.html | 2 +- .../d7d/webm__video__client_8cc_source.html | 133 +- ...ia_1_1H265ReferencePictureSet-members.html | 2 +- docs/d1/d82/adts__constants_8h_source.html | 2 +- ..._1_1media_1_1WebMParserClient-members.html | 2 +- .../d8e/webm__audio__client_8cc_source.html | 2 +- docs/d1/d8f/retired__flags_8h_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 +- ..._1media_1_1PlayReadyKeySource-members.html | 2 +- docs/d1/dc2/h26x__bit__reader_8h_source.html | 2 +- .../dd5/classshaka_1_1media_1_1Cluster.html | 2 +- ...dia_1_1mp4_1_1DataInformation-members.html | 2 +- ..._1_1media_1_1EncryptionConfig-members.html | 2 +- ...a_1_1media_1_1VideoStreamInfo-members.html | 61 +- ...position__offset__iterator_8cc_source.html | 2 +- ...sshaka_1_1media_1_1KeyFetcher-members.html | 2 +- ...sshaka_1_1xml_1_1AdaptationSetXmlNode.html | 2 +- ...rencePictureListModifications-members.html | 2 +- ..._1_1media_1_1ProgressListener-members.html | 2 +- ...assshaka_1_1media_1_1mp4_1_1BoxReader.html | 2 +- ...tshaka_1_1media_1_1mp4_1_1SampleTable.html | 2 +- docs/d1/df0/aes__encryptor_8h_source.html | 2 +- docs/d1/df3/structshaka_1_1MpdOptions.html | 2 +- docs/d1/df5/nalu__reader_8cc_source.html | 2 +- ...ia_1_1mp4_1_1VideoMediaHeader-members.html | 2 +- docs/d2/d02/timestamp_8h_source.html | 2 +- ...assshaka_1_1media_1_1SeekHead-members.html | 2 +- .../d0f/classshaka_1_1MpdBuilder-members.html | 2 +- ...aka_1_1media_1_1wvm_1_1PrevSampleData.html | 2 +- ...aka_1_1media_1_1MuxerListener-members.html | 2 +- docs/d2/d17/ts__section__pat_8cc_source.html | 2 +- .../d2/d23/threaded__io__file_8cc_source.html | 2 +- docs/d2/d24/packager__util_8h_source.html | 2 +- docs/d2/d30/tracks__builder_8cc_source.html | 2 +- ...ideo__slice__header__parser_8h_source.html | 2 +- ...1_1media_1_1WidevineKeySource-members.html | 2 +- ...1_1mp4_1_1TrackFragmentHeader-members.html | 2 +- ...rogram__map__table__writer_8cc_source.html | 2 +- ...o__byte__stream__converter_8cc_source.html | 2 +- docs/d2/d4d/file_8h_source.html | 2 +- .../d4f/structshaka_1_1Element-members.html | 2 +- ...classshaka_1_1MockMpdNotifier-members.html | 2 +- ...ructshaka_1_1media_1_1H264SliceHeader.html | 2 +- ...ssshaka_1_1media_1_1KeySource-members.html | 2 +- ...assshaka_1_1SimpleMpdNotifier-members.html | 2 +- ...a_1_1H264ModificationOfPicNum-members.html | 2 +- .../d62/simple__mpd__notifier_8h_source.html | 2 +- ...haka_1_1media_1_1mp4_1_1Movie-members.html | 2 +- ...sshaka_1_1media_1_1AesCryptor-members.html | 2 +- docs/d2/d6f/classBandwidthEstimator.html | 2 +- ...ctshaka_1_1media_1_1mp4_1_1SchemeInfo.html | 2 +- ...ssshaka_1_1DashIopMpdNotifier-members.html | 2 +- .../d7b/simple__mpd__notifier_8cc_source.html | 2 +- ...ac__audio__specific__config_8h_source.html | 2 +- ...haka_1_1media_1_1mp4_1_1CuePayloadBox.html | 4 +- ...ls__notify__muxer__listener_8h_source.html | 4 +- ...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 | 2 +- ...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 +- ...media__handler__test__base_8cc_source.html | 21 +- .../structshaka_1_1MpdOptions-members.html | 2 +- ...program__map__table__writer_8h_source.html | 2 +- ...a_1_1media_1_1mp4_1_1EditList-members.html | 2 +- ...a_1_1media_1_1ChunkingOptions-members.html | 2 +- ...edia_1_1webm_1_1MultiSegmentSegmenter.html | 2 +- docs/d2/dd6/mkv__writer_8h_source.html | 2 +- ...a_1_1media_1_1ChunkingHandler-members.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 +- docs/d2/de9/media__handler_8cc_source.html | 2 +- .../de9/mock__muxer__listener_8h_source.html | 4 +- docs/d2/deb/es__parser_8h_source.html | 2 +- ...media_1_1mp2t_1_1TsSectionPes-members.html | 2 +- .../pes__packet__generator_8cc_source.html | 6 +- ...a_1_1SegmentTestBase_1_1ClusterParser.html | 2 +- ...ssshaka_1_1media_1_1MkvWriter-members.html | 2 +- docs/d2/dfd/adts__header_8h_source.html | 2 +- ..._1_1media_1_1mp4_1_1BoxReader-members.html | 2 +- ..._1_1mp4_1_1SyncSampleIterator-members.html | 2 +- .../classshaka_1_1media_1_1MediaParser.html | 2 +- ...sshaka_1_1media_1_1mp2t_1_1AdtsHeader.html | 2 +- ..._1media_1_1LibcryptoThreading-members.html | 2 +- ...media_1_1mp2t_1_1TsSectionPat-members.html | 2 +- docs/d3/d19/io__cache_8h_source.html | 2 +- ...deo__slice__header__parser_8cc_source.html | 4 +- ...uctshaka_1_1media_1_1mp4_1_1PrivFrame.html | 2 +- ...sshaka_1_1media_1_1LibcryptoThreading.html | 2 +- docs/d3/d56/decrypt__config_8cc_source.html | 2 +- docs/d3/d61/classshaka_1_1media_1_1File.html | 2 +- .../d3/d62/continuity__counter_8h_source.html | 2 +- docs/d3/d62/rcheck_8h_source.html | 2 +- ...1media_1_1mp4_1_1DataEntryUrl-members.html | 2 +- ...lassshaka_1_1media_1_1WebMVideoClient.html | 2 +- .../d3/d6b/fixed__key__source_8cc_source.html | 2 +- ...lassshaka_1_1media_1_1mp2t_1_1TsMuxer.html | 2 +- docs/d3/d72/fixed__key__source_8h_source.html | 2 +- ...ssshaka_1_1media_1_1webm_1_1WebMMuxer.html | 2 +- .../classshaka_1_1media_1_1AesEncryptor.html | 2 +- ...a_1_1mp4_1_1ChunkInfoIterator-members.html | 2 +- docs/d3/d76/muxer__flags_8h_source.html | 2 +- ...dia_1_1mp4_1_1TextSampleEntry-members.html | 2 +- ...haka_1_1media_1_1RsaPublicKey-members.html | 2 +- ...lassshaka_1_1media_1_1WebMAudioClient.html | 2 +- docs/d3/d80/muxer__util_8h_source.html | 2 +- ...haka_1_1media_1_1mp4_1_1SampleToChunk.html | 2 +- .../structshaka_1_1media_1_1FileCloser.html | 2 +- .../d3/d8d/webm__audio__client_8h_source.html | 2 +- docs/d3/d90/ec3__audio__util_8cc_source.html | 2 +- .../classshaka_1_1media_1_1H264Parser.html | 2 +- docs/d3/d93/media__handler_8h_source.html | 2 +- .../d9c/encryption__handler_8cc_source.html | 719 +++-- docs/d3/da0/ec3__audio__util_8h_source.html | 2 +- ...dia_1_1webm_1_1SingleSegmentSegmenter.html | 2 +- ...ctshaka_1_1media_1_1mp4_1_1SchemeType.html | 2 +- .../structshaka_1_1media_1_1mp4_1_1ID3v2.html | 2 +- ...1_1media_1_1EncryptionOptions-members.html | 2 +- ..._1_1media_1_1WebMWebVTTParser-members.html | 2 +- .../structshaka_1_1media_1_1mp4_1_1Track.html | 4 +- docs/d3/db6/webm__parser_8cc_source.html | 2 +- docs/d3/dbc/seek__head_8cc_source.html | 2 +- docs/d3/dbe/demuxer_8cc_source.html | 2 +- ...ructshaka_1_1media_1_1mp4_1_1EditList.html | 2 +- ...a_1_1media_1_1mp2t_1_1Mp2tMediaParser.html | 2 +- docs/d3/dd0/classshaka_1_1MpdNotifier.html | 2 +- ...tshaka_1_1media_1_1mp4_1_1SegmentType.html | 2 +- docs/d3/de4/seek__head_8h_source.html | 2 +- ..._1_1media_1_1mp4_1_1BoxBuffer-members.html | 2 +- ...mp4_1_1SampleGroupDescription-members.html | 2 +- docs/d3/df1/box__reader_8cc_source.html | 2 +- ...ssshaka_1_1media_1_1AesPatternCryptor.html | 2 +- ...2multi__segment__segmenter_8cc_source.html | 2 +- ...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 +- ...lassshaka_1_1media_1_1ChunkingHandler.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/d83/cue_8cc_source.html | 2 +- docs/d4/d87/nalu__reader_8h_source.html | 2 +- ...dia_1_1HEVCDecoderConfigurationRecord.html | 16 +- ...tshaka_1_1media_1_1mp4_1_1EC3Specific.html | 4 +- .../classshaka_1_1media_1_1UdpOptions.html | 2 +- ...haka_1_1media_1_1MediaHandlerTestBase.html | 2 +- ...sshaka_1_1media_1_1PlayReadyKeySource.html | 2 +- .../da7/segmenter__test__base_8cc_source.html | 10 +- ...a_1_1media_1_1mp4_1_1SampleEncryption.html | 2 +- ...a_1_1mp4_1_1CompactSampleSize-members.html | 2 +- docs/d4/db2/cluster__builder_8h_source.html | 2 +- .../db4/classshaka_1_1MpdNotifierFactory.html | 2 +- ...tshaka_1_1media_1_1mp4_1_1MediaHeader.html | 4 +- ...a_1_1mp2t_1_1AacProgramMapTableWriter.html | 2 +- docs/d4/dd3/bit__reader_8h_source.html | 2 +- ...ka_1_1media_1_1mp4_1_1FullBox-members.html | 2 +- ...sshaka_1_1media_1_1MemoryFile-members.html | 2 +- docs/d4/dde/webvtt__util_8h_source.html | 2 +- ...haka_1_1media_1_1mp4_1_1DataReference.html | 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 +- .../webvtt__sample__converter_8cc_source.html | 2 +- ...shaka_1_1media_1_1mp4_1_1SegmentIndex.html | 4 +- ...tshaka_1_1media_1_1mp4_1_1AC3Specific.html | 4 +- .../dfd/structshaka_1_1media_1_1H265Sps.html | 2 +- .../dff/webm__media__parser_8cc_source.html | 2 +- ...ructshaka_1_1media_1_1mp4_1_1FileType.html | 2 +- ...aka_1_1media_1_1mp4_1_1OriginalFormat.html | 2 +- ...ructshaka_1_1media_1_1mp4_1_1CueIDBox.html | 4 +- ...ka_1_1media_1_1WebMInfoParser-members.html | 2 +- ..._1_1mp4_1_1ElementaryStreamDescriptor.html | 4 +- .../classshaka_1_1media_1_1ESDescriptor.html | 2 +- .../producer__consumer__queue_8h_source.html | 2 +- docs/d5/d1a/ts__section_8h_source.html | 2 +- ...ia_1_1mp4_1_1TrackRunIterator-members.html | 2 +- docs/d5/d27/key__fetcher_8cc_source.html | 2 +- ...aka_1_1media_1_1ProducerConsumerQueue.html | 2 +- ...haka_1_1media_1_1mp4_1_1Media-members.html | 2 +- ...2single__segment__segmenter_8h_source.html | 2 +- ...media_1_1mp2t_1_1TsSectionPsi-members.html | 2 +- docs/d5/d4d/box_8cc_source.html | 2 +- docs/d5/d52/ts__section__pes_8h_source.html | 2 +- ...ampleAuxiliaryInformationSize-members.html | 2 +- ...esentationStateChangeListener-members.html | 2 +- ...ssshaka_1_1MockRepresentation-members.html | 2 +- .../d5c/continuity__counter_8cc_source.html | 2 +- ...haka_1_1media_1_1mp2t_1_1EsParserH265.html | 2 +- docs/d5/d63/network__util_8cc_source.html | 2 +- ...media_1_1NalUnitToByteStreamConverter.html | 2 +- docs/d5/d6f/vlog__flags_8cc_source.html | 2 +- ...der__configuration__record_8cc_source.html | 2 +- docs/d5/d7b/box__definitions_8h_source.html | 2 +- ...a_1_1media_1_1mp4_1_1MediaInformation.html | 4 +- .../d89/widevine__key__source_8cc_source.html | 2 +- ..._1_1media_1_1mp4_1_1CompositionOffset.html | 2 +- .../d8f/webm__cluster__parser_8cc_source.html | 2 +- docs/d5/d91/es__parser__adts_8cc_source.html | 2 +- ...media_1_1mp4_1_1EditListEntry-members.html | 2 +- docs/d5/d98/encryptor_8cc_source.html | 2 +- ...odec__configuration__record_8h_source.html | 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 | 8 +- ...haka_1_1media_1_1mp2t_1_1EsParserH264.html | 2 +- docs/d5/dba/ts__packet_8cc_source.html | 2 +- .../dc1/webm__webvtt__parser_8cc_source.html | 2 +- ...media_1_1mp4_1_1TrackFragment-members.html | 2 +- ...4_1_1SampleAuxiliaryInformationOffset.html | 2 +- docs/d5/dcf/rsa__key_8h_source.html | 2 +- docs/d5/dda/ts__section__psi_8h_source.html | 2 +- docs/d5/de0/bit__reader_8cc_source.html | 2 +- ..._1media_1_1mp2t_1_1PesPacketGenerator.html | 2 +- ...assshaka_1_1media_1_1WebMParserClient.html | 2 +- ...der__configuration__record_8cc_source.html | 2 +- ...mp4_1_1WebVTTConfigurationBox-members.html | 2 +- docs/d5/def/ts__section__pmt_8h_source.html | 2 +- ...ka_1_1media_1_1HlsNotifyMuxerListener.html | 2 +- ...shaka_1_1media_1_1MediaParser-members.html | 2 +- docs/d5/dfc/file_8cc_source.html | 2 +- ...ady__key__encryption__flags_8h_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 | 4 +- docs/d6/d17/es__parser__h264_8cc_source.html | 41 +- ...tshaka_1_1media_1_1mp4_1_1MovieHeader.html | 2 +- .../ts__packet__writer__util_8cc_source.html | 2 +- ...1_1media_1_1VideoStreamInfoParameters.html | 2 +- .../d2e/mpd__notifier__util_8cc_source.html | 2 +- ...ssshaka_1_1media_1_1TextTrack-members.html | 2 +- .../webm__content__encodings_8cc_source.html | 2 +- .../d3b/chunk__info__iterator_8cc_source.html | 2 +- ...ssshaka_1_1media_1_1EncryptionHandler.html | 2 +- ...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/d6a/cue_8h_source.html | 2 +- docs/d6/d6c/h26x__bit__reader_8cc_source.html | 2 +- docs/d6/d6e/ts__section__pes_8cc_source.html | 2 +- docs/d6/d71/scoped__xml__ptr_8h_source.html | 2 +- .../dash__iop__mpd__notifier_8h_source.html | 2 +- ...1media_1_1mp4_1_1VTTAdditionalTextBox.html | 4 +- .../d7b/webm__tracks__parser_8h_source.html | 2 +- ..._1media_1_1mp4_1_1AC3Specific-members.html | 2 +- ...ctshaka_1_1media_1_1EncryptionOptions.html | 2 +- .../d86/bandwidth__estimator_8cc_source.html | 2 +- docs/d6/d8a/vp9__parser_8cc_source.html | 2 +- ..._1_1RepresentationBaseXmlNode-members.html | 2 +- docs/d6/d9b/h264__parser_8h_source.html | 2 +- docs/d6/d9f/hls__flags_8cc_source.html | 2 +- docs/d6/da0/ts__section__pat_8h_source.html | 2 +- docs/d6/da3/mpd__builder_8h_source.html | 2 +- ...AVCDecoderConfigurationRecord-members.html | 2 +- ...iceHeader_1_1LongTermPicsInfo-members.html | 2 +- .../da9/classshaka_1_1media_1_1BitReader.html | 2 +- ...uctshaka_1_1media_1_1mp4_1_1VTTCueBox.html | 4 +- ...lassshaka_1_1media_1_1VideoStreamInfo.html | 29 +- ..._1_1VideoStreamInfoParameters-members.html | 2 +- ...sParserH26x_1_1VideoSliceInfo-members.html | 2 +- ...media_1_1mp2t_1_1EsParserH26x-members.html | 2 +- docs/d6/dc8/mkv__writer_8cc_source.html | 2 +- ...media_1_1mp4_1_1SampleEncryptionEntry.html | 2 +- ...ssshaka_1_1media_1_1VP9Parser-members.html | 2 +- ...ia_1_1mp4_1_1SegmentReference-members.html | 2 +- ...haka_1_1media_1_1mp2t_1_1EsParserAdts.html | 2 +- ...tructshaka_1_1media_1_1H264SEIMessage.html | 2 +- ...1_1media_1_1H265VuiParameters-members.html | 2 +- ...1_1media_1_1mp4_1_1CueTimeBox-members.html | 2 +- ...haka_1_1media_1_1VPxFrameInfo-members.html | 2 +- docs/d6/de8/local__file_8cc_source.html | 2 +- docs/d6/de8/network__util_8h_source.html | 2 +- docs/d6/de9/ts__segmenter_8cc_source.html | 4 +- docs/d6/ded/ts__packet_8h_source.html | 2 +- .../sync__sample__iterator_8cc_source.html | 2 +- docs/d6/dff/classshaka_1_1media_1_1Nalu.html | 2 +- ...edia_1_1mp4_1_1SampleGroupDescription.html | 2 +- ...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 +- ...uctshaka_1_1media_1_1EncryptionConfig.html | 2 +- ...a_1_1media_1_1ContentEncoding-members.html | 2 +- ...on__system__specific__info_8cc_source.html | 2 +- ...ctshaka_1_1media_1_1mp4_1_1SampleSize.html | 2 +- ...ia_1_1mp4_1_1SampleEncryption-members.html | 2 +- ...ka_1_1media_1_1WebMListParser-members.html | 2 +- ...H26xByteToUnitStreamConverter-members.html | 10 +- .../structshaka_1_1media_1_1PeriodInfo.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 +- docs/d7/d79/chunking__handler_8h_source.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 | 154 +- ..._1H265SliceHeader_1_1LongTermPicsInfo.html | 2 +- docs/d7/d9d/progress__listener_8h_source.html | 2 +- .../da4/track__run__iterator_8h_source.html | 2 +- ...uctshaka_1_1media_1_1mp4_1_1MediaData.html | 4 +- docs/d7/db0/mpd__writer_8h_source.html | 2 +- ...media_1_1mp4_1_1SampleToChunk-members.html | 2 +- ...ka_1_1media_1_1mp4_1_1TextSampleEntry.html | 4 +- docs/d7/dc6/byte__queue_8h_source.html | 2 +- .../d7/dd0/mpd__notifier__util_8h_source.html | 2 +- docs/d7/dd4/request__signer_8h_source.html | 2 +- ...aka_1_1media_1_1mp4_1_1MP4MediaParser.html | 10 +- 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 | 48 +- docs/d7/dee/mpd__generator_8cc_source.html | 2 +- .../d7/def/mp4__media__parser_8cc_source.html | 1449 +++++----- docs/d7/df9/byte__queue_8cc_source.html | 2 +- ...edia_1_1H264ByteToUnitStreamConverter.html | 72 +- ...1_1media_1_1WebMClusterParser-members.html | 2 +- ..._1_1media_1_1mp2t_1_1TsWriter-members.html | 2 +- ..._1media_1_1mp4_1_1MovieHeader-members.html | 2 +- docs/d8/d0d/media__sample_8cc_source.html | 2 +- ...shaka_1_1media_1_1mp4_1_1DecodingTime.html | 2 +- ..._1_1media_1_1mp4_1_1PrivFrame-members.html | 2 +- ...ssshaka_1_1media_1_1BitReader-members.html | 2 +- .../d14/classshaka_1_1media_1_1VP8Parser.html | 2 +- ...haka_1_1media_1_1MuxerOptions-members.html | 2 +- .../d19/bandwidth__estimator_8h_source.html | 2 +- ...edia_1_1mp4_1_1WebVTTConfigurationBox.html | 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 +- ...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 | 2 +- .../d9c/webm__tracks__parser_8cc_source.html | 2 +- docs/d8/d9f/udp__file_8h_source.html | 2 +- ...a_1_1media_1_1DecryptorSource-members.html | 2 +- ...1_1media_1_1mp4_1_1SampleSize-members.html | 2 +- ...sshaka_1_1media_1_1NaluReader-members.html | 2 +- docs/d8/daa/stream__info_8h_source.html | 189 +- 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 | 4 +- ...1media_1_1mp4_1_1DecodingTime-members.html | 2 +- ...1media_1_1mp4_1_1TrackExtends-members.html | 2 +- ...1_1media_1_1mp2t_1_1ContinuityCounter.html | 2 +- ...1mp4_1_1CencSampleEncryptionInfoEntry.html | 2 +- .../de1/classshaka_1_1SimpleMpdNotifier.html | 2 +- .../de6/webm__crypto__helpers_8h_source.html | 2 +- ..._1_1media_1_1mp2t_1_1EsParser-members.html | 2 +- docs/d8/deb/retired__flags_8cc_source.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 +- docs/d9/d12/chunking__handler_8cc_source.html | 2 +- .../classshaka_1_1media_1_1BufferReader.html | 2 +- ...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/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 | 4 +- ...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 +- ...haka_1_1media_1_1mp2t_1_1EsParserH26x.html | 2 +- docs/da/d23/ts__muxer_8h_source.html | 2 +- docs/da/d24/h265__parser_8h_source.html | 2 +- docs/da/d2a/text__stream__info_8h_source.html | 4 +- ...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 | 37 +- ..._1_1media_1_1mp4_1_1CompactSampleSize.html | 2 +- .../d5c/widevine__key__source_8h_source.html | 2 +- ...1_1H264VideoSliceHeaderParser-members.html | 2 +- ...mp4_1_1SingleSegmentSegmenter-members.html | 2 +- ..._1_1H264ProgramMapTableWriter-members.html | 2 +- ...edia_1_1mp4_1_1AudioRollRecoveryEntry.html | 2 +- ...xed__key__encryption__flags_8h_source.html | 2 +- ...1media_1_1mp2t_1_1TsSegmenter-members.html | 2 +- docs/da/d88/mp4__muxer_8cc_source.html | 807 +++--- ...a_1_1media_1_1WebMMediaParser-members.html | 2 +- docs/da/d8e/container__names_8cc_source.html | 2 +- ...a_1_1mp4_1_1CompositionOffset-members.html | 2 +- ..._1media_1_1mp4_1_1EC3Specific-members.html | 2 +- ...ssshaka_1_1MpdNotifierFactory-members.html | 2 +- ...1_1media_1_1MockMuxerListener-members.html | 2 +- ...assshaka_1_1media_1_1mp2t_1_1TsPacket.html | 2 +- .../classshaka_1_1Representation-members.html | 2 +- ...a_1_1media_1_1mp4_1_1HandlerReference.html | 2 +- docs/da/dc3/status_8cc_source.html | 2 +- ...tshaka_1_1media_1_1mp4_1_1TrackHeader.html | 2 +- docs/da/dcb/es__descriptor_8h_source.html | 2 +- .../playready__key__source_8cc_source.html | 2 +- .../structshaka_1_1media_1_1mp4_1_1Edit.html | 2 +- docs/da/dd0/webm__info__parser_8h_source.html | 2 +- docs/da/dd1/fragmenter_8h_source.html | 2 +- ..._1_1media_1_1mp2t_1_1TsPacket-members.html | 2 +- ...H264ByteToUnitStreamConverter-members.html | 15 +- ...ia_1_1mp2t_1_1Mp2tMediaParser-members.html | 2 +- ...media_1_1H264SEIRecoveryPoint-members.html | 2 +- ...ssshaka_1_1media_1_1WidevineKeySource.html | 2 +- ...a_1_1mp4_1_1SampleDescription-members.html | 2 +- .../da/de2/mock__mpd__builder_8cc_source.html | 2 +- ...ssshaka_1_1media_1_1WebMClusterParser.html | 2 +- ...1_1media_1_1mp4_1_1SchemeType-members.html | 2 +- ...a_1_1media_1_1AudioStreamInfo-members.html | 2 +- ...1media_1_1mp4_1_1ProtectionSchemeInfo.html | 2 +- ..._1media_1_1H264VideoSliceHeaderParser.html | 2 +- docs/da/df4/aes__decryptor_8cc_source.html | 2 +- ..._1_1media_1_1mp4_1_1SampleDescription.html | 2 +- ...1_1media_1_1AesPatternCryptor-members.html | 2 +- .../classshaka_1_1media_1_1MediaHandler.html | 2 +- ...ructshaka_1_1media_1_1ChunkingOptions.html | 2 +- ...ructshaka_1_1media_1_1H265SliceHeader.html | 2 +- .../webvtt__sample__converter_8h_source.html | 2 +- ...1_1media_1_1mp4_1_1CodecConfiguration.html | 2 +- ...sshaka_1_1media_1_1H265Parser-members.html | 2 +- ...media_1_1H264WeightingFactors-members.html | 2 +- ..._1media_1_1mp4_1_1SubtitleMediaHeader.html | 4 +- ...lassshaka_1_1media_1_1mp4_1_1MP4Muxer.html | 2 +- ...to__unit__stream__converter_8h_source.html | 95 +- .../d31/track__run__iterator_8cc_source.html | 2 +- ...1_1mp2t_1_1PesPacketGenerator-members.html | 2 +- ...dia_1_1VideoSliceHeaderParser-members.html | 2 +- ...pd__notify__muxer__listener_8h_source.html | 4 +- .../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 +- .../media__handler__test__base_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/d66/udp__file_8cc_source.html | 2 +- docs/db/d71/http__key__fetcher_8h_source.html | 2 +- ...EVCDecoderConfigurationRecord-members.html | 4 +- ...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 | 8 +- ...classshaka_1_1media_1_1ClusterBuilder.html | 2 +- ...ssshaka_1_1media_1_1mp4_1_1Fragmenter.html | 2 +- ...a_1_1media_1_1mp4_1_1ChunkLargeOffset.html | 2 +- docs/db/d96/wvm__media__parser_8h_source.html | 6 +- .../da4/classBandwidthEstimator-members.html | 2 +- docs/db/da6/memory__file_8h_source.html | 2 +- ...edia_1_1WebVttSampleConverter-members.html | 2 +- ...classshaka_1_1media_1_1TextStreamInfo.html | 2 +- ...classshaka_1_1media_1_1WebMInfoParser.html | 2 +- ...ia_1_1mp4_1_1SoundMediaHeader-members.html | 2 +- ...CencSampleEncryptionInfoEntry-members.html | 2 +- ...haka_1_1media_1_1OnMediaEndParameters.html | 2 +- ...ka_1_1media_1_1mp4_1_1TrackEncryption.html | 2 +- .../dcb/classshaka_1_1media_1_1VPxParser.html | 2 +- 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 | 72 +- docs/db/dfb/mpd__utils_8cc_source.html | 2 +- ...d__notify__muxer__listener_8cc_source.html | 4 +- ..._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 | 6 +- ..._1mp4_1_1ProtectionSchemeInfo-members.html | 2 +- docs/dc/d19/box_8h_source.html | 2 +- .../dash__iop__mpd__notifier_8cc_source.html | 2 +- ...ed__key__encryption__flags_8cc_source.html | 2 +- .../d3c/webm__cluster__parser_8h_source.html | 2 +- docs/dc/d3f/key__source_8h_source.html | 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 | 227 +- .../decoding__time__iterator_8h_source.html | 2 +- docs/dc/d53/webm_2segmenter_8cc_source.html | 10 +- ...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/de1/structshaka_1_1SegmentInfo.html | 2 +- ...1_1media_1_1mp4_1_1Fragmenter-members.html | 2 +- ...to__unit__stream__converter_8h_source.html | 46 +- docs/dc/dec/ts__section__pmt_8cc_source.html | 2 +- .../classshaka_1_1media_1_1ClosureThread.html | 2 +- ...ssshaka_1_1media_1_1WebVttMediaParser.html | 2 +- ...ebm_1_1SingleSegmentSegmenter-members.html | 2 +- ...ia_1_1mp4_1_1TrackFragmentRun-members.html | 2 +- docs/dc/df8/closure__thread_8h_source.html | 2 +- docs/dd/d05/encryption__config_8h_source.html | 2 +- ...tshaka_1_1media_1_1mp4_1_1ChunkOffset.html | 2 +- docs/dd/d11/mpd__builder_8cc_source.html | 2 +- docs/dd/d12/mpd__writer_8cc_source.html | 2 +- ...mp4_1_1SampleAuxiliaryInformationSize.html | 2 +- .../d17/classshaka_1_1media_1_1Demuxer.html | 2 +- docs/dd/d18/es__parser__adts_8h_source.html | 2 +- .../d19/video__stream__info_8cc_source.html | 142 +- .../dd/d30/wvm__media__parser_8cc_source.html | 296 +- docs/dd/d3b/mp4_2segmenter_8h_source.html | 2 +- ...ctshaka_1_1media_1_1mp4_1_1SyncSample.html | 2 +- docs/dd/d42/encryptor_8h_source.html | 2 +- docs/dd/d46/webm__parser_8h_source.html | 2 +- ...media_1_1mp4_1_1MovieFragment-members.html | 2 +- ...m_1_1DemuxStreamIdMediaSample-members.html | 2 +- ...widevine__encryption__flags_8h_source.html | 2 +- ...media_1_1mp2t_1_1EsParserH265-members.html | 2 +- ...1_1media_1_1mp4_1_1SchemeInfo-members.html | 2 +- ...1_1media_1_1mp4_1_1SyncSample-members.html | 2 +- docs/dd/d65/vp8__parser_8h_source.html | 2 +- ...o__unit__stream__converter_8cc_source.html | 139 +- ...1_1H265VideoSliceHeaderParser-members.html | 2 +- ...a_1_1media_1_1mp4_1_1PixelAspectRatio.html | 2 +- .../classshaka_1_1media_1_1MuxerListener.html | 2 +- .../d7c/classshaka_1_1media_1_1IoCache.html | 2 +- docs/dd/d80/media__sample_8h_source.html | 2 +- docs/dd/d87/memory__file_8cc_source.html | 2 +- .../d88/pes__packet__generator_8h_source.html | 4 +- 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 | 4 +- 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 +- .../dd/dbc/encryption__handler_8h_source.html | 4 +- ...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 +- ...haka_1_1media_1_1MediaHandler-members.html | 2 +- docs/dd/dee/box__definitions_8cc_source.html | 2548 +++++++++-------- ..._2multi__segment__segmenter_8h_source.html | 2 +- ...a_1_1media_1_1mp4_1_1TrackFragmentRun.html | 4 +- ...ructshaka_1_1media_1_1mp4_1_1Metadata.html | 2 +- docs/de/d0f/local__file_8h_source.html | 2 +- docs/de/d12/container__names_8h_source.html | 2 +- docs/de/d13/ts__writer_8cc_source.html | 6 +- ...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 | 144 +- docs/de/d3c/macros_8h_source.html | 2 +- docs/de/d3e/buffer__reader_8h_source.html | 2 +- ...sshaka_1_1media_1_1H264Parser-members.html | 2 +- ...1_1media_1_1mp2t_1_1PesPacket-members.html | 2 +- .../classshaka_1_1media_1_1DecryptConfig.html | 2 +- .../muxer__listener__internal_8h_source.html | 2 +- docs/de/d52/classshaka_1_1Representation.html | 2 +- ...a_1_1media_1_1mp4_1_1Language-members.html | 2 +- docs/de/d5b/adts__header_8cc_source.html | 2 +- docs/de/d5c/mpd__flags_8h_source.html | 2 +- ...mp2t_1_1ProgramMapTableWriter-members.html | 2 +- ...assshaka_1_1media_1_1mp2t_1_1TsWriter.html | 2 +- ..._1_1mp4_1_1SampleToGroupEntry-members.html | 2 +- docs/de/d6e/language__utils_8h_source.html | 2 +- .../de/d70/http__key__fetcher_8cc_source.html | 2 +- ...content__encodings__client_8cc_source.html | 2 +- docs/de/d7b/mp4__media__parser_8h_source.html | 10 +- ...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 | 4 +- .../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 | 191 +- .../classshaka_1_1media_1_1Muxer-members.html | 2 +- ...aka_1_1media_1_1WebVttSampleConverter.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 | 83 +- ...1media_1_1mp4_1_1DecodingTimeToSample.html | 2 +- ...a_1_1media_1_1mp4_1_1TrackRunIterator.html | 2 +- docs/de/dfa/muxer__listener_8h_source.html | 4 +- ...shaka_1_1media_1_1mp4_1_1OpusSpecific.html | 4 +- docs/de/dfd/stream__info_8cc_source.html | 2 +- .../d00/playready__key__source_8h_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 | 4 +- .../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 +- docs/df/d60/classshaka_1_1MockMpdBuilder.html | 2 +- ...mp4_1_1AudioRollRecoveryEntry-members.html | 2 +- .../classshaka_1_1media_1_1KeyFetcher.html | 2 +- .../classshaka_1_1MockMpdBuilder-members.html | 2 +- ...1media_1_1mp4_1_1OpusSpecific-members.html | 2 +- ...dia_1_1mp4_1_1CompositionTimeToSample.html | 2 +- ...haka_1_1media_1_1mp4_1_1TrackFragment.html | 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 | 4 +- ..._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 +- .../structshaka_1_1media_1_1MediaEvent.html | 2 +- docs/df/ddc/webm_2segmenter_8h_source.html | 6 +- 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 +- ...dy__key__encryption__flags_8cc_source.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_b0da65f92a9541ef8f345654d4bd88fd.html | 2 +- .../dir_ba94ecd487194410fd7c4b70c530929c.html | 2 +- .../dir_c6ada2450b25ab5438a4dba6c9b890af.html | 2 +- .../dir_d422163b96683743ed3963d4aac17747.html | 2 +- .../dir_eeaeb49ac3913fcfb450d3ce9cc0141b.html | 2 +- .../dir_f7dcbe7025bbacfc4b9a7dff6ad41d72.html | 2 +- docs/files.html | 2 +- docs/functions.html | 2 +- docs/functions_b.html | 2 +- docs/functions_c.html | 2 +- docs/functions_d.html | 2 +- docs/functions_e.html | 2 +- docs/functions_enum.html | 2 +- docs/functions_eval.html | 2 +- docs/functions_f.html | 2 +- docs/functions_func.html | 2 +- docs/functions_func_b.html | 2 +- docs/functions_func_c.html | 2 +- docs/functions_func_d.html | 2 +- docs/functions_func_e.html | 2 +- docs/functions_func_f.html | 2 +- docs/functions_func_g.html | 4 +- docs/functions_func_h.html | 13 +- docs/functions_func_i.html | 2 +- docs/functions_func_l.html | 2 +- docs/functions_func_m.html | 2 +- docs/functions_func_n.html | 2 +- docs/functions_func_o.html | 2 +- docs/functions_func_p.html | 2 +- docs/functions_func_r.html | 2 +- docs/functions_func_s.html | 2 +- docs/functions_func_t.html | 2 +- docs/functions_func_u.html | 2 +- docs/functions_func_v.html | 4 +- docs/functions_func_w.html | 2 +- docs/functions_func_x.html | 2 +- docs/functions_func_~.html | 2 +- docs/functions_g.html | 4 +- docs/functions_h.html | 13 +- 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 | 2 +- docs/functions_s.html | 2 +- docs/functions_t.html | 2 +- docs/functions_type.html | 2 +- docs/functions_u.html | 2 +- docs/functions_v.html | 4 +- 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_13.js | 2 +- docs/search/all_6.js | 2 +- docs/search/all_7.js | 5 +- docs/search/functions_12.js | 2 +- docs/search/functions_6.js | 2 +- docs/search/functions_7.js | 3 + 984 files changed, 5419 insertions(+), 5037 deletions(-) diff --git a/docs/annotated.html b/docs/annotated.html index 82a6358150..602168e002 100644 --- a/docs/annotated.html +++ b/docs/annotated.html @@ -382,7 +382,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/classes.html b/docs/classes.html index e9b8c4e2db..3c26d4dc40 100644 --- a/docs/classes.html +++ b/docs/classes.html @@ -180,7 +180,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 0050a979ff..0580e5c579 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 b2094e47b3..6805f33938 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 38fcec100d..05133c33c0 100644 --- a/docs/d0/d06/mpd__flags_8cc_source.html +++ b/docs/d0/d06/mpd__flags_8cc_source.html @@ -152,7 +152,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 9ac6d24ecf..72f711e31c 100644 --- a/docs/d0/d0e/classshaka_1_1media_1_1HttpKeyFetcher-members.html +++ b/docs/d0/d0e/classshaka_1_1media_1_1HttpKeyFetcher-members.html @@ -106,7 +106,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 78d57f326d..22dbb12822 100644 --- a/docs/d0/d0e/hevc__decoder__configuration__record_8h_source.html +++ b/docs/d0/d0e/hevc__decoder__configuration__record_8h_source.html @@ -101,44 +101,45 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
12 #include <vector>
13 
14 #include "packager/base/macros.h"
-
15 #include "packager/media/base/video_stream_info.h"
-
16 #include "packager/media/codecs/decoder_configuration_record.h"
-
17 
-
18 namespace shaka {
-
19 namespace media {
-
20 
-
22 class HEVCDecoderConfigurationRecord : public DecoderConfigurationRecord {
-
23  public:
-
24  HEVCDecoderConfigurationRecord();
-
25  ~HEVCDecoderConfigurationRecord() override;
-
26 
-
28  std::string GetCodecString(Codec codec) const;
-
29 
-
30  private:
-
31  bool ParseInternal() override;
-
32 
-
33  uint8_t version_;
-
34  uint8_t general_profile_space_;
-
35  bool general_tier_flag_;
-
36  uint8_t general_profile_idc_;
-
37  uint32_t general_profile_compatibility_flags_;
-
38  std::vector<uint8_t> general_constraint_indicator_flags_;
-
39  uint8_t general_level_idc_;
-
40 
-
41  DISALLOW_COPY_AND_ASSIGN(HEVCDecoderConfigurationRecord);
-
42 };
-
43 
-
44 } // namespace media
-
45 } // namespace shaka
-
46 
-
47 #endif // MEDIA_CODECS_HEVC_DECODER_CONFIGURATION_RECORD_H_
+
15 #include "packager/media/base/fourccs.h"
+
16 #include "packager/media/base/video_stream_info.h"
+
17 #include "packager/media/codecs/decoder_configuration_record.h"
+
18 
+
19 namespace shaka {
+
20 namespace media {
+
21 
+
23 class HEVCDecoderConfigurationRecord : public DecoderConfigurationRecord {
+
24  public:
+
25  HEVCDecoderConfigurationRecord();
+
26  ~HEVCDecoderConfigurationRecord() override;
+
27 
+
29  std::string GetCodecString(FourCC codec_fourcc) const;
+
30 
+
31  private:
+
32  bool ParseInternal() override;
+
33 
+
34  uint8_t version_;
+
35  uint8_t general_profile_space_;
+
36  bool general_tier_flag_;
+
37  uint8_t general_profile_idc_;
+
38  uint32_t general_profile_compatibility_flags_;
+
39  std::vector<uint8_t> general_constraint_indicator_flags_;
+
40  uint8_t general_level_idc_;
+
41 
+
42  DISALLOW_COPY_AND_ASSIGN(HEVCDecoderConfigurationRecord);
+
43 };
+
44 
+
45 } // namespace media
+
46 } // namespace shaka
+
47 
+
48 #endif // MEDIA_CODECS_HEVC_DECODER_CONFIGURATION_RECORD_H_
+
std::string GetCodecString(FourCC codec_fourcc) const
-
Class for parsing HEVC decoder configuration record.
-
std::string GetCodecString(Codec codec) const
+
Class for parsing HEVC decoder configuration record.
diff --git a/docs/d0/d0e/muxer__options_8h_source.html b/docs/d0/d0e/muxer__options_8h_source.html index 7674a0a8d5..bca93a245c 100644 --- a/docs/d0/d0e/muxer__options_8h_source.html +++ b/docs/d0/d0e/muxer__options_8h_source.html @@ -137,7 +137,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 37a9ab38fe..b8f6c65124 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 d4787d4069..e13f9d5e18 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/d17/structshaka_1_1media_1_1StreamData-members.html b/docs/d0/d17/structshaka_1_1media_1_1StreamData-members.html index 09ece22049..c18f83f8b3 100644 --- a/docs/d0/d17/structshaka_1_1media_1_1StreamData-members.html +++ b/docs/d0/d17/structshaka_1_1media_1_1StreamData-members.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); 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 9558a23c11..437c28db54 100644 --- a/docs/d0/d1e/classshaka_1_1media_1_1H265ByteToUnitStreamConverter-members.html +++ b/docs/d0/d1e/classshaka_1_1media_1_1H265ByteToUnitStreamConverter-members.html @@ -95,15 +95,20 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); - - + + + + - - + + + + +
ConvertByteStreamToNalUnitStream(const uint8_t *input_frame, size_t input_frame_size, std::vector< uint8_t > *output_frame)shaka::media::H26xByteToUnitStreamConverter
GetDecoderConfigurationRecord(std::vector< uint8_t > *decoder_config) const overrideshaka::media::H265ByteToUnitStreamConvertervirtual
H265ByteToUnitStreamConverter() (defined in shaka::media::H265ByteToUnitStreamConverter)shaka::media::H265ByteToUnitStreamConverter
H26xByteToUnitStreamConverter(Nalu::CodecType type) (defined in shaka::media::H26xByteToUnitStreamConverter)shaka::media::H26xByteToUnitStreamConverterexplicit
H265ByteToUnitStreamConverter()shaka::media::H265ByteToUnitStreamConverter
H265ByteToUnitStreamConverter(H26xStreamFormat stream_format)shaka::media::H265ByteToUnitStreamConverterexplicit
H26xByteToUnitStreamConverter(Nalu::CodecType type)shaka::media::H26xByteToUnitStreamConverterexplicit
H26xByteToUnitStreamConverter(Nalu::CodecType type, H26xStreamFormat stream_format)shaka::media::H26xByteToUnitStreamConverter
kUnitStreamNaluLengthSize (defined in shaka::media::H26xByteToUnitStreamConverter)shaka::media::H26xByteToUnitStreamConverterstatic
~H265ByteToUnitStreamConverter() override (defined in shaka::media::H265ByteToUnitStreamConverter)shaka::media::H265ByteToUnitStreamConverter
~H26xByteToUnitStreamConverter() (defined in shaka::media::H26xByteToUnitStreamConverter)shaka::media::H26xByteToUnitStreamConvertervirtual
stream_format() const (defined in shaka::media::H26xByteToUnitStreamConverter)shaka::media::H26xByteToUnitStreamConverterinline
strip_parameter_set_nalus() const (defined in shaka::media::H26xByteToUnitStreamConverter)shaka::media::H26xByteToUnitStreamConverterinlineprotected
WarnIfNotMatch(int nalu_type, const uint8_t *nalu_ptr, size_t nalu_size, const std::vector< uint8_t > &vector) (defined in shaka::media::H26xByteToUnitStreamConverter)shaka::media::H26xByteToUnitStreamConverterprotected
~H265ByteToUnitStreamConverter() override (defined in shaka::media::H265ByteToUnitStreamConverter)shaka::media::H265ByteToUnitStreamConverter
~H26xByteToUnitStreamConverter() (defined in shaka::media::H26xByteToUnitStreamConverter)shaka::media::H26xByteToUnitStreamConvertervirtual
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 7afa654dae..b6f8338dd2 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 a43aa605c6..2b1d8a6fca 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 c87aef19f7..ae6cd1fc99 100644 --- a/docs/d0/d27/structshaka_1_1media_1_1MuxerOptions.html +++ b/docs/d0/d27/structshaka_1_1media_1_1MuxerOptions.html @@ -206,7 +206,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 58a43a7793..f81a424aca 100644 --- a/docs/d0/d30/mock__mpd__notifier_8h_source.html +++ b/docs/d0/d30/mock__mpd__notifier_8h_source.html @@ -149,7 +149,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 f78fecc009..b72af5e993 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 72082553e6..61e68aaa36 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 9542cb5458..6b40b264b6 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 0b9b872051..bce379f9b6 100644 --- a/docs/d0/d3a/hls__notify__muxer__listener_8cc_source.html +++ b/docs/d0/d3a/hls__notify__muxer__listener_8cc_source.html @@ -221,7 +221,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
132 } // namespace media
133 } // namespace shaka
void OnMediaStart(const MuxerOptions &muxer_options, const StreamInfo &stream_info, uint32_t time_scale, ContainerType container_type) override
-
Abstract class holds stream information.
Definition: stream_info.h:60
+
Abstract class holds stream information.
Definition: stream_info.h:57
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) override
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
@@ -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 ba5797c171..1b274bd689 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 37830d73cd..02b2df578c 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 9496b8999b..6c0af9e45d 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 4d99c785d0..ea39a1a8e2 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 d2327afe64..1d0689d5db 100644 --- a/docs/d0/d46/fourccs_8h_source.html +++ b/docs/d0/d46/fourccs_8h_source.html @@ -111,148 +111,149 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
22  FOURCC_ac_3 = 0x61632d33, // "ac-3"
23  FOURCC_apad = 0x61706164,
24  FOURCC_avc1 = 0x61766331,
-
25  FOURCC_avcC = 0x61766343,
-
26  FOURCC_bloc = 0x626C6F63,
-
27  FOURCC_cbc1 = 0x63626331,
-
28  // This is a fake protection scheme fourcc code to indicate Apple Sample AES.
-
29  FOURCC_cbca = 0x63626361,
-
30  FOURCC_cbcs = 0x63626373,
-
31  FOURCC_cenc = 0x63656e63,
-
32  FOURCC_cens = 0x63656e73,
-
33  FOURCC_co64 = 0x636f3634,
-
34  FOURCC_ctim = 0x6374696d,
-
35  FOURCC_ctts = 0x63747473,
-
36  FOURCC_dOps = 0x644f7073,
-
37  FOURCC_dac3 = 0x64616333,
-
38  FOURCC_dash = 0x64617368,
-
39  FOURCC_ddts = 0x64647473,
-
40  FOURCC_dec3 = 0x64656333,
-
41  FOURCC_dinf = 0x64696e66,
-
42  FOURCC_dref = 0x64726566,
-
43  FOURCC_dtsc = 0x64747363,
-
44  FOURCC_dtse = 0x64747365,
-
45  FOURCC_dtsh = 0x64747368,
-
46  FOURCC_dtsl = 0x6474736c,
-
47  FOURCC_dtsm = 0x6474732d, // "dts-"
-
48  FOURCC_dtsp = 0x6474732b, // "dts+"
-
49  FOURCC_ec_3 = 0x65632d33, // "ec-3"
-
50  FOURCC_edts = 0x65647473,
-
51  FOURCC_elst = 0x656c7374,
-
52  FOURCC_enca = 0x656e6361,
-
53  FOURCC_encv = 0x656e6376,
-
54  FOURCC_esds = 0x65736473,
-
55  FOURCC_free = 0x66726565,
-
56  FOURCC_frma = 0x66726d61,
-
57  FOURCC_ftyp = 0x66747970,
-
58  FOURCC_hdlr = 0x68646c72,
-
59  FOURCC_hev1 = 0x68657631,
-
60  FOURCC_hint = 0x68696e74,
-
61  FOURCC_hvc1 = 0x68766331,
-
62  FOURCC_hvcC = 0x68766343,
-
63  FOURCC_iden = 0x6964656e,
-
64  FOURCC_iso6 = 0x69736f36,
-
65  FOURCC_iods = 0x696f6473,
-
66  FOURCC_mdat = 0x6d646174,
-
67  FOURCC_mdhd = 0x6d646864,
-
68  FOURCC_mdia = 0x6d646961,
-
69  FOURCC_meco = 0x6d65636f,
-
70  FOURCC_mehd = 0x6d656864,
-
71  FOURCC_meta = 0x6d657461,
-
72  FOURCC_mfhd = 0x6d666864,
-
73  FOURCC_mfra = 0x6d667261,
-
74  FOURCC_minf = 0x6d696e66,
-
75  FOURCC_moof = 0x6d6f6f66,
-
76  FOURCC_moov = 0x6d6f6f76,
-
77  FOURCC_mp41 = 0x6d703431,
-
78  FOURCC_mp4a = 0x6d703461,
-
79  FOURCC_mp4v = 0x6d703476,
-
80  FOURCC_mvex = 0x6d766578,
-
81  FOURCC_mvhd = 0x6d766864,
-
82  FOURCC_pasp = 0x70617370,
-
83  FOURCC_payl = 0x7061796c,
-
84  FOURCC_pdin = 0x7064696e,
-
85  FOURCC_prft = 0x70726674,
-
86  FOURCC_pssh = 0x70737368,
-
87  FOURCC_roll = 0x726f6c6c,
-
88  FOURCC_saio = 0x7361696f,
-
89  FOURCC_saiz = 0x7361697a,
-
90  FOURCC_sbgp = 0x73626770,
-
91  FOURCC_schi = 0x73636869,
-
92  FOURCC_schm = 0x7363686d,
-
93  FOURCC_sdtp = 0x73647470,
-
94  FOURCC_seig = 0x73656967,
-
95  FOURCC_senc = 0x73656e63,
-
96  FOURCC_sgpd = 0x73677064,
-
97  FOURCC_sidx = 0x73696478,
-
98  FOURCC_sinf = 0x73696e66,
-
99  FOURCC_skip = 0x736b6970,
-
100  FOURCC_smhd = 0x736d6864,
-
101  FOURCC_soun = 0x736f756e,
-
102  FOURCC_ssix = 0x73736978,
-
103  FOURCC_stbl = 0x7374626c,
-
104  FOURCC_stco = 0x7374636f,
-
105  FOURCC_sthd = 0x73746864,
-
106  FOURCC_stsc = 0x73747363,
-
107  FOURCC_stsd = 0x73747364,
-
108  FOURCC_stss = 0x73747373,
-
109  FOURCC_stsz = 0x7374737a,
-
110  FOURCC_sttg = 0x73747467,
-
111  FOURCC_stts = 0x73747473,
-
112  FOURCC_styp = 0x73747970,
-
113  FOURCC_stz2 = 0x73747a32,
-
114  FOURCC_subt = 0x73756274,
-
115  FOURCC_tenc = 0x74656e63,
-
116  FOURCC_text = 0x74657874,
-
117  FOURCC_tfdt = 0x74666474,
-
118  FOURCC_tfhd = 0x74666864,
-
119  FOURCC_tkhd = 0x746b6864,
-
120  FOURCC_traf = 0x74726166,
-
121  FOURCC_trak = 0x7472616b,
-
122  FOURCC_trex = 0x74726578,
-
123  FOURCC_trun = 0x7472756e,
-
124  FOURCC_udta = 0x75647461,
-
125  FOURCC_url = 0x75726c20, // "url "
-
126  FOURCC_urn = 0x75726e20, // "urn "
-
127  FOURCC_uuid = 0x75756964,
-
128  FOURCC_vide = 0x76696465,
-
129  FOURCC_vlab = 0x766c6162,
-
130  FOURCC_vmhd = 0x766d6864,
-
131  FOURCC_vp08 = 0x76703038,
-
132  FOURCC_vp09 = 0x76703039,
-
133  FOURCC_vp10 = 0x76703130,
-
134  FOURCC_vpcC = 0x76706343,
-
135  FOURCC_vsid = 0x76736964,
-
136  FOURCC_vttC = 0x76747443,
-
137  FOURCC_vtta = 0x76747461,
-
138  FOURCC_vttc = 0x76747463,
-
139  FOURCC_vtte = 0x76747465,
-
140  FOURCC_wide = 0x77696465,
-
141  FOURCC_wvtt = 0x77767474,
-
142  FOURCC_zaac = 0x7A616163,
-
143  FOURCC_zach = 0x7A616368,
-
144  FOURCC_zacp = 0x7A616370,
-
145 };
-
146 
-
147 const FourCC kAppleSampleAesProtectionScheme = FOURCC_cbca;
-
148 
-
149 const inline std::string FourCCToString(FourCC fourcc) {
-
150  char buf[5];
-
151  buf[0] = (fourcc >> 24) & 0xff;
-
152  buf[1] = (fourcc >> 16) & 0xff;
-
153  buf[2] = (fourcc >> 8) & 0xff;
-
154  buf[3] = (fourcc) & 0xff;
-
155  buf[4] = 0;
-
156  return std::string(buf);
-
157 }
-
158 
-
159 } // namespace media
-
160 } // namespace shaka
-
161 
-
162 #endif // PACKAGER_MEDIA_BASE_FOURCCS_H_
+
25  FOURCC_avc3 = 0x61766333,
+
26  FOURCC_avcC = 0x61766343,
+
27  FOURCC_bloc = 0x626C6F63,
+
28  FOURCC_cbc1 = 0x63626331,
+
29  // This is a fake protection scheme fourcc code to indicate Apple Sample AES.
+
30  FOURCC_cbca = 0x63626361,
+
31  FOURCC_cbcs = 0x63626373,
+
32  FOURCC_cenc = 0x63656e63,
+
33  FOURCC_cens = 0x63656e73,
+
34  FOURCC_co64 = 0x636f3634,
+
35  FOURCC_ctim = 0x6374696d,
+
36  FOURCC_ctts = 0x63747473,
+
37  FOURCC_dOps = 0x644f7073,
+
38  FOURCC_dac3 = 0x64616333,
+
39  FOURCC_dash = 0x64617368,
+
40  FOURCC_ddts = 0x64647473,
+
41  FOURCC_dec3 = 0x64656333,
+
42  FOURCC_dinf = 0x64696e66,
+
43  FOURCC_dref = 0x64726566,
+
44  FOURCC_dtsc = 0x64747363,
+
45  FOURCC_dtse = 0x64747365,
+
46  FOURCC_dtsh = 0x64747368,
+
47  FOURCC_dtsl = 0x6474736c,
+
48  FOURCC_dtsm = 0x6474732d, // "dts-"
+
49  FOURCC_dtsp = 0x6474732b, // "dts+"
+
50  FOURCC_ec_3 = 0x65632d33, // "ec-3"
+
51  FOURCC_edts = 0x65647473,
+
52  FOURCC_elst = 0x656c7374,
+
53  FOURCC_enca = 0x656e6361,
+
54  FOURCC_encv = 0x656e6376,
+
55  FOURCC_esds = 0x65736473,
+
56  FOURCC_free = 0x66726565,
+
57  FOURCC_frma = 0x66726d61,
+
58  FOURCC_ftyp = 0x66747970,
+
59  FOURCC_hdlr = 0x68646c72,
+
60  FOURCC_hev1 = 0x68657631,
+
61  FOURCC_hint = 0x68696e74,
+
62  FOURCC_hvc1 = 0x68766331,
+
63  FOURCC_hvcC = 0x68766343,
+
64  FOURCC_iden = 0x6964656e,
+
65  FOURCC_iso6 = 0x69736f36,
+
66  FOURCC_iods = 0x696f6473,
+
67  FOURCC_mdat = 0x6d646174,
+
68  FOURCC_mdhd = 0x6d646864,
+
69  FOURCC_mdia = 0x6d646961,
+
70  FOURCC_meco = 0x6d65636f,
+
71  FOURCC_mehd = 0x6d656864,
+
72  FOURCC_meta = 0x6d657461,
+
73  FOURCC_mfhd = 0x6d666864,
+
74  FOURCC_mfra = 0x6d667261,
+
75  FOURCC_minf = 0x6d696e66,
+
76  FOURCC_moof = 0x6d6f6f66,
+
77  FOURCC_moov = 0x6d6f6f76,
+
78  FOURCC_mp41 = 0x6d703431,
+
79  FOURCC_mp4a = 0x6d703461,
+
80  FOURCC_mp4v = 0x6d703476,
+
81  FOURCC_mvex = 0x6d766578,
+
82  FOURCC_mvhd = 0x6d766864,
+
83  FOURCC_pasp = 0x70617370,
+
84  FOURCC_payl = 0x7061796c,
+
85  FOURCC_pdin = 0x7064696e,
+
86  FOURCC_prft = 0x70726674,
+
87  FOURCC_pssh = 0x70737368,
+
88  FOURCC_roll = 0x726f6c6c,
+
89  FOURCC_saio = 0x7361696f,
+
90  FOURCC_saiz = 0x7361697a,
+
91  FOURCC_sbgp = 0x73626770,
+
92  FOURCC_schi = 0x73636869,
+
93  FOURCC_schm = 0x7363686d,
+
94  FOURCC_sdtp = 0x73647470,
+
95  FOURCC_seig = 0x73656967,
+
96  FOURCC_senc = 0x73656e63,
+
97  FOURCC_sgpd = 0x73677064,
+
98  FOURCC_sidx = 0x73696478,
+
99  FOURCC_sinf = 0x73696e66,
+
100  FOURCC_skip = 0x736b6970,
+
101  FOURCC_smhd = 0x736d6864,
+
102  FOURCC_soun = 0x736f756e,
+
103  FOURCC_ssix = 0x73736978,
+
104  FOURCC_stbl = 0x7374626c,
+
105  FOURCC_stco = 0x7374636f,
+
106  FOURCC_sthd = 0x73746864,
+
107  FOURCC_stsc = 0x73747363,
+
108  FOURCC_stsd = 0x73747364,
+
109  FOURCC_stss = 0x73747373,
+
110  FOURCC_stsz = 0x7374737a,
+
111  FOURCC_sttg = 0x73747467,
+
112  FOURCC_stts = 0x73747473,
+
113  FOURCC_styp = 0x73747970,
+
114  FOURCC_stz2 = 0x73747a32,
+
115  FOURCC_subt = 0x73756274,
+
116  FOURCC_tenc = 0x74656e63,
+
117  FOURCC_text = 0x74657874,
+
118  FOURCC_tfdt = 0x74666474,
+
119  FOURCC_tfhd = 0x74666864,
+
120  FOURCC_tkhd = 0x746b6864,
+
121  FOURCC_traf = 0x74726166,
+
122  FOURCC_trak = 0x7472616b,
+
123  FOURCC_trex = 0x74726578,
+
124  FOURCC_trun = 0x7472756e,
+
125  FOURCC_udta = 0x75647461,
+
126  FOURCC_url = 0x75726c20, // "url "
+
127  FOURCC_urn = 0x75726e20, // "urn "
+
128  FOURCC_uuid = 0x75756964,
+
129  FOURCC_vide = 0x76696465,
+
130  FOURCC_vlab = 0x766c6162,
+
131  FOURCC_vmhd = 0x766d6864,
+
132  FOURCC_vp08 = 0x76703038,
+
133  FOURCC_vp09 = 0x76703039,
+
134  FOURCC_vp10 = 0x76703130,
+
135  FOURCC_vpcC = 0x76706343,
+
136  FOURCC_vsid = 0x76736964,
+
137  FOURCC_vttC = 0x76747443,
+
138  FOURCC_vtta = 0x76747461,
+
139  FOURCC_vttc = 0x76747463,
+
140  FOURCC_vtte = 0x76747465,
+
141  FOURCC_wide = 0x77696465,
+
142  FOURCC_wvtt = 0x77767474,
+
143  FOURCC_zaac = 0x7A616163,
+
144  FOURCC_zach = 0x7A616368,
+
145  FOURCC_zacp = 0x7A616370,
+
146 };
+
147 
+
148 const FourCC kAppleSampleAesProtectionScheme = FOURCC_cbca;
+
149 
+
150 const inline std::string FourCCToString(FourCC fourcc) {
+
151  char buf[5];
+
152  buf[0] = (fourcc >> 24) & 0xff;
+
153  buf[1] = (fourcc >> 16) & 0xff;
+
154  buf[2] = (fourcc >> 8) & 0xff;
+
155  buf[3] = (fourcc) & 0xff;
+
156  buf[4] = 0;
+
157  return std::string(buf);
+
158 }
+
159 
+
160 } // namespace media
+
161 } // namespace shaka
+
162 
+
163 #endif // PACKAGER_MEDIA_BASE_FOURCCS_H_
diff --git a/docs/d0/d48/structshaka_1_1media_1_1SegmentInfo-members.html b/docs/d0/d48/structshaka_1_1media_1_1SegmentInfo-members.html index 4809f62258..77ee5095ae 100644 --- a/docs/d0/d48/structshaka_1_1media_1_1SegmentInfo-members.html +++ b/docs/d0/d48/structshaka_1_1media_1_1SegmentInfo-members.html @@ -101,7 +101,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 a2739d9a7e..80d2b04440 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 @@ -221,7 +221,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
132 } // namespace media
133 } // namespace shaka
virtual bool Open()=0
Internal open. Should not be used directly.
-
Abstract class holds stream information.
Definition: stream_info.h:60
+
Abstract class holds stream information.
Definition: stream_info.h:57
void OnSampleDurationReady(uint32_t sample_duration) override
virtual bool Close()=0
virtual int64_t Write(const void *buffer, uint64_t length)=0
@@ -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 c321209f9b..561c12f149 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/d4c/structshaka_1_1media_1_1StreamData.html b/docs/d0/d4c/structshaka_1_1media_1_1StreamData.html index 84419addc5..5ef5f840e2 100644 --- a/docs/d0/d4c/structshaka_1_1media_1_1StreamData.html +++ b/docs/d0/d4c/structshaka_1_1media_1_1StreamData.html @@ -127,7 +127,7 @@ std::shared_ptr< diff --git a/docs/d0/d4d/classshaka_1_1media_1_1AudioTimestampHelper.html b/docs/d0/d4d/classshaka_1_1media_1_1AudioTimestampHelper.html index 1eaf6ded24..304e7a4a91 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 dcb043df01..4e3f30296f 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 1f326e62ac..37f8dda08d 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 @@ -130,7 +130,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 3bec8b3794..c9967aa2de 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 e2cb09ed9d..473f4edc15 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 737f01c5f5..de7e4153a8 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 421516d918..025a4ee59d 100644 --- a/docs/d0/d73/structshaka_1_1media_1_1mp4_1_1VideoSampleEntry.html +++ b/docs/d0/d73/structshaka_1_1media_1_1mp4_1_1VideoSampleEntry.html @@ -197,7 +197,7 @@ Additional Inherited Members diff --git a/docs/d0/d7c/structshaka_1_1media_1_1mp4_1_1SampleToGroup.html b/docs/d0/d7c/structshaka_1_1media_1_1mp4_1_1SampleToGroup.html index db80791f7f..42632f1ae2 100644 --- a/docs/d0/d7c/structshaka_1_1media_1_1mp4_1_1SampleToGroup.html +++ b/docs/d0/d7c/structshaka_1_1media_1_1mp4_1_1SampleToGroup.html @@ -188,7 +188,7 @@ Additional Inherited Members diff --git a/docs/d0/d7d/decryptor__source_8h_source.html b/docs/d0/d7d/decryptor__source_8h_source.html index 69d133bc92..ec799c40da 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 99837ee2d0..5615c8046a 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 9956853710..d4ad836494 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 43fc8afd7f..f0625ebd78 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 be9af55659..0cf4f81284 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 2214 of file box_definitions.cc.

+

Definition at line 2216 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 7c648ca518..57bce333ad 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 c82dd9b28d..5beebb85d1 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 0b9305f3d6..bbef4ed2dc 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 1cac2ae8e1..83f6ceb353 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 8ab5ec184f..8160566b5e 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 @@ -261,7 +261,7 @@ void set_progress_target diff --git a/docs/d0/dac/classshaka_1_1media_1_1EncryptionHandler-members.html b/docs/d0/dac/classshaka_1_1media_1_1EncryptionHandler-members.html index 9cfa414fd3..15edc269e2 100644 --- a/docs/d0/dac/classshaka_1_1media_1_1EncryptionHandler-members.html +++ b/docs/d0/dac/classshaka_1_1media_1_1EncryptionHandler-members.html @@ -120,7 +120,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/dac/classshaka_1_1media_1_1FixedKeySource.html b/docs/d0/dac/classshaka_1_1media_1_1FixedKeySource.html index b5467d31bf..659f817fba 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 bf1b1f04e5..7719f5cd5c 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 08e7c83f76..3836888b31 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/dc0/structshaka_1_1media_1_1SegmentInfo.html b/docs/d0/dc0/structshaka_1_1media_1_1SegmentInfo.html index 22aebe70c8..6b3aa7e8c7 100644 --- a/docs/d0/dc0/structshaka_1_1media_1_1SegmentInfo.html +++ b/docs/d0/dc0/structshaka_1_1media_1_1SegmentInfo.html @@ -121,7 +121,7 @@ std::shared_ptr< 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 2622f3be32..546a7c361f 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 990c89bf92..cbc1a426ad 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 c1058932e6..725db1da62 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 b49126bfb7..ffdd0a3dda 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 2660 of file box_definitions.cc.

+

Definition at line 2662 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 b4aaeffe5b..87fe76732c 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 f5f20439c9..144a5740ca 100644 --- a/docs/d0/dd6/webm__crypto__helpers_8cc_source.html +++ b/docs/d0/dd6/webm__crypto__helpers_8cc_source.html @@ -205,7 +205,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/dd8/classshaka_1_1media_1_1AesCtrEncryptor.html b/docs/d0/dd8/classshaka_1_1media_1_1AesCtrEncryptor.html index 251260557b..a955c3ed79 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 f92a145214..b784d71fc7 100644 --- a/docs/d0/dee/segmenter__test__base_8h_source.html +++ b/docs/d0/dee/segmenter__test__base_8h_source.html @@ -194,21 +194,21 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
111 
112 #endif // MEDIA_FORMATS_WEBM_SEGMENTER_TEST_UTILS_H_
-
Abstract class holds stream information.
Definition: stream_info.h:60
+
Abstract class holds stream information.
Definition: stream_info.h:57
VideoStreamInfo * CreateVideoStreamInfo() const
Creates a video stream info object for testing.
void CreateAndInitializeSegmenter(const MuxerOptions &options, StreamInfo *info, std::unique_ptr< webm::Segmenter > *result) const
Creates a Segmenter of the given type and initializes it.
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
std::string OutputFileName() const
Gets the file name of the current output file.
std::shared_ptr< MediaSample > CreateSample(KeyFrameFlag key_frame_flag, uint64_t duration, SideDataFlag side_data_flag)
Creates a new media sample.
MuxerOptions CreateMuxerOptions() const
Creates a Muxer options object for testing.
-
Holds video stream information.
+
Holds video stream information.
std::string TemplateFileName(int number) const
Gets the file name of the given template file.
diff --git a/docs/d0/df3/packager__util_8cc_source.html b/docs/d0/df3/packager__util_8cc_source.html index 16d8956680..226203bfd9 100644 --- a/docs/d0/df3/packager__util_8cc_source.html +++ b/docs/d0/df3/packager__util_8cc_source.html @@ -323,7 +323,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 7252c99373..cc8bc4e2fb 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 b9e8877d59..0bfe3f4f6b 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 69015d74d1..bfa650384e 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 7ee381deab..3a9add7399 100644 --- a/docs/d1/d0b/hevc__decoder__configuration__record_8cc_source.html +++ b/docs/d1/d0b/hevc__decoder__configuration__record_8cc_source.html @@ -148,115 +148,104 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
59  return TrimLeadingZeros(base::HexEncode(bytes, arraysize(bytes)));
60 }
61 
-
62 std::string CodecAsString(Codec codec) {
-
63  switch (codec) {
-
64  case kCodecHEV1:
-
65  return "hev1";
-
66  case kCodecHVC1:
-
67  return "hvc1";
-
68  default:
-
69  LOG(WARNING) << "Unknown codec: " << codec;
-
70  return std::string();
-
71  }
-
72 }
+
62 } // namespace
+
63 
+
64 HEVCDecoderConfigurationRecord::HEVCDecoderConfigurationRecord()
+
65  : version_(0),
+
66  general_profile_space_(0),
+
67  general_tier_flag_(false),
+
68  general_profile_idc_(0),
+
69  general_profile_compatibility_flags_(0),
+
70  general_level_idc_(0) {}
+
71 
+
72 HEVCDecoderConfigurationRecord::~HEVCDecoderConfigurationRecord() {}
73 
-
74 } // namespace
-
75 
-
76 HEVCDecoderConfigurationRecord::HEVCDecoderConfigurationRecord()
-
77  : version_(0),
-
78  general_profile_space_(0),
-
79  general_tier_flag_(false),
-
80  general_profile_idc_(0),
-
81  general_profile_compatibility_flags_(0),
-
82  general_level_idc_(0) {}
-
83 
-
84 HEVCDecoderConfigurationRecord::~HEVCDecoderConfigurationRecord() {}
-
85 
-
86 bool HEVCDecoderConfigurationRecord::ParseInternal() {
-
87  BufferReader reader(data(), data_size());
+
74 bool HEVCDecoderConfigurationRecord::ParseInternal() {
+
75  BufferReader reader(data(), data_size());
+
76 
+
77  uint8_t profile_indication = 0;
+
78  uint8_t length_size_minus_one = 0;
+
79  uint8_t num_of_arrays = 0;
+
80  RCHECK(reader.Read1(&version_) && version_ == 1 &&
+
81  reader.Read1(&profile_indication) &&
+
82  reader.Read4(&general_profile_compatibility_flags_) &&
+
83  reader.ReadToVector(&general_constraint_indicator_flags_, 6) &&
+
84  reader.Read1(&general_level_idc_) &&
+
85  reader.SkipBytes(8) && // Skip uninterested fields.
+
86  reader.Read1(&length_size_minus_one) &&
+
87  reader.Read1(&num_of_arrays));
88 
-
89  uint8_t profile_indication = 0;
-
90  uint8_t length_size_minus_one = 0;
-
91  uint8_t num_of_arrays = 0;
-
92  RCHECK(reader.Read1(&version_) && version_ == 1 &&
-
93  reader.Read1(&profile_indication) &&
-
94  reader.Read4(&general_profile_compatibility_flags_) &&
-
95  reader.ReadToVector(&general_constraint_indicator_flags_, 6) &&
-
96  reader.Read1(&general_level_idc_) &&
-
97  reader.SkipBytes(8) && // Skip uninterested fields.
-
98  reader.Read1(&length_size_minus_one) &&
-
99  reader.Read1(&num_of_arrays));
-
100 
-
101  general_profile_space_ = profile_indication >> 6;
-
102  RCHECK(general_profile_space_ <= 3u);
-
103  general_tier_flag_ = ((profile_indication >> 5) & 1) == 1;
-
104  general_profile_idc_ = profile_indication & 0x1f;
-
105 
-
106  if ((length_size_minus_one & 0x3) == 2) {
-
107  LOG(ERROR) << "Invalid NALU length size.";
-
108  return false;
-
109  }
-
110  set_nalu_length_size((length_size_minus_one & 0x3) + 1);
+
89  general_profile_space_ = profile_indication >> 6;
+
90  RCHECK(general_profile_space_ <= 3u);
+
91  general_tier_flag_ = ((profile_indication >> 5) & 1) == 1;
+
92  general_profile_idc_ = profile_indication & 0x1f;
+
93 
+
94  if ((length_size_minus_one & 0x3) == 2) {
+
95  LOG(ERROR) << "Invalid NALU length size.";
+
96  return false;
+
97  }
+
98  set_nalu_length_size((length_size_minus_one & 0x3) + 1);
+
99 
+
100  for (int i = 0; i < num_of_arrays; i++) {
+
101  uint8_t nal_unit_type;
+
102  uint16_t num_nalus;
+
103  RCHECK(reader.Read1(&nal_unit_type));
+
104  nal_unit_type &= 0x3f;
+
105  RCHECK(reader.Read2(&num_nalus));
+
106  for (int j = 0; j < num_nalus; j++) {
+
107  uint16_t nalu_length;
+
108  RCHECK(reader.Read2(&nalu_length));
+
109  uint64_t nalu_offset = reader.pos();
+
110  RCHECK(reader.SkipBytes(nalu_length));
111 
-
112  for (int i = 0; i < num_of_arrays; i++) {
-
113  uint8_t nal_unit_type;
-
114  uint16_t num_nalus;
-
115  RCHECK(reader.Read1(&nal_unit_type));
-
116  nal_unit_type &= 0x3f;
-
117  RCHECK(reader.Read2(&num_nalus));
-
118  for (int j = 0; j < num_nalus; j++) {
-
119  uint16_t nalu_length;
-
120  RCHECK(reader.Read2(&nalu_length));
-
121  uint64_t nalu_offset = reader.pos();
-
122  RCHECK(reader.SkipBytes(nalu_length));
-
123 
-
124  Nalu nalu;
-
125  RCHECK(nalu.Initialize(Nalu::kH265, data() + nalu_offset, nalu_length));
-
126  RCHECK(nalu.type() == nal_unit_type);
-
127  AddNalu(nalu);
-
128  }
-
129  }
-
130 
-
131  // TODO(kqyang): Parse SPS to get resolutions.
-
132  return true;
-
133 }
+
112  Nalu nalu;
+
113  RCHECK(nalu.Initialize(Nalu::kH265, data() + nalu_offset, nalu_length));
+
114  RCHECK(nalu.type() == nal_unit_type);
+
115  AddNalu(nalu);
+
116  }
+
117  }
+
118 
+
119  // TODO(kqyang): Parse SPS to get resolutions.
+
120  return true;
+
121 }
+
122 
+ +
124  FourCC codec_fourcc) const {
+
125  // ISO/IEC 14496-15:2014 Annex E.
+
126  std::vector<std::string> fields;
+
127  fields.push_back(FourCCToString(codec_fourcc));
+
128  fields.push_back(GeneralProfileSpaceAsString(general_profile_space_) +
+
129  base::IntToString(general_profile_idc_));
+
130  fields.push_back(
+
131  ReverseBitsAndHexEncode(general_profile_compatibility_flags_));
+
132  fields.push_back((general_tier_flag_ ? "H" : "L") +
+
133  base::IntToString(general_level_idc_));
134 
-
135 std::string HEVCDecoderConfigurationRecord::GetCodecString(Codec codec) const {
-
136  // ISO/IEC 14496-15:2014 Annex E.
-
137  std::vector<std::string> fields;
-
138  fields.push_back(CodecAsString(codec));
-
139  fields.push_back(GeneralProfileSpaceAsString(general_profile_space_) +
-
140  base::IntToString(general_profile_idc_));
-
141  fields.push_back(
-
142  ReverseBitsAndHexEncode(general_profile_compatibility_flags_));
-
143  fields.push_back((general_tier_flag_ ? "H" : "L") +
-
144  base::IntToString(general_level_idc_));
-
145 
-
146  // Remove trailing bytes that are zero.
-
147  std::vector<uint8_t> constraints = general_constraint_indicator_flags_;
-
148  size_t size = constraints.size();
-
149  for (; size > 0; --size) {
-
150  if (constraints[size - 1] != 0) break;
-
151  }
-
152  constraints.resize(size);
-
153  for (uint8_t constraint : constraints)
-
154  fields.push_back(TrimLeadingZeros(base::HexEncode(&constraint, 1)));
-
155 
-
156  return base::JoinString(fields, ".");
-
157 }
-
158 
-
159 } // namespace media
-
160 } // namespace shaka
+
135  // Remove trailing bytes that are zero.
+
136  std::vector<uint8_t> constraints = general_constraint_indicator_flags_;
+
137  size_t size = constraints.size();
+
138  for (; size > 0; --size) {
+
139  if (constraints[size - 1] != 0) break;
+
140  }
+
141  constraints.resize(size);
+
142  for (uint8_t constraint : constraints)
+
143  fields.push_back(TrimLeadingZeros(base::HexEncode(&constraint, 1)));
+
144 
+
145  return base::JoinString(fields, ".");
+
146 }
+
147 
+
148 } // namespace media
+
149 } // namespace shaka
+
void AddNalu(const Nalu &nalu)
Adds the given Nalu to the configuration.
void set_nalu_length_size(uint8_t nalu_length_size)
Sets the size of the NAL unit length field.
- 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 e49a79da96..c0c84a0fdd 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 a5329cb172..f9e118b1ee 100644 --- a/docs/d1/d13/status_8h_source.html +++ b/docs/d1/d13/status_8h_source.html @@ -249,7 +249,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 cd2081dff2..a4ece1ecad 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 @@ -282,7 +282,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 015f6aafdc..f21353ed21 100644 --- a/docs/d1/d1d/muxer__flags_8cc_source.html +++ b/docs/d1/d1d/muxer__flags_8cc_source.html @@ -135,7 +135,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 af36b7a0dd..3cb905a603 100644 --- a/docs/d1/d1f/classshaka_1_1media_1_1KeySource.html +++ b/docs/d1/d1f/classshaka_1_1media_1_1KeySource.html @@ -410,7 +410,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 19a6226894..1ba10bca27 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/d25/classshaka_1_1media_1_1MediaHandlerTestBase-members.html b/docs/d1/d25/classshaka_1_1media_1_1MediaHandlerTestBase-members.html index cd7a27c305..5538f6adcb 100644 --- a/docs/d1/d25/classshaka_1_1media_1_1MediaHandlerTestBase-members.html +++ b/docs/d1/d25/classshaka_1_1media_1_1MediaHandlerTestBase-members.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d27/key__fetcher_8h_source.html b/docs/d1/d27/key__fetcher_8h_source.html index 5a08d09b71..80fa9818d9 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 dd5eee8843..d971a2e329 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 7077df1ade..06ce550a3d 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 8c49737c68..f16cd81d55 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 77b99287fc..10d6039f32 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 1c610f226e..5ac79891d0 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 2132ce6758..bc5f2a5304 100644 --- a/docs/d1/d2f/webvtt__media__parser_8cc_source.html +++ b/docs/d1/d2f/webvtt__media__parser_8cc_source.html @@ -483,7 +483,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 083efd2666..2e12b029cb 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 f4415df480..a0487f9eef 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 d49bf54a6d..44c953723d 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 c6f856534a..49c47c808e 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 7be5aa9602..90760c8429 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 faa27ea589..31061fe1b2 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 2186 of file box_definitions.cc.

+

Definition at line 2188 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 e718a7d2f0..c58d3252c9 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 79efd42eb7..201febc34f 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 3fb648dd03..5e8a00581c 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 5e39b2fbd4..5632db81e1 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 8f54e2158b..a49feb2378 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 15ac8dc185..9d5feb912e 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 2283 of file box_definitions.cc.

+

Definition at line 2285 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 2cc16bcfa0..05b50f5ad6 100644 --- a/docs/d1/d70/vp8__parser_8cc_source.html +++ b/docs/d1/d70/vp8__parser_8cc_source.html @@ -293,7 +293,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d72/language__utils_8cc_source.html b/docs/d1/d72/language__utils_8cc_source.html index 8526866041..4bd8fb7535 100644 --- a/docs/d1/d72/language__utils_8cc_source.html +++ b/docs/d1/d72/language__utils_8cc_source.html @@ -231,7 +231,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 2669be5a8f..e8d9b7a6af 100644 --- a/docs/d1/d74/mp2t__media__parser_8cc_source.html +++ b/docs/d1/d74/mp2t__media__parser_8cc_source.html @@ -535,7 +535,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 8710f0727f..82344eed27 100644 --- a/docs/d1/d79/classshaka_1_1media_1_1H265VideoSliceHeaderParser.html +++ b/docs/d1/d79/classshaka_1_1media_1_1H265VideoSliceHeaderParser.html @@ -152,7 +152,7 @@ int64_t  diff --git a/docs/d1/d7d/webm__video__client_8cc_source.html b/docs/d1/d7d/webm__video__client_8cc_source.html index d5a7c5a627..776ccac197 100644 --- a/docs/d1/d7d/webm__video__client_8cc_source.html +++ b/docs/d1/d7d/webm__video__client_8cc_source.html @@ -198,77 +198,78 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
109  sar_y /= gcd;
110 
111  return std::make_shared<VideoStreamInfo>(
-
112  track_num, kWebMTimeScale, 0, video_codec, std::string(),
-
113  codec_private.data(), codec_private.size(), width_after_crop,
-
114  height_after_crop, sar_x, sar_y, 0, 0, std::string(), is_encrypted);
-
115 }
-
116 
-
117 bool WebMVideoClient::OnUInt(int id, int64_t val) {
-
118  int64_t* dst = NULL;
-
119 
-
120  switch (id) {
-
121  case kWebMIdPixelWidth:
-
122  dst = &pixel_width_;
-
123  break;
-
124  case kWebMIdPixelHeight:
-
125  dst = &pixel_height_;
-
126  break;
-
127  case kWebMIdPixelCropTop:
-
128  dst = &crop_top_;
-
129  break;
-
130  case kWebMIdPixelCropBottom:
-
131  dst = &crop_bottom_;
-
132  break;
-
133  case kWebMIdPixelCropLeft:
-
134  dst = &crop_left_;
-
135  break;
-
136  case kWebMIdPixelCropRight:
-
137  dst = &crop_right_;
-
138  break;
-
139  case kWebMIdDisplayWidth:
-
140  dst = &display_width_;
-
141  break;
-
142  case kWebMIdDisplayHeight:
-
143  dst = &display_height_;
-
144  break;
-
145  case kWebMIdDisplayUnit:
-
146  dst = &display_unit_;
-
147  break;
-
148  case kWebMIdAlphaMode:
-
149  dst = &alpha_mode_;
-
150  break;
-
151  default:
-
152  return true;
-
153  }
-
154 
-
155  if (*dst != -1) {
-
156  LOG(ERROR) << "Multiple values for id " << std::hex << id << " specified ("
-
157  << *dst << " and " << val << ")";
-
158  return false;
-
159  }
-
160 
-
161  *dst = val;
-
162  return true;
-
163 }
-
164 
-
165 bool WebMVideoClient::OnBinary(int id, const uint8_t* data, int size) {
-
166  // Accept binary fields we don't care about for now.
-
167  return true;
-
168 }
-
169 
-
170 bool WebMVideoClient::OnFloat(int id, double val) {
-
171  // Accept float fields we don't care about for now.
-
172  return true;
-
173 }
-
174 
-
175 } // namespace media
-
176 } // namespace shaka
+
112  track_num, kWebMTimeScale, 0, video_codec, H26xStreamFormat::kUnSpecified,
+
113  std::string(), codec_private.data(), codec_private.size(),
+
114  width_after_crop, height_after_crop, sar_x, sar_y, 0, 0, std::string(),
+
115  is_encrypted);
+
116 }
+
117 
+
118 bool WebMVideoClient::OnUInt(int id, int64_t val) {
+
119  int64_t* dst = NULL;
+
120 
+
121  switch (id) {
+
122  case kWebMIdPixelWidth:
+
123  dst = &pixel_width_;
+
124  break;
+
125  case kWebMIdPixelHeight:
+
126  dst = &pixel_height_;
+
127  break;
+
128  case kWebMIdPixelCropTop:
+
129  dst = &crop_top_;
+
130  break;
+
131  case kWebMIdPixelCropBottom:
+
132  dst = &crop_bottom_;
+
133  break;
+
134  case kWebMIdPixelCropLeft:
+
135  dst = &crop_left_;
+
136  break;
+
137  case kWebMIdPixelCropRight:
+
138  dst = &crop_right_;
+
139  break;
+
140  case kWebMIdDisplayWidth:
+
141  dst = &display_width_;
+
142  break;
+
143  case kWebMIdDisplayHeight:
+
144  dst = &display_height_;
+
145  break;
+
146  case kWebMIdDisplayUnit:
+
147  dst = &display_unit_;
+
148  break;
+
149  case kWebMIdAlphaMode:
+
150  dst = &alpha_mode_;
+
151  break;
+
152  default:
+
153  return true;
+
154  }
+
155 
+
156  if (*dst != -1) {
+
157  LOG(ERROR) << "Multiple values for id " << std::hex << id << " specified ("
+
158  << *dst << " and " << val << ")";
+
159  return false;
+
160  }
+
161 
+
162  *dst = val;
+
163  return true;
+
164 }
+
165 
+
166 bool WebMVideoClient::OnBinary(int id, const uint8_t* data, int size) {
+
167  // Accept binary fields we don't care about for now.
+
168  return true;
+
169 }
+
170 
+
171 bool WebMVideoClient::OnFloat(int id, double val) {
+
172  // Accept float fields we don't care about for now.
+
173  return true;
+
174 }
+
175 
+
176 } // namespace media
+
177 } // namespace shaka
std::shared_ptr< VideoStreamInfo > GetVideoStreamInfo(int64_t track_num, const std::string &codec_id, const std::vector< uint8_t > &codec_private, bool is_encrypted)
void Reset()
Reset this object's state so it can process a new video track element.
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 6bd8acca72..f66b9560bd 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 f05b27b1d9..6f5807257a 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 f32fca5f49..246edb8f6c 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/d8e/webm__audio__client_8cc_source.html b/docs/d1/d8e/webm__audio__client_8cc_source.html index 8f77bf8712..b3e6fbbc5d 100644 --- a/docs/d1/d8e/webm__audio__client_8cc_source.html +++ b/docs/d1/d8e/webm__audio__client_8cc_source.html @@ -213,7 +213,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d8f/retired__flags_8h_source.html b/docs/d1/d8f/retired__flags_8h_source.html index 0c0320b2f0..f2c3a940af 100644 --- a/docs/d1/d8f/retired__flags_8h_source.html +++ b/docs/d1/d8f/retired__flags_8h_source.html @@ -100,7 +100,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 339d71b105..2bc6106d7d 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 fda55506e9..3562af0e15 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 1534f2f9ee..aebdc009be 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 345f6573d8..9eb48cc2bc 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 60690cf1b5..d2e201a53e 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 605e156dfa..e766b5103a 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 @@ std::shared_ptr< 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 957bd6e40f..c56d75e1d0 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 47eaf8eaec..132e8590b4 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 c5bccbf3a6..0fe921be20 100644 --- a/docs/d1/dad/classshaka_1_1media_1_1Demuxer-members.html +++ b/docs/d1/dad/classshaka_1_1media_1_1Demuxer-members.html @@ -126,7 +126,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 8303453f0d..4ba59142e5 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 1939 of file box_definitions.cc.

+

Definition at line 1941 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 13ad447786..e3bf79678c 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/dbe/classshaka_1_1media_1_1PlayReadyKeySource-members.html b/docs/d1/dbe/classshaka_1_1media_1_1PlayReadyKeySource-members.html index 19b2bb3b58..8d4a39615d 100644 --- a/docs/d1/dbe/classshaka_1_1media_1_1PlayReadyKeySource-members.html +++ b/docs/d1/dbe/classshaka_1_1media_1_1PlayReadyKeySource-members.html @@ -121,7 +121,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 9c69120850..5ca62e5738 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/dd5/classshaka_1_1media_1_1Cluster.html b/docs/d1/dd5/classshaka_1_1media_1_1Cluster.html index c18dd3073b..d5fcf3538e 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 5300f3c2b3..23645a04ea 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/dda/structshaka_1_1media_1_1EncryptionConfig-members.html b/docs/d1/dda/structshaka_1_1media_1_1EncryptionConfig-members.html index b5bb65656d..bbda1cec7f 100644 --- a/docs/d1/dda/structshaka_1_1media_1_1EncryptionConfig-members.html +++ b/docs/d1/dda/structshaka_1_1media_1_1EncryptionConfig-members.html @@ -103,7 +103,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 088517c7d6..08863425d2 100644 --- a/docs/d1/de2/classshaka_1_1media_1_1VideoStreamInfo-members.html +++ b/docs/d1/de2/classshaka_1_1media_1_1VideoStreamInfo-members.html @@ -99,39 +99,40 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); duration() const (defined in shaka::media::StreamInfo)shaka::media::StreamInfoinline eme_init_data() const (defined in shaka::media::VideoStreamInfo)shaka::media::VideoStreamInfoinline encryption_config() const (defined in shaka::media::StreamInfo)shaka::media::StreamInfoinline - height() const (defined in shaka::media::VideoStreamInfo)shaka::media::VideoStreamInfoinline - is_encrypted() const (defined in shaka::media::StreamInfo)shaka::media::StreamInfoinline - IsValidConfig() const overrideshaka::media::VideoStreamInfovirtual - language() const (defined in shaka::media::StreamInfo)shaka::media::StreamInfoinline - nalu_length_size() const (defined in shaka::media::VideoStreamInfo)shaka::media::VideoStreamInfoinline - pixel_height() const shaka::media::VideoStreamInfoinline - pixel_width() const shaka::media::VideoStreamInfoinline - set_codec(Codec codec) (defined in shaka::media::StreamInfo)shaka::media::StreamInfoinline - set_codec_config(const std::vector< uint8_t > &data) (defined in shaka::media::StreamInfo)shaka::media::StreamInfoinline - set_codec_string(const std::string &codec_string) (defined in shaka::media::StreamInfo)shaka::media::StreamInfoinline - set_duration(uint64_t duration) (defined in shaka::media::StreamInfo)shaka::media::StreamInfoinline - set_eme_init_data(const uint8_t *eme_init_data, size_t eme_init_data_size) (defined in shaka::media::VideoStreamInfo)shaka::media::VideoStreamInfoinline - set_encryption_config(const EncryptionConfig &encryption_config) (defined in shaka::media::StreamInfo)shaka::media::StreamInfoinline - set_height(uint32_t height) (defined in shaka::media::VideoStreamInfo)shaka::media::VideoStreamInfoinline - set_is_encrypted(bool is_encrypted) (defined in shaka::media::StreamInfo)shaka::media::StreamInfoinline - set_language(const std::string &language) (defined in shaka::media::StreamInfo)shaka::media::StreamInfoinline - set_pixel_height(uint32_t pixel_height) (defined in shaka::media::VideoStreamInfo)shaka::media::VideoStreamInfoinline - set_pixel_width(uint32_t pixel_width) (defined in shaka::media::VideoStreamInfo)shaka::media::VideoStreamInfoinline - set_width(uint32_t width) (defined in shaka::media::VideoStreamInfo)shaka::media::VideoStreamInfoinline - stream_type() const (defined in shaka::media::StreamInfo)shaka::media::StreamInfoinline - StreamInfo(StreamType stream_type, int track_id, uint32_t time_scale, uint64_t duration, Codec codec, const std::string &codec_string, const uint8_t *codec_config, size_t codec_config_size, const std::string &language, bool is_encrypted) (defined in shaka::media::StreamInfo)shaka::media::StreamInfo - time_scale() const (defined in shaka::media::StreamInfo)shaka::media::StreamInfoinline - ToString() const overrideshaka::media::VideoStreamInfovirtual - track_id() const (defined in shaka::media::StreamInfo)shaka::media::StreamInfoinline - trick_play_rate() const (defined in shaka::media::VideoStreamInfo)shaka::media::VideoStreamInfoinline - VideoStreamInfo(int track_id, uint32_t time_scale, uint64_t duration, Codec codec, const std::string &codec_string, const uint8_t *codec_config, size_t codec_config_size, uint16_t width, uint16_t height, uint32_t pixel_width, uint32_t pixel_height, int16_t trick_play_rate, uint8_t nalu_length_size, const std::string &language, bool is_encrypted)shaka::media::VideoStreamInfo - width() const (defined in shaka::media::VideoStreamInfo)shaka::media::VideoStreamInfoinline - ~StreamInfo() (defined in shaka::media::StreamInfo)shaka::media::StreamInfovirtual - ~VideoStreamInfo() override (defined in shaka::media::VideoStreamInfo)shaka::media::VideoStreamInfo + h26x_stream_format() const (defined in shaka::media::VideoStreamInfo)shaka::media::VideoStreamInfoinline + height() const (defined in shaka::media::VideoStreamInfo)shaka::media::VideoStreamInfoinline + is_encrypted() const (defined in shaka::media::StreamInfo)shaka::media::StreamInfoinline + IsValidConfig() const overrideshaka::media::VideoStreamInfovirtual + language() const (defined in shaka::media::StreamInfo)shaka::media::StreamInfoinline + nalu_length_size() const (defined in shaka::media::VideoStreamInfo)shaka::media::VideoStreamInfoinline + pixel_height() const shaka::media::VideoStreamInfoinline + pixel_width() const shaka::media::VideoStreamInfoinline + set_codec(Codec codec) (defined in shaka::media::StreamInfo)shaka::media::StreamInfoinline + set_codec_config(const std::vector< uint8_t > &data) (defined in shaka::media::StreamInfo)shaka::media::StreamInfoinline + set_codec_string(const std::string &codec_string) (defined in shaka::media::StreamInfo)shaka::media::StreamInfoinline + set_duration(uint64_t duration) (defined in shaka::media::StreamInfo)shaka::media::StreamInfoinline + set_eme_init_data(const uint8_t *eme_init_data, size_t eme_init_data_size) (defined in shaka::media::VideoStreamInfo)shaka::media::VideoStreamInfoinline + set_encryption_config(const EncryptionConfig &encryption_config) (defined in shaka::media::StreamInfo)shaka::media::StreamInfoinline + set_height(uint32_t height) (defined in shaka::media::VideoStreamInfo)shaka::media::VideoStreamInfoinline + set_is_encrypted(bool is_encrypted) (defined in shaka::media::StreamInfo)shaka::media::StreamInfoinline + set_language(const std::string &language) (defined in shaka::media::StreamInfo)shaka::media::StreamInfoinline + set_pixel_height(uint32_t pixel_height) (defined in shaka::media::VideoStreamInfo)shaka::media::VideoStreamInfoinline + set_pixel_width(uint32_t pixel_width) (defined in shaka::media::VideoStreamInfo)shaka::media::VideoStreamInfoinline + set_width(uint32_t width) (defined in shaka::media::VideoStreamInfo)shaka::media::VideoStreamInfoinline + stream_type() const (defined in shaka::media::StreamInfo)shaka::media::StreamInfoinline + StreamInfo(StreamType stream_type, int track_id, uint32_t time_scale, uint64_t duration, Codec codec, const std::string &codec_string, const uint8_t *codec_config, size_t codec_config_size, const std::string &language, bool is_encrypted) (defined in shaka::media::StreamInfo)shaka::media::StreamInfo + time_scale() const (defined in shaka::media::StreamInfo)shaka::media::StreamInfoinline + ToString() const overrideshaka::media::VideoStreamInfovirtual + track_id() const (defined in shaka::media::StreamInfo)shaka::media::StreamInfoinline + trick_play_rate() const (defined in shaka::media::VideoStreamInfo)shaka::media::VideoStreamInfoinline + VideoStreamInfo(int track_id, uint32_t time_scale, uint64_t duration, Codec codec, H26xStreamFormat h26x_stream_format, const std::string &codec_string, const uint8_t *codec_config, size_t codec_config_size, uint16_t width, uint16_t height, uint32_t pixel_width, uint32_t pixel_height, int16_t trick_play_rate, uint8_t nalu_length_size, const std::string &language, bool is_encrypted)shaka::media::VideoStreamInfo + width() const (defined in shaka::media::VideoStreamInfo)shaka::media::VideoStreamInfoinline + ~StreamInfo() (defined in shaka::media::StreamInfo)shaka::media::StreamInfovirtual + ~VideoStreamInfo() override (defined in shaka::media::VideoStreamInfo)shaka::media::VideoStreamInfo diff --git a/docs/d1/de2/composition__offset__iterator_8cc_source.html b/docs/d1/de2/composition__offset__iterator_8cc_source.html index 579f359131..d144ffbe36 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 c9ce380bb9..4676c661b9 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 2bfbcacc78..6fd195fbe5 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 99fe0bddf3..8143225536 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 9cb92df17e..e138bf02fd 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 3338483814..725de8db5f 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 8c36c27951..b722ef5ae0 100644 --- a/docs/d1/dee/structshaka_1_1media_1_1mp4_1_1SampleTable.html +++ b/docs/d1/dee/structshaka_1_1media_1_1mp4_1_1SampleTable.html @@ -198,7 +198,7 @@ Additional Inherited Members diff --git a/docs/d1/df0/aes__encryptor_8h_source.html b/docs/d1/df0/aes__encryptor_8h_source.html index e9b6eae42b..94dd8dd522 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 793ac2e6b1..00488461c4 100644 --- a/docs/d1/df3/structshaka_1_1MpdOptions.html +++ b/docs/d1/df3/structshaka_1_1MpdOptions.html @@ -136,7 +136,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 edd3f37e86..c89ab3146b 100644 --- a/docs/d1/df5/nalu__reader_8cc_source.html +++ b/docs/d1/df5/nalu__reader_8cc_source.html @@ -430,7 +430,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 812bae1b8e..4a260a4bd4 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 e316446cc8..614636b235 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 7c314ed33d..c4002d19e0 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 6d8f5a8de8..9fa553a4c8 100644 --- a/docs/d2/d0f/classshaka_1_1MpdBuilder-members.html +++ b/docs/d2/d0f/classshaka_1_1MpdBuilder-members.html @@ -106,7 +106,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 52fbc74e44..c7b3f19b05 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 25c2fb9074..010663e476 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 29893f8a38..a9ee708f61 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 c4ec5ac337..bbd5376b87 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 7fca334d2a..255a54e35d 100644 --- a/docs/d2/d24/packager__util_8h_source.html +++ b/docs/d2/d24/packager__util_8h_source.html @@ -134,7 +134,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d30/tracks__builder_8cc_source.html b/docs/d2/d30/tracks__builder_8cc_source.html index 22860fd46f..113fbb1ea2 100644 --- a/docs/d2/d30/tracks__builder_8cc_source.html +++ b/docs/d2/d30/tracks__builder_8cc_source.html @@ -486,7 +486,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d33/video__slice__header__parser_8h_source.html b/docs/d2/d33/video__slice__header__parser_8h_source.html index d4b71ba3a8..96992ca735 100644 --- a/docs/d2/d33/video__slice__header__parser_8h_source.html +++ b/docs/d2/d33/video__slice__header__parser_8h_source.html @@ -167,7 +167,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d35/classshaka_1_1media_1_1WidevineKeySource-members.html b/docs/d2/d35/classshaka_1_1media_1_1WidevineKeySource-members.html index 83ac170c73..df15aa3874 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 5a39e7994c..8016f248a8 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 fe13e9be22..73d028d606 100644 --- a/docs/d2/d45/program__map__table__writer_8cc_source.html +++ b/docs/d2/d45/program__map__table__writer_8cc_source.html @@ -500,7 +500,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d4c/nal__unit__to__byte__stream__converter_8cc_source.html b/docs/d2/d4c/nal__unit__to__byte__stream__converter_8cc_source.html index eadf5d5419..963bfb67eb 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 @@ -377,7 +377,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 d0f182b537..b7d0beb4dd 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 9dee13d2b9..5a2cc8b12a 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 38085b8af5..369b8535b8 100644 --- a/docs/d2/d51/classshaka_1_1MockMpdNotifier-members.html +++ b/docs/d2/d51/classshaka_1_1MockMpdNotifier-members.html @@ -116,7 +116,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 b3d3748a14..b7e8c17c27 100644 --- a/docs/d2/d59/structshaka_1_1media_1_1H264SliceHeader.html +++ b/docs/d2/d59/structshaka_1_1media_1_1H264SliceHeader.html @@ -264,7 +264,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 f0919acab9..3961042e91 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 385fdfecf6..989ae570b7 100644 --- a/docs/d2/d5c/classshaka_1_1SimpleMpdNotifier-members.html +++ b/docs/d2/d5c/classshaka_1_1SimpleMpdNotifier-members.html @@ -110,7 +110,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 b5b0fe255e..23b13ed690 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 96058d6efb..4177f24f7d 100644 --- a/docs/d2/d62/simple__mpd__notifier_8h_source.html +++ b/docs/d2/d62/simple__mpd__notifier_8h_source.html @@ -184,7 +184,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 c9b35f6735..259f67d4ff 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 26a12d042b..bd6018fd98 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 fa45e520d5..c4ee494429 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 97d984ce8c..4257428889 100644 --- a/docs/d2/d70/structshaka_1_1media_1_1mp4_1_1SchemeInfo.html +++ b/docs/d2/d70/structshaka_1_1media_1_1mp4_1_1SchemeInfo.html @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d2/d7b/classshaka_1_1DashIopMpdNotifier-members.html b/docs/d2/d7b/classshaka_1_1DashIopMpdNotifier-members.html index bd427e794c..0ee907835a 100644 --- a/docs/d2/d7b/classshaka_1_1DashIopMpdNotifier-members.html +++ b/docs/d2/d7b/classshaka_1_1DashIopMpdNotifier-members.html @@ -110,7 +110,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 973f608ae2..eb12e453c0 100644 --- a/docs/d2/d7b/simple__mpd__notifier_8cc_source.html +++ b/docs/d2/d7b/simple__mpd__notifier_8cc_source.html @@ -235,7 +235,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 9e4cba1edf..b84cd59d6c 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 77188f11a6..7fa2da39e7 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 2679 of file box_definitions.cc.

+

Definition at line 2681 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 ccacbf28a7..96e6086b0a 100644 --- a/docs/d2/d8a/hls__notify__muxer__listener_8h_source.html +++ b/docs/d2/d8a/hls__notify__muxer__listener_8h_source.html @@ -163,7 +163,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
86 } // namespace shaka
87 #endif // PACKAGER_MEDIA_EVENT_HLS_NOTIFY_MUXER_LISTENER_H_
void OnMediaStart(const MuxerOptions &muxer_options, const StreamInfo &stream_info, uint32_t time_scale, ContainerType container_type) override
-
Abstract class holds stream information.
Definition: stream_info.h:60
+
Abstract class holds stream information.
Definition: stream_info.h:57
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) override
MuxerListener that uses HlsNotifier.
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
@@ -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 e24d1c393c..ddb080554b 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 77f9a22aa9..8395abef28 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 043c252353..c4764e8262 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 6e0f1b47ac..d755365b99 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 6ba241ead2..c56bf9fc24 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 5eb81e09a3..f8515767fa 100644 --- a/docs/d2/da8/mp4_2segmenter_8cc_source.html +++ b/docs/d2/da8/mp4_2segmenter_8cc_source.html @@ -408,7 +408,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 e074edcbed..a9a624abb2 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 bfe09231a9..0b48c0a92f 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 830dad9684..e7ddd97f7d 100644 --- a/docs/d2/dae/webm__muxer_8cc_source.html +++ b/docs/d2/dae/webm__muxer_8cc_source.html @@ -222,7 +222,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 7fccf73314..a171e76762 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 fbd10ec8e7..45bbdfe002 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 81e9a0ff9b..05cfb0049d 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 d3fe5c7572..38bc078ea8 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 c643a3547b..ad13928a72 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/media__handler__test__base_8cc_source.html b/docs/d2/dc7/media__handler__test__base_8cc_source.html index 70cbe28546..7f29709d58 100644 --- a/docs/d2/dc7/media__handler__test__base_8cc_source.html +++ b/docs/d2/dc7/media__handler__test__base_8cc_source.html @@ -248,15 +248,16 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
159  !kEncrypted));
160  } else if (codec >= kCodecVideo && codec < kCodecVideoMaxPlusOne) {
161  return std::shared_ptr<StreamInfo>(new VideoStreamInfo(
-
162  kTrackId, time_scale, kDuration, codec, kCodecString, kCodecConfig,
-
163  sizeof(kCodecConfig), kWidth, kHeight, kPixelWidth, kPixelHeight,
-
164  kTrickPlayRate, kNaluLengthSize, kLanguage, !kEncrypted));
-
165  }
-
166  return nullptr;
-
167 }
-
168 
-
169 } // namespace media
-
170 } // namespace shaka
+
162  kTrackId, time_scale, kDuration, codec, H26xStreamFormat::kUnSpecified,
+
163  kCodecString, kCodecConfig, sizeof(kCodecConfig), kWidth, kHeight,
+
164  kPixelWidth, kPixelHeight, kTrickPlayRate, kNaluLengthSize, kLanguage,
+
165  !kEncrypted));
+
166  }
+
167  return nullptr;
+
168 }
+
169 
+
170 } // namespace media
+
171 } // namespace shaka
std::unique_ptr< StreamData > GetMediaSampleStreamData(int stream_index, int64_t timestamp, int64_t duration, bool is_keyframe)
std::unique_ptr< StreamData > GetStreamInfoStreamData(int stream_index, Codec codec, uint32_t time_scale)
@@ -270,7 +271,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 fc8c6fcde5..8277edd9e3 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 315a86a39b..48b853ba82 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 848fb67daf..b205eaaad8 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/dce/structshaka_1_1media_1_1ChunkingOptions-members.html b/docs/d2/dce/structshaka_1_1media_1_1ChunkingOptions-members.html index 3d4cbd7ae6..0746984fb7 100644 --- a/docs/d2/dce/structshaka_1_1media_1_1ChunkingOptions-members.html +++ b/docs/d2/dce/structshaka_1_1media_1_1ChunkingOptions-members.html @@ -100,7 +100,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 38aa2e3766..8ba55a6a2a 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 @@ -278,7 +278,7 @@ uint64_t segment_payload_p diff --git a/docs/d2/dd6/mkv__writer_8h_source.html b/docs/d2/dd6/mkv__writer_8h_source.html index aaeb779304..5d49a8358f 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/dd8/classshaka_1_1media_1_1ChunkingHandler-members.html b/docs/d2/dd8/classshaka_1_1media_1_1ChunkingHandler-members.html index aca5191c72..18a30477fc 100644 --- a/docs/d2/dd8/classshaka_1_1media_1_1ChunkingHandler-members.html +++ b/docs/d2/dd8/classshaka_1_1media_1_1ChunkingHandler-members.html @@ -120,7 +120,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 d3684734af..8f082b5c22 100644 --- a/docs/d2/ddb/classshaka_1_1media_1_1WebMMediaParser.html +++ b/docs/d2/ddb/classshaka_1_1media_1_1WebMMediaParser.html @@ -257,7 +257,7 @@ std::shared_ptr< 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 7da235a30b..61a4644fd6 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 a84bd379de..c55af8016a 100644 --- a/docs/d2/de6/packager__main_8cc_source.html +++ b/docs/d2/de6/packager__main_8cc_source.html @@ -682,7 +682,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 46c9b89725..27de2a245a 100644 --- a/docs/d2/de7/classshaka_1_1media_1_1TextStreamInfo-members.html +++ b/docs/d2/de7/classshaka_1_1media_1_1TextStreamInfo-members.html @@ -121,7 +121,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 306eaf390f..73041a5dbb 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/media__handler_8cc_source.html b/docs/d2/de9/media__handler_8cc_source.html index 3cac482d31..2b71d8cd71 100644 --- a/docs/d2/de9/media__handler_8cc_source.html +++ b/docs/d2/de9/media__handler_8cc_source.html @@ -171,7 +171,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 1b59a2fd74..2035d4b200 100644 --- a/docs/d2/de9/mock__muxer__listener_8h_source.html +++ b/docs/d2/de9/mock__muxer__listener_8h_source.html @@ -153,7 +153,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
virtual void OnNewSegment(const std::string &segment_name, uint64_t start_time, uint64_t duration, uint64_t segment_file_size)=0
virtual void OnEncryptionInfoReady(bool is_initial_encryption_info, FourCC protection_scheme, const std::vector< uint8_t > &key_id, const std::vector< uint8_t > &iv, const std::vector< ProtectionSystemSpecificInfo > &key_system_info)=0
virtual void OnMediaEnd(bool has_init_range, uint64_t init_range_start, uint64_t init_range_end, bool has_index_range, uint64_t index_range_start, uint64_t index_range_end, float duration_seconds, uint64_t file_size)=0
-
Abstract class holds stream information.
Definition: stream_info.h:60
+
Abstract class holds stream information.
Definition: stream_info.h:57
virtual void OnSampleDurationReady(uint32_t sample_duration)=0
virtual void OnEncryptionStart()=0
@@ -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 b16bc7009a..9bee584b99 100644 --- a/docs/d2/deb/es__parser_8h_source.html +++ b/docs/d2/deb/es__parser_8h_source.html @@ -144,7 +144,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 9974c1ee19..70bfee1fe8 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 ebff87ee79..985ed74712 100644 --- a/docs/d2/dee/pes__packet__generator_8cc_source.html +++ b/docs/d2/dee/pes__packet__generator_8cc_source.html @@ -218,7 +218,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
129 } // namespace mp2t
130 } // namespace media
131 } // namespace shaka
-
Abstract class holds stream information.
Definition: stream_info.h:60
+
Abstract class holds stream information.
Definition: stream_info.h:57
virtual std::unique_ptr< PesPacket > GetNextPesPacket()
@@ -226,13 +226,13 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
virtual bool Initialize(const StreamInfo &stream)
Class that carries PES packet information.
Definition: pes_packet.h:20
virtual bool PushSample(std::shared_ptr< MediaSample > sample)
-
Holds video stream information.
+
Holds video stream information.
Holds audio stream information.
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 e666eca392..a03f064b5e 100644 --- a/docs/d2/df8/classshaka_1_1media_1_1SegmentTestBase_1_1ClusterParser.html +++ b/docs/d2/df8/classshaka_1_1media_1_1SegmentTestBase_1_1ClusterParser.html @@ -128,7 +128,7 @@ size_t cluster_count ( 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 fe588d1dbf..e887c8158f 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 e7ca9520ec..b753dd96c3 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 9610e2f36f..fe5ef8fb29 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 4d95a835bb..cb6c716b23 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 a68aa997cf..4b491aa149 100644 --- a/docs/d3/d0a/classshaka_1_1media_1_1MediaParser.html +++ b/docs/d3/d0a/classshaka_1_1media_1_1MediaParser.html @@ -299,7 +299,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 33107c6207..6fe4a5205e 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 aeea4bb1ef..899c7b1ffc 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/d18/classshaka_1_1media_1_1mp2t_1_1TsSectionPat-members.html b/docs/d3/d18/classshaka_1_1media_1_1mp2t_1_1TsSectionPat-members.html index cc74e43cb2..f51d2c6367 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 d86d36433b..7c0f3e48ac 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 a09bceed3d..857e085333 100644 --- a/docs/d3/d35/video__slice__header__parser_8cc_source.html +++ b/docs/d3/d35/video__slice__header__parser_8cc_source.html @@ -191,7 +191,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
bool Parse(const std::vector< uint8_t > &data)
bool Initialize(const std::vector< uint8_t > &decoder_configuration) override
-
Class for parsing HEVC decoder configuration record.
+
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
@@ -200,7 +200,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d47/structshaka_1_1media_1_1mp4_1_1PrivFrame.html b/docs/d3/d47/structshaka_1_1media_1_1mp4_1_1PrivFrame.html index 2fd5a031f9..f4f28601ae 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 a64d7f2eac..634ef1e223 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 9003c586a8..4d318a95a0 100644 --- a/docs/d3/d56/decrypt__config_8cc_source.html +++ b/docs/d3/d56/decrypt__config_8cc_source.html @@ -136,7 +136,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 026ac793d9..ef30c5332c 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 696213e4ae..98f3faff50 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 824f7936f3..e9d7ea7dd9 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 d450f4d6f6..ee0b91e866 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 b40cc27643..246727efa8 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 pointer if there was unexpected values in the provided parameters or vi diff --git a/docs/d3/d6b/fixed__key__source_8cc_source.html b/docs/d3/d6b/fixed__key__source_8cc_source.html index d90b550175..e13ea2f089 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 c3e44abe41..9d34987c98 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 @@ -222,7 +222,7 @@ std::pair< std::shared_ptr
diff --git a/docs/d3/d72/fixed__key__source_8h_source.html b/docs/d3/d72/fixed__key__source_8h_source.html index 58eea12a00..262a132723 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 9a6cc4574a..87576509e8 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 @@ -226,7 +226,7 @@ std::pair< std::shared_ptr
diff --git a/docs/d3/d75/classshaka_1_1media_1_1AesEncryptor.html b/docs/d3/d75/classshaka_1_1media_1_1AesEncryptor.html index 58238166f9..4812790ea9 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 24b39fa416..71f5e761fd 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 57d77af04f..a763556817 100644 --- a/docs/d3/d76/muxer__flags_8h_source.html +++ b/docs/d3/d76/muxer__flags_8h_source.html @@ -113,7 +113,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 7d1205c6ad..c3ef87fd47 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 04f6f30030..66b1555596 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 0a549146fa..b909d20aee 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 pointer if there was unexpected values in the provided parameters or au diff --git a/docs/d3/d80/muxer__util_8h_source.html b/docs/d3/d80/muxer__util_8h_source.html index fdc7569bcb..a693d2b45b 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 ce0a4746cc..8c14451825 100644 --- a/docs/d3/d87/structshaka_1_1media_1_1mp4_1_1SampleToChunk.html +++ b/docs/d3/d87/structshaka_1_1media_1_1mp4_1_1SampleToChunk.html @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/d3/d8b/structshaka_1_1media_1_1FileCloser.html b/docs/d3/d8b/structshaka_1_1media_1_1FileCloser.html index 52fba23c16..36142a99d7 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 586856dc2f..e425a4f019 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 94645e1b39..00867cd324 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 b84f0bf150..0895b85737 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/d93/media__handler_8h_source.html b/docs/d3/d93/media__handler_8h_source.html index 2529802317..ccbc1ed374 100644 --- a/docs/d3/d93/media__handler_8h_source.html +++ b/docs/d3/d93/media__handler_8h_source.html @@ -266,7 +266,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d9c/encryption__handler_8cc_source.html b/docs/d3/d9c/encryption__handler_8cc_source.html index 5bd0b9ab94..dfcd129fd1 100644 --- a/docs/d3/d9c/encryption__handler_8cc_source.html +++ b/docs/d3/d9c/encryption__handler_8cc_source.html @@ -240,368 +240,365 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
151  case kCodecH264:
152  header_parser_.reset(new H264VideoSliceHeaderParser);
153  break;
-
154  case kCodecHVC1:
-
155  FALLTHROUGH_INTENDED;
-
156  case kCodecHEV1:
-
157  header_parser_.reset(new H265VideoSliceHeaderParser);
-
158  break;
-
159  default:
-
160  // Other codecs should have nalu length size == 0.
-
161  if (nalu_length_size_ > 0) {
-
162  LOG(WARNING) << "Unknown video codec '" << codec_ << "'";
-
163  return Status(error::ENCRYPTION_FAILURE, "Unknown video codec.");
-
164  }
-
165  }
-
166  if (header_parser_) {
-
167  CHECK_NE(nalu_length_size_, 0u) << "AnnexB stream is not supported yet";
-
168  if (!header_parser_->Initialize(stream_info->codec_config())) {
-
169  return Status(error::ENCRYPTION_FAILURE,
-
170  "Fail to read SPS and PPS data.");
-
171  }
-
172  }
-
173 
-
174  Status status = SetupProtectionPattern(stream_info->stream_type());
-
175  if (!status.ok())
-
176  return status;
-
177 
-
178  EncryptionKey encryption_key;
-
179  const bool key_rotation_enabled = crypto_period_duration_ != 0;
-
180  if (key_rotation_enabled) {
-
181  check_new_crypto_period_ = true;
-
182  // Setup dummy key id and key to signal encryption for key rotation.
-
183  encryption_key.key_id.assign(
-
184  kKeyRotationDefaultKeyId,
-
185  kKeyRotationDefaultKeyId + sizeof(kKeyRotationDefaultKeyId));
-
186  // The key is not really used to encrypt any data. It is there just for
-
187  // convenience.
-
188  encryption_key.key = encryption_key.key_id;
-
189  } else {
-
190  status = key_source_->GetKey(track_type_, &encryption_key);
-
191  if (!status.ok())
-
192  return status;
-
193  }
-
194  if (!CreateEncryptor(encryption_key))
-
195  return Status(error::ENCRYPTION_FAILURE, "Failed to create encryptor");
-
196 
-
197  stream_info->set_is_encrypted(true);
-
198  stream_info->set_encryption_config(*encryption_config_);
-
199  return Status::OK;
-
200 }
-
201 
-
202 Status EncryptionHandler::ProcessMediaSample(MediaSample* sample) {
-
203  // We need to parse the frame (which also updates the vpx parser) even if the
-
204  // frame is not encrypted as the next (encrypted) frame may be dependent on
-
205  // this clear frame.
-
206  std::vector<VPxFrameInfo> vpx_frames;
-
207  if (vpx_parser_ &&
-
208  !vpx_parser_->Parse(sample->data(), sample->data_size(), &vpx_frames)) {
-
209  return Status(error::ENCRYPTION_FAILURE, "Failed to parse vpx frame.");
-
210  }
-
211 
-
212  // Need to setup the encryptor for new segments even if this segment does not
-
213  // need to be encrypted, so we can signal encryption metadata earlier to
-
214  // allows clients to prefetch the keys.
-
215  if (check_new_crypto_period_) {
-
216  const int64_t current_crypto_period_index =
-
217  sample->dts() / crypto_period_duration_;
-
218  if (current_crypto_period_index != prev_crypto_period_index_) {
-
219  EncryptionKey encryption_key;
-
220  Status status = key_source_->GetCryptoPeriodKey(
-
221  current_crypto_period_index, track_type_, &encryption_key);
-
222  if (!status.ok())
-
223  return status;
-
224  if (!CreateEncryptor(encryption_key))
-
225  return Status(error::ENCRYPTION_FAILURE, "Failed to create encryptor");
-
226  }
-
227  check_new_crypto_period_ = false;
-
228  }
-
229 
-
230  if (remaining_clear_lead_ > 0)
-
231  return Status::OK;
-
232 
-
233  std::unique_ptr<DecryptConfig> decrypt_config(new DecryptConfig(
-
234  encryption_config_->key_id, encryptor_->iv(),
-
235  std::vector<SubsampleEntry>(), encryption_options_.protection_scheme,
-
236  crypt_byte_block_, skip_byte_block_));
-
237  bool result = true;
-
238  if (vpx_parser_) {
-
239  result = EncryptVpxFrame(vpx_frames, sample, decrypt_config.get());
-
240  if (result) {
-
241  DCHECK_EQ(decrypt_config->GetTotalSizeOfSubsamples(),
-
242  sample->data_size());
-
243  }
-
244  } else if (header_parser_) {
-
245  result = EncryptNalFrame(sample, decrypt_config.get());
-
246  if (result) {
-
247  DCHECK_EQ(decrypt_config->GetTotalSizeOfSubsamples(),
-
248  sample->data_size());
-
249  }
-
250  } else {
-
251  DCHECK_LE(crypt_byte_block_, 1u);
-
252  DCHECK_EQ(skip_byte_block_, 0u);
-
253  if (sample->data_size() > leading_clear_bytes_size_) {
-
254  EncryptBytes(sample->writable_data() + leading_clear_bytes_size_,
-
255  sample->data_size() - leading_clear_bytes_size_);
-
256  }
-
257  }
-
258  if (!result)
-
259  return Status(error::ENCRYPTION_FAILURE, "Failed to encrypt samples.");
-
260  sample->set_is_encrypted(true);
-
261  sample->set_decrypt_config(std::move(decrypt_config));
-
262  encryptor_->UpdateIv();
-
263  return Status::OK;
-
264 }
-
265 
-
266 Status EncryptionHandler::SetupProtectionPattern(StreamType stream_type) {
-
267  switch (encryption_options_.protection_scheme) {
-
268  case kAppleSampleAesProtectionScheme: {
-
269  const size_t kH264LeadingClearBytesSize = 32u;
-
270  const size_t kSmallNalUnitSize = 32u + 16u;
-
271  const size_t kAudioLeadingClearBytesSize = 16u;
-
272  switch (codec_) {
-
273  case kCodecH264:
-
274  // Apple Sample AES uses 1:9 pattern for video.
-
275  crypt_byte_block_ = 1u;
-
276  skip_byte_block_ = 9u;
-
277  leading_clear_bytes_size_ = kH264LeadingClearBytesSize;
-
278  min_protected_data_size_ = kSmallNalUnitSize + 1u;
-
279  break;
-
280  case kCodecAAC:
-
281  FALLTHROUGH_INTENDED;
-
282  case kCodecAC3:
-
283  // Audio is whole sample encrypted. We could not use a
-
284  // crypto_byte_block_ of 1 here as if there is one crypto block
-
285  // remaining, it need not be encrypted for video but it needs to be
-
286  // encrypted for audio.
-
287  crypt_byte_block_ = 0u;
-
288  skip_byte_block_ = 0u;
-
289  leading_clear_bytes_size_ = kAudioLeadingClearBytesSize;
-
290  min_protected_data_size_ = leading_clear_bytes_size_ + 1u;
-
291  break;
-
292  default:
-
293  return Status(error::ENCRYPTION_FAILURE,
-
294  "Only AAC/AC3 and H264 are supported in Sample AES.");
-
295  }
-
296  break;
-
297  }
-
298  case FOURCC_cbcs:
-
299  FALLTHROUGH_INTENDED;
-
300  case FOURCC_cens:
-
301  if (stream_type == kStreamVideo) {
-
302  // Use 1:9 pattern for video.
-
303  crypt_byte_block_ = 1u;
-
304  skip_byte_block_ = 9u;
-
305  } else {
-
306  // Tracks other than video are protected using whole-block full-sample
-
307  // encryption, which is essentially a pattern of 1:0. Note that this may
-
308  // not be the same as the non-pattern based encryption counterparts,
-
309  // e.g. in 'cens' for full sample encryption, the whole sample is
-
310  // encrypted up to the last 16-byte boundary, see 23001-7:2016(E) 9.7;
-
311  // while in 'cenc' for full sample encryption, the last partial 16-byte
-
312  // block is also encrypted, see 23001-7:2016(E) 9.4.2. Another
-
313  // difference is the use of constant iv.
-
314  crypt_byte_block_ = 1u;
-
315  skip_byte_block_ = 0u;
-
316  }
-
317  break;
-
318  default:
-
319  // Not using pattern encryption.
-
320  crypt_byte_block_ = 0u;
-
321  skip_byte_block_ = 0u;
-
322  }
-
323  return Status::OK;
-
324 }
-
325 
-
326 bool EncryptionHandler::CreateEncryptor(const EncryptionKey& encryption_key) {
-
327  std::unique_ptr<AesCryptor> encryptor;
-
328  switch (encryption_options_.protection_scheme) {
-
329  case FOURCC_cenc:
-
330  encryptor.reset(new AesCtrEncryptor);
-
331  break;
-
332  case FOURCC_cbc1:
-
333  encryptor.reset(new AesCbcEncryptor(kNoPadding));
-
334  break;
-
335  case FOURCC_cens:
-
336  encryptor.reset(new AesPatternCryptor(
-
337  crypt_byte_block_, skip_byte_block_,
- -
339  AesCryptor::kDontUseConstantIv,
-
340  std::unique_ptr<AesCryptor>(new AesCtrEncryptor())));
-
341  break;
-
342  case FOURCC_cbcs:
-
343  encryptor.reset(new AesPatternCryptor(
-
344  crypt_byte_block_, skip_byte_block_,
- -
346  AesCryptor::kUseConstantIv,
-
347  std::unique_ptr<AesCryptor>(new AesCbcEncryptor(kNoPadding))));
-
348  break;
-
349  case kAppleSampleAesProtectionScheme:
-
350  if (crypt_byte_block_ == 0 && skip_byte_block_ == 0) {
-
351  encryptor.reset(
-
352  new AesCbcEncryptor(kNoPadding, AesCryptor::kUseConstantIv));
-
353  } else {
-
354  encryptor.reset(new AesPatternCryptor(
-
355  crypt_byte_block_, skip_byte_block_,
- -
357  AesCryptor::kUseConstantIv,
-
358  std::unique_ptr<AesCryptor>(new AesCbcEncryptor(kNoPadding))));
-
359  }
-
360  break;
-
361  default:
-
362  LOG(ERROR) << "Unsupported protection scheme.";
-
363  return false;
-
364  }
-
365 
-
366  std::vector<uint8_t> iv = encryption_key.iv;
-
367  if (iv.empty()) {
-
368  if (!AesCryptor::GenerateRandomIv(encryption_options_.protection_scheme,
-
369  &iv)) {
-
370  LOG(ERROR) << "Failed to generate random iv.";
-
371  return false;
-
372  }
-
373  }
-
374  const bool initialized =
-
375  encryptor->InitializeWithIv(encryption_key.key, iv);
-
376  encryptor_ = std::move(encryptor);
-
377 
-
378  encryption_config_.reset(new EncryptionConfig);
-
379  encryption_config_->protection_scheme = encryption_options_.protection_scheme;
-
380  encryption_config_->crypt_byte_block = crypt_byte_block_;
-
381  encryption_config_->skip_byte_block = skip_byte_block_;
-
382  if (encryptor_->use_constant_iv()) {
-
383  encryption_config_->per_sample_iv_size = 0;
-
384  encryption_config_->constant_iv = iv;
-
385  } else {
-
386  encryption_config_->per_sample_iv_size = static_cast<uint8_t>(iv.size());
-
387  }
-
388  encryption_config_->key_id = encryption_key.key_id;
-
389  encryption_config_->key_system_info = encryption_key.key_system_info;
-
390  return initialized;
-
391 }
-
392 
-
393 bool EncryptionHandler::EncryptVpxFrame(
-
394  const std::vector<VPxFrameInfo>& vpx_frames,
-
395  MediaSample* sample,
-
396  DecryptConfig* decrypt_config) {
-
397  uint8_t* data = sample->writable_data();
-
398  for (const VPxFrameInfo& frame : vpx_frames) {
-
399  uint16_t clear_bytes =
-
400  static_cast<uint16_t>(frame.uncompressed_header_size);
-
401  uint32_t cipher_bytes = static_cast<uint32_t>(
-
402  frame.frame_size - frame.uncompressed_header_size);
-
403 
-
404  // "VP Codec ISO Media File Format Binding" document requires that the
-
405  // encrypted bytes of each frame within the superframe must be block
-
406  // aligned so that the counter state can be computed for each frame
-
407  // within the superframe.
-
408  // ISO/IEC 23001-7:2016 10.2 'cbc1' 10.3 'cens'
-
409  // The BytesOfProtectedData size SHALL be a multiple of 16 bytes to
-
410  // avoid partial blocks in Subsamples.
-
411  // For consistency, apply block alignment to all frames.
-
412  const uint16_t misalign_bytes = cipher_bytes % kCencBlockSize;
-
413  clear_bytes += misalign_bytes;
-
414  cipher_bytes -= misalign_bytes;
-
415 
-
416  decrypt_config->AddSubsample(clear_bytes, cipher_bytes);
-
417  if (cipher_bytes > 0)
-
418  EncryptBytes(data + clear_bytes, cipher_bytes);
-
419  data += frame.frame_size;
-
420  }
-
421  // Add subsample for the superframe index if exists.
-
422  const bool is_superframe = vpx_frames.size() > 1;
-
423  if (is_superframe) {
-
424  size_t index_size = sample->data() + sample->data_size() - data;
-
425  DCHECK_LE(index_size, 2 + vpx_frames.size() * 4);
-
426  DCHECK_GE(index_size, 2 + vpx_frames.size() * 1);
-
427  uint16_t clear_bytes = static_cast<uint16_t>(index_size);
-
428  uint32_t cipher_bytes = 0;
-
429  decrypt_config->AddSubsample(clear_bytes, cipher_bytes);
-
430  }
-
431  return true;
-
432 }
-
433 
-
434 bool EncryptionHandler::EncryptNalFrame(MediaSample* sample,
-
435  DecryptConfig* decrypt_config) {
-
436  DCHECK_NE(nalu_length_size_, 0u);
-
437  DCHECK(header_parser_);
-
438  const Nalu::CodecType nalu_type =
-
439  (codec_ == kCodecHVC1 || codec_ == kCodecHEV1) ? Nalu::kH265
-
440  : Nalu::kH264;
-
441  NaluReader reader(nalu_type, nalu_length_size_, sample->writable_data(),
-
442  sample->data_size());
-
443 
-
444  // Store the current length of clear data. This is used to squash
-
445  // multiple unencrypted NAL units into fewer subsample entries.
-
446  uint64_t accumulated_clear_bytes = 0;
-
447 
-
448  Nalu nalu;
-
449  NaluReader::Result result;
-
450  while ((result = reader.Advance(&nalu)) == NaluReader::kOk) {
-
451  const uint64_t nalu_total_size = nalu.header_size() + nalu.payload_size();
-
452  if (nalu.is_video_slice() && nalu_total_size >= min_protected_data_size_) {
-
453  uint64_t current_clear_bytes = leading_clear_bytes_size_;
-
454  if (current_clear_bytes == 0) {
-
455  // For video-slice NAL units, encrypt the video slice. This skips
-
456  // the frame header.
-
457  const int64_t video_slice_header_size =
-
458  header_parser_->GetHeaderSize(nalu);
-
459  if (video_slice_header_size < 0) {
-
460  LOG(ERROR) << "Failed to read slice header.";
-
461  return false;
-
462  }
-
463  current_clear_bytes = nalu.header_size() + video_slice_header_size;
-
464  }
-
465  uint64_t cipher_bytes = nalu_total_size - current_clear_bytes;
-
466 
-
467  // ISO/IEC 23001-7:2016 10.2 'cbc1' 10.3 'cens'
-
468  // The BytesOfProtectedData size SHALL be a multiple of 16 bytes to
-
469  // avoid partial blocks in Subsamples.
-
470  if (encryption_options_.protection_scheme == FOURCC_cbc1 ||
-
471  encryption_options_.protection_scheme == FOURCC_cens) {
-
472  const uint16_t misalign_bytes = cipher_bytes % kCencBlockSize;
-
473  current_clear_bytes += misalign_bytes;
-
474  cipher_bytes -= misalign_bytes;
-
475  }
+
154  case kCodecH265:
+
155  header_parser_.reset(new H265VideoSliceHeaderParser);
+
156  break;
+
157  default:
+
158  // Other codecs should have nalu length size == 0.
+
159  if (nalu_length_size_ > 0) {
+
160  LOG(WARNING) << "Unknown video codec '" << codec_ << "'";
+
161  return Status(error::ENCRYPTION_FAILURE, "Unknown video codec.");
+
162  }
+
163  }
+
164  if (header_parser_) {
+
165  CHECK_NE(nalu_length_size_, 0u) << "AnnexB stream is not supported yet";
+
166  if (!header_parser_->Initialize(stream_info->codec_config())) {
+
167  return Status(error::ENCRYPTION_FAILURE,
+
168  "Fail to read SPS and PPS data.");
+
169  }
+
170  }
+
171 
+
172  Status status = SetupProtectionPattern(stream_info->stream_type());
+
173  if (!status.ok())
+
174  return status;
+
175 
+
176  EncryptionKey encryption_key;
+
177  const bool key_rotation_enabled = crypto_period_duration_ != 0;
+
178  if (key_rotation_enabled) {
+
179  check_new_crypto_period_ = true;
+
180  // Setup dummy key id and key to signal encryption for key rotation.
+
181  encryption_key.key_id.assign(
+
182  kKeyRotationDefaultKeyId,
+
183  kKeyRotationDefaultKeyId + sizeof(kKeyRotationDefaultKeyId));
+
184  // The key is not really used to encrypt any data. It is there just for
+
185  // convenience.
+
186  encryption_key.key = encryption_key.key_id;
+
187  } else {
+
188  status = key_source_->GetKey(track_type_, &encryption_key);
+
189  if (!status.ok())
+
190  return status;
+
191  }
+
192  if (!CreateEncryptor(encryption_key))
+
193  return Status(error::ENCRYPTION_FAILURE, "Failed to create encryptor");
+
194 
+
195  stream_info->set_is_encrypted(true);
+
196  stream_info->set_encryption_config(*encryption_config_);
+
197  return Status::OK;
+
198 }
+
199 
+
200 Status EncryptionHandler::ProcessMediaSample(MediaSample* sample) {
+
201  // We need to parse the frame (which also updates the vpx parser) even if the
+
202  // frame is not encrypted as the next (encrypted) frame may be dependent on
+
203  // this clear frame.
+
204  std::vector<VPxFrameInfo> vpx_frames;
+
205  if (vpx_parser_ &&
+
206  !vpx_parser_->Parse(sample->data(), sample->data_size(), &vpx_frames)) {
+
207  return Status(error::ENCRYPTION_FAILURE, "Failed to parse vpx frame.");
+
208  }
+
209 
+
210  // Need to setup the encryptor for new segments even if this segment does not
+
211  // need to be encrypted, so we can signal encryption metadata earlier to
+
212  // allows clients to prefetch the keys.
+
213  if (check_new_crypto_period_) {
+
214  const int64_t current_crypto_period_index =
+
215  sample->dts() / crypto_period_duration_;
+
216  if (current_crypto_period_index != prev_crypto_period_index_) {
+
217  EncryptionKey encryption_key;
+
218  Status status = key_source_->GetCryptoPeriodKey(
+
219  current_crypto_period_index, track_type_, &encryption_key);
+
220  if (!status.ok())
+
221  return status;
+
222  if (!CreateEncryptor(encryption_key))
+
223  return Status(error::ENCRYPTION_FAILURE, "Failed to create encryptor");
+
224  }
+
225  check_new_crypto_period_ = false;
+
226  }
+
227 
+
228  if (remaining_clear_lead_ > 0)
+
229  return Status::OK;
+
230 
+
231  std::unique_ptr<DecryptConfig> decrypt_config(new DecryptConfig(
+
232  encryption_config_->key_id, encryptor_->iv(),
+
233  std::vector<SubsampleEntry>(), encryption_options_.protection_scheme,
+
234  crypt_byte_block_, skip_byte_block_));
+
235  bool result = true;
+
236  if (vpx_parser_) {
+
237  result = EncryptVpxFrame(vpx_frames, sample, decrypt_config.get());
+
238  if (result) {
+
239  DCHECK_EQ(decrypt_config->GetTotalSizeOfSubsamples(),
+
240  sample->data_size());
+
241  }
+
242  } else if (header_parser_) {
+
243  result = EncryptNalFrame(sample, decrypt_config.get());
+
244  if (result) {
+
245  DCHECK_EQ(decrypt_config->GetTotalSizeOfSubsamples(),
+
246  sample->data_size());
+
247  }
+
248  } else {
+
249  DCHECK_LE(crypt_byte_block_, 1u);
+
250  DCHECK_EQ(skip_byte_block_, 0u);
+
251  if (sample->data_size() > leading_clear_bytes_size_) {
+
252  EncryptBytes(sample->writable_data() + leading_clear_bytes_size_,
+
253  sample->data_size() - leading_clear_bytes_size_);
+
254  }
+
255  }
+
256  if (!result)
+
257  return Status(error::ENCRYPTION_FAILURE, "Failed to encrypt samples.");
+
258  sample->set_is_encrypted(true);
+
259  sample->set_decrypt_config(std::move(decrypt_config));
+
260  encryptor_->UpdateIv();
+
261  return Status::OK;
+
262 }
+
263 
+
264 Status EncryptionHandler::SetupProtectionPattern(StreamType stream_type) {
+
265  switch (encryption_options_.protection_scheme) {
+
266  case kAppleSampleAesProtectionScheme: {
+
267  const size_t kH264LeadingClearBytesSize = 32u;
+
268  const size_t kSmallNalUnitSize = 32u + 16u;
+
269  const size_t kAudioLeadingClearBytesSize = 16u;
+
270  switch (codec_) {
+
271  case kCodecH264:
+
272  // Apple Sample AES uses 1:9 pattern for video.
+
273  crypt_byte_block_ = 1u;
+
274  skip_byte_block_ = 9u;
+
275  leading_clear_bytes_size_ = kH264LeadingClearBytesSize;
+
276  min_protected_data_size_ = kSmallNalUnitSize + 1u;
+
277  break;
+
278  case kCodecAAC:
+
279  FALLTHROUGH_INTENDED;
+
280  case kCodecAC3:
+
281  // Audio is whole sample encrypted. We could not use a
+
282  // crypto_byte_block_ of 1 here as if there is one crypto block
+
283  // remaining, it need not be encrypted for video but it needs to be
+
284  // encrypted for audio.
+
285  crypt_byte_block_ = 0u;
+
286  skip_byte_block_ = 0u;
+
287  leading_clear_bytes_size_ = kAudioLeadingClearBytesSize;
+
288  min_protected_data_size_ = leading_clear_bytes_size_ + 1u;
+
289  break;
+
290  default:
+
291  return Status(error::ENCRYPTION_FAILURE,
+
292  "Only AAC/AC3 and H264 are supported in Sample AES.");
+
293  }
+
294  break;
+
295  }
+
296  case FOURCC_cbcs:
+
297  FALLTHROUGH_INTENDED;
+
298  case FOURCC_cens:
+
299  if (stream_type == kStreamVideo) {
+
300  // Use 1:9 pattern for video.
+
301  crypt_byte_block_ = 1u;
+
302  skip_byte_block_ = 9u;
+
303  } else {
+
304  // Tracks other than video are protected using whole-block full-sample
+
305  // encryption, which is essentially a pattern of 1:0. Note that this may
+
306  // not be the same as the non-pattern based encryption counterparts,
+
307  // e.g. in 'cens' for full sample encryption, the whole sample is
+
308  // encrypted up to the last 16-byte boundary, see 23001-7:2016(E) 9.7;
+
309  // while in 'cenc' for full sample encryption, the last partial 16-byte
+
310  // block is also encrypted, see 23001-7:2016(E) 9.4.2. Another
+
311  // difference is the use of constant iv.
+
312  crypt_byte_block_ = 1u;
+
313  skip_byte_block_ = 0u;
+
314  }
+
315  break;
+
316  default:
+
317  // Not using pattern encryption.
+
318  crypt_byte_block_ = 0u;
+
319  skip_byte_block_ = 0u;
+
320  }
+
321  return Status::OK;
+
322 }
+
323 
+
324 bool EncryptionHandler::CreateEncryptor(const EncryptionKey& encryption_key) {
+
325  std::unique_ptr<AesCryptor> encryptor;
+
326  switch (encryption_options_.protection_scheme) {
+
327  case FOURCC_cenc:
+
328  encryptor.reset(new AesCtrEncryptor);
+
329  break;
+
330  case FOURCC_cbc1:
+
331  encryptor.reset(new AesCbcEncryptor(kNoPadding));
+
332  break;
+
333  case FOURCC_cens:
+
334  encryptor.reset(new AesPatternCryptor(
+
335  crypt_byte_block_, skip_byte_block_,
+ +
337  AesCryptor::kDontUseConstantIv,
+
338  std::unique_ptr<AesCryptor>(new AesCtrEncryptor())));
+
339  break;
+
340  case FOURCC_cbcs:
+
341  encryptor.reset(new AesPatternCryptor(
+
342  crypt_byte_block_, skip_byte_block_,
+ +
344  AesCryptor::kUseConstantIv,
+
345  std::unique_ptr<AesCryptor>(new AesCbcEncryptor(kNoPadding))));
+
346  break;
+
347  case kAppleSampleAesProtectionScheme:
+
348  if (crypt_byte_block_ == 0 && skip_byte_block_ == 0) {
+
349  encryptor.reset(
+
350  new AesCbcEncryptor(kNoPadding, AesCryptor::kUseConstantIv));
+
351  } else {
+
352  encryptor.reset(new AesPatternCryptor(
+
353  crypt_byte_block_, skip_byte_block_,
+ +
355  AesCryptor::kUseConstantIv,
+
356  std::unique_ptr<AesCryptor>(new AesCbcEncryptor(kNoPadding))));
+
357  }
+
358  break;
+
359  default:
+
360  LOG(ERROR) << "Unsupported protection scheme.";
+
361  return false;
+
362  }
+
363 
+
364  std::vector<uint8_t> iv = encryption_key.iv;
+
365  if (iv.empty()) {
+
366  if (!AesCryptor::GenerateRandomIv(encryption_options_.protection_scheme,
+
367  &iv)) {
+
368  LOG(ERROR) << "Failed to generate random iv.";
+
369  return false;
+
370  }
+
371  }
+
372  const bool initialized =
+
373  encryptor->InitializeWithIv(encryption_key.key, iv);
+
374  encryptor_ = std::move(encryptor);
+
375 
+
376  encryption_config_.reset(new EncryptionConfig);
+
377  encryption_config_->protection_scheme = encryption_options_.protection_scheme;
+
378  encryption_config_->crypt_byte_block = crypt_byte_block_;
+
379  encryption_config_->skip_byte_block = skip_byte_block_;
+
380  if (encryptor_->use_constant_iv()) {
+
381  encryption_config_->per_sample_iv_size = 0;
+
382  encryption_config_->constant_iv = iv;
+
383  } else {
+
384  encryption_config_->per_sample_iv_size = static_cast<uint8_t>(iv.size());
+
385  }
+
386  encryption_config_->key_id = encryption_key.key_id;
+
387  encryption_config_->key_system_info = encryption_key.key_system_info;
+
388  return initialized;
+
389 }
+
390 
+
391 bool EncryptionHandler::EncryptVpxFrame(
+
392  const std::vector<VPxFrameInfo>& vpx_frames,
+
393  MediaSample* sample,
+
394  DecryptConfig* decrypt_config) {
+
395  uint8_t* data = sample->writable_data();
+
396  for (const VPxFrameInfo& frame : vpx_frames) {
+
397  uint16_t clear_bytes =
+
398  static_cast<uint16_t>(frame.uncompressed_header_size);
+
399  uint32_t cipher_bytes = static_cast<uint32_t>(
+
400  frame.frame_size - frame.uncompressed_header_size);
+
401 
+
402  // "VP Codec ISO Media File Format Binding" document requires that the
+
403  // encrypted bytes of each frame within the superframe must be block
+
404  // aligned so that the counter state can be computed for each frame
+
405  // within the superframe.
+
406  // ISO/IEC 23001-7:2016 10.2 'cbc1' 10.3 'cens'
+
407  // The BytesOfProtectedData size SHALL be a multiple of 16 bytes to
+
408  // avoid partial blocks in Subsamples.
+
409  // For consistency, apply block alignment to all frames.
+
410  const uint16_t misalign_bytes = cipher_bytes % kCencBlockSize;
+
411  clear_bytes += misalign_bytes;
+
412  cipher_bytes -= misalign_bytes;
+
413 
+
414  decrypt_config->AddSubsample(clear_bytes, cipher_bytes);
+
415  if (cipher_bytes > 0)
+
416  EncryptBytes(data + clear_bytes, cipher_bytes);
+
417  data += frame.frame_size;
+
418  }
+
419  // Add subsample for the superframe index if exists.
+
420  const bool is_superframe = vpx_frames.size() > 1;
+
421  if (is_superframe) {
+
422  size_t index_size = sample->data() + sample->data_size() - data;
+
423  DCHECK_LE(index_size, 2 + vpx_frames.size() * 4);
+
424  DCHECK_GE(index_size, 2 + vpx_frames.size() * 1);
+
425  uint16_t clear_bytes = static_cast<uint16_t>(index_size);
+
426  uint32_t cipher_bytes = 0;
+
427  decrypt_config->AddSubsample(clear_bytes, cipher_bytes);
+
428  }
+
429  return true;
+
430 }
+
431 
+
432 bool EncryptionHandler::EncryptNalFrame(MediaSample* sample,
+
433  DecryptConfig* decrypt_config) {
+
434  DCHECK_NE(nalu_length_size_, 0u);
+
435  DCHECK(header_parser_);
+
436  const Nalu::CodecType nalu_type =
+
437  (codec_ == kCodecH265) ? Nalu::kH265 : Nalu::kH264;
+
438  NaluReader reader(nalu_type, nalu_length_size_, sample->writable_data(),
+
439  sample->data_size());
+
440 
+
441  // Store the current length of clear data. This is used to squash
+
442  // multiple unencrypted NAL units into fewer subsample entries.
+
443  uint64_t accumulated_clear_bytes = 0;
+
444 
+
445  Nalu nalu;
+
446  NaluReader::Result result;
+
447  while ((result = reader.Advance(&nalu)) == NaluReader::kOk) {
+
448  const uint64_t nalu_total_size = nalu.header_size() + nalu.payload_size();
+
449  if (nalu.is_video_slice() && nalu_total_size >= min_protected_data_size_) {
+
450  uint64_t current_clear_bytes = leading_clear_bytes_size_;
+
451  if (current_clear_bytes == 0) {
+
452  // For video-slice NAL units, encrypt the video slice. This skips
+
453  // the frame header.
+
454  const int64_t video_slice_header_size =
+
455  header_parser_->GetHeaderSize(nalu);
+
456  if (video_slice_header_size < 0) {
+
457  LOG(ERROR) << "Failed to read slice header.";
+
458  return false;
+
459  }
+
460  current_clear_bytes = nalu.header_size() + video_slice_header_size;
+
461  }
+
462  uint64_t cipher_bytes = nalu_total_size - current_clear_bytes;
+
463 
+
464  // ISO/IEC 23001-7:2016 10.2 'cbc1' 10.3 'cens'
+
465  // The BytesOfProtectedData size SHALL be a multiple of 16 bytes to
+
466  // avoid partial blocks in Subsamples.
+
467  if (encryption_options_.protection_scheme == FOURCC_cbc1 ||
+
468  encryption_options_.protection_scheme == FOURCC_cens) {
+
469  const uint16_t misalign_bytes = cipher_bytes % kCencBlockSize;
+
470  current_clear_bytes += misalign_bytes;
+
471  cipher_bytes -= misalign_bytes;
+
472  }
+
473 
+
474  const uint8_t* nalu_data = nalu.data() + current_clear_bytes;
+
475  EncryptBytes(const_cast<uint8_t*>(nalu_data), cipher_bytes);
476 
-
477  const uint8_t* nalu_data = nalu.data() + current_clear_bytes;
-
478  EncryptBytes(const_cast<uint8_t*>(nalu_data), cipher_bytes);
-
479 
-
480  AddSubsample(
-
481  accumulated_clear_bytes + nalu_length_size_ + current_clear_bytes,
-
482  cipher_bytes, decrypt_config);
-
483  accumulated_clear_bytes = 0;
-
484  } else {
-
485  // For non-video-slice or small NAL units, don't encrypt.
-
486  accumulated_clear_bytes += nalu_length_size_ + nalu_total_size;
-
487  }
-
488  }
-
489  if (result != NaluReader::kEOStream) {
-
490  LOG(ERROR) << "Failed to parse NAL units.";
-
491  return false;
-
492  }
-
493  AddSubsample(accumulated_clear_bytes, 0, decrypt_config);
-
494  return true;
-
495 }
-
496 
-
497 void EncryptionHandler::EncryptBytes(uint8_t* data, size_t size) {
-
498  DCHECK(encryptor_);
-
499  CHECK(encryptor_->Crypt(data, size, data));
-
500 }
-
501 
-
502 void EncryptionHandler::InjectVpxParserForTesting(
-
503  std::unique_ptr<VPxParser> vpx_parser) {
-
504  vpx_parser_ = std::move(vpx_parser);
-
505 }
-
506 
-
507 void EncryptionHandler::InjectVideoSliceHeaderParserForTesting(
-
508  std::unique_ptr<VideoSliceHeaderParser> header_parser) {
-
509  header_parser_ = std::move(header_parser);
-
510 }
-
511 
-
512 } // namespace media
-
513 } // namespace shaka
+
477  AddSubsample(
+
478  accumulated_clear_bytes + nalu_length_size_ + current_clear_bytes,
+
479  cipher_bytes, decrypt_config);
+
480  accumulated_clear_bytes = 0;
+
481  } else {
+
482  // For non-video-slice or small NAL units, don't encrypt.
+
483  accumulated_clear_bytes += nalu_length_size_ + nalu_total_size;
+
484  }
+
485  }
+
486  if (result != NaluReader::kEOStream) {
+
487  LOG(ERROR) << "Failed to parse NAL units.";
+
488  return false;
+
489  }
+
490  AddSubsample(accumulated_clear_bytes, 0, decrypt_config);
+
491  return true;
+
492 }
+
493 
+
494 void EncryptionHandler::EncryptBytes(uint8_t* data, size_t size) {
+
495  DCHECK(encryptor_);
+
496  CHECK(encryptor_->Crypt(data, size, data));
+
497 }
+
498 
+
499 void EncryptionHandler::InjectVpxParserForTesting(
+
500  std::unique_ptr<VPxParser> vpx_parser) {
+
501  vpx_parser_ = std::move(vpx_parser);
+
502 }
+
503 
+
504 void EncryptionHandler::InjectVideoSliceHeaderParserForTesting(
+
505  std::unique_ptr<VideoSliceHeaderParser> header_parser) {
+
506  header_parser_ = std::move(header_parser);
+
507 }
+
508 
+
509 } // namespace media
+
510 } // namespace shaka
-
Abstract class holds stream information.
Definition: stream_info.h:60
+
Abstract class holds stream information.
Definition: stream_info.h:57
Status Dispatch(std::unique_ptr< StreamData > stream_data)
@@ -620,7 +617,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/da0/ec3__audio__util_8h_source.html b/docs/d3/da0/ec3__audio__util_8h_source.html index 4244df92bf..2dc529a609 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 0b0f030b37..d1d741f50d 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 @@ -297,7 +297,7 @@ uint64_t segment_payload_p 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 67747dfe3b..133ea2edf9 100644 --- a/docs/d3/da2/structshaka_1_1media_1_1mp4_1_1SchemeType.html +++ b/docs/d3/da2/structshaka_1_1media_1_1mp4_1_1SchemeType.html @@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/d3/dad/structshaka_1_1media_1_1mp4_1_1ID3v2.html b/docs/d3/dad/structshaka_1_1media_1_1mp4_1_1ID3v2.html index f6fa503257..969cb617f8 100644 --- a/docs/d3/dad/structshaka_1_1media_1_1mp4_1_1ID3v2.html +++ b/docs/d3/dad/structshaka_1_1media_1_1mp4_1_1ID3v2.html @@ -189,7 +189,7 @@ Additional Inherited Members diff --git a/docs/d3/db3/structshaka_1_1media_1_1EncryptionOptions-members.html b/docs/d3/db3/structshaka_1_1media_1_1EncryptionOptions-members.html index 6f7574bbda..fb806e9c0a 100644 --- a/docs/d3/db3/structshaka_1_1media_1_1EncryptionOptions-members.html +++ b/docs/d3/db3/structshaka_1_1media_1_1EncryptionOptions-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); 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 e52f0240ef..9310ee474a 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 149bce461c..7450e5c5c7 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 2122 of file box_definitions.cc.

+

Definition at line 2124 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 466ccc5219..eb0b445773 100644 --- a/docs/d3/db6/webm__parser_8cc_source.html +++ b/docs/d3/db6/webm__parser_8cc_source.html @@ -1069,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 2f16c0d027..10f899d2f3 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 5d3b50d2da..3fc68be81b 100644 --- a/docs/d3/dbe/demuxer_8cc_source.html +++ b/docs/d3/dbe/demuxer_8cc_source.html @@ -420,7 +420,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 88ffe24b23..a327630fb8 100644 --- a/docs/d3/dbe/structshaka_1_1media_1_1mp4_1_1EditList.html +++ b/docs/d3/dbe/structshaka_1_1media_1_1mp4_1_1EditList.html @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/d3/dc1/classshaka_1_1media_1_1mp2t_1_1Mp2tMediaParser.html b/docs/d3/dc1/classshaka_1_1media_1_1mp2t_1_1Mp2tMediaParser.html index e3c18068e9..747555cc95 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 @@ -257,7 +257,7 @@ std::shared_ptr< diff --git a/docs/d3/dd0/classshaka_1_1MpdNotifier.html b/docs/d3/dd0/classshaka_1_1MpdNotifier.html index 3acd064985..20b03b8e31 100644 --- a/docs/d3/dd0/classshaka_1_1MpdNotifier.html +++ b/docs/d3/dd0/classshaka_1_1MpdNotifier.html @@ -500,7 +500,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 5618a3d0f1..ff04332704 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 db099227e8..fadc02dadd 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 15e9c39f2e..905d498499 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 03d6f5e97d..926e8cf42a 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 f6adf6d6b4..a2e437b2b4 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 f8365375bd..4a4baf07b6 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 6283e14587..1f8b3161ac 100644 --- a/docs/d4/d00/mp4_2multi__segment__segmenter_8cc_source.html +++ b/docs/d4/d00/mp4_2multi__segment__segmenter_8cc_source.html @@ -305,7 +305,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 46933a4391..3853b13dec 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 1acb9f48c9..01099cf04d 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 af7b660bf5..7e38dcbd8f 100644 --- a/docs/d4/d14/classshaka_1_1media_1_1WebVttMediaParser-members.html +++ b/docs/d4/d14/classshaka_1_1media_1_1WebVttMediaParser-members.html @@ -106,7 +106,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 fc74f38fbf..8978295802 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 eb5856fc2d..bd02a4dafc 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 4884a0a1d6..c3b9db174a 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 0435818962..22d6e1752b 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 b4a3b3bb7b..61c1e4fdd1 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 1855 of file box_definitions.cc.

+

Definition at line 1857 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 beda45a0fe..7bf3cf9aad 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 dcc2850cea..a8bb8af1a9 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/d43/classshaka_1_1media_1_1ChunkingHandler.html b/docs/d4/d43/classshaka_1_1media_1_1ChunkingHandler.html index e9bae9e3f6..08d5706a84 100644 --- a/docs/d4/d43/classshaka_1_1media_1_1ChunkingHandler.html +++ b/docs/d4/d43/classshaka_1_1media_1_1ChunkingHandler.html @@ -264,7 +264,7 @@ class ChunkingHandlerTest< 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 b56e1019f4..8644851646 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 0cde0fa712..3a6a9cc687 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 447833c62b..17fc1a3ed2 100644 --- a/docs/d4/d58/classshaka_1_1media_1_1Nalu-members.html +++ b/docs/d4/d58/classshaka_1_1media_1_1Nalu-members.html @@ -159,7 +159,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 e64641d3a9..00a52b899a 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 ddf759e9e9..472f0997a3 100644 --- a/docs/d4/d5c/classshaka_1_1media_1_1DecryptConfig-members.html +++ b/docs/d4/d5c/classshaka_1_1media_1_1DecryptConfig-members.html @@ -108,7 +108,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 00df3b9f78..49550935ad 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 133582e306..51abc32177 100644 --- a/docs/d4/d70/classshaka_1_1DashIopMpdNotifier.html +++ b/docs/d4/d70/classshaka_1_1DashIopMpdNotifier.html @@ -475,7 +475,7 @@ class DashIopMpdNotifierTe diff --git a/docs/d4/d70/structshaka_1_1SegmentInfo-members.html b/docs/d4/d70/structshaka_1_1SegmentInfo-members.html index db5384579a..e6dd0c18b6 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/d83/cue_8cc_source.html b/docs/d4/d83/cue_8cc_source.html index 3b4fdb8a9c..b0687ece70 100644 --- a/docs/d4/d83/cue_8cc_source.html +++ b/docs/d4/d83/cue_8cc_source.html @@ -102,7 +102,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 5590593f67..24260ef572 100644 --- a/docs/d4/d87/nalu__reader_8h_source.html +++ b/docs/d4/d87/nalu__reader_8h_source.html @@ -302,7 +302,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 20f5c4d4ee..1ebf7ce017 100644 --- a/docs/d4/d8a/classshaka_1_1media_1_1HEVCDecoderConfigurationRecord.html +++ b/docs/d4/d8a/classshaka_1_1media_1_1HEVCDecoderConfigurationRecord.html @@ -110,8 +110,8 @@ Inheritance diagram for shaka::media::HEVCDecoderConfigurationRecord: - - + + @@ -143,24 +143,24 @@ void 

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

-

Definition at line 1698 of file box_definitions.cc.

+

Definition at line 1700 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 c6bb6d4d23..a523f0f8d8 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/d9b/classshaka_1_1media_1_1MediaHandlerTestBase.html b/docs/d4/d9b/classshaka_1_1media_1_1MediaHandlerTestBase.html index 6e05079afe..a506642014 100644 --- a/docs/d4/d9b/classshaka_1_1media_1_1MediaHandlerTestBase.html +++ b/docs/d4/d9b/classshaka_1_1media_1_1MediaHandlerTestBase.html @@ -374,7 +374,7 @@ void  diff --git a/docs/d4/da7/segmenter__test__base_8cc_source.html b/docs/d4/da7/segmenter__test__base_8cc_source.html index fbb8fca76f..c8b340f3e7 100644 --- a/docs/d4/da7/segmenter__test__base_8cc_source.html +++ b/docs/d4/da7/segmenter__test__base_8cc_source.html @@ -172,9 +172,9 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
83 
85  return new VideoStreamInfo(kTrackId, kTimeScale, kDuration, kCodec,
-
86  kCodecString, NULL, 0, kWidth, kHeight,
-
87  kPixelWidth, kPixelHeight, kTrickPlayRate,
-
88  kNaluLengthSize, kLanguage, false);
+
86  H26xStreamFormat::kUnSpecified, kCodecString, NULL,
+
87  0, kWidth, kHeight, kPixelWidth, kPixelHeight,
+
88  kTrickPlayRate, kNaluLengthSize, kLanguage, false);
89 }
90 
91 std::string SegmentTestBase::OutputFileName() const {
@@ -287,11 +287,11 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
std::string temp_dir
Specify temporary directory for intermediate files.
Definition: muxer_options.h:48
MuxerOptions CreateMuxerOptions() const
Creates a Muxer options object for testing.
static std::shared_ptr< MediaSample > CopyFrom(const uint8_t *data, size_t size, bool is_key_frame)
Definition: media_sample.cc:45
-
Holds video stream information.
+
Holds video stream information.
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 e00f5a92a6..455e1a82ba 100644 --- a/docs/d4/dad/structshaka_1_1media_1_1mp4_1_1SampleEncryption.html +++ b/docs/d4/dad/structshaka_1_1media_1_1mp4_1_1SampleEncryption.html @@ -250,7 +250,7 @@ Additional Inherited Members diff --git a/docs/d4/db1/structshaka_1_1media_1_1mp4_1_1CompactSampleSize-members.html b/docs/d4/db1/structshaka_1_1media_1_1mp4_1_1CompactSampleSize-members.html index 0e6fcc0918..0c47e8837c 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');

Public Member Functions

std::string GetCodecString (Codec codec) const
 
std::string GetCodecString (FourCC codec_fourcc) const
 
- Public Member Functions inherited from shaka::media::DecoderConfigurationRecord
bool Parse (const std::vector< uint8_t > &data)
 

Detailed Description

Class for parsing HEVC decoder configuration record.

-

Definition at line 22 of file hevc_decoder_configuration_record.h.

+

Definition at line 23 of file hevc_decoder_configuration_record.h.

Member Function Documentation

- +
- - + +
std::string shaka::media::HEVCDecoderConfigurationRecord::GetCodecString (Codec codec)FourCC codec_fourcc) const
Returns
The codec string.
-

Definition at line 135 of file hevc_decoder_configuration_record.cc.

+

Definition at line 123 of file hevc_decoder_configuration_record.cc.

@@ -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 0a8c8cce68..8bda39cdf2 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
diff --git a/docs/d4/da6/classshaka_1_1media_1_1PlayReadyKeySource.html b/docs/d4/da6/classshaka_1_1media_1_1PlayReadyKeySource.html index ec4efc74b8..8e7f084981 100644 --- a/docs/d4/da6/classshaka_1_1media_1_1PlayReadyKeySource.html +++ b/docs/d4/da6/classshaka_1_1media_1_1PlayReadyKeySource.html @@ -556,7 +556,7 @@ Additional Inherited Members
diff --git a/docs/d4/db2/cluster__builder_8h_source.html b/docs/d4/db2/cluster__builder_8h_source.html index 888c9b81f2..76ea61e357 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 6d8d19132d..cfcfcc0c99 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 1666218f9f..5127aee0ac 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 1911 of file box_definitions.cc.

+

Definition at line 1913 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 1f5e38dc36..3db6919313 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 851c043793..68e9928b18 100644 --- a/docs/d4/dd3/bit__reader_8h_source.html +++ b/docs/d4/dd3/bit__reader_8h_source.html @@ -186,7 +186,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/dd4/structshaka_1_1media_1_1mp4_1_1FullBox-members.html b/docs/d4/dd4/structshaka_1_1media_1_1mp4_1_1FullBox-members.html index aab8d51af4..9e7e762c92 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 ca0303fd40..c1a5f29063 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 d59b0f3726..4c1257e8fc 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 1c0dc8fcc2..55d8a0403e 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 2006 of file box_definitions.cc.

+

Definition at line 2008 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 740aa9cb20..76be8ad5f8 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 26f0969cb2..569b8c07ff 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 6809306e7a..d78e3d0921 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 31265711a2..480c66c67e 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/df5/webvtt__sample__converter_8cc_source.html b/docs/d4/df5/webvtt__sample__converter_8cc_source.html index d10786a8fb..fa78d967da 100644 --- a/docs/d4/df5/webvtt__sample__converter_8cc_source.html +++ b/docs/d4/df5/webvtt__sample__converter_8cc_source.html @@ -416,7 +416,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 efab4c706d..c3b11ac0e2 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 2539 of file box_definitions.cc.

+

Definition at line 2541 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 d8c3a38095..de79ca6225 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 1679 of file box_definitions.cc.

+

Definition at line 1681 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 bbccebf384..1d1e8e175d 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 5f68f470ec..1e078ea7c8 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 35e26f764d..7b42284769 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 40d1b2682b..25286ca485 100644 --- a/docs/d5/d05/structshaka_1_1media_1_1mp4_1_1OriginalFormat.html +++ b/docs/d5/d05/structshaka_1_1media_1_1mp4_1_1OriginalFormat.html @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d5/d09/structshaka_1_1media_1_1mp4_1_1CueIDBox.html b/docs/d5/d09/structshaka_1_1media_1_1mp4_1_1CueIDBox.html index 81c52b5c9d..208690a94a 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 2641 of file box_definitions.cc.

+

Definition at line 2643 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 0183500204..4598507d3e 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 288c226e34..b74df334b1 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 1614 of file box_definitions.cc.

+

Definition at line 1616 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 24cc015bc6..e0928c9af2 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 6cb8ee561b..c77c3749f7 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 d723c92063..7671417115 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 7c0022cb82..c7f838dabb 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 3c25958b9b..f0037a7759 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 9da425d00e..0a2900e343 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 07722320e5..60289349f1 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 4e0a283b17..7757fe03ca 100644 --- a/docs/d5/d40/webm_2single__segment__segmenter_8h_source.html +++ b/docs/d5/d40/webm_2single__segment__segmenter_8h_source.html @@ -162,7 +162,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 b34b0ac0ae..688cbb23fe 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 254813f792..8d1bdf7ff7 100644 --- a/docs/d5/d4d/box_8cc_source.html +++ b/docs/d5/d4d/box_8cc_source.html @@ -195,7 +195,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d52/ts__section__pes_8h_source.html b/docs/d5/d52/ts__section__pes_8h_source.html index c1cded4bb2..a847cb4f3e 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 5daf08b40f..cfb033742c 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 3ec1090186..4357140a42 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 7545b8f4d1..68d0c1a1f7 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 cb84294404..d179408a56 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 e4e406b51c..a77f124f05 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 d9fe7d99ec..c7401bdf18 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 c42a749bba..86de458f84 100644 --- a/docs/d5/d66/classshaka_1_1media_1_1NalUnitToByteStreamConverter.html +++ b/docs/d5/d66/classshaka_1_1media_1_1NalUnitToByteStreamConverter.html @@ -298,7 +298,7 @@ class NalUnitToByteStreamC diff --git a/docs/d5/d6f/vlog__flags_8cc_source.html b/docs/d5/d6f/vlog__flags_8cc_source.html index 518415374c..1b744d535f 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 f75808031f..d849fc8915 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 434b2b05d1..a68dceebde 100644 --- a/docs/d5/d7b/box__definitions_8h_source.html +++ b/docs/d5/d7b/box__definitions_8h_source.html @@ -1000,7 +1000,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d86/structshaka_1_1media_1_1mp4_1_1MediaInformation.html b/docs/d5/d86/structshaka_1_1media_1_1mp4_1_1MediaInformation.html index f96b176e6b..01dc1c1477 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 2042 of file box_definitions.cc.

+

Definition at line 2044 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 9df7ec5137..60a3e0e3c4 100644 --- a/docs/d5/d89/widevine__key__source_8cc_source.html +++ b/docs/d5/d89/widevine__key__source_8cc_source.html @@ -695,7 +695,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 278f38cbc7..12c3621b2e 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 875b01d28e..362643da8d 100644 --- a/docs/d5/d8f/webm__cluster__parser_8cc_source.html +++ b/docs/d5/d8f/webm__cluster__parser_8cc_source.html @@ -727,7 +727,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 4d40626fe3..8f9c0e2bcd 100644 --- a/docs/d5/d91/es__parser__adts_8cc_source.html +++ b/docs/d5/d91/es__parser__adts_8cc_source.html @@ -364,7 +364,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 74cc04e314..656fd18d35 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 733061cd0a..a8c148a69a 100644 --- a/docs/d5/d98/encryptor_8cc_source.html +++ b/docs/d5/d98/encryptor_8cc_source.html @@ -206,7 +206,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 6f1750051b..3603df93d7 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 0ea5153eec..d0919a2538 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 b1b6435718..4228ea2212 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 49f28168f8..905d75224e 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 b938227516..acefb6c100 100644 --- a/docs/d5/db1/classshaka_1_1media_1_1StreamInfo.html +++ b/docs/d5/db1/classshaka_1_1media_1_1StreamInfo.html @@ -174,7 +174,7 @@ void set_encryption_config

Detailed Description

Abstract class holds stream information.

-

Definition at line 60 of file stream_info.h.

+

Definition at line 57 of file stream_info.h.

Member Function Documentation

@@ -198,7 +198,7 @@ void set_encryption_config
Returns
true if this object has appropriate configuration values, false otherwise.
-

Implemented in shaka::media::TextStreamInfo, shaka::media::AudioStreamInfo, and shaka::media::VideoStreamInfo.

+

Implemented in shaka::media::VideoStreamInfo, shaka::media::TextStreamInfo, and shaka::media::AudioStreamInfo.

@@ -224,7 +224,7 @@ void set_encryption_config
Returns
A human-readable string describing the stream info.
-

Reimplemented in shaka::media::AudioStreamInfo, and shaka::media::VideoStreamInfo.

+

Reimplemented in shaka::media::VideoStreamInfo, and shaka::media::AudioStreamInfo.

Definition at line 37 of file stream_info.cc.

@@ -237,7 +237,7 @@ void set_encryption_config
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 1955349220..24b0903cad 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 d01832eeb2..8c658b4d44 100644 --- a/docs/d5/dba/ts__packet_8cc_source.html +++ b/docs/d5/dba/ts__packet_8cc_source.html @@ -307,7 +307,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/dc1/webm__webvtt__parser_8cc_source.html b/docs/d5/dc1/webm__webvtt__parser_8cc_source.html index e4c9bdbfef..2a8d90e0e6 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 5d700aa3d3..9d2acfbdb1 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 13bbdd8bdb..5e0603f508 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 bebdfafcf6..ee37fae255 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 7f7d5dbe28..afd0a898e2 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 3b1103837a..a631069064 100644 --- a/docs/d5/de0/bit__reader_8cc_source.html +++ b/docs/d5/de0/bit__reader_8cc_source.html @@ -197,7 +197,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/de0/classshaka_1_1media_1_1mp2t_1_1PesPacketGenerator.html b/docs/d5/de0/classshaka_1_1media_1_1mp2t_1_1PesPacketGenerator.html index ecd484a633..41545c1f60 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 @@ -271,7 +271,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 023e6d0839..898b8fd2ef 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 8f9292fb18..271d1236de 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 d1f97a2753..c83e87dcf4 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 bdc543aeba..1b28cf6aa5 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 45133739cb..65c60c476c 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 1809dd8432..8948c6ba1e 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 ac07de16ed..692af3b747 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/d02/playready__key__encryption__flags_8h_source.html b/docs/d6/d02/playready__key__encryption__flags_8h_source.html index da952fe1ba..b10e33b016 100644 --- a/docs/d6/d02/playready__key__encryption__flags_8h_source.html +++ b/docs/d6/d02/playready__key__encryption__flags_8h_source.html @@ -121,7 +121,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 cc71252312..01ada19b48 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 b4ca639db9..d97cc5a50f 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 d419004e6d..c07138def5 100644 --- a/docs/d6/d16/text__stream__info_8cc_source.html +++ b/docs/d6/d16/text__stream__info_8cc_source.html @@ -119,13 +119,13 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
30 
31 } // namespace media
32 } // namespace shaka
-
Abstract class holds stream information.
Definition: stream_info.h:60
+
Abstract class holds stream information.
Definition: stream_info.h:57
TextStreamInfo(int track_id, uint32_t time_scale, uint64_t duration, Codec codec, const std::string &codec_string, const std::string &codec_config, uint16_t width, uint16_t height, const std::string &language)
bool IsValidConfig() const override
diff --git a/docs/d6/d17/es__parser__h264_8cc_source.html b/docs/d6/d17/es__parser__h264_8cc_source.html index a9e1e4263b..192e9bfc31 100644 --- a/docs/d6/d17/es__parser__h264_8cc_source.html +++ b/docs/d6/d17/es__parser__h264_8cc_source.html @@ -239,30 +239,31 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
150  H26xByteToUnitStreamConverter::kUnitStreamNaluLengthSize;
151  last_video_decoder_config_ = std::make_shared<VideoStreamInfo>(
152  pid(), kMpeg2Timescale, kInfiniteDuration, kCodecH264,
-
153  AVCDecoderConfigurationRecord::GetCodecString(decoder_config_record[1],
-
154  decoder_config_record[2],
-
155  decoder_config_record[3]),
-
156  decoder_config_record.data(), decoder_config_record.size(), coded_width,
-
157  coded_height, pixel_width, pixel_height, 0, nalu_length_size,
-
158  std::string(), false);
-
159  DVLOG(1) << "Profile IDC: " << sps->profile_idc;
-
160  DVLOG(1) << "Level IDC: " << sps->level_idc;
-
161  DVLOG(1) << "log2_max_frame_num_minus4: " << sps->log2_max_frame_num_minus4;
-
162 
-
163  // Video config notification.
-
164  new_stream_info_cb_.Run(last_video_decoder_config_);
-
165 
-
166  return true;
-
167 }
-
168 
-
169 } // namespace mp2t
-
170 } // namespace media
-
171 } // namespace shaka
+
153  stream_converter()->stream_format(),
+
154  AVCDecoderConfigurationRecord::GetCodecString(decoder_config_record[1],
+
155  decoder_config_record[2],
+
156  decoder_config_record[3]),
+
157  decoder_config_record.data(), decoder_config_record.size(), coded_width,
+
158  coded_height, pixel_width, pixel_height, 0, nalu_length_size,
+
159  std::string(), false);
+
160  DVLOG(1) << "Profile IDC: " << sps->profile_idc;
+
161  DVLOG(1) << "Level IDC: " << sps->level_idc;
+
162  DVLOG(1) << "log2_max_frame_num_minus4: " << sps->log2_max_frame_num_minus4;
+
163 
+
164  // Video config notification.
+
165  new_stream_info_cb_.Run(last_video_decoder_config_);
+
166 
+
167  return true;
+
168 }
+
169 
+
170 } // namespace mp2t
+
171 } // namespace media
+
172 } // namespace shaka
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 ccffa5995a..8db8de3f98 100644 --- a/docs/d6/d1a/structshaka_1_1media_1_1mp4_1_1MovieHeader.html +++ b/docs/d6/d1a/structshaka_1_1media_1_1mp4_1_1MovieHeader.html @@ -200,7 +200,7 @@ Additional Inherited Members diff --git a/docs/d6/d1a/ts__packet__writer__util_8cc_source.html b/docs/d6/d1a/ts__packet__writer__util_8cc_source.html index 7bd68c1393..e2e92e39d1 100644 --- a/docs/d6/d1a/ts__packet__writer__util_8cc_source.html +++ b/docs/d6/d1a/ts__packet__writer__util_8cc_source.html @@ -255,7 +255,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d26/structshaka_1_1media_1_1VideoStreamInfoParameters.html b/docs/d6/d26/structshaka_1_1media_1_1VideoStreamInfoParameters.html index 3d8000d197..e5c59d531a 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 09a3bad728..40905ce9e8 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 853179ac08..f46a0a5fad 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 dc28506684..1debb32e55 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 706d376c74..41790139a9 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/d4c/classshaka_1_1media_1_1EncryptionHandler.html b/docs/d6/d4c/classshaka_1_1media_1_1EncryptionHandler.html index 5c9b837e85..8b88e2b8c6 100644 --- a/docs/d6/d4c/classshaka_1_1media_1_1EncryptionHandler.html +++ b/docs/d6/d4c/classshaka_1_1media_1_1EncryptionHandler.html @@ -255,7 +255,7 @@ class EncryptionHandlerTes 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 397f13dcc9..069a46a82e 100644 --- a/docs/d6/d4e/webm_2multi__segment__segmenter_8cc_source.html +++ b/docs/d6/d4e/webm_2multi__segment__segmenter_8cc_source.html @@ -182,7 +182,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 02e64f3bd6..9a057f4701 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 5dbb161a81..a765e74eaa 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 13eb52d4e6..9ce929bae3 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 af15d809bb..e5c39c00e5 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/d6a/cue_8h_source.html b/docs/d6/d6a/cue_8h_source.html index 33324380de..feaba4f9ff 100644 --- a/docs/d6/d6a/cue_8h_source.html +++ b/docs/d6/d6a/cue_8h_source.html @@ -126,7 +126,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 5308422e95..3484cf95d5 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 8a21316c48..75ca87b7d9 100644 --- a/docs/d6/d6e/ts__section__pes_8cc_source.html +++ b/docs/d6/d6e/ts__section__pes_8cc_source.html @@ -407,7 +407,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d71/scoped__xml__ptr_8h_source.html b/docs/d6/d71/scoped__xml__ptr_8h_source.html index 25cef7f35a..ab66530ce8 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 bfb41695dd..083403d495 100644 --- a/docs/d6/d77/dash__iop__mpd__notifier_8h_source.html +++ b/docs/d6/d77/dash__iop__mpd__notifier_8h_source.html @@ -206,7 +206,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 06586a097b..ad4cbf822d 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 2711 of file box_definitions.cc.

+

Definition at line 2713 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 44aeff8b7d..9dd7799ff5 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 ceeefea269..4f7144d43e 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/d82/structshaka_1_1media_1_1EncryptionOptions.html b/docs/d6/d82/structshaka_1_1media_1_1EncryptionOptions.html index f160f5ea70..67cf7bf291 100644 --- a/docs/d6/d82/structshaka_1_1media_1_1EncryptionOptions.html +++ b/docs/d6/d82/structshaka_1_1media_1_1EncryptionOptions.html @@ -189,7 +189,7 @@ FourCC  diff --git a/docs/d6/d86/bandwidth__estimator_8cc_source.html b/docs/d6/d86/bandwidth__estimator_8cc_source.html index e3764ddddc..652e95b0c8 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 41cfbe5509..1aa2340d69 100644 --- a/docs/d6/d8a/vp9__parser_8cc_source.html +++ b/docs/d6/d8a/vp9__parser_8cc_source.html @@ -660,7 +660,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d8f/classshaka_1_1xml_1_1RepresentationBaseXmlNode-members.html b/docs/d6/d8f/classshaka_1_1xml_1_1RepresentationBaseXmlNode-members.html index 59b51662e4..4e7d286fae 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 dc025bf7ff..5e1dc6367a 100644 --- a/docs/d6/d9b/h264__parser_8h_source.html +++ b/docs/d6/d9b/h264__parser_8h_source.html @@ -443,7 +443,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 d21ba840db..5993e0d19a 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 7385bc843a..89b6f3c082 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 c6bdb05d4c..737b9643cb 100644 --- a/docs/d6/da3/mpd__builder_8h_source.html +++ b/docs/d6/da3/mpd__builder_8h_source.html @@ -522,7 +522,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 23591ab87d..c04b0f197f 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 be7e44affd..bdf0ed8b85 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 29d2bbbbe3..5b180ab9c9 100644 --- a/docs/d6/da9/classshaka_1_1media_1_1BitReader.html +++ b/docs/d6/da9/classshaka_1_1media_1_1BitReader.html @@ -365,7 +365,7 @@ template<typename T > diff --git a/docs/d6/daa/structshaka_1_1media_1_1mp4_1_1VTTCueBox.html b/docs/d6/daa/structshaka_1_1media_1_1mp4_1_1VTTCueBox.html index f732a15718..a033d0f03e 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 2729 of file box_definitions.cc.

+

Definition at line 2731 of file box_definitions.cc.

@@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/d6/db1/classshaka_1_1media_1_1VideoStreamInfo.html b/docs/d6/db1/classshaka_1_1media_1_1VideoStreamInfo.html index 36988ea431..b0f147d9bf 100644 --- a/docs/d6/db1/classshaka_1_1media_1_1VideoStreamInfo.html +++ b/docs/d6/db1/classshaka_1_1media_1_1VideoStreamInfo.html @@ -110,8 +110,11 @@ Inheritance diagram for shaka::media::VideoStreamInfo: - - + + + + @@ -210,9 +213,9 @@ void 

Public Member Functions

 VideoStreamInfo (int track_id, uint32_t time_scale, uint64_t duration, Codec codec, const std::string &codec_string, const uint8_t *codec_config, size_t codec_config_size, uint16_t width, uint16_t height, uint32_t pixel_width, uint32_t pixel_height, int16_t trick_play_rate, uint8_t nalu_length_size, const std::string &language, bool is_encrypted)
 
 VideoStreamInfo (int track_id, uint32_t time_scale, uint64_t duration, Codec codec, H26xStreamFormat h26x_stream_format, const std::string &codec_string, const uint8_t *codec_config, size_t codec_config_size, uint16_t width, uint16_t height, uint32_t pixel_width, uint32_t pixel_height, int16_t trick_play_rate, uint8_t nalu_length_size, const std::string &language, bool is_encrypted)
 
+H26xStreamFormat h26x_stream_format () const
 
uint16_t width () const
 
set_encryption_config

Detailed Description

Holds video stream information.

-

Definition at line 16 of file video_stream_info.h.

+

Definition at line 23 of file video_stream_info.h.

Constructor & Destructor Documentation

- +
@@ -240,6 +243,12 @@ void  + + + + + + @@ -322,7 +331,7 @@ void 
set_encryption_config Codec  codec,
H26xStreamFormat h26x_stream_format,
set_encryption_config -

Definition at line 49 of file video_stream_info.cc.

+

Definition at line 39 of file video_stream_info.cc.

@@ -351,7 +360,7 @@ void 
set_encryption_config

Implements shaka::media::StreamInfo.

-

Definition at line 67 of file video_stream_info.cc.

+

Definition at line 75 of file video_stream_info.cc.

@@ -378,7 +387,7 @@ void 
set_encryption_config

Returns the pixel height.

Returns
0 if unknown.
-

Definition at line 44 of file video_stream_info.h.

+

Definition at line 61 of file video_stream_info.h.

@@ -405,7 +414,7 @@ void 
set_encryption_config

Returns the pixel width.

Returns
0 if unknown.
-

Definition at line 41 of file video_stream_info.h.

+

Definition at line 58 of file video_stream_info.h.

@@ -433,7 +442,7 @@ void 
set_encryption_config

Reimplemented from shaka::media::StreamInfo.

-

Definition at line 74 of file video_stream_info.cc.

+

Definition at line 82 of file video_stream_info.cc.

@@ -444,7 +453,7 @@ void 
set_encryption_config 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 92e9cd8e28..418b44c83f 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 84ef7a2251..abfe16ec03 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 944f97e95c..0df3e74a49 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 be12c06442..f5cdd1b961 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 c99a05d04a..68f5ab86ab 100644 --- a/docs/d6/dcb/structshaka_1_1media_1_1mp4_1_1SampleEncryptionEntry.html +++ b/docs/d6/dcb/structshaka_1_1media_1_1mp4_1_1SampleEncryptionEntry.html @@ -250,7 +250,7 @@ std::vector< diff --git a/docs/d6/dcc/classshaka_1_1media_1_1VP9Parser-members.html b/docs/d6/dcc/classshaka_1_1media_1_1VP9Parser-members.html index 7c323aeee8..1ac6288511 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 52f53487bf..8eda43ce9a 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 6dd8f19f85..5657b0fcfc 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 std::shared_ptr
diff --git a/docs/d6/dd0/structshaka_1_1media_1_1H264SEIMessage.html b/docs/d6/dd0/structshaka_1_1media_1_1H264SEIMessage.html index 83a0ca9afa..565aa8d350 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 1274f809a3..5a3944737c 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 c9502ccb93..4a3a2aa7e6 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 b6fe8a0efe..09a89ba65f 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 2cdfbe6a26..b81c64ec14 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 889b29b923..1cc964fccd 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 f1e024faca..40af231a0a 100644 --- a/docs/d6/de9/ts__segmenter_8cc_source.html +++ b/docs/d6/de9/ts__segmenter_8cc_source.html @@ -227,7 +227,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
138 } // namespace shaka
virtual void OnNewSegment(const std::string &segment_name, uint64_t start_time, uint64_t duration, uint64_t segment_file_size)=0
-
Abstract class holds stream information.
Definition: stream_info.h:60
+
Abstract class holds stream information.
Definition: stream_info.h:57
Status Initialize(const StreamInfo &stream_info)
Definition: ts_segmenter.cc:34
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
@@ -246,7 +246,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 c8853c106c..1083f5b0d6 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 489fb145c8..eb2f65b8e1 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 7ea106d303..24a9b532df 100644 --- a/docs/d6/dff/classshaka_1_1media_1_1Nalu.html +++ b/docs/d6/dff/classshaka_1_1media_1_1Nalu.html @@ -247,7 +247,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 d8c6bd3580..f8fc09db18 100644 --- a/docs/d7/d01/structshaka_1_1media_1_1mp4_1_1SampleGroupDescription.html +++ b/docs/d7/d01/structshaka_1_1media_1_1mp4_1_1SampleGroupDescription.html @@ -194,7 +194,7 @@ Additional Inherited Members diff --git a/docs/d7/d07/structshaka_1_1media_1_1mp4_1_1SoundMediaHeader.html b/docs/d7/d07/structshaka_1_1media_1_1mp4_1_1SoundMediaHeader.html index 429698426a..888fc5e462 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 1956 of file box_definitions.cc.

+

Definition at line 1958 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 96651c565d..e92b651f52 100644 --- a/docs/d7/d0b/muxer__listener__test__helper_8h_source.html +++ b/docs/d7/d0b/muxer__listener__test__helper_8h_source.html @@ -205,7 +205,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 e48547b595..a588e38304 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 126a36979f..5754642034 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 0b968d2146..fa099e22c8 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 9d8850e4ed..10b18b9660 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 797346fd82..1fc26fdda5 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 a019a65fb8..174a201980 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 1537c0e128..a8e5c3d09c 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/d34/structshaka_1_1media_1_1EncryptionConfig.html b/docs/d7/d34/structshaka_1_1media_1_1EncryptionConfig.html index 78f88f24d5..573c5fe7e6 100644 --- a/docs/d7/d34/structshaka_1_1media_1_1EncryptionConfig.html +++ b/docs/d7/d34/structshaka_1_1media_1_1EncryptionConfig.html @@ -128,7 +128,7 @@ std::vector
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 f072453a38..ad386691f2 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 7c9cd86a73..4334ab87cf 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 60b04f784d..40889ac237 100644 --- a/docs/d7/d42/structshaka_1_1media_1_1mp4_1_1SampleSize.html +++ b/docs/d7/d42/structshaka_1_1media_1_1mp4_1_1SampleSize.html @@ -188,7 +188,7 @@ Additional Inherited Members diff --git a/docs/d7/d44/structshaka_1_1media_1_1mp4_1_1SampleEncryption-members.html b/docs/d7/d44/structshaka_1_1media_1_1mp4_1_1SampleEncryption-members.html index 9bbce05e8c..d6dcf2a764 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 fd89e6adc0..136160e907 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 9cfe897e38..5dc07d732d 100644 --- a/docs/d7/d54/classshaka_1_1media_1_1H26xByteToUnitStreamConverter-members.html +++ b/docs/d7/d54/classshaka_1_1media_1_1H26xByteToUnitStreamConverter-members.html @@ -95,13 +95,17 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); - - + + + + + +
ConvertByteStreamToNalUnitStream(const uint8_t *input_frame, size_t input_frame_size, std::vector< uint8_t > *output_frame)shaka::media::H26xByteToUnitStreamConverter
GetDecoderConfigurationRecord(std::vector< uint8_t > *decoder_config) const =0shaka::media::H26xByteToUnitStreamConverterpure virtual
H26xByteToUnitStreamConverter(Nalu::CodecType type) (defined in shaka::media::H26xByteToUnitStreamConverter)shaka::media::H26xByteToUnitStreamConverterexplicit
kUnitStreamNaluLengthSize (defined in shaka::media::H26xByteToUnitStreamConverter)shaka::media::H26xByteToUnitStreamConverterstatic
H26xByteToUnitStreamConverter(Nalu::CodecType type)shaka::media::H26xByteToUnitStreamConverterexplicit
H26xByteToUnitStreamConverter(Nalu::CodecType type, H26xStreamFormat stream_format)shaka::media::H26xByteToUnitStreamConverter
kUnitStreamNaluLengthSize (defined in shaka::media::H26xByteToUnitStreamConverter)shaka::media::H26xByteToUnitStreamConverterstatic
stream_format() const (defined in shaka::media::H26xByteToUnitStreamConverter)shaka::media::H26xByteToUnitStreamConverterinline
strip_parameter_set_nalus() const (defined in shaka::media::H26xByteToUnitStreamConverter)shaka::media::H26xByteToUnitStreamConverterinlineprotected
WarnIfNotMatch(int nalu_type, const uint8_t *nalu_ptr, size_t nalu_size, const std::vector< uint8_t > &vector) (defined in shaka::media::H26xByteToUnitStreamConverter)shaka::media::H26xByteToUnitStreamConverterprotected
~H26xByteToUnitStreamConverter() (defined in shaka::media::H26xByteToUnitStreamConverter)shaka::media::H26xByteToUnitStreamConvertervirtual
diff --git a/docs/d7/d58/structshaka_1_1media_1_1PeriodInfo.html b/docs/d7/d58/structshaka_1_1media_1_1PeriodInfo.html index d202fe711f..04da562e56 100644 --- a/docs/d7/d58/structshaka_1_1media_1_1PeriodInfo.html +++ b/docs/d7/d58/structshaka_1_1media_1_1PeriodInfo.html @@ -99,7 +99,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 5d650f2bbd..150ce61ac7 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 e962d4fde8..8fb6fad4db 100644 --- a/docs/d7/d6d/classshaka_1_1media_1_1MediaSample.html +++ b/docs/d7/d6d/classshaka_1_1media_1_1MediaSample.html @@ -410,7 +410,7 @@ static std::shared_ptr
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 55343dd7d0..5db965947e 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 f816af4fdb..cb88b4e021 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/d79/chunking__handler_8h_source.html b/docs/d7/d79/chunking__handler_8h_source.html index 877540cc4d..b45c8deaec 100644 --- a/docs/d7/d79/chunking__handler_8h_source.html +++ b/docs/d7/d79/chunking__handler_8h_source.html @@ -189,7 +189,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 2c33fcef5f..748c162045 100644 --- a/docs/d7/d7a/classshaka_1_1media_1_1UdpFile.html +++ b/docs/d7/d7a/classshaka_1_1media_1_1UdpFile.html @@ -462,7 +462,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 51f2fdfb32..72cb90f9fe 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 92f6e931eb..f2abb412f4 100644 --- a/docs/d7/d87/video__stream__info_8h_source.html +++ b/docs/d7/d87/video__stream__info_8h_source.html @@ -101,77 +101,95 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
12 namespace shaka {
13 namespace media {
14 
-
16 class VideoStreamInfo : public StreamInfo {
-
17  public:
-
21  VideoStreamInfo(int track_id, uint32_t time_scale, uint64_t duration,
-
22  Codec codec, const std::string& codec_string,
-
23  const uint8_t* codec_config, size_t codec_config_size,
-
24  uint16_t width, uint16_t height, uint32_t pixel_width,
-
25  uint32_t pixel_height, int16_t trick_play_rate,
-
26  uint8_t nalu_length_size, const std::string& language,
-
27  bool is_encrypted);
-
28 
-
29  ~VideoStreamInfo() override;
-
30 
-
33  bool IsValidConfig() const override;
-
34  std::string ToString() const override;
-
36 
-
37  uint16_t width() const { return width_; }
-
38  uint16_t height() const { return height_; }
-
41  uint32_t pixel_width() const { return pixel_width_; }
-
44  uint32_t pixel_height() const { return pixel_height_; }
-
45  uint8_t nalu_length_size() const { return nalu_length_size_; }
-
46  int16_t trick_play_rate() const { return trick_play_rate_; }
-
47  const std::vector<uint8_t>& eme_init_data() const { return eme_init_data_; }
-
48 
-
49  void set_width(uint32_t width) { width_ = width; }
-
50  void set_height(uint32_t height) { height_ = height; }
-
51  void set_pixel_width(uint32_t pixel_width) { pixel_width_ = pixel_width; }
-
52  void set_pixel_height(uint32_t pixel_height) { pixel_height_ = pixel_height; }
-
53  void set_eme_init_data(const uint8_t* eme_init_data,
-
54  size_t eme_init_data_size) {
-
55  eme_init_data_.assign(eme_init_data, eme_init_data + eme_init_data_size);
-
56  }
-
57 
-
58  private:
-
59  uint16_t width_;
-
60  uint16_t height_;
-
61 
-
62  // pixel_width_:pixel_height_ is the sample aspect ratio.
-
63  // 0 means unknown.
-
64  uint32_t pixel_width_;
-
65  uint32_t pixel_height_;
-
66  int16_t trick_play_rate_; // Non-zero for trick-play streams.
-
67 
-
68  // Specifies the size of the NAL unit length field. Can be 1, 2 or 4 bytes, or
-
69  // 0 if the stream is not a NAL structured video stream or if it is an AnnexB
-
70  // byte stream.
-
71  uint8_t nalu_length_size_;
-
72 
-
73  // Container-specific data used by CDM to generate a license request:
-
74  // https://w3c.github.io/encrypted-media/#initialization-data.
-
75  std::vector<uint8_t> eme_init_data_;
-
76 
-
77  // Not using DISALLOW_COPY_AND_ASSIGN here intentionally to allow the compiler
-
78  // generated copy constructor and assignment operator. Since the extra data is
-
79  // typically small, the performance impact is minimal.
-
80 };
-
81 
-
82 } // namespace media
-
83 } // namespace shaka
-
84 
-
85 #endif // MEDIA_BASE_VIDEO_STREAM_INFO_H_
-
Abstract class holds stream information.
Definition: stream_info.h:60
-
bool IsValidConfig() const override
- - -
Holds video stream information.
-
std::string ToString() const override
-
VideoStreamInfo(int track_id, uint32_t time_scale, uint64_t duration, Codec codec, const std::string &codec_string, const uint8_t *codec_config, size_t codec_config_size, uint16_t width, uint16_t height, uint32_t pixel_width, uint32_t pixel_height, int16_t trick_play_rate, uint8_t nalu_length_size, const std::string &language, bool is_encrypted)
+
15 enum class H26xStreamFormat {
+
16  kUnSpecified,
+
17  kAnnexbByteStream,
+
18  kNalUnitStreamWithParameterSetNalus,
+
19  kNalUnitStreamWithoutParameterSetNalus,
+
20 };
+
21 
+
23 class VideoStreamInfo : public StreamInfo {
+
24  public:
+
28  VideoStreamInfo(int track_id,
+
29  uint32_t time_scale,
+
30  uint64_t duration,
+
31  Codec codec,
+
32  H26xStreamFormat h26x_stream_format,
+
33  const std::string& codec_string,
+
34  const uint8_t* codec_config,
+
35  size_t codec_config_size,
+
36  uint16_t width,
+
37  uint16_t height,
+
38  uint32_t pixel_width,
+
39  uint32_t pixel_height,
+
40  int16_t trick_play_rate,
+
41  uint8_t nalu_length_size,
+
42  const std::string& language,
+
43  bool is_encrypted);
+
44 
+
45  ~VideoStreamInfo() override;
+
46 
+
49  bool IsValidConfig() const override;
+
50  std::string ToString() const override;
+
52 
+
53  H26xStreamFormat h26x_stream_format() const { return h26x_stream_format_; }
+
54  uint16_t width() const { return width_; }
+
55  uint16_t height() const { return height_; }
+
58  uint32_t pixel_width() const { return pixel_width_; }
+
61  uint32_t pixel_height() const { return pixel_height_; }
+
62  uint8_t nalu_length_size() const { return nalu_length_size_; }
+
63  int16_t trick_play_rate() const { return trick_play_rate_; }
+
64  const std::vector<uint8_t>& eme_init_data() const { return eme_init_data_; }
+
65 
+
66  void set_width(uint32_t width) { width_ = width; }
+
67  void set_height(uint32_t height) { height_ = height; }
+
68  void set_pixel_width(uint32_t pixel_width) { pixel_width_ = pixel_width; }
+
69  void set_pixel_height(uint32_t pixel_height) { pixel_height_ = pixel_height; }
+
70  void set_eme_init_data(const uint8_t* eme_init_data,
+
71  size_t eme_init_data_size) {
+
72  eme_init_data_.assign(eme_init_data, eme_init_data + eme_init_data_size);
+
73  }
+
74 
+
75  private:
+
76  H26xStreamFormat h26x_stream_format_;
+
77  uint16_t width_;
+
78  uint16_t height_;
+
79 
+
80  // pixel_width_:pixel_height_ is the sample aspect ratio.
+
81  // 0 means unknown.
+
82  uint32_t pixel_width_;
+
83  uint32_t pixel_height_;
+
84  int16_t trick_play_rate_; // Non-zero for trick-play streams.
+
85 
+
86  // Specifies the size of the NAL unit length field. Can be 1, 2 or 4 bytes, or
+
87  // 0 if the stream is not a NAL structured video stream or if it is an AnnexB
+
88  // byte stream.
+
89  uint8_t nalu_length_size_;
+
90 
+
91  // Container-specific data used by CDM to generate a license request:
+
92  // https://w3c.github.io/encrypted-media/#initialization-data.
+
93  std::vector<uint8_t> eme_init_data_;
+
94 
+
95  // Not using DISALLOW_COPY_AND_ASSIGN here intentionally to allow the compiler
+
96  // generated copy constructor and assignment operator. Since the extra data is
+
97  // typically small, the performance impact is minimal.
+
98 };
+
99 
+
100 } // namespace media
+
101 } // namespace shaka
+
102 
+
103 #endif // MEDIA_BASE_VIDEO_STREAM_INFO_H_
+
Abstract class holds stream information.
Definition: stream_info.h:57
+
bool IsValidConfig() const override
+
VideoStreamInfo(int track_id, uint32_t time_scale, uint64_t duration, Codec codec, H26xStreamFormat h26x_stream_format, const std::string &codec_string, const uint8_t *codec_config, size_t codec_config_size, uint16_t width, uint16_t height, uint32_t pixel_width, uint32_t pixel_height, int16_t trick_play_rate, uint8_t nalu_length_size, const std::string &language, bool is_encrypted)
+ + +
Holds video stream information.
+
std::string ToString() const override
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 c880eabd5e..18d48ef8f0 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 eb2f4fcba1..aa851534a0 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 a801371263..4b85a1c700 100644 --- a/docs/d7/da4/track__run__iterator_8h_source.html +++ b/docs/d7/da4/track__run__iterator_8h_source.html @@ -195,7 +195,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/dae/structshaka_1_1media_1_1mp4_1_1MediaData.html b/docs/d7/dae/structshaka_1_1media_1_1mp4_1_1MediaData.html index 074c86a034..84d8a35c37 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 2591 of file box_definitions.cc.

+

Definition at line 2593 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 810c92a7d8..403aaac441 100644 --- a/docs/d7/db0/mpd__writer_8h_source.html +++ b/docs/d7/db0/mpd__writer_8h_source.html @@ -182,7 +182,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/db7/structshaka_1_1media_1_1mp4_1_1SampleToChunk-members.html b/docs/d7/db7/structshaka_1_1media_1_1mp4_1_1SampleToChunk-members.html index bd1f5ee5c3..18e660070a 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 581d5e9b2e..7448f63efc 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 1875 of file box_definitions.cc.

+

Definition at line 1877 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 551a111fb2..e825d9a202 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 75feae3e1f..3ea596e29c 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 93bd5feeb5..15e073377f 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 4c8c4a323d..dfc7cc728c 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 @@ -157,7 +157,7 @@ std::shared_ptr< shaka::media::MediaParser.

-

Definition at line 117 of file mp4_media_parser.cc.

+

Definition at line 132 of file mp4_media_parser.cc.

@@ -209,7 +209,7 @@ std::shared_ptr< shaka::media::MediaParser.

-

Definition at line 94 of file mp4_media_parser.cc.

+

Definition at line 109 of file mp4_media_parser.cc.

@@ -235,7 +235,7 @@ std::shared_ptr<
Returns
true if successful, false otherwise.
-

Definition at line 158 of file mp4_media_parser.cc.

+

Definition at line 173 of file mp4_media_parser.cc.

@@ -275,7 +275,7 @@ std::shared_ptr< shaka::media::MediaParser.

-

Definition at line 124 of file mp4_media_parser.cc.

+

Definition at line 139 of file mp4_media_parser.cc.

@@ -286,7 +286,7 @@ std::shared_ptr< diff --git a/docs/d7/dd6/key__source_8cc_source.html b/docs/d7/dd6/key__source_8cc_source.html index 7714b7cfc4..b8386206d8 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 d5673ed9d6..6740324285 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 1db6d311d7..d9e8d4bb79 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 46b8ea63cb..3946ed34df 100644 --- a/docs/d7/de0/classshaka_1_1media_1_1HttpKeyFetcher.html +++ b/docs/d7/de0/classshaka_1_1media_1_1HttpKeyFetcher.html @@ -399,7 +399,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 f92383157b..e348c74796 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 177d95cfcc..931a7c8465 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 @@ -108,33 +108,37 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
19 
23  public:
- - -
26 
- -
30  std::vector<uint8_t>* decoder_config) const override;
-
32 
-
33  private:
-
34  bool ProcessNalu(const Nalu& nalu) override;
-
35 
-
36  std::vector<uint8_t> last_sps_;
-
37  std::vector<uint8_t> last_pps_;
-
38 
-
39  DISALLOW_COPY_AND_ASSIGN(H264ByteToUnitStreamConverter);
-
40 };
-
41 
-
42 } // namespace media
-
43 } // namespace shaka
-
44 
-
45 #endif // MEDIA_CODECS_H264_BYTE_TO_UNIT_STREAM_CONVERTER_H_
+ +
27 
+
30  explicit H264ByteToUnitStreamConverter(H26xStreamFormat stream_format);
+
31 
+ +
33 
+ +
37  std::vector<uint8_t>* decoder_config) const override;
+
39 
+
40  private:
+
41  bool ProcessNalu(const Nalu& nalu) override;
+
42 
+
43  std::vector<uint8_t> last_sps_;
+
44  std::vector<uint8_t> last_pps_;
+
45 
+
46  DISALLOW_COPY_AND_ASSIGN(H264ByteToUnitStreamConverter);
+
47 };
+
48 
+
49 } // namespace media
+
50 } // namespace shaka
+
51 
+
52 #endif // MEDIA_CODECS_H264_BYTE_TO_UNIT_STREAM_CONVERTER_H_
-
bool GetDecoderConfigurationRecord(std::vector< uint8_t > *decoder_config) const override
-
A base class that is used to convert H.26x byte streams to NAL unit streams.
+ +
bool GetDecoderConfigurationRecord(std::vector< uint8_t > *decoder_config) const override
+
A base class that is used to convert H.26x byte streams to NAL unit streams.
diff --git a/docs/d7/dee/mpd__generator_8cc_source.html b/docs/d7/dee/mpd__generator_8cc_source.html index 3665223e03..75eaa83efe 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 c9dbaa1a77..5457bf1203 100644 --- a/docs/d7/def/mp4__media__parser_8cc_source.html +++ b/docs/d7/def/mp4__media__parser_8cc_source.html @@ -129,755 +129,772 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
40  return (static_cast<double>(time_in_old_scale) / old_scale) * new_scale;
41 }
42 
-
43 Codec FourCCToCodec(FourCC fourcc) {
+
43 H26xStreamFormat GetH26xStreamFormat(FourCC fourcc) {
44  switch (fourcc) {
45  case FOURCC_avc1:
-
46  return kCodecH264;
-
47  case FOURCC_hev1:
-
48  return kCodecHEV1;
-
49  case FOURCC_hvc1:
-
50  return kCodecHVC1;
-
51  case FOURCC_vp08:
-
52  return kCodecVP8;
-
53  case FOURCC_vp09:
-
54  return kCodecVP9;
-
55  case FOURCC_vp10:
-
56  return kCodecVP10;
-
57  case FOURCC_Opus:
-
58  return kCodecOpus;
-
59  case FOURCC_dtsc:
-
60  return kCodecDTSC;
-
61  case FOURCC_dtsh:
-
62  return kCodecDTSH;
-
63  case FOURCC_dtsl:
-
64  return kCodecDTSL;
-
65  case FOURCC_dtse:
-
66  return kCodecDTSE;
-
67  case FOURCC_dtsp:
-
68  return kCodecDTSP;
-
69  case FOURCC_dtsm:
-
70  return kCodecDTSM;
-
71  case FOURCC_ac_3:
-
72  return kCodecAC3;
-
73  case FOURCC_ec_3:
-
74  return kCodecEAC3;
-
75  default:
-
76  return kUnknownCodec;
-
77  }
-
78 }
-
79 
-
80 // Default DTS audio number of channels for 5.1 channel layout.
-
81 const uint8_t kDtsAudioNumChannels = 6;
-
82 const uint64_t kNanosecondsPerSecond = 1000000000ull;
-
83 
-
84 } // namespace
-
85 
-
86 MP4MediaParser::MP4MediaParser()
-
87  : state_(kWaitingForInit),
-
88  decryption_key_source_(NULL),
-
89  moof_head_(0),
-
90  mdat_tail_(0) {}
-
91 
-
92 MP4MediaParser::~MP4MediaParser() {}
-
93 
-
94 void MP4MediaParser::Init(const InitCB& init_cb,
-
95  const NewSampleCB& new_sample_cb,
-
96  KeySource* decryption_key_source) {
-
97  DCHECK_EQ(state_, kWaitingForInit);
-
98  DCHECK(init_cb_.is_null());
-
99  DCHECK(!init_cb.is_null());
-
100  DCHECK(!new_sample_cb.is_null());
-
101 
-
102  ChangeState(kParsingBoxes);
-
103  init_cb_ = init_cb;
-
104  new_sample_cb_ = new_sample_cb;
-
105  decryption_key_source_ = decryption_key_source;
-
106  if (decryption_key_source)
-
107  decryptor_source_.reset(new DecryptorSource(decryption_key_source));
-
108 }
-
109 
-
110 void MP4MediaParser::Reset() {
-
111  queue_.Reset();
-
112  runs_.reset();
-
113  moof_head_ = 0;
-
114  mdat_tail_ = 0;
-
115 }
+
46  return H26xStreamFormat::kNalUnitStreamWithoutParameterSetNalus;
+
47  case FOURCC_avc3:
+
48  return H26xStreamFormat::kNalUnitStreamWithParameterSetNalus;
+
49  case FOURCC_hev1:
+
50  return H26xStreamFormat::kNalUnitStreamWithParameterSetNalus;
+
51  case FOURCC_hvc1:
+
52  return H26xStreamFormat::kNalUnitStreamWithoutParameterSetNalus;
+
53  default:
+
54  return H26xStreamFormat::kUnSpecified;
+
55  }
+
56 }
+
57 
+
58 Codec FourCCToCodec(FourCC fourcc) {
+
59  switch (fourcc) {
+
60  case FOURCC_avc1:
+
61  case FOURCC_avc3:
+
62  return kCodecH264;
+
63  case FOURCC_hev1:
+
64  case FOURCC_hvc1:
+
65  return kCodecH265;
+
66  case FOURCC_vp08:
+
67  return kCodecVP8;
+
68  case FOURCC_vp09:
+
69  return kCodecVP9;
+
70  case FOURCC_vp10:
+
71  return kCodecVP10;
+
72  case FOURCC_Opus:
+
73  return kCodecOpus;
+
74  case FOURCC_dtsc:
+
75  return kCodecDTSC;
+
76  case FOURCC_dtsh:
+
77  return kCodecDTSH;
+
78  case FOURCC_dtsl:
+
79  return kCodecDTSL;
+
80  case FOURCC_dtse:
+
81  return kCodecDTSE;
+
82  case FOURCC_dtsp:
+
83  return kCodecDTSP;
+
84  case FOURCC_dtsm:
+
85  return kCodecDTSM;
+
86  case FOURCC_ac_3:
+
87  return kCodecAC3;
+
88  case FOURCC_ec_3:
+
89  return kCodecEAC3;
+
90  default:
+
91  return kUnknownCodec;
+
92  }
+
93 }
+
94 
+
95 // Default DTS audio number of channels for 5.1 channel layout.
+
96 const uint8_t kDtsAudioNumChannels = 6;
+
97 const uint64_t kNanosecondsPerSecond = 1000000000ull;
+
98 
+
99 } // namespace
+
100 
+
101 MP4MediaParser::MP4MediaParser()
+
102  : state_(kWaitingForInit),
+
103  decryption_key_source_(NULL),
+
104  moof_head_(0),
+
105  mdat_tail_(0) {}
+
106 
+
107 MP4MediaParser::~MP4MediaParser() {}
+
108 
+
109 void MP4MediaParser::Init(const InitCB& init_cb,
+
110  const NewSampleCB& new_sample_cb,
+
111  KeySource* decryption_key_source) {
+
112  DCHECK_EQ(state_, kWaitingForInit);
+
113  DCHECK(init_cb_.is_null());
+
114  DCHECK(!init_cb.is_null());
+
115  DCHECK(!new_sample_cb.is_null());
116 
- -
118  DCHECK_NE(state_, kWaitingForInit);
-
119  Reset();
-
120  ChangeState(kParsingBoxes);
-
121  return true;
-
122 }
-
123 
-
124 bool MP4MediaParser::Parse(const uint8_t* buf, int size) {
-
125  DCHECK_NE(state_, kWaitingForInit);
-
126 
-
127  if (state_ == kError)
-
128  return false;
-
129 
-
130  queue_.Push(buf, size);
+
117  ChangeState(kParsingBoxes);
+
118  init_cb_ = init_cb;
+
119  new_sample_cb_ = new_sample_cb;
+
120  decryption_key_source_ = decryption_key_source;
+
121  if (decryption_key_source)
+
122  decryptor_source_.reset(new DecryptorSource(decryption_key_source));
+
123 }
+
124 
+
125 void MP4MediaParser::Reset() {
+
126  queue_.Reset();
+
127  runs_.reset();
+
128  moof_head_ = 0;
+
129  mdat_tail_ = 0;
+
130 }
131 
-
132  bool result, err = false;
-
133 
-
134  do {
-
135  if (state_ == kParsingBoxes) {
-
136  result = ParseBox(&err);
-
137  } else {
-
138  DCHECK_EQ(kEmittingSamples, state_);
-
139  result = EnqueueSample(&err);
-
140  if (result) {
-
141  int64_t max_clear = runs_->GetMaxClearOffset() + moof_head_;
-
142  err = !ReadAndDiscardMDATsUntil(max_clear);
-
143  }
-
144  }
-
145  } while (result && !err);
+ +
133  DCHECK_NE(state_, kWaitingForInit);
+
134  Reset();
+
135  ChangeState(kParsingBoxes);
+
136  return true;
+
137 }
+
138 
+
139 bool MP4MediaParser::Parse(const uint8_t* buf, int size) {
+
140  DCHECK_NE(state_, kWaitingForInit);
+
141 
+
142  if (state_ == kError)
+
143  return false;
+
144 
+
145  queue_.Push(buf, size);
146 
-
147  if (err) {
-
148  DLOG(ERROR) << "Error while parsing MP4";
-
149  moov_.reset();
-
150  Reset();
-
151  ChangeState(kError);
-
152  return false;
-
153  }
-
154 
-
155  return true;
-
156 }
-
157 
-
158 bool MP4MediaParser::LoadMoov(const std::string& file_path) {
-
159  std::unique_ptr<File, FileCloser> file(
-
160  File::OpenWithNoBuffering(file_path.c_str(), "r"));
-
161  if (!file) {
-
162  LOG(ERROR) << "Unable to open media file '" << file_path << "'";
-
163  return false;
-
164  }
-
165  if (!file->Seek(0)) {
-
166  LOG(WARNING) << "Filesystem does not support seeking on file '" << file_path
-
167  << "'";
-
168  return false;
-
169  }
-
170 
-
171  uint64_t file_position(0);
-
172  bool mdat_seen(false);
-
173  while (true) {
-
174  const uint32_t kBoxHeaderReadSize(16);
-
175  std::vector<uint8_t> buffer(kBoxHeaderReadSize);
-
176  int64_t bytes_read = file->Read(&buffer[0], kBoxHeaderReadSize);
-
177  if (bytes_read == 0) {
-
178  LOG(ERROR) << "Could not find 'moov' box in file '" << file_path << "'";
-
179  return false;
-
180  }
-
181  if (bytes_read < kBoxHeaderReadSize) {
-
182  LOG(ERROR) << "Error reading media file '" << file_path << "'";
-
183  return false;
-
184  }
-
185  uint64_t box_size;
-
186  FourCC box_type;
-
187  bool err;
-
188  if (!BoxReader::StartBox(&buffer[0], kBoxHeaderReadSize, &box_type,
-
189  &box_size, &err)) {
-
190  LOG(ERROR) << "Could not start box from file '" << file_path << "'";
-
191  return false;
-
192  }
-
193  if (box_type == FOURCC_mdat) {
-
194  mdat_seen = true;
-
195  } else if (box_type == FOURCC_moov) {
-
196  if (!mdat_seen) {
-
197  // 'moov' is before 'mdat'. Nothing to do.
-
198  break;
-
199  }
-
200  // 'mdat' before 'moov'. Read and parse 'moov'.
-
201  if (!Parse(&buffer[0], bytes_read)) {
-
202  LOG(ERROR) << "Error parsing mp4 file '" << file_path << "'";
-
203  return false;
-
204  }
-
205  uint64_t bytes_to_read = box_size - bytes_read;
-
206  buffer.resize(bytes_to_read);
-
207  while (bytes_to_read > 0) {
-
208  bytes_read = file->Read(&buffer[0], bytes_to_read);
-
209  if (bytes_read <= 0) {
-
210  LOG(ERROR) << "Error reading 'moov' contents from file '" << file_path
-
211  << "'";
-
212  return false;
-
213  }
-
214  if (!Parse(&buffer[0], bytes_read)) {
-
215  LOG(ERROR) << "Error parsing mp4 file '" << file_path << "'";
-
216  return false;
-
217  }
-
218  bytes_to_read -= bytes_read;
+
147  bool result, err = false;
+
148 
+
149  do {
+
150  if (state_ == kParsingBoxes) {
+
151  result = ParseBox(&err);
+
152  } else {
+
153  DCHECK_EQ(kEmittingSamples, state_);
+
154  result = EnqueueSample(&err);
+
155  if (result) {
+
156  int64_t max_clear = runs_->GetMaxClearOffset() + moof_head_;
+
157  err = !ReadAndDiscardMDATsUntil(max_clear);
+
158  }
+
159  }
+
160  } while (result && !err);
+
161 
+
162  if (err) {
+
163  DLOG(ERROR) << "Error while parsing MP4";
+
164  moov_.reset();
+
165  Reset();
+
166  ChangeState(kError);
+
167  return false;
+
168  }
+
169 
+
170  return true;
+
171 }
+
172 
+
173 bool MP4MediaParser::LoadMoov(const std::string& file_path) {
+
174  std::unique_ptr<File, FileCloser> file(
+
175  File::OpenWithNoBuffering(file_path.c_str(), "r"));
+
176  if (!file) {
+
177  LOG(ERROR) << "Unable to open media file '" << file_path << "'";
+
178  return false;
+
179  }
+
180  if (!file->Seek(0)) {
+
181  LOG(WARNING) << "Filesystem does not support seeking on file '" << file_path
+
182  << "'";
+
183  return false;
+
184  }
+
185 
+
186  uint64_t file_position(0);
+
187  bool mdat_seen(false);
+
188  while (true) {
+
189  const uint32_t kBoxHeaderReadSize(16);
+
190  std::vector<uint8_t> buffer(kBoxHeaderReadSize);
+
191  int64_t bytes_read = file->Read(&buffer[0], kBoxHeaderReadSize);
+
192  if (bytes_read == 0) {
+
193  LOG(ERROR) << "Could not find 'moov' box in file '" << file_path << "'";
+
194  return false;
+
195  }
+
196  if (bytes_read < kBoxHeaderReadSize) {
+
197  LOG(ERROR) << "Error reading media file '" << file_path << "'";
+
198  return false;
+
199  }
+
200  uint64_t box_size;
+
201  FourCC box_type;
+
202  bool err;
+
203  if (!BoxReader::StartBox(&buffer[0], kBoxHeaderReadSize, &box_type,
+
204  &box_size, &err)) {
+
205  LOG(ERROR) << "Could not start box from file '" << file_path << "'";
+
206  return false;
+
207  }
+
208  if (box_type == FOURCC_mdat) {
+
209  mdat_seen = true;
+
210  } else if (box_type == FOURCC_moov) {
+
211  if (!mdat_seen) {
+
212  // 'moov' is before 'mdat'. Nothing to do.
+
213  break;
+
214  }
+
215  // 'mdat' before 'moov'. Read and parse 'moov'.
+
216  if (!Parse(&buffer[0], bytes_read)) {
+
217  LOG(ERROR) << "Error parsing mp4 file '" << file_path << "'";
+
218  return false;
219  }
-
220  queue_.Reset(); // So that we don't need to adjust data offsets.
-
221  mdat_tail_ = 0; // So it will skip boxes until mdat.
-
222  break; // Done.
-
223  }
-
224  file_position += box_size;
-
225  if (!file->Seek(file_position)) {
-
226  LOG(ERROR) << "Error skipping box in mp4 file '" << file_path << "'";
-
227  return false;
-
228  }
-
229  }
-
230  return true;
-
231 }
-
232 
-
233 bool MP4MediaParser::ParseBox(bool* err) {
-
234  const uint8_t* buf;
-
235  int size;
-
236  queue_.Peek(&buf, &size);
-
237  if (!size)
-
238  return false;
-
239 
-
240  std::unique_ptr<BoxReader> reader(BoxReader::ReadBox(buf, size, err));
-
241  if (reader.get() == NULL)
-
242  return false;
-
243 
-
244  if (reader->type() == FOURCC_mdat) {
-
245  // The code ends up here only if a MOOV box is not yet seen.
-
246  DCHECK(!moov_);
+
220  uint64_t bytes_to_read = box_size - bytes_read;
+
221  buffer.resize(bytes_to_read);
+
222  while (bytes_to_read > 0) {
+
223  bytes_read = file->Read(&buffer[0], bytes_to_read);
+
224  if (bytes_read <= 0) {
+
225  LOG(ERROR) << "Error reading 'moov' contents from file '" << file_path
+
226  << "'";
+
227  return false;
+
228  }
+
229  if (!Parse(&buffer[0], bytes_read)) {
+
230  LOG(ERROR) << "Error parsing mp4 file '" << file_path << "'";
+
231  return false;
+
232  }
+
233  bytes_to_read -= bytes_read;
+
234  }
+
235  queue_.Reset(); // So that we don't need to adjust data offsets.
+
236  mdat_tail_ = 0; // So it will skip boxes until mdat.
+
237  break; // Done.
+
238  }
+
239  file_position += box_size;
+
240  if (!file->Seek(file_position)) {
+
241  LOG(ERROR) << "Error skipping box in mp4 file '" << file_path << "'";
+
242  return false;
+
243  }
+
244  }
+
245  return true;
+
246 }
247 
-
248  NOTIMPLEMENTED() << " Files with MDAT before MOOV is not supported yet.";
-
249  *err = true;
-
250  return false;
-
251  }
-
252 
-
253  // Set up mdat offset for ReadMDATsUntil().
-
254  mdat_tail_ = queue_.head() + reader->size();
-
255 
-
256  if (reader->type() == FOURCC_moov) {
-
257  *err = !ParseMoov(reader.get());
-
258  } else if (reader->type() == FOURCC_moof) {
-
259  moof_head_ = queue_.head();
-
260  *err = !ParseMoof(reader.get());
-
261 
-
262  // Return early to avoid evicting 'moof' data from queue. Auxiliary info may
-
263  // be located anywhere in the file, including inside the 'moof' itself.
-
264  // (Since 'default-base-is-moof' is mandated, no data references can come
-
265  // before the head of the 'moof', so keeping this box around is sufficient.)
-
266  return !(*err);
-
267  } else {
-
268  VLOG(2) << "Skipping top-level box: " << FourCCToString(reader->type());
-
269  }
+
248 bool MP4MediaParser::ParseBox(bool* err) {
+
249  const uint8_t* buf;
+
250  int size;
+
251  queue_.Peek(&buf, &size);
+
252  if (!size)
+
253  return false;
+
254 
+
255  std::unique_ptr<BoxReader> reader(BoxReader::ReadBox(buf, size, err));
+
256  if (reader.get() == NULL)
+
257  return false;
+
258 
+
259  if (reader->type() == FOURCC_mdat) {
+
260  // The code ends up here only if a MOOV box is not yet seen.
+
261  DCHECK(!moov_);
+
262 
+
263  NOTIMPLEMENTED() << " Files with MDAT before MOOV is not supported yet.";
+
264  *err = true;
+
265  return false;
+
266  }
+
267 
+
268  // Set up mdat offset for ReadMDATsUntil().
+
269  mdat_tail_ = queue_.head() + reader->size();
270 
-
271  queue_.Pop(static_cast<int>(reader->size()));
-
272  return !(*err);
-
273 }
-
274 
-
275 bool MP4MediaParser::ParseMoov(BoxReader* reader) {
-
276  if (moov_)
-
277  return true; // Already parsed the 'moov' box.
-
278 
-
279  moov_.reset(new Movie);
-
280  RCHECK(moov_->Parse(reader));
-
281  runs_.reset();
-
282 
-
283  std::vector<std::shared_ptr<StreamInfo>> streams;
-
284 
-
285  for (std::vector<Track>::const_iterator track = moov_->tracks.begin();
-
286  track != moov_->tracks.end(); ++track) {
-
287  const uint32_t timescale = track->media.header.timescale;
-
288 
-
289  // Calculate duration (based on timescale).
-
290  uint64_t duration = 0;
-
291  if (track->media.header.duration > 0) {
-
292  duration = track->media.header.duration;
-
293  } else if (moov_->extends.header.fragment_duration > 0) {
-
294  DCHECK(moov_->header.timescale != 0);
-
295  duration = Rescale(moov_->extends.header.fragment_duration,
-
296  moov_->header.timescale,
-
297  timescale);
-
298  } else if (moov_->header.duration > 0 &&
-
299  moov_->header.duration != std::numeric_limits<uint64_t>::max()) {
-
300  DCHECK(moov_->header.timescale != 0);
-
301  duration =
-
302  Rescale(moov_->header.duration, moov_->header.timescale, timescale);
-
303  }
-
304 
-
305  const SampleDescription& samp_descr =
-
306  track->media.information.sample_table.description;
-
307 
-
308  size_t desc_idx = 0;
-
309 
-
310  // Read sample description index from mvex if it exists otherwise read
-
311  // from the first entry in Sample To Chunk box.
-
312  if (moov_->extends.tracks.size() > 0) {
-
313  for (size_t t = 0; t < moov_->extends.tracks.size(); t++) {
-
314  const TrackExtends& trex = moov_->extends.tracks[t];
-
315  if (trex.track_id == track->header.track_id) {
-
316  desc_idx = trex.default_sample_description_index;
-
317  break;
-
318  }
-
319  }
-
320  } else {
-
321  const std::vector<ChunkInfo>& chunk_info =
-
322  track->media.information.sample_table.sample_to_chunk.chunk_info;
-
323  RCHECK(chunk_info.size() > 0);
-
324  desc_idx = chunk_info[0].sample_description_index;
-
325  }
-
326  RCHECK(desc_idx > 0);
-
327  desc_idx -= 1; // BMFF descriptor index is one-based
-
328 
-
329  if (samp_descr.type == kAudio) {
-
330  RCHECK(!samp_descr.audio_entries.empty());
-
331 
-
332  // It is not uncommon to find otherwise-valid files with incorrect sample
-
333  // description indices, so we fail gracefully in that case.
-
334  if (desc_idx >= samp_descr.audio_entries.size())
-
335  desc_idx = 0;
-
336 
-
337  const AudioSampleEntry& entry = samp_descr.audio_entries[desc_idx];
-
338  const FourCC actual_format = entry.GetActualFormat();
-
339  Codec codec = FourCCToCodec(actual_format);
-
340  uint8_t num_channels = 0;
-
341  uint32_t sampling_frequency = 0;
-
342  uint64_t codec_delay_ns = 0;
-
343  uint8_t audio_object_type = 0;
-
344  uint32_t max_bitrate = 0;
-
345  uint32_t avg_bitrate = 0;
-
346  std::vector<uint8_t> codec_config;
-
347 
-
348  switch (actual_format) {
-
349  case FOURCC_mp4a:
-
350  // Check if it is MPEG4 AAC defined in ISO 14496 Part 3 or
-
351  // supported MPEG2 AAC variants.
-
352  if (entry.esds.es_descriptor.IsAAC()) {
-
353  codec = kCodecAAC;
-
354  const AACAudioSpecificConfig& aac_audio_specific_config =
-
355  entry.esds.aac_audio_specific_config;
-
356  num_channels = aac_audio_specific_config.num_channels();
-
357  sampling_frequency = aac_audio_specific_config.frequency();
-
358  audio_object_type = aac_audio_specific_config.audio_object_type();
-
359  codec_config = entry.esds.es_descriptor.decoder_specific_info();
-
360  break;
-
361  } else if (entry.esds.es_descriptor.IsDTS()) {
-
362  ObjectType audio_type = entry.esds.es_descriptor.object_type();
-
363  switch (audio_type) {
-
364  case kDTSC:
-
365  codec = kCodecDTSC;
-
366  break;
-
367  case kDTSE:
-
368  codec = kCodecDTSE;
-
369  break;
-
370  case kDTSH:
-
371  codec = kCodecDTSH;
-
372  break;
-
373  case kDTSL:
-
374  codec = kCodecDTSL;
-
375  break;
-
376  default:
-
377  LOG(ERROR) << "Unsupported audio type " << audio_type
-
378  << " in stsd box.";
-
379  return false;
-
380  }
-
381  num_channels = entry.esds.aac_audio_specific_config.num_channels();
-
382  // For dts audio in esds, current supported number of channels is 6
-
383  // as the only supported channel layout is 5.1.
-
384  if (num_channels != kDtsAudioNumChannels) {
-
385  LOG(ERROR) << "Unsupported channel count " << num_channels
-
386  << " for audio type " << audio_type << ".";
-
387  return false;
-
388  }
-
389  sampling_frequency = entry.samplerate;
-
390  max_bitrate = entry.esds.es_descriptor.max_bitrate();
-
391  avg_bitrate = entry.esds.es_descriptor.avg_bitrate();
-
392  } else {
-
393  LOG(ERROR) << "Unsupported audio format 0x" << std::hex
-
394  << actual_format << " in stsd box.";
-
395  return false;
-
396  }
-
397  break;
-
398  case FOURCC_dtsc:
-
399  FALLTHROUGH_INTENDED;
-
400  case FOURCC_dtsh:
-
401  FALLTHROUGH_INTENDED;
-
402  case FOURCC_dtsl:
-
403  FALLTHROUGH_INTENDED;
-
404  case FOURCC_dtse:
-
405  FALLTHROUGH_INTENDED;
-
406  case FOURCC_dtsm:
-
407  codec_config = entry.ddts.extra_data;
-
408  max_bitrate = entry.ddts.max_bitrate;
-
409  avg_bitrate = entry.ddts.avg_bitrate;
-
410  num_channels = entry.channelcount;
-
411  sampling_frequency = entry.samplerate;
+
271  if (reader->type() == FOURCC_moov) {
+
272  *err = !ParseMoov(reader.get());
+
273  } else if (reader->type() == FOURCC_moof) {
+
274  moof_head_ = queue_.head();
+
275  *err = !ParseMoof(reader.get());
+
276 
+
277  // Return early to avoid evicting 'moof' data from queue. Auxiliary info may
+
278  // be located anywhere in the file, including inside the 'moof' itself.
+
279  // (Since 'default-base-is-moof' is mandated, no data references can come
+
280  // before the head of the 'moof', so keeping this box around is sufficient.)
+
281  return !(*err);
+
282  } else {
+
283  VLOG(2) << "Skipping top-level box: " << FourCCToString(reader->type());
+
284  }
+
285 
+
286  queue_.Pop(static_cast<int>(reader->size()));
+
287  return !(*err);
+
288 }
+
289 
+
290 bool MP4MediaParser::ParseMoov(BoxReader* reader) {
+
291  if (moov_)
+
292  return true; // Already parsed the 'moov' box.
+
293 
+
294  moov_.reset(new Movie);
+
295  RCHECK(moov_->Parse(reader));
+
296  runs_.reset();
+
297 
+
298  std::vector<std::shared_ptr<StreamInfo>> streams;
+
299 
+
300  for (std::vector<Track>::const_iterator track = moov_->tracks.begin();
+
301  track != moov_->tracks.end(); ++track) {
+
302  const uint32_t timescale = track->media.header.timescale;
+
303 
+
304  // Calculate duration (based on timescale).
+
305  uint64_t duration = 0;
+
306  if (track->media.header.duration > 0) {
+
307  duration = track->media.header.duration;
+
308  } else if (moov_->extends.header.fragment_duration > 0) {
+
309  DCHECK(moov_->header.timescale != 0);
+
310  duration = Rescale(moov_->extends.header.fragment_duration,
+
311  moov_->header.timescale,
+
312  timescale);
+
313  } else if (moov_->header.duration > 0 &&
+
314  moov_->header.duration != std::numeric_limits<uint64_t>::max()) {
+
315  DCHECK(moov_->header.timescale != 0);
+
316  duration =
+
317  Rescale(moov_->header.duration, moov_->header.timescale, timescale);
+
318  }
+
319 
+
320  const SampleDescription& samp_descr =
+
321  track->media.information.sample_table.description;
+
322 
+
323  size_t desc_idx = 0;
+
324 
+
325  // Read sample description index from mvex if it exists otherwise read
+
326  // from the first entry in Sample To Chunk box.
+
327  if (moov_->extends.tracks.size() > 0) {
+
328  for (size_t t = 0; t < moov_->extends.tracks.size(); t++) {
+
329  const TrackExtends& trex = moov_->extends.tracks[t];
+
330  if (trex.track_id == track->header.track_id) {
+
331  desc_idx = trex.default_sample_description_index;
+
332  break;
+
333  }
+
334  }
+
335  } else {
+
336  const std::vector<ChunkInfo>& chunk_info =
+
337  track->media.information.sample_table.sample_to_chunk.chunk_info;
+
338  RCHECK(chunk_info.size() > 0);
+
339  desc_idx = chunk_info[0].sample_description_index;
+
340  }
+
341  RCHECK(desc_idx > 0);
+
342  desc_idx -= 1; // BMFF descriptor index is one-based
+
343 
+
344  if (samp_descr.type == kAudio) {
+
345  RCHECK(!samp_descr.audio_entries.empty());
+
346 
+
347  // It is not uncommon to find otherwise-valid files with incorrect sample
+
348  // description indices, so we fail gracefully in that case.
+
349  if (desc_idx >= samp_descr.audio_entries.size())
+
350  desc_idx = 0;
+
351 
+
352  const AudioSampleEntry& entry = samp_descr.audio_entries[desc_idx];
+
353  const FourCC actual_format = entry.GetActualFormat();
+
354  Codec codec = FourCCToCodec(actual_format);
+
355  uint8_t num_channels = 0;
+
356  uint32_t sampling_frequency = 0;
+
357  uint64_t codec_delay_ns = 0;
+
358  uint8_t audio_object_type = 0;
+
359  uint32_t max_bitrate = 0;
+
360  uint32_t avg_bitrate = 0;
+
361  std::vector<uint8_t> codec_config;
+
362 
+
363  switch (actual_format) {
+
364  case FOURCC_mp4a:
+
365  // Check if it is MPEG4 AAC defined in ISO 14496 Part 3 or
+
366  // supported MPEG2 AAC variants.
+
367  if (entry.esds.es_descriptor.IsAAC()) {
+
368  codec = kCodecAAC;
+
369  const AACAudioSpecificConfig& aac_audio_specific_config =
+
370  entry.esds.aac_audio_specific_config;
+
371  num_channels = aac_audio_specific_config.num_channels();
+
372  sampling_frequency = aac_audio_specific_config.frequency();
+
373  audio_object_type = aac_audio_specific_config.audio_object_type();
+
374  codec_config = entry.esds.es_descriptor.decoder_specific_info();
+
375  break;
+
376  } else if (entry.esds.es_descriptor.IsDTS()) {
+
377  ObjectType audio_type = entry.esds.es_descriptor.object_type();
+
378  switch (audio_type) {
+
379  case kDTSC:
+
380  codec = kCodecDTSC;
+
381  break;
+
382  case kDTSE:
+
383  codec = kCodecDTSE;
+
384  break;
+
385  case kDTSH:
+
386  codec = kCodecDTSH;
+
387  break;
+
388  case kDTSL:
+
389  codec = kCodecDTSL;
+
390  break;
+
391  default:
+
392  LOG(ERROR) << "Unsupported audio type " << audio_type
+
393  << " in stsd box.";
+
394  return false;
+
395  }
+
396  num_channels = entry.esds.aac_audio_specific_config.num_channels();
+
397  // For dts audio in esds, current supported number of channels is 6
+
398  // as the only supported channel layout is 5.1.
+
399  if (num_channels != kDtsAudioNumChannels) {
+
400  LOG(ERROR) << "Unsupported channel count " << num_channels
+
401  << " for audio type " << audio_type << ".";
+
402  return false;
+
403  }
+
404  sampling_frequency = entry.samplerate;
+
405  max_bitrate = entry.esds.es_descriptor.max_bitrate();
+
406  avg_bitrate = entry.esds.es_descriptor.avg_bitrate();
+
407  } else {
+
408  LOG(ERROR) << "Unsupported audio format 0x" << std::hex
+
409  << actual_format << " in stsd box.";
+
410  return false;
+
411  }
412  break;
-
413  case FOURCC_ac_3:
-
414  codec_config = entry.dac3.data;
-
415  num_channels = entry.channelcount;
-
416  sampling_frequency = entry.samplerate;
-
417  break;
-
418  case FOURCC_ec_3:
-
419  codec_config = entry.dec3.data;
-
420  num_channels = entry.channelcount;
-
421  sampling_frequency = entry.samplerate;
-
422  break;
-
423  case FOURCC_Opus:
-
424  codec_config = entry.dops.opus_identification_header;
+
413  case FOURCC_dtsc:
+
414  FALLTHROUGH_INTENDED;
+
415  case FOURCC_dtsh:
+
416  FALLTHROUGH_INTENDED;
+
417  case FOURCC_dtsl:
+
418  FALLTHROUGH_INTENDED;
+
419  case FOURCC_dtse:
+
420  FALLTHROUGH_INTENDED;
+
421  case FOURCC_dtsm:
+
422  codec_config = entry.ddts.extra_data;
+
423  max_bitrate = entry.ddts.max_bitrate;
+
424  avg_bitrate = entry.ddts.avg_bitrate;
425  num_channels = entry.channelcount;
426  sampling_frequency = entry.samplerate;
-
427  RCHECK(sampling_frequency != 0);
-
428  codec_delay_ns =
-
429  entry.dops.preskip * kNanosecondsPerSecond / sampling_frequency;
-
430  break;
-
431  default:
-
432  LOG(ERROR) << "Unsupported audio format 0x" << std::hex
-
433  << actual_format << " in stsd box.";
-
434  return false;
-
435  }
-
436 
-
437  // Extract possible seek preroll.
-
438  uint64_t seek_preroll_ns = 0;
-
439  for (const auto& sample_group_description :
-
440  track->media.information.sample_table.sample_group_descriptions) {
-
441  if (sample_group_description.grouping_type != FOURCC_roll)
-
442  continue;
-
443  const auto& audio_roll_recovery_entries =
-
444  sample_group_description.audio_roll_recovery_entries;
-
445  if (audio_roll_recovery_entries.size() != 1) {
-
446  LOG(WARNING) << "Unexpected number of entries in "
-
447  "SampleGroupDescription table with grouping type "
-
448  "'roll'.";
-
449  break;
-
450  }
-
451  const int16_t roll_distance_in_samples =
-
452  audio_roll_recovery_entries[0].roll_distance;
-
453  if (roll_distance_in_samples < 0) {
-
454  RCHECK(sampling_frequency != 0);
-
455  seek_preroll_ns = kNanosecondsPerSecond *
-
456  (-roll_distance_in_samples) / sampling_frequency;
-
457  } else {
-
458  LOG(WARNING)
-
459  << "Roll distance is supposed to be negative, but seeing "
-
460  << roll_distance_in_samples;
-
461  }
-
462  break;
-
463  }
-
464 
-
465  // The stream will be decrypted if a |decryptor_source_| is available.
-
466  const bool is_encrypted =
-
467  decryptor_source_
-
468  ? false
-
469  : entry.sinf.info.track_encryption.default_is_protected == 1;
-
470  DVLOG(1) << "is_audio_track_encrypted_: " << is_encrypted;
-
471  streams.emplace_back(new AudioStreamInfo(
-
472  track->header.track_id, timescale, duration, codec,
-
473  AudioStreamInfo::GetCodecString(codec, audio_object_type),
-
474  codec_config.data(), codec_config.size(), entry.samplesize,
-
475  num_channels, sampling_frequency, seek_preroll_ns, codec_delay_ns,
-
476  max_bitrate, avg_bitrate, track->media.header.language.code,
-
477  is_encrypted));
-
478  }
+
427  break;
+
428  case FOURCC_ac_3:
+
429  codec_config = entry.dac3.data;
+
430  num_channels = entry.channelcount;
+
431  sampling_frequency = entry.samplerate;
+
432  break;
+
433  case FOURCC_ec_3:
+
434  codec_config = entry.dec3.data;
+
435  num_channels = entry.channelcount;
+
436  sampling_frequency = entry.samplerate;
+
437  break;
+
438  case FOURCC_Opus:
+
439  codec_config = entry.dops.opus_identification_header;
+
440  num_channels = entry.channelcount;
+
441  sampling_frequency = entry.samplerate;
+
442  RCHECK(sampling_frequency != 0);
+
443  codec_delay_ns =
+
444  entry.dops.preskip * kNanosecondsPerSecond / sampling_frequency;
+
445  break;
+
446  default:
+
447  LOG(ERROR) << "Unsupported audio format 0x" << std::hex
+
448  << actual_format << " in stsd box.";
+
449  return false;
+
450  }
+
451 
+
452  // Extract possible seek preroll.
+
453  uint64_t seek_preroll_ns = 0;
+
454  for (const auto& sample_group_description :
+
455  track->media.information.sample_table.sample_group_descriptions) {
+
456  if (sample_group_description.grouping_type != FOURCC_roll)
+
457  continue;
+
458  const auto& audio_roll_recovery_entries =
+
459  sample_group_description.audio_roll_recovery_entries;
+
460  if (audio_roll_recovery_entries.size() != 1) {
+
461  LOG(WARNING) << "Unexpected number of entries in "
+
462  "SampleGroupDescription table with grouping type "
+
463  "'roll'.";
+
464  break;
+
465  }
+
466  const int16_t roll_distance_in_samples =
+
467  audio_roll_recovery_entries[0].roll_distance;
+
468  if (roll_distance_in_samples < 0) {
+
469  RCHECK(sampling_frequency != 0);
+
470  seek_preroll_ns = kNanosecondsPerSecond *
+
471  (-roll_distance_in_samples) / sampling_frequency;
+
472  } else {
+
473  LOG(WARNING)
+
474  << "Roll distance is supposed to be negative, but seeing "
+
475  << roll_distance_in_samples;
+
476  }
+
477  break;
+
478  }
479 
-
480  if (samp_descr.type == kVideo) {
-
481  RCHECK(!samp_descr.video_entries.empty());
-
482  if (desc_idx >= samp_descr.video_entries.size())
-
483  desc_idx = 0;
-
484  const VideoSampleEntry& entry = samp_descr.video_entries[desc_idx];
-
485 
-
486  uint32_t coded_width = entry.width;
-
487  uint32_t coded_height = entry.height;
-
488  uint32_t pixel_width = entry.pixel_aspect.h_spacing;
-
489  uint32_t pixel_height = entry.pixel_aspect.v_spacing;
-
490  if (pixel_width == 0 && pixel_height == 0) {
-
491  pixel_width = 1;
-
492  pixel_height = 1;
-
493  }
-
494  std::string codec_string;
-
495  uint8_t nalu_length_size = 0;
-
496 
-
497  const FourCC actual_format = entry.GetActualFormat();
-
498  const Codec video_codec = FourCCToCodec(actual_format);
-
499  switch (actual_format) {
-
500  case FOURCC_avc1: {
-
501  AVCDecoderConfigurationRecord avc_config;
-
502  if (!avc_config.Parse(entry.codec_configuration.data)) {
-
503  LOG(ERROR) << "Failed to parse avcc.";
-
504  return false;
-
505  }
-
506  codec_string = avc_config.GetCodecString();
-
507  nalu_length_size = avc_config.nalu_length_size();
-
508 
-
509  if (coded_width != avc_config.coded_width() ||
-
510  coded_height != avc_config.coded_height()) {
-
511  LOG(WARNING) << "Resolution in VisualSampleEntry (" << coded_width
-
512  << "," << coded_height
-
513  << ") does not match with resolution in "
-
514  "AVCDecoderConfigurationRecord ("
-
515  << avc_config.coded_width() << ","
-
516  << avc_config.coded_height()
-
517  << "). Use AVCDecoderConfigurationRecord.";
-
518  coded_width = avc_config.coded_width();
-
519  coded_height = avc_config.coded_height();
-
520  }
-
521 
-
522  if (pixel_width != avc_config.pixel_width() ||
-
523  pixel_height != avc_config.pixel_height()) {
-
524  LOG_IF(WARNING, pixel_width != 1 || pixel_height != 1)
-
525  << "Pixel aspect ratio in PASP box (" << pixel_width << ","
-
526  << pixel_height
-
527  << ") does not match with SAR in AVCDecoderConfigurationRecord "
-
528  "("
-
529  << avc_config.pixel_width() << "," << avc_config.pixel_height()
-
530  << "). Use AVCDecoderConfigurationRecord.";
-
531  pixel_width = avc_config.pixel_width();
-
532  pixel_height = avc_config.pixel_height();
-
533  }
-
534  break;
-
535  }
-
536  case FOURCC_hev1:
-
537  case FOURCC_hvc1: {
-
538  HEVCDecoderConfigurationRecord hevc_config;
-
539  if (!hevc_config.Parse(entry.codec_configuration.data)) {
-
540  LOG(ERROR) << "Failed to parse hevc.";
-
541  return false;
-
542  }
-
543  codec_string = hevc_config.GetCodecString(video_codec);
-
544  nalu_length_size = hevc_config.nalu_length_size();
-
545  break;
-
546  }
-
547  case FOURCC_vp08:
-
548  case FOURCC_vp09:
-
549  case FOURCC_vp10: {
-
550  VPCodecConfigurationRecord vp_config;
-
551  if (!vp_config.ParseMP4(entry.codec_configuration.data)) {
-
552  LOG(ERROR) << "Failed to parse vpcc.";
-
553  return false;
-
554  }
-
555  codec_string = vp_config.GetCodecString(video_codec);
-
556  break;
-
557  }
-
558  default:
-
559  LOG(ERROR) << "Unsupported video format "
-
560  << FourCCToString(actual_format) << " in stsd box.";
-
561  return false;
-
562  }
-
563 
-
564  // The stream will be decrypted if a |decryptor_source_| is available.
-
565  const bool is_encrypted =
-
566  decryptor_source_
-
567  ? false
-
568  : entry.sinf.info.track_encryption.default_is_protected == 1;
-
569  DVLOG(1) << "is_video_track_encrypted_: " << is_encrypted;
-
570  std::shared_ptr<VideoStreamInfo> video_stream_info(new VideoStreamInfo(
-
571  track->header.track_id, timescale, duration, video_codec,
-
572  codec_string, entry.codec_configuration.data.data(),
-
573  entry.codec_configuration.data.size(), coded_width, coded_height,
-
574  pixel_width, pixel_height,
-
575  0, // trick_play_rate
-
576  nalu_length_size, track->media.header.language.code, is_encrypted));
-
577 
-
578  // Set pssh raw data if it has.
-
579  if (moov_->pssh.size() > 0) {
-
580  std::vector<uint8_t> pssh_raw_data;
-
581  for (const auto& pssh : moov_->pssh) {
-
582  pssh_raw_data.insert(pssh_raw_data.end(), pssh.raw_box.begin(),
-
583  pssh.raw_box.end());
-
584  }
-
585  video_stream_info->set_eme_init_data(pssh_raw_data.data(),
-
586  pssh_raw_data.size());
-
587  }
-
588 
-
589  streams.push_back(video_stream_info);
-
590  }
-
591  }
-
592 
-
593  init_cb_.Run(streams);
-
594  if (!FetchKeysIfNecessary(moov_->pssh))
-
595  return false;
-
596  runs_.reset(new TrackRunIterator(moov_.get()));
-
597  RCHECK(runs_->Init());
-
598  ChangeState(kEmittingSamples);
-
599  return true;
-
600 }
-
601 
-
602 bool MP4MediaParser::ParseMoof(BoxReader* reader) {
-
603  // Must already have initialization segment.
-
604  RCHECK(moov_.get());
-
605  MovieFragment moof;
-
606  RCHECK(moof.Parse(reader));
-
607  if (!runs_)
-
608  runs_.reset(new TrackRunIterator(moov_.get()));
-
609  RCHECK(runs_->Init(moof));
-
610  if (!FetchKeysIfNecessary(moof.pssh))
-
611  return false;
-
612  ChangeState(kEmittingSamples);
-
613  return true;
-
614 }
-
615 
-
616 bool MP4MediaParser::FetchKeysIfNecessary(
-
617  const std::vector<ProtectionSystemSpecificHeader>& headers) {
-
618  if (headers.empty())
-
619  return true;
-
620 
-
621  // An error will be returned later if the samples need to be decrypted.
-
622  if (!decryption_key_source_)
-
623  return true;
-
624 
-
625  Status status;
-
626  for (std::vector<ProtectionSystemSpecificHeader>::const_iterator iter =
-
627  headers.begin(); iter != headers.end(); ++iter) {
-
628  status = decryption_key_source_->FetchKeys(iter->raw_box);
-
629  if (!status.ok()) {
-
630  // If there is an error, try using the next PSSH box and report if none
-
631  // work.
-
632  VLOG(1) << "Unable to fetch decryption keys: " << status
-
633  << ", trying the next PSSH box";
-
634  continue;
-
635  }
+
480  // The stream will be decrypted if a |decryptor_source_| is available.
+
481  const bool is_encrypted =
+
482  decryptor_source_
+
483  ? false
+
484  : entry.sinf.info.track_encryption.default_is_protected == 1;
+
485  DVLOG(1) << "is_audio_track_encrypted_: " << is_encrypted;
+
486  streams.emplace_back(new AudioStreamInfo(
+
487  track->header.track_id, timescale, duration, codec,
+
488  AudioStreamInfo::GetCodecString(codec, audio_object_type),
+
489  codec_config.data(), codec_config.size(), entry.samplesize,
+
490  num_channels, sampling_frequency, seek_preroll_ns, codec_delay_ns,
+
491  max_bitrate, avg_bitrate, track->media.header.language.code,
+
492  is_encrypted));
+
493  }
+
494 
+
495  if (samp_descr.type == kVideo) {
+
496  RCHECK(!samp_descr.video_entries.empty());
+
497  if (desc_idx >= samp_descr.video_entries.size())
+
498  desc_idx = 0;
+
499  const VideoSampleEntry& entry = samp_descr.video_entries[desc_idx];
+
500 
+
501  uint32_t coded_width = entry.width;
+
502  uint32_t coded_height = entry.height;
+
503  uint32_t pixel_width = entry.pixel_aspect.h_spacing;
+
504  uint32_t pixel_height = entry.pixel_aspect.v_spacing;
+
505  if (pixel_width == 0 && pixel_height == 0) {
+
506  pixel_width = 1;
+
507  pixel_height = 1;
+
508  }
+
509  std::string codec_string;
+
510  uint8_t nalu_length_size = 0;
+
511 
+
512  const FourCC actual_format = entry.GetActualFormat();
+
513  const Codec video_codec = FourCCToCodec(actual_format);
+
514  switch (actual_format) {
+
515  case FOURCC_avc1:
+
516  case FOURCC_avc3: {
+
517  AVCDecoderConfigurationRecord avc_config;
+
518  if (!avc_config.Parse(entry.codec_configuration.data)) {
+
519  LOG(ERROR) << "Failed to parse avcc.";
+
520  return false;
+
521  }
+
522  codec_string = avc_config.GetCodecString();
+
523  nalu_length_size = avc_config.nalu_length_size();
+
524 
+
525  if (coded_width != avc_config.coded_width() ||
+
526  coded_height != avc_config.coded_height()) {
+
527  LOG(WARNING) << "Resolution in VisualSampleEntry (" << coded_width
+
528  << "," << coded_height
+
529  << ") does not match with resolution in "
+
530  "AVCDecoderConfigurationRecord ("
+
531  << avc_config.coded_width() << ","
+
532  << avc_config.coded_height()
+
533  << "). Use AVCDecoderConfigurationRecord.";
+
534  coded_width = avc_config.coded_width();
+
535  coded_height = avc_config.coded_height();
+
536  }
+
537 
+
538  if (pixel_width != avc_config.pixel_width() ||
+
539  pixel_height != avc_config.pixel_height()) {
+
540  LOG_IF(WARNING, pixel_width != 1 || pixel_height != 1)
+
541  << "Pixel aspect ratio in PASP box (" << pixel_width << ","
+
542  << pixel_height
+
543  << ") does not match with SAR in AVCDecoderConfigurationRecord "
+
544  "("
+
545  << avc_config.pixel_width() << "," << avc_config.pixel_height()
+
546  << "). Use AVCDecoderConfigurationRecord.";
+
547  pixel_width = avc_config.pixel_width();
+
548  pixel_height = avc_config.pixel_height();
+
549  }
+
550  break;
+
551  }
+
552  case FOURCC_hev1:
+
553  case FOURCC_hvc1: {
+
554  HEVCDecoderConfigurationRecord hevc_config;
+
555  if (!hevc_config.Parse(entry.codec_configuration.data)) {
+
556  LOG(ERROR) << "Failed to parse hevc.";
+
557  return false;
+
558  }
+
559  codec_string = hevc_config.GetCodecString(actual_format);
+
560  nalu_length_size = hevc_config.nalu_length_size();
+
561  break;
+
562  }
+
563  case FOURCC_vp08:
+
564  case FOURCC_vp09:
+
565  case FOURCC_vp10: {
+
566  VPCodecConfigurationRecord vp_config;
+
567  if (!vp_config.ParseMP4(entry.codec_configuration.data)) {
+
568  LOG(ERROR) << "Failed to parse vpcc.";
+
569  return false;
+
570  }
+
571  codec_string = vp_config.GetCodecString(video_codec);
+
572  break;
+
573  }
+
574  default:
+
575  LOG(ERROR) << "Unsupported video format "
+
576  << FourCCToString(actual_format) << " in stsd box.";
+
577  return false;
+
578  }
+
579 
+
580  // The stream will be decrypted if a |decryptor_source_| is available.
+
581  const bool is_encrypted =
+
582  decryptor_source_
+
583  ? false
+
584  : entry.sinf.info.track_encryption.default_is_protected == 1;
+
585  DVLOG(1) << "is_video_track_encrypted_: " << is_encrypted;
+
586  std::shared_ptr<VideoStreamInfo> video_stream_info(new VideoStreamInfo(
+
587  track->header.track_id, timescale, duration, video_codec,
+
588  GetH26xStreamFormat(actual_format), codec_string,
+
589  entry.codec_configuration.data.data(),
+
590  entry.codec_configuration.data.size(), coded_width, coded_height,
+
591  pixel_width, pixel_height,
+
592  0, // trick_play_rate
+
593  nalu_length_size, track->media.header.language.code, is_encrypted));
+
594 
+
595  // Set pssh raw data if it has.
+
596  if (moov_->pssh.size() > 0) {
+
597  std::vector<uint8_t> pssh_raw_data;
+
598  for (const auto& pssh : moov_->pssh) {
+
599  pssh_raw_data.insert(pssh_raw_data.end(), pssh.raw_box.begin(),
+
600  pssh.raw_box.end());
+
601  }
+
602  video_stream_info->set_eme_init_data(pssh_raw_data.data(),
+
603  pssh_raw_data.size());
+
604  }
+
605 
+
606  streams.push_back(video_stream_info);
+
607  }
+
608  }
+
609 
+
610  init_cb_.Run(streams);
+
611  if (!FetchKeysIfNecessary(moov_->pssh))
+
612  return false;
+
613  runs_.reset(new TrackRunIterator(moov_.get()));
+
614  RCHECK(runs_->Init());
+
615  ChangeState(kEmittingSamples);
+
616  return true;
+
617 }
+
618 
+
619 bool MP4MediaParser::ParseMoof(BoxReader* reader) {
+
620  // Must already have initialization segment.
+
621  RCHECK(moov_.get());
+
622  MovieFragment moof;
+
623  RCHECK(moof.Parse(reader));
+
624  if (!runs_)
+
625  runs_.reset(new TrackRunIterator(moov_.get()));
+
626  RCHECK(runs_->Init(moof));
+
627  if (!FetchKeysIfNecessary(moof.pssh))
+
628  return false;
+
629  ChangeState(kEmittingSamples);
+
630  return true;
+
631 }
+
632 
+
633 bool MP4MediaParser::FetchKeysIfNecessary(
+
634  const std::vector<ProtectionSystemSpecificHeader>& headers) {
+
635  if (headers.empty())
636  return true;
-
637  }
-
638 
-
639  if (!status.ok()) {
-
640  LOG(ERROR) << "Error fetching decryption keys: " << status;
-
641  return false;
-
642  }
-
643 
-
644  LOG(ERROR) << "No viable 'pssh' box found for content decryption.";
-
645  return false;
-
646 }
-
647 
-
648 bool MP4MediaParser::EnqueueSample(bool* err) {
-
649  if (!runs_->IsRunValid()) {
-
650  // Remain in kEnqueueingSamples state, discarding data, until the end of
-
651  // the current 'mdat' box has been appended to the queue.
-
652  if (!queue_.Trim(mdat_tail_))
-
653  return false;
-
654 
-
655  ChangeState(kParsingBoxes);
-
656  return true;
-
657  }
-
658 
-
659  if (!runs_->IsSampleValid()) {
-
660  runs_->AdvanceRun();
-
661  return true;
-
662  }
-
663 
-
664  DCHECK(!(*err));
-
665 
-
666  const uint8_t* buf;
-
667  int buf_size;
-
668  queue_.Peek(&buf, &buf_size);
-
669  if (!buf_size)
-
670  return false;
+
637 
+
638  // An error will be returned later if the samples need to be decrypted.
+
639  if (!decryption_key_source_)
+
640  return true;
+
641 
+
642  Status status;
+
643  for (std::vector<ProtectionSystemSpecificHeader>::const_iterator iter =
+
644  headers.begin(); iter != headers.end(); ++iter) {
+
645  status = decryption_key_source_->FetchKeys(iter->raw_box);
+
646  if (!status.ok()) {
+
647  // If there is an error, try using the next PSSH box and report if none
+
648  // work.
+
649  VLOG(1) << "Unable to fetch decryption keys: " << status
+
650  << ", trying the next PSSH box";
+
651  continue;
+
652  }
+
653  return true;
+
654  }
+
655 
+
656  if (!status.ok()) {
+
657  LOG(ERROR) << "Error fetching decryption keys: " << status;
+
658  return false;
+
659  }
+
660 
+
661  LOG(ERROR) << "No viable 'pssh' box found for content decryption.";
+
662  return false;
+
663 }
+
664 
+
665 bool MP4MediaParser::EnqueueSample(bool* err) {
+
666  if (!runs_->IsRunValid()) {
+
667  // Remain in kEnqueueingSamples state, discarding data, until the end of
+
668  // the current 'mdat' box has been appended to the queue.
+
669  if (!queue_.Trim(mdat_tail_))
+
670  return false;
671 
-
672  // Skip this entire track if it is not audio nor video.
-
673  if (!runs_->is_audio() && !runs_->is_video())
-
674  runs_->AdvanceRun();
+
672  ChangeState(kParsingBoxes);
+
673  return true;
+
674  }
675 
-
676  // Attempt to cache the auxiliary information first. Aux info is usually
-
677  // placed in a contiguous block before the sample data, rather than being
-
678  // interleaved. If we didn't cache it, this would require that we retain the
-
679  // start of the segment buffer while reading samples. Aux info is typically
-
680  // quite small compared to sample data, so this pattern is useful on
-
681  // memory-constrained devices where the source buffer consumes a substantial
-
682  // portion of the total system memory.
-
683  if (runs_->AuxInfoNeedsToBeCached()) {
-
684  queue_.PeekAt(runs_->aux_info_offset() + moof_head_, &buf, &buf_size);
-
685  if (buf_size < runs_->aux_info_size())
-
686  return false;
-
687  *err = !runs_->CacheAuxInfo(buf, buf_size);
-
688  return !*err;
-
689  }
-
690 
-
691  int64_t sample_offset = runs_->sample_offset() + moof_head_;
-
692  queue_.PeekAt(sample_offset, &buf, &buf_size);
-
693  if (buf_size < runs_->sample_size()) {
-
694  if (sample_offset < queue_.head()) {
-
695  LOG(ERROR) << "Incorrect sample offset " << sample_offset
-
696  << " < " << queue_.head();
-
697  *err = true;
-
698  }
-
699  return false;
-
700  }
-
701 
-
702  std::shared_ptr<MediaSample> stream_sample(
-
703  MediaSample::CopyFrom(buf, runs_->sample_size(), runs_->is_keyframe()));
-
704  if (runs_->is_encrypted()) {
-
705  std::unique_ptr<DecryptConfig> decrypt_config = runs_->GetDecryptConfig();
-
706  if (!decrypt_config) {
-
707  *err = true;
-
708  LOG(ERROR) << "Missing decrypt config.";
-
709  return false;
-
710  }
-
711 
-
712  if (!decryptor_source_) {
-
713  // If the demuxer does not have the decryptor_source_, store
-
714  // decrypt_config so that the demuxed sample can be decrypted later.
-
715  stream_sample->set_decrypt_config(std::move(decrypt_config));
-
716  stream_sample->set_is_encrypted(true);
-
717  } else if (!decryptor_source_->DecryptSampleBuffer(
-
718  decrypt_config.get(), stream_sample->writable_data(),
-
719  stream_sample->data_size())) {
-
720  *err = true;
-
721  LOG(ERROR) << "Cannot decrypt samples.";
-
722  return false;
-
723  }
-
724  }
-
725 
-
726  stream_sample->set_dts(runs_->dts());
-
727  stream_sample->set_pts(runs_->cts());
-
728  stream_sample->set_duration(runs_->duration());
-
729 
-
730  DVLOG(3) << "Pushing frame: "
-
731  << ", key=" << runs_->is_keyframe()
-
732  << ", dur=" << runs_->duration()
-
733  << ", dts=" << runs_->dts()
-
734  << ", cts=" << runs_->cts()
-
735  << ", size=" << runs_->sample_size();
-
736 
-
737  if (!new_sample_cb_.Run(runs_->track_id(), stream_sample)) {
-
738  *err = true;
-
739  LOG(ERROR) << "Failed to process the sample.";
-
740  return false;
+
676  if (!runs_->IsSampleValid()) {
+
677  runs_->AdvanceRun();
+
678  return true;
+
679  }
+
680 
+
681  DCHECK(!(*err));
+
682 
+
683  const uint8_t* buf;
+
684  int buf_size;
+
685  queue_.Peek(&buf, &buf_size);
+
686  if (!buf_size)
+
687  return false;
+
688 
+
689  // Skip this entire track if it is not audio nor video.
+
690  if (!runs_->is_audio() && !runs_->is_video())
+
691  runs_->AdvanceRun();
+
692 
+
693  // Attempt to cache the auxiliary information first. Aux info is usually
+
694  // placed in a contiguous block before the sample data, rather than being
+
695  // interleaved. If we didn't cache it, this would require that we retain the
+
696  // start of the segment buffer while reading samples. Aux info is typically
+
697  // quite small compared to sample data, so this pattern is useful on
+
698  // memory-constrained devices where the source buffer consumes a substantial
+
699  // portion of the total system memory.
+
700  if (runs_->AuxInfoNeedsToBeCached()) {
+
701  queue_.PeekAt(runs_->aux_info_offset() + moof_head_, &buf, &buf_size);
+
702  if (buf_size < runs_->aux_info_size())
+
703  return false;
+
704  *err = !runs_->CacheAuxInfo(buf, buf_size);
+
705  return !*err;
+
706  }
+
707 
+
708  int64_t sample_offset = runs_->sample_offset() + moof_head_;
+
709  queue_.PeekAt(sample_offset, &buf, &buf_size);
+
710  if (buf_size < runs_->sample_size()) {
+
711  if (sample_offset < queue_.head()) {
+
712  LOG(ERROR) << "Incorrect sample offset " << sample_offset
+
713  << " < " << queue_.head();
+
714  *err = true;
+
715  }
+
716  return false;
+
717  }
+
718 
+
719  std::shared_ptr<MediaSample> stream_sample(
+
720  MediaSample::CopyFrom(buf, runs_->sample_size(), runs_->is_keyframe()));
+
721  if (runs_->is_encrypted()) {
+
722  std::unique_ptr<DecryptConfig> decrypt_config = runs_->GetDecryptConfig();
+
723  if (!decrypt_config) {
+
724  *err = true;
+
725  LOG(ERROR) << "Missing decrypt config.";
+
726  return false;
+
727  }
+
728 
+
729  if (!decryptor_source_) {
+
730  // If the demuxer does not have the decryptor_source_, store
+
731  // decrypt_config so that the demuxed sample can be decrypted later.
+
732  stream_sample->set_decrypt_config(std::move(decrypt_config));
+
733  stream_sample->set_is_encrypted(true);
+
734  } else if (!decryptor_source_->DecryptSampleBuffer(
+
735  decrypt_config.get(), stream_sample->writable_data(),
+
736  stream_sample->data_size())) {
+
737  *err = true;
+
738  LOG(ERROR) << "Cannot decrypt samples.";
+
739  return false;
+
740  }
741  }
742 
-
743  runs_->AdvanceSample();
-
744  return true;
-
745 }
+
743  stream_sample->set_dts(runs_->dts());
+
744  stream_sample->set_pts(runs_->cts());
+
745  stream_sample->set_duration(runs_->duration());
746 
-
747 bool MP4MediaParser::ReadAndDiscardMDATsUntil(const int64_t offset) {
-
748  bool err = false;
-
749  while (mdat_tail_ < offset) {
-
750  const uint8_t* buf;
-
751  int size;
-
752  queue_.PeekAt(mdat_tail_, &buf, &size);
+
747  DVLOG(3) << "Pushing frame: "
+
748  << ", key=" << runs_->is_keyframe()
+
749  << ", dur=" << runs_->duration()
+
750  << ", dts=" << runs_->dts()
+
751  << ", cts=" << runs_->cts()
+
752  << ", size=" << runs_->sample_size();
753 
-
754  FourCC type;
-
755  uint64_t box_sz;
-
756  if (!BoxReader::StartBox(buf, size, &type, &box_sz, &err))
-
757  break;
-
758 
-
759  mdat_tail_ += box_sz;
-
760  }
-
761  queue_.Trim(std::min(mdat_tail_, offset));
-
762  return !err;
-
763 }
-
764 
-
765 void MP4MediaParser::ChangeState(State new_state) {
-
766  DVLOG(2) << "Changing state: " << new_state;
-
767  state_ = new_state;
-
768 }
-
769 
-
770 } // namespace mp4
-
771 } // namespace media
-
772 } // namespace shaka
+
754  if (!new_sample_cb_.Run(runs_->track_id(), stream_sample)) {
+
755  *err = true;
+
756  LOG(ERROR) << "Failed to process the sample.";
+
757  return false;
+
758  }
+
759 
+
760  runs_->AdvanceSample();
+
761  return true;
+
762 }
+
763 
+
764 bool MP4MediaParser::ReadAndDiscardMDATsUntil(const int64_t offset) {
+
765  bool err = false;
+
766  while (mdat_tail_ < offset) {
+
767  const uint8_t* buf;
+
768  int size;
+
769  queue_.PeekAt(mdat_tail_, &buf, &size);
+
770 
+
771  FourCC type;
+
772  uint64_t box_sz;
+
773  if (!BoxReader::StartBox(buf, size, &type, &box_sz, &err))
+
774  break;
+
775 
+
776  mdat_tail_ += box_sz;
+
777  }
+
778  queue_.Trim(std::min(mdat_tail_, offset));
+
779  return !err;
+
780 }
+
781 
+
782 void MP4MediaParser::ChangeState(State new_state) {
+
783  DVLOG(2) << "Changing state: " << new_state;
+
784  state_ = new_state;
+
785 }
+
786 
+
787 } // namespace mp4
+
788 } // namespace media
+
789 } // namespace shaka
void PeekAt(int64_t offset, const uint8_t **buf, int *size)
static File * OpenWithNoBuffering(const char *file_name, const char *mode)
Definition: file.cc:152
-
bool Flush() override WARN_UNUSED_RESULT
+
bool Flush() override WARN_UNUSED_RESULT
bool Trim(int64_t max_offset)
-
bool Parse(const uint8_t *buf, int size) override WARN_UNUSED_RESULT
+
bool Parse(const uint8_t *buf, int size) override WARN_UNUSED_RESULT
virtual Status FetchKeys(const std::vector< uint8_t > &pssh_box)=0
static std::string GetCodecString(Codec codec, uint8_t audio_object_type)
-
bool LoadMoov(const std::string &file_path)
+
bool LoadMoov(const std::string &file_path)
static std::shared_ptr< MediaSample > CopyFrom(const uint8_t *data, size_t size, bool is_key_frame)
Definition: media_sample.cc:45
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:30
-
void Init(const InitCB &init_cb, const NewSampleCB &new_sample_cb, KeySource *decryption_key_source) override
+
void Init(const InitCB &init_cb, const NewSampleCB &new_sample_cb, KeySource *decryption_key_source) override
DecryptorSource wraps KeySource and is responsible for decryptor management.
static bool StartBox(const uint8_t *buf, const size_t buf_size, FourCC *type, uint64_t *box_size, bool *err) WARN_UNUSED_RESULT
Definition: box_reader.cc:54
static BoxReader * ReadBox(const uint8_t *buf, const size_t buf_size, bool *err)
Definition: box_reader.cc:36
diff --git a/docs/d7/df9/byte__queue_8cc_source.html b/docs/d7/df9/byte__queue_8cc_source.html index bfa91a0093..993f27dd37 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 baad51dd32..806a53def5 100644 --- a/docs/d8/d08/classshaka_1_1media_1_1H264ByteToUnitStreamConverter.html +++ b/docs/d8/d08/classshaka_1_1media_1_1H264ByteToUnitStreamConverter.html @@ -87,6 +87,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
shaka::media::H264ByteToUnitStreamConverter Class Reference
@@ -106,15 +107,23 @@ Inheritance diagram for shaka::media::H264ByteToUnitStreamConverter:
+ + + + - + + + + +

Public Member Functions

 H264ByteToUnitStreamConverter ()
 
 H264ByteToUnitStreamConverter (H26xStreamFormat stream_format)
 
H26xByteToUnitStreamConverter implementation override.
bool GetDecoderConfigurationRecord (std::vector< uint8_t > *decoder_config) const override
 
- Public Member Functions inherited from shaka::media::H26xByteToUnitStreamConverter
H26xByteToUnitStreamConverter (Nalu::CodecType type)
 H26xByteToUnitStreamConverter (Nalu::CodecType type)
 
 H26xByteToUnitStreamConverter (Nalu::CodecType type, H26xStreamFormat stream_format)
 
bool ConvertByteStreamToNalUnitStream (const uint8_t *input_frame, size_t input_frame_size, std::vector< uint8_t > *output_frame)
 
+H26xStreamFormat stream_format () const
 
@@ -122,12 +131,65 @@ Additional Inherited Members + + + + +

Additional Inherited Members

static constexpr size_t kUnitStreamNaluLengthSize = 4
 
- Protected Member Functions inherited from shaka::media::H26xByteToUnitStreamConverter
+bool strip_parameter_set_nalus () const
 
+void WarnIfNotMatch (int nalu_type, const uint8_t *nalu_ptr, size_t nalu_size, const std::vector< uint8_t > &vector)
 

Detailed Description

Class which converts H.264 byte streams (as specified in ISO/IEC 14496-10 Annex B) into H.264 NAL unit streams (as specified in ISO/IEC 14496-15).

Definition at line 22 of file h264_byte_to_unit_stream_converter.h.

-

Member Function Documentation

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + +
shaka::media::H264ByteToUnitStreamConverter::H264ByteToUnitStreamConverter ()
+
+

Create a H264 byte to unit stream converter. The setting of KeepParameterSetNalus is defined by a gflag.

+ +

Definition at line 18 of file h264_byte_to_unit_stream_converter.cc.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + +
shaka::media::H264ByteToUnitStreamConverter::H264ByteToUnitStreamConverter (H26xStreamFormat stream_format)
+
+explicit
+
+

Create a H264 byte to unit stream converter with desired output stream format (whether to include parameter set nal units).

+ +

Definition at line 21 of file h264_byte_to_unit_stream_converter.cc.

+ +
+
+

Member Function Documentation

@@ -160,7 +222,7 @@ static constexpr size_t kU

Implements shaka::media::H26xByteToUnitStreamConverter.

-

Definition at line 22 of file h264_byte_to_unit_stream_converter.cc.

+

Definition at line 27 of file h264_byte_to_unit_stream_converter.cc.

@@ -171,7 +233,7 @@ static constexpr size_t kU 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 1421072792..58af59d71e 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 71ed408358..ad213cb269 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 d6b38d0349..142d11bb7b 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 0ae604753a..9d406b73c9 100644 --- a/docs/d8/d0d/media__sample_8cc_source.html +++ b/docs/d8/d0d/media__sample_8cc_source.html @@ -193,7 +193,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 52739da4a9..e089fcaa5f 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 3a8cbfeb09..88befd50e5 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 82813a0eb8..a9ee61e259 100644 --- a/docs/d8/d13/classshaka_1_1media_1_1BitReader-members.html +++ b/docs/d8/d13/classshaka_1_1media_1_1BitReader-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d14/classshaka_1_1media_1_1VP8Parser.html b/docs/d8/d14/classshaka_1_1media_1_1VP8Parser.html index 22f10e8383..a27842daac 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 21ca921016..717be34091 100644 --- a/docs/d8/d16/structshaka_1_1media_1_1MuxerOptions-members.html +++ b/docs/d8/d16/structshaka_1_1media_1_1MuxerOptions-members.html @@ -105,7 +105,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 688c47458c..f1ed9e351a 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 19395fde17..531a0936bd 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 1837 of file box_definitions.cc.

+

Definition at line 1839 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 e30d6c602b..2236076865 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 6f75bf99d9..82d17a218f 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 c10816d8b6..558c93ef6e 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 e96cbbe6b5..4e690e3395 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 c981a70ded..21aa37481b 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 18240b7be8..297e799ba0 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 1774 of file box_definitions.cc.

+

Definition at line 1776 of file box_definitions.cc.

@@ -206,7 +206,7 @@ Additional Inherited Members 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 5dc68585be..81de18096f 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 a067e0fab2..b8dc638837 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 2028 of file box_definitions.cc.

+

Definition at line 2030 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 9dddb1230c..f119c4f13e 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 953e8b4e1b..b92f1a78c2 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 feb3a0e186..067f3a3672 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 f3afa087d4..5cd5f81231 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 202a724668..5a6edb8f15 100644 --- a/docs/d8/d8e/classshaka_1_1AdaptationSet.html +++ b/docs/d8/d8e/classshaka_1_1AdaptationSet.html @@ -568,7 +568,7 @@ template<DashProfile profile> 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 cbdbebfbae..bf7cd1d067 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 29dd96160c..ebdf299f73 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 c17ffd48c6..69662e6fdc 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 3ca8a7f42f..0eced02aa5 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 1e688288b5..f8c0416b35 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 ada8b1d388..bef7cbaf7a 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 07c5150c8c..2e5ec406dc 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 6784c7473d..fd4f8d61bb 100644 --- a/docs/d8/d9a/fragmenter_8cc_source.html +++ b/docs/d8/d9a/fragmenter_8cc_source.html @@ -390,7 +390,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d9c/webm__tracks__parser_8cc_source.html b/docs/d8/d9c/webm__tracks__parser_8cc_source.html index c8d84c590f..7f8df92194 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 caab5ffd49..7a2c05b2a3 100644 --- a/docs/d8/d9f/udp__file_8h_source.html +++ b/docs/d8/d9f/udp__file_8h_source.html @@ -153,7 +153,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 6921fe726f..7ad593c788 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 90160efd9f..4fb0fdaa6d 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 c033a67358..6f1c8a2f43 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 6b32c56a08..c50ce9106f 100644 --- a/docs/d8/daa/stream__info_8h_source.html +++ b/docs/d8/daa/stream__info_8h_source.html @@ -116,110 +116,107 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
27 
28  kCodecVideo = 100,
29  kCodecH264 = kCodecVideo,
-
30  kCodecHEV1,
-
31  kCodecHVC1,
-
32  kCodecVC1,
-
33  kCodecMPEG2,
-
34  kCodecMPEG4,
-
35  kCodecTheora,
-
36  kCodecVP8,
-
37  kCodecVP9,
-
38  kCodecVP10,
-
39  kCodecVideoMaxPlusOne,
-
40 
-
41  kCodecAudio = 200,
-
42  kCodecAAC = kCodecAudio,
-
43  kCodecAC3,
-
44  kCodecDTSC,
-
45  kCodecDTSE,
-
46  kCodecDTSH,
-
47  kCodecDTSL,
-
48  kCodecDTSM,
-
49  kCodecDTSP,
-
50  kCodecEAC3,
-
51  kCodecOpus,
-
52  kCodecVorbis,
-
53  kCodecAudioMaxPlusOne,
-
54 
-
55  kCodecText = 300,
-
56  kCodecWebVtt = kCodecText,
-
57 };
-
58 
-
60 class StreamInfo {
-
61  public:
-
62  StreamInfo(StreamType stream_type, int track_id, uint32_t time_scale,
-
63  uint64_t duration, Codec codec, const std::string& codec_string,
-
64  const uint8_t* codec_config, size_t codec_config_size,
-
65  const std::string& language, bool is_encrypted);
-
66 
-
67  virtual ~StreamInfo();
-
68 
-
71  virtual bool IsValidConfig() const = 0;
+
30  kCodecH265,
+
31  kCodecVP8,
+
32  kCodecVP9,
+
33  kCodecVP10,
+
34  kCodecVideoMaxPlusOne,
+
35 
+
36  kCodecAudio = 200,
+
37  kCodecAAC = kCodecAudio,
+
38  kCodecAC3,
+
39  // TODO(kqyang): Use kCodecDTS and a kDtsStreamFormat for the various DTS
+
40  // streams.
+
41  kCodecDTSC,
+
42  kCodecDTSE,
+
43  kCodecDTSH,
+
44  kCodecDTSL,
+
45  kCodecDTSM,
+
46  kCodecDTSP,
+
47  kCodecEAC3,
+
48  kCodecOpus,
+
49  kCodecVorbis,
+
50  kCodecAudioMaxPlusOne,
+
51 
+
52  kCodecText = 300,
+
53  kCodecWebVtt = kCodecText,
+
54 };
+
55 
+
57 class StreamInfo {
+
58  public:
+
59  StreamInfo(StreamType stream_type, int track_id, uint32_t time_scale,
+
60  uint64_t duration, Codec codec, const std::string& codec_string,
+
61  const uint8_t* codec_config, size_t codec_config_size,
+
62  const std::string& language, bool is_encrypted);
+
63 
+
64  virtual ~StreamInfo();
+
65 
+
68  virtual bool IsValidConfig() const = 0;
+
69 
+
71  virtual std::string ToString() const;
72 
-
74  virtual std::string ToString() const;
-
75 
-
76  StreamType stream_type() const { return stream_type_; }
-
77  uint32_t track_id() const { return track_id_; }
-
78  uint32_t time_scale() const { return time_scale_; }
-
79  uint64_t duration() const { return duration_; }
-
80  Codec codec() const { return codec_; }
-
81  const std::string& codec_string() const { return codec_string_; }
-
82  const std::vector<uint8_t>& codec_config() const { return codec_config_; }
-
83  const std::string& language() const { return language_; }
-
84  bool is_encrypted() const { return is_encrypted_; }
-
85  const EncryptionConfig& encryption_config() const {
-
86  return encryption_config_;
-
87  }
-
88 
-
89  void set_duration(uint64_t duration) { duration_ = duration; }
-
90  void set_codec(Codec codec) { codec_ = codec; }
-
91  void set_codec_config(const std::vector<uint8_t>& data) { codec_config_ = data; }
-
92  void set_codec_string(const std::string& codec_string) {
-
93  codec_string_ = codec_string;
-
94  }
-
95  void set_language(const std::string& language) { language_ = language; }
-
96  void set_is_encrypted(bool is_encrypted) { is_encrypted_ = is_encrypted; }
-
97  void set_encryption_config(const EncryptionConfig& encryption_config) {
-
98  encryption_config_ = encryption_config;
-
99  }
-
100 
-
101  private:
-
102  // Whether the stream is Audio or Video.
-
103  StreamType stream_type_;
-
104  uint32_t track_id_;
-
105  // The actual time is calculated as time / time_scale_ in seconds.
-
106  uint32_t time_scale_;
-
107  // Duration base on time_scale.
-
108  uint64_t duration_;
-
109  Codec codec_;
-
110  std::string codec_string_;
-
111  std::string language_;
-
112  // Whether the stream is potentially encrypted.
-
113  // Note that in a potentially encrypted stream, individual buffers
-
114  // can be encrypted or not encrypted.
-
115  bool is_encrypted_;
-
116  EncryptionConfig encryption_config_;
-
117  // Optional byte data required for some audio/video decoders such as Vorbis
-
118  // codebooks.
-
119  std::vector<uint8_t> codec_config_;
-
120 
-
121  // Not using DISALLOW_COPY_AND_ASSIGN here intentionally to allow the compiler
-
122  // generated copy constructor and assignment operator. Since the extra data is
-
123  // typically small, the performance impact is minimal.
-
124 };
+
73  StreamType stream_type() const { return stream_type_; }
+
74  uint32_t track_id() const { return track_id_; }
+
75  uint32_t time_scale() const { return time_scale_; }
+
76  uint64_t duration() const { return duration_; }
+
77  Codec codec() const { return codec_; }
+
78  const std::string& codec_string() const { return codec_string_; }
+
79  const std::vector<uint8_t>& codec_config() const { return codec_config_; }
+
80  const std::string& language() const { return language_; }
+
81  bool is_encrypted() const { return is_encrypted_; }
+
82  const EncryptionConfig& encryption_config() const {
+
83  return encryption_config_;
+
84  }
+
85 
+
86  void set_duration(uint64_t duration) { duration_ = duration; }
+
87  void set_codec(Codec codec) { codec_ = codec; }
+
88  void set_codec_config(const std::vector<uint8_t>& data) { codec_config_ = data; }
+
89  void set_codec_string(const std::string& codec_string) {
+
90  codec_string_ = codec_string;
+
91  }
+
92  void set_language(const std::string& language) { language_ = language; }
+
93  void set_is_encrypted(bool is_encrypted) { is_encrypted_ = is_encrypted; }
+
94  void set_encryption_config(const EncryptionConfig& encryption_config) {
+
95  encryption_config_ = encryption_config;
+
96  }
+
97 
+
98  private:
+
99  // Whether the stream is Audio or Video.
+
100  StreamType stream_type_;
+
101  uint32_t track_id_;
+
102  // The actual time is calculated as time / time_scale_ in seconds.
+
103  uint32_t time_scale_;
+
104  // Duration base on time_scale.
+
105  uint64_t duration_;
+
106  Codec codec_;
+
107  std::string codec_string_;
+
108  std::string language_;
+
109  // Whether the stream is potentially encrypted.
+
110  // Note that in a potentially encrypted stream, individual buffers
+
111  // can be encrypted or not encrypted.
+
112  bool is_encrypted_;
+
113  EncryptionConfig encryption_config_;
+
114  // Optional byte data required for some audio/video decoders such as Vorbis
+
115  // codebooks.
+
116  std::vector<uint8_t> codec_config_;
+
117 
+
118  // Not using DISALLOW_COPY_AND_ASSIGN here intentionally to allow the compiler
+
119  // generated copy constructor and assignment operator. Since the extra data is
+
120  // typically small, the performance impact is minimal.
+
121 };
+
122 
+
123 } // namespace media
+
124 } // namespace shaka
125 
-
126 } // namespace media
-
127 } // namespace shaka
-
128 
-
129 #endif // MEDIA_BASE_STREAM_INFO_H_
-
Abstract class holds stream information.
Definition: stream_info.h:60
+
126 #endif // MEDIA_BASE_STREAM_INFO_H_
+
Abstract class holds stream information.
Definition: stream_info.h:57
virtual bool IsValidConfig() const =0
virtual std::string ToString() const
Definition: stream_info.cc:37
diff --git a/docs/d8/daf/namespaceshaka.html b/docs/d8/daf/namespaceshaka.html index 7206d980b5..49da4f4a75 100644 --- a/docs/d8/daf/namespaceshaka.html +++ b/docs/d8/daf/namespaceshaka.html @@ -658,7 +658,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 6b1435115a..2c29043d83 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 @@ -261,7 +261,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 5e21e50497..f613c8ea4f 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 3190b46454..1076b14980 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 c9578e7978..e4c8e3b776 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 2621 of file box_definitions.cc.

+

Definition at line 2623 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 8e004940b7..e78e459497 100644 --- a/docs/d8/dca/ts__writer_8h_source.html +++ b/docs/d8/dca/ts__writer_8h_source.html @@ -152,7 +152,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
81 } // namespace shaka
82 
83 #endif // PACKAGER_MEDIA_FORMATS_MP2T_TS_WRITER_H_
-
Abstract class holds stream information.
Definition: stream_info.h:60
+
Abstract class holds stream information.
Definition: stream_info.h:57
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
@@ -164,7 +164,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/dcd/structshaka_1_1media_1_1mp4_1_1DecodingTime-members.html b/docs/d8/dcd/structshaka_1_1media_1_1mp4_1_1DecodingTime-members.html index 83cb096b0a..f33c64e63a 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 f5442a072b..b6a3278c4d 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 fd14d1899b..665622f4ca 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 c9980a9130..99abf069a4 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 f54b3bf10f..9fafd30f40 100644 --- a/docs/d8/de1/classshaka_1_1SimpleMpdNotifier.html +++ b/docs/d8/de1/classshaka_1_1SimpleMpdNotifier.html @@ -473,7 +473,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 70100790c7..e4f47b7427 100644 --- a/docs/d8/de6/webm__crypto__helpers_8h_source.html +++ b/docs/d8/de6/webm__crypto__helpers_8h_source.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/deb/classshaka_1_1media_1_1mp2t_1_1EsParser-members.html b/docs/d8/deb/classshaka_1_1media_1_1mp2t_1_1EsParser-members.html index 72f454b6bb..7f0e7a6936 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/deb/retired__flags_8cc_source.html b/docs/d8/deb/retired__flags_8cc_source.html index 4299434166..c1d8b23228 100644 --- a/docs/d8/deb/retired__flags_8cc_source.html +++ b/docs/d8/deb/retired__flags_8cc_source.html @@ -124,7 +124,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 17bd6c855d..9d2e8b383e 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 bdac74cbec..b597406b47 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 6bac2eb011..2b5a1e58a5 100644 --- a/docs/d8/df0/webm_2single__segment__segmenter_8cc_source.html +++ b/docs/d8/df0/webm_2single__segment__segmenter_8cc_source.html @@ -202,7 +202,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 360479a348..9e7411efb2 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 f4d0805b05..31d7aaada0 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 @@ -154,7 +154,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 51336ba63f..dfc5f3147f 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 8fdb42941c..0e2211ff1a 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 0a7136a2f8..dc6e02a017 100644 --- a/docs/d9/d08/mock__mpd__builder_8h_source.html +++ b/docs/d9/d08/mock__mpd__builder_8h_source.html @@ -172,7 +172,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 694f73d789..f914fae029 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 c90ac8d718..014509042e 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/d12/chunking__handler_8cc_source.html b/docs/d9/d12/chunking__handler_8cc_source.html index 46649a6b0e..d1ad28aa10 100644 --- a/docs/d9/d12/chunking__handler_8cc_source.html +++ b/docs/d9/d12/chunking__handler_8cc_source.html @@ -357,7 +357,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d13/classshaka_1_1media_1_1BufferReader.html b/docs/d9/d13/classshaka_1_1media_1_1BufferReader.html index 74727bb4bc..11d1e75c62 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/d1f/structshaka_1_1media_1_1mp4_1_1MovieFragment.html b/docs/d9/d1f/structshaka_1_1media_1_1mp4_1_1MovieFragment.html index d2681935f0..6ec39a45d0 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 2504 of file box_definitions.cc.

+

Definition at line 2506 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 52a97908d5..a6c7862bd2 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 689b19108f..9f7a578c84 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 @@ -434,7 +434,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 1abff2e804..e5f174f4b6 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 f171724046..e6e3501fdf 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 49b31920ad..201c09885e 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 a309c61c1a..b693f6ed9d 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 2696 of file box_definitions.cc.

+

Definition at line 2698 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 fc6833fc77..78f34448ad 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 2605 of file box_definitions.cc.

+

Definition at line 2607 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 dc21b6f50f..1f83848775 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 f0fdba0349..adae07f3b9 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 5923bb7e9c..e19febd91b 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 2ee3a412b8..525b3f09bc 100644 --- a/docs/d9/d6a/structshaka_1_1media_1_1H264SliceHeader-members.html +++ b/docs/d9/d6a/structshaka_1_1media_1_1H264SliceHeader-members.html @@ -150,7 +150,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 d734961762..3631b14c09 100644 --- a/docs/d9/d76/ts__muxer_8cc_source.html +++ b/docs/d9/d76/ts__muxer_8cc_source.html @@ -168,7 +168,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 aae8ec7518..ab5688d9a9 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 9d8c97f451..dc14b46fb5 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 a1374df254..f5c309d537 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 e3b8e910a5..07db112b05 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 eb68acb1c0..06b1bb915d 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 1b5097f8d8..9b366bfdb7 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/da4/stream__descriptor_8h_source.html b/docs/d9/da4/stream__descriptor_8h_source.html index 2decb014c4..6f47b5a313 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 2362c4ccb5..e7b6531e95 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 789941c97f..bfebc16142 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 de8c2611e0..57c2677bda 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 @@ -117,7 +117,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 815a297d37..35b40aa41a 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 b29e16e03c..40a94efddd 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 d26d4cb5e3..eb50363051 100644 --- a/docs/d9/db9/muxer_8cc_source.html +++ b/docs/d9/db9/muxer_8cc_source.html @@ -179,7 +179,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 2d5820af59..6ba75c173d 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 11c32af3af..cb4d725f42 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 c4e3af60f3..576bcc8ec0 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 2a505e570b..987d3cde49 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 2950c032d0..62d8b094c2 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 ef45cf8460..42ced8b031 100644 --- a/docs/d9/de3/muxer__listener__internal_8cc_source.html +++ b/docs/d9/de3/muxer__listener__internal_8cc_source.html @@ -353,7 +353,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 7e1a8bb6bb..8bb1d921f0 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 15b2eeb663..ef3c26336d 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 7ff453c754..281f7c1608 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 c519ea3b39..a0d17ddd11 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 6b1b3d457b..e32e7948ae 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 8868c93970..fe66aaf7e3 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 475c27f5ef..ee09929275 100644 --- a/docs/da/d04/audio__stream__info_8cc_source.html +++ b/docs/da/d04/audio__stream__info_8cc_source.html @@ -214,7 +214,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
125 
126 } // namespace media
127 } // namespace shaka
-
Abstract class holds stream information.
Definition: stream_info.h:60
+
Abstract class holds stream information.
Definition: stream_info.h:57
std::string ToString() const override
bool IsValidConfig() const override
static std::string GetCodecString(Codec codec, uint8_t audio_object_type)
@@ -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 b9529ea0c8..8ad36d0565 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 7862fafb22..696c735b35 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 1e3121eb45..926e06c746 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 d2e700e2f0..b769cf1e08 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/d23/classshaka_1_1media_1_1mp2t_1_1EsParserH26x.html b/docs/da/d23/classshaka_1_1media_1_1mp2t_1_1EsParserH26x.html index 56b9f7fb74..9af5354767 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 std::shared_ptr
diff --git a/docs/da/d23/ts__muxer_8h_source.html b/docs/da/d23/ts__muxer_8h_source.html index 10830393a8..6fd253fc07 100644 --- a/docs/da/d23/ts__muxer_8h_source.html +++ b/docs/da/d23/ts__muxer_8h_source.html @@ -138,7 +138,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 b60d609371..a41f3e376f 100644 --- a/docs/da/d24/h265__parser_8h_source.html +++ b/docs/da/d24/h265__parser_8h_source.html @@ -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 baea2f1cbf..079d581b29 100644 --- a/docs/da/d2a/text__stream__info_8h_source.html +++ b/docs/da/d2a/text__stream__info_8h_source.html @@ -129,14 +129,14 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
52 } // namespace shaka
53 
54 #endif // PACKAGER_MEDIA_BASE_TEXT_STREAM_INFO_H_
-
Abstract class holds stream information.
Definition: stream_info.h:60
+
Abstract class holds stream information.
Definition: stream_info.h:57
TextStreamInfo(int track_id, uint32_t time_scale, uint64_t duration, Codec codec, const std::string &codec_string, const std::string &codec_config, uint16_t width, uint16_t height, const std::string &language)
bool IsValidConfig() const override
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 b468a0a67e..3c7d1dd8af 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 @@ -130,7 +130,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 171ac4e5fc..cde9176059 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 2405fb7eec..79f4dfa851 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 0dfc1f3202..d738585d63 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 df04888847..eef32b8694 100644 --- a/docs/da/d4e/classshaka_1_1media_1_1AudioStreamInfo.html +++ b/docs/da/d4e/classshaka_1_1media_1_1AudioStreamInfo.html @@ -322,7 +322,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 ded0ec8265..740699f361 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 2141 of file box_definitions.cc.

+

Definition at line 2143 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 28a4db700b..77b36b4856 100644 --- a/docs/da/d53/es__parser__h265_8cc_source.html +++ b/docs/da/d53/es__parser__h265_8cc_source.html @@ -242,25 +242,30 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
153 
154  const uint8_t nalu_length_size =
155  H26xByteToUnitStreamConverter::kUnitStreamNaluLengthSize;
-
156  last_video_decoder_config_ = std::make_shared<VideoStreamInfo>(
-
157  pid(), kMpeg2Timescale, kInfiniteDuration, kCodecHVC1,
-
158  decoder_config.GetCodecString(kCodecHVC1), decoder_config_record.data(),
-
159  decoder_config_record.size(), coded_width, coded_height, pixel_width,
-
160  pixel_height, 0, nalu_length_size, std::string(), false);
-
161 
-
162  // Video config notification.
-
163  new_stream_info_cb_.Run(last_video_decoder_config_);
-
164 
-
165  return true;
-
166 }
-
167 
-
168 } // namespace mp2t
-
169 } // namespace media
-
170 } // namespace shaka
+
156  const H26xStreamFormat stream_format = stream_converter()->stream_format();
+
157  const FourCC codec_fourcc =
+
158  stream_format == H26xStreamFormat::kNalUnitStreamWithParameterSetNalus
+
159  ? FOURCC_hev1
+
160  : FOURCC_hvc1;
+
161  last_video_decoder_config_ = std::make_shared<VideoStreamInfo>(
+
162  pid(), kMpeg2Timescale, kInfiniteDuration, kCodecH265, stream_format,
+
163  decoder_config.GetCodecString(codec_fourcc), decoder_config_record.data(),
+
164  decoder_config_record.size(), coded_width, coded_height, pixel_width,
+
165  pixel_height, 0, nalu_length_size, std::string(), false);
+
166 
+
167  // Video config notification.
+
168  new_stream_info_cb_.Run(last_video_decoder_config_);
+
169 
+
170  return true;
+
171 }
+
172 
+
173 } // namespace mp2t
+
174 } // namespace media
+
175 } // namespace shaka
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 cca4ad96e6..e25008f55b 100644 --- a/docs/da/d59/structshaka_1_1media_1_1mp4_1_1CompactSampleSize.html +++ b/docs/da/d59/structshaka_1_1media_1_1mp4_1_1CompactSampleSize.html @@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/da/d5c/widevine__key__source_8h_source.html b/docs/da/d5c/widevine__key__source_8h_source.html index 3c2ff4bc9a..9e7fefde09 100644 --- a/docs/da/d5c/widevine__key__source_8h_source.html +++ b/docs/da/d5c/widevine__key__source_8h_source.html @@ -221,7 +221,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 8ffd4b9ab7..bdfaf42e66 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 781d700ba9..279f41e246 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 @@ -119,7 +119,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 a5768e91dd..f1ea1391ff 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 82cdce3a8f..6fc6b6c597 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 a915f1288c..78d1b2b41e 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 586cf8cffc..40bb60eb16 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 @@ -105,7 +105,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 28142c9695..18efc70eea 100644 --- a/docs/da/d88/mp4__muxer_8cc_source.html +++ b/docs/da/d88/mp4__muxer_8cc_source.html @@ -128,420 +128,427 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
39  *end = *start + static_cast<uint32_t>(size) - 1;
40 }
41 
-
42 FourCC CodecToFourCC(Codec codec) {
+
42 FourCC CodecToFourCC(Codec codec, H26xStreamFormat h26x_stream_format) {
43  switch (codec) {
44  case kCodecH264:
-
45  return FOURCC_avc1;
-
46  case kCodecHEV1:
-
47  return FOURCC_hev1;
-
48  case kCodecHVC1:
-
49  return FOURCC_hvc1;
-
50  case kCodecVP8:
-
51  return FOURCC_vp08;
-
52  case kCodecVP9:
-
53  return FOURCC_vp09;
-
54  case kCodecVP10:
-
55  return FOURCC_vp10;
-
56  case kCodecAAC:
-
57  return FOURCC_mp4a;
-
58  case kCodecAC3:
-
59  return FOURCC_ac_3;
-
60  case kCodecDTSC:
-
61  return FOURCC_dtsc;
-
62  case kCodecDTSH:
-
63  return FOURCC_dtsh;
-
64  case kCodecDTSL:
-
65  return FOURCC_dtsl;
-
66  case kCodecDTSE:
-
67  return FOURCC_dtse;
-
68  case kCodecDTSM:
-
69  return FOURCC_dtsm;
-
70  case kCodecEAC3:
-
71  return FOURCC_ec_3;
-
72  case kCodecOpus:
-
73  return FOURCC_Opus;
-
74  default:
-
75  return FOURCC_NULL;
-
76  }
-
77 }
-
78 
-
79 void GenerateSinf(FourCC old_type,
-
80  const EncryptionConfig& encryption_config,
-
81  ProtectionSchemeInfo* sinf) {
-
82  sinf->format.format = old_type;
-
83 
-
84  DCHECK_NE(encryption_config.protection_scheme, FOURCC_NULL);
-
85  sinf->type.type = encryption_config.protection_scheme;
-
86 
-
87  // The version of cenc implemented here. CENC 4.
-
88  const int kCencSchemeVersion = 0x00010000;
-
89  sinf->type.version = kCencSchemeVersion;
+
45  return h26x_stream_format ==
+
46  H26xStreamFormat::kNalUnitStreamWithParameterSetNalus
+
47  ? FOURCC_avc3
+
48  : FOURCC_avc1;
+
49  case kCodecH265:
+
50  return h26x_stream_format ==
+
51  H26xStreamFormat::kNalUnitStreamWithParameterSetNalus
+
52  ? FOURCC_hev1
+
53  : FOURCC_hvc1;
+
54  case kCodecVP8:
+
55  return FOURCC_vp08;
+
56  case kCodecVP9:
+
57  return FOURCC_vp09;
+
58  case kCodecVP10:
+
59  return FOURCC_vp10;
+
60  case kCodecAAC:
+
61  return FOURCC_mp4a;
+
62  case kCodecAC3:
+
63  return FOURCC_ac_3;
+
64  case kCodecDTSC:
+
65  return FOURCC_dtsc;
+
66  case kCodecDTSH:
+
67  return FOURCC_dtsh;
+
68  case kCodecDTSL:
+
69  return FOURCC_dtsl;
+
70  case kCodecDTSE:
+
71  return FOURCC_dtse;
+
72  case kCodecDTSM:
+
73  return FOURCC_dtsm;
+
74  case kCodecEAC3:
+
75  return FOURCC_ec_3;
+
76  case kCodecOpus:
+
77  return FOURCC_Opus;
+
78  default:
+
79  return FOURCC_NULL;
+
80  }
+
81 }
+
82 
+
83 void GenerateSinf(FourCC old_type,
+
84  const EncryptionConfig& encryption_config,
+
85  ProtectionSchemeInfo* sinf) {
+
86  sinf->format.format = old_type;
+
87 
+
88  DCHECK_NE(encryption_config.protection_scheme, FOURCC_NULL);
+
89  sinf->type.type = encryption_config.protection_scheme;
90 
-
91  auto& track_encryption = sinf->info.track_encryption;
-
92  track_encryption.default_is_protected = 1;
-
93  track_encryption.default_crypt_byte_block =
-
94  encryption_config.crypt_byte_block;
-
95  track_encryption.default_skip_byte_block = encryption_config.skip_byte_block;
-
96  track_encryption.default_per_sample_iv_size =
-
97  encryption_config.per_sample_iv_size;
-
98  track_encryption.default_constant_iv = encryption_config.constant_iv;
-
99  track_encryption.default_kid = encryption_config.key_id;
-
100 }
-
101 
-
102 } // namespace
-
103 
-
104 MP4Muxer::MP4Muxer(const MuxerOptions& options) : Muxer(options) {}
-
105 MP4Muxer::~MP4Muxer() {}
-
106 
-
107 Status MP4Muxer::InitializeMuxer() {
-
108  DCHECK(!streams().empty());
-
109 
-
110  std::unique_ptr<FileType> ftyp(new FileType);
-
111  std::unique_ptr<Movie> moov(new Movie);
-
112 
-
113  ftyp->major_brand = FOURCC_dash;
-
114  ftyp->compatible_brands.push_back(FOURCC_iso6);
-
115  ftyp->compatible_brands.push_back(FOURCC_mp41);
-
116  if (streams().size() == 1 && streams()[0]->stream_type() == kStreamVideo) {
-
117  const FourCC codec_fourcc = CodecToFourCC(
-
118  static_cast<VideoStreamInfo*>(streams()[0].get())->codec());
-
119  if (codec_fourcc != FOURCC_NULL)
-
120  ftyp->compatible_brands.push_back(codec_fourcc);
-
121  }
-
122 
-
123  moov->header.creation_time = IsoTimeNow();
-
124  moov->header.modification_time = IsoTimeNow();
-
125  moov->header.next_track_id = static_cast<uint32_t>(streams().size()) + 1;
-
126 
-
127  moov->tracks.resize(streams().size());
-
128  moov->extends.tracks.resize(streams().size());
-
129 
-
130  // Initialize tracks.
-
131  for (uint32_t i = 0; i < streams().size(); ++i) {
-
132  Track& trak = moov->tracks[i];
-
133  trak.header.track_id = i + 1;
+
91  // The version of cenc implemented here. CENC 4.
+
92  const int kCencSchemeVersion = 0x00010000;
+
93  sinf->type.version = kCencSchemeVersion;
+
94 
+
95  auto& track_encryption = sinf->info.track_encryption;
+
96  track_encryption.default_is_protected = 1;
+
97  track_encryption.default_crypt_byte_block =
+
98  encryption_config.crypt_byte_block;
+
99  track_encryption.default_skip_byte_block = encryption_config.skip_byte_block;
+
100  track_encryption.default_per_sample_iv_size =
+
101  encryption_config.per_sample_iv_size;
+
102  track_encryption.default_constant_iv = encryption_config.constant_iv;
+
103  track_encryption.default_kid = encryption_config.key_id;
+
104 }
+
105 
+
106 } // namespace
+
107 
+
108 MP4Muxer::MP4Muxer(const MuxerOptions& options) : Muxer(options) {}
+
109 MP4Muxer::~MP4Muxer() {}
+
110 
+
111 Status MP4Muxer::InitializeMuxer() {
+
112  DCHECK(!streams().empty());
+
113 
+
114  std::unique_ptr<FileType> ftyp(new FileType);
+
115  std::unique_ptr<Movie> moov(new Movie);
+
116 
+
117  ftyp->major_brand = FOURCC_dash;
+
118  ftyp->compatible_brands.push_back(FOURCC_iso6);
+
119  ftyp->compatible_brands.push_back(FOURCC_mp41);
+
120  if (streams().size() == 1 && streams()[0]->stream_type() == kStreamVideo) {
+
121  const FourCC codec_fourcc = CodecToFourCC(
+
122  streams()[0]->codec(), static_cast<VideoStreamInfo*>(streams()[0].get())
+
123  ->h26x_stream_format());
+
124  if (codec_fourcc != FOURCC_NULL)
+
125  ftyp->compatible_brands.push_back(codec_fourcc);
+
126  }
+
127 
+
128  moov->header.creation_time = IsoTimeNow();
+
129  moov->header.modification_time = IsoTimeNow();
+
130  moov->header.next_track_id = static_cast<uint32_t>(streams().size()) + 1;
+
131 
+
132  moov->tracks.resize(streams().size());
+
133  moov->extends.tracks.resize(streams().size());
134 
-
135  TrackExtends& trex = moov->extends.tracks[i];
-
136  trex.track_id = trak.header.track_id;
-
137  trex.default_sample_description_index = 1;
-
138 
-
139  switch (streams()[i]->stream_type()) {
-
140  case kStreamVideo:
-
141  GenerateVideoTrak(static_cast<VideoStreamInfo*>(streams()[i].get()),
-
142  &trak, i + 1);
-
143  break;
-
144  case kStreamAudio:
-
145  GenerateAudioTrak(static_cast<AudioStreamInfo*>(streams()[i].get()),
-
146  &trak, i + 1);
-
147  break;
-
148  default:
-
149  NOTIMPLEMENTED() << "Not implemented for stream type: "
-
150  << streams()[i]->stream_type();
-
151  }
-
152 
-
153  if (streams()[i]->is_encrypted()) {
-
154  const auto& key_system_info =
-
155  streams()[i]->encryption_config().key_system_info;
-
156  moov->pssh.resize(key_system_info.size());
-
157  for (size_t j = 0; j < key_system_info.size(); j++)
-
158  moov->pssh[j].raw_box = key_system_info[j].CreateBox();
-
159  }
-
160  }
-
161 
-
162  if (options().segment_template.empty()) {
-
163  segmenter_.reset(new SingleSegmentSegmenter(options(), std::move(ftyp),
-
164  std::move(moov)));
-
165  } else {
-
166  segmenter_.reset(
-
167  new MultiSegmentSegmenter(options(), std::move(ftyp), std::move(moov)));
-
168  }
-
169 
-
170  const Status segmenter_initialized =
-
171  segmenter_->Initialize(streams(), muxer_listener(), progress_listener());
-
172  if (!segmenter_initialized.ok())
-
173  return segmenter_initialized;
+
135  // Initialize tracks.
+
136  for (uint32_t i = 0; i < streams().size(); ++i) {
+
137  Track& trak = moov->tracks[i];
+
138  trak.header.track_id = i + 1;
+
139 
+
140  TrackExtends& trex = moov->extends.tracks[i];
+
141  trex.track_id = trak.header.track_id;
+
142  trex.default_sample_description_index = 1;
+
143 
+
144  switch (streams()[i]->stream_type()) {
+
145  case kStreamVideo:
+
146  GenerateVideoTrak(static_cast<VideoStreamInfo*>(streams()[i].get()),
+
147  &trak, i + 1);
+
148  break;
+
149  case kStreamAudio:
+
150  GenerateAudioTrak(static_cast<AudioStreamInfo*>(streams()[i].get()),
+
151  &trak, i + 1);
+
152  break;
+
153  default:
+
154  NOTIMPLEMENTED() << "Not implemented for stream type: "
+
155  << streams()[i]->stream_type();
+
156  }
+
157 
+
158  if (streams()[i]->is_encrypted()) {
+
159  const auto& key_system_info =
+
160  streams()[i]->encryption_config().key_system_info;
+
161  moov->pssh.resize(key_system_info.size());
+
162  for (size_t j = 0; j < key_system_info.size(); j++)
+
163  moov->pssh[j].raw_box = key_system_info[j].CreateBox();
+
164  }
+
165  }
+
166 
+
167  if (options().segment_template.empty()) {
+
168  segmenter_.reset(new SingleSegmentSegmenter(options(), std::move(ftyp),
+
169  std::move(moov)));
+
170  } else {
+
171  segmenter_.reset(
+
172  new MultiSegmentSegmenter(options(), std::move(ftyp), std::move(moov)));
+
173  }
174 
-
175  FireOnMediaStartEvent();
-
176  return Status::OK;
-
177 }
-
178 
-
179 Status MP4Muxer::Finalize() {
-
180  DCHECK(segmenter_);
-
181  Status segmenter_finalized = segmenter_->Finalize();
-
182 
-
183  if (!segmenter_finalized.ok())
-
184  return segmenter_finalized;
-
185 
-
186  FireOnMediaEndEvent();
-
187  LOG(INFO) << "MP4 file '" << options().output_file_name << "' finalized.";
-
188  return Status::OK;
-
189 }
+
175  const Status segmenter_initialized =
+
176  segmenter_->Initialize(streams(), muxer_listener(), progress_listener());
+
177  if (!segmenter_initialized.ok())
+
178  return segmenter_initialized;
+
179 
+
180  FireOnMediaStartEvent();
+
181  return Status::OK;
+
182 }
+
183 
+
184 Status MP4Muxer::Finalize() {
+
185  DCHECK(segmenter_);
+
186  Status segmenter_finalized = segmenter_->Finalize();
+
187 
+
188  if (!segmenter_finalized.ok())
+
189  return segmenter_finalized;
190 
-
191 Status MP4Muxer::AddSample(size_t stream_id,
-
192  std::shared_ptr<MediaSample> sample) {
-
193  DCHECK(segmenter_);
-
194  return segmenter_->AddSample(stream_id, sample);
-
195 }
-
196 
-
197 Status MP4Muxer::FinalizeSegment(size_t stream_id,
-
198  std::shared_ptr<SegmentInfo> segment_info) {
-
199  DCHECK(segmenter_);
-
200  VLOG(3) << "Finalize " << (segment_info->is_subsegment ? "sub" : "")
-
201  << "segment " << segment_info->start_timestamp << " duration "
-
202  << segment_info->duration;
-
203  return segmenter_->FinalizeSegment(stream_id, std::move(segment_info));
-
204 }
-
205 
-
206 void MP4Muxer::InitializeTrak(const StreamInfo* info, Track* trak) {
-
207  int64_t now = IsoTimeNow();
-
208  trak->header.creation_time = now;
-
209  trak->header.modification_time = now;
-
210  trak->header.duration = 0;
-
211  trak->media.header.creation_time = now;
-
212  trak->media.header.modification_time = now;
-
213  trak->media.header.timescale = info->time_scale();
-
214  trak->media.header.duration = 0;
-
215  if (!info->language().empty()) {
-
216  // Strip off the subtag, if any.
-
217  std::string main_language = info->language();
-
218  size_t dash = main_language.find('-');
-
219  if (dash != std::string::npos) {
-
220  main_language.erase(dash);
-
221  }
-
222 
-
223  // ISO-639-2/T main language code should be 3 characters.
-
224  if (main_language.size() != 3) {
-
225  LOG(WARNING) << "'" << main_language << "' is not a valid ISO-639-2 "
-
226  << "language code, ignoring.";
-
227  } else {
-
228  trak->media.header.language.code = main_language;
-
229  }
-
230  }
-
231 }
-
232 
-
233 void MP4Muxer::GenerateVideoTrak(const VideoStreamInfo* video_info,
-
234  Track* trak,
-
235  uint32_t track_id) {
-
236  InitializeTrak(video_info, trak);
+
191  FireOnMediaEndEvent();
+
192  LOG(INFO) << "MP4 file '" << options().output_file_name << "' finalized.";
+
193  return Status::OK;
+
194 }
+
195 
+
196 Status MP4Muxer::AddSample(size_t stream_id,
+
197  std::shared_ptr<MediaSample> sample) {
+
198  DCHECK(segmenter_);
+
199  return segmenter_->AddSample(stream_id, sample);
+
200 }
+
201 
+
202 Status MP4Muxer::FinalizeSegment(size_t stream_id,
+
203  std::shared_ptr<SegmentInfo> segment_info) {
+
204  DCHECK(segmenter_);
+
205  VLOG(3) << "Finalize " << (segment_info->is_subsegment ? "sub" : "")
+
206  << "segment " << segment_info->start_timestamp << " duration "
+
207  << segment_info->duration;
+
208  return segmenter_->FinalizeSegment(stream_id, std::move(segment_info));
+
209 }
+
210 
+
211 void MP4Muxer::InitializeTrak(const StreamInfo* info, Track* trak) {
+
212  int64_t now = IsoTimeNow();
+
213  trak->header.creation_time = now;
+
214  trak->header.modification_time = now;
+
215  trak->header.duration = 0;
+
216  trak->media.header.creation_time = now;
+
217  trak->media.header.modification_time = now;
+
218  trak->media.header.timescale = info->time_scale();
+
219  trak->media.header.duration = 0;
+
220  if (!info->language().empty()) {
+
221  // Strip off the subtag, if any.
+
222  std::string main_language = info->language();
+
223  size_t dash = main_language.find('-');
+
224  if (dash != std::string::npos) {
+
225  main_language.erase(dash);
+
226  }
+
227 
+
228  // ISO-639-2/T main language code should be 3 characters.
+
229  if (main_language.size() != 3) {
+
230  LOG(WARNING) << "'" << main_language << "' is not a valid ISO-639-2 "
+
231  << "language code, ignoring.";
+
232  } else {
+
233  trak->media.header.language.code = main_language;
+
234  }
+
235  }
+
236 }
237 
-
238  // width and height specify the track's visual presentation size as
-
239  // fixed-point 16.16 values.
-
240  uint32_t pixel_width = video_info->pixel_width();
-
241  uint32_t pixel_height = video_info->pixel_height();
-
242  if (pixel_width == 0 || pixel_height == 0) {
-
243  LOG(WARNING) << "pixel width/height are not set. Assuming 1:1.";
-
244  pixel_width = 1;
-
245  pixel_height = 1;
-
246  }
-
247  const double sample_aspect_ratio =
-
248  static_cast<double>(pixel_width) / pixel_height;
-
249  trak->header.width = video_info->width() * sample_aspect_ratio * 0x10000;
-
250  trak->header.height = video_info->height() * 0x10000;
-
251 
-
252  VideoSampleEntry video;
-
253  video.format = CodecToFourCC(video_info->codec());
-
254  video.width = video_info->width();
-
255  video.height = video_info->height();
-
256  video.codec_configuration.data = video_info->codec_config();
-
257  if (pixel_width != 1 || pixel_height != 1) {
-
258  video.pixel_aspect.h_spacing = pixel_width;
-
259  video.pixel_aspect.v_spacing = pixel_height;
-
260  }
-
261 
-
262  SampleDescription& sample_description =
-
263  trak->media.information.sample_table.description;
-
264  sample_description.type = kVideo;
-
265  sample_description.video_entries.push_back(video);
-
266 
-
267  if (video_info->is_encrypted()) {
-
268  // Add a second entry for clear content.
-
269  sample_description.video_entries.push_back(video);
-
270  // Convert the first entry to an encrypted entry.
-
271  VideoSampleEntry& entry = sample_description.video_entries[0];
-
272  GenerateSinf(entry.format, video_info->encryption_config(), &entry.sinf);
-
273  entry.format = FOURCC_encv;
-
274  }
-
275 }
-
276 
-
277 void MP4Muxer::GenerateAudioTrak(const AudioStreamInfo* audio_info,
-
278  Track* trak,
-
279  uint32_t track_id) {
-
280  InitializeTrak(audio_info, trak);
-
281 
-
282  trak->header.volume = 0x100;
-
283 
-
284  AudioSampleEntry audio;
-
285  audio.format = CodecToFourCC(audio_info->codec());
-
286  switch(audio_info->codec()){
-
287  case kCodecAAC:
-
288  audio.esds.es_descriptor.set_object_type(kISO_14496_3); // MPEG4 AAC.
-
289  audio.esds.es_descriptor.set_esid(track_id);
-
290  audio.esds.es_descriptor.set_decoder_specific_info(
-
291  audio_info->codec_config());
-
292  audio.esds.es_descriptor.set_max_bitrate(audio_info->max_bitrate());
-
293  audio.esds.es_descriptor.set_avg_bitrate(audio_info->avg_bitrate());
-
294  break;
-
295  case kCodecDTSC:
-
296  case kCodecDTSH:
-
297  case kCodecDTSL:
-
298  case kCodecDTSE:
-
299  case kCodecDTSM:
-
300  audio.ddts.extra_data = audio_info->codec_config();
-
301  audio.ddts.max_bitrate = audio_info->max_bitrate();
-
302  audio.ddts.avg_bitrate = audio_info->avg_bitrate();
-
303  audio.ddts.sampling_frequency = audio_info->sampling_frequency();
-
304  audio.ddts.pcm_sample_depth = audio_info->sample_bits();
-
305  break;
-
306  case kCodecAC3:
-
307  audio.dac3.data = audio_info->codec_config();
-
308  break;
-
309  case kCodecEAC3:
-
310  audio.dec3.data = audio_info->codec_config();
-
311  break;
-
312  case kCodecOpus:
-
313  audio.dops.opus_identification_header = audio_info->codec_config();
-
314  break;
-
315  default:
-
316  NOTIMPLEMENTED();
-
317  break;
-
318  }
-
319 
-
320  audio.channelcount = audio_info->num_channels();
-
321  audio.samplesize = audio_info->sample_bits();
-
322  audio.samplerate = audio_info->sampling_frequency();
-
323  SampleTable& sample_table = trak->media.information.sample_table;
-
324  SampleDescription& sample_description = sample_table.description;
-
325  sample_description.type = kAudio;
-
326  sample_description.audio_entries.push_back(audio);
-
327 
-
328  if (audio_info->is_encrypted()) {
-
329  // Add a second entry for clear content.
-
330  sample_description.audio_entries.push_back(audio);
-
331  // Convert the first entry to an encrypted entry.
-
332  AudioSampleEntry& entry = sample_description.audio_entries[0];
-
333  GenerateSinf(entry.format, audio_info->encryption_config(), &entry.sinf);
-
334  entry.format = FOURCC_enca;
-
335  }
-
336 
-
337  // Opus requires at least one sample group description box and at least one
-
338  // sample to group box with grouping type 'roll' within sample table box.
-
339  if (audio_info->codec() == kCodecOpus) {
-
340  sample_table.sample_group_descriptions.resize(1);
-
341  SampleGroupDescription& sample_group_description =
-
342  sample_table.sample_group_descriptions.back();
-
343  sample_group_description.grouping_type = FOURCC_roll;
-
344  sample_group_description.audio_roll_recovery_entries.resize(1);
-
345  // The roll distance is expressed in sample units and always takes negative
-
346  // values.
-
347  const uint64_t kNanosecondsPerSecond = 1000000000ull;
-
348  sample_group_description.audio_roll_recovery_entries[0].roll_distance =
-
349  (0 - (audio_info->seek_preroll_ns() * audio.samplerate +
-
350  kNanosecondsPerSecond / 2)) /
-
351  kNanosecondsPerSecond;
-
352 
-
353  sample_table.sample_to_groups.resize(1);
-
354  SampleToGroup& sample_to_group = sample_table.sample_to_groups.back();
-
355  sample_to_group.grouping_type = FOURCC_roll;
-
356 
-
357  sample_to_group.entries.resize(1);
-
358  SampleToGroupEntry& sample_to_group_entry = sample_to_group.entries.back();
-
359  // All samples are in track fragments.
-
360  sample_to_group_entry.sample_count = 0;
-
361  sample_to_group_entry.group_description_index =
-
362  SampleToGroupEntry::kTrackGroupDescriptionIndexBase + 1;
-
363  } else if (audio_info->seek_preroll_ns() != 0) {
-
364  LOG(WARNING) << "Unexpected seek preroll for codec " << audio_info->codec();
-
365  return;
-
366  }
-
367 }
-
368 
-
369 bool MP4Muxer::GetInitRangeStartAndEnd(uint32_t* start, uint32_t* end) {
-
370  DCHECK(start && end);
-
371  size_t range_offset = 0;
-
372  size_t range_size = 0;
-
373  const bool has_range = segmenter_->GetInitRange(&range_offset, &range_size);
-
374 
-
375  if (!has_range)
-
376  return false;
-
377 
-
378  SetStartAndEndFromOffsetAndSize(range_offset, range_size, start, end);
-
379  return true;
-
380 }
+
238 void MP4Muxer::GenerateVideoTrak(const VideoStreamInfo* video_info,
+
239  Track* trak,
+
240  uint32_t track_id) {
+
241  InitializeTrak(video_info, trak);
+
242 
+
243  // width and height specify the track's visual presentation size as
+
244  // fixed-point 16.16 values.
+
245  uint32_t pixel_width = video_info->pixel_width();
+
246  uint32_t pixel_height = video_info->pixel_height();
+
247  if (pixel_width == 0 || pixel_height == 0) {
+
248  LOG(WARNING) << "pixel width/height are not set. Assuming 1:1.";
+
249  pixel_width = 1;
+
250  pixel_height = 1;
+
251  }
+
252  const double sample_aspect_ratio =
+
253  static_cast<double>(pixel_width) / pixel_height;
+
254  trak->header.width = video_info->width() * sample_aspect_ratio * 0x10000;
+
255  trak->header.height = video_info->height() * 0x10000;
+
256 
+
257  VideoSampleEntry video;
+
258  video.format =
+
259  CodecToFourCC(video_info->codec(), video_info->h26x_stream_format());
+
260  video.width = video_info->width();
+
261  video.height = video_info->height();
+
262  video.codec_configuration.data = video_info->codec_config();
+
263  if (pixel_width != 1 || pixel_height != 1) {
+
264  video.pixel_aspect.h_spacing = pixel_width;
+
265  video.pixel_aspect.v_spacing = pixel_height;
+
266  }
+
267 
+
268  SampleDescription& sample_description =
+
269  trak->media.information.sample_table.description;
+
270  sample_description.type = kVideo;
+
271  sample_description.video_entries.push_back(video);
+
272 
+
273  if (video_info->is_encrypted()) {
+
274  // Add a second entry for clear content.
+
275  sample_description.video_entries.push_back(video);
+
276  // Convert the first entry to an encrypted entry.
+
277  VideoSampleEntry& entry = sample_description.video_entries[0];
+
278  GenerateSinf(entry.format, video_info->encryption_config(), &entry.sinf);
+
279  entry.format = FOURCC_encv;
+
280  }
+
281 }
+
282 
+
283 void MP4Muxer::GenerateAudioTrak(const AudioStreamInfo* audio_info,
+
284  Track* trak,
+
285  uint32_t track_id) {
+
286  InitializeTrak(audio_info, trak);
+
287 
+
288  trak->header.volume = 0x100;
+
289 
+
290  AudioSampleEntry audio;
+
291  audio.format =
+
292  CodecToFourCC(audio_info->codec(), H26xStreamFormat::kUnSpecified);
+
293  switch(audio_info->codec()){
+
294  case kCodecAAC:
+
295  audio.esds.es_descriptor.set_object_type(kISO_14496_3); // MPEG4 AAC.
+
296  audio.esds.es_descriptor.set_esid(track_id);
+
297  audio.esds.es_descriptor.set_decoder_specific_info(
+
298  audio_info->codec_config());
+
299  audio.esds.es_descriptor.set_max_bitrate(audio_info->max_bitrate());
+
300  audio.esds.es_descriptor.set_avg_bitrate(audio_info->avg_bitrate());
+
301  break;
+
302  case kCodecDTSC:
+
303  case kCodecDTSH:
+
304  case kCodecDTSL:
+
305  case kCodecDTSE:
+
306  case kCodecDTSM:
+
307  audio.ddts.extra_data = audio_info->codec_config();
+
308  audio.ddts.max_bitrate = audio_info->max_bitrate();
+
309  audio.ddts.avg_bitrate = audio_info->avg_bitrate();
+
310  audio.ddts.sampling_frequency = audio_info->sampling_frequency();
+
311  audio.ddts.pcm_sample_depth = audio_info->sample_bits();
+
312  break;
+
313  case kCodecAC3:
+
314  audio.dac3.data = audio_info->codec_config();
+
315  break;
+
316  case kCodecEAC3:
+
317  audio.dec3.data = audio_info->codec_config();
+
318  break;
+
319  case kCodecOpus:
+
320  audio.dops.opus_identification_header = audio_info->codec_config();
+
321  break;
+
322  default:
+
323  NOTIMPLEMENTED();
+
324  break;
+
325  }
+
326 
+
327  audio.channelcount = audio_info->num_channels();
+
328  audio.samplesize = audio_info->sample_bits();
+
329  audio.samplerate = audio_info->sampling_frequency();
+
330  SampleTable& sample_table = trak->media.information.sample_table;
+
331  SampleDescription& sample_description = sample_table.description;
+
332  sample_description.type = kAudio;
+
333  sample_description.audio_entries.push_back(audio);
+
334 
+
335  if (audio_info->is_encrypted()) {
+
336  // Add a second entry for clear content.
+
337  sample_description.audio_entries.push_back(audio);
+
338  // Convert the first entry to an encrypted entry.
+
339  AudioSampleEntry& entry = sample_description.audio_entries[0];
+
340  GenerateSinf(entry.format, audio_info->encryption_config(), &entry.sinf);
+
341  entry.format = FOURCC_enca;
+
342  }
+
343 
+
344  // Opus requires at least one sample group description box and at least one
+
345  // sample to group box with grouping type 'roll' within sample table box.
+
346  if (audio_info->codec() == kCodecOpus) {
+
347  sample_table.sample_group_descriptions.resize(1);
+
348  SampleGroupDescription& sample_group_description =
+
349  sample_table.sample_group_descriptions.back();
+
350  sample_group_description.grouping_type = FOURCC_roll;
+
351  sample_group_description.audio_roll_recovery_entries.resize(1);
+
352  // The roll distance is expressed in sample units and always takes negative
+
353  // values.
+
354  const uint64_t kNanosecondsPerSecond = 1000000000ull;
+
355  sample_group_description.audio_roll_recovery_entries[0].roll_distance =
+
356  (0 - (audio_info->seek_preroll_ns() * audio.samplerate +
+
357  kNanosecondsPerSecond / 2)) /
+
358  kNanosecondsPerSecond;
+
359 
+
360  sample_table.sample_to_groups.resize(1);
+
361  SampleToGroup& sample_to_group = sample_table.sample_to_groups.back();
+
362  sample_to_group.grouping_type = FOURCC_roll;
+
363 
+
364  sample_to_group.entries.resize(1);
+
365  SampleToGroupEntry& sample_to_group_entry = sample_to_group.entries.back();
+
366  // All samples are in track fragments.
+
367  sample_to_group_entry.sample_count = 0;
+
368  sample_to_group_entry.group_description_index =
+
369  SampleToGroupEntry::kTrackGroupDescriptionIndexBase + 1;
+
370  } else if (audio_info->seek_preroll_ns() != 0) {
+
371  LOG(WARNING) << "Unexpected seek preroll for codec " << audio_info->codec();
+
372  return;
+
373  }
+
374 }
+
375 
+
376 bool MP4Muxer::GetInitRangeStartAndEnd(uint32_t* start, uint32_t* end) {
+
377  DCHECK(start && end);
+
378  size_t range_offset = 0;
+
379  size_t range_size = 0;
+
380  const bool has_range = segmenter_->GetInitRange(&range_offset, &range_size);
381 
-
382 bool MP4Muxer::GetIndexRangeStartAndEnd(uint32_t* start, uint32_t* end) {
-
383  DCHECK(start && end);
-
384  size_t range_offset = 0;
-
385  size_t range_size = 0;
-
386  const bool has_range = segmenter_->GetIndexRange(&range_offset, &range_size);
-
387 
-
388  if (!has_range)
-
389  return false;
-
390 
-
391  SetStartAndEndFromOffsetAndSize(range_offset, range_size, start, end);
-
392  return true;
-
393 }
+
382  if (!has_range)
+
383  return false;
+
384 
+
385  SetStartAndEndFromOffsetAndSize(range_offset, range_size, start, end);
+
386  return true;
+
387 }
+
388 
+
389 bool MP4Muxer::GetIndexRangeStartAndEnd(uint32_t* start, uint32_t* end) {
+
390  DCHECK(start && end);
+
391  size_t range_offset = 0;
+
392  size_t range_size = 0;
+
393  const bool has_range = segmenter_->GetIndexRange(&range_offset, &range_size);
394 
-
395 void MP4Muxer::FireOnMediaStartEvent() {
-
396  if (!muxer_listener())
-
397  return;
-
398 
-
399  if (streams().size() > 1) {
-
400  LOG(ERROR) << "MuxerListener cannot take more than 1 stream.";
-
401  return;
-
402  }
-
403  DCHECK(!streams().empty()) << "Media started without a stream.";
-
404 
-
405  const uint32_t timescale = segmenter_->GetReferenceTimeScale();
-
406  muxer_listener()->OnMediaStart(options(), *streams().front(), timescale,
-
407  MuxerListener::kContainerMp4);
-
408 }
-
409 
-
410 void MP4Muxer::FireOnMediaEndEvent() {
-
411  if (!muxer_listener())
-
412  return;
-
413 
-
414  uint32_t init_range_start = 0;
-
415  uint32_t init_range_end = 0;
-
416  const bool has_init_range =
-
417  GetInitRangeStartAndEnd(&init_range_start, &init_range_end);
-
418 
-
419  uint32_t index_range_start = 0;
-
420  uint32_t index_range_end = 0;
-
421  const bool has_index_range =
-
422  GetIndexRangeStartAndEnd(&index_range_start, &index_range_end);
-
423 
-
424  const float duration_seconds = static_cast<float>(segmenter_->GetDuration());
+
395  if (!has_range)
+
396  return false;
+
397 
+
398  SetStartAndEndFromOffsetAndSize(range_offset, range_size, start, end);
+
399  return true;
+
400 }
+
401 
+
402 void MP4Muxer::FireOnMediaStartEvent() {
+
403  if (!muxer_listener())
+
404  return;
+
405 
+
406  if (streams().size() > 1) {
+
407  LOG(ERROR) << "MuxerListener cannot take more than 1 stream.";
+
408  return;
+
409  }
+
410  DCHECK(!streams().empty()) << "Media started without a stream.";
+
411 
+
412  const uint32_t timescale = segmenter_->GetReferenceTimeScale();
+
413  muxer_listener()->OnMediaStart(options(), *streams().front(), timescale,
+
414  MuxerListener::kContainerMp4);
+
415 }
+
416 
+
417 void MP4Muxer::FireOnMediaEndEvent() {
+
418  if (!muxer_listener())
+
419  return;
+
420 
+
421  uint32_t init_range_start = 0;
+
422  uint32_t init_range_end = 0;
+
423  const bool has_init_range =
+
424  GetInitRangeStartAndEnd(&init_range_start, &init_range_end);
425 
-
426  const int64_t file_size =
-
427  File::GetFileSize(options().output_file_name.c_str());
-
428  if (file_size <= 0) {
-
429  LOG(ERROR) << "Invalid file size: " << file_size;
-
430  return;
-
431  }
+
426  uint32_t index_range_start = 0;
+
427  uint32_t index_range_end = 0;
+
428  const bool has_index_range =
+
429  GetIndexRangeStartAndEnd(&index_range_start, &index_range_end);
+
430 
+
431  const float duration_seconds = static_cast<float>(segmenter_->GetDuration());
432 
-
433  muxer_listener()->OnMediaEnd(has_init_range,
-
434  init_range_start,
-
435  init_range_end,
-
436  has_index_range,
-
437  index_range_start,
-
438  index_range_end,
-
439  duration_seconds,
-
440  file_size);
-
441 }
-
442 
-
443 uint64_t MP4Muxer::IsoTimeNow() {
-
444  // Time in seconds from Jan. 1, 1904 to epoch time, i.e. Jan. 1, 1970.
-
445  const uint64_t kIsomTimeOffset = 2082844800l;
-
446  return kIsomTimeOffset +
-
447  (clock() ? clock()->Now() : base::Time::Now()).ToDoubleT();
+
433  const int64_t file_size =
+
434  File::GetFileSize(options().output_file_name.c_str());
+
435  if (file_size <= 0) {
+
436  LOG(ERROR) << "Invalid file size: " << file_size;
+
437  return;
+
438  }
+
439 
+
440  muxer_listener()->OnMediaEnd(has_init_range,
+
441  init_range_start,
+
442  init_range_end,
+
443  has_index_range,
+
444  index_range_start,
+
445  index_range_end,
+
446  duration_seconds,
+
447  file_size);
448 }
449 
-
450 } // namespace mp4
-
451 } // namespace media
-
452 } // namespace shaka
+
450 uint64_t MP4Muxer::IsoTimeNow() {
+
451  // Time in seconds from Jan. 1, 1904 to epoch time, i.e. Jan. 1, 1970.
+
452  const uint64_t kIsomTimeOffset = 2082844800l;
+
453  return kIsomTimeOffset +
+
454  (clock() ? clock()->Now() : base::Time::Now()).ToDoubleT();
+
455 }
+
456 
+
457 } // namespace mp4
+
458 } // namespace media
+
459 } // namespace shaka
virtual void OnMediaEnd(bool has_init_range, uint64_t init_range_start, uint64_t init_range_end, bool has_index_range, uint64_t index_range_start, uint64_t index_range_end, float duration_seconds, uint64_t file_size)=0
-
MP4Muxer(const MuxerOptions &options)
Create a MP4Muxer object from MuxerOptions.
Definition: mp4_muxer.cc:104
+
MP4Muxer(const MuxerOptions &options)
Create a MP4Muxer object from MuxerOptions.
Definition: mp4_muxer.cc:108
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
static int64_t GetFileSize(const char *file_name)
Definition: file.cc:176
@@ -550,7 +557,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 623d0ccc95..d7f13b3c0a 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 ecea93fe68..53d892e8ac 100644 --- a/docs/da/d8e/container__names_8cc_source.html +++ b/docs/da/d8e/container__names_8cc_source.html @@ -1866,7 +1866,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d9b/structshaka_1_1media_1_1mp4_1_1CompositionOffset-members.html b/docs/da/d9b/structshaka_1_1media_1_1mp4_1_1CompositionOffset-members.html index 9a8258b44b..cccd80e334 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 e1cf8a72dd..92ef68e3a4 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 329d5d0b72..42709ca06e 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 3aa9640dd3..2952371c8e 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 beb31bddf0..a9dcb3d147 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 ca9d5239bb..6822751353 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 abfbce7d16..88b3ab6b1c 100644 --- a/docs/da/dbb/structshaka_1_1media_1_1mp4_1_1HandlerReference.html +++ b/docs/da/dbb/structshaka_1_1media_1_1mp4_1_1HandlerReference.html @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/da/dc3/status_8cc_source.html b/docs/da/dc3/status_8cc_source.html index e3ec385507..46d173e2e0 100644 --- a/docs/da/dc3/status_8cc_source.html +++ b/docs/da/dc3/status_8cc_source.html @@ -176,7 +176,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 eb51be193d..7c9d905a08 100644 --- a/docs/da/dc4/structshaka_1_1media_1_1mp4_1_1TrackHeader.html +++ b/docs/da/dc4/structshaka_1_1media_1_1mp4_1_1TrackHeader.html @@ -215,7 +215,7 @@ Additional Inherited Members diff --git a/docs/da/dcb/es__descriptor_8h_source.html b/docs/da/dcb/es__descriptor_8h_source.html index 8618c5b6da..31409bbfdf 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/playready__key__source_8cc_source.html b/docs/da/dd0/playready__key__source_8cc_source.html index 28926ac1b0..8aa1e34fcd 100644 --- a/docs/da/dd0/playready__key__source_8cc_source.html +++ b/docs/da/dd0/playready__key__source_8cc_source.html @@ -460,7 +460,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 0420921139..b138626d2d 100644 --- a/docs/da/dd0/structshaka_1_1media_1_1mp4_1_1Edit.html +++ b/docs/da/dd0/structshaka_1_1media_1_1mp4_1_1Edit.html @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/da/dd0/webm__info__parser_8h_source.html b/docs/da/dd0/webm__info__parser_8h_source.html index 6f2bba238c..02052b19b5 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 232b0b5b6f..b484e7089d 100644 --- a/docs/da/dd1/fragmenter_8h_source.html +++ b/docs/da/dd1/fragmenter_8h_source.html @@ -208,7 +208,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/dd2/classshaka_1_1media_1_1mp2t_1_1TsPacket-members.html b/docs/da/dd2/classshaka_1_1media_1_1mp2t_1_1TsPacket-members.html index 15020c5670..be07b462ea 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 8db7c49153..e51bbd3fc8 100644 --- a/docs/da/dd6/classshaka_1_1media_1_1H264ByteToUnitStreamConverter-members.html +++ b/docs/da/dd6/classshaka_1_1media_1_1H264ByteToUnitStreamConverter-members.html @@ -95,15 +95,20 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); - - + + + + - - + + + + +
ConvertByteStreamToNalUnitStream(const uint8_t *input_frame, size_t input_frame_size, std::vector< uint8_t > *output_frame)shaka::media::H26xByteToUnitStreamConverter
GetDecoderConfigurationRecord(std::vector< uint8_t > *decoder_config) const overrideshaka::media::H264ByteToUnitStreamConvertervirtual
H264ByteToUnitStreamConverter() (defined in shaka::media::H264ByteToUnitStreamConverter)shaka::media::H264ByteToUnitStreamConverter
H26xByteToUnitStreamConverter(Nalu::CodecType type) (defined in shaka::media::H26xByteToUnitStreamConverter)shaka::media::H26xByteToUnitStreamConverterexplicit
H264ByteToUnitStreamConverter()shaka::media::H264ByteToUnitStreamConverter
H264ByteToUnitStreamConverter(H26xStreamFormat stream_format)shaka::media::H264ByteToUnitStreamConverterexplicit
H26xByteToUnitStreamConverter(Nalu::CodecType type)shaka::media::H26xByteToUnitStreamConverterexplicit
H26xByteToUnitStreamConverter(Nalu::CodecType type, H26xStreamFormat stream_format)shaka::media::H26xByteToUnitStreamConverter
kUnitStreamNaluLengthSize (defined in shaka::media::H26xByteToUnitStreamConverter)shaka::media::H26xByteToUnitStreamConverterstatic
~H264ByteToUnitStreamConverter() override (defined in shaka::media::H264ByteToUnitStreamConverter)shaka::media::H264ByteToUnitStreamConverter
~H26xByteToUnitStreamConverter() (defined in shaka::media::H26xByteToUnitStreamConverter)shaka::media::H26xByteToUnitStreamConvertervirtual
stream_format() const (defined in shaka::media::H26xByteToUnitStreamConverter)shaka::media::H26xByteToUnitStreamConverterinline
strip_parameter_set_nalus() const (defined in shaka::media::H26xByteToUnitStreamConverter)shaka::media::H26xByteToUnitStreamConverterinlineprotected
WarnIfNotMatch(int nalu_type, const uint8_t *nalu_ptr, size_t nalu_size, const std::vector< uint8_t > &vector) (defined in shaka::media::H26xByteToUnitStreamConverter)shaka::media::H26xByteToUnitStreamConverterprotected
~H264ByteToUnitStreamConverter() override (defined in shaka::media::H264ByteToUnitStreamConverter)shaka::media::H264ByteToUnitStreamConverter
~H26xByteToUnitStreamConverter() (defined in shaka::media::H26xByteToUnitStreamConverter)shaka::media::H26xByteToUnitStreamConvertervirtual
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 f91daa87de..17b6cf0028 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 8342ce9251..de9f23f5b8 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 5cd2006bd2..adc74d6169 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 3d92bc0507..8d4e80f7fa 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 75b13c95a7..d28510911c 100644 --- a/docs/da/de2/mock__mpd__builder_8cc_source.html +++ b/docs/da/de2/mock__mpd__builder_8cc_source.html @@ -120,7 +120,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 cc3072c300..fcdc67a374 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 d19eb4175b..4b00f03d85 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 fa215fe29c..da98cc2fb5 100644 --- a/docs/da/de8/classshaka_1_1media_1_1AudioStreamInfo-members.html +++ b/docs/da/de8/classshaka_1_1media_1_1AudioStreamInfo-members.html @@ -130,7 +130,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 242624a0bf..8ea152ff5d 100644 --- a/docs/da/de9/structshaka_1_1media_1_1mp4_1_1ProtectionSchemeInfo.html +++ b/docs/da/de9/structshaka_1_1media_1_1mp4_1_1ProtectionSchemeInfo.html @@ -179,7 +179,7 @@ Additional Inherited Members diff --git a/docs/da/df0/classshaka_1_1media_1_1H264VideoSliceHeaderParser.html b/docs/da/df0/classshaka_1_1media_1_1H264VideoSliceHeaderParser.html index b7aecb4d5e..85d0df32f0 100644 --- a/docs/da/df0/classshaka_1_1media_1_1H264VideoSliceHeaderParser.html +++ b/docs/da/df0/classshaka_1_1media_1_1H264VideoSliceHeaderParser.html @@ -152,7 +152,7 @@ int64_t  diff --git a/docs/da/df4/aes__decryptor_8cc_source.html b/docs/da/df4/aes__decryptor_8cc_source.html index db980d9a59..a6210bd174 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 0c52139052..f1e4396f6a 100644 --- a/docs/da/df5/structshaka_1_1media_1_1mp4_1_1SampleDescription.html +++ b/docs/da/df5/structshaka_1_1media_1_1mp4_1_1SampleDescription.html @@ -191,7 +191,7 @@ Additional Inherited Members diff --git a/docs/da/df9/classshaka_1_1media_1_1AesPatternCryptor-members.html b/docs/da/df9/classshaka_1_1media_1_1AesPatternCryptor-members.html index 20062513c4..de5147fceb 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/da/dfd/classshaka_1_1media_1_1MediaHandler.html b/docs/da/dfd/classshaka_1_1media_1_1MediaHandler.html index 831370da15..8a8c144538 100644 --- a/docs/da/dfd/classshaka_1_1media_1_1MediaHandler.html +++ b/docs/da/dfd/classshaka_1_1media_1_1MediaHandler.html @@ -293,7 +293,7 @@ std::pair< std::shared_ptr
diff --git a/docs/db/d02/structshaka_1_1media_1_1ChunkingOptions.html b/docs/db/d02/structshaka_1_1media_1_1ChunkingOptions.html index 797ebc5a2c..514b074016 100644 --- a/docs/db/d02/structshaka_1_1media_1_1ChunkingOptions.html +++ b/docs/db/d02/structshaka_1_1media_1_1ChunkingOptions.html @@ -162,7 +162,7 @@ double  diff --git a/docs/db/d05/structshaka_1_1media_1_1H265SliceHeader.html b/docs/db/d05/structshaka_1_1media_1_1H265SliceHeader.html index a811466c9c..a723a2e15e 100644 --- a/docs/db/d05/structshaka_1_1media_1_1H265SliceHeader.html +++ b/docs/db/d05/structshaka_1_1media_1_1H265SliceHeader.html @@ -236,7 +236,7 @@ std::vector< int > e diff --git a/docs/db/d0b/webvtt__sample__converter_8h_source.html b/docs/db/d0b/webvtt__sample__converter_8h_source.html index 15f1f35b36..3e13779fdd 100644 --- a/docs/db/d0b/webvtt__sample__converter_8h_source.html +++ b/docs/db/d0b/webvtt__sample__converter_8h_source.html @@ -173,7 +173,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); 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 343b91a278..e456eefc45 100644 --- a/docs/db/d11/structshaka_1_1media_1_1mp4_1_1CodecConfiguration.html +++ b/docs/db/d11/structshaka_1_1media_1_1mp4_1_1CodecConfiguration.html @@ -176,7 +176,7 @@ Additional Inherited Members diff --git a/docs/db/d14/classshaka_1_1media_1_1H265Parser-members.html b/docs/db/d14/classshaka_1_1media_1_1H265Parser-members.html index 2e0fcb8bc7..8fcb5aa019 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 5010061781..e82ed91493 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 cfa6f2d870..b004106e75 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 1971 of file box_definitions.cc.

+

Definition at line 1973 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 7e5cf9b29c..64585ba93e 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 @@ -223,7 +223,7 @@ std::pair< std::shared_ptr
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 44c1effa73..4a59ccc741 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 @@ -100,49 +100,70 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
11 
12 #include <vector>
13 
-
14 #include "packager/media/codecs/nalu_reader.h"
-
15 
-
16 namespace shaka {
-
17 namespace media {
-
18 
-
19 class BufferWriter;
-
20 
- -
23  public:
-
24  static constexpr size_t kUnitStreamNaluLengthSize = 4;
-
25 
-
26  explicit H26xByteToUnitStreamConverter(Nalu::CodecType type);
- -
28 
-
37  bool ConvertByteStreamToNalUnitStream(const uint8_t* input_frame,
-
38  size_t input_frame_size,
-
39  std::vector<uint8_t>* output_frame);
-
40 
-
47  virtual bool GetDecoderConfigurationRecord(
-
48  std::vector<uint8_t>* decoder_config) const = 0;
+
14 #include "packager/media/base/video_stream_info.h"
+
15 #include "packager/media/codecs/nalu_reader.h"
+
16 
+
17 namespace shaka {
+
18 namespace media {
+
19 
+
20 class BufferWriter;
+
21 
+ +
24  public:
+
25  static constexpr size_t kUnitStreamNaluLengthSize = 4;
+
26 
+
29  explicit H26xByteToUnitStreamConverter(Nalu::CodecType type);
+
30 
+
33  H26xByteToUnitStreamConverter(Nalu::CodecType type,
+
34  H26xStreamFormat stream_format);
+
35 
+ +
37 
+
46  bool ConvertByteStreamToNalUnitStream(const uint8_t* input_frame,
+
47  size_t input_frame_size,
+
48  std::vector<uint8_t>* output_frame);
49 
-
50  private:
-
51  // Process the given Nalu. If this returns true, it was handled and should
-
52  // not be copied to the buffer.
-
53  virtual bool ProcessNalu(const Nalu& nalu) = 0;
-
54 
-
55  Nalu::CodecType type_;
-
56 
-
57  DISALLOW_COPY_AND_ASSIGN(H26xByteToUnitStreamConverter);
-
58 };
-
59 
-
60 } // namespace media
-
61 } // namespace shaka
-
62 
-
63 #endif // MEDIA_CODECS_H26x_BYTE_TO_UNIT_STREAM_CONVERTER_H_
-
bool ConvertByteStreamToNalUnitStream(const uint8_t *input_frame, size_t input_frame_size, std::vector< uint8_t > *output_frame)
-
A base class that is used to convert H.26x byte streams to NAL unit streams.
+
56  virtual bool GetDecoderConfigurationRecord(
+
57  std::vector<uint8_t>* decoder_config) const = 0;
+
58 
+
59  H26xStreamFormat stream_format() const { return stream_format_; }
+
60 
+
61  protected:
+
62  bool strip_parameter_set_nalus() const {
+
63  return stream_format_ ==
+
64  H26xStreamFormat::kNalUnitStreamWithoutParameterSetNalus;
+
65  }
+
66 
+
67  // Warn if (nalu_ptr, nalu_size) does not match with |vector|.
+
68  void WarnIfNotMatch(int nalu_type,
+
69  const uint8_t* nalu_ptr,
+
70  size_t nalu_size,
+
71  const std::vector<uint8_t>& vector);
+
72 
+
73  private:
+
74  // Process the given Nalu. If this returns true, it was handled and should
+
75  // not be copied to the buffer.
+
76  virtual bool ProcessNalu(const Nalu& nalu) = 0;
+
77 
+
78  Nalu::CodecType type_;
+
79  H26xStreamFormat stream_format_;
+
80 
+
81  DISALLOW_COPY_AND_ASSIGN(H26xByteToUnitStreamConverter);
+
82 };
+
83 
+
84 } // namespace media
+
85 } // namespace shaka
+
86 
+
87 #endif // MEDIA_CODECS_H26x_BYTE_TO_UNIT_STREAM_CONVERTER_H_
+
bool ConvertByteStreamToNalUnitStream(const uint8_t *input_frame, size_t input_frame_size, std::vector< uint8_t > *output_frame)
+
A base class that is used to convert H.26x byte streams to NAL unit streams.
+
virtual bool GetDecoderConfigurationRecord(std::vector< uint8_t > *decoder_config) const =0
diff --git a/docs/db/d31/track__run__iterator_8cc_source.html b/docs/db/d31/track__run__iterator_8cc_source.html index d4545c6015..39a23b324b 100644 --- a/docs/db/d31/track__run__iterator_8cc_source.html +++ b/docs/db/d31/track__run__iterator_8cc_source.html @@ -775,7 +775,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d38/classshaka_1_1media_1_1mp2t_1_1PesPacketGenerator-members.html b/docs/db/d38/classshaka_1_1media_1_1mp2t_1_1PesPacketGenerator-members.html index 6be4e4a722..0ab9ec722d 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 @@ -104,7 +104,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 802d0eb08b..3b1ba1dca4 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 169dade9c9..73b4cead75 100644 --- a/docs/db/d45/mpd__notify__muxer__listener_8h_source.html +++ b/docs/db/d45/mpd__notify__muxer__listener_8h_source.html @@ -175,7 +175,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
91 
92 #endif // MEDIA_EVENT_MPD_NOTIFY_MUXER_LISTENER_H_
void OnNewSegment(const std::string &file_name, uint64_t start_time, uint64_t duration, uint64_t segment_file_size) override
-
Abstract class holds stream information.
Definition: stream_info.h:60
+
Abstract class holds stream information.
Definition: stream_info.h:57
void OnMediaEnd(bool has_init_range, uint64_t init_range_start, uint64_t init_range_end, bool has_index_range, uint64_t index_range_start, uint64_t index_range_end, float duration_seconds, uint64_t file_size) override
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
@@ -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 8e08ecd22f..5d43d96e6e 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 932cb76e51..17b69e9f6b 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 2e9498ed63..8cb7d0e319 100644 --- a/docs/db/d51/mp2t__media__parser_8h_source.html +++ b/docs/db/d51/mp2t__media__parser_8h_source.html @@ -191,7 +191,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 c0cbf1c4ec..42415de5dd 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 @@ -143,7 +143,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d59/media__handler__test__base_8h_source.html b/docs/db/d59/media__handler__test__base_8h_source.html index 22ab4dbf6d..3ce816d8a9 100644 --- a/docs/db/d59/media__handler__test__base_8h_source.html +++ b/docs/db/d59/media__handler__test__base_8h_source.html @@ -235,7 +235,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 8842d06af2..a3d6641d40 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 876293d4a3..178c5ba6d0 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 50a933d7e0..4504536304 100644 --- a/docs/db/d64/webvtt__media__parser_8h_source.html +++ b/docs/db/d64/webvtt__media__parser_8h_source.html @@ -180,7 +180,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 6f954934ed..4dad2b8e7d 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/d66/udp__file_8cc_source.html b/docs/db/d66/udp__file_8cc_source.html index a8e92c1628..75068975d9 100644 --- a/docs/db/d66/udp__file_8cc_source.html +++ b/docs/db/d66/udp__file_8cc_source.html @@ -343,7 +343,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 326a23478e..2d9c7081c9 100644 --- a/docs/db/d71/http__key__fetcher_8h_source.html +++ b/docs/db/d71/http__key__fetcher_8h_source.html @@ -167,7 +167,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 f517382657..a40e9dc14b 100644 --- a/docs/db/d74/classshaka_1_1media_1_1HEVCDecoderConfigurationRecord-members.html +++ b/docs/db/d74/classshaka_1_1media_1_1HEVCDecoderConfigurationRecord-members.html @@ -97,7 +97,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); data() const shaka::media::DecoderConfigurationRecordinlineprotected data_size() const shaka::media::DecoderConfigurationRecordinlineprotected DecoderConfigurationRecord() (defined in shaka::media::DecoderConfigurationRecord)shaka::media::DecoderConfigurationRecordprotected - GetCodecString(Codec codec) const shaka::media::HEVCDecoderConfigurationRecord + GetCodecString(FourCC codec_fourcc) const shaka::media::HEVCDecoderConfigurationRecord HEVCDecoderConfigurationRecord() (defined in shaka::media::HEVCDecoderConfigurationRecord)shaka::media::HEVCDecoderConfigurationRecord nalu(size_t i) const shaka::media::DecoderConfigurationRecordinline nalu_count() const shaka::media::DecoderConfigurationRecordinline @@ -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 17949c7072..1f0e0b4037 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 ec91c79773..e42b908fa0 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 9f668687c3..ca819ce5ff 100644 --- a/docs/db/d7e/muxer__options_8cc_source.html +++ b/docs/db/d7e/muxer__options_8cc_source.html @@ -106,7 +106,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 049484cb9b..fdd47c7dcf 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 ddb5a251ba..319d1553b5 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 27b069439e..e9f207a7de 100644 --- a/docs/db/d8f/mp4__muxer_8h_source.html +++ b/docs/db/d8f/mp4__muxer_8h_source.html @@ -162,19 +162,19 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
76 } // namespace shaka
77 
78 #endif // MEDIA_FORMATS_MP4_MP4_MUXER_H_
-
Abstract class holds stream information.
Definition: stream_info.h:60
-
MP4Muxer(const MuxerOptions &options)
Create a MP4Muxer object from MuxerOptions.
Definition: mp4_muxer.cc:104
+
Abstract class holds stream information.
Definition: stream_info.h:57
+
MP4Muxer(const MuxerOptions &options)
Create a MP4Muxer object from MuxerOptions.
Definition: mp4_muxer.cc:108
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
-
Holds video stream information.
+
Holds video stream information.
Holds audio stream information.
diff --git a/docs/db/d94/classshaka_1_1media_1_1ClusterBuilder.html b/docs/db/d94/classshaka_1_1media_1_1ClusterBuilder.html index 7e722b8fe6..7579f19e8a 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 dec4455459..35f0ada068 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 @@ -312,7 +312,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 1d38671f90..e8e927c40e 100644 --- a/docs/db/d95/structshaka_1_1media_1_1mp4_1_1ChunkLargeOffset.html +++ b/docs/db/d95/structshaka_1_1media_1_1mp4_1_1ChunkLargeOffset.html @@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/db/d96/wvm__media__parser_8h_source.html b/docs/db/d96/wvm__media__parser_8h_source.html index a6280578bf..5d42f8b0e5 100644 --- a/docs/db/d96/wvm__media__parser_8h_source.html +++ b/docs/db/d96/wvm__media__parser_8h_source.html @@ -350,19 +350,19 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); -
void Init(const InitCB &init_cb, const NewSampleCB &new_sample_cb, KeySource *decryption_key_source) override
+
void Init(const InitCB &init_cb, const NewSampleCB &new_sample_cb, KeySource *decryption_key_source) override
bool Flush() override WARN_UNUSED_RESULT
base::Callback< void(const std::vector< std::shared_ptr< StreamInfo > > &stream_info)> InitCB
Definition: media_parser.h:34
base::Callback< bool(uint32_t track_id, const std::shared_ptr< MediaSample > &media_sample)> NewSampleCB
Definition: media_parser.h:43
-
bool Parse(const uint8_t *buf, int size) override WARN_UNUSED_RESULT
+
bool Parse(const uint8_t *buf, int size) override WARN_UNUSED_RESULT
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:30
diff --git a/docs/db/da4/classBandwidthEstimator-members.html b/docs/db/da4/classBandwidthEstimator-members.html index 221f9034c3..91b40bdf6b 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 f74ac412a4..66d7ce3977 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/da9/classshaka_1_1media_1_1WebVttSampleConverter-members.html b/docs/db/da9/classshaka_1_1media_1_1WebVttSampleConverter-members.html index 2cd43c6834..4ad4e87a33 100644 --- a/docs/db/da9/classshaka_1_1media_1_1WebVttSampleConverter-members.html +++ b/docs/db/da9/classshaka_1_1media_1_1WebVttSampleConverter-members.html @@ -102,7 +102,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 10371e9a3d..675f80d1d9 100644 --- a/docs/db/dab/classshaka_1_1media_1_1TextStreamInfo.html +++ b/docs/db/dab/classshaka_1_1media_1_1TextStreamInfo.html @@ -298,7 +298,7 @@ void set_encryption_config diff --git a/docs/db/dae/classshaka_1_1media_1_1WebMInfoParser.html b/docs/db/dae/classshaka_1_1media_1_1WebMInfoParser.html index eeb5cbd5c3..88f442e462 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 5ca5fe1841..43caba94ce 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 87f15fec75..2c47c3101b 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 f06ff02189..5f44b83e49 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 6349feb762..09fa8a7e3b 100644 --- a/docs/db/db8/structshaka_1_1media_1_1mp4_1_1TrackEncryption.html +++ b/docs/db/db8/structshaka_1_1media_1_1mp4_1_1TrackEncryption.html @@ -197,7 +197,7 @@ Additional Inherited Members diff --git a/docs/db/dcb/classshaka_1_1media_1_1VPxParser.html b/docs/db/dcb/classshaka_1_1media_1_1VPxParser.html index 68565af306..0eb09c536a 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/dcd/classshaka_1_1MpdWriter.html b/docs/db/dcd/classshaka_1_1MpdWriter.html index 68f5730dd5..bab823405e 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 7f6ff6987a..bb0017a556 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 9f3f105154..53059fe214 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 aaf2129ccd..f29819fb0f 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 25579b57d3..ba54965cd8 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 a5b8080548..8aa3a6f303 100644 --- a/docs/db/dde/h265__parser_8cc_source.html +++ b/docs/db/dde/h265__parser_8cc_source.html @@ -1213,7 +1213,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 f1252ec7af..3508ed93e2 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 2d19fc652f..059742a09e 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 b4423cdd2b..306b77684f 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 e350ddd4ae..d211be3b89 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 0ba5377106..13a50a0ac0 100644 --- a/docs/db/df6/muxer_8h_source.html +++ b/docs/db/df6/muxer_8h_source.html @@ -188,7 +188,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 ec7049aec6..7baf93015d 100644 --- a/docs/db/df8/classshaka_1_1media_1_1H265ByteToUnitStreamConverter.html +++ b/docs/db/df8/classshaka_1_1media_1_1H265ByteToUnitStreamConverter.html @@ -87,6 +87,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
shaka::media::H265ByteToUnitStreamConverter Class Reference
@@ -106,15 +107,23 @@ Inheritance diagram for shaka::media::H265ByteToUnitStreamConverter:
+ + + + - + + + + +

Public Member Functions

 H265ByteToUnitStreamConverter ()
 
 H265ByteToUnitStreamConverter (H26xStreamFormat stream_format)
 
H26xByteToUnitStreamConverter implementation override.
bool GetDecoderConfigurationRecord (std::vector< uint8_t > *decoder_config) const override
 
- Public Member Functions inherited from shaka::media::H26xByteToUnitStreamConverter
H26xByteToUnitStreamConverter (Nalu::CodecType type)
 H26xByteToUnitStreamConverter (Nalu::CodecType type)
 
 H26xByteToUnitStreamConverter (Nalu::CodecType type, H26xStreamFormat stream_format)
 
bool ConvertByteStreamToNalUnitStream (const uint8_t *input_frame, size_t input_frame_size, std::vector< uint8_t > *output_frame)
 
+H26xStreamFormat stream_format () const
 
@@ -122,12 +131,65 @@ Additional Inherited Members + + + + +

Additional Inherited Members

static constexpr size_t kUnitStreamNaluLengthSize = 4
 
- Protected Member Functions inherited from shaka::media::H26xByteToUnitStreamConverter
+bool strip_parameter_set_nalus () const
 
+void WarnIfNotMatch (int nalu_type, const uint8_t *nalu_ptr, size_t nalu_size, const std::vector< uint8_t > &vector)
 

Detailed Description

Class which converts H.265 byte streams (as specified in ISO/IEC 14496-10 Annex B) into H.265 NAL unit streams (as specified in ISO/IEC 14496-15).

Definition at line 22 of file h265_byte_to_unit_stream_converter.h.

-

Member Function Documentation

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + +
shaka::media::H265ByteToUnitStreamConverter::H265ByteToUnitStreamConverter ()
+
+

Create a H265 byte to unit stream converter. The setting of KeepParameterSetNalus is defined by a gflag.

+ +

Definition at line 19 of file h265_byte_to_unit_stream_converter.cc.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + +
shaka::media::H265ByteToUnitStreamConverter::H265ByteToUnitStreamConverter (H26xStreamFormat stream_format)
+
+explicit
+
+

Create a H265 byte to unit stream converter with desired output stream format (whether to include parameter set nal units).

+ +

Definition at line 22 of file h265_byte_to_unit_stream_converter.cc.

+ +
+
+

Member Function Documentation

@@ -160,7 +222,7 @@ static constexpr size_t kU

Implements shaka::media::H26xByteToUnitStreamConverter.

-

Definition at line 23 of file h265_byte_to_unit_stream_converter.cc.

+

Definition at line 28 of file h265_byte_to_unit_stream_converter.cc.

@@ -171,7 +233,7 @@ static constexpr size_t kU diff --git a/docs/db/dfb/mpd__utils_8cc_source.html b/docs/db/dfb/mpd__utils_8cc_source.html index 022360f996..7e1afe7a59 100644 --- a/docs/db/dfb/mpd__utils_8cc_source.html +++ b/docs/db/dfb/mpd__utils_8cc_source.html @@ -452,7 +452,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 25bd13fdf4..2c7d82f286 100644 --- a/docs/db/dfc/mpd__notify__muxer__listener_8cc_source.html +++ b/docs/db/dfc/mpd__notify__muxer__listener_8cc_source.html @@ -261,7 +261,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
172 } // namespace shaka
void OnNewSegment(const std::string &file_name, uint64_t start_time, uint64_t duration, uint64_t segment_file_size) override
virtual bool Flush()=0
-
Abstract class holds stream information.
Definition: stream_info.h:60
+
Abstract class holds stream information.
Definition: stream_info.h:57
virtual bool NotifyNewSegment(uint32_t container_id, uint64_t start_time, uint64_t duration, uint64_t size)=0
void OnMediaEnd(bool has_init_range, uint64_t init_range_start, uint64_t init_range_end, bool has_index_range, uint64_t index_range_start, uint64_t index_range_end, float duration_seconds, uint64_t file_size) override
virtual bool NotifySampleDuration(uint32_t container_id, uint32_t sample_duration)=0
@@ -280,7 +280,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 2c3bcfb08f..27c8a689ca 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 16f9160858..7293f705c7 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 806c22b2ab..85edacc870 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 ac9ca785f2..6bda2e835e 100644 --- a/docs/dc/d06/classshaka_1_1media_1_1StreamInfo-members.html +++ b/docs/dc/d06/classshaka_1_1media_1_1StreamInfo-members.html @@ -117,7 +117,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 0d48b2c6af..8d8c524b15 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 811323ad42..2a737a9299 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 5d27379dfe..8ac1dc6d03 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 @@ -206,7 +206,7 @@ std::shared_ptr< shaka::media::MediaParser.

-

Definition at line 116 of file wvm_media_parser.cc.

+

Definition at line 115 of file wvm_media_parser.cc.

@@ -246,7 +246,7 @@ std::shared_ptr< shaka::media::MediaParser.

-

Definition at line 127 of file wvm_media_parser.cc.

+

Definition at line 126 of file wvm_media_parser.cc.

@@ -257,7 +257,7 @@ std::shared_ptr< 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 7b6c32d4f9..cf42725767 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 4a2b46505e..48ebd7623c 100644 --- a/docs/dc/d19/box_8h_source.html +++ b/docs/dc/d19/box_8h_source.html @@ -184,7 +184,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d22/dash__iop__mpd__notifier_8cc_source.html b/docs/dc/d22/dash__iop__mpd__notifier_8cc_source.html index 203ecd7101..4392117d05 100644 --- a/docs/dc/d22/dash__iop__mpd__notifier_8cc_source.html +++ b/docs/dc/d22/dash__iop__mpd__notifier_8cc_source.html @@ -383,7 +383,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 efec305899..acc672e0c7 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 85b809ef5b..ccd1e72a6c 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 dea1ff62bd..3de217361e 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 8d0b331f32..cb0a3e4bb4 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 313597e3d4..6c286f0719 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 5e492ae1e5..2a573f2e3c 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 e45bb80708..dd30cf3aab 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 2f45558643..7bcf1d8386 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 @@ -105,119 +105,132 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
16 namespace shaka {
17 namespace media {
18 
-
19 H265ByteToUnitStreamConverter::H265ByteToUnitStreamConverter()
-
20  : H26xByteToUnitStreamConverter(Nalu::kH265) {}
-
21 H265ByteToUnitStreamConverter::~H265ByteToUnitStreamConverter() {}
-
22 
- -
24  std::vector<uint8_t>* decoder_config) const {
-
25  DCHECK(decoder_config);
-
26 
-
27  if (last_sps_.empty() || last_pps_.empty() || last_vps_.empty()) {
-
28  // No data available to construct HEVCDecoderConfigurationRecord.
-
29  return false;
-
30  }
+ + +
21 
+ +
23  H26xStreamFormat stream_format)
+
24  : H26xByteToUnitStreamConverter(Nalu::kH265, stream_format) {}
+
25 
+
26 H265ByteToUnitStreamConverter::~H265ByteToUnitStreamConverter() {}
+
27 
+ +
29  std::vector<uint8_t>* decoder_config) const {
+
30  DCHECK(decoder_config);
31 
-
32  // We need to parse the SPS to get the data to add to the record.
-
33  int id;
-
34  Nalu nalu;
-
35  H265Parser parser;
-
36  RCHECK(nalu.Initialize(Nalu::kH265, last_sps_.data(), last_sps_.size()));
-
37  RCHECK(parser.ParseSps(nalu, &id) == H265Parser::kOk);
-
38  const H265Sps* sps = parser.GetSps(id);
-
39 
-
40  // Construct an HEVCDecoderConfigurationRecord containing a single SPS, PPS,
-
41  // and VPS NALU. Please refer to ISO/IEC 14496-15 for format specifics.
-
42  BufferWriter buffer(last_sps_.size() + last_pps_.size() + last_vps_.size() +
-
43  100);
-
44  buffer.AppendInt(static_cast<uint8_t>(1) /* version */);
-
45  // (1) general_profile_space, general_tier_flag, general_profile_idc
-
46  // (4) general_profile_compatibility_flags
-
47  // (6) general_constraint_indicator_flags
-
48  // (1) general_level_idc
-
49  // Skip Nalu header (2) and the first byte of the SPS to get the
-
50  // profile_tier_level.
-
51  buffer.AppendArray(&last_sps_[2+1], 12);
-
52 
-
53  // The default value for this field is 0, which is Unknown.
-
54  int min_spatial_segmentation_idc =
-
55  sps->vui_parameters.min_spatial_segmentation_idc;
-
56 
-
57  buffer.AppendInt(
-
58  static_cast<uint16_t>(0xf000 | min_spatial_segmentation_idc));
-
59  buffer.AppendInt(static_cast<uint8_t>(0xfc) /* parallelismType = 0 */);
-
60  buffer.AppendInt(static_cast<uint8_t>(0xfc | sps->chroma_format_idc));
-
61  buffer.AppendInt(static_cast<uint8_t>(0xf8 | sps->bit_depth_luma_minus8));
-
62  buffer.AppendInt(static_cast<uint8_t>(0xf8 | sps->bit_depth_chroma_minus8));
-
63  buffer.AppendInt(static_cast<uint16_t>(0) /* avgFrameRate */);
-
64  // Following flags are 0:
-
65  // constantFrameRate
-
66  // numTemporalLayers
-
67  // temporalIdNested
-
68  buffer.AppendInt(static_cast<uint8_t>(kUnitStreamNaluLengthSize - 1));
-
69  buffer.AppendInt(static_cast<uint8_t>(3) /* numOfArrays */);
-
70 
-
71  // SPS
-
72  const uint8_t kArrayCompleteness = 0x80;
-
73  buffer.AppendInt(static_cast<uint8_t>(kArrayCompleteness | Nalu::H265_SPS));
-
74  buffer.AppendInt(static_cast<uint16_t>(1) /* numNalus */);
-
75  buffer.AppendInt(static_cast<uint16_t>(last_sps_.size()));
-
76  buffer.AppendVector(last_sps_);
-
77 
-
78  // PPS
-
79  buffer.AppendInt(static_cast<uint8_t>(kArrayCompleteness | Nalu::H265_PPS));
-
80  buffer.AppendInt(static_cast<uint16_t>(1) /* numNalus */);
-
81  buffer.AppendInt(static_cast<uint16_t>(last_pps_.size()));
-
82  buffer.AppendVector(last_pps_);
-
83 
-
84  // VPS
-
85  buffer.AppendInt(static_cast<uint8_t>(kArrayCompleteness | Nalu::H265_VPS));
-
86  buffer.AppendInt(static_cast<uint16_t>(1) /* numNalus */);
-
87  buffer.AppendInt(static_cast<uint16_t>(last_vps_.size()));
-
88  buffer.AppendVector(last_vps_);
-
89 
-
90  buffer.SwapBuffer(decoder_config);
-
91  return true;
-
92 }
-
93 
-
94 bool H265ByteToUnitStreamConverter::ProcessNalu(const Nalu& nalu) {
-
95  DCHECK(nalu.data());
-
96 
-
97  // Skip the start code, but keep the 2-byte NALU header.
-
98  const uint8_t* nalu_ptr = nalu.data();
-
99  const uint64_t nalu_size = nalu.payload_size() + nalu.header_size();
-
100 
-
101  switch (nalu.type()) {
-
102  case Nalu::H265_SPS:
-
103  // Grab SPS NALU.
-
104  last_sps_.assign(nalu_ptr, nalu_ptr + nalu_size);
-
105  return true;
-
106  case Nalu::H265_PPS:
-
107  // Grab PPS NALU.
-
108  last_pps_.assign(nalu_ptr, nalu_ptr + nalu_size);
-
109  return true;
-
110  case Nalu::H265_VPS:
-
111  // Grab VPS NALU.
-
112  last_vps_.assign(nalu_ptr, nalu_ptr + nalu_size);
-
113  return true;
-
114  case Nalu::H265_AUD:
-
115  // Ignore AUD NALU.
-
116  return true;
-
117  default:
-
118  // Have the base class handle other NALU types.
-
119  return false;
-
120  }
-
121 }
-
122 
-
123 } // namespace media
-
124 } // namespace shaka
+
32  if (last_sps_.empty() || last_pps_.empty() || last_vps_.empty()) {
+
33  // No data available to construct HEVCDecoderConfigurationRecord.
+
34  return false;
+
35  }
+
36 
+
37  // We need to parse the SPS to get the data to add to the record.
+
38  int id;
+
39  Nalu nalu;
+
40  H265Parser parser;
+
41  RCHECK(nalu.Initialize(Nalu::kH265, last_sps_.data(), last_sps_.size()));
+
42  RCHECK(parser.ParseSps(nalu, &id) == H265Parser::kOk);
+
43  const H265Sps* sps = parser.GetSps(id);
+
44 
+
45  // Construct an HEVCDecoderConfigurationRecord containing a single SPS, PPS,
+
46  // and VPS NALU. Please refer to ISO/IEC 14496-15 for format specifics.
+
47  BufferWriter buffer(last_sps_.size() + last_pps_.size() + last_vps_.size() +
+
48  100);
+
49  buffer.AppendInt(static_cast<uint8_t>(1) /* version */);
+
50  // (1) general_profile_space, general_tier_flag, general_profile_idc
+
51  // (4) general_profile_compatibility_flags
+
52  // (6) general_constraint_indicator_flags
+
53  // (1) general_level_idc
+
54  // Skip Nalu header (2) and the first byte of the SPS to get the
+
55  // profile_tier_level.
+
56  buffer.AppendArray(&last_sps_[2+1], 12);
+
57 
+
58  // The default value for this field is 0, which is Unknown.
+
59  int min_spatial_segmentation_idc =
+
60  sps->vui_parameters.min_spatial_segmentation_idc;
+
61 
+
62  buffer.AppendInt(
+
63  static_cast<uint16_t>(0xf000 | min_spatial_segmentation_idc));
+
64  buffer.AppendInt(static_cast<uint8_t>(0xfc) /* parallelismType = 0 */);
+
65  buffer.AppendInt(static_cast<uint8_t>(0xfc | sps->chroma_format_idc));
+
66  buffer.AppendInt(static_cast<uint8_t>(0xf8 | sps->bit_depth_luma_minus8));
+
67  buffer.AppendInt(static_cast<uint8_t>(0xf8 | sps->bit_depth_chroma_minus8));
+
68  buffer.AppendInt(static_cast<uint16_t>(0) /* avgFrameRate */);
+
69  // Following flags are 0:
+
70  // constantFrameRate
+
71  // numTemporalLayers
+
72  // temporalIdNested
+
73  buffer.AppendInt(static_cast<uint8_t>(kUnitStreamNaluLengthSize - 1));
+
74  buffer.AppendInt(static_cast<uint8_t>(3) /* numOfArrays */);
+
75 
+
76  // SPS
+
77  const uint8_t kArrayCompleteness = 0x80;
+
78  buffer.AppendInt(static_cast<uint8_t>(kArrayCompleteness | Nalu::H265_SPS));
+
79  buffer.AppendInt(static_cast<uint16_t>(1) /* numNalus */);
+
80  buffer.AppendInt(static_cast<uint16_t>(last_sps_.size()));
+
81  buffer.AppendVector(last_sps_);
+
82 
+
83  // PPS
+
84  buffer.AppendInt(static_cast<uint8_t>(kArrayCompleteness | Nalu::H265_PPS));
+
85  buffer.AppendInt(static_cast<uint16_t>(1) /* numNalus */);
+
86  buffer.AppendInt(static_cast<uint16_t>(last_pps_.size()));
+
87  buffer.AppendVector(last_pps_);
+
88 
+
89  // VPS
+
90  buffer.AppendInt(static_cast<uint8_t>(kArrayCompleteness | Nalu::H265_VPS));
+
91  buffer.AppendInt(static_cast<uint16_t>(1) /* numNalus */);
+
92  buffer.AppendInt(static_cast<uint16_t>(last_vps_.size()));
+
93  buffer.AppendVector(last_vps_);
+
94 
+
95  buffer.SwapBuffer(decoder_config);
+
96  return true;
+
97 }
+
98 
+
99 bool H265ByteToUnitStreamConverter::ProcessNalu(const Nalu& nalu) {
+
100  DCHECK(nalu.data());
+
101 
+
102  // Skip the start code, but keep the 2-byte NALU header.
+
103  const uint8_t* nalu_ptr = nalu.data();
+
104  const uint64_t nalu_size = nalu.payload_size() + nalu.header_size();
+
105 
+
106  switch (nalu.type()) {
+
107  case Nalu::H265_SPS:
+
108  if (strip_parameter_set_nalus())
+
109  WarnIfNotMatch(nalu.type(), nalu_ptr, nalu_size, last_sps_);
+
110  // Grab SPS NALU.
+
111  last_sps_.assign(nalu_ptr, nalu_ptr + nalu_size);
+
112  return strip_parameter_set_nalus();
+
113  case Nalu::H265_PPS:
+
114  if (strip_parameter_set_nalus())
+
115  WarnIfNotMatch(nalu.type(), nalu_ptr, nalu_size, last_pps_);
+
116  // Grab PPS NALU.
+
117  last_pps_.assign(nalu_ptr, nalu_ptr + nalu_size);
+
118  return strip_parameter_set_nalus();
+
119  case Nalu::H265_VPS:
+
120  if (strip_parameter_set_nalus())
+
121  WarnIfNotMatch(nalu.type(), nalu_ptr, nalu_size, last_vps_);
+
122  // Grab VPS NALU.
+
123  last_vps_.assign(nalu_ptr, nalu_ptr + nalu_size);
+
124  return strip_parameter_set_nalus();
+
125  case Nalu::H265_AUD:
+
126  // Ignore AUD NALU.
+
127  return true;
+
128  default:
+
129  // Have the base class handle other NALU types.
+
130  return false;
+
131  }
+
132 }
+
133 
+
134 } // namespace media
+
135 } // namespace shaka
uint64_t payload_size() const
Size of this Nalu minus header_size().
Definition: nalu_reader.h:101
-
bool GetDecoderConfigurationRecord(std::vector< uint8_t > *decoder_config) const override
+
bool GetDecoderConfigurationRecord(std::vector< uint8_t > *decoder_config) const override
int type() const
Definition: nalu_reader.h:112
uint64_t header_size() const
The size of the header, e.g. 1 for H.264.
Definition: nalu_reader.h:99
+ +
A base class that is used to convert H.26x byte streams to NAL unit streams.
const H265Sps * GetSps(int sps_id)
Definition: h265_parser.cc:625
@@ -226,7 +239,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 65eacb6dc5..cbabfd9756 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 e73f070fc3..d4b4fe42ce 100644 --- a/docs/dc/d53/webm_2segmenter_8cc_source.html +++ b/docs/dc/d53/webm_2segmenter_8cc_source.html @@ -465,13 +465,13 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
376 } // namespace webm
377 } // namespace media
378 } // namespace shaka
-
Abstract class holds stream information.
Definition: stream_info.h:60
+
Abstract class holds stream information.
Definition: stream_info.h:57
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:231
virtual void OnSampleDurationReady(uint32_t sample_duration)=0
Class for parsing or writing VP codec configuration record.
Status Initialize(const std::vector< std::shared_ptr< StreamInfo >> &streams, MuxerListener *muxer_listener, ProgressListener *progress_listener)
Definition: segmenter.cc:53
Status AddSample(size_t stream_id, std::shared_ptr< MediaSample > sample)
Definition: segmenter.cc:121
- +
This class listens to progress updates events.
mkvmuxer::int64 Position() const override
Definition: mkv_writer.cc:71
void WriteWebM(std::vector< uint8_t > *data) const
@@ -479,16 +479,16 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
bool ParseMP4(const std::vector< uint8_t > &data)
virtual void OnProgress(double progress)=0
- +
Status FinalizeSegment(size_t stream_id, std::shared_ptr< SegmentInfo > segment_info)
Definition: segmenter.cc:146
double GetDuration() const
Definition: segmenter.cc:222
-
Holds video stream information.
+
Holds video stream information.
diff --git a/docs/dc/d54/structshaka_1_1media_1_1H264DecRefPicMarking.html b/docs/dc/d54/structshaka_1_1media_1_1H264DecRefPicMarking.html index 7da692b77c..d1ebc5e125 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 11c987086a..dd11fb34de 100644 --- a/docs/dc/d58/webm__media__parser_8h_source.html +++ b/docs/dc/d58/webm__media__parser_8h_source.html @@ -178,7 +178,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 adcff7c736..6f5aae5567 100644 --- a/docs/dc/d5c/classshaka_1_1MockMpdNotifier.html +++ b/docs/dc/d5c/classshaka_1_1MockMpdNotifier.html @@ -162,7 +162,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 7436abc97c..9bb3886d63 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 6e31f10eb4..e117f0186b 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 a848b92220..e06b332aef 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 69c0821086..f190ef74c4 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 22f295f7c3..3668576082 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 ae98b47f7b..09fe5831bc 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 478a85cd67..3e654ce0a4 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 5dbe8a31ff..3dfa1ba904 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 2264 of file box_definitions.cc.

+

Definition at line 2266 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 f37fca359a..924b7bc5ed 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 1646 of file box_definitions.cc.

+

Definition at line 1648 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 a9234c293d..6d79e9e8d4 100644 --- a/docs/dc/da1/classshaka_1_1MpdBuilder.html +++ b/docs/dc/da1/classshaka_1_1MpdBuilder.html @@ -351,7 +351,7 @@ template<DashProfile profile> diff --git a/docs/dc/da6/classshaka_1_1media_1_1ContentEncoding.html b/docs/dc/da6/classshaka_1_1media_1_1ContentEncoding.html index 76c546f885..74bd749113 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 fef31508f8..e60fb8243e 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 ac89013956..decbad08f7 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 c66a6c764c..27e90fa6ed 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 b8717791f9..7d69e42e73 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 d28fc4fb7b..b188f43858 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 cf62e428af..f1721418bb 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 2087 of file box_definitions.cc.

+

Definition at line 2089 of file box_definitions.cc.

@@ -179,7 +179,7 @@ Additional Inherited Members diff --git a/docs/dc/de1/structshaka_1_1SegmentInfo.html b/docs/dc/de1/structshaka_1_1SegmentInfo.html index a26324ab40..bc4b7b08a9 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 1620c72ca2..0b28860d8b 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 @@ -112,7 +112,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 19526590dd..8399ddd58a 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 @@ -108,34 +108,38 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
19 
23  public:
- - -
26 
- -
30  std::vector<uint8_t>* decoder_config) const override;
-
32 
-
33  private:
-
34  bool ProcessNalu(const Nalu& nalu) override;
-
35 
-
36  std::vector<uint8_t> last_sps_;
-
37  std::vector<uint8_t> last_pps_;
-
38  std::vector<uint8_t> last_vps_;
+ +
27 
+
30  explicit H265ByteToUnitStreamConverter(H26xStreamFormat stream_format);
+
31 
+ +
33 
+ +
37  std::vector<uint8_t>* decoder_config) const override;
39 
-
40  DISALLOW_COPY_AND_ASSIGN(H265ByteToUnitStreamConverter);
-
41 };
+
40  private:
+
41  bool ProcessNalu(const Nalu& nalu) override;
42 
-
43 } // namespace media
-
44 } // namespace shaka
-
45 
-
46 #endif // MEDIA_CODECS_H265_BYTE_TO_UNIT_STREAM_CONVERTER_H_
-
bool GetDecoderConfigurationRecord(std::vector< uint8_t > *decoder_config) const override
+
43  std::vector<uint8_t> last_sps_;
+
44  std::vector<uint8_t> last_pps_;
+
45  std::vector<uint8_t> last_vps_;
+
46 
+
47  DISALLOW_COPY_AND_ASSIGN(H265ByteToUnitStreamConverter);
+
48 };
+
49 
+
50 } // namespace media
+
51 } // namespace shaka
+
52 
+
53 #endif // MEDIA_CODECS_H265_BYTE_TO_UNIT_STREAM_CONVERTER_H_
+
bool GetDecoderConfigurationRecord(std::vector< uint8_t > *decoder_config) const override
-
A base class that is used to convert H.26x byte streams to NAL unit streams.
+ +
A base class that is used to convert H.26x byte streams to NAL unit streams.
diff --git a/docs/dc/dec/ts__section__pmt_8cc_source.html b/docs/dc/dec/ts__section__pmt_8cc_source.html index bea2d39a2b..e986402c41 100644 --- a/docs/dc/dec/ts__section__pmt_8cc_source.html +++ b/docs/dc/dec/ts__section__pmt_8cc_source.html @@ -208,7 +208,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/df0/classshaka_1_1media_1_1ClosureThread.html b/docs/dc/df0/classshaka_1_1media_1_1ClosureThread.html index c24451fdc4..a7561a4576 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 3198ec65ac..3be32a6211 100644 --- a/docs/dc/df2/classshaka_1_1media_1_1WebVttMediaParser.html +++ b/docs/dc/df2/classshaka_1_1media_1_1WebVttMediaParser.html @@ -261,7 +261,7 @@ std::shared_ptr< 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 ef96c81eb0..eace6c45b1 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 9638f7658b..52fd2883b4 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 d9f05bc07d..71b3976105 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/d05/encryption__config_8h_source.html b/docs/dd/d05/encryption__config_8h_source.html index 855d66b23e..ba38804c70 100644 --- a/docs/dd/d05/encryption__config_8h_source.html +++ b/docs/dd/d05/encryption__config_8h_source.html @@ -120,7 +120,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 61a00376be..fc7b989c60 100644 --- a/docs/dd/d06/structshaka_1_1media_1_1mp4_1_1ChunkOffset.html +++ b/docs/dd/d06/structshaka_1_1media_1_1mp4_1_1ChunkOffset.html @@ -180,7 +180,7 @@ uint32_t flags diff --git a/docs/dd/d11/mpd__builder_8cc_source.html b/docs/dd/d11/mpd__builder_8cc_source.html index c9270186df..63b098ac30 100644 --- a/docs/dd/d11/mpd__builder_8cc_source.html +++ b/docs/dd/d11/mpd__builder_8cc_source.html @@ -1530,7 +1530,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 fd3b99c8c5..92f48825b0 100644 --- a/docs/dd/d12/mpd__writer_8cc_source.html +++ b/docs/dd/d12/mpd__writer_8cc_source.html @@ -219,7 +219,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 c3a6bf3d0e..180fa4ee09 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 cd2ad6c872..d1b6ce1b89 100644 --- a/docs/dd/d17/classshaka_1_1media_1_1Demuxer.html +++ b/docs/dd/d17/classshaka_1_1media_1_1Demuxer.html @@ -458,7 +458,7 @@ std::pair< std::shared_ptr
diff --git a/docs/dd/d18/es__parser__adts_8h_source.html b/docs/dd/d18/es__parser__adts_8h_source.html index dbe2b0ab8b..ae6974e2c9 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 e083dc1d59..0f6a2a7281 100644 --- a/docs/dd/d19/video__stream__info_8cc_source.html +++ b/docs/dd/d19/video__stream__info_8cc_source.html @@ -109,77 +109,85 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
20  switch (codec) {
21  case kCodecH264:
22  return "H264";
-
23  case kCodecHEV1:
-
24  return "HEV1";
-
25  case kCodecHVC1:
-
26  return "HVC1";
-
27  case kCodecVC1:
-
28  return "VC1";
-
29  case kCodecMPEG2:
-
30  return "MPEG2";
-
31  case kCodecMPEG4:
-
32  return "MPEG4";
-
33  case kCodecTheora:
-
34  return "Theora";
-
35  case kCodecVP8:
-
36  return "VP8";
-
37  case kCodecVP9:
-
38  return "VP9";
-
39  case kCodecVP10:
-
40  return "VP10";
-
41  default:
-
42  NOTIMPLEMENTED() << "Unknown Video Codec: " << codec;
-
43  return "UnknownCodec";
-
44  }
-
45 }
-
46 
-
47 } // namespace
-
48 
- -
50  int track_id, uint32_t time_scale, uint64_t duration, Codec codec,
-
51  const std::string& codec_string, const uint8_t* codec_config,
-
52  size_t codec_config_size, uint16_t width, uint16_t height,
-
53  uint32_t pixel_width, uint32_t pixel_height, int16_t trick_play_rate,
-
54  uint8_t nalu_length_size, const std::string& language, bool is_encrypted)
-
55  : StreamInfo(kStreamVideo, track_id, time_scale, duration, codec,
-
56  codec_string, codec_config, codec_config_size, language,
-
57  is_encrypted),
-
58  width_(width),
-
59  height_(height),
-
60  pixel_width_(pixel_width),
-
61  pixel_height_(pixel_height),
-
62  trick_play_rate_(trick_play_rate),
-
63  nalu_length_size_(nalu_length_size) {}
-
64 
-
65 VideoStreamInfo::~VideoStreamInfo() {}
-
66 
- -
68  return codec() != kUnknownCodec && width_ > 0 &&
-
69  width_ <= limits::kMaxDimension && height_ > 0 &&
-
70  height_ <= limits::kMaxDimension &&
-
71  (nalu_length_size_ <= 2 || nalu_length_size_ == 4);
-
72 }
-
73 
-
74 std::string VideoStreamInfo::ToString() const {
-
75  return base::StringPrintf(
-
76  "%s codec: %s\n width: %d\n height: %d\n pixel_aspect_ratio: %d:%d\n "
-
77  "trick_play_rate: %d\n nalu_length_size: %d\n",
-
78  StreamInfo::ToString().c_str(), VideoCodecToString(codec()).c_str(),
-
79  width_, height_, pixel_width_, pixel_height_, trick_play_rate_,
-
80  nalu_length_size_);
-
81 }
-
82 
-
83 } // namespace media
-
84 } // namespace shaka
-
Abstract class holds stream information.
Definition: stream_info.h:60
-
bool IsValidConfig() const override
+
23  case kCodecH265:
+
24  return "H265";
+
25  case kCodecVP8:
+
26  return "VP8";
+
27  case kCodecVP9:
+
28  return "VP9";
+
29  case kCodecVP10:
+
30  return "VP10";
+
31  default:
+
32  NOTIMPLEMENTED() << "Unknown Video Codec: " << codec;
+
33  return "UnknownCodec";
+
34  }
+
35 }
+
36 
+
37 } // namespace
+
38 
+ +
40  uint32_t time_scale,
+
41  uint64_t duration,
+
42  Codec codec,
+
43  H26xStreamFormat h26x_stream_format,
+
44  const std::string& codec_string,
+
45  const uint8_t* codec_config,
+
46  size_t codec_config_size,
+
47  uint16_t width,
+
48  uint16_t height,
+
49  uint32_t pixel_width,
+
50  uint32_t pixel_height,
+
51  int16_t trick_play_rate,
+
52  uint8_t nalu_length_size,
+
53  const std::string& language,
+
54  bool is_encrypted)
+
55  : StreamInfo(kStreamVideo,
+
56  track_id,
+
57  time_scale,
+
58  duration,
+
59  codec,
+
60  codec_string,
+
61  codec_config,
+
62  codec_config_size,
+
63  language,
+
64  is_encrypted),
+
65  h26x_stream_format_(h26x_stream_format),
+
66  width_(width),
+
67  height_(height),
+
68  pixel_width_(pixel_width),
+
69  pixel_height_(pixel_height),
+
70  trick_play_rate_(trick_play_rate),
+
71  nalu_length_size_(nalu_length_size) {}
+
72 
+
73 VideoStreamInfo::~VideoStreamInfo() {}
+
74 
+ +
76  return codec() != kUnknownCodec && width_ > 0 &&
+
77  width_ <= limits::kMaxDimension && height_ > 0 &&
+
78  height_ <= limits::kMaxDimension &&
+
79  (nalu_length_size_ <= 2 || nalu_length_size_ == 4);
+
80 }
+
81 
+
82 std::string VideoStreamInfo::ToString() const {
+
83  return base::StringPrintf(
+
84  "%s codec: %s\n width: %d\n height: %d\n pixel_aspect_ratio: %d:%d\n "
+
85  "trick_play_rate: %d\n nalu_length_size: %d\n",
+
86  StreamInfo::ToString().c_str(), VideoCodecToString(codec()).c_str(),
+
87  width_, height_, pixel_width_, pixel_height_, trick_play_rate_,
+
88  nalu_length_size_);
+
89 }
+
90 
+
91 } // namespace media
+
92 } // namespace shaka
+
Abstract class holds stream information.
Definition: stream_info.h:57
+
bool IsValidConfig() const override
+
VideoStreamInfo(int track_id, uint32_t time_scale, uint64_t duration, Codec codec, H26xStreamFormat h26x_stream_format, const std::string &codec_string, const uint8_t *codec_config, size_t codec_config_size, uint16_t width, uint16_t height, uint32_t pixel_width, uint32_t pixel_height, int16_t trick_play_rate, uint8_t nalu_length_size, const std::string &language, bool is_encrypted)
virtual std::string ToString() const
Definition: stream_info.cc:37
-
std::string ToString() const override
-
VideoStreamInfo(int track_id, uint32_t time_scale, uint64_t duration, Codec codec, const std::string &codec_string, const uint8_t *codec_config, size_t codec_config_size, uint16_t width, uint16_t height, uint32_t pixel_width, uint32_t pixel_height, int16_t trick_play_rate, uint8_t nalu_length_size, const std::string &language, bool is_encrypted)
+
std::string ToString() const override
diff --git a/docs/dd/d30/wvm__media__parser_8cc_source.html b/docs/dd/d30/wvm__media__parser_8cc_source.html index 7fb5b2863b..f33804be49 100644 --- a/docs/dd/d30/wvm__media__parser_8cc_source.html +++ b/docs/dd/d30/wvm__media__parser_8cc_source.html @@ -197,148 +197,148 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
108  media_sample_(NULL),
109  crypto_unit_start_pos_(0),
110  stream_id_count_(0),
-
111  decryption_key_source_(NULL) {
-
112 }
-
113 
-
114 WvmMediaParser::~WvmMediaParser() {}
-
115 
-
116 void WvmMediaParser::Init(const InitCB& init_cb,
-
117  const NewSampleCB& new_sample_cb,
-
118  KeySource* decryption_key_source) {
-
119  DCHECK(!is_initialized_);
-
120  DCHECK(!init_cb.is_null());
-
121  DCHECK(!new_sample_cb.is_null());
-
122  decryption_key_source_ = decryption_key_source;
-
123  init_cb_ = init_cb;
-
124  new_sample_cb_ = new_sample_cb;
-
125 }
-
126 
-
127 bool WvmMediaParser::Parse(const uint8_t* buf, int size) {
-
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 
-
133  while (read_ptr < end) {
-
134  switch (parse_state_) {
-
135  case StartCode1:
-
136  if (*read_ptr == kStartCode1) {
-
137  parse_state_ = StartCode2;
-
138  }
-
139  break;
-
140  case StartCode2:
-
141  if (*read_ptr == kStartCode2) {
-
142  parse_state_ = StartCode3;
-
143  } else {
-
144  parse_state_ = StartCode1;
-
145  }
-
146  break;
-
147  case StartCode3:
-
148  if (*read_ptr == kStartCode3) {
-
149  parse_state_ = StartCode4;
-
150  } else {
-
151  parse_state_ = StartCode1;
-
152  }
-
153  break;
-
154  case StartCode4:
-
155  switch (*read_ptr) {
-
156  case kStartCode4Pack:
-
157  parse_state_ = PackHeader1;
-
158  break;
-
159  case kStartCode4System:
-
160  parse_state_ = SystemHeader1;
-
161  break;
-
162  case kStartCode4ProgramEnd:
-
163  parse_state_ = ProgramEnd;
-
164  continue;
-
165  default:
-
166  parse_state_ = PesStreamId;
-
167  continue;
-
168  }
-
169  break;
-
170  case PackHeader1:
-
171  parse_state_ = PackHeader2;
-
172  break;
-
173  case PackHeader2:
-
174  parse_state_ = PackHeader3;
-
175  break;
-
176  case PackHeader3:
-
177  parse_state_ = PackHeader4;
-
178  break;
-
179  case PackHeader4:
-
180  parse_state_ = PackHeader5;
-
181  break;
-
182  case PackHeader5:
-
183  parse_state_ = PackHeader6;
-
184  break;
-
185  case PackHeader6:
-
186  parse_state_ = PackHeader7;
-
187  break;
-
188  case PackHeader7:
-
189  parse_state_ = PackHeader8;
-
190  break;
-
191  case PackHeader8:
-
192  parse_state_ = PackHeader9;
-
193  break;
-
194  case PackHeader9:
-
195  parse_state_ = PackHeader10;
-
196  break;
-
197  case PackHeader10:
-
198  skip_bytes_ = *read_ptr & 0x07;
-
199  parse_state_ = PackHeaderStuffingSkip;
-
200  break;
-
201  case SystemHeader1:
-
202  skip_bytes_ = *read_ptr;
-
203  skip_bytes_ <<= 8;
-
204  parse_state_ = SystemHeader2;
-
205  break;
-
206  case SystemHeader2:
-
207  skip_bytes_ |= *read_ptr;
-
208  parse_state_ = SystemHeaderSkip;
-
209  break;
-
210  case PackHeaderStuffingSkip:
-
211  if (end >= skip_bytes_ + read_ptr) {
-
212  read_ptr += skip_bytes_;
-
213  skip_bytes_ = 0;
-
214  parse_state_ = StartCode1;
-
215  } else {
-
216  skip_bytes_ -= (end - read_ptr);
-
217  read_ptr = end;
-
218  }
-
219  continue;
-
220  case SystemHeaderSkip:
-
221  if (end >= skip_bytes_ + read_ptr) {
-
222  read_ptr += skip_bytes_;
-
223  skip_bytes_ = 0;
-
224  parse_state_ = StartCode1;
-
225  } else {
-
226  uint32_t remaining_size = end - read_ptr;
-
227  skip_bytes_ -= remaining_size;
-
228  read_ptr = end;
-
229  }
-
230  continue;
-
231  case PesStreamId:
-
232  pes_stream_id_ = *read_ptr;
-
233  if (!metadata_is_complete_ &&
-
234  (pes_stream_id_ != kPsmStreamId) &&
-
235  (pes_stream_id_ != kIndexStreamId) &&
-
236  (pes_stream_id_ != kEcmStreamId) &&
-
237  (pes_stream_id_ != kV2MetadataStreamId) &&
-
238  (pes_stream_id_ != kPaddingStreamId)) {
-
239  metadata_is_complete_ = true;
-
240  }
-
241  parse_state_ = PesPacketLength1;
-
242  break;
-
243  case PesPacketLength1:
-
244  pes_packet_bytes_ = *read_ptr;
-
245  pes_packet_bytes_ <<= 8;
-
246  parse_state_ = PesPacketLength2;
-
247  break;
-
248  case PesPacketLength2:
-
249  pes_packet_bytes_ |= *read_ptr;
-
250  if (HAS_HEADER_EXTENSION(pes_stream_id_)) {
-
251  parse_state_ = PesExtension1;
-
252  } else {
+
111  decryption_key_source_(NULL) {}
+
112 
+
113 WvmMediaParser::~WvmMediaParser() {}
+
114 
+
115 void WvmMediaParser::Init(const InitCB& init_cb,
+
116  const NewSampleCB& new_sample_cb,
+
117  KeySource* decryption_key_source) {
+
118  DCHECK(!is_initialized_);
+
119  DCHECK(!init_cb.is_null());
+
120  DCHECK(!new_sample_cb.is_null());
+
121  decryption_key_source_ = decryption_key_source;
+
122  init_cb_ = init_cb;
+
123  new_sample_cb_ = new_sample_cb;
+
124 }
+
125 
+
126 bool WvmMediaParser::Parse(const uint8_t* buf, int size) {
+
127  size_t num_bytes = 0;
+
128  size_t prev_size = 0;
+
129  const uint8_t* read_ptr = buf;
+
130  const uint8_t* end = read_ptr + size;
+
131 
+
132  while (read_ptr < end) {
+
133  switch (parse_state_) {
+
134  case StartCode1:
+
135  if (*read_ptr == kStartCode1) {
+
136  parse_state_ = StartCode2;
+
137  }
+
138  break;
+
139  case StartCode2:
+
140  if (*read_ptr == kStartCode2) {
+
141  parse_state_ = StartCode3;
+
142  } else {
+
143  parse_state_ = StartCode1;
+
144  }
+
145  break;
+
146  case StartCode3:
+
147  if (*read_ptr == kStartCode3) {
+
148  parse_state_ = StartCode4;
+
149  } else {
+
150  parse_state_ = StartCode1;
+
151  }
+
152  break;
+
153  case StartCode4:
+
154  switch (*read_ptr) {
+
155  case kStartCode4Pack:
+
156  parse_state_ = PackHeader1;
+
157  break;
+
158  case kStartCode4System:
+
159  parse_state_ = SystemHeader1;
+
160  break;
+
161  case kStartCode4ProgramEnd:
+
162  parse_state_ = ProgramEnd;
+
163  continue;
+
164  default:
+
165  parse_state_ = PesStreamId;
+
166  continue;
+
167  }
+
168  break;
+
169  case PackHeader1:
+
170  parse_state_ = PackHeader2;
+
171  break;
+
172  case PackHeader2:
+
173  parse_state_ = PackHeader3;
+
174  break;
+
175  case PackHeader3:
+
176  parse_state_ = PackHeader4;
+
177  break;
+
178  case PackHeader4:
+
179  parse_state_ = PackHeader5;
+
180  break;
+
181  case PackHeader5:
+
182  parse_state_ = PackHeader6;
+
183  break;
+
184  case PackHeader6:
+
185  parse_state_ = PackHeader7;
+
186  break;
+
187  case PackHeader7:
+
188  parse_state_ = PackHeader8;
+
189  break;
+
190  case PackHeader8:
+
191  parse_state_ = PackHeader9;
+
192  break;
+
193  case PackHeader9:
+
194  parse_state_ = PackHeader10;
+
195  break;
+
196  case PackHeader10:
+
197  skip_bytes_ = *read_ptr & 0x07;
+
198  parse_state_ = PackHeaderStuffingSkip;
+
199  break;
+
200  case SystemHeader1:
+
201  skip_bytes_ = *read_ptr;
+
202  skip_bytes_ <<= 8;
+
203  parse_state_ = SystemHeader2;
+
204  break;
+
205  case SystemHeader2:
+
206  skip_bytes_ |= *read_ptr;
+
207  parse_state_ = SystemHeaderSkip;
+
208  break;
+
209  case PackHeaderStuffingSkip:
+
210  if (end >= skip_bytes_ + read_ptr) {
+
211  read_ptr += skip_bytes_;
+
212  skip_bytes_ = 0;
+
213  parse_state_ = StartCode1;
+
214  } else {
+
215  skip_bytes_ -= (end - read_ptr);
+
216  read_ptr = end;
+
217  }
+
218  continue;
+
219  case SystemHeaderSkip:
+
220  if (end >= skip_bytes_ + read_ptr) {
+
221  read_ptr += skip_bytes_;
+
222  skip_bytes_ = 0;
+
223  parse_state_ = StartCode1;
+
224  } else {
+
225  uint32_t remaining_size = end - read_ptr;
+
226  skip_bytes_ -= remaining_size;
+
227  read_ptr = end;
+
228  }
+
229  continue;
+
230  case PesStreamId:
+
231  pes_stream_id_ = *read_ptr;
+
232  if (!metadata_is_complete_ &&
+
233  (pes_stream_id_ != kPsmStreamId) &&
+
234  (pes_stream_id_ != kIndexStreamId) &&
+
235  (pes_stream_id_ != kEcmStreamId) &&
+
236  (pes_stream_id_ != kV2MetadataStreamId) &&
+
237  (pes_stream_id_ != kPaddingStreamId)) {
+
238  metadata_is_complete_ = true;
+
239  }
+
240  parse_state_ = PesPacketLength1;
+
241  break;
+
242  case PesPacketLength1:
+
243  pes_packet_bytes_ = *read_ptr;
+
244  pes_packet_bytes_ <<= 8;
+
245  parse_state_ = PesPacketLength2;
+
246  break;
+
247  case PesPacketLength2:
+
248  pes_packet_bytes_ |= *read_ptr;
+
249  if (HAS_HEADER_EXTENSION(pes_stream_id_)) {
+
250  parse_state_ = PesExtension1;
+
251  } else {
+
252  prev_pes_flags_1_ = pes_flags_1_;
253  pes_flags_1_ = pes_flags_2_ = 0;
254  pes_header_data_bytes_ = 0;
255  parse_state_ = PesPayload;
@@ -828,11 +828,11 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
739  index_size = read_ptr - index_data_.data();
740 
741  if (has_video) {
-
742  Codec video_codec = kCodecH264;
-
743  stream_infos_.emplace_back(new VideoStreamInfo(
-
744  stream_id_count_, time_scale, track_duration, video_codec,
-
745  std::string(), video_codec_config.data(), video_codec_config.size(),
-
746  video_width, video_height, pixel_width, pixel_height, trick_play_rate,
+
742  stream_infos_.emplace_back(new VideoStreamInfo(
+
743  stream_id_count_, time_scale, track_duration, kCodecH264,
+
744  byte_to_unit_stream_converter_.stream_format(), std::string(),
+
745  video_codec_config.data(), video_codec_config.size(), video_width,
+
746  video_height, pixel_width, pixel_height, trick_play_rate,
747  nalu_length_size, std::string(),
748  decryption_key_source_ ? false : true));
749  program_demux_stream_map_[base::UintToString(index_program_id_) + ":" +
@@ -1268,7 +1268,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 c8c0aaaf35..5eb6dfa711 100644 --- a/docs/dd/d3b/mp4_2segmenter_8h_source.html +++ b/docs/dd/d3b/mp4_2segmenter_8h_source.html @@ -216,7 +216,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 701f44ea15..04d849ff13 100644 --- a/docs/dd/d3f/structshaka_1_1media_1_1mp4_1_1SyncSample.html +++ b/docs/dd/d3f/structshaka_1_1media_1_1mp4_1_1SyncSample.html @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/dd/d42/encryptor_8h_source.html b/docs/dd/d42/encryptor_8h_source.html index 7f0ef65978..d3b851a081 100644 --- a/docs/dd/d42/encryptor_8h_source.html +++ b/docs/dd/d42/encryptor_8h_source.html @@ -121,7 +121,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 f7ade601a9..2fb0938d28 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 b2bde720ce..95c232f5de 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 5d30e7477f..d8aca903dd 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 73861b7ccf..4042e88026 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 a32c026244..381b996966 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 138a6f0236..bc78996fb2 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 0af8345c41..20835b4903 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 a90d3b998a..c166f2557b 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 cc9e605095..dbc69f66dd 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 @@ -104,80 +104,91 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
15 namespace shaka {
16 namespace media {
17 
-
18 H264ByteToUnitStreamConverter::H264ByteToUnitStreamConverter()
-
19  : H26xByteToUnitStreamConverter(Nalu::kH264) {}
-
20 H264ByteToUnitStreamConverter::~H264ByteToUnitStreamConverter() {}
-
21 
- -
23  std::vector<uint8_t>* decoder_config) const {
-
24  DCHECK(decoder_config);
-
25 
-
26  if ((last_sps_.size() < 4) || last_pps_.empty()) {
-
27  // No data available to construct AVCDecoderConfigurationRecord.
-
28  return false;
-
29  }
+ + +
20 
+ +
22  H26xStreamFormat stream_format)
+
23  : H26xByteToUnitStreamConverter(Nalu::kH264, stream_format) {}
+
24 
+
25 H264ByteToUnitStreamConverter::~H264ByteToUnitStreamConverter() {}
+
26 
+ +
28  std::vector<uint8_t>* decoder_config) const {
+
29  DCHECK(decoder_config);
30 
-
31  // Construct an AVCDecoderConfigurationRecord containing a single SPS and a
-
32  // single PPS NALU. Please refer to ISO/IEC 14496-15 for format specifics.
-
33  BufferWriter buffer(last_sps_.size() + last_pps_.size() + 11);
-
34  uint8_t version(1);
-
35  buffer.AppendInt(version);
-
36  buffer.AppendInt(last_sps_[1]);
-
37  buffer.AppendInt(last_sps_[2]);
-
38  buffer.AppendInt(last_sps_[3]);
-
39  uint8_t reserved_and_length_size_minus_one(0xff);
-
40  buffer.AppendInt(reserved_and_length_size_minus_one);
-
41  uint8_t reserved_and_num_sps(0xe1);
-
42  buffer.AppendInt(reserved_and_num_sps);
-
43  buffer.AppendInt(static_cast<uint16_t>(last_sps_.size()));
-
44  buffer.AppendVector(last_sps_);
-
45  uint8_t num_pps(1);
-
46  buffer.AppendInt(num_pps);
-
47  buffer.AppendInt(static_cast<uint16_t>(last_pps_.size()));
-
48  buffer.AppendVector(last_pps_);
-
49 
-
50  buffer.SwapBuffer(decoder_config);
-
51  return true;
-
52 }
-
53 
-
54 bool H264ByteToUnitStreamConverter::ProcessNalu(const Nalu& nalu) {
-
55  DCHECK(nalu.data());
-
56 
-
57  // Skip the start code, but keep the 1-byte NALU type.
-
58  const uint8_t* nalu_ptr = nalu.data();
-
59  const uint64_t nalu_size = nalu.payload_size() + nalu.header_size();
-
60 
-
61  switch (nalu.type()) {
-
62  case Nalu::H264_SPS:
-
63  // Grab SPS NALU.
-
64  last_sps_.assign(nalu_ptr, nalu_ptr + nalu_size);
-
65  return true;
-
66  case Nalu::H264_PPS:
-
67  // Grab PPS NALU.
-
68  last_pps_.assign(nalu_ptr, nalu_ptr + nalu_size);
-
69  return true;
-
70  case Nalu::H264_AUD:
-
71  // Ignore AUD NALU.
-
72  return true;
-
73  default:
-
74  // Have the base class handle other NALU types.
-
75  return false;
-
76  }
-
77 }
-
78 
-
79 } // namespace media
-
80 } // namespace shaka
+
31  if ((last_sps_.size() < 4) || last_pps_.empty()) {
+
32  // No data available to construct AVCDecoderConfigurationRecord.
+
33  return false;
+
34  }
+
35 
+
36  // Construct an AVCDecoderConfigurationRecord containing a single SPS and a
+
37  // single PPS NALU. Please refer to ISO/IEC 14496-15 for format specifics.
+
38  BufferWriter buffer(last_sps_.size() + last_pps_.size() + 11);
+
39  uint8_t version(1);
+
40  buffer.AppendInt(version);
+
41  buffer.AppendInt(last_sps_[1]);
+
42  buffer.AppendInt(last_sps_[2]);
+
43  buffer.AppendInt(last_sps_[3]);
+
44  uint8_t reserved_and_length_size_minus_one(0xff);
+
45  buffer.AppendInt(reserved_and_length_size_minus_one);
+
46  uint8_t reserved_and_num_sps(0xe1);
+
47  buffer.AppendInt(reserved_and_num_sps);
+
48  buffer.AppendInt(static_cast<uint16_t>(last_sps_.size()));
+
49  buffer.AppendVector(last_sps_);
+
50  uint8_t num_pps(1);
+
51  buffer.AppendInt(num_pps);
+
52  buffer.AppendInt(static_cast<uint16_t>(last_pps_.size()));
+
53  buffer.AppendVector(last_pps_);
+
54 
+
55  buffer.SwapBuffer(decoder_config);
+
56  return true;
+
57 }
+
58 
+
59 bool H264ByteToUnitStreamConverter::ProcessNalu(const Nalu& nalu) {
+
60  DCHECK(nalu.data());
+
61 
+
62  // Skip the start code, but keep the 1-byte NALU type.
+
63  const uint8_t* nalu_ptr = nalu.data();
+
64  const uint64_t nalu_size = nalu.payload_size() + nalu.header_size();
+
65 
+
66  switch (nalu.type()) {
+
67  case Nalu::H264_SPS:
+
68  if (strip_parameter_set_nalus())
+
69  WarnIfNotMatch(nalu.type(), nalu_ptr, nalu_size, last_sps_);
+
70  // Grab SPS NALU.
+
71  last_sps_.assign(nalu_ptr, nalu_ptr + nalu_size);
+
72  return strip_parameter_set_nalus();
+
73  case Nalu::H264_PPS:
+
74  if (strip_parameter_set_nalus())
+
75  WarnIfNotMatch(nalu.type(), nalu_ptr, nalu_size, last_pps_);
+
76  // Grab PPS NALU.
+
77  last_pps_.assign(nalu_ptr, nalu_ptr + nalu_size);
+
78  return strip_parameter_set_nalus();
+
79  case Nalu::H264_AUD:
+
80  // Ignore AUD NALU.
+
81  return true;
+
82  default:
+
83  // Have the base class handle other NALU types.
+
84  return false;
+
85  }
+
86 }
+
87 
+
88 } // namespace media
+
89 } // namespace shaka
uint64_t payload_size() const
Size of this Nalu minus header_size().
Definition: nalu_reader.h:101
+
int type() const
Definition: nalu_reader.h:112
uint64_t header_size() const
The size of the header, e.g. 1 for H.264.
Definition: nalu_reader.h:99
-
bool GetDecoderConfigurationRecord(std::vector< uint8_t > *decoder_config) const override
+
bool GetDecoderConfigurationRecord(std::vector< uint8_t > *decoder_config) const override
+
A base class that is used to convert H.26x byte streams to NAL unit streams.
const uint8_t * data() const
This is the pointer to the Nalu data, pointing to the header.
Definition: nalu_reader.h:96
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 651017bf6c..75277a7c5b 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 d67d97c769..c6f950062d 100644 --- a/docs/dd/d71/structshaka_1_1media_1_1mp4_1_1PixelAspectRatio.html +++ b/docs/dd/d71/structshaka_1_1media_1_1mp4_1_1PixelAspectRatio.html @@ -176,7 +176,7 @@ Additional Inherited Members diff --git a/docs/dd/d7a/classshaka_1_1media_1_1MuxerListener.html b/docs/dd/d7a/classshaka_1_1media_1_1MuxerListener.html index 8ef24a64bc..1f74b1b90e 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 1b85c2a78d..efc286aca8 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 7d83b5d57a..ab8c22c140 100644 --- a/docs/dd/d80/media__sample_8h_source.html +++ b/docs/dd/d80/media__sample_8h_source.html @@ -270,7 +270,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 b204b72ba4..6c9ed21f2d 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 5d0140cdd5..db7f72cb76 100644 --- a/docs/dd/d88/pes__packet__generator_8h_source.html +++ b/docs/dd/d88/pes__packet__generator_8h_source.html @@ -155,7 +155,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
84 
85 #endif // PACKAGER_MEDIA_FORMATS_MP2T_PES_PACKET_GENERATOR_H_
-
Abstract class holds stream information.
Definition: stream_info.h:60
+
Abstract class holds stream information.
Definition: stream_info.h:57
virtual std::unique_ptr< PesPacket > GetNextPesPacket()
@@ -164,7 +164,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 7dfacb4f09..7a9e1a5eb8 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 72e0492d56..46643fd32b 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 0f9f599051..0998658991 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 f350247e7e..c1d95ec922 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 9fb1b0b986..20075509b9 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 43bc94d1bb..8a4a0b6423 100644 --- a/docs/dd/d9d/classshaka_1_1MpdNotifier-members.html +++ b/docs/dd/d9d/classshaka_1_1MpdNotifier-members.html @@ -107,7 +107,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 acf1d07004..812e0436e7 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 d87058ef9a..9858117c94 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 @@ -221,7 +221,7 @@ uint64_t segment_payload_p 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 64cfcb7a69..777edac240 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 @@ -166,7 +166,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
84 } // namespace shaka
85 
86 #endif // MEDIA_EVENT_VOD_MEDIA_INFO_DUMP_MUXER_LISTENER_H_
-
Abstract class holds stream information.
Definition: stream_info.h:60
+
Abstract class holds stream information.
Definition: stream_info.h:57
void OnSampleDurationReady(uint32_t sample_duration) override
void OnNewSegment(const std::string &file_name, uint64_t start_time, uint64_t duration, uint64_t segment_file_size) override
@@ -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 ae2c95da03..3dccb3c142 100644 --- a/docs/dd/dab/webm__muxer_8h_source.html +++ b/docs/dd/dab/webm__muxer_8h_source.html @@ -139,7 +139,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 2888068d41..4e3ac83181 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 defeae1cf2..c36110b2b7 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 6430ae8974..69416eaaec 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 cd32063ee3..a11d60839a 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 a04632964c..7f6cd73e5d 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/dbc/encryption__handler_8h_source.html b/docs/dd/dbc/encryption__handler_8h_source.html index 1cfacad7db..0892a9e085 100644 --- a/docs/dd/dbc/encryption__handler_8h_source.html +++ b/docs/dd/dbc/encryption__handler_8h_source.html @@ -189,7 +189,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
119 
120 #endif // PACKAGER_MEDIA_CRYPTO_ENCRYPTION_HANDLER_H_
-
Abstract class holds stream information.
Definition: stream_info.h:60
+
Abstract class holds stream information.
Definition: stream_info.h:57
@@ -208,7 +208,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 7d10d28598..bf1012c3dd 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 041d797d9f..58b7c2d33c 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 ae97555353..47c3b5d3a3 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 bbd8218833..aa5804189d 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 77eeb5d2ab..dd861589d0 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 6bf1c059af..22c0788b2c 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 @@ -400,7 +400,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 77609888c1..cfde33acc5 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 abcf648b77..2c88fc3e95 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::string comment diff --git a/docs/dd/dd2/buffer__writer_8h_source.html b/docs/dd/dd2/buffer__writer_8h_source.html index 90862d7a28..41ea653eb2 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 382f6971a6..829620f4ab 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 e3a17c66e6..69e903cc2b 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 7cd86af6bf..53516aaae0 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 76d806832f..6a29b129f7 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 2488c2277d..0722b49627 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 2408d8678b..d85504115a 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 e6d607b37a..01a7261f2f 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/de9/classshaka_1_1media_1_1MediaHandler-members.html b/docs/dd/de9/classshaka_1_1media_1_1MediaHandler-members.html index 852fbdd507..806b9033ea 100644 --- a/docs/dd/de9/classshaka_1_1media_1_1MediaHandler-members.html +++ b/docs/dd/de9/classshaka_1_1media_1_1MediaHandler-members.html @@ -117,7 +117,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 b911705c07..17f853134e 100644 --- a/docs/dd/dee/box__definitions_8cc_source.html +++ b/docs/dd/dee/box__definitions_8cc_source.html @@ -1598,1295 +1598,1297 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
1509  const FourCC actual_format = GetActualFormat();
1510  switch (actual_format) {
1511  case FOURCC_avc1:
-
1512  compressor_name.assign(
-
1513  kAvcCompressorName,
-
1514  kAvcCompressorName + arraysize(kAvcCompressorName));
-
1515  break;
-
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) &&
+
1512  case FOURCC_avc3:
+
1513  compressor_name.assign(
+
1514  kAvcCompressorName,
+
1515  kAvcCompressorName + arraysize(kAvcCompressorName));
+
1516  break;
+
1517  case FOURCC_hev1:
+
1518  case FOURCC_hvc1:
+
1519  compressor_name.assign(
+
1520  kHevcCompressorName,
+
1521  kHevcCompressorName + arraysize(kHevcCompressorName));
+
1522  break;
+
1523  case FOURCC_vp08:
+
1524  case FOURCC_vp09:
+
1525  case FOURCC_vp10:
+
1526  compressor_name.assign(
+
1527  kVpcCompressorName,
+
1528  kVpcCompressorName + arraysize(kVpcCompressorName));
+
1529  break;
+
1530  default:
+
1531  LOG(ERROR) << FourCCToString(actual_format) << " is not supported.";
+
1532  return false;
+
1533  }
+
1534  compressor_name.resize(kCompressorNameSize);
+
1535  }
+
1536 
+
1537  uint32_t video_resolution = kVideoResolution;
+
1538  uint16_t video_frame_count = kVideoFrameCount;
+
1539  uint16_t video_depth = kVideoDepth;
+
1540  int16_t predefined = -1;
+
1541  RCHECK(buffer->IgnoreBytes(6) && // reserved.
+
1542  buffer->ReadWriteUInt16(&data_reference_index) &&
+
1543  buffer->IgnoreBytes(16) && // predefined 0.
+
1544  buffer->ReadWriteUInt16(&width) &&
+
1545  buffer->ReadWriteUInt16(&height) &&
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; }
+
1547  buffer->ReadWriteUInt32(&video_resolution) &&
+
1548  buffer->IgnoreBytes(4) && // reserved.
+
1549  buffer->ReadWriteUInt16(&video_frame_count) &&
+
1550  buffer->ReadWriteVector(&compressor_name, kCompressorNameSize) &&
+
1551  buffer->ReadWriteUInt16(&video_depth) &&
+
1552  buffer->ReadWriteInt16(&predefined));
+
1553 
+
1554  RCHECK(buffer->PrepareChildren());
+
1555 
+
1556  if (format == FOURCC_encv) {
+
1557  if (buffer->Reading()) {
+
1558  // Continue scanning until a supported protection scheme is found, or
+
1559  // until we run out of protection schemes.
+
1560  while (!IsProtectionSchemeSupported(sinf.type.type))
+
1561  RCHECK(buffer->ReadWriteChild(&sinf));
+
1562  } else {
+
1563  DCHECK(IsProtectionSchemeSupported(sinf.type.type));
+
1564  RCHECK(buffer->ReadWriteChild(&sinf));
+
1565  }
+
1566  }
+
1567 
+
1568  const FourCC actual_format = GetActualFormat();
+
1569  if (buffer->Reading()) {
+
1570  codec_configuration.box_type = GetCodecConfigurationBoxType(actual_format);
+
1571  } else {
+
1572  DCHECK_EQ(codec_configuration.box_type,
+
1573  GetCodecConfigurationBoxType(actual_format));
+
1574  }
+
1575  DCHECK_NE(codec_configuration.box_type, FOURCC_NULL);
+
1576 
+
1577  RCHECK(buffer->ReadWriteChild(&codec_configuration));
+
1578  RCHECK(buffer->TryReadWriteChild(&pixel_aspect));
+
1579  return true;
+
1580 }
+
1581 
+
1582 size_t VideoSampleEntry::ComputeSizeInternal() {
+
1583  const FourCC actual_format = GetActualFormat();
+
1584  if (actual_format == FOURCC_NULL)
+
1585  return 0;
+
1586  codec_configuration.box_type = GetCodecConfigurationBoxType(actual_format);
+
1587  DCHECK_NE(codec_configuration.box_type, FOURCC_NULL);
+
1588  return HeaderSize() + sizeof(data_reference_index) + sizeof(width) +
+
1589  sizeof(height) + sizeof(kVideoResolution) * 2 +
+
1590  sizeof(kVideoFrameCount) + sizeof(kVideoDepth) +
+
1591  pixel_aspect.ComputeSize() + sinf.ComputeSize() +
+
1592  codec_configuration.ComputeSize() + kCompressorNameSize + 6 + 4 + 16 +
+
1593  2; // 6 + 4 bytes reserved, 16 + 2 bytes predefined.
+
1594 }
+
1595 
+
1596 FourCC VideoSampleEntry::GetCodecConfigurationBoxType(FourCC format) const {
+
1597  switch (format) {
+
1598  case FOURCC_avc1:
+
1599  case FOURCC_avc3:
+
1600  return FOURCC_avcC;
+
1601  case FOURCC_hev1:
+
1602  case FOURCC_hvc1:
+
1603  return FOURCC_hvcC;
+
1604  case FOURCC_vp08:
+
1605  case FOURCC_vp09:
+
1606  case FOURCC_vp10:
+
1607  return FOURCC_vpcC;
+
1608  default:
+
1609  LOG(ERROR) << FourCCToString(format) << " is not supported.";
+
1610  return FOURCC_NULL;
+
1611  }
+
1612 }
+
1613 
+
1614 ElementaryStreamDescriptor::ElementaryStreamDescriptor() {}
+
1615 ElementaryStreamDescriptor::~ElementaryStreamDescriptor() {}
+
1616 FourCC ElementaryStreamDescriptor::BoxType() const { return FOURCC_esds; }
+
1617 
+
1618 bool ElementaryStreamDescriptor::ReadWriteInternal(BoxBuffer* buffer) {
+
1619  RCHECK(ReadWriteHeaderInternal(buffer));
+
1620  if (buffer->Reading()) {
+
1621  std::vector<uint8_t> data;
+
1622  RCHECK(buffer->ReadWriteVector(&data, buffer->BytesLeft()));
+
1623  RCHECK(es_descriptor.Parse(data));
+
1624  if (es_descriptor.IsAAC()) {
+
1625  RCHECK(aac_audio_specific_config.Parse(
+
1626  es_descriptor.decoder_specific_info()));
+
1627  }
+
1628  } else {
+
1629  DCHECK(buffer->writer());
+
1630  es_descriptor.Write(buffer->writer());
+
1631  }
+
1632  return true;
+
1633 }
+
1634 
+
1635 size_t ElementaryStreamDescriptor::ComputeSizeInternal() {
+
1636  // This box is optional. Skip it if not initialized.
+
1637  if (es_descriptor.object_type() == kForbidden)
+
1638  return 0;
+
1639  return HeaderSize() + es_descriptor.ComputeSize();
+
1640 }
+
1641 
+
1642 DTSSpecific::DTSSpecific()
+
1643  : sampling_frequency(0),
+
1644  max_bitrate(0),
+
1645  avg_bitrate(0),
+
1646  pcm_sample_depth(0) {}
+
1647 DTSSpecific::~DTSSpecific() {}
+
1648 FourCC DTSSpecific::BoxType() const { return FOURCC_ddts; }
+
1649 
+
1650 bool DTSSpecific::ReadWriteInternal(BoxBuffer* buffer) {
+
1651  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
1652  buffer->ReadWriteUInt32(&sampling_frequency) &&
+
1653  buffer->ReadWriteUInt32(&max_bitrate) &&
+
1654  buffer->ReadWriteUInt32(&avg_bitrate) &&
+
1655  buffer->ReadWriteUInt8(&pcm_sample_depth));
+
1656 
+
1657  if (buffer->Reading()) {
+
1658  RCHECK(buffer->ReadWriteVector(&extra_data, buffer->BytesLeft()));
+
1659  } else {
+
1660  if (extra_data.empty()) {
+
1661  extra_data.assign(kDdtsExtraData,
+
1662  kDdtsExtraData + sizeof(kDdtsExtraData));
+
1663  }
+
1664  RCHECK(buffer->ReadWriteVector(&extra_data, extra_data.size()));
+
1665  }
+
1666  return true;
+
1667 }
+
1668 
+
1669 size_t DTSSpecific::ComputeSizeInternal() {
+
1670  // This box is optional. Skip it if not initialized.
+
1671  if (sampling_frequency == 0)
+
1672  return 0;
+
1673  return HeaderSize() + sizeof(sampling_frequency) + sizeof(max_bitrate) +
+
1674  sizeof(avg_bitrate) + sizeof(pcm_sample_depth) +
+
1675  sizeof(kDdtsExtraData);
+
1676 }
+
1677 
+
1678 AC3Specific::AC3Specific() {}
+
1679 AC3Specific::~AC3Specific() {}
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; }
+
1681 FourCC AC3Specific::BoxType() const { return FOURCC_dac3; }
+
1682 
+
1683 bool AC3Specific::ReadWriteInternal(BoxBuffer* buffer) {
+
1684  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
1685  buffer->ReadWriteVector(
+
1686  &data, buffer->Reading() ? buffer->BytesLeft() : data.size()));
+
1687  return true;
+
1688 }
+
1689 
+
1690 size_t AC3Specific::ComputeSizeInternal() {
+
1691  // This box is optional. Skip it if not initialized.
+
1692  if (data.empty())
+
1693  return 0;
+
1694  return HeaderSize() + data.size();
+
1695 }
+
1696 
+
1697 EC3Specific::EC3Specific() {}
+
1698 EC3Specific::~EC3Specific() {}
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; }
+
1700 FourCC EC3Specific::BoxType() const { return FOURCC_dec3; }
+
1701 
+
1702 bool EC3Specific::ReadWriteInternal(BoxBuffer* buffer) {
+
1703  RCHECK(ReadWriteHeaderInternal(buffer));
+
1704  size_t size = buffer->Reading() ? buffer->BytesLeft() : data.size();
+
1705  RCHECK(buffer->ReadWriteVector(&data, size));
+
1706  return true;
+
1707 }
+
1708 
+
1709 size_t EC3Specific::ComputeSizeInternal() {
+
1710  // This box is optional. Skip it if not initialized.
+
1711  if (data.empty())
+
1712  return 0;
+
1713  return HeaderSize() + data.size();
+
1714 }
+
1715 
+
1716 OpusSpecific::OpusSpecific() : preskip(0) {}
+
1717 OpusSpecific::~OpusSpecific() {}
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() {}
+
1719 FourCC OpusSpecific::BoxType() const { return FOURCC_dOps; }
+
1720 
+
1721 bool OpusSpecific::ReadWriteInternal(BoxBuffer* buffer) {
+
1722  RCHECK(ReadWriteHeaderInternal(buffer));
+
1723  if (buffer->Reading()) {
+
1724  std::vector<uint8_t> data;
+
1725  const int kMinOpusSpecificBoxDataSize = 11;
+
1726  RCHECK(buffer->BytesLeft() >= kMinOpusSpecificBoxDataSize);
+
1727  RCHECK(buffer->ReadWriteVector(&data, buffer->BytesLeft()));
+
1728  preskip = data[2] + (data[3] << 8);
+
1729 
+
1730  // https://tools.ietf.org/html/draft-ietf-codec-oggopus-06#section-5
+
1731  BufferWriter writer;
+
1732  writer.AppendInt(FOURCC_Opus);
+
1733  writer.AppendInt(FOURCC_Head);
+
1734  // The version must always be 1.
+
1735  const uint8_t kOpusIdentificationHeaderVersion = 1;
+
1736  data[0] = kOpusIdentificationHeaderVersion;
+
1737  writer.AppendVector(data);
+
1738  writer.SwapBuffer(&opus_identification_header);
+
1739  } else {
+
1740  // https://tools.ietf.org/html/draft-ietf-codec-oggopus-06#section-5
+
1741  // The first 8 bytes is "magic signature".
+
1742  const size_t kOpusMagicSignatureSize = 8u;
+
1743  DCHECK_GT(opus_identification_header.size(), kOpusMagicSignatureSize);
+
1744  // https://www.opus-codec.org/docs/opus_in_isobmff.html
+
1745  // The version field shall be set to 0.
+
1746  const uint8_t kOpusSpecificBoxVersion = 0;
+
1747  buffer->writer()->AppendInt(kOpusSpecificBoxVersion);
+
1748  buffer->writer()->AppendArray(
+
1749  &opus_identification_header[kOpusMagicSignatureSize + 1],
+
1750  opus_identification_header.size() - kOpusMagicSignatureSize - 1);
+
1751  }
+
1752  return true;
+
1753 }
+
1754 
+
1755 size_t OpusSpecific::ComputeSizeInternal() {
+
1756  // This box is optional. Skip it if not initialized.
+
1757  if (opus_identification_header.empty())
+
1758  return 0;
+
1759  // https://tools.ietf.org/html/draft-ietf-codec-oggopus-06#section-5
+
1760  // The first 8 bytes is "magic signature".
+
1761  const size_t kOpusMagicSignatureSize = 8u;
+
1762  DCHECK_GT(opus_identification_header.size(), kOpusMagicSignatureSize);
+
1763  return HeaderSize() + opus_identification_header.size() -
+
1764  kOpusMagicSignatureSize;
+
1765 }
+
1766 
+
1767 AudioSampleEntry::AudioSampleEntry()
+
1768  : format(FOURCC_NULL),
+
1769  data_reference_index(1),
+
1770  channelcount(2),
+
1771  samplesize(16),
+
1772  samplerate(0) {}
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 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 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 
-
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 FourCC SubtitleMediaHeader::BoxType() const { return FOURCC_sthd; }
+
1774 AudioSampleEntry::~AudioSampleEntry() {}
+
1775 
+ +
1777  if (format == FOURCC_NULL) {
+
1778  LOG(ERROR) << "AudioSampleEntry should be parsed according to the "
+
1779  << "handler type recovered in its Media ancestor.";
+
1780  }
+
1781  return format;
+
1782 }
+
1783 
+
1784 bool AudioSampleEntry::ReadWriteInternal(BoxBuffer* buffer) {
+
1785  if (buffer->Reading()) {
+
1786  DCHECK(buffer->reader());
+
1787  format = buffer->reader()->type();
+
1788  } else {
+
1789  RCHECK(ReadWriteHeaderInternal(buffer));
+
1790  }
+
1791 
+
1792  // Convert from integer to 16.16 fixed point for writing.
+
1793  samplerate <<= 16;
+
1794  RCHECK(buffer->IgnoreBytes(6) && // reserved.
+
1795  buffer->ReadWriteUInt16(&data_reference_index) &&
+
1796  buffer->IgnoreBytes(8) && // reserved.
+
1797  buffer->ReadWriteUInt16(&channelcount) &&
+
1798  buffer->ReadWriteUInt16(&samplesize) &&
+
1799  buffer->IgnoreBytes(4) && // predefined.
+
1800  buffer->ReadWriteUInt32(&samplerate));
+
1801  // Convert from 16.16 fixed point to integer.
+
1802  samplerate >>= 16;
+
1803 
+
1804  RCHECK(buffer->PrepareChildren());
+
1805  if (format == FOURCC_enca) {
+
1806  if (buffer->Reading()) {
+
1807  // Continue scanning until a supported protection scheme is found, or
+
1808  // until we run out of protection schemes.
+
1809  while (!IsProtectionSchemeSupported(sinf.type.type))
+
1810  RCHECK(buffer->ReadWriteChild(&sinf));
+
1811  } else {
+
1812  DCHECK(IsProtectionSchemeSupported(sinf.type.type));
+
1813  RCHECK(buffer->ReadWriteChild(&sinf));
+
1814  }
+
1815  }
+
1816 
+
1817  RCHECK(buffer->TryReadWriteChild(&esds));
+
1818  RCHECK(buffer->TryReadWriteChild(&ddts));
+
1819  RCHECK(buffer->TryReadWriteChild(&dac3));
+
1820  RCHECK(buffer->TryReadWriteChild(&dec3));
+
1821  RCHECK(buffer->TryReadWriteChild(&dops));
+
1822  return true;
+
1823 }
+
1824 
+
1825 size_t AudioSampleEntry::ComputeSizeInternal() {
+
1826  if (GetActualFormat() == FOURCC_NULL)
+
1827  return 0;
+
1828  return HeaderSize() + sizeof(data_reference_index) + sizeof(channelcount) +
+
1829  sizeof(samplesize) + sizeof(samplerate) + sinf.ComputeSize() +
+
1830  esds.ComputeSize() + ddts.ComputeSize() + dac3.ComputeSize() +
+
1831  dec3.ComputeSize() + dops.ComputeSize() +
+
1832  6 + 8 + // 6 + 8 bytes reserved.
+
1833  4; // 4 bytes predefined.
+
1834 }
+
1835 
+
1836 WebVTTConfigurationBox::WebVTTConfigurationBox() {}
+
1837 WebVTTConfigurationBox::~WebVTTConfigurationBox() {}
+
1838 
+ +
1840  return FOURCC_vttC;
+
1841 }
+
1842 
+
1843 bool WebVTTConfigurationBox::ReadWriteInternal(BoxBuffer* buffer) {
+
1844  RCHECK(ReadWriteHeaderInternal(buffer));
+
1845  return buffer->ReadWriteString(
+
1846  &config,
+
1847  buffer->Reading() ? buffer->BytesLeft() : config.size());
+
1848 }
+
1849 
+
1850 size_t WebVTTConfigurationBox::ComputeSizeInternal() {
+
1851  return HeaderSize() + config.size();
+
1852 }
+
1853 
+
1854 WebVTTSourceLabelBox::WebVTTSourceLabelBox() {}
+
1855 WebVTTSourceLabelBox::~WebVTTSourceLabelBox() {}
+
1856 
+ +
1858  return FOURCC_vlab;
+
1859 }
+
1860 
+
1861 bool WebVTTSourceLabelBox::ReadWriteInternal(BoxBuffer* buffer) {
+
1862  RCHECK(ReadWriteHeaderInternal(buffer));
+
1863  return buffer->ReadWriteString(&source_label, buffer->Reading()
+
1864  ? buffer->BytesLeft()
+
1865  : source_label.size());
+
1866 }
+
1867 
+
1868 size_t WebVTTSourceLabelBox::ComputeSizeInternal() {
+
1869  if (source_label.empty())
+
1870  return 0;
+
1871  return HeaderSize() + source_label.size();
+
1872 }
+
1873 
+
1874 TextSampleEntry::TextSampleEntry() : format(FOURCC_NULL) {}
+
1875 TextSampleEntry::~TextSampleEntry() {}
+
1876 
+ +
1878  if (format == FOURCC_NULL) {
+
1879  LOG(ERROR) << "TextSampleEntry should be parsed according to the "
+
1880  << "handler type recovered in its Media ancestor.";
+
1881  }
+
1882  return format;
+
1883 }
+
1884 
+
1885 bool TextSampleEntry::ReadWriteInternal(BoxBuffer* buffer) {
+
1886  if (buffer->Reading()) {
+
1887  DCHECK(buffer->reader());
+
1888  format = buffer->reader()->type();
+
1889  } else {
+
1890  RCHECK(ReadWriteHeaderInternal(buffer));
+
1891  }
+
1892  RCHECK(buffer->IgnoreBytes(6) && // reserved for SampleEntry.
+
1893  buffer->ReadWriteUInt16(&data_reference_index));
+
1894 
+
1895  if (format == FOURCC_wvtt) {
+
1896  // TODO(rkuroiwa): Handle the optional MPEG4BitRateBox.
+
1897  RCHECK(buffer->PrepareChildren() &&
+
1898  buffer->ReadWriteChild(&config) &&
+
1899  buffer->ReadWriteChild(&label));
+
1900  }
+
1901  return true;
+
1902 }
+
1903 
+
1904 size_t TextSampleEntry::ComputeSizeInternal() {
+
1905  // 6 for the (anonymous) reserved bytes for SampleEntry class.
+
1906  return HeaderSize() + 6 + sizeof(data_reference_index) +
+
1907  config.ComputeSize() + label.ComputeSize();
+
1908 }
+
1909 
+
1910 MediaHeader::MediaHeader()
+
1911  : creation_time(0), modification_time(0), timescale(0), duration(0) {}
+
1912 MediaHeader::~MediaHeader() {}
+
1913 FourCC MediaHeader::BoxType() const { return FOURCC_mdhd; }
+
1914 
+
1915 bool MediaHeader::ReadWriteInternal(BoxBuffer* buffer) {
+
1916  RCHECK(ReadWriteHeaderInternal(buffer));
+
1917 
+
1918  uint8_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
+
1919  RCHECK(buffer->ReadWriteUInt64NBytes(&creation_time, num_bytes) &&
+
1920  buffer->ReadWriteUInt64NBytes(&modification_time, num_bytes) &&
+
1921  buffer->ReadWriteUInt32(&timescale) &&
+
1922  buffer->ReadWriteUInt64NBytes(&duration, num_bytes) &&
+
1923  language.ReadWrite(buffer) &&
+
1924  buffer->IgnoreBytes(2)); // predefined.
+
1925  return true;
+
1926 }
+
1927 
+
1928 size_t MediaHeader::ComputeSizeInternal() {
+
1929  version = IsFitIn32Bits(creation_time, modification_time, duration) ? 0 : 1;
+
1930  return HeaderSize() + sizeof(timescale) +
+
1931  sizeof(uint32_t) * (1 + version) * 3 + language.ComputeSize() +
+
1932  2; // 2 bytes predefined.
+
1933 }
+
1934 
+
1935 VideoMediaHeader::VideoMediaHeader()
+
1936  : graphicsmode(0), opcolor_red(0), opcolor_green(0), opcolor_blue(0) {
+
1937  const uint32_t kVideoMediaHeaderFlags = 1;
+
1938  flags = kVideoMediaHeaderFlags;
+
1939 }
+
1940 VideoMediaHeader::~VideoMediaHeader() {}
+
1941 FourCC VideoMediaHeader::BoxType() const { return FOURCC_vmhd; }
+
1942 bool VideoMediaHeader::ReadWriteInternal(BoxBuffer* buffer) {
+
1943  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
1944  buffer->ReadWriteUInt16(&graphicsmode) &&
+
1945  buffer->ReadWriteUInt16(&opcolor_red) &&
+
1946  buffer->ReadWriteUInt16(&opcolor_green) &&
+
1947  buffer->ReadWriteUInt16(&opcolor_blue));
+
1948  return true;
+
1949 }
+
1950 
+
1951 size_t VideoMediaHeader::ComputeSizeInternal() {
+
1952  return HeaderSize() + sizeof(graphicsmode) + sizeof(opcolor_red) +
+
1953  sizeof(opcolor_green) + sizeof(opcolor_blue);
+
1954 }
+
1955 
+
1956 SoundMediaHeader::SoundMediaHeader() : balance(0) {}
+
1957 SoundMediaHeader::~SoundMediaHeader() {}
+
1958 FourCC SoundMediaHeader::BoxType() const { return FOURCC_smhd; }
+
1959 bool SoundMediaHeader::ReadWriteInternal(BoxBuffer* buffer) {
+
1960  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
1961  buffer->ReadWriteUInt16(&balance) &&
+
1962  buffer->IgnoreBytes(2)); // reserved.
+
1963  return true;
+
1964 }
+
1965 
+
1966 size_t SoundMediaHeader::ComputeSizeInternal() {
+
1967  return HeaderSize() + sizeof(balance) + sizeof(uint16_t);
+
1968 }
+
1969 
+
1970 SubtitleMediaHeader::SubtitleMediaHeader() {}
+
1971 SubtitleMediaHeader::~SubtitleMediaHeader() {}
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 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  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  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 & kSampleDescriptionIndexPresentMask) {
-
2301  RCHECK(buffer->ReadWriteUInt32(&sample_description_index));
-
2302  } else if (buffer->Reading()) {
-
2303  sample_description_index = 0;
-
2304  }
-
2305 
-
2306  if (flags & kDefaultSampleDurationPresentMask) {
-
2307  RCHECK(buffer->ReadWriteUInt32(&default_sample_duration));
-
2308  } else if (buffer->Reading()) {
-
2309  default_sample_duration = 0;
-
2310  }
-
2311 
-
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  uint32_t first_sample_flags(0);
+
1973 FourCC SubtitleMediaHeader::BoxType() const { return FOURCC_sthd; }
+
1974 
+
1975 bool SubtitleMediaHeader::ReadWriteInternal(BoxBuffer* buffer) {
+
1976  return ReadWriteHeaderInternal(buffer);
+
1977 }
+
1978 
+
1979 size_t SubtitleMediaHeader::ComputeSizeInternal() {
+
1980  return HeaderSize();
+
1981 }
+
1982 
+
1983 DataEntryUrl::DataEntryUrl() {
+
1984  const uint32_t kDataEntryUrlFlags = 1;
+
1985  flags = kDataEntryUrlFlags;
+
1986 }
+
1987 DataEntryUrl::~DataEntryUrl() {}
+
1988 FourCC DataEntryUrl::BoxType() const { return FOURCC_url; }
+
1989 bool DataEntryUrl::ReadWriteInternal(BoxBuffer* buffer) {
+
1990  RCHECK(ReadWriteHeaderInternal(buffer));
+
1991  if (buffer->Reading()) {
+
1992  RCHECK(buffer->ReadWriteVector(&location, buffer->BytesLeft()));
+
1993  } else {
+
1994  RCHECK(buffer->ReadWriteVector(&location, location.size()));
+
1995  }
+
1996  return true;
+
1997 }
+
1998 
+
1999 size_t DataEntryUrl::ComputeSizeInternal() {
+
2000  return HeaderSize() + location.size();
+
2001 }
+
2002 
+
2003 DataReference::DataReference() {
+
2004  // Default 1 entry.
+
2005  data_entry.resize(1);
+
2006 }
+
2007 DataReference::~DataReference() {}
+
2008 FourCC DataReference::BoxType() const { return FOURCC_dref; }
+
2009 bool DataReference::ReadWriteInternal(BoxBuffer* buffer) {
+
2010  uint32_t entry_count = static_cast<uint32_t>(data_entry.size());
+
2011  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
2012  buffer->ReadWriteUInt32(&entry_count));
+
2013  data_entry.resize(entry_count);
+
2014  RCHECK(buffer->PrepareChildren());
+
2015  for (uint32_t i = 0; i < entry_count; ++i)
+
2016  RCHECK(buffer->ReadWriteChild(&data_entry[i]));
+
2017  return true;
+
2018 }
+
2019 
+
2020 size_t DataReference::ComputeSizeInternal() {
+
2021  uint32_t count = static_cast<uint32_t>(data_entry.size());
+
2022  size_t box_size = HeaderSize() + sizeof(count);
+
2023  for (uint32_t i = 0; i < count; ++i)
+
2024  box_size += data_entry[i].ComputeSize();
+
2025  return box_size;
+
2026 }
+
2027 
+
2028 DataInformation::DataInformation() {}
+
2029 DataInformation::~DataInformation() {}
+
2030 FourCC DataInformation::BoxType() const { return FOURCC_dinf; }
+
2031 
+
2032 bool DataInformation::ReadWriteInternal(BoxBuffer* buffer) {
+
2033  return ReadWriteHeaderInternal(buffer) &&
+
2034  buffer->PrepareChildren() &&
+
2035  buffer->ReadWriteChild(&dref);
+
2036 }
+
2037 
+
2038 size_t DataInformation::ComputeSizeInternal() {
+
2039  return HeaderSize() + dref.ComputeSize();
+
2040 }
+
2041 
+
2042 MediaInformation::MediaInformation() {}
+
2043 MediaInformation::~MediaInformation() {}
+
2044 FourCC MediaInformation::BoxType() const { return FOURCC_minf; }
+
2045 
+
2046 bool MediaInformation::ReadWriteInternal(BoxBuffer* buffer) {
+
2047  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
2048  buffer->PrepareChildren() &&
+
2049  buffer->ReadWriteChild(&dinf) &&
+
2050  buffer->ReadWriteChild(&sample_table));
+
2051  switch (sample_table.description.type) {
+
2052  case kVideo:
+
2053  RCHECK(buffer->ReadWriteChild(&vmhd));
+
2054  break;
+
2055  case kAudio:
+
2056  RCHECK(buffer->ReadWriteChild(&smhd));
+
2057  break;
+
2058  case kText:
+
2059  RCHECK(buffer->TryReadWriteChild(&sthd));
+
2060  break;
+
2061  default:
+
2062  NOTIMPLEMENTED();
+
2063  }
+
2064  // Hint is not supported for now.
+
2065  return true;
+
2066 }
+
2067 
+
2068 size_t MediaInformation::ComputeSizeInternal() {
+
2069  size_t box_size =
+
2070  HeaderSize() + dinf.ComputeSize() + sample_table.ComputeSize();
+
2071  switch (sample_table.description.type) {
+
2072  case kVideo:
+
2073  box_size += vmhd.ComputeSize();
+
2074  break;
+
2075  case kAudio:
+
2076  box_size += smhd.ComputeSize();
+
2077  break;
+
2078  case kText:
+
2079  box_size += sthd.ComputeSize();
+
2080  break;
+
2081  default:
+
2082  NOTIMPLEMENTED();
+
2083  }
+
2084  return box_size;
+
2085 }
+
2086 
+
2087 Media::Media() {}
+
2088 Media::~Media() {}
+
2089 FourCC Media::BoxType() const { return FOURCC_mdia; }
+
2090 
+
2091 bool Media::ReadWriteInternal(BoxBuffer* buffer) {
+
2092  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
2093  buffer->PrepareChildren() &&
+
2094  buffer->ReadWriteChild(&header));
+
2095  if (buffer->Reading()) {
+
2096  RCHECK(buffer->ReadWriteChild(&handler));
+
2097  // Maddeningly, the HandlerReference box specifies how to parse the
+
2098  // SampleDescription box, making the latter the only box (of those that we
+
2099  // support) which cannot be parsed correctly on its own (or even with
+
2100  // information from its strict ancestor tree). We thus copy the handler type
+
2101  // to the sample description box *before* parsing it to provide this
+
2102  // information while parsing.
+
2103  information.sample_table.description.type =
+
2104  FourCCToTrackType(handler.handler_type);
+
2105  } else {
+
2106  handler.handler_type =
+
2107  TrackTypeToFourCC(information.sample_table.description.type);
+
2108  RCHECK(handler.handler_type != FOURCC_NULL);
+
2109  RCHECK(buffer->ReadWriteChild(&handler));
+
2110  }
+
2111  RCHECK(buffer->ReadWriteChild(&information));
+
2112  return true;
+
2113 }
+
2114 
+
2115 size_t Media::ComputeSizeInternal() {
+
2116  handler.handler_type =
+
2117  TrackTypeToFourCC(information.sample_table.description.type);
+
2118  return HeaderSize() + header.ComputeSize() + handler.ComputeSize() +
+
2119  information.ComputeSize();
+
2120 }
+
2121 
+
2122 Track::Track() {}
+
2123 Track::~Track() {}
+
2124 FourCC Track::BoxType() const { return FOURCC_trak; }
+
2125 
+
2126 bool Track::ReadWriteInternal(BoxBuffer* buffer) {
+
2127  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
2128  buffer->PrepareChildren() &&
+
2129  buffer->ReadWriteChild(&header) &&
+
2130  buffer->ReadWriteChild(&media) &&
+
2131  buffer->TryReadWriteChild(&edit) &&
+
2132  buffer->TryReadWriteChild(&sample_encryption));
+
2133  return true;
+
2134 }
+
2135 
+
2136 size_t Track::ComputeSizeInternal() {
+
2137  return HeaderSize() + header.ComputeSize() + media.ComputeSize() +
+
2138  edit.ComputeSize();
+
2139 }
+
2140 
+
2141 MovieExtendsHeader::MovieExtendsHeader() : fragment_duration(0) {}
+
2142 MovieExtendsHeader::~MovieExtendsHeader() {}
+
2143 FourCC MovieExtendsHeader::BoxType() const { return FOURCC_mehd; }
+
2144 
+
2145 bool MovieExtendsHeader::ReadWriteInternal(BoxBuffer* buffer) {
+
2146  RCHECK(ReadWriteHeaderInternal(buffer));
+
2147  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
+
2148  RCHECK(buffer->ReadWriteUInt64NBytes(&fragment_duration, num_bytes));
+
2149  return true;
+
2150 }
+
2151 
+
2152 size_t MovieExtendsHeader::ComputeSizeInternal() {
+
2153  // This box is optional. Skip it if it is not used.
+
2154  if (fragment_duration == 0)
+
2155  return 0;
+
2156  version = IsFitIn32Bits(fragment_duration) ? 0 : 1;
+
2157  return HeaderSize() + sizeof(uint32_t) * (1 + version);
+
2158 }
+
2159 
+
2160 TrackExtends::TrackExtends()
+
2161  : track_id(0),
+
2162  default_sample_description_index(0),
+
2163  default_sample_duration(0),
+
2164  default_sample_size(0),
+
2165  default_sample_flags(0) {}
+
2166 TrackExtends::~TrackExtends() {}
+
2167 FourCC TrackExtends::BoxType() const { return FOURCC_trex; }
+
2168 
+
2169 bool TrackExtends::ReadWriteInternal(BoxBuffer* buffer) {
+
2170  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
2171  buffer->ReadWriteUInt32(&track_id) &&
+
2172  buffer->ReadWriteUInt32(&default_sample_description_index) &&
+
2173  buffer->ReadWriteUInt32(&default_sample_duration) &&
+
2174  buffer->ReadWriteUInt32(&default_sample_size) &&
+
2175  buffer->ReadWriteUInt32(&default_sample_flags));
+
2176  return true;
+
2177 }
+
2178 
+
2179 size_t TrackExtends::ComputeSizeInternal() {
+
2180  return HeaderSize() + sizeof(track_id) +
+
2181  sizeof(default_sample_description_index) +
+
2182  sizeof(default_sample_duration) + sizeof(default_sample_size) +
+
2183  sizeof(default_sample_flags);
+
2184 }
+
2185 
+
2186 MovieExtends::MovieExtends() {}
+
2187 MovieExtends::~MovieExtends() {}
+
2188 FourCC MovieExtends::BoxType() const { return FOURCC_mvex; }
+
2189 
+
2190 bool MovieExtends::ReadWriteInternal(BoxBuffer* buffer) {
+
2191  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
2192  buffer->PrepareChildren() &&
+
2193  buffer->TryReadWriteChild(&header));
+
2194  if (buffer->Reading()) {
+
2195  DCHECK(buffer->reader());
+
2196  RCHECK(buffer->reader()->ReadChildren(&tracks));
+
2197  } else {
+
2198  for (uint32_t i = 0; i < tracks.size(); ++i)
+
2199  RCHECK(buffer->ReadWriteChild(&tracks[i]));
+
2200  }
+
2201  return true;
+
2202 }
+
2203 
+
2204 size_t MovieExtends::ComputeSizeInternal() {
+
2205  // This box is optional. Skip it if it does not contain any track.
+
2206  if (tracks.size() == 0)
+
2207  return 0;
+
2208  size_t box_size = HeaderSize() + header.ComputeSize();
+
2209  for (uint32_t i = 0; i < tracks.size(); ++i)
+
2210  box_size += tracks[i].ComputeSize();
+
2211  return box_size;
+
2212 }
+
2213 
+
2214 Movie::Movie() {}
+
2215 Movie::~Movie() {}
+
2216 FourCC Movie::BoxType() const { return FOURCC_moov; }
+
2217 
+
2218 bool Movie::ReadWriteInternal(BoxBuffer* buffer) {
+
2219  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
2220  buffer->PrepareChildren() &&
+
2221  buffer->ReadWriteChild(&header) &&
+
2222  buffer->TryReadWriteChild(&metadata) &&
+
2223  buffer->TryReadWriteChild(&extends));
+
2224  if (buffer->Reading()) {
+
2225  BoxReader* reader = buffer->reader();
+
2226  DCHECK(reader);
+
2227  RCHECK(reader->ReadChildren(&tracks) &&
+
2228  reader->TryReadChildren(&pssh));
+
2229  } else {
+
2230  for (uint32_t i = 0; i < tracks.size(); ++i)
+
2231  RCHECK(buffer->ReadWriteChild(&tracks[i]));
+
2232  for (uint32_t i = 0; i < pssh.size(); ++i)
+
2233  RCHECK(buffer->ReadWriteChild(&pssh[i]));
+
2234  }
+
2235  return true;
+
2236 }
+
2237 
+
2238 size_t Movie::ComputeSizeInternal() {
+
2239  size_t box_size = HeaderSize() + header.ComputeSize() +
+
2240  metadata.ComputeSize() + extends.ComputeSize();
+
2241  for (uint32_t i = 0; i < tracks.size(); ++i)
+
2242  box_size += tracks[i].ComputeSize();
+
2243  for (uint32_t i = 0; i < pssh.size(); ++i)
+
2244  box_size += pssh[i].ComputeSize();
+
2245  return box_size;
+
2246 }
+
2247 
+
2248 TrackFragmentDecodeTime::TrackFragmentDecodeTime() : decode_time(0) {}
+
2249 TrackFragmentDecodeTime::~TrackFragmentDecodeTime() {}
+
2250 FourCC TrackFragmentDecodeTime::BoxType() const { return FOURCC_tfdt; }
+
2251 
+
2252 bool TrackFragmentDecodeTime::ReadWriteInternal(BoxBuffer* buffer) {
+
2253  RCHECK(ReadWriteHeaderInternal(buffer));
+
2254  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
+
2255  RCHECK(buffer->ReadWriteUInt64NBytes(&decode_time, num_bytes));
+
2256  return true;
+
2257 }
+
2258 
+
2259 size_t TrackFragmentDecodeTime::ComputeSizeInternal() {
+
2260  version = IsFitIn32Bits(decode_time) ? 0 : 1;
+
2261  return HeaderSize() + sizeof(uint32_t) * (1 + version);
+
2262 }
+
2263 
+
2264 MovieFragmentHeader::MovieFragmentHeader() : sequence_number(0) {}
+
2265 MovieFragmentHeader::~MovieFragmentHeader() {}
+
2266 FourCC MovieFragmentHeader::BoxType() const { return FOURCC_mfhd; }
+
2267 
+
2268 bool MovieFragmentHeader::ReadWriteInternal(BoxBuffer* buffer) {
+
2269  return ReadWriteHeaderInternal(buffer) &&
+
2270  buffer->ReadWriteUInt32(&sequence_number);
+
2271 }
+
2272 
+
2273 size_t MovieFragmentHeader::ComputeSizeInternal() {
+
2274  return HeaderSize() + sizeof(sequence_number);
+
2275 }
+
2276 
+
2277 TrackFragmentHeader::TrackFragmentHeader()
+
2278  : track_id(0),
+
2279  sample_description_index(0),
+
2280  default_sample_duration(0),
+
2281  default_sample_size(0),
+
2282  default_sample_flags(0) {}
+
2283 
+
2284 TrackFragmentHeader::~TrackFragmentHeader() {}
+
2285 FourCC TrackFragmentHeader::BoxType() const { return FOURCC_tfhd; }
+
2286 
+
2287 bool TrackFragmentHeader::ReadWriteInternal(BoxBuffer* buffer) {
+
2288  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
2289  buffer->ReadWriteUInt32(&track_id));
+
2290 
+
2291  if (flags & kBaseDataOffsetPresentMask) {
+
2292  // MSE requires 'default-base-is-moof' to be set and
+
2293  // 'base-data-offset-present' not to be set. We omit these checks as some
+
2294  // valid files in the wild don't follow these rules, though they use moof as
+
2295  // base.
+
2296  uint64_t base_data_offset;
+
2297  RCHECK(buffer->ReadWriteUInt64(&base_data_offset));
+
2298  DLOG(WARNING) << "base-data-offset-present is not expected. Assumes "
+
2299  "default-base-is-moof.";
+
2300  }
+
2301 
+
2302  if (flags & kSampleDescriptionIndexPresentMask) {
+
2303  RCHECK(buffer->ReadWriteUInt32(&sample_description_index));
+
2304  } else if (buffer->Reading()) {
+
2305  sample_description_index = 0;
+
2306  }
+
2307 
+
2308  if (flags & kDefaultSampleDurationPresentMask) {
+
2309  RCHECK(buffer->ReadWriteUInt32(&default_sample_duration));
+
2310  } else if (buffer->Reading()) {
+
2311  default_sample_duration = 0;
+
2312  }
+
2313 
+
2314  if (flags & kDefaultSampleSizePresentMask) {
+
2315  RCHECK(buffer->ReadWriteUInt32(&default_sample_size));
+
2316  } else if (buffer->Reading()) {
+
2317  default_sample_size = 0;
+
2318  }
+
2319 
+
2320  if (flags & kDefaultSampleFlagsPresentMask)
+
2321  RCHECK(buffer->ReadWriteUInt32(&default_sample_flags));
+
2322  return true;
+
2323 }
+
2324 
+
2325 size_t TrackFragmentHeader::ComputeSizeInternal() {
+
2326  size_t box_size = HeaderSize() + sizeof(track_id);
+
2327  if (flags & kSampleDescriptionIndexPresentMask)
+
2328  box_size += sizeof(sample_description_index);
+
2329  if (flags & kDefaultSampleDurationPresentMask)
+
2330  box_size += sizeof(default_sample_duration);
+
2331  if (flags & kDefaultSampleSizePresentMask)
+
2332  box_size += sizeof(default_sample_size);
+
2333  if (flags & kDefaultSampleFlagsPresentMask)
+
2334  box_size += sizeof(default_sample_flags);
+
2335  return box_size;
+
2336 }
+
2337 
+
2338 TrackFragmentRun::TrackFragmentRun() : sample_count(0), data_offset(0) {}
+
2339 TrackFragmentRun::~TrackFragmentRun() {}
+
2340 FourCC TrackFragmentRun::BoxType() const { return FOURCC_trun; }
+
2341 
+
2342 bool TrackFragmentRun::ReadWriteInternal(BoxBuffer* buffer) {
+
2343  if (!buffer->Reading()) {
+
2344  // Determine whether version 0 or version 1 should be used.
+
2345  // Use version 0 if possible, use version 1 if there is a negative
+
2346  // sample_offset value.
+
2347  version = 0;
+
2348  if (flags & kSampleCompTimeOffsetsPresentMask) {
+
2349  for (uint32_t i = 0; i < sample_count; ++i) {
+
2350  if (sample_composition_time_offsets[i] < 0) {
+
2351  version = 1;
+
2352  break;
+
2353  }
+
2354  }
+
2355  }
+
2356  }
+
2357 
+
2358  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
2359  buffer->ReadWriteUInt32(&sample_count));
+
2360 
+
2361  bool data_offset_present = (flags & kDataOffsetPresentMask) != 0;
+
2362  bool first_sample_flags_present = (flags & kFirstSampleFlagsPresentMask) != 0;
+
2363  bool sample_duration_present = (flags & kSampleDurationPresentMask) != 0;
+
2364  bool sample_size_present = (flags & kSampleSizePresentMask) != 0;
+
2365  bool sample_flags_present = (flags & kSampleFlagsPresentMask) != 0;
+
2366  bool sample_composition_time_offsets_present =
+
2367  (flags & kSampleCompTimeOffsetsPresentMask) != 0;
+
2368 
+
2369  if (data_offset_present) {
+
2370  RCHECK(buffer->ReadWriteUInt32(&data_offset));
+
2371  } else {
+
2372  // NOTE: If the data-offset is not present, then the data for this run
+
2373  // starts immediately after the data of the previous run, or at the
+
2374  // base-data-offset defined by the track fragment header if this is the
+
2375  // first run in a track fragment. If the data-offset is present, it is
+
2376  // relative to the base-data-offset established in the track fragment
+
2377  // header.
+
2378  NOTIMPLEMENTED();
+
2379  }
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  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; }
+
2381  uint32_t first_sample_flags(0);
+
2382 
+
2383  if (buffer->Reading()) {
+
2384  if (first_sample_flags_present)
+
2385  RCHECK(buffer->ReadWriteUInt32(&first_sample_flags));
+
2386 
+
2387  if (sample_duration_present)
+
2388  sample_durations.resize(sample_count);
+
2389  if (sample_size_present)
+
2390  sample_sizes.resize(sample_count);
+
2391  if (sample_flags_present)
+
2392  sample_flags.resize(sample_count);
+
2393  if (sample_composition_time_offsets_present)
+
2394  sample_composition_time_offsets.resize(sample_count);
+
2395  } else {
+
2396  if (first_sample_flags_present) {
+
2397  first_sample_flags = sample_flags[0];
+
2398  DCHECK(sample_flags.size() == 1);
+
2399  RCHECK(buffer->ReadWriteUInt32(&first_sample_flags));
+
2400  }
+
2401 
+
2402  if (sample_duration_present)
+
2403  DCHECK(sample_durations.size() == sample_count);
+
2404  if (sample_size_present)
+
2405  DCHECK(sample_sizes.size() == sample_count);
+
2406  if (sample_flags_present)
+
2407  DCHECK(sample_flags.size() == sample_count);
+
2408  if (sample_composition_time_offsets_present)
+
2409  DCHECK(sample_composition_time_offsets.size() == sample_count);
+
2410  }
+
2411 
+
2412  for (uint32_t i = 0; i < sample_count; ++i) {
+
2413  if (sample_duration_present)
+
2414  RCHECK(buffer->ReadWriteUInt32(&sample_durations[i]));
+
2415  if (sample_size_present)
+
2416  RCHECK(buffer->ReadWriteUInt32(&sample_sizes[i]));
+
2417  if (sample_flags_present)
+
2418  RCHECK(buffer->ReadWriteUInt32(&sample_flags[i]));
+
2419 
+
2420  if (sample_composition_time_offsets_present) {
+
2421  if (version == 0) {
+
2422  uint32_t sample_offset = sample_composition_time_offsets[i];
+
2423  RCHECK(buffer->ReadWriteUInt32(&sample_offset));
+
2424  sample_composition_time_offsets[i] = sample_offset;
+
2425  } else {
+
2426  int32_t sample_offset = sample_composition_time_offsets[i];
+
2427  RCHECK(buffer->ReadWriteInt32(&sample_offset));
+
2428  sample_composition_time_offsets[i] = sample_offset;
+
2429  }
+
2430  }
+
2431  }
+
2432 
+
2433  if (buffer->Reading()) {
+
2434  if (first_sample_flags_present) {
+
2435  if (sample_flags.size() == 0) {
+
2436  sample_flags.push_back(first_sample_flags);
+
2437  } else {
+
2438  sample_flags[0] = first_sample_flags;
+
2439  }
+
2440  }
+
2441  }
+
2442  return true;
+
2443 }
+
2444 
+
2445 size_t TrackFragmentRun::ComputeSizeInternal() {
+
2446  size_t box_size = HeaderSize() + sizeof(sample_count);
+
2447  if (flags & kDataOffsetPresentMask)
+
2448  box_size += sizeof(data_offset);
+
2449  if (flags & kFirstSampleFlagsPresentMask)
+
2450  box_size += sizeof(uint32_t);
+
2451  uint32_t fields = (flags & kSampleDurationPresentMask ? 1 : 0) +
+
2452  (flags & kSampleSizePresentMask ? 1 : 0) +
+
2453  (flags & kSampleFlagsPresentMask ? 1 : 0) +
+
2454  (flags & kSampleCompTimeOffsetsPresentMask ? 1 : 0);
+
2455  box_size += fields * sizeof(uint32_t) * sample_count;
+
2456  return box_size;
+
2457 }
+
2458 
+
2459 TrackFragment::TrackFragment() : decode_time_absent(false) {}
+
2460 TrackFragment::~TrackFragment() {}
+
2461 FourCC TrackFragment::BoxType() const { return FOURCC_traf; }
+
2462 
+
2463 bool TrackFragment::ReadWriteInternal(BoxBuffer* buffer) {
+
2464  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
2465  buffer->PrepareChildren() &&
+
2466  buffer->ReadWriteChild(&header));
+
2467  if (buffer->Reading()) {
+
2468  DCHECK(buffer->reader());
+
2469  decode_time_absent = !buffer->reader()->ChildExist(&decode_time);
+
2470  if (!decode_time_absent)
+
2471  RCHECK(buffer->ReadWriteChild(&decode_time));
+
2472  RCHECK(buffer->reader()->TryReadChildren(&runs) &&
+
2473  buffer->reader()->TryReadChildren(&sample_group_descriptions) &&
+
2474  buffer->reader()->TryReadChildren(&sample_to_groups));
+
2475  } else {
+
2476  if (!decode_time_absent)
+
2477  RCHECK(buffer->ReadWriteChild(&decode_time));
+
2478  for (uint32_t i = 0; i < runs.size(); ++i)
+
2479  RCHECK(buffer->ReadWriteChild(&runs[i]));
+
2480  for (uint32_t i = 0; i < sample_to_groups.size(); ++i)
+
2481  RCHECK(buffer->ReadWriteChild(&sample_to_groups[i]));
+
2482  for (uint32_t i = 0; i < sample_group_descriptions.size(); ++i)
+
2483  RCHECK(buffer->ReadWriteChild(&sample_group_descriptions[i]));
+
2484  }
+
2485  return buffer->TryReadWriteChild(&auxiliary_size) &&
+
2486  buffer->TryReadWriteChild(&auxiliary_offset) &&
+
2487  buffer->TryReadWriteChild(&sample_encryption);
+
2488 }
+
2489 
+
2490 size_t TrackFragment::ComputeSizeInternal() {
+
2491  size_t box_size = HeaderSize() + header.ComputeSize() +
+
2492  decode_time.ComputeSize() + auxiliary_size.ComputeSize() +
+
2493  auxiliary_offset.ComputeSize() +
+
2494  sample_encryption.ComputeSize();
+
2495  for (uint32_t i = 0; i < runs.size(); ++i)
+
2496  box_size += runs[i].ComputeSize();
+
2497  for (uint32_t i = 0; i < sample_group_descriptions.size(); ++i)
+
2498  box_size += sample_group_descriptions[i].ComputeSize();
+
2499  for (uint32_t i = 0; i < sample_to_groups.size(); ++i)
+
2500  box_size += sample_to_groups[i].ComputeSize();
+
2501  return box_size;
+
2502 }
+
2503 
+
2504 MovieFragment::MovieFragment() {}
+
2505 MovieFragment::~MovieFragment() {}
+
2506 FourCC MovieFragment::BoxType() const { return FOURCC_moof; }
+
2507 
+
2508 bool MovieFragment::ReadWriteInternal(BoxBuffer* buffer) {
+
2509  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
2510  buffer->PrepareChildren() &&
+
2511  buffer->ReadWriteChild(&header));
+
2512  if (buffer->Reading()) {
+
2513  BoxReader* reader = buffer->reader();
+
2514  DCHECK(reader);
+
2515  RCHECK(reader->ReadChildren(&tracks) &&
+
2516  reader->TryReadChildren(&pssh));
+
2517  } else {
+
2518  for (uint32_t i = 0; i < tracks.size(); ++i)
+
2519  RCHECK(buffer->ReadWriteChild(&tracks[i]));
+
2520  for (uint32_t i = 0; i < pssh.size(); ++i)
+
2521  RCHECK(buffer->ReadWriteChild(&pssh[i]));
+
2522  }
+
2523  return true;
+
2524 }
+
2525 
+
2526 size_t MovieFragment::ComputeSizeInternal() {
+
2527  size_t box_size = HeaderSize() + header.ComputeSize();
+
2528  for (uint32_t i = 0; i < tracks.size(); ++i)
+
2529  box_size += tracks[i].ComputeSize();
+
2530  for (uint32_t i = 0; i < pssh.size(); ++i)
+
2531  box_size += pssh[i].ComputeSize();
+
2532  return box_size;
+
2533 }
+
2534 
+
2535 SegmentIndex::SegmentIndex()
+
2536  : reference_id(0),
+
2537  timescale(0),
+
2538  earliest_presentation_time(0),
+
2539  first_offset(0) {}
+
2540 SegmentIndex::~SegmentIndex() {}
+
2541 FourCC SegmentIndex::BoxType() const { return FOURCC_sidx; }
+
2542 
+
2543 bool SegmentIndex::ReadWriteInternal(BoxBuffer* buffer) {
+
2544  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
2545  buffer->ReadWriteUInt32(&reference_id) &&
+
2546  buffer->ReadWriteUInt32(&timescale));
+
2547 
+
2548  size_t num_bytes = (version == 1) ? sizeof(uint64_t) : sizeof(uint32_t);
+
2549  RCHECK(
+
2550  buffer->ReadWriteUInt64NBytes(&earliest_presentation_time, num_bytes) &&
+
2551  buffer->ReadWriteUInt64NBytes(&first_offset, num_bytes));
+
2552 
+
2553  uint16_t reference_count = static_cast<uint16_t>(references.size());
+
2554  RCHECK(buffer->IgnoreBytes(2) && // reserved.
+
2555  buffer->ReadWriteUInt16(&reference_count));
+
2556  references.resize(reference_count);
+
2557 
+
2558  uint32_t reference_type_size;
+
2559  uint32_t sap;
+
2560  for (uint32_t i = 0; i < reference_count; ++i) {
+
2561  if (!buffer->Reading()) {
+
2562  reference_type_size = references[i].referenced_size;
+
2563  if (references[i].reference_type)
+
2564  reference_type_size |= (1 << 31);
+
2565  sap = (references[i].sap_type << 28) | references[i].sap_delta_time;
+
2566  if (references[i].starts_with_sap)
+
2567  sap |= (1 << 31);
+
2568  }
+
2569  RCHECK(buffer->ReadWriteUInt32(&reference_type_size) &&
+
2570  buffer->ReadWriteUInt32(&references[i].subsegment_duration) &&
+
2571  buffer->ReadWriteUInt32(&sap));
+
2572  if (buffer->Reading()) {
+
2573  references[i].reference_type = (reference_type_size >> 31) ? true : false;
+
2574  references[i].referenced_size = reference_type_size & ~(1 << 31);
+
2575  references[i].starts_with_sap = (sap >> 31) ? true : false;
+
2576  references[i].sap_type =
+
2577  static_cast<SegmentReference::SAPType>((sap >> 28) & 0x07);
+
2578  references[i].sap_delta_time = sap & ~(0xF << 28);
+
2579  }
+
2580  }
+
2581  return true;
+
2582 }
+
2583 
+
2584 size_t SegmentIndex::ComputeSizeInternal() {
+
2585  version = IsFitIn32Bits(earliest_presentation_time, first_offset) ? 0 : 1;
+
2586  return HeaderSize() + sizeof(reference_id) + sizeof(timescale) +
+
2587  sizeof(uint32_t) * (1 + version) * 2 + 2 * sizeof(uint16_t) +
+
2588  3 * sizeof(uint32_t) * references.size();
+
2589 }
+
2590 
+
2591 MediaData::MediaData() : data_size(0) {}
+
2592 MediaData::~MediaData() {}
+
2593 FourCC MediaData::BoxType() const { return FOURCC_mdat; }
+
2594 
+
2595 bool MediaData::ReadWriteInternal(BoxBuffer* buffer) {
+
2596  NOTIMPLEMENTED() << "Actual data is parsed and written separately.";
+
2597  return false;
+
2598 }
+
2599 
+
2600 size_t MediaData::ComputeSizeInternal() {
+
2601  return HeaderSize() + data_size;
+
2602 }
+
2603 
+
2604 CueSourceIDBox::CueSourceIDBox() : source_id(kCueSourceIdNotSet) {}
+
2605 CueSourceIDBox::~CueSourceIDBox() {}
2606 
-
2607 bool CueSourceIDBox::ReadWriteInternal(BoxBuffer* buffer) {
-
2608  RCHECK(ReadWriteHeaderInternal(buffer) && buffer->ReadWriteInt32(&source_id));
-
2609  return true;
-
2610 }
-
2611 
-
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 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 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 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 bool CueSettingsBox::ReadWriteInternal(BoxBuffer* buffer) {
-
2665  RCHECK(ReadWriteHeaderInternal(buffer));
-
2666  return buffer->ReadWriteString(
-
2667  &settings, buffer->Reading() ? buffer->BytesLeft() : settings.size());
-
2668 }
-
2669 
-
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 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->TryReadWriteChild(&cue_source_id) &&
-
2737  buffer->TryReadWriteChild(&cue_id) &&
-
2738  buffer->TryReadWriteChild(&cue_time) &&
-
2739  buffer->TryReadWriteChild(&cue_settings) &&
-
2740  buffer->ReadWriteChild(&cue_payload));
-
2741  return true;
-
2742 }
-
2743 
-
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
+
2607 FourCC CueSourceIDBox::BoxType() const { return FOURCC_vsid; }
+
2608 
+
2609 bool CueSourceIDBox::ReadWriteInternal(BoxBuffer* buffer) {
+
2610  RCHECK(ReadWriteHeaderInternal(buffer) && buffer->ReadWriteInt32(&source_id));
+
2611  return true;
+
2612 }
+
2613 
+
2614 size_t CueSourceIDBox::ComputeSizeInternal() {
+
2615  if (source_id == kCueSourceIdNotSet)
+
2616  return 0;
+
2617  return HeaderSize() + sizeof(source_id);
+
2618 }
+
2619 
+
2620 CueTimeBox::CueTimeBox() {}
+
2621 CueTimeBox::~CueTimeBox() {}
+
2622 
+
2623 FourCC CueTimeBox::BoxType() const {
+
2624  return FOURCC_ctim;
+
2625 }
+
2626 
+
2627 bool CueTimeBox::ReadWriteInternal(BoxBuffer* buffer) {
+
2628  RCHECK(ReadWriteHeaderInternal(buffer));
+
2629  return buffer->ReadWriteString(
+
2630  &cue_current_time,
+
2631  buffer->Reading() ? buffer->BytesLeft() : cue_current_time.size());
+
2632 }
+
2633 
+
2634 size_t CueTimeBox::ComputeSizeInternal() {
+
2635  if (cue_current_time.empty())
+
2636  return 0;
+
2637  return HeaderSize() + cue_current_time.size();
+
2638 }
+
2639 
+
2640 CueIDBox::CueIDBox() {}
+
2641 CueIDBox::~CueIDBox() {}
+
2642 
+
2643 FourCC CueIDBox::BoxType() const {
+
2644  return FOURCC_iden;
+
2645 }
+
2646 
+
2647 bool CueIDBox::ReadWriteInternal(BoxBuffer* buffer) {
+
2648  RCHECK(ReadWriteHeaderInternal(buffer));
+
2649  return buffer->ReadWriteString(
+
2650  &cue_id, buffer->Reading() ? buffer->BytesLeft() : cue_id.size());
+
2651 }
+
2652 
+
2653 size_t CueIDBox::ComputeSizeInternal() {
+
2654  if (cue_id.empty())
+
2655  return 0;
+
2656  return HeaderSize() + cue_id.size();
+
2657 }
+
2658 
+
2659 CueSettingsBox::CueSettingsBox() {}
+
2660 CueSettingsBox::~CueSettingsBox() {}
+
2661 
+
2662 FourCC CueSettingsBox::BoxType() const {
+
2663  return FOURCC_sttg;
+
2664 }
+
2665 
+
2666 bool CueSettingsBox::ReadWriteInternal(BoxBuffer* buffer) {
+
2667  RCHECK(ReadWriteHeaderInternal(buffer));
+
2668  return buffer->ReadWriteString(
+
2669  &settings, buffer->Reading() ? buffer->BytesLeft() : settings.size());
+
2670 }
+
2671 
+
2672 size_t CueSettingsBox::ComputeSizeInternal() {
+
2673  if (settings.empty())
+
2674  return 0;
+
2675  return HeaderSize() + settings.size();
+
2676 }
+
2677 
+
2678 CuePayloadBox::CuePayloadBox() {}
+
2679 CuePayloadBox::~CuePayloadBox() {}
+
2680 
+
2681 FourCC CuePayloadBox::BoxType() const {
+
2682  return FOURCC_payl;
+
2683 }
+
2684 
+
2685 bool CuePayloadBox::ReadWriteInternal(BoxBuffer* buffer) {
+
2686  RCHECK(ReadWriteHeaderInternal(buffer));
+
2687  return buffer->ReadWriteString(
+
2688  &cue_text, buffer->Reading() ? buffer->BytesLeft() : cue_text.size());
+
2689 }
+
2690 
+
2691 size_t CuePayloadBox::ComputeSizeInternal() {
+
2692  return HeaderSize() + cue_text.size();
+
2693 }
+
2694 
+
2695 VTTEmptyCueBox::VTTEmptyCueBox() {}
+
2696 VTTEmptyCueBox::~VTTEmptyCueBox() {}
+
2697 
+
2698 FourCC VTTEmptyCueBox::BoxType() const {
+
2699  return FOURCC_vtte;
+
2700 }
+
2701 
+
2702 bool VTTEmptyCueBox::ReadWriteInternal(BoxBuffer* buffer) {
+
2703  return ReadWriteHeaderInternal(buffer);
+
2704 }
+
2705 
+
2706 size_t VTTEmptyCueBox::ComputeSizeInternal() {
+
2707  return HeaderSize();
+
2708 }
+
2709 
+
2710 VTTAdditionalTextBox::VTTAdditionalTextBox() {}
+
2711 VTTAdditionalTextBox::~VTTAdditionalTextBox() {}
+
2712 
+ +
2714  return FOURCC_vtta;
+
2715 }
+
2716 
+
2717 bool VTTAdditionalTextBox::ReadWriteInternal(BoxBuffer* buffer) {
+
2718  RCHECK(ReadWriteHeaderInternal(buffer));
+
2719  return buffer->ReadWriteString(
+
2720  &cue_additional_text,
+
2721  buffer->Reading() ? buffer->BytesLeft() : cue_additional_text.size());
+
2722 }
+
2723 
+
2724 size_t VTTAdditionalTextBox::ComputeSizeInternal() {
+
2725  return HeaderSize() + cue_additional_text.size();
+
2726 }
+
2727 
+
2728 VTTCueBox::VTTCueBox() {}
+
2729 VTTCueBox::~VTTCueBox() {}
+
2730 
+
2731 FourCC VTTCueBox::BoxType() const {
+
2732  return FOURCC_vttc;
+
2733 }
+
2734 
+
2735 bool VTTCueBox::ReadWriteInternal(BoxBuffer* buffer) {
+
2736  RCHECK(ReadWriteHeaderInternal(buffer) &&
+
2737  buffer->PrepareChildren() &&
+
2738  buffer->TryReadWriteChild(&cue_source_id) &&
+
2739  buffer->TryReadWriteChild(&cue_id) &&
+
2740  buffer->TryReadWriteChild(&cue_time) &&
+
2741  buffer->TryReadWriteChild(&cue_settings) &&
+
2742  buffer->ReadWriteChild(&cue_payload));
+
2743  return true;
+
2744 }
+
2745 
+
2746 size_t VTTCueBox::ComputeSizeInternal() {
+
2747  return HeaderSize() + cue_source_id.ComputeSize() + cue_id.ComputeSize() +
+
2748  cue_time.ComputeSize() + cue_settings.ComputeSize() +
+
2749  cue_payload.ComputeSize();
+
2750 }
+
2751 
+
2752 } // namespace mp4
+
2753 } // namespace media
+
2754 } // 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
- +
bool ReadWriteHeaderInternal(BoxBuffer *buffer) final
Definition: box.cc:80
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
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
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
@@ -2895,7 +2897,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
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
@@ -2907,42 +2909,42 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
FourCC BoxType() const override
bool ParseFromSampleEncryptionData(uint8_t iv_size, std::vector< SampleEncryptionEntry > *sample_encryption_entries) const
- +
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
- +
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
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
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
bool ChildExist(Box *child) WARN_UNUSED_RESULT
Definition: box_reader.cc:100
@@ -2950,7 +2952,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/df2/webm_2multi__segment__segmenter_8h_source.html b/docs/dd/df2/webm_2multi__segment__segmenter_8h_source.html index 9d3015f47f..7a623146e9 100644 --- a/docs/dd/df2/webm_2multi__segment__segmenter_8h_source.html +++ b/docs/dd/df2/webm_2multi__segment__segmenter_8h_source.html @@ -149,7 +149,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/df5/structshaka_1_1media_1_1mp4_1_1TrackFragmentRun.html b/docs/dd/df5/structshaka_1_1media_1_1mp4_1_1TrackFragmentRun.html index 413b3ccee2..72925d53ad 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 2338 of file box_definitions.cc.

+

Definition at line 2340 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 cac10754db..9e1771c835 100644 --- a/docs/dd/df6/structshaka_1_1media_1_1mp4_1_1Metadata.html +++ b/docs/dd/df6/structshaka_1_1media_1_1mp4_1_1Metadata.html @@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/de/d0f/local__file_8h_source.html b/docs/de/d0f/local__file_8h_source.html index 6dfe981602..532c36f3ab 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 099ad01054..0ef0870313 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 92eda75814..76260cba0a 100644 --- a/docs/de/d13/ts__writer_8cc_source.html +++ b/docs/de/d13/ts__writer_8cc_source.html @@ -344,7 +344,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
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:60
+
Abstract class holds stream information.
Definition: stream_info.h:57
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
@@ -353,14 +353,14 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
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 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:229
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 544f739bd9..430709fca9 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 84dc0e326b..7c5b5116dd 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 99a968b724..ea67cf0d58 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 0fdf22e071..ed178cfe3b 100644 --- a/docs/de/d1e/mp4_2single__segment__segmenter_8cc_source.html +++ b/docs/de/d1e/mp4_2single__segment__segmenter_8cc_source.html @@ -308,7 +308,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 17c356c17e..305e4ffebd 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 ccd25bf3fa..3f9013fceb 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 f51324e5b5..1fffb66a82 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 2165 of file box_definitions.cc.

+

Definition at line 2167 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 b7d18be721..460760e870 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 c8220c5964..b2c8e602e6 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 90af175bf9..6d87ac7148 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 367749b8f9..f18e1a84ed 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 @@ -95,62 +95,101 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
6 
7 #include "packager/media/codecs/h26x_byte_to_unit_stream_converter.h"
8 
-
9 #include <limits>
-
10 
-
11 #include "packager/base/logging.h"
-
12 #include "packager/media/base/buffer_writer.h"
+
9 #include <gflags/gflags.h>
+
10 #include <limits>
+
11 
+
12 #include "packager/base/strings/string_number_conversions.h"
13 
-
14 namespace shaka {
-
15 namespace media {
-
16 
-
17 namespace {
-
18 // Additional space to reserve for output frame. This value ought to be enough
-
19 // to acommodate frames consisting of 100 NAL units with 3-byte start codes.
-
20 const size_t kStreamConversionOverhead = 100;
-
21 }
-
22 
-
23 H26xByteToUnitStreamConverter::H26xByteToUnitStreamConverter(
-
24  Nalu::CodecType type)
-
25  : type_(type) {}
-
26 H26xByteToUnitStreamConverter::~H26xByteToUnitStreamConverter() {}
-
27 
- -
29  const uint8_t* input_frame,
-
30  size_t input_frame_size,
-
31  std::vector<uint8_t>* output_frame) {
-
32  DCHECK(input_frame);
-
33  DCHECK(output_frame);
-
34 
-
35  BufferWriter output_buffer(input_frame_size + kStreamConversionOverhead);
-
36 
-
37  Nalu nalu;
-
38  NaluReader reader(type_, kIsAnnexbByteStream, input_frame, input_frame_size);
-
39  if (!reader.StartsWithStartCode()) {
-
40  LOG(ERROR) << "H.26x byte stream frame did not begin with start code.";
-
41  return false;
-
42  }
+
14 // TODO(kqyang): Move byte to unit stream convertion to muxer and make it a
+
15 // muxer option.
+
16 DEFINE_bool(strip_parameter_set_nalus,
+
17  true,
+
18  "When converting from NAL byte stream (AnnexB stream) to NAL unit "
+
19  "stream, this flag determines whether to strip parameter sets NAL "
+
20  "units, i.e. SPS/PPS for H264 and SPS/PPS/VPS for H265, from the "
+
21  "frames. Note that avc1/hvc1 is generated if this flag is enabled; "
+
22  "otherwise avc3/hev1 is generated.");
+
23 
+
24 #include "packager/base/logging.h"
+
25 #include "packager/media/base/buffer_writer.h"
+
26 
+
27 namespace shaka {
+
28 namespace media {
+
29 
+
30 namespace {
+
31 // Additional space to reserve for output frame. This value ought to be enough
+
32 // to acommodate frames consisting of 100 NAL units with 3-byte start codes.
+
33 const size_t kStreamConversionOverhead = 100;
+
34 }
+
35 
+ +
37  Nalu::CodecType type)
+
38  : type_(type),
+
39  stream_format_(
+
40  FLAGS_strip_parameter_set_nalus
+
41  ? H26xStreamFormat::kNalUnitStreamWithoutParameterSetNalus
+
42  : H26xStreamFormat::kNalUnitStreamWithParameterSetNalus) {}
43 
-
44  while (reader.Advance(&nalu) == NaluReader::kOk) {
-
45  const uint64_t nalu_size = nalu.payload_size() + nalu.header_size();
-
46  DCHECK_LE(nalu_size, std::numeric_limits<uint32_t>::max());
-
47 
-
48  if (ProcessNalu(nalu))
-
49  continue;
+ +
45  Nalu::CodecType type,
+
46  H26xStreamFormat stream_format)
+
47  : type_(type), stream_format_(stream_format) {}
+
48 
+
49 H26xByteToUnitStreamConverter::~H26xByteToUnitStreamConverter() {}
50 
-
51  // Append 4-byte length and NAL unit data to the buffer.
-
52  output_buffer.AppendInt(static_cast<uint32_t>(nalu_size));
-
53  output_buffer.AppendArray(nalu.data(), nalu_size);
-
54  }
-
55 
-
56  output_buffer.SwapBuffer(output_frame);
-
57  return true;
-
58 }
+ +
52  const uint8_t* input_frame,
+
53  size_t input_frame_size,
+
54  std::vector<uint8_t>* output_frame) {
+
55  DCHECK(input_frame);
+
56  DCHECK(output_frame);
+
57 
+
58  BufferWriter output_buffer(input_frame_size + kStreamConversionOverhead);
59 
-
60 } // namespace media
-
61 } // namespace shaka
-
62 
+
60  Nalu nalu;
+
61  NaluReader reader(type_, kIsAnnexbByteStream, input_frame, input_frame_size);
+
62  if (!reader.StartsWithStartCode()) {
+
63  LOG(ERROR) << "H.26x byte stream frame did not begin with start code.";
+
64  return false;
+
65  }
+
66 
+
67  while (reader.Advance(&nalu) == NaluReader::kOk) {
+
68  const uint64_t nalu_size = nalu.payload_size() + nalu.header_size();
+
69  DCHECK_LE(nalu_size, std::numeric_limits<uint32_t>::max());
+
70 
+
71  if (ProcessNalu(nalu))
+
72  continue;
+
73 
+
74  // Append 4-byte length and NAL unit data to the buffer.
+
75  output_buffer.AppendInt(static_cast<uint32_t>(nalu_size));
+
76  output_buffer.AppendArray(nalu.data(), nalu_size);
+
77  }
+
78 
+
79  output_buffer.SwapBuffer(output_frame);
+
80  return true;
+
81 }
+
82 
+
83 void H26xByteToUnitStreamConverter::WarnIfNotMatch(
+
84  int nalu_type,
+
85  const uint8_t* nalu_ptr,
+
86  size_t nalu_size,
+
87  const std::vector<uint8_t>& vector) {
+
88  if (vector.empty())
+
89  return;
+
90  if (vector.size() != nalu_size ||
+
91  memcmp(vector.data(), nalu_ptr, nalu_size) != 0) {
+
92  LOG(WARNING) << "Seeing varying NAL unit of type " << nalu_type
+
93  << ". You may need to set --strip_parameter_set_nalus=false "
+
94  "during packaging to generate a playable stream.";
+
95  VLOG(1) << "Old: " << base::HexEncode(vector.data(), vector.size());
+
96  VLOG(1) << "New: " << base::HexEncode(nalu_ptr, nalu_size);
+
97  }
+
98 }
+
99 
+
100 } // namespace media
+
101 } // namespace shaka
uint64_t payload_size() const
Size of this Nalu minus header_size().
Definition: nalu_reader.h:101
-
bool ConvertByteStreamToNalUnitStream(const uint8_t *input_frame, size_t input_frame_size, std::vector< uint8_t > *output_frame)
+
bool ConvertByteStreamToNalUnitStream(const uint8_t *input_frame, size_t input_frame_size, std::vector< uint8_t > *output_frame)
uint64_t header_size() const
The size of the header, e.g. 1 for H.264.
Definition: nalu_reader.h:99
@@ -158,11 +197,12 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
Result Advance(Nalu *nalu)
Definition: nalu_reader.cc:177
+
const uint8_t * data() const
This is the pointer to the Nalu data, pointing to the header.
Definition: nalu_reader.h:96
diff --git a/docs/de/d3c/macros_8h_source.html b/docs/de/d3c/macros_8h_source.html index aa175170bf..cc57f62b53 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 5f213b4449..d281a0ff04 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 089fbece6f..00e43a35f1 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 5d1c565680..ad1314bf2e 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 b3fbb645c7..def1f64905 100644 --- a/docs/de/d49/classshaka_1_1media_1_1DecryptConfig.html +++ b/docs/de/d49/classshaka_1_1media_1_1DecryptConfig.html @@ -315,7 +315,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 5ad21ef4b4..25cfd2d264 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 557689af72..a86945d67d 100644 --- a/docs/de/d52/classshaka_1_1Representation.html +++ b/docs/de/d52/classshaka_1_1Representation.html @@ -456,7 +456,7 @@ template<DashProfile profile> 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 5215b3520a..9e2527d7b4 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 3e6be8cfb5..dee9798620 100644 --- a/docs/de/d5b/adts__header_8cc_source.html +++ b/docs/de/d5b/adts__header_8cc_source.html @@ -207,7 +207,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d5c/mpd__flags_8h_source.html b/docs/de/d5c/mpd__flags_8h_source.html index 2871c6ee6e..45ef0dffb8 100644 --- a/docs/de/d5c/mpd__flags_8h_source.html +++ b/docs/de/d5c/mpd__flags_8h_source.html @@ -116,7 +116,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 6ab2e5974c..785aee49a2 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 e1ceb61dc9..5018d9b241 100644 --- a/docs/de/d64/classshaka_1_1media_1_1mp2t_1_1TsWriter.html +++ b/docs/de/d64/classshaka_1_1media_1_1mp2t_1_1TsWriter.html @@ -257,7 +257,7 @@ void  diff --git a/docs/de/d6c/structshaka_1_1media_1_1mp4_1_1SampleToGroupEntry-members.html b/docs/de/d6c/structshaka_1_1media_1_1mp4_1_1SampleToGroupEntry-members.html index 78e595bfe8..1a3ddf8ff1 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 b3284bb4dd..eceebfb7d7 100644 --- a/docs/de/d6e/language__utils_8h_source.html +++ b/docs/de/d6e/language__utils_8h_source.html @@ -116,7 +116,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 32e85b565f..eeef355b07 100644 --- a/docs/de/d70/http__key__fetcher_8cc_source.html +++ b/docs/de/d70/http__key__fetcher_8cc_source.html @@ -266,7 +266,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 2e0b126b1e..3fa0547f77 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 0dab02d368..d5261ebc3d 100644 --- a/docs/de/d7b/mp4__media__parser_8h_source.html +++ b/docs/de/d7b/mp4__media__parser_8h_source.html @@ -190,20 +190,20 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
110 
111 #endif // MEDIA_FORMATS_MP4_MP4_MEDIA_PARSER_H_
-
bool Flush() override WARN_UNUSED_RESULT
+
bool Flush() override WARN_UNUSED_RESULT
base::Callback< void(const std::vector< std::shared_ptr< StreamInfo > > &stream_info)> InitCB
Definition: media_parser.h:34
-
bool Parse(const uint8_t *buf, int size) override WARN_UNUSED_RESULT
+
bool Parse(const uint8_t *buf, int size) override WARN_UNUSED_RESULT
base::Callback< bool(uint32_t track_id, const std::shared_ptr< MediaSample > &media_sample)> NewSampleCB
Definition: media_parser.h:43
Class for reading MP4 boxes.
Definition: box_reader.h:25
-
bool LoadMoov(const std::string &file_path)
+
bool LoadMoov(const std::string &file_path)
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:30
-
void Init(const InitCB &init_cb, const NewSampleCB &new_sample_cb, KeySource *decryption_key_source) override
+
void Init(const InitCB &init_cb, const NewSampleCB &new_sample_cb, KeySource *decryption_key_source) override
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 dbad33fbc6..4f9bd60672 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 e9c190896a..bb4c78b6e5 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 d7a37918ed..75254964b1 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 e3d08c2128..eba9e7ae84 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 62387e0e1b..e1cdbe4598 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 c6c6d6a293..d076002b94 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 2c729033b7..f524212299 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 dc952ac88b..2d05e2780a 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 6f5a1c4809..3262b80709 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 cb91185b57..6dd8b095f0 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 e7b5a5a1b4..9d1c106858 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 8a51fcbe0c..63d4a0a332 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 e76644a241..856bfe20f8 100644 --- a/docs/de/dc1/demuxer_8h_source.html +++ b/docs/de/dc1/demuxer_8h_source.html @@ -224,7 +224,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 c771c1e760..d8567322c8 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 b461d92403..7eaf55627f 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 36b177380d..abe68f8dd4 100644 --- a/docs/de/dcb/ts__segmenter_8h_source.html +++ b/docs/de/dcb/ts__segmenter_8h_source.html @@ -173,7 +173,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
105 } // namespace media
106 } // namespace shaka
107 #endif // PACKAGER_MEDIA_FORMATS_MP2T_TS_SEGMENTER_H_
-
Abstract class holds stream information.
Definition: stream_info.h:60
+
Abstract class holds stream information.
Definition: stream_info.h:57
Status Initialize(const StreamInfo &stream_info)
Definition: ts_segmenter.cc:34
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
@@ -189,7 +189,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 e7b26467a7..6604958c6c 100644 --- a/docs/de/dcc/mock__mpd__notifier_8cc_source.html +++ b/docs/de/dcc/mock__mpd__notifier_8cc_source.html @@ -99,7 +99,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 f59c07d041..67aeb2d71a 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 a1774051f2..4a46869fb4 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 6b040fc963..1867bc850b 100644 --- a/docs/de/dd6/muxer__listener__test__helper_8cc_source.html +++ b/docs/de/dd6/muxer__listener__test__helper_8cc_source.html @@ -107,104 +107,105 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
18  const VideoStreamInfoParameters& param) {
19  return std::make_shared<VideoStreamInfo>(
20  param.track_id, param.time_scale, param.duration, param.codec,
-
21  param.codec_string, param.codec_config.data(), param.codec_config.size(),
-
22  param.width, param.height, param.pixel_width, param.pixel_height,
-
23  0, // trick_play_rate
-
24  param.nalu_length_size, param.language, param.is_encrypted);
-
25 }
-
26 
-
27 VideoStreamInfoParameters GetDefaultVideoStreamInfoParams() {
-
28  const int kTrackId = 0;
-
29  const uint32_t kTimeScale = 10;
-
30  const uint64_t kVideoStreamDuration = 200;
-
31  const Codec kH264Codec = kCodecH264;
-
32  const char* kCodecString = "avc1.010101";
-
33  const char* kLanuageUndefined = "und";
-
34  const uint16_t kWidth = 720;
-
35  const uint16_t kHeight = 480;
-
36  const uint32_t kPixelWidth = 1;
-
37  const uint32_t kPixelHeight = 1;
-
38  const uint8_t kNaluLengthSize = 1;
-
39  const std::vector<uint8_t> kExtraData;
-
40  const bool kEncryptedFlag = false;
-
41  VideoStreamInfoParameters params;
-
42  params.track_id = kTrackId;
-
43  params.time_scale = kTimeScale;
-
44  params.duration = kVideoStreamDuration;
-
45  params.codec = kH264Codec;
-
46  params.codec_string = kCodecString;
-
47  params.language = kLanuageUndefined;
-
48  params.width = kWidth;
-
49  params.height = kHeight;
-
50  params.pixel_width = kPixelWidth;
-
51  params.pixel_height = kPixelHeight;
-
52  params.nalu_length_size = kNaluLengthSize;
-
53  params.codec_config = kExtraData;
-
54  params.is_encrypted = kEncryptedFlag;
-
55  return params;
-
56 }
-
57 
-
58 OnMediaEndParameters GetDefaultOnMediaEndParams() {
-
59  // Values for {init, index} range {start, end} are arbitrary, but makes sure
-
60  // that it is monotonically increasing and contiguous.
-
61  const bool kHasInitRange = true;
-
62  const uint64_t kInitRangeStart = 0;
-
63  const uint64_t kInitRangeEnd = kInitRangeStart + 120;
-
64  const uint64_t kHasIndexRange = true;
-
65  const uint64_t kIndexRangeStart = kInitRangeEnd + 1;
-
66  const uint64_t kIndexRangeEnd = kIndexRangeStart + 100;
-
67  const float kMediaDuration = 10.5f;
-
68  const uint64_t kFileSize = 10000;
-
69  OnMediaEndParameters param = {
-
70  kHasInitRange, kInitRangeStart, kInitRangeEnd, kHasIndexRange,
-
71  kIndexRangeStart, kIndexRangeEnd, kMediaDuration, kFileSize};
-
72  return param;
-
73 }
-
74 
-
75 void SetDefaultMuxerOptionsValues(MuxerOptions* muxer_options) {
-
76  muxer_options->num_subsegments_per_sidx = 0;
-
77  muxer_options->output_file_name = "test_output_file_name.mp4";
-
78  muxer_options->segment_template.clear();
-
79  muxer_options->temp_dir.clear();
-
80 }
-
81 
-
82 std::vector<ProtectionSystemSpecificInfo> GetDefaultKeySystemInfo() {
-
83  const uint8_t kPsshData[] = {'p', 's', 's', 'h'};
-
84  const uint8_t kTestSystemId[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
-
85  0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b,
-
86  0x0c, 0x0d, 0x0e, 0x0f};
-
87 
-
88  ProtectionSystemSpecificInfo info;
-
89  info.set_system_id(kTestSystemId, arraysize(kTestSystemId));
-
90  info.set_pssh_data(
-
91  std::vector<uint8_t>(kPsshData, kPsshData + arraysize(kPsshData)));
-
92  info.set_pssh_box_version(0);
-
93 
-
94  std::vector<ProtectionSystemSpecificInfo> key_system_info;
-
95  key_system_info.push_back(info);
-
96  return key_system_info;
-
97 }
-
98 
-
99 void ExpectMediaInfoEqual(const MediaInfo& expect, const MediaInfo& actual) {
-
100  ASSERT_TRUE(MediaInfoEqual(expect, actual));
-
101 }
-
102 
-
103 bool MediaInfoEqual(const MediaInfo& expect, const MediaInfo& actual) {
-
104  // I found out here
-
105  // https://groups.google.com/forum/#!msg/protobuf/5sOExQkB2eQ/ZSBNZI0K54YJ
-
106  // that the best way to check equality is to serialize and check equality.
-
107  std::string expect_serialized = expect.SerializeAsString();
-
108  std::string actual_serialized = actual.SerializeAsString();
-
109  EXPECT_EQ(expect_serialized, actual_serialized);
-
110  return expect_serialized == actual_serialized;
-
111 }
-
112 
-
113 } // namespace media
-
114 } // namespace shaka
+
21  H26xStreamFormat::kUnSpecified, param.codec_string,
+
22  param.codec_config.data(), param.codec_config.size(), param.width,
+
23  param.height, param.pixel_width, param.pixel_height,
+
24  0, // trick_play_rate
+
25  param.nalu_length_size, param.language, param.is_encrypted);
+
26 }
+
27 
+
28 VideoStreamInfoParameters GetDefaultVideoStreamInfoParams() {
+
29  const int kTrackId = 0;
+
30  const uint32_t kTimeScale = 10;
+
31  const uint64_t kVideoStreamDuration = 200;
+
32  const Codec kH264Codec = kCodecH264;
+
33  const char* kCodecString = "avc1.010101";
+
34  const char* kLanuageUndefined = "und";
+
35  const uint16_t kWidth = 720;
+
36  const uint16_t kHeight = 480;
+
37  const uint32_t kPixelWidth = 1;
+
38  const uint32_t kPixelHeight = 1;
+
39  const uint8_t kNaluLengthSize = 1;
+
40  const std::vector<uint8_t> kExtraData;
+
41  const bool kEncryptedFlag = false;
+
42  VideoStreamInfoParameters params;
+
43  params.track_id = kTrackId;
+
44  params.time_scale = kTimeScale;
+
45  params.duration = kVideoStreamDuration;
+
46  params.codec = kH264Codec;
+
47  params.codec_string = kCodecString;
+
48  params.language = kLanuageUndefined;
+
49  params.width = kWidth;
+
50  params.height = kHeight;
+
51  params.pixel_width = kPixelWidth;
+
52  params.pixel_height = kPixelHeight;
+
53  params.nalu_length_size = kNaluLengthSize;
+
54  params.codec_config = kExtraData;
+
55  params.is_encrypted = kEncryptedFlag;
+
56  return params;
+
57 }
+
58 
+
59 OnMediaEndParameters GetDefaultOnMediaEndParams() {
+
60  // Values for {init, index} range {start, end} are arbitrary, but makes sure
+
61  // that it is monotonically increasing and contiguous.
+
62  const bool kHasInitRange = true;
+
63  const uint64_t kInitRangeStart = 0;
+
64  const uint64_t kInitRangeEnd = kInitRangeStart + 120;
+
65  const uint64_t kHasIndexRange = true;
+
66  const uint64_t kIndexRangeStart = kInitRangeEnd + 1;
+
67  const uint64_t kIndexRangeEnd = kIndexRangeStart + 100;
+
68  const float kMediaDuration = 10.5f;
+
69  const uint64_t kFileSize = 10000;
+
70  OnMediaEndParameters param = {
+
71  kHasInitRange, kInitRangeStart, kInitRangeEnd, kHasIndexRange,
+
72  kIndexRangeStart, kIndexRangeEnd, kMediaDuration, kFileSize};
+
73  return param;
+
74 }
+
75 
+
76 void SetDefaultMuxerOptionsValues(MuxerOptions* muxer_options) {
+
77  muxer_options->num_subsegments_per_sidx = 0;
+
78  muxer_options->output_file_name = "test_output_file_name.mp4";
+
79  muxer_options->segment_template.clear();
+
80  muxer_options->temp_dir.clear();
+
81 }
+
82 
+
83 std::vector<ProtectionSystemSpecificInfo> GetDefaultKeySystemInfo() {
+
84  const uint8_t kPsshData[] = {'p', 's', 's', 'h'};
+
85  const uint8_t kTestSystemId[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
+
86  0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b,
+
87  0x0c, 0x0d, 0x0e, 0x0f};
+
88 
+
89  ProtectionSystemSpecificInfo info;
+
90  info.set_system_id(kTestSystemId, arraysize(kTestSystemId));
+
91  info.set_pssh_data(
+
92  std::vector<uint8_t>(kPsshData, kPsshData + arraysize(kPsshData)));
+
93  info.set_pssh_box_version(0);
+
94 
+
95  std::vector<ProtectionSystemSpecificInfo> key_system_info;
+
96  key_system_info.push_back(info);
+
97  return key_system_info;
+
98 }
+
99 
+
100 void ExpectMediaInfoEqual(const MediaInfo& expect, const MediaInfo& actual) {
+
101  ASSERT_TRUE(MediaInfoEqual(expect, actual));
+
102 }
+
103 
+
104 bool MediaInfoEqual(const MediaInfo& expect, const MediaInfo& actual) {
+
105  // I found out here
+
106  // https://groups.google.com/forum/#!msg/protobuf/5sOExQkB2eQ/ZSBNZI0K54YJ
+
107  // that the best way to check equality is to serialize and check equality.
+
108  std::string expect_serialized = expect.SerializeAsString();
+
109  std::string actual_serialized = actual.SerializeAsString();
+
110  EXPECT_EQ(expect_serialized, actual_serialized);
+
111  return expect_serialized == actual_serialized;
+
112 }
+
113 
+
114 } // namespace media
+
115 } // namespace shaka
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 fcbbe29978..2a5fc13a3b 100644 --- a/docs/de/ddd/classshaka_1_1media_1_1Muxer-members.html +++ b/docs/de/ddd/classshaka_1_1media_1_1Muxer-members.html @@ -128,7 +128,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/ddd/classshaka_1_1media_1_1WebVttSampleConverter.html b/docs/de/ddd/classshaka_1_1media_1_1WebVttSampleConverter.html index 59e72dec53..6e9843f00c 100644 --- a/docs/de/ddd/classshaka_1_1media_1_1WebVttSampleConverter.html +++ b/docs/de/ddd/classshaka_1_1media_1_1WebVttSampleConverter.html @@ -257,7 +257,7 @@ Public Member Functions 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 3b954a11ee..a9bccbae19 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 @@ -272,7 +272,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 5a19331ff1..251adfd410 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 937f311982..50bf3cd64b 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 b7bcdbc4aa..d5b2610d48 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 @@ -130,7 +130,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 cf01e912e7..6d2d21182a 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 658f0f769c..13edf0cdc1 100644 --- a/docs/de/dea/classshaka_1_1media_1_1H26xByteToUnitStreamConverter.html +++ b/docs/de/dea/classshaka_1_1media_1_1H26xByteToUnitStreamConverter.html @@ -89,6 +89,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
shaka::media::H26xByteToUnitStreamConverter Class Referenceabstract
@@ -112,25 +113,95 @@ Inheritance diagram for shaka::media::H26xByteToUnitStreamConverter: - + + + + +

Public Member Functions

H26xByteToUnitStreamConverter (Nalu::CodecType type)
 H26xByteToUnitStreamConverter (Nalu::CodecType type)
 
 H26xByteToUnitStreamConverter (Nalu::CodecType type, H26xStreamFormat stream_format)
 
bool ConvertByteStreamToNalUnitStream (const uint8_t *input_frame, size_t input_frame_size, std::vector< uint8_t > *output_frame)
 
virtual bool GetDecoderConfigurationRecord (std::vector< uint8_t > *decoder_config) const =0
 
+H26xStreamFormat stream_format () const
 
+

Static Public Attributes

static constexpr size_t kUnitStreamNaluLengthSize = 4
 
+ + + + +

+Protected Member Functions

+bool strip_parameter_set_nalus () const
 
+void WarnIfNotMatch (int nalu_type, const uint8_t *nalu_ptr, size_t nalu_size, const std::vector< uint8_t > &vector)
 

Detailed Description

A base class that is used to convert H.26x byte streams to NAL unit streams.

-

Definition at line 22 of file h26x_byte_to_unit_stream_converter.h.

-

Member Function Documentation

+

Definition at line 23 of file h26x_byte_to_unit_stream_converter.h.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + +
+ + + + + + + + +
shaka::media::H26xByteToUnitStreamConverter::H26xByteToUnitStreamConverter (Nalu::CodecType type)
+
+explicit
+
+

Create a byte to unit stream converter with specified codec type. The setting of KeepParameterSetNalus is defined by a gflag.

+ +

Definition at line 36 of file h26x_byte_to_unit_stream_converter.cc.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
shaka::media::H26xByteToUnitStreamConverter::H26xByteToUnitStreamConverter (Nalu::CodecType type,
H26xStreamFormat stream_format 
)
+
+

Create a byte to unit stream converter with specified codec type and desired output stream format (whether to include parameter set nal units).

+ +

Definition at line 44 of file h26x_byte_to_unit_stream_converter.cc.

+ +
+
+

Member Function Documentation

@@ -171,7 +242,7 @@ static constexpr size_t kU
Returns
true if successful, false otherwise.
-

Definition at line 28 of file h26x_byte_to_unit_stream_converter.cc.

+

Definition at line 51 of file h26x_byte_to_unit_stream_converter.cc.

@@ -216,7 +287,7 @@ static constexpr size_t kU 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 1adf9b5874..3558838f6a 100644 --- a/docs/de/def/structshaka_1_1media_1_1mp4_1_1DecodingTimeToSample.html +++ b/docs/de/def/structshaka_1_1media_1_1mp4_1_1DecodingTimeToSample.html @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/de/df6/classshaka_1_1media_1_1mp4_1_1TrackRunIterator.html b/docs/de/df6/classshaka_1_1media_1_1mp4_1_1TrackRunIterator.html index 4d23afed3b..d5ffe4983b 100644 --- a/docs/de/df6/classshaka_1_1media_1_1mp4_1_1TrackRunIterator.html +++ b/docs/de/df6/classshaka_1_1media_1_1mp4_1_1TrackRunIterator.html @@ -412,7 +412,7 @@ bool is_keyframe () co diff --git a/docs/de/dfa/muxer__listener_8h_source.html b/docs/de/dfa/muxer__listener_8h_source.html index ca45c4d2bf..9336c3828b 100644 --- a/docs/de/dfa/muxer__listener_8h_source.html +++ b/docs/de/dfa/muxer__listener_8h_source.html @@ -164,7 +164,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
virtual void OnNewSegment(const std::string &segment_name, uint64_t start_time, uint64_t duration, uint64_t segment_file_size)=0
virtual void OnEncryptionInfoReady(bool is_initial_encryption_info, FourCC protection_scheme, const std::vector< uint8_t > &key_id, const std::vector< uint8_t > &iv, const std::vector< ProtectionSystemSpecificInfo > &key_system_info)=0
virtual void OnMediaEnd(bool has_init_range, uint64_t init_range_start, uint64_t init_range_end, bool has_index_range, uint64_t index_range_start, uint64_t index_range_end, float duration_seconds, uint64_t file_size)=0
-
Abstract class holds stream information.
Definition: stream_info.h:60
+
Abstract class holds stream information.
Definition: stream_info.h:57
virtual void OnSampleDurationReady(uint32_t sample_duration)=0
virtual void OnEncryptionStart()=0
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
@@ -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 771636c13f..514181e98e 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 1717 of file box_definitions.cc.

+

Definition at line 1719 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 1c68205c7a..d337b1d6c4 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/d00/playready__key__source_8h_source.html b/docs/df/d00/playready__key__source_8h_source.html index 9abfec2fba..2ce74bddcb 100644 --- a/docs/df/d00/playready__key__source_8h_source.html +++ b/docs/df/d00/playready__key__source_8h_source.html @@ -168,7 +168,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 15378334d3..b0aca4eccc 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 d8ceb157ea..091ce241c2 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 dd21d231e0..ac67b1c648 100644 --- a/docs/df/d1c/classshaka_1_1media_1_1MediaSample-members.html +++ b/docs/df/d1c/classshaka_1_1media_1_1MediaSample-members.html @@ -127,7 +127,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 a6830a6248..4a6eb080b8 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 1a9332c2ac..5b48156d00 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 3188831531..a26cb565a5 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 aa8f052cc2..f259a7e200 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 5cc095262e..2fd45aaaf2 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 27ba57995b..c4b1bd7b23 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 0b1dc35b74..4af7ae12dc 100644 --- a/docs/df/d32/audio__stream__info_8h_source.html +++ b/docs/df/d32/audio__stream__info_8h_source.html @@ -155,7 +155,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
73 } // namespace shaka
74 
75 #endif // MEDIA_BASE_AUDIO_STREAM_INFO_H_
-
Abstract class holds stream information.
Definition: stream_info.h:60
+
Abstract class holds stream information.
Definition: stream_info.h:57
std::string ToString() const override
bool IsValidConfig() const override
static std::string GetCodecString(Codec codec, uint8_t audio_object_type)
@@ -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 945054157f..80e04b264c 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 a009028532..b17b86a84a 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 2d8019d09b..0045e3e4bf 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 c7e842146b..94fb932523 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 de177cba4e..38b1147a4f 100644 --- a/docs/df/d46/classshaka_1_1media_1_1Muxer.html +++ b/docs/df/d46/classshaka_1_1media_1_1Muxer.html @@ -380,7 +380,7 @@ std::pair< std::shared_ptr
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 fc549b4ed0..5d9dda7375 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 b316190ab1..b59292088e 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 f3432591e9..871857d7ba 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/d60/classshaka_1_1MockMpdBuilder.html b/docs/df/d60/classshaka_1_1MockMpdBuilder.html index 50735737d5..5b0b5343aa 100644 --- a/docs/df/d60/classshaka_1_1MockMpdBuilder.html +++ b/docs/df/d60/classshaka_1_1MockMpdBuilder.html @@ -143,7 +143,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 9dedbe22ed..0b073500ce 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 a1964ac538..ef24d4a5a7 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 88cc6af669..85e212e95e 100644 --- a/docs/df/d6a/classshaka_1_1MockMpdBuilder-members.html +++ b/docs/df/d6a/classshaka_1_1MockMpdBuilder-members.html @@ -108,7 +108,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 233290d795..578c6efdb8 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 0dbd7a5cf0..02bf960df5 100644 --- a/docs/df/d7b/structshaka_1_1media_1_1mp4_1_1CompositionTimeToSample.html +++ b/docs/df/d7b/structshaka_1_1media_1_1mp4_1_1CompositionTimeToSample.html @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/df/d7b/structshaka_1_1media_1_1mp4_1_1TrackFragment.html b/docs/df/d7b/structshaka_1_1media_1_1mp4_1_1TrackFragment.html index 5b6a8af23a..f6cd21167e 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 2459 of file box_definitions.cc.

+

Definition at line 2461 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 a3f687084b..13fc66ee7a 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 1b4b18d0fe..c5de2c9c24 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 a04a902d5c..e6351acf41 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 df4aa7dcbc..71bdecc346 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 1986 of file box_definitions.cc.

+

Definition at line 1988 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 a409a9af38..110e5dcfee 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 236c19efb8..51eb92957f 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 fa5e5bc859..7e03946768 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 @@ -119,7 +119,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 eec1160983..cf03ab512a 100644 --- a/docs/df/d8d/es__parser__h26x_8h_source.html +++ b/docs/df/d8d/es__parser__h26x_8h_source.html @@ -229,13 +229,13 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
140 #endif
-
A base class that is used to convert H.26x byte streams to NAL unit streams.
+
A base class that is used to convert H.26x byte streams to NAL unit streams.
diff --git a/docs/df/d94/classshaka_1_1RepresentationStateChangeListener.html b/docs/df/d94/classshaka_1_1RepresentationStateChangeListener.html index 660bc2eec9..ea347345cb 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 3ff099112c..cbb0b471d2 100644 --- a/docs/df/d96/xml__node_8cc_source.html +++ b/docs/df/d96/xml__node_8cc_source.html @@ -493,7 +493,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 2b61f4c56f..1804d6c979 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 2248 of file box_definitions.cc.

+

Definition at line 2250 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 269f2158df..4851d24adf 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 0e342f6923..b6e003ab17 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 5dd92e2085..78d22ebcf7 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 ee785b45bb..11919c71d9 100644 --- a/docs/df/dad/decrypt__config_8h_source.html +++ b/docs/df/dad/decrypt__config_8h_source.html @@ -176,7 +176,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 5ffe416461..95977eec73 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 2c28266e34..53c1f9cdd4 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 74e1620810..27db0d97ff 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 7546e82299..dd282cffdd 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/dd3/structshaka_1_1media_1_1MediaEvent.html b/docs/df/dd3/structshaka_1_1media_1_1MediaEvent.html index 0b2f52b13f..4c140c45e5 100644 --- a/docs/df/dd3/structshaka_1_1media_1_1MediaEvent.html +++ b/docs/df/dd3/structshaka_1_1media_1_1MediaEvent.html @@ -99,7 +99,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 1112d37cee..2deafbfa60 100644 --- a/docs/df/ddc/webm_2segmenter_8h_source.html +++ b/docs/df/ddc/webm_2segmenter_8h_source.html @@ -219,7 +219,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
153 
154 #endif // MEDIA_FORMATS_WEBM_SEGMENTER_H_
Status WriteSegmentHeader(uint64_t file_size, MkvWriter *writer)
Writes the Segment header to writer.
Definition: segmenter.cc:181
-
Abstract class holds stream information.
Definition: stream_info.h:60
+
Abstract class holds stream information.
Definition: stream_info.h:57
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
@@ -235,7 +235,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:228
virtual bool GetInitRangeStartAndEnd(uint64_t *start, uint64_t *end)=0
uint64_t FromWebMTimecode(uint64_t time_webm_timecode)
Converts the given time in WebM timecode to ISO BMFF timescale.
Definition: segmenter.cc:175
-
Holds video stream information.
+
Holds video stream information.
Holds audio stream information.
uint64_t FromBMFFTimescale(uint64_t time_timescale)
Definition: segmenter.cc:168
virtual Status FinalizeSegment(uint64_t start_timescale, uint64_t duration_timescale, bool is_subsegment)=0
Finalize the (sub)segment.
Definition: segmenter.cc:153
@@ -243,7 +243,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 a08dfcc10b..89f098cbab 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 8782cf298d..37cd139ef2 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 a395ecf63f..c9fe9d76bf 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 190aefc8a5..17ee28db4d 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 bfe868687a..f452b9ed86 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 3467151045..b164505c9d 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/df/dfc/playready__key__encryption__flags_8cc_source.html b/docs/df/dfc/playready__key__encryption__flags_8cc_source.html index 0daa53451f..96daa07605 100644 --- a/docs/df/dfc/playready__key__encryption__flags_8cc_source.html +++ b/docs/df/dfc/playready__key__encryption__flags_8cc_source.html @@ -166,7 +166,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dir_0494b8c96e3190a776d2b97ade9c8ddf.html b/docs/dir_0494b8c96e3190a776d2b97ade9c8ddf.html index c73ec8930b..7db8809693 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 17cb048a64..f8640a805f 100644 --- a/docs/dir_2618cd273dea54f184e42d7a562af818.html +++ b/docs/dir_2618cd273dea54f184e42d7a562af818.html @@ -136,7 +136,7 @@ Files diff --git a/docs/dir_279fd47bebb21302c25cfb685e84c359.html b/docs/dir_279fd47bebb21302c25cfb685e84c359.html index f5d3651a4a..f71c6226a6 100644 --- a/docs/dir_279fd47bebb21302c25cfb685e84c359.html +++ b/docs/dir_279fd47bebb21302c25cfb685e84c359.html @@ -125,7 +125,7 @@ Files diff --git a/docs/dir_2eceb70145328c029a5f43350007537a.html b/docs/dir_2eceb70145328c029a5f43350007537a.html index 9033d850b8..645a5442ad 100644 --- a/docs/dir_2eceb70145328c029a5f43350007537a.html +++ b/docs/dir_2eceb70145328c029a5f43350007537a.html @@ -101,7 +101,7 @@ Files diff --git a/docs/dir_39dc0668bd5a501998f94e8b4e546c71.html b/docs/dir_39dc0668bd5a501998f94e8b4e546c71.html index ed9c18a160..bbc75182e2 100644 --- a/docs/dir_39dc0668bd5a501998f94e8b4e546c71.html +++ b/docs/dir_39dc0668bd5a501998f94e8b4e546c71.html @@ -103,7 +103,7 @@ Directories diff --git a/docs/dir_3e9291fd7a18fdecc763294cb2628910.html b/docs/dir_3e9291fd7a18fdecc763294cb2628910.html index 5c64bf1327..a3880593dd 100644 --- a/docs/dir_3e9291fd7a18fdecc763294cb2628910.html +++ b/docs/dir_3e9291fd7a18fdecc763294cb2628910.html @@ -149,7 +149,7 @@ Files diff --git a/docs/dir_49627ef5ef0630f6cf11dd06344c4cf0.html b/docs/dir_49627ef5ef0630f6cf11dd06344c4cf0.html index 7a8cd3c04e..df9c1a56c6 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 43984363a3..3840a3cafe 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 ffac1f9245..85fdaec681 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 1ed58f5817..57437be6b7 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 18ce24089f..96aa794fd6 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 795c2a8dac..17a0072bc2 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 e8ea723d20..05fbd88ad1 100644 --- a/docs/dir_aa73376d632f252584a1c0dfbefab2c4.html +++ b/docs/dir_aa73376d632f252584a1c0dfbefab2c4.html @@ -117,7 +117,7 @@ Files diff --git a/docs/dir_b0da65f92a9541ef8f345654d4bd88fd.html b/docs/dir_b0da65f92a9541ef8f345654d4bd88fd.html index c7ab540e5d..58c36c3729 100644 --- a/docs/dir_b0da65f92a9541ef8f345654d4bd88fd.html +++ b/docs/dir_b0da65f92a9541ef8f345654d4bd88fd.html @@ -93,7 +93,7 @@ Files diff --git a/docs/dir_ba94ecd487194410fd7c4b70c530929c.html b/docs/dir_ba94ecd487194410fd7c4b70c530929c.html index c17ce62502..095a313efe 100644 --- a/docs/dir_ba94ecd487194410fd7c4b70c530929c.html +++ b/docs/dir_ba94ecd487194410fd7c4b70c530929c.html @@ -93,7 +93,7 @@ Files diff --git a/docs/dir_c6ada2450b25ab5438a4dba6c9b890af.html b/docs/dir_c6ada2450b25ab5438a4dba6c9b890af.html index 2229f0cf82..c2afe9c945 100644 --- a/docs/dir_c6ada2450b25ab5438a4dba6c9b890af.html +++ b/docs/dir_c6ada2450b25ab5438a4dba6c9b890af.html @@ -259,7 +259,7 @@ Files diff --git a/docs/dir_d422163b96683743ed3963d4aac17747.html b/docs/dir_d422163b96683743ed3963d4aac17747.html index c466d23a78..e787f02e7a 100644 --- a/docs/dir_d422163b96683743ed3963d4aac17747.html +++ b/docs/dir_d422163b96683743ed3963d4aac17747.html @@ -143,7 +143,7 @@ Files diff --git a/docs/dir_eeaeb49ac3913fcfb450d3ce9cc0141b.html b/docs/dir_eeaeb49ac3913fcfb450d3ce9cc0141b.html index 3797b18a42..be52a8751a 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 372b8170ba..13b705a282 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 2c98e18679..5766ad31f4 100644 --- a/docs/files.html +++ b/docs/files.html @@ -448,7 +448,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions.html b/docs/functions.html index a7b8190f12..702140563c 100644 --- a/docs/functions.html +++ b/docs/functions.html @@ -248,7 +248,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_b.html b/docs/functions_b.html index af4fa6e23b..9893f4fbdc 100644 --- a/docs/functions_b.html +++ b/docs/functions_b.html @@ -240,7 +240,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_c.html b/docs/functions_c.html index 4e63859626..214b004419 100644 --- a/docs/functions_c.html +++ b/docs/functions_c.html @@ -250,7 +250,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_d.html b/docs/functions_d.html index 4f0f0169e5..36d706843f 100644 --- a/docs/functions_d.html +++ b/docs/functions_d.html @@ -180,7 +180,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_e.html b/docs/functions_e.html index 58ec6111f0..fe1ba66ee0 100644 --- a/docs/functions_e.html +++ b/docs/functions_e.html @@ -140,7 +140,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_enum.html b/docs/functions_enum.html index b55b7f4dcb..e2362f1256 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 93bca7b3a3..87ccefcb6f 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 ec4f1146c7..79fe1bc4ae 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 7e10b0502e..7223c17c55 100644 --- a/docs/functions_func.html +++ b/docs/functions_func.html @@ -247,7 +247,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_b.html b/docs/functions_func_b.html index f23fe1b853..b44f4628b4 100644 --- a/docs/functions_func_b.html +++ b/docs/functions_func_b.html @@ -236,7 +236,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_c.html b/docs/functions_func_c.html index 4bf17f9141..bcd95155cf 100644 --- a/docs/functions_func_c.html +++ b/docs/functions_func_c.html @@ -243,7 +243,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_d.html b/docs/functions_func_d.html index 7ec76a5731..144603443a 100644 --- a/docs/functions_func_d.html +++ b/docs/functions_func_d.html @@ -179,7 +179,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_e.html b/docs/functions_func_e.html index 912f271ca0..b9285945ae 100644 --- a/docs/functions_func_e.html +++ b/docs/functions_func_e.html @@ -139,7 +139,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_f.html b/docs/functions_func_f.html index cc10cd392c..d2c271253b 100644 --- a/docs/functions_func_f.html +++ b/docs/functions_func_f.html @@ -192,7 +192,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_g.html b/docs/functions_func_g.html index 353d7abc4b..9b00c823ea 100644 --- a/docs/functions_func_g.html +++ b/docs/functions_func_g.html @@ -157,7 +157,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • GetCodecString() : shaka::media::AudioStreamInfo , shaka::media::AVCDecoderConfigurationRecord -, shaka::media::HEVCDecoderConfigurationRecord +, shaka::media::HEVCDecoderConfigurationRecord , shaka::media::VPCodecConfigurationRecord
  • GetCryptoPeriodKey() @@ -276,7 +276,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_h.html b/docs/functions_func_h.html index 16ec2efdc8..23f03b89c1 100644 --- a/docs/functions_func_h.html +++ b/docs/functions_func_h.html @@ -121,6 +121,15 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');  

    - h -

    diff --git a/docs/functions_func_i.html b/docs/functions_func_i.html index e3707ed8ea..ecf5ac36ba 100644 --- a/docs/functions_func_i.html +++ b/docs/functions_func_i.html @@ -217,7 +217,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_l.html b/docs/functions_func_l.html index 4092120cb5..92b9adcdfb 100644 --- a/docs/functions_func_l.html +++ b/docs/functions_func_l.html @@ -134,7 +134,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_m.html b/docs/functions_func_m.html index 5b3862b85c..2864a9e160 100644 --- a/docs/functions_func_m.html +++ b/docs/functions_func_m.html @@ -146,7 +146,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_n.html b/docs/functions_func_n.html index c86eee72c9..4c609cb705 100644 --- a/docs/functions_func_n.html +++ b/docs/functions_func_n.html @@ -171,7 +171,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_o.html b/docs/functions_func_o.html index 31b400aff3..43a4048fc7 100644 --- a/docs/functions_func_o.html +++ b/docs/functions_func_o.html @@ -197,7 +197,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_p.html b/docs/functions_func_p.html index b265059378..fa27b512c4 100644 --- a/docs/functions_func_p.html +++ b/docs/functions_func_p.html @@ -237,7 +237,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_r.html b/docs/functions_func_r.html index f6f22d832e..491452f5d3 100644 --- a/docs/functions_func_r.html +++ b/docs/functions_func_r.html @@ -202,7 +202,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_s.html b/docs/functions_func_s.html index 7d0191cc84..194227a2fd 100644 --- a/docs/functions_func_s.html +++ b/docs/functions_func_s.html @@ -291,7 +291,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_t.html b/docs/functions_func_t.html index 59fe630c4f..4863f4c2a2 100644 --- a/docs/functions_func_t.html +++ b/docs/functions_func_t.html @@ -176,7 +176,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_u.html b/docs/functions_func_u.html index 87c70b143d..f42be981cf 100644 --- a/docs/functions_func_u.html +++ b/docs/functions_func_u.html @@ -145,7 +145,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_v.html b/docs/functions_func_v.html index 7e3d9784c2..7a66047458 100644 --- a/docs/functions_func_v.html +++ b/docs/functions_func_v.html @@ -132,13 +132,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : shaka::media::mp4::TrackRunIterator
  • VideoStreamInfo() -: shaka::media::VideoStreamInfo +: shaka::media::VideoStreamInfo
  • diff --git a/docs/functions_func_w.html b/docs/functions_func_w.html index c674bd5a97..0fd7e1cd38 100644 --- a/docs/functions_func_w.html +++ b/docs/functions_func_w.html @@ -181,7 +181,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_x.html b/docs/functions_func_x.html index b5f6eaf57c..9ecf1e6b19 100644 --- a/docs/functions_func_x.html +++ b/docs/functions_func_x.html @@ -128,7 +128,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_~.html b/docs/functions_func_~.html index d9fe6b9f5b..e6164e101f 100644 --- a/docs/functions_func_~.html +++ b/docs/functions_func_~.html @@ -131,7 +131,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_g.html b/docs/functions_g.html index 0117a11003..c65cfc7a9e 100644 --- a/docs/functions_g.html +++ b/docs/functions_g.html @@ -158,7 +158,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • GetCodecString() : shaka::media::AudioStreamInfo , shaka::media::AVCDecoderConfigurationRecord -, shaka::media::HEVCDecoderConfigurationRecord +, shaka::media::HEVCDecoderConfigurationRecord , shaka::media::VPCodecConfigurationRecord
  • GetCryptoPeriodKey() @@ -277,7 +277,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_h.html b/docs/functions_h.html index e33d77a66b..c401837bd4 100644 --- a/docs/functions_h.html +++ b/docs/functions_h.html @@ -122,6 +122,15 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    Here is a list of all documented class members with links to the class documentation for each member:

    - h -

    diff --git a/docs/functions_i.html b/docs/functions_i.html index 1b21ae6441..054ab1126f 100644 --- a/docs/functions_i.html +++ b/docs/functions_i.html @@ -221,7 +221,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_k.html b/docs/functions_k.html index 28393479a8..9de8da6eb4 100644 --- a/docs/functions_k.html +++ b/docs/functions_k.html @@ -147,7 +147,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_l.html b/docs/functions_l.html index 72be4e0dff..9a92cea86b 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 7c6ae1bd92..649259049c 100644 --- a/docs/functions_m.html +++ b/docs/functions_m.html @@ -159,7 +159,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_n.html b/docs/functions_n.html index f38b577902..d80decee14 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 65981993e6..3d6a0ef55d 100644 --- a/docs/functions_o.html +++ b/docs/functions_o.html @@ -201,7 +201,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_p.html b/docs/functions_p.html index 5c2087ac00..a88d1eac0a 100644 --- a/docs/functions_p.html +++ b/docs/functions_p.html @@ -247,7 +247,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_r.html b/docs/functions_r.html index 1e3e24c9ec..2ca7914a3c 100644 --- a/docs/functions_r.html +++ b/docs/functions_r.html @@ -203,7 +203,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_s.html b/docs/functions_s.html index 7e619f9beb..4fa5551ce1 100644 --- a/docs/functions_s.html +++ b/docs/functions_s.html @@ -310,7 +310,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_t.html b/docs/functions_t.html index f05ca3c9b8..6226cfccd8 100644 --- a/docs/functions_t.html +++ b/docs/functions_t.html @@ -180,7 +180,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_type.html b/docs/functions_type.html index c4a806dc42..0d9de6e3df 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 0f92ee0025..9c353b554b 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 7196af9057..6601ce3f4a 100644 --- a/docs/functions_v.html +++ b/docs/functions_v.html @@ -133,13 +133,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : shaka::media::mp4::TrackRunIterator
  • VideoStreamInfo() -: shaka::media::VideoStreamInfo +: shaka::media::VideoStreamInfo
  • diff --git a/docs/functions_vars.html b/docs/functions_vars.html index 49e1175891..ee78720d1c 100644 --- a/docs/functions_vars.html +++ b/docs/functions_vars.html @@ -160,7 +160,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_w.html b/docs/functions_w.html index ba068eb565..edf7ca1fdd 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 37d9c55e47..6a6113b3aa 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 8488e3994f..318db8fa8e 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 70166c68f2..2ae9ee8c36 100644 --- a/docs/hierarchy.html +++ b/docs/hierarchy.html @@ -378,7 +378,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/index.html b/docs/index.html index 9228a0f2a9..de2aff2234 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 3106b7217b..55bd1ab01e 100644 --- a/docs/namespacemembers.html +++ b/docs/namespacemembers.html @@ -133,7 +133,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/namespacemembers_func.html b/docs/namespacemembers_func.html index 97632642cc..79ad92d0b5 100644 --- a/docs/namespacemembers_func.html +++ b/docs/namespacemembers_func.html @@ -133,7 +133,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/namespaces.html b/docs/namespaces.html index 9169d55e2e..71bd6df06b 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_13.js b/docs/search/all_13.js index b3b03459e5..1aaf3d370f 100644 --- a/docs/search/all_13.js +++ b/docs/search/all_13.js @@ -11,7 +11,7 @@ var searchData= ['videosampleentry',['VideoSampleEntry',['../d0/d73/structshaka_1_1media_1_1mp4_1_1VideoSampleEntry.html',1,'shaka::media::mp4']]], ['videosliceheaderparser',['VideoSliceHeaderParser',['../dd/de4/classshaka_1_1media_1_1VideoSliceHeaderParser.html',1,'shaka::media']]], ['videosliceinfo',['VideoSliceInfo',['../d8/dc2/structshaka_1_1media_1_1mp2t_1_1EsParserH26x_1_1VideoSliceInfo.html',1,'shaka::media::mp2t::EsParserH26x']]], - ['videostreaminfo',['VideoStreamInfo',['../d6/db1/classshaka_1_1media_1_1VideoStreamInfo.html#a3de6a7d65ddd877c513f3047a86db59e',1,'shaka::media::VideoStreamInfo']]], + ['videostreaminfo',['VideoStreamInfo',['../d6/db1/classshaka_1_1media_1_1VideoStreamInfo.html#aebf74212fd6452c37fb766378b4c43a3',1,'shaka::media::VideoStreamInfo']]], ['videostreaminfo',['VideoStreamInfo',['../d6/db1/classshaka_1_1media_1_1VideoStreamInfo.html',1,'shaka::media']]], ['videostreaminfoparameters',['VideoStreamInfoParameters',['../d6/d26/structshaka_1_1media_1_1VideoStreamInfoParameters.html',1,'shaka::media']]], ['vodmediainfodumpmuxerlistener',['VodMediaInfoDumpMuxerListener',['../db/dd0/classshaka_1_1media_1_1VodMediaInfoDumpMuxerListener.html',1,'shaka::media']]], diff --git a/docs/search/all_6.js b/docs/search/all_6.js index 22c60e2a0c..8bc5f5406d 100644 --- a/docs/search/all_6.js +++ b/docs/search/all_6.js @@ -10,7 +10,7 @@ var searchData= ['getaudiospecificconfig',['GetAudioSpecificConfig',['../d3/d0c/classshaka_1_1media_1_1mp2t_1_1AdtsHeader.html#a5ca14cc4eb4a28906fe832ab263ba5a2',1,'shaka::media::mp2t::AdtsHeader']]], ['getaudiostreaminfo',['GetAudioStreamInfo',['../d3/d7c/classshaka_1_1media_1_1WebMAudioClient.html#a0fcbddd20199044f860331b3bd9ef3b8',1,'shaka::media::WebMAudioClient']]], ['getaudiostreaminfostreamdata',['GetAudioStreamInfoStreamData',['../d4/d9b/classshaka_1_1media_1_1MediaHandlerTestBase.html#a3bde32a7cdcd4fa8853576f782e7605e',1,'shaka::media::MediaHandlerTestBase']]], - ['getcodecstring',['GetCodecString',['../da/d4e/classshaka_1_1media_1_1AudioStreamInfo.html#aee79e7aa61b741bb96f451c6de1c9d42',1,'shaka::media::AudioStreamInfo::GetCodecString()'],['../d6/d57/classshaka_1_1media_1_1AVCDecoderConfigurationRecord.html#a52fbab2c863be9e771eafa20b34b89bc',1,'shaka::media::AVCDecoderConfigurationRecord::GetCodecString() const '],['../d6/d57/classshaka_1_1media_1_1AVCDecoderConfigurationRecord.html#a120f0913aea1e336da1335e80564b106',1,'shaka::media::AVCDecoderConfigurationRecord::GetCodecString(uint8_t profile_indication, uint8_t profile_compatibility, uint8_t avc_level)'],['../d4/d8a/classshaka_1_1media_1_1HEVCDecoderConfigurationRecord.html#ad6b1f9ca644b001ff59c8e8188117f76',1,'shaka::media::HEVCDecoderConfigurationRecord::GetCodecString()'],['../d1/da5/classshaka_1_1media_1_1VPCodecConfigurationRecord.html#a86b48fb506b476538a7440d9ccf9a533',1,'shaka::media::VPCodecConfigurationRecord::GetCodecString()']]], + ['getcodecstring',['GetCodecString',['../da/d4e/classshaka_1_1media_1_1AudioStreamInfo.html#aee79e7aa61b741bb96f451c6de1c9d42',1,'shaka::media::AudioStreamInfo::GetCodecString()'],['../d6/d57/classshaka_1_1media_1_1AVCDecoderConfigurationRecord.html#a52fbab2c863be9e771eafa20b34b89bc',1,'shaka::media::AVCDecoderConfigurationRecord::GetCodecString() const '],['../d6/d57/classshaka_1_1media_1_1AVCDecoderConfigurationRecord.html#a120f0913aea1e336da1335e80564b106',1,'shaka::media::AVCDecoderConfigurationRecord::GetCodecString(uint8_t profile_indication, uint8_t profile_compatibility, uint8_t avc_level)'],['../d4/d8a/classshaka_1_1media_1_1HEVCDecoderConfigurationRecord.html#aa612802ce249bdff2cd4a8b50a05268c',1,'shaka::media::HEVCDecoderConfigurationRecord::GetCodecString()'],['../d1/da5/classshaka_1_1media_1_1VPCodecConfigurationRecord.html#a86b48fb506b476538a7440d9ccf9a533',1,'shaka::media::VPCodecConfigurationRecord::GetCodecString()']]], ['getcontenttype',['GetContentType',['../d8/daf/namespaceshaka.html#a5ea880937da26d677ff6a48c0219d090',1,'shaka']]], ['getcryptoperiodkey',['GetCryptoPeriodKey',['../d0/dac/classshaka_1_1media_1_1FixedKeySource.html#afa9abf3a9104cbcb4711eac65c8a5bdf',1,'shaka::media::FixedKeySource::GetCryptoPeriodKey()'],['../d1/d1f/classshaka_1_1media_1_1KeySource.html#a18806b962c858e35ed07753687605b16',1,'shaka::media::KeySource::GetCryptoPeriodKey()'],['../d4/da6/classshaka_1_1media_1_1PlayReadyKeySource.html#a4005a0a96024a6918fb9f81a281ca131',1,'shaka::media::PlayReadyKeySource::GetCryptoPeriodKey()'],['../da/ddd/classshaka_1_1media_1_1WidevineKeySource.html#ab56a71e9f9f9e545f96e667279c05bb1',1,'shaka::media::WidevineKeySource::GetCryptoPeriodKey()']]], ['getdecoderconfigurationrecord',['GetDecoderConfigurationRecord',['../d8/d08/classshaka_1_1media_1_1H264ByteToUnitStreamConverter.html#a6a7a73841ded1942364f88aad90dcbc9',1,'shaka::media::H264ByteToUnitStreamConverter::GetDecoderConfigurationRecord()'],['../db/df8/classshaka_1_1media_1_1H265ByteToUnitStreamConverter.html#a9a866e255a2b267f2b44d0156c479de9',1,'shaka::media::H265ByteToUnitStreamConverter::GetDecoderConfigurationRecord()'],['../de/dea/classshaka_1_1media_1_1H26xByteToUnitStreamConverter.html#a57f8a71d948f27303ba41dd5aafb5445',1,'shaka::media::H26xByteToUnitStreamConverter::GetDecoderConfigurationRecord()']]], diff --git a/docs/search/all_7.js b/docs/search/all_7.js index 6e07f7d88b..082a7386c8 100644 --- a/docs/search/all_7.js +++ b/docs/search/all_7.js @@ -1,6 +1,7 @@ var searchData= [ ['h264bytetounitstreamconverter',['H264ByteToUnitStreamConverter',['../d8/d08/classshaka_1_1media_1_1H264ByteToUnitStreamConverter.html',1,'shaka::media']]], + ['h264bytetounitstreamconverter',['H264ByteToUnitStreamConverter',['../d8/d08/classshaka_1_1media_1_1H264ByteToUnitStreamConverter.html#a46b95534c0bcae5985dc10806fab9a07',1,'shaka::media::H264ByteToUnitStreamConverter::H264ByteToUnitStreamConverter()'],['../d8/d08/classshaka_1_1media_1_1H264ByteToUnitStreamConverter.html#a53e3cd94807541ce82739715c5a50ae0',1,'shaka::media::H264ByteToUnitStreamConverter::H264ByteToUnitStreamConverter(H26xStreamFormat stream_format)']]], ['h264decrefpicmarking',['H264DecRefPicMarking',['../dc/d54/structshaka_1_1media_1_1H264DecRefPicMarking.html',1,'shaka::media']]], ['h264modificationofpicnum',['H264ModificationOfPicNum',['../d9/dff/structshaka_1_1media_1_1H264ModificationOfPicNum.html',1,'shaka::media']]], ['h264parser',['H264Parser',['../d3/d91/classshaka_1_1media_1_1H264Parser.html',1,'shaka::media']]], @@ -13,6 +14,7 @@ var searchData= ['h264videosliceheaderparser',['H264VideoSliceHeaderParser',['../da/df0/classshaka_1_1media_1_1H264VideoSliceHeaderParser.html',1,'shaka::media']]], ['h264weightingfactors',['H264WeightingFactors',['../d4/d4c/structshaka_1_1media_1_1H264WeightingFactors.html',1,'shaka::media']]], ['h265bytetounitstreamconverter',['H265ByteToUnitStreamConverter',['../db/df8/classshaka_1_1media_1_1H265ByteToUnitStreamConverter.html',1,'shaka::media']]], + ['h265bytetounitstreamconverter',['H265ByteToUnitStreamConverter',['../db/df8/classshaka_1_1media_1_1H265ByteToUnitStreamConverter.html#a2ec8824525ceca4e1320e1c11a5be24b',1,'shaka::media::H265ByteToUnitStreamConverter::H265ByteToUnitStreamConverter()'],['../db/df8/classshaka_1_1media_1_1H265ByteToUnitStreamConverter.html#a49f20c495bb0bff62214ba4f25620d19',1,'shaka::media::H265ByteToUnitStreamConverter::H265ByteToUnitStreamConverter(H26xStreamFormat stream_format)']]], ['h265parser',['H265Parser',['../de/dc2/classshaka_1_1media_1_1H265Parser.html',1,'shaka::media']]], ['h265pps',['H265Pps',['../de/d33/structshaka_1_1media_1_1H265Pps.html',1,'shaka::media']]], ['h265referencepicturelistmodifications',['H265ReferencePictureListModifications',['../d5/d9d/structshaka_1_1media_1_1H265ReferencePictureListModifications.html',1,'shaka::media']]], @@ -22,6 +24,7 @@ var searchData= ['h265videosliceheaderparser',['H265VideoSliceHeaderParser',['../d1/d79/classshaka_1_1media_1_1H265VideoSliceHeaderParser.html',1,'shaka::media']]], ['h265vuiparameters',['H265VuiParameters',['../d9/d67/structshaka_1_1media_1_1H265VuiParameters.html',1,'shaka::media']]], ['h26xbitreader',['H26xBitReader',['../de/db4/classshaka_1_1media_1_1H26xBitReader.html',1,'shaka::media']]], + ['h26xbytetounitstreamconverter',['H26xByteToUnitStreamConverter',['../de/dea/classshaka_1_1media_1_1H26xByteToUnitStreamConverter.html#ac57b1509f83fa8a3e508fee61bb2eaf7',1,'shaka::media::H26xByteToUnitStreamConverter::H26xByteToUnitStreamConverter(Nalu::CodecType type)'],['../de/dea/classshaka_1_1media_1_1H26xByteToUnitStreamConverter.html#a43fd12a6ac3c9749e2cf0c29b2262cd1',1,'shaka::media::H26xByteToUnitStreamConverter::H26xByteToUnitStreamConverter(Nalu::CodecType type, H26xStreamFormat stream_format)']]], ['h26xbytetounitstreamconverter',['H26xByteToUnitStreamConverter',['../de/dea/classshaka_1_1media_1_1H26xByteToUnitStreamConverter.html',1,'shaka::media']]], ['handlerreference',['HandlerReference',['../da/dbb/structshaka_1_1media_1_1mp4_1_1HandlerReference.html',1,'shaka::media::mp4']]], ['has_5fdts',['has_dts',['../d2/d93/classshaka_1_1media_1_1mp2t_1_1PesPacket.html#a72b4c0794a46dee8b0e97758fb055e78',1,'shaka::media::mp2t::PesPacket']]], @@ -33,8 +36,8 @@ var searchData= ['headpos',['HeadPos',['../d5/d33/classshaka_1_1media_1_1ProducerConsumerQueue.html#a0c5d10a81c6b9e6db8b8d6b61baf1902',1,'shaka::media::ProducerConsumerQueue']]], ['hevcdecoderconfigurationrecord',['HEVCDecoderConfigurationRecord',['../d4/d8a/classshaka_1_1media_1_1HEVCDecoderConfigurationRecord.html',1,'shaka::media']]], ['hextouuid',['HexToUUID',['../d8/daf/namespaceshaka.html#a4c2ea2c3e7055657ca68a6b8e285d4d6',1,'shaka']]], - ['hlsnotifymuxerlistener',['HlsNotifyMuxerListener',['../d5/dfa/classshaka_1_1media_1_1HlsNotifyMuxerListener.html#a7a7e0180802884f39e45bc083af1409e',1,'shaka::media::HlsNotifyMuxerListener']]], ['hlsnotifymuxerlistener',['HlsNotifyMuxerListener',['../d5/dfa/classshaka_1_1media_1_1HlsNotifyMuxerListener.html',1,'shaka::media']]], + ['hlsnotifymuxerlistener',['HlsNotifyMuxerListener',['../d5/dfa/classshaka_1_1media_1_1HlsNotifyMuxerListener.html#a7a7e0180802884f39e45bc083af1409e',1,'shaka::media::HlsNotifyMuxerListener']]], ['httpkeyfetcher',['HttpKeyFetcher',['../d7/de0/classshaka_1_1media_1_1HttpKeyFetcher.html#a02561dcbbaf66152dce3ebd466810f15',1,'shaka::media::HttpKeyFetcher::HttpKeyFetcher()'],['../d7/de0/classshaka_1_1media_1_1HttpKeyFetcher.html#a11829a5c6e3507998c4d93c83c3069a4',1,'shaka::media::HttpKeyFetcher::HttpKeyFetcher(uint32_t timeout_in_seconds)']]], ['httpkeyfetcher',['HttpKeyFetcher',['../d7/de0/classshaka_1_1media_1_1HttpKeyFetcher.html',1,'shaka::media']]] ]; diff --git a/docs/search/functions_12.js b/docs/search/functions_12.js index b3b8cdcc8e..e48f4b67a1 100644 --- a/docs/search/functions_12.js +++ b/docs/search/functions_12.js @@ -7,5 +7,5 @@ var searchData= ['validatewidevinecryptoflags',['ValidateWidevineCryptoFlags',['../d8/daf/namespaceshaka.html#ade3cbb360c0dcaacc5667676af885008',1,'shaka']]], ['verifysignature',['VerifySignature',['../d9/d0c/classshaka_1_1media_1_1RsaPublicKey.html#a146cc97c8fcacadde1b08c373b766fe4',1,'shaka::media::RsaPublicKey']]], ['video_5fdescription',['video_description',['../de/df6/classshaka_1_1media_1_1mp4_1_1TrackRunIterator.html#aee813f01267e89ff00fdb836bb3a159d',1,'shaka::media::mp4::TrackRunIterator']]], - ['videostreaminfo',['VideoStreamInfo',['../d6/db1/classshaka_1_1media_1_1VideoStreamInfo.html#a3de6a7d65ddd877c513f3047a86db59e',1,'shaka::media::VideoStreamInfo']]] + ['videostreaminfo',['VideoStreamInfo',['../d6/db1/classshaka_1_1media_1_1VideoStreamInfo.html#aebf74212fd6452c37fb766378b4c43a3',1,'shaka::media::VideoStreamInfo']]] ]; diff --git a/docs/search/functions_6.js b/docs/search/functions_6.js index 22c60e2a0c..8bc5f5406d 100644 --- a/docs/search/functions_6.js +++ b/docs/search/functions_6.js @@ -10,7 +10,7 @@ var searchData= ['getaudiospecificconfig',['GetAudioSpecificConfig',['../d3/d0c/classshaka_1_1media_1_1mp2t_1_1AdtsHeader.html#a5ca14cc4eb4a28906fe832ab263ba5a2',1,'shaka::media::mp2t::AdtsHeader']]], ['getaudiostreaminfo',['GetAudioStreamInfo',['../d3/d7c/classshaka_1_1media_1_1WebMAudioClient.html#a0fcbddd20199044f860331b3bd9ef3b8',1,'shaka::media::WebMAudioClient']]], ['getaudiostreaminfostreamdata',['GetAudioStreamInfoStreamData',['../d4/d9b/classshaka_1_1media_1_1MediaHandlerTestBase.html#a3bde32a7cdcd4fa8853576f782e7605e',1,'shaka::media::MediaHandlerTestBase']]], - ['getcodecstring',['GetCodecString',['../da/d4e/classshaka_1_1media_1_1AudioStreamInfo.html#aee79e7aa61b741bb96f451c6de1c9d42',1,'shaka::media::AudioStreamInfo::GetCodecString()'],['../d6/d57/classshaka_1_1media_1_1AVCDecoderConfigurationRecord.html#a52fbab2c863be9e771eafa20b34b89bc',1,'shaka::media::AVCDecoderConfigurationRecord::GetCodecString() const '],['../d6/d57/classshaka_1_1media_1_1AVCDecoderConfigurationRecord.html#a120f0913aea1e336da1335e80564b106',1,'shaka::media::AVCDecoderConfigurationRecord::GetCodecString(uint8_t profile_indication, uint8_t profile_compatibility, uint8_t avc_level)'],['../d4/d8a/classshaka_1_1media_1_1HEVCDecoderConfigurationRecord.html#ad6b1f9ca644b001ff59c8e8188117f76',1,'shaka::media::HEVCDecoderConfigurationRecord::GetCodecString()'],['../d1/da5/classshaka_1_1media_1_1VPCodecConfigurationRecord.html#a86b48fb506b476538a7440d9ccf9a533',1,'shaka::media::VPCodecConfigurationRecord::GetCodecString()']]], + ['getcodecstring',['GetCodecString',['../da/d4e/classshaka_1_1media_1_1AudioStreamInfo.html#aee79e7aa61b741bb96f451c6de1c9d42',1,'shaka::media::AudioStreamInfo::GetCodecString()'],['../d6/d57/classshaka_1_1media_1_1AVCDecoderConfigurationRecord.html#a52fbab2c863be9e771eafa20b34b89bc',1,'shaka::media::AVCDecoderConfigurationRecord::GetCodecString() const '],['../d6/d57/classshaka_1_1media_1_1AVCDecoderConfigurationRecord.html#a120f0913aea1e336da1335e80564b106',1,'shaka::media::AVCDecoderConfigurationRecord::GetCodecString(uint8_t profile_indication, uint8_t profile_compatibility, uint8_t avc_level)'],['../d4/d8a/classshaka_1_1media_1_1HEVCDecoderConfigurationRecord.html#aa612802ce249bdff2cd4a8b50a05268c',1,'shaka::media::HEVCDecoderConfigurationRecord::GetCodecString()'],['../d1/da5/classshaka_1_1media_1_1VPCodecConfigurationRecord.html#a86b48fb506b476538a7440d9ccf9a533',1,'shaka::media::VPCodecConfigurationRecord::GetCodecString()']]], ['getcontenttype',['GetContentType',['../d8/daf/namespaceshaka.html#a5ea880937da26d677ff6a48c0219d090',1,'shaka']]], ['getcryptoperiodkey',['GetCryptoPeriodKey',['../d0/dac/classshaka_1_1media_1_1FixedKeySource.html#afa9abf3a9104cbcb4711eac65c8a5bdf',1,'shaka::media::FixedKeySource::GetCryptoPeriodKey()'],['../d1/d1f/classshaka_1_1media_1_1KeySource.html#a18806b962c858e35ed07753687605b16',1,'shaka::media::KeySource::GetCryptoPeriodKey()'],['../d4/da6/classshaka_1_1media_1_1PlayReadyKeySource.html#a4005a0a96024a6918fb9f81a281ca131',1,'shaka::media::PlayReadyKeySource::GetCryptoPeriodKey()'],['../da/ddd/classshaka_1_1media_1_1WidevineKeySource.html#ab56a71e9f9f9e545f96e667279c05bb1',1,'shaka::media::WidevineKeySource::GetCryptoPeriodKey()']]], ['getdecoderconfigurationrecord',['GetDecoderConfigurationRecord',['../d8/d08/classshaka_1_1media_1_1H264ByteToUnitStreamConverter.html#a6a7a73841ded1942364f88aad90dcbc9',1,'shaka::media::H264ByteToUnitStreamConverter::GetDecoderConfigurationRecord()'],['../db/df8/classshaka_1_1media_1_1H265ByteToUnitStreamConverter.html#a9a866e255a2b267f2b44d0156c479de9',1,'shaka::media::H265ByteToUnitStreamConverter::GetDecoderConfigurationRecord()'],['../de/dea/classshaka_1_1media_1_1H26xByteToUnitStreamConverter.html#a57f8a71d948f27303ba41dd5aafb5445',1,'shaka::media::H26xByteToUnitStreamConverter::GetDecoderConfigurationRecord()']]], diff --git a/docs/search/functions_7.js b/docs/search/functions_7.js index d19f8e6c9e..31a0b43066 100644 --- a/docs/search/functions_7.js +++ b/docs/search/functions_7.js @@ -1,5 +1,8 @@ var searchData= [ + ['h264bytetounitstreamconverter',['H264ByteToUnitStreamConverter',['../d8/d08/classshaka_1_1media_1_1H264ByteToUnitStreamConverter.html#a46b95534c0bcae5985dc10806fab9a07',1,'shaka::media::H264ByteToUnitStreamConverter::H264ByteToUnitStreamConverter()'],['../d8/d08/classshaka_1_1media_1_1H264ByteToUnitStreamConverter.html#a53e3cd94807541ce82739715c5a50ae0',1,'shaka::media::H264ByteToUnitStreamConverter::H264ByteToUnitStreamConverter(H26xStreamFormat stream_format)']]], + ['h265bytetounitstreamconverter',['H265ByteToUnitStreamConverter',['../db/df8/classshaka_1_1media_1_1H265ByteToUnitStreamConverter.html#a2ec8824525ceca4e1320e1c11a5be24b',1,'shaka::media::H265ByteToUnitStreamConverter::H265ByteToUnitStreamConverter()'],['../db/df8/classshaka_1_1media_1_1H265ByteToUnitStreamConverter.html#a49f20c495bb0bff62214ba4f25620d19',1,'shaka::media::H265ByteToUnitStreamConverter::H265ByteToUnitStreamConverter(H26xStreamFormat stream_format)']]], + ['h26xbytetounitstreamconverter',['H26xByteToUnitStreamConverter',['../de/dea/classshaka_1_1media_1_1H26xByteToUnitStreamConverter.html#ac57b1509f83fa8a3e508fee61bb2eaf7',1,'shaka::media::H26xByteToUnitStreamConverter::H26xByteToUnitStreamConverter(Nalu::CodecType type)'],['../de/dea/classshaka_1_1media_1_1H26xByteToUnitStreamConverter.html#a43fd12a6ac3c9749e2cf0c29b2262cd1',1,'shaka::media::H26xByteToUnitStreamConverter::H26xByteToUnitStreamConverter(Nalu::CodecType type, H26xStreamFormat stream_format)']]], ['has_5fdts',['has_dts',['../d2/d93/classshaka_1_1media_1_1mp2t_1_1PesPacket.html#a72b4c0794a46dee8b0e97758fb055e78',1,'shaka::media::mp2t::PesPacket']]], ['has_5fpts',['has_pts',['../d2/d93/classshaka_1_1media_1_1mp2t_1_1PesPacket.html#a080a8a7519de7a306b818514eddacdbd',1,'shaka::media::mp2t::PesPacket']]], ['hasbytes',['HasBytes',['../d9/d13/classshaka_1_1media_1_1BufferReader.html#a208f2fda9ea3e79583284c951642c356',1,'shaka::media::BufferReader']]],