From 8b73b4cfc88f21921d01dca5f50f925c58774aa8 Mon Sep 17 00:00:00 2001 From: Widevine Buildbot Date: Wed, 8 Mar 2017 19:14:10 +0000 Subject: [PATCH] Generate SDK documents for commit 8f2cd6da917dd20b2c9599cb8e24b174aa1f9308 --- docs/annotated.html | 195 ++-- docs/classes.html | 142 +-- ...ia_1_1mp4_1_1HandlerReference-members.html | 2 +- ..._1_1media_1_1RsaRequestSigner-members.html | 2 +- docs/d0/d06/mpd__flags_8cc_source.html | 2 +- ...ka_1_1media_1_1HttpKeyFetcher-members.html | 2 +- ...oder__configuration__record_8h_source.html | 2 +- docs/d0/d0e/muxer__options_8h_source.html | 2 +- ...media_1_1mp2t_1_1TsSectionPmt-members.html | 2 +- .../structshaka_1_1media_1_1VPxFrameInfo.html | 2 +- ...tshaka_1_1media_1_1StreamData-members.html | 2 +- ...H265ByteToUnitStreamConverter-members.html | 2 +- ..._1_1media_1_1mp4_1_1VTTCueBox-members.html | 2 +- ...haka_1_1media_1_1mp2t_1_1TsSectionPat.html | 2 +- .../structshaka_1_1media_1_1MuxerOptions.html | 2 +- .../d0/d30/mock__mpd__notifier_8h_source.html | 2 +- docs/d0/d32/mp2t__common_8h_source.html | 2 +- .../d33/classshaka_1_1MockRepresentation.html | 2 +- docs/d0/d35/es__descriptor_8cc_source.html | 2 +- ...s__notify__muxer__listener_8cc_source.html | 2 +- docs/d0/d3a/webm__constants_8h_source.html | 2 +- ...mp4_1_1ProtectionSystemSpecificHeader.html | 2 +- docs/d0/d42/aes__cryptor_8h_source.html | 2 +- ...idevine__encryption__flags_8cc_source.html | 2 +- docs/d0/d46/fourccs_8h_source.html | 2 +- ...shaka_1_1media_1_1SegmentInfo-members.html | 2 +- ...nfo__dump__muxer__listener_8cc_source.html | 2 +- ...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 | 53 +- ...dia_1_1MpdNotifyMuxerListener-members.html | 2 +- ...classshaka_1_1media_1_1ThreadedIoFile.html | 2 +- ..._1_1StreamDescriptorCompareFn-members.html | 2 +- ...a_1_1media_1_1mp4_1_1VideoSampleEntry.html | 2 +- ...haka_1_1media_1_1mp4_1_1SampleToGroup.html | 2 +- docs/d0/d7d/decryptor__source_8h_source.html | 2 +- ...a_1_1media_1_1AesCbcEncryptor-members.html | 2 +- ...classshaka_1_1media_1_1Status-members.html | 2 +- .../d0/d93/classshaka_1_1media_1_1Status.html | 2 +- .../structshaka_1_1media_1_1mp4_1_1Movie.html | 2 +- ...ka_1_1media_1_1AACAudioSpecificConfig.html | 2 +- ...aka_1_1media_1_1RequestSigner-members.html | 2 +- ...uctshaka_1_1xml_1_1XmlDeleter-members.html | 2 +- .../d0/da6/stream__descriptor_8cc_source.html | 2 +- ...edia_1_1mp4_1_1SingleSegmentSegmenter.html | 14 +- ...1_1media_1_1EncryptionHandler-members.html | 13 +- ...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 | 2 +- ...media_1_1ProtectionSystemSpecificInfo.html | 2 +- .../dd6/webm__crypto__helpers_8cc_source.html | 2 +- ...lassshaka_1_1media_1_1AesCtrEncryptor.html | 2 +- .../dee/segmenter__test__base_8h_source.html | 2 +- docs/d0/df3/packager__util_8cc_source.html | 409 ++++---- ...ia_1_1mp4_1_1AudioSampleEntry-members.html | 2 +- .../d0a/classshaka_1_1media_1_1MkvWriter.html | 2 +- .../d0a/structshaka_1_1media_1_1H264Sps.html | 2 +- ...der__configuration__record_8cc_source.html | 2 +- ...media_1_1mp2t_1_1EsParserH264-members.html | 2 +- docs/d1/d13/status_8h_source.html | 2 +- ...single__segment__segmenter_8cc_source.html | 359 ++++--- 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 | 2 +- .../d40/classshaka_1_1MpdWriter-members.html | 2 +- .../decoding__time__iterator_8cc_source.html | 2 +- .../d1/d48/text__track__config_8h_source.html | 2 +- ...a_1_1media_1_1OffsetByteQueue-members.html | 2 +- ...aka_1_1media_1_1EncryptionKey-members.html | 2 +- ..._1media_1_1mp4_1_1TrackFragmentHeader.html | 2 +- docs/d1/d70/vp8__parser_8cc_source.html | 2 +- docs/d1/d72/language__utils_8cc_source.html | 2 +- .../d74/mp2t__media__parser_8cc_source.html | 2 +- ..._1media_1_1H265VideoSliceHeaderParser.html | 2 +- .../d7d/webm__video__client_8cc_source.html | 2 +- ...ia_1_1H265ReferencePictureSet-members.html | 2 +- docs/d1/d82/adts__constants_8h_source.html | 2 +- ..._1_1media_1_1WebMParserClient-members.html | 2 +- ...1mp4_1_1KeyRotationFragmenter-members.html | 2 +- .../d8e/webm__audio__client_8cc_source.html | 2 +- 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 | 37 +- ...a_1_1media_1_1mp4_1_1VideoMediaHeader.html | 2 +- ...oder__configuration__record_8h_source.html | 2 +- ..._1media_1_1PlayReadyKeySource-members.html | 2 +- docs/d1/dc2/h26x__bit__reader_8h_source.html | 2 +- .../dcb/encrypting__fragmenter_8h_source.html | 2 +- .../dd5/classshaka_1_1media_1_1Cluster.html | 2 +- ...dia_1_1mp4_1_1DataInformation-members.html | 2 +- ...a_1_1media_1_1VideoStreamInfo-members.html | 2 +- ...position__offset__iterator_8cc_source.html | 2 +- ...sshaka_1_1media_1_1KeyFetcher-members.html | 2 +- ...sshaka_1_1xml_1_1AdaptationSetXmlNode.html | 2 +- ...rencePictureListModifications-members.html | 2 +- ..._1_1media_1_1ProgressListener-members.html | 2 +- ...assshaka_1_1media_1_1mp4_1_1BoxReader.html | 2 +- ...tshaka_1_1media_1_1mp4_1_1SampleTable.html | 2 +- docs/d1/df0/aes__encryptor_8h_source.html | 2 +- docs/d1/df3/structshaka_1_1MpdOptions.html | 2 +- docs/d1/df5/nalu__reader_8cc_source.html | 2 +- ...ia_1_1mp4_1_1VideoMediaHeader-members.html | 2 +- docs/d2/d02/timestamp_8h_source.html | 2 +- ...assshaka_1_1media_1_1SeekHead-members.html | 2 +- .../d0f/classshaka_1_1MpdBuilder-members.html | 2 +- ...aka_1_1media_1_1wvm_1_1PrevSampleData.html | 2 +- ...aka_1_1media_1_1MuxerListener-members.html | 2 +- docs/d2/d17/ts__section__pat_8cc_source.html | 2 +- .../d2/d23/threaded__io__file_8cc_source.html | 2 +- docs/d2/d24/packager__util_8h_source.html | 60 +- ...media_1_1mp4_1_1KeyRotationFragmenter.html | 2 +- docs/d2/d30/tracks__builder_8cc_source.html | 2 +- ...ideo__slice__header__parser_8h_source.html | 2 +- ...1_1media_1_1WidevineKeySource-members.html | 2 +- ...1_1mp4_1_1TrackFragmentHeader-members.html | 2 +- ...rogram__map__table__writer_8cc_source.html | 2 +- ...o__byte__stream__converter_8cc_source.html | 2 +- docs/d2/d4d/file_8h_source.html | 2 +- .../d4f/structshaka_1_1Element-members.html | 2 +- ...classshaka_1_1MockMpdNotifier-members.html | 2 +- ...ructshaka_1_1media_1_1H264SliceHeader.html | 2 +- ...ssshaka_1_1media_1_1KeySource-members.html | 2 +- ...assshaka_1_1SimpleMpdNotifier-members.html | 2 +- ...a_1_1H264ModificationOfPicNum-members.html | 2 +- .../d62/simple__mpd__notifier_8h_source.html | 2 +- ...haka_1_1media_1_1mp4_1_1Movie-members.html | 2 +- ...sshaka_1_1media_1_1AesCryptor-members.html | 2 +- docs/d2/d6f/classBandwidthEstimator.html | 2 +- ...ctshaka_1_1media_1_1mp4_1_1SchemeInfo.html | 2 +- ...ssshaka_1_1DashIopMpdNotifier-members.html | 2 +- .../d7b/simple__mpd__notifier_8cc_source.html | 2 +- ...ac__audio__specific__config_8h_source.html | 2 +- ...haka_1_1media_1_1mp4_1_1CuePayloadBox.html | 2 +- ...ls__notify__muxer__listener_8h_source.html | 2 +- ...media_1_1mp4_1_1CuePayloadBox-members.html | 2 +- docs/d2/d92/box__reader_8h_source.html | 2 +- ...ssshaka_1_1media_1_1mp2t_1_1PesPacket.html | 2 +- ...uctshaka_1_1media_1_1StreamDescriptor.html | 2 +- docs/d2/da6/threaded__io__file_8h_source.html | 2 +- docs/d2/da8/mp4_2segmenter_8cc_source.html | 913 +++++++++--------- ...haka_1_1media_1_1BufferWriter-members.html | 2 +- ...assshaka_1_1MockAdaptationSet-members.html | 2 +- docs/d2/dae/webm__muxer_8cc_source.html | 231 +++-- ...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 | 2 +- .../structshaka_1_1MpdOptions-members.html | 2 +- ...program__map__table__writer_8h_source.html | 2 +- ...a_1_1media_1_1mp4_1_1EditList-members.html | 2 +- ...a_1_1media_1_1ChunkingOptions-members.html | 2 +- ...edia_1_1webm_1_1MultiSegmentSegmenter.html | 6 +- docs/d2/dd6/mkv__writer_8h_source.html | 2 +- ...a_1_1media_1_1ChunkingHandler-members.html | 13 +- ...lassshaka_1_1media_1_1WebMMediaParser.html | 2 +- ...haka_1_1media_1_1mp2t_1_1TsSectionPmt.html | 2 +- docs/d2/de6/packager__main_8cc_source.html | 834 ++++++++-------- ...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 | 2 +- docs/d2/deb/es__parser_8h_source.html | 2 +- ...media_1_1mp2t_1_1TsSectionPes-members.html | 2 +- .../pes__packet__generator_8cc_source.html | 2 +- ...a_1_1SegmentTestBase_1_1ClusterParser.html | 2 +- ...ssshaka_1_1media_1_1MkvWriter-members.html | 2 +- docs/d2/dfd/adts__header_8h_source.html | 2 +- ..._1_1media_1_1mp4_1_1BoxReader-members.html | 2 +- ..._1_1mp4_1_1SyncSampleIterator-members.html | 2 +- .../classshaka_1_1media_1_1MediaParser.html | 2 +- ...sshaka_1_1media_1_1mp2t_1_1AdtsHeader.html | 2 +- ..._1media_1_1LibcryptoThreading-members.html | 2 +- ...media_1_1mp2t_1_1TsSectionPat-members.html | 2 +- docs/d3/d19/io__cache_8h_source.html | 2 +- ...deo__slice__header__parser_8cc_source.html | 2 +- ...uctshaka_1_1media_1_1mp4_1_1PrivFrame.html | 2 +- ...sshaka_1_1media_1_1LibcryptoThreading.html | 2 +- docs/d3/d56/decrypt__config_8cc_source.html | 2 +- docs/d3/d61/classshaka_1_1media_1_1File.html | 2 +- .../d3/d62/continuity__counter_8h_source.html | 2 +- docs/d3/d62/rcheck_8h_source.html | 2 +- ...1media_1_1mp4_1_1DataEntryUrl-members.html | 2 +- ...lassshaka_1_1media_1_1WebMVideoClient.html | 2 +- .../d3/d6b/fixed__key__source_8cc_source.html | 2 +- ...lassshaka_1_1media_1_1mp2t_1_1TsMuxer.html | 87 +- ...classshaka_1_1media_1_1mp2t_1_1TsMuxer.png | Bin 703 -> 1016 bytes docs/d3/d72/fixed__key__source_8h_source.html | 2 +- ...ssshaka_1_1media_1_1webm_1_1WebMMuxer.html | 87 +- ...assshaka_1_1media_1_1webm_1_1WebMMuxer.png | Bin 737 -> 1076 bytes .../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 | 42 +- .../d9c/encryption__handler_8cc_source.html | 2 +- docs/d3/da0/ec3__audio__util_8h_source.html | 2 +- ...dia_1_1webm_1_1SingleSegmentSegmenter.html | 2 +- ...ctshaka_1_1media_1_1mp4_1_1SchemeType.html | 2 +- .../structshaka_1_1media_1_1mp4_1_1ID3v2.html | 2 +- ...1_1media_1_1EncryptionOptions-members.html | 2 +- ..._1_1media_1_1WebMWebVTTParser-members.html | 2 +- .../structshaka_1_1media_1_1mp4_1_1Track.html | 2 +- docs/d3/db6/webm__parser_8cc_source.html | 2 +- docs/d3/dbc/seek__head_8cc_source.html | 2 +- docs/d3/dbe/demuxer_8cc_source.html | 546 ++++++----- ...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 | 385 ++++---- ...edia_1_1mp4_1_1MP4MediaParser-members.html | 2 +- .../d0b/classshaka_1_1media_1_1TextTrack.html | 2 +- ...1_1media_1_1WebVttMediaParser-members.html | 2 +- ...haka_1_1media_1_1mp4_1_1EditListEntry.html | 2 +- ...lassshaka_1_1media_1_1AesCbcEncryptor.html | 2 +- ...ia_1_1mp4_1_1ChunkLargeOffset-members.html | 2 +- ...haka_1_1media_1_1mp4_1_1ID3v2-members.html | 2 +- ...1media_1_1mp4_1_1WebVTTSourceLabelBox.html | 2 +- docs/d4/d37/io__cache_8cc_source.html | 2 +- ...ructshaka_1_1media_1_1H264Sps-members.html | 2 +- ...lassshaka_1_1media_1_1ChunkingHandler.html | 7 +- ...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 | 2 +- ...tshaka_1_1media_1_1mp4_1_1EC3Specific.html | 2 +- .../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 | 2 +- ...a_1_1media_1_1mp4_1_1SampleEncryption.html | 2 +- ...a_1_1mp4_1_1CompactSampleSize-members.html | 2 +- docs/d4/db2/cluster__builder_8h_source.html | 2 +- .../db4/classshaka_1_1MpdNotifierFactory.html | 2 +- ...tshaka_1_1media_1_1mp4_1_1MediaHeader.html | 2 +- ...a_1_1mp2t_1_1AacProgramMapTableWriter.html | 2 +- docs/d4/dd3/bit__reader_8h_source.html | 2 +- ...ka_1_1media_1_1mp4_1_1FullBox-members.html | 2 +- ...sshaka_1_1media_1_1MemoryFile-members.html | 2 +- docs/d4/dde/webvtt__util_8h_source.html | 2 +- ...haka_1_1media_1_1mp4_1_1DataReference.html | 2 +- ...assshaka_1_1media_1_1ProgressListener.html | 2 +- ...VodMediaInfoDumpMuxerListener-members.html | 2 +- docs/d4/dec/hls__flags_8h_source.html | 2 +- docs/d4/df5/request__signer_8cc_source.html | 2 +- .../webvtt__sample__converter_8cc_source.html | 2 +- ...shaka_1_1media_1_1mp4_1_1SegmentIndex.html | 2 +- ...tshaka_1_1media_1_1mp4_1_1AC3Specific.html | 2 +- .../dfd/structshaka_1_1media_1_1H265Sps.html | 2 +- .../dff/webm__media__parser_8cc_source.html | 2 +- ...ructshaka_1_1media_1_1mp4_1_1FileType.html | 2 +- ...aka_1_1media_1_1mp4_1_1OriginalFormat.html | 2 +- ...ructshaka_1_1media_1_1mp4_1_1CueIDBox.html | 2 +- ...ka_1_1media_1_1WebMInfoParser-members.html | 2 +- ..._1_1mp4_1_1ElementaryStreamDescriptor.html | 2 +- .../classshaka_1_1media_1_1ESDescriptor.html | 2 +- .../producer__consumer__queue_8h_source.html | 2 +- docs/d5/d1a/ts__section_8h_source.html | 2 +- ...ia_1_1mp4_1_1TrackRunIterator-members.html | 2 +- docs/d5/d27/key__fetcher_8cc_source.html | 2 +- ...aka_1_1media_1_1ProducerConsumerQueue.html | 2 +- ...haka_1_1media_1_1mp4_1_1Media-members.html | 2 +- ...2single__segment__segmenter_8h_source.html | 2 +- ...media_1_1mp2t_1_1TsSectionPsi-members.html | 2 +- docs/d5/d4d/box_8cc_source.html | 2 +- docs/d5/d52/ts__section__pes_8h_source.html | 2 +- ...ampleAuxiliaryInformationSize-members.html | 2 +- ...esentationStateChangeListener-members.html | 2 +- ...ssshaka_1_1MockRepresentation-members.html | 2 +- .../d5c/continuity__counter_8cc_source.html | 2 +- ...haka_1_1media_1_1mp2t_1_1EsParserH265.html | 2 +- docs/d5/d63/network__util_8cc_source.html | 2 +- ...media_1_1NalUnitToByteStreamConverter.html | 2 +- docs/d5/d6f/vlog__flags_8cc_source.html | 2 +- ...der__configuration__record_8cc_source.html | 2 +- docs/d5/d7b/box__definitions_8h_source.html | 2 +- ...a_1_1media_1_1mp4_1_1MediaInformation.html | 2 +- .../d89/widevine__key__source_8cc_source.html | 2 +- ..._1_1media_1_1mp4_1_1CompositionOffset.html | 2 +- .../d8f/webm__cluster__parser_8cc_source.html | 2 +- docs/d5/d91/es__parser__adts_8cc_source.html | 2 +- ...media_1_1mp4_1_1EditListEntry-members.html | 2 +- docs/d5/d98/encryptor_8cc_source.html | 2 +- ...odec__configuration__record_8h_source.html | 2 +- ...H265ReferencePictureListModifications.html | 2 +- docs/d5/da4/aes__encryptor_8cc_source.html | 2 +- ...a_1_1media_1_1H265ReferencePictureSet.html | 2 +- .../classshaka_1_1media_1_1StreamInfo.html | 2 +- ...haka_1_1media_1_1mp2t_1_1EsParserH264.html | 2 +- docs/d5/dba/ts__packet_8cc_source.html | 2 +- .../dc1/webm__webvtt__parser_8cc_source.html | 2 +- ...media_1_1mp4_1_1TrackFragment-members.html | 2 +- ...4_1_1SampleAuxiliaryInformationOffset.html | 2 +- docs/d5/dcf/rsa__key_8h_source.html | 2 +- docs/d5/dda/ts__section__psi_8h_source.html | 2 +- docs/d5/de0/bit__reader_8cc_source.html | 2 +- ..._1media_1_1mp2t_1_1PesPacketGenerator.html | 2 +- ...assshaka_1_1media_1_1WebMParserClient.html | 2 +- ...der__configuration__record_8cc_source.html | 2 +- ...mp4_1_1WebVTTConfigurationBox-members.html | 2 +- docs/d5/def/ts__section__pmt_8h_source.html | 2 +- ...ka_1_1media_1_1HlsNotifyMuxerListener.html | 2 +- ...shaka_1_1media_1_1MediaParser-members.html | 2 +- docs/d5/dfc/file_8cc_source.html | 2 +- ...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 | 2 +- docs/d6/d17/es__parser__h264_8cc_source.html | 2 +- ...tshaka_1_1media_1_1mp4_1_1MovieHeader.html | 2 +- .../ts__packet__writer__util_8cc_source.html | 2 +- ...1_1media_1_1VideoStreamInfoParameters.html | 2 +- .../d2e/mpd__notifier__util_8cc_source.html | 2 +- ...ssshaka_1_1media_1_1TextTrack-members.html | 2 +- .../webm__content__encodings_8cc_source.html | 2 +- .../d3b/chunk__info__iterator_8cc_source.html | 2 +- .../encrypting__fragmenter_8cc_source.html | 2 +- ...ssshaka_1_1media_1_1EncryptionHandler.html | 7 +- ...2multi__segment__segmenter_8cc_source.html | 173 ++-- 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 | 2 +- .../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 | 2 +- ...shaka_1_1media_1_1MediaStream-members.html | 117 --- ...lassshaka_1_1media_1_1VideoStreamInfo.html | 2 +- ..._1_1VideoStreamInfoParameters-members.html | 2 +- ...sParserH26x_1_1VideoSliceInfo-members.html | 2 +- ...media_1_1mp2t_1_1EsParserH26x-members.html | 2 +- docs/d6/dc8/mkv__writer_8cc_source.html | 2 +- ...media_1_1mp4_1_1SampleEncryptionEntry.html | 2 +- ...ssshaka_1_1media_1_1VP9Parser-members.html | 2 +- ...ia_1_1mp4_1_1SegmentReference-members.html | 2 +- ...haka_1_1media_1_1mp2t_1_1EsParserAdts.html | 2 +- ...tructshaka_1_1media_1_1H264SEIMessage.html | 2 +- ...1_1media_1_1H265VuiParameters-members.html | 2 +- ...1_1media_1_1mp4_1_1CueTimeBox-members.html | 2 +- ...haka_1_1media_1_1VPxFrameInfo-members.html | 2 +- docs/d6/de8/local__file_8cc_source.html | 2 +- docs/d6/de8/network__util_8h_source.html | 2 +- docs/d6/de9/ts__segmenter_8cc_source.html | 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 | 2 +- ...xer__listener__test__helper_8h_source.html | 2 +- docs/d7/d12/media__parser_8h_source.html | 2 +- docs/d7/d15/mpd__notifier_8h_source.html | 2 +- ...ia_1_1mp4_1_1VideoSampleEntry-members.html | 2 +- .../d22/libcrypto__threading_8h_source.html | 2 +- ...1_1media_1_1mp4_1_1SyncSampleIterator.html | 2 +- ...ructshaka_1_1media_1_1H265Sps-members.html | 2 +- ...p4_1_1CompositionTimeToSample-members.html | 2 +- ...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 | 2 +- .../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 | 2 +- ..._1H265SliceHeader_1_1LongTermPicsInfo.html | 2 +- docs/d7/d9d/progress__listener_8h_source.html | 2 +- .../da4/track__run__iterator_8h_source.html | 2 +- ...uctshaka_1_1media_1_1mp4_1_1MediaData.html | 2 +- docs/d7/db0/mpd__writer_8h_source.html | 2 +- ...media_1_1mp4_1_1SampleToChunk-members.html | 2 +- ...ka_1_1media_1_1mp4_1_1TextSampleEntry.html | 2 +- docs/d7/dc6/byte__queue_8h_source.html | 2 +- .../d7/dd0/mpd__notifier__util_8h_source.html | 2 +- docs/d7/dd4/request__signer_8h_source.html | 2 +- ...aka_1_1media_1_1mp4_1_1MP4MediaParser.html | 2 +- docs/d7/dd6/key__source_8cc_source.html | 2 +- .../dda/classshaka_1_1media_1_1ByteQueue.html | 2 +- ...assshaka_1_1media_1_1RsaRequestSigner.html | 2 +- ...classshaka_1_1media_1_1HttpKeyFetcher.html | 2 +- ...1_1media_1_1mp4_1_1SampleToGroupEntry.html | 2 +- ...to__unit__stream__converter_8h_source.html | 2 +- docs/d7/dee/mpd__generator_8cc_source.html | 2 +- .../d7/def/mp4__media__parser_8cc_source.html | 2 +- docs/d7/df9/byte__queue_8cc_source.html | 2 +- ...edia_1_1H264ByteToUnitStreamConverter.html | 2 +- ...1_1media_1_1WebMClusterParser-members.html | 2 +- ..._1_1media_1_1mp2t_1_1TsWriter-members.html | 2 +- ..._1media_1_1mp4_1_1MovieHeader-members.html | 2 +- docs/d8/d0d/media__sample_8cc_source.html | 2 +- ...shaka_1_1media_1_1mp4_1_1DecodingTime.html | 2 +- ..._1_1media_1_1mp4_1_1PrivFrame-members.html | 2 +- ...ssshaka_1_1media_1_1BitReader-members.html | 2 +- .../d14/classshaka_1_1media_1_1VP8Parser.html | 2 +- ...haka_1_1media_1_1MuxerOptions-members.html | 2 +- .../d19/bandwidth__estimator_8h_source.html | 2 +- ...edia_1_1mp4_1_1WebVTTConfigurationBox.html | 2 +- ...ka_1_1media_1_1SubsampleEntry-members.html | 2 +- docs/d8/d28/es__parser__h265_8h_source.html | 2 +- ..._content__encodings__client_8h_source.html | 2 +- ...1_1media_1_1StreamDescriptorCompareFn.html | 2 +- docs/d8/d4d/aes__decryptor_8h_source.html | 2 +- ...a_1_1media_1_1mp4_1_1AudioSampleEntry.html | 2 +- .../classshaka_1_1media_1_1MediaStream.html | 233 ----- ...ka_1_1media_1_1ClusterBuilder-members.html | 2 +- ...ka_1_1media_1_1mp4_1_1DataInformation.html | 2 +- ...a_1_1media_1_1mp4_1_1Metadata-members.html | 2 +- .../classshaka_1_1media_1_1TracksBuilder.html | 2 +- ...assshaka_1_1media_1_1WebMTracksParser.html | 2 +- ...1media_1_1mp4_1_1MovieExtends-members.html | 2 +- docs/d8/d8e/classshaka_1_1AdaptationSet.html | 2 +- ...a_1_1media_1_1AesCtrEncryptor-members.html | 2 +- ..._1_1media_1_1AesRequestSigner-members.html | 2 +- ...media_1_1H264DecRefPicMarking-members.html | 2 +- ...1_1mp4_1_1SubtitleMediaHeader-members.html | 2 +- docs/d8/d94/adts__constants_8cc_source.html | 2 +- docs/d8/d94/pes__packet_8h_source.html | 2 +- ..._1mp4_1_1VTTAdditionalTextBox-members.html | 2 +- docs/d8/d9a/fragmenter_8cc_source.html | 2 +- .../d9c/webm__tracks__parser_8cc_source.html | 2 +- docs/d8/d9f/udp__file_8h_source.html | 2 +- ...a_1_1media_1_1DecryptorSource-members.html | 2 +- ...1_1media_1_1mp4_1_1SampleSize-members.html | 2 +- ...sshaka_1_1media_1_1NaluReader-members.html | 2 +- docs/d8/daa/stream__info_8h_source.html | 2 +- docs/d8/daf/namespaceshaka.html | 2 +- ...media_1_1mp4_1_1MultiSegmentSegmenter.html | 14 +- ...1_1WebMContentEncodingsClient-members.html | 2 +- ...p2t_1_1EsParserH26x_1_1VideoSliceInfo.html | 2 +- ...ctshaka_1_1media_1_1mp4_1_1CueTimeBox.html | 2 +- docs/d8/dca/ts__writer_8h_source.html | 98 +- ...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 | 4 +- ...a_1_1media_1_1SegmentTestBase-members.html | 2 +- ...to__byte__stream__converter_8h_source.html | 2 +- ...media_1_1OnMediaEndParameters-members.html | 2 +- ...2single__segment__segmenter_8h_source.html | 6 +- 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 +- .../key__rotation__fragmenter_8cc_source.html | 2 +- ...haka_1_1media_1_1mp4_1_1MovieFragment.html | 2 +- ...haka_1_1media_1_1AesEncryptor-members.html | 2 +- ...assshaka_1_1media_1_1mp4_1_1Segmenter.html | 31 +- ...aka_1_1media_1_1TracksBuilder-members.html | 2 +- .../classshaka_1_1media_1_1File-members.html | 2 +- .../webm__content__encodings_8h_source.html | 2 +- ...aka_1_1media_1_1mp4_1_1VTTEmptyCueBox.html | 2 +- ...aka_1_1media_1_1mp4_1_1CueSourceIDBox.html | 2 +- ..._1_1media_1_1mp4_1_1ChunkInfoIterator.html | 2 +- ...media_1_1mp2t_1_1EsParserAdts-members.html | 2 +- ...ctshaka_1_1media_1_1H265VuiParameters.html | 2 +- ...a_1_1media_1_1H264SliceHeader-members.html | 2 +- docs/d9/d76/ts__muxer_8cc_source.html | 82 +- ...aka_1_1media_1_1ClosureThread-members.html | 2 +- docs/d9/d86/limits_8h_source.html | 2 +- ..._1media_1_1WebMContentEncodingsClient.html | 2 +- ...assshaka_1_1media_1_1AesRequestSigner.html | 2 +- ...1ProtectionSystemSpecificInfo-members.html | 2 +- docs/d9/d90/text__track_8h_source.html | 2 +- docs/d9/d93/media__stream_8h_source.html | 178 ---- 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 | 6 +- ..._1_1CompositionOffsetIterator-members.html | 2 +- ...ntent__protection__element_8cc_source.html | 2 +- docs/d9/db9/muxer_8cc_source.html | 190 ++-- .../classshaka_1_1media_1_1MemoryFile.html | 2 +- ...haka_1_1media_1_1BufferReader-members.html | 2 +- ...1mp4_1_1SampleEncryptionEntry-members.html | 2 +- docs/d9/dc8/webm__constants_8cc_source.html | 2 +- .../d9/dcc/webm__video__client_8h_source.html | 2 +- .../muxer__listener__internal_8cc_source.html | 2 +- .../de6/classshaka_1_1media_1_1LocalFile.html | 2 +- ...ka_1_1media_1_1FixedKeySource-members.html | 2 +- ...c__audio__specific__config_8cc_source.html | 2 +- ...p4_1_1TrackFragmentDecodeTime-members.html | 2 +- ...lassshaka_1_1media_1_1OffsetByteQueue.html | 2 +- ..._1_1media_1_1H264ModificationOfPicNum.html | 2 +- .../d04/audio__stream__info_8cc_source.html | 2 +- ...assshaka_1_1media_1_1mp2t_1_1EsParser.html | 2 +- ...ructshaka_1_1media_1_1mp4_1_1Language.html | 2 +- ...ssshaka_1_1media_1_1mp2t_1_1TsSection.html | 2 +- docs/da/d1d/udp__options_8cc_source.html | 2 +- .../key__rotation__fragmenter_8h_source.html | 2 +- ...haka_1_1media_1_1mp2t_1_1EsParserH26x.html | 2 +- docs/da/d23/ts__muxer_8h_source.html | 38 +- docs/da/d24/h265__parser_8h_source.html | 2 +- docs/da/d2a/text__stream__info_8h_source.html | 2 +- ...1_1media_1_1webm_1_1WebMMuxer-members.html | 51 +- ...ia_1_1mp4_1_1PixelAspectRatio-members.html | 2 +- ..._2multi__segment__segmenter_8h_source.html | 6 +- ...ructshaka_1_1ContentProtectionElement.html | 2 +- ...lassshaka_1_1media_1_1AudioStreamInfo.html | 2 +- ...1_1media_1_1mp4_1_1MovieExtendsHeader.html | 2 +- docs/da/d53/es__parser__h265_8cc_source.html | 2 +- ..._1_1media_1_1mp4_1_1CompactSampleSize.html | 2 +- .../d5c/widevine__key__source_8h_source.html | 2 +- ...1_1H264VideoSliceHeaderParser-members.html | 2 +- ...mp4_1_1SingleSegmentSegmenter-members.html | 6 +- ..._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 | 765 ++++++++------- ...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 | 2 +- ...ia_1_1mp2t_1_1Mp2tMediaParser-members.html | 2 +- ...media_1_1H264SEIRecoveryPoint-members.html | 2 +- ...ssshaka_1_1media_1_1WidevineKeySource.html | 2 +- ...a_1_1mp4_1_1SampleDescription-members.html | 2 +- .../da/de2/mock__mpd__builder_8cc_source.html | 2 +- ...ssshaka_1_1media_1_1WebMClusterParser.html | 2 +- ...1_1media_1_1mp4_1_1SchemeType-members.html | 2 +- ...a_1_1media_1_1AudioStreamInfo-members.html | 2 +- ...1media_1_1mp4_1_1ProtectionSchemeInfo.html | 2 +- ..._1media_1_1H264VideoSliceHeaderParser.html | 2 +- docs/da/df4/aes__decryptor_8cc_source.html | 2 +- ..._1_1media_1_1mp4_1_1SampleDescription.html | 2 +- ...1_1media_1_1AesPatternCryptor-members.html | 2 +- .../classshaka_1_1media_1_1MediaHandler.html | 20 +- .../classshaka_1_1media_1_1MediaHandler.png | Bin 1102 -> 2806 bytes ...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 | 2 +- ...lassshaka_1_1media_1_1mp4_1_1MP4Muxer.html | 87 +- ...classshaka_1_1media_1_1mp4_1_1MP4Muxer.png | Bin 724 -> 1042 bytes ...to__unit__stream__converter_8h_source.html | 2 +- .../d31/track__run__iterator_8cc_source.html | 2 +- ...1_1mp2t_1_1PesPacketGenerator-members.html | 2 +- ...dia_1_1VideoSliceHeaderParser-members.html | 2 +- ...pd__notify__muxer__listener_8h_source.html | 2 +- .../d4b/classshaka_1_1MockAdaptationSet.html | 2 +- ...a_1_1mp4_1_1CompositionOffsetIterator.html | 2 +- .../db/d51/mp2t__media__parser_8h_source.html | 2 +- ..._single__segment__segmenter_8h_source.html | 2 +- .../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 | 2 +- ...TwoPassSingleSegmentSegmenter-members.html | 2 +- ..._1_1mp2t_1_1ContinuityCounter-members.html | 2 +- docs/db/d7e/muxer__options_8cc_source.html | 2 +- ...dia_1_1AACAudioSpecificConfig-members.html | 2 +- .../classshaka_1_1media_1_1NaluReader.html | 2 +- docs/db/d8f/mp4__muxer_8h_source.html | 82 +- ...classshaka_1_1media_1_1ClusterBuilder.html | 2 +- ...ssshaka_1_1media_1_1mp4_1_1Fragmenter.html | 2 +- ...a_1_1media_1_1mp4_1_1ChunkLargeOffset.html | 2 +- docs/db/d96/wvm__media__parser_8h_source.html | 2 +- .../da4/classBandwidthEstimator-members.html | 2 +- docs/db/da6/memory__file_8h_source.html | 2 +- ...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 +- ...1_1media_1_1webm_1_1Encryptor-members.html | 2 +- docs/db/dcd/classshaka_1_1MpdWriter.html | 2 +- ..._1media_1_1mp4_1_1DTSSpecific-members.html | 2 +- ...edia_1_1VodMediaInfoDumpMuxerListener.html | 2 +- .../dd2/chunk__info__iterator_8h_source.html | 2 +- .../dd9/sync__sample__iterator_8h_source.html | 2 +- docs/db/dde/h265__parser_8cc_source.html | 2 +- .../audio__timestamp__helper_8cc_source.html | 2 +- docs/db/dee/pes__packet_8cc_source.html | 2 +- ...a_1_1media_1_1H265SliceHeader-members.html | 2 +- ...lassshaka_1_1media_1_1Cluster-members.html | 2 +- docs/db/df6/muxer_8h_source.html | 220 +++-- ...edia_1_1H265ByteToUnitStreamConverter.html | 2 +- docs/db/dfb/mpd__utils_8cc_source.html | 2 +- ...d__notify__muxer__listener_8cc_source.html | 2 +- ..._1_1media_1_1mp4_1_1ChunkInfo-members.html | 2 +- ...lassshaka_1_1media_1_1IoCache-members.html | 2 +- ...edia_1_1mp2t_1_1ProgramMapTableWriter.html | 2 +- ...sshaka_1_1media_1_1StreamInfo-members.html | 2 +- ...haka_1_1media_1_1ESDescriptor-members.html | 2 +- .../d16/classshaka_1_1media_1_1SeekHead.html | 2 +- ...aka_1_1media_1_1wvm_1_1WvmMediaParser.html | 2 +- ..._1mp4_1_1ProtectionSchemeInfo-members.html | 2 +- docs/dc/d19/box_8h_source.html | 2 +- .../dash__iop__mpd__notifier_8cc_source.html | 2 +- ...ed__key__encryption__flags_8cc_source.html | 2 +- .../d3c/webm__cluster__parser_8h_source.html | 2 +- docs/dc/d3f/key__source_8h_source.html | 2 +- .../classshaka_1_1xml_1_1XmlNode-members.html | 2 +- .../classshaka_1_1media_1_1BufferWriter.html | 2 +- ...rotectionSystemSpecificHeader-members.html | 2 +- ..._1media_1_1mp4_1_1TrackHeader-members.html | 2 +- ...o__unit__stream__converter_8cc_source.html | 2 +- .../decoding__time__iterator_8h_source.html | 2 +- docs/dc/d53/webm_2segmenter_8cc_source.html | 897 +++++++++-------- ...haka_1_1media_1_1H264DecRefPicMarking.html | 2 +- .../dc/d58/webm__media__parser_8h_source.html | 2 +- .../dc/d5c/classshaka_1_1MockMpdNotifier.html | 2 +- ...edia_1_1mp4_1_1CueSettingsBox-members.html | 2 +- ...1_1media_1_1webm_1_1Segmenter-members.html | 2 +- ...1_1media_1_1mp2t_1_1TsSection-members.html | 2 +- ...ssshaka_1_1media_1_1MockMuxerListener.html | 2 +- docs/dc/d7b/closure__thread_8cc_source.html | 2 +- docs/dc/d7b/h264__parser_8cc_source.html | 2 +- ...1_1ElementaryStreamDescriptor-members.html | 2 +- ..._1media_1_1mp4_1_1MovieFragmentHeader.html | 2 +- ...tshaka_1_1media_1_1mp4_1_1DTSSpecific.html | 2 +- docs/dc/da1/classshaka_1_1MpdBuilder.html | 2 +- ...lassshaka_1_1media_1_1ContentEncoding.html | 2 +- ...tshaka_1_1media_1_1FileCloser-members.html | 2 +- docs/dc/dbf/box__buffer_8h_source.html | 2 +- ...1xml_1_1RepresentationXmlNode-members.html | 2 +- ...classshaka_1_1media_1_1WebMListParser.html | 2 +- docs/dc/dd9/rsa__key_8cc_source.html | 2 +- .../structshaka_1_1media_1_1mp4_1_1Media.html | 2 +- docs/dc/de1/structshaka_1_1SegmentInfo.html | 2 +- ...1_1media_1_1mp4_1_1Fragmenter-members.html | 2 +- ...to__unit__stream__converter_8h_source.html | 2 +- docs/dc/dec/ts__section__pmt_8cc_source.html | 2 +- .../classshaka_1_1media_1_1ClosureThread.html | 2 +- ...ssshaka_1_1media_1_1WebVttMediaParser.html | 2 +- ...1media_1_1mp4_1_1EncryptingFragmenter.html | 2 +- ...ebm_1_1SingleSegmentSegmenter-members.html | 2 +- ...ia_1_1mp4_1_1TrackFragmentRun-members.html | 2 +- docs/dc/df8/closure__thread_8h_source.html | 2 +- ...tshaka_1_1media_1_1mp4_1_1ChunkOffset.html | 2 +- docs/dd/d11/mpd__builder_8cc_source.html | 2 +- docs/dd/d12/mpd__writer_8cc_source.html | 2 +- ...mp4_1_1SampleAuxiliaryInformationSize.html | 2 +- .../d17/classshaka_1_1media_1_1Demuxer.html | 230 ++++- .../dd/d17/classshaka_1_1media_1_1Demuxer.png | Bin 0 -> 687 bytes docs/dd/d18/es__parser__adts_8h_source.html | 2 +- .../d19/video__stream__info_8cc_source.html | 2 +- .../dd/d30/wvm__media__parser_8cc_source.html | 2 +- docs/dd/d3b/mp4_2segmenter_8h_source.html | 143 ++- ...ctshaka_1_1media_1_1mp4_1_1SyncSample.html | 2 +- docs/dd/d42/encryptor_8h_source.html | 2 +- docs/dd/d46/webm__parser_8h_source.html | 2 +- ...media_1_1mp4_1_1MovieFragment-members.html | 2 +- ...m_1_1DemuxStreamIdMediaSample-members.html | 2 +- ...widevine__encryption__flags_8h_source.html | 2 +- ...media_1_1mp2t_1_1EsParserH265-members.html | 2 +- ...1_1media_1_1mp4_1_1SchemeInfo-members.html | 2 +- ...1_1media_1_1mp4_1_1SyncSample-members.html | 2 +- docs/dd/d65/vp8__parser_8h_source.html | 2 +- ...o__unit__stream__converter_8cc_source.html | 2 +- ...1_1H265VideoSliceHeaderParser-members.html | 2 +- ...a_1_1media_1_1mp4_1_1PixelAspectRatio.html | 2 +- .../classshaka_1_1media_1_1MuxerListener.html | 2 +- .../d7c/classshaka_1_1media_1_1IoCache.html | 2 +- docs/dd/d80/media__sample_8h_source.html | 2 +- docs/dd/d87/memory__file_8cc_source.html | 2 +- .../d88/pes__packet__generator_8h_source.html | 2 +- docs/dd/d8c/file__test__util_8h_source.html | 2 +- ...1media_1_1mp4_1_1SegmentIndex-members.html | 2 +- .../ts__packet__writer__util_8h_source.html | 2 +- .../audio__timestamp__helper_8h_source.html | 2 +- ...a_1_1media_1_1mp4_1_1SegmentReference.html | 2 +- .../classshaka_1_1MpdNotifier-members.html | 2 +- .../da4/structshaka_1_1xml_1_1XmlDeleter.html | 2 +- ...webm_1_1TwoPassSingleSegmentSegmenter.html | 2 +- ...info__dump__muxer__listener_8h_source.html | 2 +- docs/dd/dab/webm__muxer_8h_source.html | 40 +- ..._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 | 2 +- ...structshaka_1_1media_1_1EncryptionKey.html | 2 +- ...dia_1_1mp4_1_1TrackEncryption-members.html | 2 +- .../dbf/webm__webvtt__parser_8h_source.html | 2 +- ...tructshaka_1_1media_1_1mp4_1_1FullBox.html | 2 +- ...edia_1_1ProducerConsumerQueue-members.html | 2 +- ...ssshaka_1_1media_1_1webm_1_1Segmenter.html | 12 +- ...edia_1_1mp4_1_1OriginalFormat-members.html | 2 +- docs/dd/dce/structshaka_1_1media_1_1Cue.html | 2 +- docs/dd/dd2/buffer__writer_8h_source.html | 2 +- docs/dd/dd3/buffer__writer_8cc_source.html | 2 +- ...a_1_1media_1_1WebMVideoClient-members.html | 2 +- .../dd8/mock__muxer__listener_8cc_source.html | 2 +- ...tshaka_1_1media_1_1mp4_1_1Box-members.html | 2 +- ...ka_1_1media_1_1VideoSliceHeaderParser.html | 2 +- ...ructshaka_1_1media_1_1H265Pps-members.html | 2 +- docs/dd/de7/xml__node_8h_source.html | 2 +- ...haka_1_1media_1_1MediaHandler-members.html | 11 +- docs/dd/dee/box__definitions_8cc_source.html | 2 +- ..._2multi__segment__segmenter_8h_source.html | 6 +- ...a_1_1media_1_1mp4_1_1TrackFragmentRun.html | 2 +- ...ructshaka_1_1media_1_1mp4_1_1Metadata.html | 2 +- docs/de/d0f/local__file_8h_source.html | 2 +- docs/de/d12/container__names_8h_source.html | 2 +- docs/de/d13/ts__writer_8cc_source.html | 2 +- docs/de/d15/media__stream_8cc_source.html | 220 ----- ...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 | 403 ++++---- .../d22/aes__pattern__cryptor_8cc_source.html | 2 +- ..._1_1mp2t_1_1H264ProgramMapTableWriter.html | 2 +- ...shaka_1_1media_1_1mp4_1_1TrackExtends.html | 2 +- ..._1_1media_1_1WebMTracksParser-members.html | 2 +- .../d33/structshaka_1_1media_1_1H265Pps.html | 2 +- .../de/d34/offset__byte__queue_8h_source.html | 2 +- ...o__unit__stream__converter_8cc_source.html | 2 +- docs/de/d3c/macros_8h_source.html | 2 +- docs/de/d3e/buffer__reader_8h_source.html | 2 +- ...sshaka_1_1media_1_1H264Parser-members.html | 2 +- ...1_1media_1_1mp2t_1_1PesPacket-members.html | 2 +- .../classshaka_1_1media_1_1DecryptConfig.html | 2 +- .../muxer__listener__internal_8h_source.html | 2 +- docs/de/d52/classshaka_1_1Representation.html | 2 +- ...a_1_1media_1_1mp4_1_1Language-members.html | 2 +- docs/de/d5b/adts__header_8cc_source.html | 2 +- docs/de/d5c/mpd__flags_8h_source.html | 2 +- ...mp2t_1_1ProgramMapTableWriter-members.html | 2 +- ...assshaka_1_1media_1_1mp2t_1_1TsWriter.html | 4 +- ..._1_1mp4_1_1SampleToGroupEntry-members.html | 2 +- docs/de/d6e/language__utils_8h_source.html | 2 +- .../de/d70/http__key__fetcher_8cc_source.html | 2 +- ...content__encodings__client_8cc_source.html | 2 +- docs/de/d7b/mp4__media__parser_8h_source.html | 2 +- ...haka_1_1media_1_1mp2t_1_1TsSectionPsi.html | 2 +- ...ox__definitions__comparison_8h_source.html | 2 +- ...ssshaka_1_1media_1_1LocalFile-members.html | 2 +- ...edia_1_1wvm_1_1PrevSampleData-members.html | 2 +- ...1_1mp4_1_1MovieFragmentHeader-members.html | 2 +- ...ssshaka_1_1media_1_1VP8Parser-members.html | 2 +- docs/de/da9/structshaka_1_1Element.html | 2 +- docs/de/dab/es__parser__h26x_8cc_source.html | 2 +- docs/de/dad/validate__flag_8cc_source.html | 2 +- ...lassshaka_1_1media_1_1TextTrackConfig.html | 2 +- .../classshaka_1_1media_1_1H26xBitReader.html | 2 +- docs/de/dbf/udp__options_8h_source.html | 2 +- docs/de/dc1/demuxer_8h_source.html | 204 ++-- .../classshaka_1_1media_1_1H265Parser.html | 2 +- ..._1mp4_1_1DecodingTimeToSample-members.html | 2 +- docs/de/dcb/ts__segmenter_8h_source.html | 203 ++-- .../dcc/mock__mpd__notifier_8cc_source.html | 2 +- docs/de/dcf/file__closer_8h_source.html | 2 +- ...ontent__protection__element_8h_source.html | 2 +- ...er__listener__test__helper_8cc_source.html | 2 +- .../classshaka_1_1media_1_1Muxer-members.html | 40 +- ...aka_1_1media_1_1WebVttSampleConverter.html | 2 +- ...shaka_1_1media_1_1mp2t_1_1TsSegmenter.html | 4 +- ..._1_1media_1_1mp4_1_1MediaData-members.html | 2 +- ..._1media_1_1DecoderConfigurationRecord.html | 2 +- ...a_1_1media_1_1mp4_1_1MP4Muxer-members.html | 51 +- .../de4/structshaka_1_1media_1_1H264Pps.html | 2 +- ...edia_1_1H26xByteToUnitStreamConverter.html | 2 +- ...1media_1_1mp4_1_1DecodingTimeToSample.html | 2 +- ...a_1_1media_1_1mp4_1_1TrackRunIterator.html | 2 +- ...ssshaka_1_1media_1_1webm_1_1Encryptor.html | 2 +- docs/de/dfa/muxer__listener_8h_source.html | 2 +- ...shaka_1_1media_1_1mp4_1_1OpusSpecific.html | 2 +- docs/de/dfd/stream__info_8cc_source.html | 2 +- .../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 | 2 +- .../classshaka_1_1AdaptationSet-members.html | 2 +- ...uctshaka_1_1media_1_1mp4_1_1ChunkInfo.html | 2 +- ..._1_1mp4_1_1MovieExtendsHeader-members.html | 2 +- .../classshaka_1_1media_1_1RequestSigner.html | 2 +- docs/df/d46/classshaka_1_1media_1_1Muxer.html | 168 +++- docs/df/d46/classshaka_1_1media_1_1Muxer.png | Bin 1372 -> 1904 bytes ...ka_1_1media_1_1ThreadedIoFile-members.html | 2 +- ...t_1_1AacProgramMapTableWriter-members.html | 2 +- ...aka_1_1media_1_1RsaPrivateKey-members.html | 2 +- ..._1mp4_1_1EncryptingFragmenter-members.html | 2 +- docs/df/d60/classshaka_1_1MockMpdBuilder.html | 2 +- ...mp4_1_1AudioRollRecoveryEntry-members.html | 2 +- .../classshaka_1_1media_1_1KeyFetcher.html | 2 +- .../classshaka_1_1MockMpdBuilder-members.html | 2 +- ...1media_1_1mp4_1_1OpusSpecific-members.html | 2 +- ...dia_1_1mp4_1_1CompositionTimeToSample.html | 2 +- ...haka_1_1media_1_1mp4_1_1TrackFragment.html | 2 +- .../df/d7d/webm__info__parser_8cc_source.html | 2 +- ...1_1DecoderConfigurationRecord-members.html | 2 +- .../classshaka_1_1media_1_1AesCryptor.html | 2 +- ...shaka_1_1media_1_1mp4_1_1DataEntryUrl.html | 2 +- docs/df/d8a/vp9__parser_8h_source.html | 2 +- docs/df/d8a/vpx__parser_8h_source.html | 2 +- ...1mp4_1_1MultiSegmentSegmenter-members.html | 6 +- docs/df/d8d/es__parser__h26x_8h_source.html | 2 +- ..._1_1RepresentationStateChangeListener.html | 2 +- docs/df/d96/xml__node_8cc_source.html | 2 +- ...dia_1_1mp4_1_1TrackFragmentDecodeTime.html | 2 +- ...shaka_1_1xml_1_1RepresentationXmlNode.html | 2 +- ..._1media_1_1mp4_1_1ChunkOffset-members.html | 2 +- ...a_1_1media_1_1mp4_1_1CueIDBox-members.html | 2 +- docs/df/dad/decrypt__config_8h_source.html | 2 +- ..._1_1media_1_1StreamDescriptor-members.html | 2 +- ...oder__configuration__record_8h_source.html | 2 +- docs/df/dd2/mpd__utils_8h_source.html | 2 +- ...ructshaka_1_1media_1_1H264Pps-members.html | 2 +- .../structshaka_1_1media_1_1MediaEvent.html | 2 +- docs/df/ddc/webm_2segmenter_8h_source.html | 20 +- docs/df/dde/ts__section__psi_8cc_source.html | 2 +- ...haka_1_1media_1_1H264SEIRecoveryPoint.html | 2 +- .../de3/text__track__config_8cc_source.html | 2 +- docs/df/de9/segment__info_8h_source.html | 2 +- ...a_1_1ContentProtectionElement-members.html | 2 +- ...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 | 6 +- .../dir_d422163b96683743ed3963d4aac17747.html | 2 +- .../dir_eeaeb49ac3913fcfb450d3ce9cc0141b.html | 2 +- .../dir_f7dcbe7025bbacfc4b9a7dff6ad41d72.html | 2 +- docs/files.html | 72 +- docs/functions.html | 9 +- docs/functions_b.html | 2 +- docs/functions_c.html | 7 +- docs/functions_d.html | 2 +- docs/functions_e.html | 2 +- docs/functions_enum.html | 2 +- docs/functions_eval.html | 2 +- docs/functions_f.html | 3 +- docs/functions_func.html | 9 +- docs/functions_func_b.html | 2 +- docs/functions_func_c.html | 5 +- docs/functions_func_d.html | 2 +- docs/functions_func_e.html | 2 +- docs/functions_func_f.html | 3 +- docs/functions_func_g.html | 2 +- docs/functions_func_h.html | 2 +- docs/functions_func_i.html | 9 +- docs/functions_func_k.html | 2 +- docs/functions_func_l.html | 2 +- docs/functions_func_m.html | 5 +- docs/functions_func_n.html | 2 +- docs/functions_func_o.html | 2 +- docs/functions_func_p.html | 11 +- docs/functions_func_r.html | 3 +- docs/functions_func_s.html | 14 +- docs/functions_func_t.html | 3 +- docs/functions_func_u.html | 2 +- docs/functions_func_v.html | 5 +- docs/functions_func_w.html | 2 +- docs/functions_func_x.html | 2 +- docs/functions_func_~.html | 2 +- docs/functions_g.html | 2 +- docs/functions_h.html | 2 +- docs/functions_i.html | 11 +- docs/functions_k.html | 2 +- docs/functions_l.html | 2 +- docs/functions_m.html | 5 +- docs/functions_n.html | 2 +- docs/functions_o.html | 2 +- docs/functions_p.html | 17 +- docs/functions_r.html | 3 +- docs/functions_s.html | 14 +- docs/functions_t.html | 3 +- docs/functions_type.html | 2 +- docs/functions_u.html | 2 +- docs/functions_v.html | 5 +- docs/functions_vars.html | 2 +- docs/functions_w.html | 2 +- docs/functions_x.html | 2 +- docs/functions_~.html | 2 +- docs/hierarchy.html | 355 ++++--- docs/index.html | 2 +- docs/namespacemembers.html | 2 +- docs/namespacemembers_func.html | 2 +- docs/namespaces.html | 2 +- docs/search/all_0.js | 7 +- docs/search/all_10.js | 13 +- docs/search/all_11.js | 2 +- docs/search/all_13.js | 2 +- docs/search/all_2.js | 1 - docs/search/all_5.js | 2 +- docs/search/all_8.js | 4 +- docs/search/all_b.js | 10 +- docs/search/all_e.js | 11 +- docs/search/all_f.js | 2 +- docs/search/classes_a.js | 1 - docs/search/classes_f.js | 2 +- docs/search/functions_0.js | 3 +- docs/search/functions_10.js | 5 +- docs/search/functions_11.js | 2 +- docs/search/functions_13.js | 2 +- docs/search/functions_2.js | 1 - docs/search/functions_5.js | 2 +- docs/search/functions_8.js | 4 +- docs/search/functions_b.js | 1 - docs/search/functions_e.js | 7 +- docs/search/functions_f.js | 2 +- 1019 files changed, 5865 insertions(+), 6125 deletions(-) delete mode 100644 docs/d6/db1/classshaka_1_1media_1_1MediaStream-members.html delete mode 100644 docs/d8/d5c/classshaka_1_1media_1_1MediaStream.html delete mode 100644 docs/d9/d93/media__stream_8h_source.html create mode 100644 docs/dd/d17/classshaka_1_1media_1_1Demuxer.png delete mode 100644 docs/de/d15/media__stream_8cc_source.html diff --git a/docs/annotated.html b/docs/annotated.html index 9a7293cfa4..43bebc1612 100644 --- a/docs/annotated.html +++ b/docs/annotated.html @@ -260,103 +260,102 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); ||oCMediaHandlerTestBase ||oCMediaParser ||oCMediaSampleClass to hold a media sample -||oCMediaStream -||oCMuxer -||oCMuxerOptionsThis structure contains the list of configuration options for Muxer -||oCOffsetByteQueue -||oCPlayReadyKeySourceA key source that uses playready for encryption -||oCProducerConsumerQueue -||oCProtectionSystemSpecificInfo -||oCRequestSignerAbstract class used for signature generation -||oCAesRequestSignerAesRequestSigner uses AES-CBC signing -||oCRsaRequestSignerRsaRequestSigner uses RSA-PSS signing -||oCRsaPrivateKeyRsa private key, used for message signing and decryption -||oCRsaPublicKeyRsa public key, used for signature verification and encryption -||oCStatus -||oCStreamInfoAbstract class holds stream information -||oCTextStreamInfo -||oCTextTrack -||oCTextTrackConfig -||oCVideoStreamInfoHolds video stream information -||oCWidevineKeySource -||oCChunkingOptions -||oCChunkingHandler -||oCAACAudioSpecificConfig -||oCAVCDecoderConfigurationRecordClass for parsing AVC decoder configuration record -||oCDecoderConfigurationRecord -||oCESDescriptor -||oCH264ByteToUnitStreamConverter -||oCH264Sps -||oCH264Pps -||oCH264ModificationOfPicNum -||oCH264WeightingFactors -||oCH264DecRefPicMarking -||oCH264SliceHeader -||oCH264SEIRecoveryPoint -||oCH264SEIMessage -||oCH264Parser -||oCH265ByteToUnitStreamConverter -||oCH265ReferencePictureSet -||oCH265VuiParameters -||oCH265Pps -||oCH265Sps -||oCH265ReferencePictureListModifications -||oCH265SliceHeader -|||\CLongTermPicsInfo -||oCH265Parser -||oCH26xBitReader -||oCH26xByteToUnitStreamConverterA base class that is used to convert H.26x byte streams to NAL unit streams -||oCHEVCDecoderConfigurationRecordClass for parsing HEVC decoder configuration record -||oCNalUnitToByteStreamConverter -||oCNalu -||oCNaluReader -||oCVideoSliceHeaderParser -||oCH264VideoSliceHeaderParser -||oCH265VideoSliceHeaderParser -||oCVP8Parser -||oCVP9ParserClass to parse a vp9 bit stream -||oCVPCodecConfigurationRecordClass for parsing or writing VP codec configuration record -||oCVPxFrameInfo -||oCVPxParser -||oCEncryptionOptionsThis structure defines encryption options -||oCEncryptionHandler -||oCHlsNotifyMuxerListenerMuxerListener that uses HlsNotifier -||oCMockMuxerListener -||oCMpdNotifyMuxerListener -||oCMuxerListener -||oCVideoStreamInfoParameters -||oCOnMediaEndParameters -||oCProgressListenerThis class listens to progress updates events -||oCVodMediaInfoDumpMuxerListener -||oCFileDefine an abstract file interface -||oCFileCloser -||oCIoCacheDeclaration of class which implements a thread-safe circular buffer -||oCLocalFileImplement LocalFile which deals with local storage -||oCMemoryFile -||oCThreadedIoFileDeclaration of class which implements a thread-safe circular buffer -||oCUdpFileImplements UdpFile, which receives UDP unicast and multicast streams -||oCUdpOptionsOptions parsed from UDP url string of the form: udp://ip:port[?options] -||oCCluster -||oCClusterBuilder -||oCMkvWriterAn implementation of IMkvWriter using our File type -||oCSeekHead -||oCSegmentTestBase -|||\CClusterParser -||oCTracksBuilder -||oCWebMAudioClientHelper class used to parse an Audio element inside a TrackEntry element -||oCWebMClusterParser -||oCContentEncoding -||oCWebMContentEncodingsClientParser for WebM ContentEncodings element -||oCWebMInfoParserParser for WebM Info element -||oCWebMMediaParser -||oCWebMParserClient -||oCWebMListParser -||oCWebMTracksParserParser for WebM Tracks element -||oCWebMVideoClientHelper class used to parse a Video element inside a TrackEntry element -||oCWebMWebVTTParser -||oCCue -||oCWebVttMediaParser -||\CWebVttSampleConverter +||oCMuxer +||oCMuxerOptionsThis structure contains the list of configuration options for Muxer +||oCOffsetByteQueue +||oCPlayReadyKeySourceA key source that uses playready for encryption +||oCProducerConsumerQueue +||oCProtectionSystemSpecificInfo +||oCRequestSignerAbstract class used for signature generation +||oCAesRequestSignerAesRequestSigner uses AES-CBC signing +||oCRsaRequestSignerRsaRequestSigner uses RSA-PSS signing +||oCRsaPrivateKeyRsa private key, used for message signing and decryption +||oCRsaPublicKeyRsa public key, used for signature verification and encryption +||oCStatus +||oCStreamInfoAbstract class holds stream information +||oCTextStreamInfo +||oCTextTrack +||oCTextTrackConfig +||oCVideoStreamInfoHolds video stream information +||oCWidevineKeySource +||oCChunkingOptions +||oCChunkingHandler +||oCAACAudioSpecificConfig +||oCAVCDecoderConfigurationRecordClass for parsing AVC decoder configuration record +||oCDecoderConfigurationRecord +||oCESDescriptor +||oCH264ByteToUnitStreamConverter +||oCH264Sps +||oCH264Pps +||oCH264ModificationOfPicNum +||oCH264WeightingFactors +||oCH264DecRefPicMarking +||oCH264SliceHeader +||oCH264SEIRecoveryPoint +||oCH264SEIMessage +||oCH264Parser +||oCH265ByteToUnitStreamConverter +||oCH265ReferencePictureSet +||oCH265VuiParameters +||oCH265Pps +||oCH265Sps +||oCH265ReferencePictureListModifications +||oCH265SliceHeader +|||\CLongTermPicsInfo +||oCH265Parser +||oCH26xBitReader +||oCH26xByteToUnitStreamConverterA base class that is used to convert H.26x byte streams to NAL unit streams +||oCHEVCDecoderConfigurationRecordClass for parsing HEVC decoder configuration record +||oCNalUnitToByteStreamConverter +||oCNalu +||oCNaluReader +||oCVideoSliceHeaderParser +||oCH264VideoSliceHeaderParser +||oCH265VideoSliceHeaderParser +||oCVP8Parser +||oCVP9ParserClass to parse a vp9 bit stream +||oCVPCodecConfigurationRecordClass for parsing or writing VP codec configuration record +||oCVPxFrameInfo +||oCVPxParser +||oCEncryptionOptionsThis structure defines encryption options +||oCEncryptionHandler +||oCHlsNotifyMuxerListenerMuxerListener that uses HlsNotifier +||oCMockMuxerListener +||oCMpdNotifyMuxerListener +||oCMuxerListener +||oCVideoStreamInfoParameters +||oCOnMediaEndParameters +||oCProgressListenerThis class listens to progress updates events +||oCVodMediaInfoDumpMuxerListener +||oCFileDefine an abstract file interface +||oCFileCloser +||oCIoCacheDeclaration of class which implements a thread-safe circular buffer +||oCLocalFileImplement LocalFile which deals with local storage +||oCMemoryFile +||oCThreadedIoFileDeclaration of class which implements a thread-safe circular buffer +||oCUdpFileImplements UdpFile, which receives UDP unicast and multicast streams +||oCUdpOptionsOptions parsed from UDP url string of the form: udp://ip:port[?options] +||oCCluster +||oCClusterBuilder +||oCMkvWriterAn implementation of IMkvWriter using our File type +||oCSeekHead +||oCSegmentTestBase +|||\CClusterParser +||oCTracksBuilder +||oCWebMAudioClientHelper class used to parse an Audio element inside a TrackEntry element +||oCWebMClusterParser +||oCContentEncoding +||oCWebMContentEncodingsClientParser for WebM ContentEncodings element +||oCWebMInfoParserParser for WebM Info element +||oCWebMMediaParser +||oCWebMParserClient +||oCWebMListParser +||oCWebMTracksParserParser for WebM Tracks element +||oCWebMVideoClientHelper class used to parse a Video element inside a TrackEntry element +||oCWebMWebVTTParser +||oCCue +||oCWebVttMediaParser +||\CWebVttSampleConverter |oNxml ||oCXmlDeleter ||oCXmlNode @@ -386,7 +385,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/classes.html b/docs/classes.html index 6d845fa25c..46ea2bdfea 100644 --- a/docs/classes.html +++ b/docs/classes.html @@ -89,99 +89,99 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
A | B | C | D | E | F | H | I | K | L | M | N | O | P | R | S | T | U | V | W | X
+ - - - - + + + + + - - - - - - + + + + + - - - - - - - + + + + + + + + - - + - - + - + + - - - + + + + - - - + + + + - - - - - - - + + + + + + - - - - - - - - - - - + + + + + + + + + + - - - - - + + + + - - + - - - - + + - - + + +
  A  
-
DecodingTimeToSample (shaka::media::mp4)   IoCache (shaka::media)   PesPacket (shaka::media::mp2t)   Track (shaka::media::mp4)   
DecodingTimeToSample (shaka::media::mp4)   IoCache (shaka::media)   PesPacketGenerator (shaka::media::mp2t)   TrackEncryption (shaka::media::mp4)   
DecryptConfig (shaka::media)   
  K  
-
PesPacketGenerator (shaka::media::mp2t)   TrackEncryption (shaka::media::mp4)   
AACAudioSpecificConfig (shaka::media)   DecryptorSource (shaka::media)   PixelAspectRatio (shaka::media::mp4)   TrackExtends (shaka::media::mp4)   
AacProgramMapTableWriter (shaka::media::mp2t)   Demuxer (shaka::media)   KeyFetcher (shaka::media)   PlayReadyKeySource (shaka::media)   TrackFragment (shaka::media::mp4)   
AC3Specific (shaka::media::mp4)   DemuxStreamIdMediaSample (shaka::media::wvm)   KeyRotationFragmenter (shaka::media::mp4)   PrevSampleData (shaka::media::wvm)   TrackFragmentDecodeTime (shaka::media::mp4)   
AdaptationSet (shaka)   DTSSpecific (shaka::media::mp4)   KeySource (shaka::media)   PrivFrame (shaka::media::mp4)   TrackFragmentHeader (shaka::media::mp4)   
PixelAspectRatio (shaka::media::mp4)   TrackExtends (shaka::media::mp4)   
AACAudioSpecificConfig (shaka::media)   DecryptorSource (shaka::media)   PlayReadyKeySource (shaka::media)   TrackFragment (shaka::media::mp4)   
AacProgramMapTableWriter (shaka::media::mp2t)   Demuxer (shaka::media)   KeyFetcher (shaka::media)   PrevSampleData (shaka::media::wvm)   TrackFragmentDecodeTime (shaka::media::mp4)   
AC3Specific (shaka::media::mp4)   DemuxStreamIdMediaSample (shaka::media::wvm)   KeyRotationFragmenter (shaka::media::mp4)   PrivFrame (shaka::media::mp4)   TrackFragmentHeader (shaka::media::mp4)   
AdaptationSet (shaka)   DTSSpecific (shaka::media::mp4)   KeySource (shaka::media)   ProducerConsumerQueue (shaka::media)   TrackFragmentRun (shaka::media::mp4)   
AdaptationSetXmlNode (shaka::xml)   
  E  
  L  
-
ProducerConsumerQueue (shaka::media)   TrackFragmentRun (shaka::media::mp4)   
AdtsHeader (shaka::media::mp2t)   ProgramMapTableWriter (shaka::media::mp2t)   TrackHeader (shaka::media::mp4)   
AesCbcDecryptor (shaka::media)   EC3Specific (shaka::media::mp4)   Language (shaka::media::mp4)   ProgressListener (shaka::media)   TrackRunIterator (shaka::media::mp4)   
AesCbcEncryptor (shaka::media)   Edit (shaka::media::mp4)   LibcryptoThreading (shaka::media)   ProtectionSchemeInfo (shaka::media::mp4)   TracksBuilder (shaka::media)   
AesCryptor (shaka::media)   EditList (shaka::media::mp4)   LocalFile (shaka::media)   ProtectionSystemSpecificHeader (shaka::media::mp4)   TsMuxer (shaka::media::mp2t)   
AesCtrEncryptor (shaka::media)   EditListEntry (shaka::media::mp4)   H265SliceHeader::LongTermPicsInfo (shaka::media)   ProtectionSystemSpecificInfo (shaka::media)   TsPacket (shaka::media::mp2t)   
AesEncryptor (shaka::media)   Element (shaka)   
  M  
-
  R  
+
ProgramMapTableWriter (shaka::media::mp2t)   TrackHeader (shaka::media::mp4)   
AdtsHeader (shaka::media::mp2t)   ProgressListener (shaka::media)   TrackRunIterator (shaka::media::mp4)   
AesCbcDecryptor (shaka::media)   EC3Specific (shaka::media::mp4)   Language (shaka::media::mp4)   ProtectionSchemeInfo (shaka::media::mp4)   TracksBuilder (shaka::media)   
AesCbcEncryptor (shaka::media)   Edit (shaka::media::mp4)   LibcryptoThreading (shaka::media)   ProtectionSystemSpecificHeader (shaka::media::mp4)   TsMuxer (shaka::media::mp2t)   
AesCryptor (shaka::media)   EditList (shaka::media::mp4)   LocalFile (shaka::media)   ProtectionSystemSpecificInfo (shaka::media)   TsPacket (shaka::media::mp2t)   
AesCtrEncryptor (shaka::media)   EditListEntry (shaka::media::mp4)   H265SliceHeader::LongTermPicsInfo (shaka::media)   
  R  
TsSection (shaka::media::mp2t)   
AesPatternCryptor (shaka::media)   ElementaryStreamDescriptor (shaka::media::mp4)   TsSectionPat (shaka::media::mp2t)   
AesRequestSigner (shaka::media)   EncryptingFragmenter (shaka::media::mp4)   Media (shaka::media::mp4)   Representation (shaka)   TsSectionPes (shaka::media::mp2t)   
AudioRollRecoveryEntry (shaka::media::mp4)   EncryptionConfig (shaka::media)   MediaData (shaka::media::mp4)   RepresentationBaseXmlNode (shaka::xml)   TsSectionPmt (shaka::media::mp2t)   
AudioSampleEntry (shaka::media::mp4)   EncryptionHandler (shaka::media)   MediaEvent (shaka::media)   RepresentationStateChangeListener (shaka)   TsSectionPsi (shaka::media::mp2t)   
AudioStreamInfo (shaka::media)   EncryptionKey (shaka::media)   MediaHandler (shaka::media)   RepresentationXmlNode (shaka::xml)   TsSegmenter (shaka::media::mp2t)   
AudioTimestampHelper (shaka::media)   EncryptionOptions (shaka::media)   MediaHandlerTestBase (shaka::media)   RequestSigner (shaka::media)   TsWriter (shaka::media::mp2t)   
AVCDecoderConfigurationRecord (shaka::media)   Encryptor (shaka::media::webm)   MediaHeader (shaka::media::mp4)   RsaPrivateKey (shaka::media)   TwoPassSingleSegmentSegmenter (shaka::media::webm)   
AesEncryptor (shaka::media)   Element (shaka)   
  M  
+
TsSectionPat (shaka::media::mp2t)   
AesPatternCryptor (shaka::media)   ElementaryStreamDescriptor (shaka::media::mp4)   Representation (shaka)   TsSectionPes (shaka::media::mp2t)   
AesRequestSigner (shaka::media)   EncryptingFragmenter (shaka::media::mp4)   Media (shaka::media::mp4)   RepresentationBaseXmlNode (shaka::xml)   TsSectionPmt (shaka::media::mp2t)   
AudioRollRecoveryEntry (shaka::media::mp4)   EncryptionConfig (shaka::media)   MediaData (shaka::media::mp4)   RepresentationStateChangeListener (shaka)   TsSectionPsi (shaka::media::mp2t)   
AudioSampleEntry (shaka::media::mp4)   EncryptionHandler (shaka::media)   MediaEvent (shaka::media)   RepresentationXmlNode (shaka::xml)   TsSegmenter (shaka::media::mp2t)   
AudioStreamInfo (shaka::media)   EncryptionKey (shaka::media)   MediaHandler (shaka::media)   RequestSigner (shaka::media)   TsWriter (shaka::media::mp2t)   
AudioTimestampHelper (shaka::media)   EncryptionOptions (shaka::media)   MediaHandlerTestBase (shaka::media)   RsaPrivateKey (shaka::media)   TwoPassSingleSegmentSegmenter (shaka::media::webm)   
AVCDecoderConfigurationRecord (shaka::media)   Encryptor (shaka::media::webm)   MediaHeader (shaka::media::mp4)   RsaPublicKey (shaka::media)   
  U  
+
  B  
-
ESDescriptor (shaka::media)   MediaInformation (shaka::media::mp4)   RsaPublicKey (shaka::media)   
  U  
-
EsParser (shaka::media::mp2t)   MediaParser (shaka::media)   RsaRequestSigner (shaka::media)   
BandwidthEstimator   EsParserAdts (shaka::media::mp2t)   MediaSample (shaka::media)   
  S  
+
ESDescriptor (shaka::media)   MediaInformation (shaka::media::mp4)   RsaRequestSigner (shaka::media)   
EsParser (shaka::media::mp2t)   MediaParser (shaka::media)   
  S  
UdpFile (shaka::media)   
BitReader (shaka::media)   EsParserH264 (shaka::media::mp2t)   MediaStream (shaka::media)   UdpOptions (shaka::media)   
Box (shaka::media::mp4)   EsParserH265 (shaka::media::mp2t)   MemoryFile (shaka::media)   SampleAuxiliaryInformationOffset (shaka::media::mp4)   
  V  
+
BandwidthEstimator   EsParserAdts (shaka::media::mp2t)   MediaSample (shaka::media)   UdpOptions (shaka::media)   
BitReader (shaka::media)   EsParserH264 (shaka::media::mp2t)   MemoryFile (shaka::media)   SampleAuxiliaryInformationOffset (shaka::media::mp4)   
  V  
BoxBuffer (shaka::media::mp4)   EsParserH26x (shaka::media::mp2t)   Metadata (shaka::media::mp4)   SampleAuxiliaryInformationSize (shaka::media::mp4)   
Box (shaka::media::mp4)   EsParserH265 (shaka::media::mp2t)   Metadata (shaka::media::mp4)   SampleAuxiliaryInformationSize (shaka::media::mp4)   
BoxBuffer (shaka::media::mp4)   EsParserH26x (shaka::media::mp2t)   MkvWriter (shaka::media)   SampleDescription (shaka::media::mp4)   VideoMediaHeader (shaka::media::mp4)   
BoxReader (shaka::media::mp4)   
  F  
-
MkvWriter (shaka::media)   SampleDescription (shaka::media::mp4)   VideoMediaHeader (shaka::media::mp4)   
BufferReader (shaka::media)   MockAdaptationSet (shaka)   SampleEncryption (shaka::media::mp4)   VideoSampleEntry (shaka::media::mp4)   
BufferWriter (shaka::media)   File (shaka::media)   MockMpdBuilder (shaka)   SampleEncryptionEntry (shaka::media::mp4)   VideoSliceHeaderParser (shaka::media)   
ByteQueue (shaka::media)   FileCloser (shaka::media)   MockMpdNotifier (shaka)   SampleGroupDescription (shaka::media::mp4)   EsParserH26x::VideoSliceInfo (shaka::media::mp2t)   
MockAdaptationSet (shaka)   SampleEncryption (shaka::media::mp4)   VideoSampleEntry (shaka::media::mp4)   
BufferReader (shaka::media)   MockMpdBuilder (shaka)   SampleEncryptionEntry (shaka::media::mp4)   VideoSliceHeaderParser (shaka::media)   
BufferWriter (shaka::media)   File (shaka::media)   MockMpdNotifier (shaka)   SampleGroupDescription (shaka::media::mp4)   EsParserH26x::VideoSliceInfo (shaka::media::mp2t)   
ByteQueue (shaka::media)   FileCloser (shaka::media)   MockMuxerListener (shaka::media)   SampleSize (shaka::media::mp4)   VideoStreamInfo (shaka::media)   
  C  
-
FileType (shaka::media::mp4)   MockMuxerListener (shaka::media)   SampleSize (shaka::media::mp4)   VideoStreamInfo (shaka::media)   
FixedKeySource (shaka::media)   MockRepresentation (shaka)   SampleTable (shaka::media::mp4)   VideoStreamInfoParameters (shaka::media)   
CencSampleEncryptionInfoEntry (shaka::media::mp4)   Fragmenter (shaka::media::mp4)   Movie (shaka::media::mp4)   SampleToChunk (shaka::media::mp4)   VodMediaInfoDumpMuxerListener (shaka::media)   
ChunkInfo (shaka::media::mp4)   FullBox (shaka::media::mp4)   MovieExtends (shaka::media::mp4)   SampleToGroup (shaka::media::mp4)   VP8Parser (shaka::media)   
FileType (shaka::media::mp4)   MockRepresentation (shaka)   SampleTable (shaka::media::mp4)   VideoStreamInfoParameters (shaka::media)   
FixedKeySource (shaka::media)   Movie (shaka::media::mp4)   SampleToChunk (shaka::media::mp4)   VodMediaInfoDumpMuxerListener (shaka::media)   
CencSampleEncryptionInfoEntry (shaka::media::mp4)   Fragmenter (shaka::media::mp4)   MovieExtends (shaka::media::mp4)   SampleToGroup (shaka::media::mp4)   VP8Parser (shaka::media)   
ChunkInfo (shaka::media::mp4)   FullBox (shaka::media::mp4)   MovieExtendsHeader (shaka::media::mp4)   SampleToGroupEntry (shaka::media::mp4)   VP9Parser (shaka::media)   
ChunkInfoIterator (shaka::media::mp4)   
  H  
-
MovieExtendsHeader (shaka::media::mp4)   SampleToGroupEntry (shaka::media::mp4)   VP9Parser (shaka::media)   
ChunkingHandler (shaka::media)   MovieFragment (shaka::media::mp4)   SchemeInfo (shaka::media::mp4)   VPCodecConfigurationRecord (shaka::media)   
ChunkingOptions (shaka::media)   H264ByteToUnitStreamConverter (shaka::media)   MovieFragmentHeader (shaka::media::mp4)   SchemeType (shaka::media::mp4)   VPxFrameInfo (shaka::media)   
ChunkLargeOffset (shaka::media::mp4)   H264DecRefPicMarking (shaka::media)   MovieHeader (shaka::media::mp4)   SeekHead (shaka::media)   VPxParser (shaka::media)   
ChunkOffset (shaka::media::mp4)   H264ModificationOfPicNum (shaka::media)   Mp2tMediaParser (shaka::media::mp2t)   Segmenter (shaka::media::mp4)   VTTAdditionalTextBox (shaka::media::mp4)   
ClosureThread (shaka::media)   H264Parser (shaka::media)   MP4MediaParser (shaka::media::mp4)   Segmenter (shaka::media::webm)   VTTCueBox (shaka::media::mp4)   
Cluster (shaka::media)   H264Pps (shaka::media)   MP4Muxer (shaka::media::mp4)   SegmentIndex (shaka::media::mp4)   VTTEmptyCueBox (shaka::media::mp4)   
ClusterBuilder (shaka::media)   H264ProgramMapTableWriter (shaka::media::mp2t)   MpdBuilder (shaka)   SegmentInfo (shaka::media)   
  W  
+
MovieFragment (shaka::media::mp4)   SchemeInfo (shaka::media::mp4)   VPCodecConfigurationRecord (shaka::media)   
ChunkingHandler (shaka::media)   MovieFragmentHeader (shaka::media::mp4)   SchemeType (shaka::media::mp4)   VPxFrameInfo (shaka::media)   
ChunkingOptions (shaka::media)   H264ByteToUnitStreamConverter (shaka::media)   MovieHeader (shaka::media::mp4)   SeekHead (shaka::media)   VPxParser (shaka::media)   
ChunkLargeOffset (shaka::media::mp4)   H264DecRefPicMarking (shaka::media)   Mp2tMediaParser (shaka::media::mp2t)   Segmenter (shaka::media::webm)   VTTAdditionalTextBox (shaka::media::mp4)   
ChunkOffset (shaka::media::mp4)   H264ModificationOfPicNum (shaka::media)   MP4MediaParser (shaka::media::mp4)   Segmenter (shaka::media::mp4)   VTTCueBox (shaka::media::mp4)   
ClosureThread (shaka::media)   H264Parser (shaka::media)   MP4Muxer (shaka::media::mp4)   SegmentIndex (shaka::media::mp4)   VTTEmptyCueBox (shaka::media::mp4)   
Cluster (shaka::media)   H264Pps (shaka::media)   MpdBuilder (shaka)   SegmentInfo (shaka::media)   
  W  
SegmentTestBase::ClusterParser (shaka::media)   H264SEIMessage (shaka::media)   MpdNotifier (shaka)   SegmentInfo (shaka)   
CodecConfiguration (shaka::media::mp4)   H264SEIRecoveryPoint (shaka::media)   MpdNotifierFactory (shaka)   SegmentReference (shaka::media::mp4)   WebMAudioClient (shaka::media)   
CompactSampleSize (shaka::media::mp4)   H264SliceHeader (shaka::media)   MpdNotifyMuxerListener (shaka::media)   SegmentTestBase (shaka::media)   WebMClusterParser (shaka::media)   
CompositionOffset (shaka::media::mp4)   H264Sps (shaka::media)   MpdOptions (shaka)   SegmentType (shaka::media::mp4)   WebMContentEncodingsClient (shaka::media)   
CompositionOffsetIterator (shaka::media::mp4)   H264VideoSliceHeaderParser (shaka::media)   MpdWriter (shaka)   SimpleMpdNotifier (shaka)   WebMInfoParser (shaka::media)   
CompositionTimeToSample (shaka::media::mp4)   H264WeightingFactors (shaka::media)   MultiSegmentSegmenter (shaka::media::mp4)   SingleSegmentSegmenter (shaka::media::mp4)   WebMListParser (shaka::media)   
ContentEncoding (shaka::media)   H265ByteToUnitStreamConverter (shaka::media)   MultiSegmentSegmenter (shaka::media::webm)   SingleSegmentSegmenter (shaka::media::webm)   WebMMediaParser (shaka::media)   
ContentProtectionElement (shaka)   H265Parser (shaka::media)   Muxer (shaka::media)   SoundMediaHeader (shaka::media::mp4)   WebMMuxer (shaka::media::webm)   
ContinuityCounter (shaka::media::mp2t)   H265Pps (shaka::media)   MuxerListener (shaka::media)   Status (shaka::media)   WebMParserClient (shaka::media)   
Cue (shaka::media)   H265ReferencePictureListModifications (shaka::media)   MuxerOptions (shaka::media)   StreamData (shaka::media)   WebMTracksParser (shaka::media)   
CueIDBox (shaka::media::mp4)   H265ReferencePictureSet (shaka::media)   
  N  
+
ClusterBuilder (shaka::media)   H264ProgramMapTableWriter (shaka::media::mp2t)   MpdNotifier (shaka)   SegmentInfo (shaka)   
SegmentTestBase::ClusterParser (shaka::media)   H264SEIMessage (shaka::media)   MpdNotifierFactory (shaka)   SegmentReference (shaka::media::mp4)   WebMAudioClient (shaka::media)   
CodecConfiguration (shaka::media::mp4)   H264SEIRecoveryPoint (shaka::media)   MpdNotifyMuxerListener (shaka::media)   SegmentTestBase (shaka::media)   WebMClusterParser (shaka::media)   
CompactSampleSize (shaka::media::mp4)   H264SliceHeader (shaka::media)   MpdOptions (shaka)   SegmentType (shaka::media::mp4)   WebMContentEncodingsClient (shaka::media)   
CompositionOffset (shaka::media::mp4)   H264Sps (shaka::media)   MpdWriter (shaka)   SimpleMpdNotifier (shaka)   WebMInfoParser (shaka::media)   
CompositionOffsetIterator (shaka::media::mp4)   H264VideoSliceHeaderParser (shaka::media)   MultiSegmentSegmenter (shaka::media::mp4)   SingleSegmentSegmenter (shaka::media::mp4)   WebMListParser (shaka::media)   
CompositionTimeToSample (shaka::media::mp4)   H264WeightingFactors (shaka::media)   MultiSegmentSegmenter (shaka::media::webm)   SingleSegmentSegmenter (shaka::media::webm)   WebMMediaParser (shaka::media)   
ContentEncoding (shaka::media)   H265ByteToUnitStreamConverter (shaka::media)   Muxer (shaka::media)   SoundMediaHeader (shaka::media::mp4)   WebMMuxer (shaka::media::webm)   
ContentProtectionElement (shaka)   H265Parser (shaka::media)   MuxerListener (shaka::media)   Status (shaka::media)   WebMParserClient (shaka::media)   
ContinuityCounter (shaka::media::mp2t)   H265Pps (shaka::media)   MuxerOptions (shaka::media)   StreamData (shaka::media)   WebMTracksParser (shaka::media)   
Cue (shaka::media)   H265ReferencePictureListModifications (shaka::media)   
  N  
StreamDescriptor (shaka::media)   WebMVideoClient (shaka::media)   
CuePayloadBox (shaka::media::mp4)   H265SliceHeader (shaka::media)   StreamDescriptorCompareFn (shaka::media)   WebMWebVTTParser (shaka::media)   
CueSettingsBox (shaka::media::mp4)   H265Sps (shaka::media)   Nalu (shaka::media)   StreamInfo (shaka::media)   WebVTTConfigurationBox (shaka::media::mp4)   
CueSourceIDBox (shaka::media::mp4)   H265VideoSliceHeaderParser (shaka::media)   NalUnitToByteStreamConverter (shaka::media)   SubsampleEntry (shaka::media)   WebVttMediaParser (shaka::media)   
CueTimeBox (shaka::media::mp4)   H265VuiParameters (shaka::media)   NaluReader (shaka::media)   SubtitleMediaHeader (shaka::media::mp4)   WebVttSampleConverter (shaka::media)   
  D  
-
H26xBitReader (shaka::media)   
  O  
+
CueIDBox (shaka::media::mp4)   H265ReferencePictureSet (shaka::media)   StreamDescriptorCompareFn (shaka::media)   WebMWebVTTParser (shaka::media)   
CuePayloadBox (shaka::media::mp4)   H265SliceHeader (shaka::media)   Nalu (shaka::media)   StreamInfo (shaka::media)   WebVTTConfigurationBox (shaka::media::mp4)   
CueSettingsBox (shaka::media::mp4)   H265Sps (shaka::media)   NalUnitToByteStreamConverter (shaka::media)   SubsampleEntry (shaka::media)   WebVttMediaParser (shaka::media)   
CueSourceIDBox (shaka::media::mp4)   H265VideoSliceHeaderParser (shaka::media)   NaluReader (shaka::media)   SubtitleMediaHeader (shaka::media::mp4)   WebVttSampleConverter (shaka::media)   
CueTimeBox (shaka::media::mp4)   H265VuiParameters (shaka::media)   
  O  
SyncSample (shaka::media::mp4)   WebVTTSourceLabelBox (shaka::media::mp4)   
H26xByteToUnitStreamConverter (shaka::media)   SyncSampleIterator (shaka::media::mp4)   WidevineKeySource (shaka::media)   
DashIopMpdNotifier (shaka)   HandlerReference (shaka::media::mp4)   OffsetByteQueue (shaka::media)   
  T  
+
  D  
+
H26xBitReader (shaka::media)   SyncSampleIterator (shaka::media::mp4)   WidevineKeySource (shaka::media)   
H26xByteToUnitStreamConverter (shaka::media)   OffsetByteQueue (shaka::media)   
  T  
WvmMediaParser (shaka::media::wvm)   
DataEntryUrl (shaka::media::mp4)   HEVCDecoderConfigurationRecord (shaka::media)   OnMediaEndParameters (shaka::media)   
  X  
+
DashIopMpdNotifier (shaka)   HandlerReference (shaka::media::mp4)   OnMediaEndParameters (shaka::media)   
  X  
DataInformation (shaka::media::mp4)   HlsNotifyMuxerListener (shaka::media)   OpusSpecific (shaka::media::mp4)   TextSampleEntry (shaka::media::mp4)   
DataReference (shaka::media::mp4)   HttpKeyFetcher (shaka::media)   OriginalFormat (shaka::media::mp4)   TextStreamInfo (shaka::media)   XmlDeleter (shaka::xml)   
DecoderConfigurationRecord (shaka::media)   
  I  
-
  P  
+
DataEntryUrl (shaka::media::mp4)   HEVCDecoderConfigurationRecord (shaka::media)   OpusSpecific (shaka::media::mp4)   TextSampleEntry (shaka::media::mp4)   
DataInformation (shaka::media::mp4)   HlsNotifyMuxerListener (shaka::media)   OriginalFormat (shaka::media::mp4)   TextStreamInfo (shaka::media)   XmlDeleter (shaka::xml)   
DataReference (shaka::media::mp4)   HttpKeyFetcher (shaka::media)   
  P  
TextTrack (shaka::media)   XmlNode (shaka::xml)   
DecodingTime (shaka::media::mp4)   TextTrackConfig (shaka::media)   
DecodingTimeIterator (shaka::media::mp4)   ID3v2 (shaka::media::mp4)   PeriodInfo (shaka::media)   ThreadedIoFile (shaka::media)   
DecoderConfigurationRecord (shaka::media)   
  I  
+
TextTrackConfig (shaka::media)   
DecodingTime (shaka::media::mp4)   PeriodInfo (shaka::media)   ThreadedIoFile (shaka::media)   
DecodingTimeIterator (shaka::media::mp4)   ID3v2 (shaka::media::mp4)   PesPacket (shaka::media::mp2t)   Track (shaka::media::mp4)   
A | B | C | D | E | F | H | I | K | L | M | N | O | P | R | S | T | U | V | W | X
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 7707b0d58c..ea990fd53b 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 50f74dc532..8d4e70372d 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 6a9b548b0d..2fc8ee923e 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 ea25cb4824..1667b0112d 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 58b3ad965a..03b644c04d 100644 --- a/docs/d0/d0e/hevc__decoder__configuration__record_8h_source.html +++ b/docs/d0/d0e/hevc__decoder__configuration__record_8h_source.html @@ -138,7 +138,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d0e/muxer__options_8h_source.html b/docs/d0/d0e/muxer__options_8h_source.html index 5979d77557..7adb66623e 100644 --- a/docs/d0/d0e/muxer__options_8h_source.html +++ b/docs/d0/d0e/muxer__options_8h_source.html @@ -149,7 +149,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d0f/classshaka_1_1media_1_1mp2t_1_1TsSectionPmt-members.html b/docs/d0/d0f/classshaka_1_1media_1_1mp2t_1_1TsSectionPmt-members.html index 9dca77d660..07fd8c3704 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 177a004e16..3a028db908 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 67f5639a70..bf3bb8f77c 100644 --- a/docs/d0/d17/structshaka_1_1media_1_1StreamData-members.html +++ b/docs/d0/d17/structshaka_1_1media_1_1StreamData-members.html @@ -104,7 +104,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 a3a3baf75f..54dba16649 100644 --- a/docs/d0/d1e/classshaka_1_1media_1_1H265ByteToUnitStreamConverter-members.html +++ b/docs/d0/d1e/classshaka_1_1media_1_1H265ByteToUnitStreamConverter-members.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d1f/structshaka_1_1media_1_1mp4_1_1VTTCueBox-members.html b/docs/d0/d1f/structshaka_1_1media_1_1mp4_1_1VTTCueBox-members.html index d7e9e0771d..c183461f2c 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 a2d1af32a6..0df987b6e7 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 75c46f849e..608827f01e 100644 --- a/docs/d0/d27/structshaka_1_1media_1_1MuxerOptions.html +++ b/docs/d0/d27/structshaka_1_1media_1_1MuxerOptions.html @@ -274,7 +274,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 cde4631e98..6b58b416e0 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 5672ecaaa5..3948a5c3b4 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 18416e631c..806661b4f8 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 ffbf242fc2..df975d783d 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 02d01867f3..c81a83323a 100644 --- a/docs/d0/d3a/hls__notify__muxer__listener_8cc_source.html +++ b/docs/d0/d3a/hls__notify__muxer__listener_8cc_source.html @@ -233,7 +233,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d3a/webm__constants_8h_source.html b/docs/d0/d3a/webm__constants_8h_source.html index b60cbea078..456dd38392 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 ce1f3865dc..d1cc43b9aa 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 600d465a26..6caa4fee8b 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 4061b4b1cd..0fb5733ba1 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 c1b0a1413a..bfc8cc89e7 100644 --- a/docs/d0/d46/fourccs_8h_source.html +++ b/docs/d0/d46/fourccs_8h_source.html @@ -248,7 +248,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d48/structshaka_1_1media_1_1SegmentInfo-members.html b/docs/d0/d48/structshaka_1_1media_1_1SegmentInfo-members.html index f915ea5f52..3fb917b365 100644 --- a/docs/d0/d48/structshaka_1_1media_1_1SegmentInfo-members.html +++ b/docs/d0/d48/structshaka_1_1media_1_1SegmentInfo-members.html @@ -100,7 +100,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 c83953b20e..da655cdca1 100644 --- a/docs/d0/d49/vod__media__info__dump__muxer__listener_8cc_source.html +++ b/docs/d0/d49/vod__media__info__dump__muxer__listener_8cc_source.html @@ -237,7 +237,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/d4b/structshaka_1_1media_1_1mp4_1_1MediaInformation-members.html b/docs/d0/d4b/structshaka_1_1media_1_1mp4_1_1MediaInformation-members.html index 7be6b4ee90..cfd105deb1 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 2309b887e5..95b7687bb5 100644 --- a/docs/d0/d4c/structshaka_1_1media_1_1StreamData.html +++ b/docs/d0/d4c/structshaka_1_1media_1_1StreamData.html @@ -130,7 +130,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 1a792e486d..1fa8691c78 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 1f662258c0..7a3f775c16 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 7e2018b05a..fa2d382a38 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 @@ -93,33 +93,52 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');

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

- + - - - - + + + + + + + + + + + + + + + + - - - - + + + + + + + + - - - - - - - + + + + + + + + + +
AddStream(MediaStream *stream)shaka::media::Muxer
AddHandler(std::shared_ptr< MediaHandler > handler)shaka::media::MediaHandlerinline
Cancel()shaka::media::Muxer
clear_lead_in_seconds() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
clock() (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
crypto_period_duration_in_seconds() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
encryption_key_source() (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
max_hd_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
max_sd_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
max_uhd1_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
Dispatch(std::unique_ptr< StreamData > stream_data)shaka::media::MediaHandlerprotected
DispatchEncryptionConfig(int stream_index, std::unique_ptr< EncryptionConfig > encryption_config)shaka::media::MediaHandlerinlineprotected
DispatchMediaEvent(int stream_index, std::shared_ptr< MediaEvent > media_event)shaka::media::MediaHandlerinlineprotected
DispatchMediaSample(int stream_index, std::shared_ptr< MediaSample > media_sample)shaka::media::MediaHandlerinlineprotected
DispatchPeriodInfo(int stream_index, std::shared_ptr< PeriodInfo > period_info)shaka::media::MediaHandlerinlineprotected
DispatchSegmentInfo(int stream_index, std::shared_ptr< SegmentInfo > segment_info)shaka::media::MediaHandlerinlineprotected
DispatchStreamInfo(int stream_index, std::shared_ptr< StreamInfo > stream_info)shaka::media::MediaHandlerinlineprotected
encryption_key_source() (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
FlushStream(int input_stream_index) overrideshaka::media::Muxerinlineprotectedvirtual
Initialize()shaka::media::MediaHandler
initialized() (defined in shaka::media::MediaHandler)shaka::media::MediaHandlerinlineprotected
InitializeInternal() overrideshaka::media::Muxerinlineprotectedvirtual
max_hd_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
max_sd_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
max_uhd1_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
MediaHandler()=default (defined in shaka::media::MediaHandler)shaka::media::MediaHandler
Muxer(const MuxerOptions &options) (defined in shaka::media::Muxer)shaka::media::Muxerexplicit
muxer_listener() (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
options() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
progress_listener() (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
protection_scheme() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
Run()shaka::media::Muxer
next_output_stream_index() const (defined in shaka::media::MediaHandler)shaka::media::MediaHandlerinlineprotected
num_input_streams() (defined in shaka::media::MediaHandler)shaka::media::MediaHandlerinlineprotected
num_input_streams() const (defined in shaka::media::MediaHandler)shaka::media::MediaHandlerinlineprotected
options() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
output_handlers() (defined in shaka::media::MediaHandler)shaka::media::MediaHandlerinlineprotected
Process(std::unique_ptr< StreamData > stream_data) overrideshaka::media::Muxerprotectedvirtual
progress_listener() (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
protection_scheme() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
set_clock(base::Clock *clock)shaka::media::Muxerinline
SetKeySource(KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)shaka::media::Muxer
SetMuxerListener(std::unique_ptr< MuxerListener > muxer_listener)shaka::media::Muxer
SetProgressListener(std::unique_ptr< ProgressListener > progress_listener)shaka::media::Muxer
streams() const (defined in shaka::media::Muxer)shaka::media::Muxerinline
TsMuxer(const MuxerOptions &muxer_options) (defined in shaka::media::mp2t::TsMuxer)shaka::media::mp2t::TsMuxerexplicit
~Muxer() (defined in shaka::media::Muxer)shaka::media::Muxervirtual
~TsMuxer() override (defined in shaka::media::mp2t::TsMuxer)shaka::media::mp2t::TsMuxer
SetHandler(int output_stream_index, std::shared_ptr< MediaHandler > handler)shaka::media::MediaHandler
SetKeySource(KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)shaka::media::Muxer
SetMuxerListener(std::unique_ptr< MuxerListener > muxer_listener)shaka::media::Muxer
SetProgressListener(std::unique_ptr< ProgressListener > progress_listener)shaka::media::Muxer
streams() const (defined in shaka::media::Muxer)shaka::media::Muxerinline
TsMuxer(const MuxerOptions &muxer_options) (defined in shaka::media::mp2t::TsMuxer)shaka::media::mp2t::TsMuxerexplicit
ValidateOutputStreamIndex(int stream_index) const shaka::media::MediaHandlerprotectedvirtual
~MediaHandler()=default (defined in shaka::media::MediaHandler)shaka::media::MediaHandlervirtual
~Muxer() (defined in shaka::media::Muxer)shaka::media::Muxervirtual
~TsMuxer() override (defined in shaka::media::mp2t::TsMuxer)shaka::media::mp2t::TsMuxer
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 ea97a3a915..4ed72182bd 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 70966bd06c..bbba9d6608 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 97e1909b26..ee35061e98 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 84a594b40b..c19284a2fb 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 82f284ac91..125fb3177f 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 99b7e1f880..b025b1837e 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 b801102e58..f3d9103278 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 e58454dc08..c977e63e02 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 fd2ac89263..20c22c2e3e 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 7b3d400363..f6eedb6775 100644 --- a/docs/d0/d9a/structshaka_1_1media_1_1mp4_1_1Movie.html +++ b/docs/d0/d9a/structshaka_1_1media_1_1mp4_1_1Movie.html @@ -186,7 +186,7 @@ Additional Inherited Members diff --git a/docs/d0/da2/classshaka_1_1media_1_1AACAudioSpecificConfig.html b/docs/d0/da2/classshaka_1_1media_1_1AACAudioSpecificConfig.html index 71ae0cb77f..f64cf80deb 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 5fca9d5704..ec7edbe505 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 ce03e72e55..667d4922bf 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 bb91a2097a..c337c02580 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 6b4ed667ce..a155213c5f 100644 --- a/docs/d0/dab/classshaka_1_1media_1_1mp4_1_1SingleSegmentSegmenter.html +++ b/docs/d0/dab/classshaka_1_1media_1_1mp4_1_1SingleSegmentSegmenter.html @@ -119,12 +119,12 @@ Public Member Functions  Segmenter (const MuxerOptions &options, std::unique_ptr< FileType > ftyp, std::unique_ptr< Movie > moov)   -Status Initialize (const std::vector< MediaStream * > &streams, MuxerListener *muxer_listener, ProgressListener *progress_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme) -  +Status Initialize (const std::vector< std::shared_ptr< StreamInfo >> &streams, MuxerListener *muxer_listener, ProgressListener *progress_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme) +  Status Finalize ()   -Status AddSample (const MediaStream *stream, std::shared_ptr< MediaSample > sample) -  +Status AddSample (const StreamInfo &stream_Info, std::shared_ptr< MediaSample > sample) +  uint32_t GetReferenceTimeScale () const   @@ -209,7 +209,7 @@ void set_progress_targetImplements shaka::media::mp4::Segmenter.

-

Definition at line 45 of file single_segment_segmenter.cc.

+

Definition at line 44 of file single_segment_segmenter.cc.

@@ -248,7 +248,7 @@ void set_progress_targetImplements shaka::media::mp4::Segmenter.

-

Definition at line 38 of file single_segment_segmenter.cc.

+

Definition at line 37 of file single_segment_segmenter.cc.

@@ -259,7 +259,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 bfeaf91c21..fafb80953f 100644 --- a/docs/d0/dac/classshaka_1_1media_1_1EncryptionHandler-members.html +++ b/docs/d0/dac/classshaka_1_1media_1_1EncryptionHandler-members.html @@ -111,15 +111,16 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); next_output_stream_index() const (defined in shaka::media::MediaHandler)shaka::media::MediaHandlerinlineprotected num_input_streams() (defined in shaka::media::MediaHandler)shaka::media::MediaHandlerinlineprotected num_input_streams() const (defined in shaka::media::MediaHandler)shaka::media::MediaHandlerinlineprotected - Process(std::unique_ptr< StreamData > stream_data) overrideshaka::media::EncryptionHandlerprotectedvirtual - SetHandler(int output_stream_index, std::shared_ptr< MediaHandler > handler)shaka::media::MediaHandler - ValidateOutputStreamIndex(int stream_index) const shaka::media::MediaHandlerprotectedvirtual - ~EncryptionHandler() override (defined in shaka::media::EncryptionHandler)shaka::media::EncryptionHandler - ~MediaHandler()=default (defined in shaka::media::MediaHandler)shaka::media::MediaHandlervirtual + output_handlers() (defined in shaka::media::MediaHandler)shaka::media::MediaHandlerinlineprotected + Process(std::unique_ptr< StreamData > stream_data) overrideshaka::media::EncryptionHandlerprotectedvirtual + SetHandler(int output_stream_index, std::shared_ptr< MediaHandler > handler)shaka::media::MediaHandler + ValidateOutputStreamIndex(int stream_index) const shaka::media::MediaHandlerprotectedvirtual + ~EncryptionHandler() override (defined in shaka::media::EncryptionHandler)shaka::media::EncryptionHandler + ~MediaHandler()=default (defined in shaka::media::MediaHandler)shaka::media::MediaHandlervirtual diff --git a/docs/d0/dac/classshaka_1_1media_1_1FixedKeySource.html b/docs/d0/dac/classshaka_1_1media_1_1FixedKeySource.html index db035b55c6..78bbd4102b 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 5ad3ecca86..0b94cc9eb5 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 ffd6ab2b6a..2c56694507 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 7ba66d4f06..f7c811d02d 100644 --- a/docs/d0/dc0/structshaka_1_1media_1_1SegmentInfo.html +++ b/docs/d0/dc0/structshaka_1_1media_1_1SegmentInfo.html @@ -118,7 +118,7 @@ int64_t duration = 0 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 8f163d33a2..6730857d79 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 e11ba383ff..d335e39f0a 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 7fe8c30cc4..18c884a175 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 0473155ea6..75afcbddde 100644 --- a/docs/d0/dd0/structshaka_1_1media_1_1mp4_1_1CueSettingsBox.html +++ b/docs/d0/dd0/structshaka_1_1media_1_1mp4_1_1CueSettingsBox.html @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d0/dd4/classshaka_1_1media_1_1ProtectionSystemSpecificInfo.html b/docs/d0/dd4/classshaka_1_1media_1_1ProtectionSystemSpecificInfo.html index 54b5386e1f..e2f812fff9 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 5310970890..18a92319c3 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 a786ed7395..ef8cea207a 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 2b84ae002d..4f65a9d33f 100644 --- a/docs/d0/dee/segmenter__test__base_8h_source.html +++ b/docs/d0/dee/segmenter__test__base_8h_source.html @@ -217,7 +217,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d0/df3/packager__util_8cc_source.html b/docs/d0/df3/packager__util_8cc_source.html index 4bfc7fc821..c32315fe89 100644 --- a/docs/d0/df3/packager__util_8cc_source.html +++ b/docs/d0/df3/packager__util_8cc_source.html @@ -106,245 +106,178 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
17 #include "packager/base/logging.h"
18 #include "packager/base/strings/string_number_conversions.h"
19 #include "packager/media/base/fixed_key_source.h"
-
20 #include "packager/media/base/media_stream.h"
-
21 #include "packager/media/base/muxer.h"
-
22 #include "packager/media/base/muxer_options.h"
-
23 #include "packager/media/base/playready_key_source.h"
-
24 #include "packager/media/base/request_signer.h"
-
25 #include "packager/media/base/stream_info.h"
-
26 #include "packager/media/base/widevine_key_source.h"
-
27 #include "packager/media/file/file.h"
-
28 #include "packager/mpd/base/mpd_builder.h"
-
29 
-
30 DEFINE_bool(mp4_use_decoding_timestamp_in_timeline,
-
31  false,
-
32  "If set, decoding timestamp instead of presentation timestamp will "
-
33  "be used when generating media timeline, e.g. timestamps in sidx "
-
34  "and mpd. This is to workaround a Chromium bug that decoding "
-
35  "timestamp is used in buffered range, https://crbug.com/398130.");
-
36 DEFINE_bool(dump_stream_info, false, "Dump demuxed stream info.");
+
20 #include "packager/media/base/muxer_options.h"
+
21 #include "packager/media/base/playready_key_source.h"
+
22 #include "packager/media/base/request_signer.h"
+
23 #include "packager/media/base/widevine_key_source.h"
+
24 #include "packager/media/file/file.h"
+
25 #include "packager/mpd/base/mpd_options.h"
+
26 
+
27 DEFINE_bool(mp4_use_decoding_timestamp_in_timeline,
+
28  false,
+
29  "If set, decoding timestamp instead of presentation timestamp will "
+
30  "be used when generating media timeline, e.g. timestamps in sidx "
+
31  "and mpd. This is to workaround a Chromium bug that decoding "
+
32  "timestamp is used in buffered range, https://crbug.com/398130.");
+
33 DEFINE_bool(dump_stream_info, false, "Dump demuxed stream info.");
+
34 
+
35 namespace shaka {
+
36 namespace media {
37 
-
38 namespace shaka {
-
39 namespace media {
+
38 std::unique_ptr<RequestSigner> CreateSigner() {
+
39  std::unique_ptr<RequestSigner> signer;
40 
-
41 void DumpStreamInfo(const std::vector<std::unique_ptr<MediaStream>>& streams) {
-
42  printf("Found %zu stream(s).\n", streams.size());
-
43  for (size_t i = 0; i < streams.size(); ++i)
-
44  printf("Stream [%zu] %s\n", i, streams[i]->info()->ToString().c_str());
-
45 }
-
46 
-
47 std::unique_ptr<RequestSigner> CreateSigner() {
-
48  std::unique_ptr<RequestSigner> signer;
-
49 
-
50  if (!FLAGS_aes_signing_key.empty()) {
-
51  signer.reset(AesRequestSigner::CreateSigner(
-
52  FLAGS_signer, FLAGS_aes_signing_key, FLAGS_aes_signing_iv));
-
53  if (!signer) {
-
54  LOG(ERROR) << "Cannot create an AES signer object from '"
-
55  << FLAGS_aes_signing_key << "':'" << FLAGS_aes_signing_iv
-
56  << "'.";
-
57  return std::unique_ptr<RequestSigner>();
-
58  }
-
59  } else if (!FLAGS_rsa_signing_key_path.empty()) {
-
60  std::string rsa_private_key;
-
61  if (!File::ReadFileToString(FLAGS_rsa_signing_key_path.c_str(),
-
62  &rsa_private_key)) {
-
63  LOG(ERROR) << "Failed to read from '" << FLAGS_rsa_signing_key_path
-
64  << "'.";
-
65  return std::unique_ptr<RequestSigner>();
-
66  }
-
67  signer.reset(RsaRequestSigner::CreateSigner(FLAGS_signer, rsa_private_key));
-
68  if (!signer) {
-
69  LOG(ERROR) << "Cannot create a RSA signer object from '"
-
70  << FLAGS_rsa_signing_key_path << "'.";
-
71  return std::unique_ptr<RequestSigner>();
-
72  }
-
73  }
-
74  return signer;
-
75 }
-
76 
-
77 std::unique_ptr<KeySource> CreateEncryptionKeySource() {
-
78  std::unique_ptr<KeySource> encryption_key_source;
-
79  if (FLAGS_enable_widevine_encryption) {
-
80  std::unique_ptr<WidevineKeySource> widevine_key_source(
-
81  new WidevineKeySource(FLAGS_key_server_url, FLAGS_include_common_pssh));
-
82  if (!FLAGS_signer.empty()) {
-
83  std::unique_ptr<RequestSigner> request_signer(CreateSigner());
-
84  if (!request_signer)
-
85  return std::unique_ptr<KeySource>();
-
86  widevine_key_source->set_signer(std::move(request_signer));
-
87  }
-
88 
-
89  std::vector<uint8_t> content_id;
-
90  if (!base::HexStringToBytes(FLAGS_content_id, &content_id)) {
-
91  LOG(ERROR) << "Invalid content_id hex string specified.";
-
92  return std::unique_ptr<KeySource>();
-
93  }
-
94  Status status = widevine_key_source->FetchKeys(content_id, FLAGS_policy);
-
95  if (!status.ok()) {
-
96  LOG(ERROR) << "Widevine encryption key source failed to fetch keys: "
-
97  << status.ToString();
-
98  return std::unique_ptr<KeySource>();
-
99  }
-
100  encryption_key_source = std::move(widevine_key_source);
-
101  } else if (FLAGS_enable_fixed_key_encryption) {
-
102  encryption_key_source = FixedKeySource::CreateFromHexStrings(
-
103  FLAGS_key_id, FLAGS_key, FLAGS_pssh, FLAGS_iv);
-
104  } else if (FLAGS_enable_playready_encryption) {
-
105  if (!FLAGS_playready_key_id.empty() && !FLAGS_playready_key.empty()) {
-
106  encryption_key_source = PlayReadyKeySource::CreateFromKeyAndKeyId(
-
107  FLAGS_playready_key_id, FLAGS_playready_key);
-
108  } else if (!FLAGS_playready_server_url.empty() &&
-
109  !FLAGS_program_identifier.empty()) {
-
110  std::unique_ptr<PlayReadyKeySource> playready_key_source;
-
111  if (!FLAGS_client_cert_file.empty() &&
-
112  !FLAGS_client_cert_private_key_file.empty() &&
-
113  !FLAGS_client_cert_private_key_password.empty()) {
-
114  playready_key_source.reset(new PlayReadyKeySource(
-
115  FLAGS_playready_server_url,
-
116  FLAGS_client_cert_file,
-
117  FLAGS_client_cert_private_key_file,
-
118  FLAGS_client_cert_private_key_password));
-
119  } else {
-
120  playready_key_source.reset(new PlayReadyKeySource(
-
121  FLAGS_playready_server_url));
-
122  }
-
123  if (!FLAGS_ca_file.empty()) {
-
124  playready_key_source->SetCaFile(FLAGS_ca_file);
-
125  }
-
126  playready_key_source->FetchKeysWithProgramIdentifier(FLAGS_program_identifier);
-
127  encryption_key_source = std::move(playready_key_source);
-
128  } else {
-
129  LOG(ERROR) << "Error creating PlayReady key source.";
-
130  return std::unique_ptr<KeySource>();
-
131  }
-
132  }
-
133  return encryption_key_source;
-
134 }
-
135 
-
136 std::unique_ptr<KeySource> CreateDecryptionKeySource() {
-
137  std::unique_ptr<KeySource> decryption_key_source;
-
138  if (FLAGS_enable_widevine_decryption) {
-
139  std::unique_ptr<WidevineKeySource> widevine_key_source(
-
140  new WidevineKeySource(FLAGS_key_server_url, FLAGS_include_common_pssh));
-
141  if (!FLAGS_signer.empty()) {
-
142  std::unique_ptr<RequestSigner> request_signer(CreateSigner());
-
143  if (!request_signer)
-
144  return std::unique_ptr<KeySource>();
-
145  widevine_key_source->set_signer(std::move(request_signer));
-
146  }
-
147 
-
148  decryption_key_source = std::move(widevine_key_source);
-
149  } else if (FLAGS_enable_fixed_key_decryption) {
-
150  const char kNoPssh[] = "";
-
151  const char kNoIv[] = "";
-
152  decryption_key_source = FixedKeySource::CreateFromHexStrings(
-
153  FLAGS_key_id, FLAGS_key, kNoPssh, kNoIv);
-
154  }
-
155  return decryption_key_source;
-
156 }
-
157 
-
158 bool GetMuxerOptions(MuxerOptions* muxer_options) {
-
159  DCHECK(muxer_options);
-
160 
-
161  muxer_options->segment_duration = FLAGS_segment_duration;
-
162  muxer_options->fragment_duration = FLAGS_fragment_duration;
-
163  muxer_options->segment_sap_aligned = FLAGS_segment_sap_aligned;
-
164  muxer_options->fragment_sap_aligned = FLAGS_fragment_sap_aligned;
-
165  muxer_options->num_subsegments_per_sidx = FLAGS_num_subsegments_per_sidx;
-
166  muxer_options->webm_subsample_encryption = FLAGS_webm_subsample_encryption;
-
167  if (FLAGS_mp4_use_decoding_timestamp_in_timeline) {
-
168  LOG(WARNING) << "Flag --mp4_use_decoding_timestamp_in_timeline is set. "
-
169  "Note that it is a temporary hack to workaround Chromium "
-
170  "bug https://crbug.com/398130. The flag may be removed "
-
171  "when the Chromium bug is fixed.";
-
172  }
-
173  muxer_options->mp4_use_decoding_timestamp_in_timeline =
-
174  FLAGS_mp4_use_decoding_timestamp_in_timeline;
-
175 
-
176  muxer_options->temp_dir = FLAGS_temp_dir;
-
177  return true;
-
178 }
-
179 
-
180 bool GetMpdOptions(bool on_demand_profile, MpdOptions* mpd_options) {
-
181  DCHECK(mpd_options);
-
182 
-
183  mpd_options->dash_profile =
-
184  on_demand_profile ? DashProfile::kOnDemand : DashProfile::kLive;
-
185  mpd_options->mpd_type =
-
186  (on_demand_profile || FLAGS_generate_static_mpd)
-
187  ? MpdType::kStatic
-
188  : MpdType::kDynamic;
-
189  mpd_options->availability_time_offset = FLAGS_availability_time_offset;
-
190  mpd_options->minimum_update_period = FLAGS_minimum_update_period;
-
191  mpd_options->min_buffer_time = FLAGS_min_buffer_time;
-
192  mpd_options->time_shift_buffer_depth = FLAGS_time_shift_buffer_depth;
-
193  mpd_options->suggested_presentation_delay =
-
194  FLAGS_suggested_presentation_delay;
-
195  mpd_options->default_language = FLAGS_default_language;
-
196  return true;
-
197 }
-
198 
-
199 MediaStream* FindFirstStreamOfType(
-
200  const std::vector<std::unique_ptr<MediaStream>>& streams,
-
201  StreamType stream_type) {
-
202  for (const std::unique_ptr<MediaStream>& stream : streams) {
-
203  if (stream->info()->stream_type() == stream_type)
-
204  return stream.get();
-
205  }
-
206  return nullptr;
-
207 }
-
208 MediaStream* FindFirstVideoStream(
-
209  const std::vector<std::unique_ptr<MediaStream>>& streams) {
-
210  return FindFirstStreamOfType(streams, kStreamVideo);
-
211 }
-
212 MediaStream* FindFirstAudioStream(
-
213  const std::vector<std::unique_ptr<MediaStream>>& streams) {
-
214  return FindFirstStreamOfType(streams, kStreamAudio);
-
215 }
-
216 
-
217 bool AddStreamToMuxer(const std::vector<std::unique_ptr<MediaStream>>& streams,
-
218  const std::string& stream_selector,
-
219  const std::string& language_override,
-
220  Muxer* muxer) {
-
221  DCHECK(muxer);
-
222 
-
223  MediaStream* stream = nullptr;
-
224  if (stream_selector == "video") {
-
225  stream = FindFirstVideoStream(streams);
-
226  } else if (stream_selector == "audio") {
-
227  stream = FindFirstAudioStream(streams);
-
228  } else {
-
229  // Expect stream_selector to be a zero based stream id.
-
230  size_t stream_id;
-
231  if (!base::StringToSizeT(stream_selector, &stream_id) ||
-
232  stream_id >= streams.size()) {
-
233  LOG(ERROR) << "Invalid argument --stream=" << stream_selector << "; "
-
234  << "should be 'audio', 'video', or a number within [0, "
-
235  << streams.size() - 1 << "].";
-
236  return false;
-
237  }
-
238  stream = streams[stream_id].get();
-
239  DCHECK(stream);
-
240  }
-
241 
-
242  // This could occur only if stream_selector=audio|video and the corresponding
-
243  // stream does not exist in the input.
-
244  if (!stream) {
-
245  LOG(ERROR) << "No " << stream_selector << " stream found in the input.";
-
246  return false;
-
247  }
-
248 
-
249  if (!language_override.empty()) {
-
250  stream->info()->set_language(language_override);
-
251  }
-
252 
-
253  muxer->AddStream(stream);
-
254  return true;
-
255 }
-
256 
-
257 } // namespace media
-
258 } // namespace shaka
+
41  if (!FLAGS_aes_signing_key.empty()) {
+
42  signer.reset(AesRequestSigner::CreateSigner(
+
43  FLAGS_signer, FLAGS_aes_signing_key, FLAGS_aes_signing_iv));
+
44  if (!signer) {
+
45  LOG(ERROR) << "Cannot create an AES signer object from '"
+
46  << FLAGS_aes_signing_key << "':'" << FLAGS_aes_signing_iv
+
47  << "'.";
+
48  return std::unique_ptr<RequestSigner>();
+
49  }
+
50  } else if (!FLAGS_rsa_signing_key_path.empty()) {
+
51  std::string rsa_private_key;
+
52  if (!File::ReadFileToString(FLAGS_rsa_signing_key_path.c_str(),
+
53  &rsa_private_key)) {
+
54  LOG(ERROR) << "Failed to read from '" << FLAGS_rsa_signing_key_path
+
55  << "'.";
+
56  return std::unique_ptr<RequestSigner>();
+
57  }
+
58  signer.reset(RsaRequestSigner::CreateSigner(FLAGS_signer, rsa_private_key));
+
59  if (!signer) {
+
60  LOG(ERROR) << "Cannot create a RSA signer object from '"
+
61  << FLAGS_rsa_signing_key_path << "'.";
+
62  return std::unique_ptr<RequestSigner>();
+
63  }
+
64  }
+
65  return signer;
+
66 }
+
67 
+
68 std::unique_ptr<KeySource> CreateEncryptionKeySource() {
+
69  std::unique_ptr<KeySource> encryption_key_source;
+
70  if (FLAGS_enable_widevine_encryption) {
+
71  std::unique_ptr<WidevineKeySource> widevine_key_source(
+
72  new WidevineKeySource(FLAGS_key_server_url, FLAGS_include_common_pssh));
+
73  if (!FLAGS_signer.empty()) {
+
74  std::unique_ptr<RequestSigner> request_signer(CreateSigner());
+
75  if (!request_signer)
+
76  return std::unique_ptr<KeySource>();
+
77  widevine_key_source->set_signer(std::move(request_signer));
+
78  }
+
79 
+
80  std::vector<uint8_t> content_id;
+
81  if (!base::HexStringToBytes(FLAGS_content_id, &content_id)) {
+
82  LOG(ERROR) << "Invalid content_id hex string specified.";
+
83  return std::unique_ptr<KeySource>();
+
84  }
+
85  Status status = widevine_key_source->FetchKeys(content_id, FLAGS_policy);
+
86  if (!status.ok()) {
+
87  LOG(ERROR) << "Widevine encryption key source failed to fetch keys: "
+
88  << status.ToString();
+
89  return std::unique_ptr<KeySource>();
+
90  }
+
91  encryption_key_source = std::move(widevine_key_source);
+
92  } else if (FLAGS_enable_fixed_key_encryption) {
+
93  encryption_key_source = FixedKeySource::CreateFromHexStrings(
+
94  FLAGS_key_id, FLAGS_key, FLAGS_pssh, FLAGS_iv);
+
95  } else if (FLAGS_enable_playready_encryption) {
+
96  if (!FLAGS_playready_key_id.empty() && !FLAGS_playready_key.empty()) {
+
97  encryption_key_source = PlayReadyKeySource::CreateFromKeyAndKeyId(
+
98  FLAGS_playready_key_id, FLAGS_playready_key);
+
99  } else if (!FLAGS_playready_server_url.empty() &&
+
100  !FLAGS_program_identifier.empty()) {
+
101  std::unique_ptr<PlayReadyKeySource> playready_key_source;
+
102  if (!FLAGS_client_cert_file.empty() &&
+
103  !FLAGS_client_cert_private_key_file.empty() &&
+
104  !FLAGS_client_cert_private_key_password.empty()) {
+
105  playready_key_source.reset(new PlayReadyKeySource(
+
106  FLAGS_playready_server_url,
+
107  FLAGS_client_cert_file,
+
108  FLAGS_client_cert_private_key_file,
+
109  FLAGS_client_cert_private_key_password));
+
110  } else {
+
111  playready_key_source.reset(new PlayReadyKeySource(
+
112  FLAGS_playready_server_url));
+
113  }
+
114  if (!FLAGS_ca_file.empty()) {
+
115  playready_key_source->SetCaFile(FLAGS_ca_file);
+
116  }
+
117  playready_key_source->FetchKeysWithProgramIdentifier(FLAGS_program_identifier);
+
118  encryption_key_source = std::move(playready_key_source);
+
119  } else {
+
120  LOG(ERROR) << "Error creating PlayReady key source.";
+
121  return std::unique_ptr<KeySource>();
+
122  }
+
123  }
+
124  return encryption_key_source;
+
125 }
+
126 
+
127 std::unique_ptr<KeySource> CreateDecryptionKeySource() {
+
128  std::unique_ptr<KeySource> decryption_key_source;
+
129  if (FLAGS_enable_widevine_decryption) {
+
130  std::unique_ptr<WidevineKeySource> widevine_key_source(
+
131  new WidevineKeySource(FLAGS_key_server_url, FLAGS_include_common_pssh));
+
132  if (!FLAGS_signer.empty()) {
+
133  std::unique_ptr<RequestSigner> request_signer(CreateSigner());
+
134  if (!request_signer)
+
135  return std::unique_ptr<KeySource>();
+
136  widevine_key_source->set_signer(std::move(request_signer));
+
137  }
+
138 
+
139  decryption_key_source = std::move(widevine_key_source);
+
140  } else if (FLAGS_enable_fixed_key_decryption) {
+
141  const char kNoPssh[] = "";
+
142  const char kNoIv[] = "";
+
143  decryption_key_source = FixedKeySource::CreateFromHexStrings(
+
144  FLAGS_key_id, FLAGS_key, kNoPssh, kNoIv);
+
145  }
+
146  return decryption_key_source;
+
147 }
+
148 
+
149 bool GetMuxerOptions(MuxerOptions* muxer_options) {
+
150  DCHECK(muxer_options);
+
151 
+
152  muxer_options->segment_duration = FLAGS_segment_duration;
+
153  muxer_options->fragment_duration = FLAGS_fragment_duration;
+
154  muxer_options->segment_sap_aligned = FLAGS_segment_sap_aligned;
+
155  muxer_options->fragment_sap_aligned = FLAGS_fragment_sap_aligned;
+
156  muxer_options->num_subsegments_per_sidx = FLAGS_num_subsegments_per_sidx;
+
157  muxer_options->webm_subsample_encryption = FLAGS_webm_subsample_encryption;
+
158  if (FLAGS_mp4_use_decoding_timestamp_in_timeline) {
+
159  LOG(WARNING) << "Flag --mp4_use_decoding_timestamp_in_timeline is set. "
+
160  "Note that it is a temporary hack to workaround Chromium "
+
161  "bug https://crbug.com/398130. The flag may be removed "
+
162  "when the Chromium bug is fixed.";
+
163  }
+
164  muxer_options->mp4_use_decoding_timestamp_in_timeline =
+
165  FLAGS_mp4_use_decoding_timestamp_in_timeline;
+
166 
+
167  muxer_options->temp_dir = FLAGS_temp_dir;
+
168  return true;
+
169 }
+
170 
+
171 bool GetMpdOptions(bool on_demand_profile, MpdOptions* mpd_options) {
+
172  DCHECK(mpd_options);
+
173 
+
174  mpd_options->dash_profile =
+
175  on_demand_profile ? DashProfile::kOnDemand : DashProfile::kLive;
+
176  mpd_options->mpd_type =
+
177  (on_demand_profile || FLAGS_generate_static_mpd)
+
178  ? MpdType::kStatic
+
179  : MpdType::kDynamic;
+
180  mpd_options->availability_time_offset = FLAGS_availability_time_offset;
+
181  mpd_options->minimum_update_period = FLAGS_minimum_update_period;
+
182  mpd_options->min_buffer_time = FLAGS_min_buffer_time;
+
183  mpd_options->time_shift_buffer_depth = FLAGS_time_shift_buffer_depth;
+
184  mpd_options->suggested_presentation_delay =
+
185  FLAGS_suggested_presentation_delay;
+
186  mpd_options->default_language = FLAGS_default_language;
+
187  return true;
+
188 }
+
189 
+
190 } // namespace media
+
191 } // namespace shaka
static RsaRequestSigner * CreateSigner(const std::string &signer_name, const std::string &pkcs1_rsa_key)
static AesRequestSigner * CreateSigner(const std::string &signer_name, const std::string &aes_key_hex, const std::string &iv_hex)
static std::unique_ptr< FixedKeySource > CreateFromHexStrings(const std::string &key_id_hex, const std::string &key_hex, const std::string &pssh_boxes_hex, const std::string &iv_hex)
@@ -354,7 +287,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 6c095b67cf..c696b70ec6 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 12f47092fa..c9fa8da559 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 697740c385..fee1e2c0ac 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 6ce5776f99..2716b6849e 100644 --- a/docs/d1/d0b/hevc__decoder__configuration__record_8cc_source.html +++ b/docs/d1/d0b/hevc__decoder__configuration__record_8cc_source.html @@ -256,7 +256,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d12/classshaka_1_1media_1_1mp2t_1_1EsParserH264-members.html b/docs/d1/d12/classshaka_1_1media_1_1mp2t_1_1EsParserH264-members.html index 5c4d4e3e4d..1681c00ba2 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 455f835d4d..414ea7b52c 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 c8ca46fff5..1f4f1fa46e 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 @@ -98,185 +98,184 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
9 #include <algorithm>
10 
11 #include "packager/media/base/media_sample.h"
-
12 #include "packager/media/base/media_stream.h"
-
13 #include "packager/media/base/muxer_options.h"
-
14 #include "packager/media/base/stream_info.h"
-
15 #include "packager/media/file/file_util.h"
-
16 #include "packager/third_party/libwebm/src/mkvmuxer.hpp"
-
17 #include "packager/third_party/libwebm/src/mkvmuxerutil.hpp"
-
18 #include "packager/third_party/libwebm/src/webmids.hpp"
-
19 
-
20 namespace shaka {
-
21 namespace media {
-
22 namespace webm {
-
23 namespace {
-
24 // Cues will be inserted before clusters. All clusters will be shifted down by
-
25 // the size of cues. However, cluster positions affect the size of cues. This
-
26 // function adjusts cues size iteratively until it is stable.
-
27 // Returns the size of updated Cues.
-
28 uint64_t UpdateCues(mkvmuxer::Cues* cues) {
-
29  uint64_t cues_size = cues->Size();
-
30  uint64_t adjustment = cues_size;
-
31  while (adjustment != 0) {
-
32  for (int i = 0; i < cues->cue_entries_size(); ++i) {
-
33  mkvmuxer::CuePoint* cue = cues->GetCueByIndex(i);
-
34  cue->set_cluster_pos(cue->cluster_pos() + adjustment);
-
35  }
-
36  uint64_t new_cues_size = cues->Size();
-
37  DCHECK_LE(cues_size, new_cues_size);
-
38  adjustment = new_cues_size - cues_size;
-
39  cues_size = new_cues_size;
-
40  }
-
41  return cues_size;
-
42 }
-
43 
-
44 // Skips a given number of bytes in a file by reading. This allows
-
45 // forward-seeking in non-seekable files.
-
46 bool ReadSkip(File* file, int64_t byte_count) {
-
47  const int64_t kBufferSize = 0x40000; // 256KB.
-
48  std::unique_ptr<char[]> buffer(new char[kBufferSize]);
-
49  int64_t bytes_read = 0;
-
50  while (bytes_read < byte_count) {
-
51  int64_t size = std::min(kBufferSize, byte_count - bytes_read);
-
52  int64_t result = file->Read(buffer.get(), size);
-
53  // Only give success if there are no errors, not at EOF, and read exactly
-
54  // byte_count bytes.
-
55  if (result <= 0)
-
56  return false;
-
57 
-
58  bytes_read += result;
-
59  }
-
60 
-
61  DCHECK_EQ(bytes_read, byte_count);
-
62  return true;
-
63 }
-
64 } // namespace
-
65 
-
66 TwoPassSingleSegmentSegmenter::TwoPassSingleSegmentSegmenter(
-
67  const MuxerOptions& options)
-
68  : SingleSegmentSegmenter(options) {}
-
69 
-
70 TwoPassSingleSegmentSegmenter::~TwoPassSingleSegmentSegmenter() {}
-
71 
-
72 Status TwoPassSingleSegmentSegmenter::DoInitialize(
-
73  std::unique_ptr<MkvWriter> writer) {
-
74  // Assume the amount of time to copy the temp file as the same amount
-
75  // of time as to make it.
-
76  set_progress_target(info()->duration() * 2);
-
77 
-
78  real_writer_ = std::move(writer);
-
79 
-
80  if (!TempFilePath(options().temp_dir, &temp_file_name_))
-
81  return Status(error::FILE_FAILURE, "Unable to create temporary file.");
-
82  std::unique_ptr<MkvWriter> temp(new MkvWriter);
-
83  Status status = temp->Open(temp_file_name_);
-
84  if (!status.ok())
-
85  return status;
-
86 
-
87  return SingleSegmentSegmenter::DoInitialize(std::move(temp));
-
88 }
-
89 
-
90 Status TwoPassSingleSegmentSegmenter::DoFinalize() {
-
91  if (!cluster()->Finalize())
-
92  return Status(error::FILE_FAILURE, "Error finalizing cluster.");
-
93 
-
94  const uint64_t header_size = init_end() + 1;
-
95  const uint64_t cues_pos = header_size - segment_payload_pos();
-
96  const uint64_t cues_size = UpdateCues(cues());
-
97  seek_head()->set_cues_pos(cues_pos);
-
98  seek_head()->set_cluster_pos(cues_pos + cues_size);
-
99 
-
100  // Write the header to the real output file.
-
101  const uint64_t file_size = writer()->Position() + cues_size;
-
102  Status temp = WriteSegmentHeader(file_size, real_writer_.get());
-
103  if (!temp.ok())
-
104  return temp;
-
105  DCHECK_EQ(real_writer_->Position(), static_cast<int64_t>(header_size));
-
106 
-
107  // Write the cues to the real output file.
-
108  set_index_start(real_writer_->Position());
-
109  if (!cues()->Write(real_writer_.get()))
-
110  return Status(error::FILE_FAILURE, "Error writing Cues data.");
-
111  set_index_end(real_writer_->Position() - 1);
-
112  DCHECK_EQ(real_writer_->Position(),
-
113  static_cast<int64_t>(segment_payload_pos() + cues_pos + cues_size));
-
114 
-
115  // Close the temp file and open it for reading.
-
116  set_writer(std::unique_ptr<MkvWriter>());
-
117  std::unique_ptr<File, FileCloser> temp_reader(
-
118  File::Open(temp_file_name_.c_str(), "r"));
-
119  if (!temp_reader)
-
120  return Status(error::FILE_FAILURE, "Error opening temp file.");
-
121 
-
122  // Skip the header that has already been written.
-
123  if (!ReadSkip(temp_reader.get(), header_size))
-
124  return Status(error::FILE_FAILURE, "Error reading temp file.");
-
125 
-
126  // Copy the rest of the data over.
-
127  if (!CopyFileWithClusterRewrite(temp_reader.get(), real_writer_.get(),
-
128  cluster()->Size())) {
-
129  return Status(error::FILE_FAILURE, "Error copying temp file.");
-
130  }
-
131 
-
132  // Close and delete the temp file.
-
133  temp_reader.reset();
-
134  if (!File::Delete(temp_file_name_.c_str())) {
-
135  LOG(WARNING) << "Unable to delete temporary file " << temp_file_name_;
-
136  }
-
137 
-
138  return real_writer_->Close();
-
139 }
-
140 
-
141 bool TwoPassSingleSegmentSegmenter::CopyFileWithClusterRewrite(
-
142  File* source,
-
143  MkvWriter* dest,
-
144  uint64_t last_size) {
-
145  const int cluster_id_size = mkvmuxer::GetUIntSize(mkvmuxer::kMkvCluster);
-
146  const int cluster_size_size = 8; // The size of the Cluster size integer.
-
147  const int cluster_header_size = cluster_id_size + cluster_size_size;
-
148 
-
149  // We are at the start of a cluster, so copy the ID.
-
150  if (dest->WriteFromFile(source, cluster_id_size) != cluster_id_size)
-
151  return false;
-
152 
-
153  for (int i = 0; i < cues()->cue_entries_size() - 1; ++i) {
-
154  // Write the size of the cluster.
-
155  const mkvmuxer::CuePoint* cue = cues()->GetCueByIndex(i);
-
156  const mkvmuxer::CuePoint* next_cue = cues()->GetCueByIndex(i + 1);
-
157  const int64_t cluster_payload_size =
-
158  next_cue->cluster_pos() - cue->cluster_pos() - cluster_header_size;
-
159  if (mkvmuxer::WriteUIntSize(dest, cluster_payload_size, cluster_size_size))
-
160  return false;
-
161  if (!ReadSkip(source, cluster_size_size))
-
162  return false;
-
163 
-
164  // Copy the cluster and the next cluster's ID.
-
165  int64_t to_copy = cluster_payload_size + cluster_id_size;
-
166  if (dest->WriteFromFile(source, to_copy) != to_copy)
-
167  return false;
-
168 
-
169  // Update the progress; need to convert from WebM timecode to ISO BMFF.
-
170  const uint64_t webm_delta_time = next_cue->time() - cue->time();
-
171  const uint64_t delta_time = FromWebMTimecode(webm_delta_time);
-
172  UpdateProgress(delta_time);
-
173  }
-
174 
-
175  // The last cluster takes up until the cues.
-
176  const uint64_t last_cluster_payload_size = last_size - cluster_header_size;
-
177  if (mkvmuxer::WriteUIntSize(dest, last_cluster_payload_size,
-
178  cluster_size_size))
-
179  return false;
-
180  if (!ReadSkip(source, cluster_size_size))
-
181  return false;
-
182 
-
183  // Copy the last cluster.
-
184  return dest->WriteFromFile(source) ==
-
185  static_cast<int64_t>(last_cluster_payload_size);
-
186 }
-
187 
-
188 } // namespace webm
-
189 } // namespace media
-
190 } // namespace shaka
+
12 #include "packager/media/base/muxer_options.h"
+
13 #include "packager/media/base/stream_info.h"
+
14 #include "packager/media/file/file_util.h"
+
15 #include "packager/third_party/libwebm/src/mkvmuxer.hpp"
+
16 #include "packager/third_party/libwebm/src/mkvmuxerutil.hpp"
+
17 #include "packager/third_party/libwebm/src/webmids.hpp"
+
18 
+
19 namespace shaka {
+
20 namespace media {
+
21 namespace webm {
+
22 namespace {
+
23 // Cues will be inserted before clusters. All clusters will be shifted down by
+
24 // the size of cues. However, cluster positions affect the size of cues. This
+
25 // function adjusts cues size iteratively until it is stable.
+
26 // Returns the size of updated Cues.
+
27 uint64_t UpdateCues(mkvmuxer::Cues* cues) {
+
28  uint64_t cues_size = cues->Size();
+
29  uint64_t adjustment = cues_size;
+
30  while (adjustment != 0) {
+
31  for (int i = 0; i < cues->cue_entries_size(); ++i) {
+
32  mkvmuxer::CuePoint* cue = cues->GetCueByIndex(i);
+
33  cue->set_cluster_pos(cue->cluster_pos() + adjustment);
+
34  }
+
35  uint64_t new_cues_size = cues->Size();
+
36  DCHECK_LE(cues_size, new_cues_size);
+
37  adjustment = new_cues_size - cues_size;
+
38  cues_size = new_cues_size;
+
39  }
+
40  return cues_size;
+
41 }
+
42 
+
43 // Skips a given number of bytes in a file by reading. This allows
+
44 // forward-seeking in non-seekable files.
+
45 bool ReadSkip(File* file, int64_t byte_count) {
+
46  const int64_t kBufferSize = 0x40000; // 256KB.
+
47  std::unique_ptr<char[]> buffer(new char[kBufferSize]);
+
48  int64_t bytes_read = 0;
+
49  while (bytes_read < byte_count) {
+
50  int64_t size = std::min(kBufferSize, byte_count - bytes_read);
+
51  int64_t result = file->Read(buffer.get(), size);
+
52  // Only give success if there are no errors, not at EOF, and read exactly
+
53  // byte_count bytes.
+
54  if (result <= 0)
+
55  return false;
+
56 
+
57  bytes_read += result;
+
58  }
+
59 
+
60  DCHECK_EQ(bytes_read, byte_count);
+
61  return true;
+
62 }
+
63 } // namespace
+
64 
+
65 TwoPassSingleSegmentSegmenter::TwoPassSingleSegmentSegmenter(
+
66  const MuxerOptions& options)
+
67  : SingleSegmentSegmenter(options) {}
+
68 
+
69 TwoPassSingleSegmentSegmenter::~TwoPassSingleSegmentSegmenter() {}
+
70 
+
71 Status TwoPassSingleSegmentSegmenter::DoInitialize(
+
72  std::unique_ptr<MkvWriter> writer) {
+
73  // Assume the amount of time to copy the temp file as the same amount
+
74  // of time as to make it.
+
75  set_progress_target(info()->duration() * 2);
+
76 
+
77  real_writer_ = std::move(writer);
+
78 
+
79  if (!TempFilePath(options().temp_dir, &temp_file_name_))
+
80  return Status(error::FILE_FAILURE, "Unable to create temporary file.");
+
81  std::unique_ptr<MkvWriter> temp(new MkvWriter);
+
82  Status status = temp->Open(temp_file_name_);
+
83  if (!status.ok())
+
84  return status;
+
85 
+
86  return SingleSegmentSegmenter::DoInitialize(std::move(temp));
+
87 }
+
88 
+
89 Status TwoPassSingleSegmentSegmenter::DoFinalize() {
+
90  if (!cluster()->Finalize())
+
91  return Status(error::FILE_FAILURE, "Error finalizing cluster.");
+
92 
+
93  const uint64_t header_size = init_end() + 1;
+
94  const uint64_t cues_pos = header_size - segment_payload_pos();
+
95  const uint64_t cues_size = UpdateCues(cues());
+
96  seek_head()->set_cues_pos(cues_pos);
+
97  seek_head()->set_cluster_pos(cues_pos + cues_size);
+
98 
+
99  // Write the header to the real output file.
+
100  const uint64_t file_size = writer()->Position() + cues_size;
+
101  Status temp = WriteSegmentHeader(file_size, real_writer_.get());
+
102  if (!temp.ok())
+
103  return temp;
+
104  DCHECK_EQ(real_writer_->Position(), static_cast<int64_t>(header_size));
+
105 
+
106  // Write the cues to the real output file.
+
107  set_index_start(real_writer_->Position());
+
108  if (!cues()->Write(real_writer_.get()))
+
109  return Status(error::FILE_FAILURE, "Error writing Cues data.");
+
110  set_index_end(real_writer_->Position() - 1);
+
111  DCHECK_EQ(real_writer_->Position(),
+
112  static_cast<int64_t>(segment_payload_pos() + cues_pos + cues_size));
+
113 
+
114  // Close the temp file and open it for reading.
+
115  set_writer(std::unique_ptr<MkvWriter>());
+
116  std::unique_ptr<File, FileCloser> temp_reader(
+
117  File::Open(temp_file_name_.c_str(), "r"));
+
118  if (!temp_reader)
+
119  return Status(error::FILE_FAILURE, "Error opening temp file.");
+
120 
+
121  // Skip the header that has already been written.
+
122  if (!ReadSkip(temp_reader.get(), header_size))
+
123  return Status(error::FILE_FAILURE, "Error reading temp file.");
+
124 
+
125  // Copy the rest of the data over.
+
126  if (!CopyFileWithClusterRewrite(temp_reader.get(), real_writer_.get(),
+
127  cluster()->Size())) {
+
128  return Status(error::FILE_FAILURE, "Error copying temp file.");
+
129  }
+
130 
+
131  // Close and delete the temp file.
+
132  temp_reader.reset();
+
133  if (!File::Delete(temp_file_name_.c_str())) {
+
134  LOG(WARNING) << "Unable to delete temporary file " << temp_file_name_;
+
135  }
+
136 
+
137  return real_writer_->Close();
+
138 }
+
139 
+
140 bool TwoPassSingleSegmentSegmenter::CopyFileWithClusterRewrite(
+
141  File* source,
+
142  MkvWriter* dest,
+
143  uint64_t last_size) {
+
144  const int cluster_id_size = mkvmuxer::GetUIntSize(mkvmuxer::kMkvCluster);
+
145  const int cluster_size_size = 8; // The size of the Cluster size integer.
+
146  const int cluster_header_size = cluster_id_size + cluster_size_size;
+
147 
+
148  // We are at the start of a cluster, so copy the ID.
+
149  if (dest->WriteFromFile(source, cluster_id_size) != cluster_id_size)
+
150  return false;
+
151 
+
152  for (int i = 0; i < cues()->cue_entries_size() - 1; ++i) {
+
153  // Write the size of the cluster.
+
154  const mkvmuxer::CuePoint* cue = cues()->GetCueByIndex(i);
+
155  const mkvmuxer::CuePoint* next_cue = cues()->GetCueByIndex(i + 1);
+
156  const int64_t cluster_payload_size =
+
157  next_cue->cluster_pos() - cue->cluster_pos() - cluster_header_size;
+
158  if (mkvmuxer::WriteUIntSize(dest, cluster_payload_size, cluster_size_size))
+
159  return false;
+
160  if (!ReadSkip(source, cluster_size_size))
+
161  return false;
+
162 
+
163  // Copy the cluster and the next cluster's ID.
+
164  int64_t to_copy = cluster_payload_size + cluster_id_size;
+
165  if (dest->WriteFromFile(source, to_copy) != to_copy)
+
166  return false;
+
167 
+
168  // Update the progress; need to convert from WebM timecode to ISO BMFF.
+
169  const uint64_t webm_delta_time = next_cue->time() - cue->time();
+
170  const uint64_t delta_time = FromWebMTimecode(webm_delta_time);
+
171  UpdateProgress(delta_time);
+
172  }
+
173 
+
174  // The last cluster takes up until the cues.
+
175  const uint64_t last_cluster_payload_size = last_size - cluster_header_size;
+
176  if (mkvmuxer::WriteUIntSize(dest, last_cluster_payload_size,
+
177  cluster_size_size))
+
178  return false;
+
179  if (!ReadSkip(source, cluster_size_size))
+
180  return false;
+
181 
+
182  // Copy the last cluster.
+
183  return dest->WriteFromFile(source) ==
+
184  static_cast<int64_t>(last_cluster_payload_size);
+
185 }
+
186 
+
187 } // namespace webm
+
188 } // namespace media
+
189 } // namespace shaka
virtual bool Open()=0
Internal open. Should not be used directly.
bool TempFilePath(const std::string &temp_dir, std::string *temp_file_path)
Definition: file_util.cc:27
mkvmuxer::int64 Position() const override
Definition: mkv_writer.cc:71
@@ -284,7 +283,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 32637c2863..8debc2e064 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 d8db53c84d..1549b24b5d 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 c6044e0470..4579edf08f 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 dd883bb5a5..f1d82b6ede 100644 --- a/docs/d1/d25/classshaka_1_1media_1_1MediaHandlerTestBase-members.html +++ b/docs/d1/d25/classshaka_1_1media_1_1MediaHandlerTestBase-members.html @@ -105,7 +105,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 2fa833df46..8fe9092439 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 2fc742449f..f8a2a0862c 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 dd51ecd482..1078dfe457 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 d54db29476..4c3b04554b 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 4233cf6bc6..a7ecf16dbe 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 1bf988e51a..4692cd4947 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 b87819d6ac..4f946f4f07 100644 --- a/docs/d1/d2f/webvtt__media__parser_8cc_source.html +++ b/docs/d1/d2f/webvtt__media__parser_8cc_source.html @@ -457,7 +457,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 343eea7749..2e81731cd1 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 c8766b6360..e3bc2b9bf5 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 ff701b8ce3..dbaccb555c 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 4a6fba20d6..1af3f4da44 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 fe2ea541e9..a51dd4bb90 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 cc99c10059..c5cc27303e 100644 --- a/docs/d1/d3e/structshaka_1_1media_1_1mp4_1_1MovieExtends.html +++ b/docs/d1/d3e/structshaka_1_1media_1_1mp4_1_1MovieExtends.html @@ -176,7 +176,7 @@ Additional Inherited Members diff --git a/docs/d1/d40/classshaka_1_1MpdWriter-members.html b/docs/d1/d40/classshaka_1_1MpdWriter-members.html index 536f20b070..b3e10497c2 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 a6d2af07c8..12a00fe27e 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 d650dc1699..c0641e4591 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 37839975f2..665cfa2305 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 f8e0afea1b..3fbbb4e2db 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 d841742177..17e5e4a951 100644 --- a/docs/d1/d6e/structshaka_1_1media_1_1mp4_1_1TrackFragmentHeader.html +++ b/docs/d1/d6e/structshaka_1_1media_1_1mp4_1_1TrackFragmentHeader.html @@ -222,7 +222,7 @@ Additional Inherited Members diff --git a/docs/d1/d70/vp8__parser_8cc_source.html b/docs/d1/d70/vp8__parser_8cc_source.html index 89618ff96d..e11e2a9b5f 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 ad84fc162d..a21f3ee590 100644 --- a/docs/d1/d72/language__utils_8cc_source.html +++ b/docs/d1/d72/language__utils_8cc_source.html @@ -226,7 +226,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d74/mp2t__media__parser_8cc_source.html b/docs/d1/d74/mp2t__media__parser_8cc_source.html index 025c1f8f85..6303a8f965 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 b9d0de2a8c..7fac527de6 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 2bb9960b31..403d375c10 100644 --- a/docs/d1/d7d/webm__video__client_8cc_source.html +++ b/docs/d1/d7d/webm__video__client_8cc_source.html @@ -268,7 +268,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d81/structshaka_1_1media_1_1H265ReferencePictureSet-members.html b/docs/d1/d81/structshaka_1_1media_1_1H265ReferencePictureSet-members.html index 2f168d72b9..5b3b749d00 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 e9a902dc5e..708bcad6b1 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 c7c8bf68f2..7377d962d6 100644 --- a/docs/d1/d82/classshaka_1_1media_1_1WebMParserClient-members.html +++ b/docs/d1/d82/classshaka_1_1media_1_1WebMParserClient-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d86/classshaka_1_1media_1_1mp4_1_1KeyRotationFragmenter-members.html b/docs/d1/d86/classshaka_1_1media_1_1mp4_1_1KeyRotationFragmenter-members.html index 1a8e61855e..567f3adb11 100644 --- a/docs/d1/d86/classshaka_1_1media_1_1mp4_1_1KeyRotationFragmenter-members.html +++ b/docs/d1/d86/classshaka_1_1media_1_1mp4_1_1KeyRotationFragmenter-members.html @@ -124,7 +124,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/d8e/webm__audio__client_8cc_source.html b/docs/d1/d8e/webm__audio__client_8cc_source.html index e67c843df5..5f1380a8c2 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 39f39bd1fa..b15d067d75 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 0a15c529e2..7776e3184a 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 1b263629ce..ccabb2ffad 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 c327e96117..f38c8d239a 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 fb60f813ad..99ce521766 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 c5f085ad17..327245458e 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 87cec11a39..40c798cd83 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 a0627f531b..86bb0280ae 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 1f9b9fc78c..67fec4826a 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 014bcd585a..56c8d5d5ea 100644 --- a/docs/d1/dad/classshaka_1_1media_1_1Demuxer-members.html +++ b/docs/d1/dad/classshaka_1_1media_1_1Demuxer-members.html @@ -93,19 +93,40 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');

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

- - - - - + + + + + + + + + + + + + + + + + + + + + - - + + + + + + +
Cancel()shaka::media::Demuxer
container_name()shaka::media::Demuxerinline
Demuxer(const std::string &file_name)shaka::media::Demuxerexplicit
Initialize()shaka::media::Demuxer
Parse()shaka::media::Demuxer
AddHandler(std::shared_ptr< MediaHandler > handler)shaka::media::MediaHandlerinline
Cancel()shaka::media::Demuxer
container_name()shaka::media::Demuxerinline
Demuxer(const std::string &file_name)shaka::media::Demuxerexplicit
Dispatch(std::unique_ptr< StreamData > stream_data)shaka::media::MediaHandlerprotected
DispatchEncryptionConfig(int stream_index, std::unique_ptr< EncryptionConfig > encryption_config)shaka::media::MediaHandlerinlineprotected
DispatchMediaEvent(int stream_index, std::shared_ptr< MediaEvent > media_event)shaka::media::MediaHandlerinlineprotected
DispatchMediaSample(int stream_index, std::shared_ptr< MediaSample > media_sample)shaka::media::MediaHandlerinlineprotected
DispatchPeriodInfo(int stream_index, std::shared_ptr< PeriodInfo > period_info)shaka::media::MediaHandlerinlineprotected
DispatchSegmentInfo(int stream_index, std::shared_ptr< SegmentInfo > segment_info)shaka::media::MediaHandlerinlineprotected
DispatchStreamInfo(int stream_index, std::shared_ptr< StreamInfo > stream_info)shaka::media::MediaHandlerinlineprotected
FlushStream(int input_stream_index)shaka::media::MediaHandlerprotectedvirtual
Initialize()shaka::media::MediaHandler
initialized() (defined in shaka::media::MediaHandler)shaka::media::MediaHandlerinlineprotected
InitializeInternal() overrideshaka::media::Demuxerinlineprotectedvirtual
MediaHandler()=default (defined in shaka::media::MediaHandler)shaka::media::MediaHandler
next_output_stream_index() const (defined in shaka::media::MediaHandler)shaka::media::MediaHandlerinlineprotected
num_input_streams() (defined in shaka::media::MediaHandler)shaka::media::MediaHandlerinlineprotected
num_input_streams() const (defined in shaka::media::MediaHandler)shaka::media::MediaHandlerinlineprotected
output_handlers() (defined in shaka::media::MediaHandler)shaka::media::MediaHandlerinlineprotected
Process(std::unique_ptr< StreamData > stream_data) overrideshaka::media::Demuxerinlineprotectedvirtual
Run()shaka::media::Demuxer
SetKeySource(std::unique_ptr< KeySource > key_source)shaka::media::Demuxer
streams()shaka::media::Demuxerinline
set_dump_stream_info(bool dump_stream_info) (defined in shaka::media::Demuxer)shaka::media::Demuxerinline
SetHandler(const std::string &stream_label, std::shared_ptr< MediaHandler > handler)shaka::media::Demuxer
shaka::media::MediaHandler::SetHandler(int output_stream_index, std::shared_ptr< MediaHandler > handler)shaka::media::MediaHandler
SetKeySource(std::unique_ptr< KeySource > key_source)shaka::media::Demuxer
SetLanguageOverride(const std::string &stream_label, const std::string &language_override)shaka::media::Demuxer
ValidateOutputStreamIndex(int stream_index) const overrideshaka::media::Demuxerinlineprotectedvirtual
~Demuxer() (defined in shaka::media::Demuxer)shaka::media::Demuxer
~MediaHandler()=default (defined in shaka::media::MediaHandler)shaka::media::MediaHandlervirtual
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 7fa0e72edd..3ae29b36df 100644 --- a/docs/d1/db0/structshaka_1_1media_1_1mp4_1_1VideoMediaHeader.html +++ b/docs/d1/db0/structshaka_1_1media_1_1mp4_1_1VideoMediaHeader.html @@ -191,7 +191,7 @@ Additional Inherited Members diff --git a/docs/d1/db2/decoder__configuration__record_8h_source.html b/docs/d1/db2/decoder__configuration__record_8h_source.html index 4df52cf6f7..9bae8999ee 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 246a935236..98d86d795f 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 eff69ff997..c12ed0819d 100644 --- a/docs/d1/dc2/h26x__bit__reader_8h_source.html +++ b/docs/d1/dc2/h26x__bit__reader_8h_source.html @@ -192,7 +192,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/dcb/encrypting__fragmenter_8h_source.html b/docs/d1/dcb/encrypting__fragmenter_8h_source.html index e9d520a9bc..82f48ff45a 100644 --- a/docs/d1/dcb/encrypting__fragmenter_8h_source.html +++ b/docs/d1/dcb/encrypting__fragmenter_8h_source.html @@ -194,7 +194,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 ce7a0b2f75..06907425d1 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 029c6e2c89..8067d591f7 100644 --- a/docs/d1/dd6/structshaka_1_1media_1_1mp4_1_1DataInformation-members.html +++ b/docs/d1/dd6/structshaka_1_1media_1_1mp4_1_1DataInformation-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/de2/classshaka_1_1media_1_1VideoStreamInfo-members.html b/docs/d1/de2/classshaka_1_1media_1_1VideoStreamInfo-members.html index a714386f49..644e52894b 100644 --- a/docs/d1/de2/classshaka_1_1media_1_1VideoStreamInfo-members.html +++ b/docs/d1/de2/classshaka_1_1media_1_1VideoStreamInfo-members.html @@ -129,7 +129,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d1/de2/composition__offset__iterator_8cc_source.html b/docs/d1/de2/composition__offset__iterator_8cc_source.html index 1d4cdee5d3..d42fe9b4d9 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 13acc39156..a5d1ebb9a3 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 5bd7efc5e2..cf7a2cb524 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 23d7bbac2d..1d25304d14 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 ac8789ee43..5229ded4c2 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 ffd7fa754b..97d560e746 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 84c0e9ec65..11c0de005a 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 c474af2c65..4fe27178b7 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 3ee52ea950..dee6c79664 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 5921eae409..d7b96f70b2 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 1375bbd077..7138d6a9c7 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 af17b627e8..22bbba07c8 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 ee07692da7..45132c119c 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 2e87e9fa60..d658179851 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 c975650695..76747b6a4d 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 7250d0d6fa..3a0f41d0e6 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 ba82685b05..c685beaa8a 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 8ed7863276..248c730be1 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 a97f556423..5b20a03677 100644 --- a/docs/d2/d24/packager__util_8h_source.html +++ b/docs/d2/d24/packager__util_8h_source.html @@ -95,50 +95,40 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
6 //
7 // Packager utility functions.
8 
-
9 #ifndef APP_PACKAGER_UTIL_H_
-
10 #define APP_PACKAGER_UTIL_H_
+
9 #ifndef PACKAGER_APP_PACKAGER_UTIL_H_
+
10 #define PACKAGER_APP_PACKAGER_UTIL_H_
11 
12 #include <gflags/gflags.h>
-
13 #include <memory>
-
14 #include <string>
-
15 #include <vector>
-
16 
-
17 DECLARE_bool(dump_stream_info);
-
18 
-
19 namespace shaka {
-
20 
-
21 struct MpdOptions;
-
22 
-
23 namespace media {
-
24 
-
25 class KeySource;
-
26 class MediaStream;
-
27 class Muxer;
-
28 struct MuxerOptions;
-
29 
-
31 void DumpStreamInfo(const std::vector<std::unique_ptr<MediaStream>>& streams);
+
13 
+
14 #include <memory>
+
15 
+
16 DECLARE_bool(dump_stream_info);
+
17 
+
18 namespace shaka {
+
19 
+
20 struct MpdOptions;
+
21 
+
22 namespace media {
+
23 
+
24 class KeySource;
+
25 struct MuxerOptions;
+
26 
+
31 std::unique_ptr<KeySource> CreateEncryptionKeySource();
32 
-
37 std::unique_ptr<KeySource> CreateEncryptionKeySource();
+
37 std::unique_ptr<KeySource> CreateDecryptionKeySource();
38 
-
43 std::unique_ptr<KeySource> CreateDecryptionKeySource();
+
40 bool GetMuxerOptions(MuxerOptions* muxer_options);
+
41 
+
43 bool GetMpdOptions(bool on_demand_profile, MpdOptions* mpd_options);
44 
-
46 bool GetMuxerOptions(MuxerOptions* muxer_options);
+
45 } // namespace media
+
46 } // namespace shaka
47 
-
49 bool GetMpdOptions(bool on_demand_profile, MpdOptions* mpd_options);
-
50 
-
60 bool AddStreamToMuxer(const std::vector<std::unique_ptr<MediaStream>>& streams,
-
61  const std::string& stream_selector,
-
62  const std::string& language_override,
-
63  Muxer* muxer);
-
64 
-
65 } // namespace media
-
66 } // namespace shaka
-
67 
-
68 #endif // APP_PACKAGER_UTIL_H_
+
48 #endif // PACKAGER_APP_PACKAGER_UTIL_H_
diff --git a/docs/d2/d29/classshaka_1_1media_1_1mp4_1_1KeyRotationFragmenter.html b/docs/d2/d29/classshaka_1_1media_1_1mp4_1_1KeyRotationFragmenter.html index a76e87cf00..db39b32b4d 100644 --- a/docs/d2/d29/classshaka_1_1media_1_1mp4_1_1KeyRotationFragmenter.html +++ b/docs/d2/d29/classshaka_1_1media_1_1mp4_1_1KeyRotationFragmenter.html @@ -328,7 +328,7 @@ void set_encryption_key diff --git a/docs/d2/d30/tracks__builder_8cc_source.html b/docs/d2/d30/tracks__builder_8cc_source.html index b4da20be7b..911adb3857 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 71572ebb82..848aefa2f0 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 4ad298c96f..ce5894bbd1 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 1dcbabc501..76f4a6802c 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 8b6e59d893..b09e7b39e9 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 7ad9961566..2425d5b564 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 @@ -365,7 +365,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 ea9db14683..25eaa912a6 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 a561222597..8ffd1634cb 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 bbb159c331..1ff8e5a68f 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 336c03f9b5..f438aaffdc 100644 --- a/docs/d2/d59/structshaka_1_1media_1_1H264SliceHeader.html +++ b/docs/d2/d59/structshaka_1_1media_1_1H264SliceHeader.html @@ -276,7 +276,7 @@ int slice_beta_offset_div2 diff --git a/docs/d2/d5b/classshaka_1_1media_1_1KeySource-members.html b/docs/d2/d5b/classshaka_1_1media_1_1KeySource-members.html index f1f21a8fdc..5226b3977b 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 7d4ec12746..3b89970c42 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 d49f5f5887..53bebc9e81 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 98a6053237..914b3d5636 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 a5e4f82e92..d9fb82d330 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 d0218f9bf9..0c0a210dd5 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 448f6ab7ba..e861211cca 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 d140e69d45..b3e4fda749 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 595f3f59c7..374709e60e 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 aa38e9f0e3..4bfa989e14 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 d318e16d91..53929f724c 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 2adb2a61f7..f1ebc47865 100644 --- a/docs/d2/d7f/structshaka_1_1media_1_1mp4_1_1CuePayloadBox.html +++ b/docs/d2/d7f/structshaka_1_1media_1_1mp4_1_1CuePayloadBox.html @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d2/d8a/hls__notify__muxer__listener_8h_source.html b/docs/d2/d8a/hls__notify__muxer__listener_8h_source.html index 8d5ad38d5b..ae7aec04b4 100644 --- a/docs/d2/d8a/hls__notify__muxer__listener_8h_source.html +++ b/docs/d2/d8a/hls__notify__muxer__listener_8h_source.html @@ -176,7 +176,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/d91/structshaka_1_1media_1_1mp4_1_1CuePayloadBox-members.html b/docs/d2/d91/structshaka_1_1media_1_1mp4_1_1CuePayloadBox-members.html index 628471b496..92605507cd 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 1956f62b6e..0016a72503 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 420c284bb6..f16a1677bd 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 59f8f59bef..b3eaa654cd 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 0eceff353e..73aea46459 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 2a1b953c08..e952328a39 100644 --- a/docs/d2/da8/mp4_2segmenter_8cc_source.html +++ b/docs/d2/da8/mp4_2segmenter_8cc_source.html @@ -102,165 +102,165 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
13 #include "packager/media/base/buffer_writer.h"
14 #include "packager/media/base/key_source.h"
15 #include "packager/media/base/media_sample.h"
-
16 #include "packager/media/base/media_stream.h"
-
17 #include "packager/media/base/muxer_options.h"
-
18 #include "packager/media/base/muxer_util.h"
-
19 #include "packager/media/base/video_stream_info.h"
-
20 #include "packager/media/event/muxer_listener.h"
-
21 #include "packager/media/event/progress_listener.h"
-
22 #include "packager/media/formats/mp4/box_definitions.h"
-
23 #include "packager/media/formats/mp4/key_rotation_fragmenter.h"
-
24 #include "packager/version/version.h"
-
25 
-
26 namespace shaka {
-
27 namespace media {
-
28 namespace mp4 {
-
29 
-
30 namespace {
-
31 const size_t kCencKeyIdSize = 16u;
-
32 
-
33 // The version of cenc implemented here. CENC 4.
-
34 const int kCencSchemeVersion = 0x00010000;
-
35 
-
36 // The default KID for key rotation is all 0s.
-
37 const uint8_t kKeyRotationDefaultKeyId[] = {
-
38  0, 0, 0, 0, 0, 0, 0, 0,
-
39  0, 0, 0, 0, 0, 0, 0, 0
-
40 };
-
41 
-
42 // Defines protection pattern for pattern-based encryption.
-
43 struct ProtectionPattern {
-
44  uint8_t crypt_byte_block;
-
45  uint8_t skip_byte_block;
-
46 };
-
47 
-
48 static_assert(arraysize(kKeyRotationDefaultKeyId) == kCencKeyIdSize,
-
49  "cenc_key_id_must_be_size_16");
-
50 
-
51 uint64_t Rescale(uint64_t time_in_old_scale,
-
52  uint32_t old_scale,
-
53  uint32_t new_scale) {
-
54  return static_cast<double>(time_in_old_scale) / old_scale * new_scale;
-
55 }
-
56 
-
57 ProtectionPattern GetProtectionPattern(FourCC protection_scheme,
-
58  TrackType track_type) {
-
59  ProtectionPattern pattern;
-
60  if (protection_scheme != FOURCC_cbcs && protection_scheme != FOURCC_cens) {
-
61  // Not using pattern encryption.
-
62  pattern.crypt_byte_block = 0u;
-
63  pattern.skip_byte_block = 0u;
-
64  } else if (track_type != kVideo) {
-
65  // Tracks other than video are protected using whole-block full-sample
-
66  // encryption, which is essentially a pattern of 1:0. Note that this may not
-
67  // be the same as the non-pattern based encryption counterparts, e.g. in
-
68  // 'cens' for full sample encryption, the whole sample is encrypted up to
-
69  // the last 16-byte boundary, see 23001-7:2016(E) 9.7; while in 'cenc' for
-
70  // full sample encryption, the last partial 16-byte block is also encrypted,
-
71  // see 23001-7:2016(E) 9.4.2. Another difference is the use of constant iv.
-
72  pattern.crypt_byte_block = 1u;
-
73  pattern.skip_byte_block = 0u;
-
74  } else {
-
75  // Use 1:9 pattern for video.
-
76  const uint8_t kCryptByteBlock = 1u;
-
77  const uint8_t kSkipByteBlock = 9u;
-
78  pattern.crypt_byte_block = kCryptByteBlock;
-
79  pattern.skip_byte_block = kSkipByteBlock;
-
80  }
-
81  return pattern;
-
82 }
-
83 
-
84 void GenerateSinf(const EncryptionKey& encryption_key,
-
85  FourCC old_type,
-
86  FourCC protection_scheme,
-
87  ProtectionPattern pattern,
-
88  ProtectionSchemeInfo* sinf) {
-
89  sinf->format.format = old_type;
-
90 
-
91  DCHECK_NE(protection_scheme, FOURCC_NULL);
-
92  sinf->type.type = protection_scheme;
-
93  sinf->type.version = kCencSchemeVersion;
-
94 
-
95  auto& track_encryption = sinf->info.track_encryption;
-
96  track_encryption.default_is_protected = 1;
-
97  DCHECK(!encryption_key.iv.empty());
-
98  if (protection_scheme == FOURCC_cbcs) {
-
99  // ISO/IEC 23001-7:2016 10.4.1
-
100  // For 'cbcs' scheme, Constant IVs SHALL be used.
-
101  track_encryption.default_per_sample_iv_size = 0;
-
102  track_encryption.default_constant_iv = encryption_key.iv;
-
103  } else {
-
104  track_encryption.default_per_sample_iv_size =
-
105  static_cast<uint8_t>(encryption_key.iv.size());
-
106  }
-
107  track_encryption.default_crypt_byte_block = pattern.crypt_byte_block;
-
108  track_encryption.default_skip_byte_block = pattern.skip_byte_block;
-
109  track_encryption.default_kid = encryption_key.key_id;
-
110 }
-
111 
-
112 void GenerateEncryptedSampleEntry(const EncryptionKey& encryption_key,
-
113  double clear_lead_in_seconds,
-
114  FourCC protection_scheme,
-
115  ProtectionPattern pattern,
-
116  SampleDescription* description) {
-
117  DCHECK(description);
-
118  if (description->type == kVideo) {
-
119  DCHECK_EQ(1u, description->video_entries.size());
-
120 
-
121  // Add a second entry for clear content if needed.
-
122  if (clear_lead_in_seconds > 0)
-
123  description->video_entries.push_back(description->video_entries[0]);
-
124 
-
125  // Convert the first entry to an encrypted entry.
-
126  VideoSampleEntry& entry = description->video_entries[0];
-
127  GenerateSinf(encryption_key, entry.format, protection_scheme, pattern,
-
128  &entry.sinf);
-
129  entry.format = FOURCC_encv;
-
130  } else {
-
131  DCHECK_EQ(kAudio, description->type);
-
132  DCHECK_EQ(1u, description->audio_entries.size());
-
133 
-
134  // Add a second entry for clear content if needed.
-
135  if (clear_lead_in_seconds > 0)
-
136  description->audio_entries.push_back(description->audio_entries[0]);
-
137 
-
138  // Convert the first entry to an encrypted entry.
-
139  AudioSampleEntry& entry = description->audio_entries[0];
-
140  GenerateSinf(encryption_key, entry.format, protection_scheme, pattern,
-
141  &entry.sinf);
-
142  entry.format = FOURCC_enca;
-
143  }
-
144 }
-
145 
-
146 } // namespace
-
147 
-
148 Segmenter::Segmenter(const MuxerOptions& options,
-
149  std::unique_ptr<FileType> ftyp,
-
150  std::unique_ptr<Movie> moov)
-
151  : options_(options),
-
152  ftyp_(std::move(ftyp)),
-
153  moov_(std::move(moov)),
-
154  moof_(new MovieFragment()),
-
155  fragment_buffer_(new BufferWriter()),
-
156  sidx_(new SegmentIndex()),
-
157  muxer_listener_(NULL),
-
158  progress_listener_(NULL),
-
159  progress_target_(0),
-
160  accumulated_progress_(0),
-
161  sample_duration_(0u) {}
-
162 
-
163 Segmenter::~Segmenter() {}
-
164 
-
165 Status Segmenter::Initialize(const std::vector<MediaStream*>& streams,
-
166  MuxerListener* muxer_listener,
-
167  ProgressListener* progress_listener,
-
168  KeySource* encryption_key_source,
-
169  uint32_t max_sd_pixels,
-
170  uint32_t max_hd_pixels,
-
171  uint32_t max_uhd1_pixels,
-
172  double clear_lead_in_seconds,
-
173  double crypto_period_duration_in_seconds,
-
174  FourCC protection_scheme) {
+
16 #include "packager/media/base/muxer_options.h"
+
17 #include "packager/media/base/muxer_util.h"
+
18 #include "packager/media/base/video_stream_info.h"
+
19 #include "packager/media/event/muxer_listener.h"
+
20 #include "packager/media/event/progress_listener.h"
+
21 #include "packager/media/formats/mp4/box_definitions.h"
+
22 #include "packager/media/formats/mp4/key_rotation_fragmenter.h"
+
23 #include "packager/version/version.h"
+
24 
+
25 namespace shaka {
+
26 namespace media {
+
27 namespace mp4 {
+
28 
+
29 namespace {
+
30 const size_t kCencKeyIdSize = 16u;
+
31 
+
32 // The version of cenc implemented here. CENC 4.
+
33 const int kCencSchemeVersion = 0x00010000;
+
34 
+
35 // The default KID for key rotation is all 0s.
+
36 const uint8_t kKeyRotationDefaultKeyId[] = {
+
37  0, 0, 0, 0, 0, 0, 0, 0,
+
38  0, 0, 0, 0, 0, 0, 0, 0
+
39 };
+
40 
+
41 // Defines protection pattern for pattern-based encryption.
+
42 struct ProtectionPattern {
+
43  uint8_t crypt_byte_block;
+
44  uint8_t skip_byte_block;
+
45 };
+
46 
+
47 static_assert(arraysize(kKeyRotationDefaultKeyId) == kCencKeyIdSize,
+
48  "cenc_key_id_must_be_size_16");
+
49 
+
50 uint64_t Rescale(uint64_t time_in_old_scale,
+
51  uint32_t old_scale,
+
52  uint32_t new_scale) {
+
53  return static_cast<double>(time_in_old_scale) / old_scale * new_scale;
+
54 }
+
55 
+
56 ProtectionPattern GetProtectionPattern(FourCC protection_scheme,
+
57  TrackType track_type) {
+
58  ProtectionPattern pattern;
+
59  if (protection_scheme != FOURCC_cbcs && protection_scheme != FOURCC_cens) {
+
60  // Not using pattern encryption.
+
61  pattern.crypt_byte_block = 0u;
+
62  pattern.skip_byte_block = 0u;
+
63  } else if (track_type != kVideo) {
+
64  // Tracks other than video are protected using whole-block full-sample
+
65  // encryption, which is essentially a pattern of 1:0. Note that this may not
+
66  // be the same as the non-pattern based encryption counterparts, e.g. in
+
67  // 'cens' for full sample encryption, the whole sample is encrypted up to
+
68  // the last 16-byte boundary, see 23001-7:2016(E) 9.7; while in 'cenc' for
+
69  // full sample encryption, the last partial 16-byte block is also encrypted,
+
70  // see 23001-7:2016(E) 9.4.2. Another difference is the use of constant iv.
+
71  pattern.crypt_byte_block = 1u;
+
72  pattern.skip_byte_block = 0u;
+
73  } else {
+
74  // Use 1:9 pattern for video.
+
75  const uint8_t kCryptByteBlock = 1u;
+
76  const uint8_t kSkipByteBlock = 9u;
+
77  pattern.crypt_byte_block = kCryptByteBlock;
+
78  pattern.skip_byte_block = kSkipByteBlock;
+
79  }
+
80  return pattern;
+
81 }
+
82 
+
83 void GenerateSinf(const EncryptionKey& encryption_key,
+
84  FourCC old_type,
+
85  FourCC protection_scheme,
+
86  ProtectionPattern pattern,
+
87  ProtectionSchemeInfo* sinf) {
+
88  sinf->format.format = old_type;
+
89 
+
90  DCHECK_NE(protection_scheme, FOURCC_NULL);
+
91  sinf->type.type = protection_scheme;
+
92  sinf->type.version = kCencSchemeVersion;
+
93 
+
94  auto& track_encryption = sinf->info.track_encryption;
+
95  track_encryption.default_is_protected = 1;
+
96  DCHECK(!encryption_key.iv.empty());
+
97  if (protection_scheme == FOURCC_cbcs) {
+
98  // ISO/IEC 23001-7:2016 10.4.1
+
99  // For 'cbcs' scheme, Constant IVs SHALL be used.
+
100  track_encryption.default_per_sample_iv_size = 0;
+
101  track_encryption.default_constant_iv = encryption_key.iv;
+
102  } else {
+
103  track_encryption.default_per_sample_iv_size =
+
104  static_cast<uint8_t>(encryption_key.iv.size());
+
105  }
+
106  track_encryption.default_crypt_byte_block = pattern.crypt_byte_block;
+
107  track_encryption.default_skip_byte_block = pattern.skip_byte_block;
+
108  track_encryption.default_kid = encryption_key.key_id;
+
109 }
+
110 
+
111 void GenerateEncryptedSampleEntry(const EncryptionKey& encryption_key,
+
112  double clear_lead_in_seconds,
+
113  FourCC protection_scheme,
+
114  ProtectionPattern pattern,
+
115  SampleDescription* description) {
+
116  DCHECK(description);
+
117  if (description->type == kVideo) {
+
118  DCHECK_EQ(1u, description->video_entries.size());
+
119 
+
120  // Add a second entry for clear content if needed.
+
121  if (clear_lead_in_seconds > 0)
+
122  description->video_entries.push_back(description->video_entries[0]);
+
123 
+
124  // Convert the first entry to an encrypted entry.
+
125  VideoSampleEntry& entry = description->video_entries[0];
+
126  GenerateSinf(encryption_key, entry.format, protection_scheme, pattern,
+
127  &entry.sinf);
+
128  entry.format = FOURCC_encv;
+
129  } else {
+
130  DCHECK_EQ(kAudio, description->type);
+
131  DCHECK_EQ(1u, description->audio_entries.size());
+
132 
+
133  // Add a second entry for clear content if needed.
+
134  if (clear_lead_in_seconds > 0)
+
135  description->audio_entries.push_back(description->audio_entries[0]);
+
136 
+
137  // Convert the first entry to an encrypted entry.
+
138  AudioSampleEntry& entry = description->audio_entries[0];
+
139  GenerateSinf(encryption_key, entry.format, protection_scheme, pattern,
+
140  &entry.sinf);
+
141  entry.format = FOURCC_enca;
+
142  }
+
143 }
+
144 
+
145 } // namespace
+
146 
+
147 Segmenter::Segmenter(const MuxerOptions& options,
+
148  std::unique_ptr<FileType> ftyp,
+
149  std::unique_ptr<Movie> moov)
+
150  : options_(options),
+
151  ftyp_(std::move(ftyp)),
+
152  moov_(std::move(moov)),
+
153  moof_(new MovieFragment()),
+
154  fragment_buffer_(new BufferWriter()),
+
155  sidx_(new SegmentIndex()),
+
156  muxer_listener_(NULL),
+
157  progress_listener_(NULL),
+
158  progress_target_(0),
+
159  accumulated_progress_(0),
+
160  sample_duration_(0u) {}
+
161 
+
162 Segmenter::~Segmenter() {}
+
163 
+ +
165  const std::vector<std::shared_ptr<StreamInfo>>& streams,
+
166  MuxerListener* muxer_listener,
+
167  ProgressListener* progress_listener,
+
168  KeySource* encryption_key_source,
+
169  uint32_t max_sd_pixels,
+
170  uint32_t max_hd_pixels,
+
171  uint32_t max_uhd1_pixels,
+
172  double clear_lead_in_seconds,
+
173  double crypto_period_duration_in_seconds,
+
174  FourCC protection_scheme) {
175  DCHECK_LT(0u, streams.size());
176  muxer_listener_ = muxer_listener;
177  progress_listener_ = progress_listener;
@@ -273,315 +273,309 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
184  const bool kInitialEncryptionInfo = true;
185 
186  for (uint32_t i = 0; i < streams.size(); ++i) {
-
187  stream_map_[streams[i]] = i;
-
188  moof_->tracks[i].header.track_id = i + 1;
-
189  if (streams[i]->info()->stream_type() == kStreamVideo) {
-
190  // Use the first video stream as the reference stream (which is 1-based).
-
191  if (sidx_->reference_id == 0)
-
192  sidx_->reference_id = i + 1;
-
193  }
-
194  if (!encryption_key_source) {
-
195  fragmenters_[i].reset(
-
196  new Fragmenter(streams[i]->info(), &moof_->tracks[i]));
-
197  continue;
-
198  }
-
199 
-
200  KeySource::TrackType track_type =
-
201  GetTrackTypeForEncryption(*streams[i]->info(), max_sd_pixels,
-
202  max_hd_pixels, max_uhd1_pixels);
-
203  SampleDescription& description =
-
204  moov_->tracks[i].media.information.sample_table.description;
-
205  ProtectionPattern pattern =
-
206  GetProtectionPattern(protection_scheme, description.type);
-
207 
-
208  if (key_rotation_enabled) {
-
209  // Fill encrypted sample entry with default key.
-
210  EncryptionKey encryption_key;
-
211  encryption_key.key_id.assign(
-
212  kKeyRotationDefaultKeyId,
-
213  kKeyRotationDefaultKeyId + arraysize(kKeyRotationDefaultKeyId));
-
214  if (!AesCryptor::GenerateRandomIv(protection_scheme,
-
215  &encryption_key.iv)) {
-
216  return Status(error::INTERNAL_ERROR, "Failed to generate random iv.");
-
217  }
-
218  GenerateEncryptedSampleEntry(encryption_key, clear_lead_in_seconds,
-
219  protection_scheme, pattern, &description);
-
220  if (muxer_listener_) {
-
221  muxer_listener_->OnEncryptionInfoReady(
-
222  kInitialEncryptionInfo, protection_scheme, encryption_key.key_id,
-
223  encryption_key.iv, encryption_key.key_system_info);
-
224  }
-
225 
-
226  fragmenters_[i].reset(new KeyRotationFragmenter(
-
227  moof_.get(), streams[i]->info(), &moof_->tracks[i],
-
228  encryption_key_source, track_type,
-
229  crypto_period_duration_in_seconds * streams[i]->info()->time_scale(),
-
230  clear_lead_in_seconds * streams[i]->info()->time_scale(),
-
231  protection_scheme, pattern.crypt_byte_block, pattern.skip_byte_block,
-
232  muxer_listener_));
-
233  continue;
-
234  }
-
235 
-
236  std::unique_ptr<EncryptionKey> encryption_key(new EncryptionKey());
-
237  Status status =
-
238  encryption_key_source->GetKey(track_type, encryption_key.get());
-
239  if (!status.ok())
-
240  return status;
-
241  if (encryption_key->iv.empty()) {
-
242  if (!AesCryptor::GenerateRandomIv(protection_scheme,
-
243  &encryption_key->iv)) {
-
244  return Status(error::INTERNAL_ERROR, "Failed to generate random iv.");
-
245  }
-
246  }
-
247 
-
248  GenerateEncryptedSampleEntry(*encryption_key, clear_lead_in_seconds,
-
249  protection_scheme, pattern, &description);
-
250 
-
251  if (moov_->pssh.empty()) {
-
252  moov_->pssh.resize(encryption_key->key_system_info.size());
-
253  for (size_t i = 0; i < encryption_key->key_system_info.size(); i++) {
-
254  moov_->pssh[i].raw_box = encryption_key->key_system_info[i].CreateBox();
-
255  }
-
256 
-
257  if (muxer_listener_) {
-
258  muxer_listener_->OnEncryptionInfoReady(
-
259  kInitialEncryptionInfo, protection_scheme, encryption_key->key_id,
-
260  encryption_key->iv, encryption_key->key_system_info);
-
261  }
-
262  }
-
263 
-
264  fragmenters_[i].reset(new EncryptingFragmenter(
-
265  streams[i]->info(), &moof_->tracks[i], std::move(encryption_key),
-
266  clear_lead_in_seconds * streams[i]->info()->time_scale(),
-
267  protection_scheme, pattern.crypt_byte_block, pattern.skip_byte_block,
-
268  muxer_listener_));
+
187  moof_->tracks[i].header.track_id = i + 1;
+
188  if (streams[i]->stream_type() == kStreamVideo) {
+
189  // Use the first video stream as the reference stream (which is 1-based).
+
190  if (sidx_->reference_id == 0)
+
191  sidx_->reference_id = i + 1;
+
192  }
+
193  if (!encryption_key_source) {
+
194  fragmenters_[i].reset(new Fragmenter(streams[i], &moof_->tracks[i]));
+
195  continue;
+
196  }
+
197 
+
198  KeySource::TrackType track_type = GetTrackTypeForEncryption(
+
199  *streams[i], max_sd_pixels, max_hd_pixels, max_uhd1_pixels);
+
200  SampleDescription& description =
+
201  moov_->tracks[i].media.information.sample_table.description;
+
202  ProtectionPattern pattern =
+
203  GetProtectionPattern(protection_scheme, description.type);
+
204 
+
205  if (key_rotation_enabled) {
+
206  // Fill encrypted sample entry with default key.
+
207  EncryptionKey encryption_key;
+
208  encryption_key.key_id.assign(
+
209  kKeyRotationDefaultKeyId,
+
210  kKeyRotationDefaultKeyId + arraysize(kKeyRotationDefaultKeyId));
+
211  if (!AesCryptor::GenerateRandomIv(protection_scheme,
+
212  &encryption_key.iv)) {
+
213  return Status(error::INTERNAL_ERROR, "Failed to generate random iv.");
+
214  }
+
215  GenerateEncryptedSampleEntry(encryption_key, clear_lead_in_seconds,
+
216  protection_scheme, pattern, &description);
+
217  if (muxer_listener_) {
+
218  muxer_listener_->OnEncryptionInfoReady(
+
219  kInitialEncryptionInfo, protection_scheme, encryption_key.key_id,
+
220  encryption_key.iv, encryption_key.key_system_info);
+
221  }
+
222 
+
223  fragmenters_[i].reset(new KeyRotationFragmenter(
+
224  moof_.get(), streams[i], &moof_->tracks[i], encryption_key_source,
+
225  track_type,
+
226  crypto_period_duration_in_seconds * streams[i]->time_scale(),
+
227  clear_lead_in_seconds * streams[i]->time_scale(), protection_scheme,
+
228  pattern.crypt_byte_block, pattern.skip_byte_block, muxer_listener_));
+
229  continue;
+
230  }
+
231 
+
232  std::unique_ptr<EncryptionKey> encryption_key(new EncryptionKey());
+
233  Status status =
+
234  encryption_key_source->GetKey(track_type, encryption_key.get());
+
235  if (!status.ok())
+
236  return status;
+
237  if (encryption_key->iv.empty()) {
+
238  if (!AesCryptor::GenerateRandomIv(protection_scheme,
+
239  &encryption_key->iv)) {
+
240  return Status(error::INTERNAL_ERROR, "Failed to generate random iv.");
+
241  }
+
242  }
+
243 
+
244  GenerateEncryptedSampleEntry(*encryption_key, clear_lead_in_seconds,
+
245  protection_scheme, pattern, &description);
+
246 
+
247  if (moov_->pssh.empty()) {
+
248  moov_->pssh.resize(encryption_key->key_system_info.size());
+
249  for (size_t i = 0; i < encryption_key->key_system_info.size(); i++) {
+
250  moov_->pssh[i].raw_box = encryption_key->key_system_info[i].CreateBox();
+
251  }
+
252 
+
253  if (muxer_listener_) {
+
254  muxer_listener_->OnEncryptionInfoReady(
+
255  kInitialEncryptionInfo, protection_scheme, encryption_key->key_id,
+
256  encryption_key->iv, encryption_key->key_system_info);
+
257  }
+
258  }
+
259 
+
260  fragmenters_[i].reset(new EncryptingFragmenter(
+
261  streams[i], &moof_->tracks[i], std::move(encryption_key),
+
262  clear_lead_in_seconds * streams[i]->time_scale(), protection_scheme,
+
263  pattern.crypt_byte_block, pattern.skip_byte_block, muxer_listener_));
+
264  }
+
265 
+ +
267  for (uint32_t i = 0; i < streams.size(); ++i)
+
268  fragmenters_[i]->set_use_decoding_timestamp_in_timeline(true);
269  }
270 
- -
272  for (uint32_t i = 0; i < streams.size(); ++i)
-
273  fragmenters_[i]->set_use_decoding_timestamp_in_timeline(true);
-
274  }
+
271  // Choose the first stream if there is no VIDEO.
+
272  if (sidx_->reference_id == 0)
+
273  sidx_->reference_id = 1;
+
274  sidx_->timescale = streams[GetReferenceStreamId()]->time_scale();
275 
-
276  // Choose the first stream if there is no VIDEO.
-
277  if (sidx_->reference_id == 0)
-
278  sidx_->reference_id = 1;
-
279  sidx_->timescale = streams[GetReferenceStreamId()]->info()->time_scale();
-
280 
-
281  // Use media duration as progress target.
-
282  progress_target_ = streams[GetReferenceStreamId()]->info()->duration();
-
283 
-
284  // Use the reference stream's time scale as movie time scale.
-
285  moov_->header.timescale = sidx_->timescale;
-
286  moof_->header.sequence_number = 1;
-
287 
-
288  // Fill in version information.
-
289  const std::string version = GetPackagerVersion();
-
290  if (!version.empty()) {
-
291  moov_->metadata.handler.handler_type = FOURCC_ID32;
-
292  moov_->metadata.id3v2.language.code = "eng";
-
293  moov_->metadata.id3v2.private_frame.owner = GetPackagerProjectUrl();
-
294  moov_->metadata.id3v2.private_frame.value = version;
-
295  }
-
296  return DoInitialize();
-
297 }
-
298 
- -
300  for (const std::unique_ptr<Fragmenter>& fragmenter : fragmenters_) {
-
301  Status status = FinalizeFragment(true, fragmenter.get());
-
302  if (!status.ok())
-
303  return status;
-
304  }
-
305 
-
306  // Set tracks and moov durations.
-
307  // Note that the updated moov box will be written to output file for VOD case
-
308  // only.
-
309  for (std::vector<Track>::iterator track = moov_->tracks.begin();
-
310  track != moov_->tracks.end();
-
311  ++track) {
-
312  track->header.duration = Rescale(track->media.header.duration,
-
313  track->media.header.timescale,
-
314  moov_->header.timescale);
-
315  if (track->header.duration > moov_->header.duration)
-
316  moov_->header.duration = track->header.duration;
-
317  }
-
318  moov_->extends.header.fragment_duration = moov_->header.duration;
-
319 
-
320  return DoFinalize();
-
321 }
-
322 
- -
324  std::shared_ptr<MediaSample> sample) {
-
325  // Find the fragmenter for this stream.
-
326  DCHECK(stream);
-
327  DCHECK(stream_map_.find(stream) != stream_map_.end());
-
328  uint32_t stream_id = stream_map_[stream];
-
329  Fragmenter* fragmenter = fragmenters_[stream_id].get();
-
330 
-
331  // Set default sample duration if it has not been set yet.
-
332  if (moov_->extends.tracks[stream_id].default_sample_duration == 0) {
-
333  moov_->extends.tracks[stream_id].default_sample_duration =
-
334  sample->duration();
-
335  }
-
336 
-
337  if (fragmenter->fragment_finalized()) {
-
338  return Status(error::FRAGMENT_FINALIZED,
-
339  "Current fragment is finalized already.");
-
340  }
-
341 
-
342  bool finalize_fragment = false;
-
343  if (fragmenter->fragment_duration() >=
-
344  options_.fragment_duration * stream->info()->time_scale()) {
-
345  if (sample->is_key_frame() || !options_.fragment_sap_aligned) {
-
346  finalize_fragment = true;
-
347  }
-
348  }
-
349  bool finalize_segment = false;
-
350  if (segment_durations_[stream_id] >=
-
351  options_.segment_duration * stream->info()->time_scale()) {
-
352  if (sample->is_key_frame() || !options_.segment_sap_aligned) {
-
353  finalize_segment = true;
-
354  finalize_fragment = true;
-
355  }
+
276  // Use media duration as progress target.
+
277  progress_target_ = streams[GetReferenceStreamId()]->duration();
+
278 
+
279  // Use the reference stream's time scale as movie time scale.
+
280  moov_->header.timescale = sidx_->timescale;
+
281  moof_->header.sequence_number = 1;
+
282 
+
283  // Fill in version information.
+
284  const std::string version = GetPackagerVersion();
+
285  if (!version.empty()) {
+
286  moov_->metadata.handler.handler_type = FOURCC_ID32;
+
287  moov_->metadata.id3v2.language.code = "eng";
+
288  moov_->metadata.id3v2.private_frame.owner = GetPackagerProjectUrl();
+
289  moov_->metadata.id3v2.private_frame.value = version;
+
290  }
+
291  return DoInitialize();
+
292 }
+
293 
+ +
295  for (const std::unique_ptr<Fragmenter>& fragmenter : fragmenters_) {
+
296  Status status = FinalizeFragment(true, fragmenter.get());
+
297  if (!status.ok())
+
298  return status;
+
299  }
+
300 
+
301  // Set tracks and moov durations.
+
302  // Note that the updated moov box will be written to output file for VOD case
+
303  // only.
+
304  for (std::vector<Track>::iterator track = moov_->tracks.begin();
+
305  track != moov_->tracks.end();
+
306  ++track) {
+
307  track->header.duration = Rescale(track->media.header.duration,
+
308  track->media.header.timescale,
+
309  moov_->header.timescale);
+
310  if (track->header.duration > moov_->header.duration)
+
311  moov_->header.duration = track->header.duration;
+
312  }
+
313  moov_->extends.header.fragment_duration = moov_->header.duration;
+
314 
+
315  return DoFinalize();
+
316 }
+
317 
+ +
319  std::shared_ptr<MediaSample> sample) {
+
320  // TODO(kqyang): Stream id should be passed in.
+
321  const uint32_t stream_id = 0;
+
322  Fragmenter* fragmenter = fragmenters_[stream_id].get();
+
323 
+
324  // Set default sample duration if it has not been set yet.
+
325  if (moov_->extends.tracks[stream_id].default_sample_duration == 0) {
+
326  moov_->extends.tracks[stream_id].default_sample_duration =
+
327  sample->duration();
+
328  }
+
329 
+
330  if (fragmenter->fragment_finalized()) {
+
331  return Status(error::FRAGMENT_FINALIZED,
+
332  "Current fragment is finalized already.");
+
333  }
+
334 
+
335  bool finalize_fragment = false;
+
336  if (fragmenter->fragment_duration() >=
+
337  options_.fragment_duration * stream_info.time_scale()) {
+
338  if (sample->is_key_frame() || !options_.fragment_sap_aligned) {
+
339  finalize_fragment = true;
+
340  }
+
341  }
+
342  bool finalize_segment = false;
+
343  if (segment_durations_[stream_id] >=
+
344  options_.segment_duration * stream_info.time_scale()) {
+
345  if (sample->is_key_frame() || !options_.segment_sap_aligned) {
+
346  finalize_segment = true;
+
347  finalize_fragment = true;
+
348  }
+
349  }
+
350 
+
351  Status status;
+
352  if (finalize_fragment) {
+
353  status = FinalizeFragment(finalize_segment, fragmenter);
+
354  if (!status.ok())
+
355  return status;
356  }
357 
-
358  Status status;
-
359  if (finalize_fragment) {
-
360  status = FinalizeFragment(finalize_segment, fragmenter);
-
361  if (!status.ok())
-
362  return status;
-
363  }
-
364 
-
365  status = fragmenter->AddSample(sample);
-
366  if (!status.ok())
-
367  return status;
-
368 
-
369  if (sample_duration_ == 0)
-
370  sample_duration_ = sample->duration();
-
371  moov_->tracks[stream_id].media.header.duration += sample->duration();
-
372  segment_durations_[stream_id] += sample->duration();
-
373  DCHECK_GE(segment_durations_[stream_id], fragmenter->fragment_duration());
-
374  return Status::OK;
-
375 }
-
376 
-
377 uint32_t Segmenter::GetReferenceTimeScale() const {
-
378  return moov_->header.timescale;
-
379 }
-
380 
-
381 double Segmenter::GetDuration() const {
-
382  if (moov_->header.timescale == 0) {
-
383  // Handling the case where this is not properly initialized.
-
384  return 0.0;
-
385  }
-
386 
-
387  return static_cast<double>(moov_->header.duration) / moov_->header.timescale;
-
388 }
-
389 
-
390 void Segmenter::UpdateProgress(uint64_t progress) {
-
391  accumulated_progress_ += progress;
-
392 
-
393  if (!progress_listener_) return;
-
394  if (progress_target_ == 0) return;
-
395  // It might happen that accumulated progress exceeds progress_target due to
-
396  // computation errors, e.g. rounding error. Cap it so it never reports > 100%
-
397  // progress.
-
398  if (accumulated_progress_ >= progress_target_) {
-
399  progress_listener_->OnProgress(1.0);
-
400  } else {
-
401  progress_listener_->OnProgress(static_cast<double>(accumulated_progress_) /
-
402  progress_target_);
-
403  }
-
404 }
-
405 
-
406 void Segmenter::SetComplete() {
-
407  if (!progress_listener_) return;
-
408  progress_listener_->OnProgress(1.0);
-
409 }
-
410 
-
411 Status Segmenter::FinalizeSegment() {
-
412  Status status = DoFinalizeSegment();
-
413 
-
414  // Reset segment information to initial state.
-
415  sidx_->references.clear();
-
416  std::vector<uint64_t>::iterator it = segment_durations_.begin();
-
417  for (; it != segment_durations_.end(); ++it)
-
418  *it = 0;
-
419 
-
420  return status;
-
421 }
-
422 
-
423 uint32_t Segmenter::GetReferenceStreamId() {
-
424  DCHECK(sidx_);
-
425  return sidx_->reference_id - 1;
-
426 }
-
427 
-
428 Status Segmenter::FinalizeFragment(bool finalize_segment,
-
429  Fragmenter* fragmenter) {
-
430  fragmenter->FinalizeFragment();
-
431 
-
432  // Check if all tracks are ready for fragmentation.
-
433  for (const std::unique_ptr<Fragmenter>& fragmenter : fragmenters_) {
-
434  if (!fragmenter->fragment_finalized())
-
435  return Status::OK;
-
436  }
-
437 
-
438  MediaData mdat;
-
439  // Data offset relative to 'moof': moof size + mdat header size.
-
440  // The code will also update box sizes for moof_ and its child boxes.
-
441  uint64_t data_offset = moof_->ComputeSize() + mdat.HeaderSize();
-
442  // 'traf' should follow 'mfhd' moof header box.
-
443  uint64_t next_traf_position = moof_->HeaderSize() + moof_->header.box_size();
-
444  for (size_t i = 0; i < moof_->tracks.size(); ++i) {
-
445  TrackFragment& traf = moof_->tracks[i];
-
446  if (traf.auxiliary_offset.offsets.size() > 0) {
-
447  DCHECK_EQ(traf.auxiliary_offset.offsets.size(), 1u);
-
448  DCHECK(!traf.sample_encryption.sample_encryption_entries.empty());
-
449 
-
450  next_traf_position += traf.box_size();
-
451  // SampleEncryption 'senc' box should be the last box in 'traf'.
-
452  // |auxiliary_offset| should point to the data of SampleEncryption.
-
453  traf.auxiliary_offset.offsets[0] =
-
454  next_traf_position - traf.sample_encryption.box_size() +
-
455  traf.sample_encryption.HeaderSize() +
-
456  sizeof(uint32_t); // for sample count field in 'senc'
-
457  }
-
458  traf.runs[0].data_offset = data_offset + mdat.data_size;
-
459  mdat.data_size += static_cast<uint32_t>(fragmenters_[i]->data()->Size());
-
460  }
+
358  status = fragmenter->AddSample(sample);
+
359  if (!status.ok())
+
360  return status;
+
361 
+
362  if (sample_duration_ == 0)
+
363  sample_duration_ = sample->duration();
+
364  moov_->tracks[stream_id].media.header.duration += sample->duration();
+
365  segment_durations_[stream_id] += sample->duration();
+
366  DCHECK_GE(segment_durations_[stream_id], fragmenter->fragment_duration());
+
367  return Status::OK;
+
368 }
+
369 
+
370 uint32_t Segmenter::GetReferenceTimeScale() const {
+
371  return moov_->header.timescale;
+
372 }
+
373 
+
374 double Segmenter::GetDuration() const {
+
375  if (moov_->header.timescale == 0) {
+
376  // Handling the case where this is not properly initialized.
+
377  return 0.0;
+
378  }
+
379 
+
380  return static_cast<double>(moov_->header.duration) / moov_->header.timescale;
+
381 }
+
382 
+
383 void Segmenter::UpdateProgress(uint64_t progress) {
+
384  accumulated_progress_ += progress;
+
385 
+
386  if (!progress_listener_) return;
+
387  if (progress_target_ == 0) return;
+
388  // It might happen that accumulated progress exceeds progress_target due to
+
389  // computation errors, e.g. rounding error. Cap it so it never reports > 100%
+
390  // progress.
+
391  if (accumulated_progress_ >= progress_target_) {
+
392  progress_listener_->OnProgress(1.0);
+
393  } else {
+
394  progress_listener_->OnProgress(static_cast<double>(accumulated_progress_) /
+
395  progress_target_);
+
396  }
+
397 }
+
398 
+
399 void Segmenter::SetComplete() {
+
400  if (!progress_listener_) return;
+
401  progress_listener_->OnProgress(1.0);
+
402 }
+
403 
+
404 Status Segmenter::FinalizeSegment() {
+
405  Status status = DoFinalizeSegment();
+
406 
+
407  // Reset segment information to initial state.
+
408  sidx_->references.clear();
+
409  std::vector<uint64_t>::iterator it = segment_durations_.begin();
+
410  for (; it != segment_durations_.end(); ++it)
+
411  *it = 0;
+
412 
+
413  return status;
+
414 }
+
415 
+
416 uint32_t Segmenter::GetReferenceStreamId() {
+
417  DCHECK(sidx_);
+
418  return sidx_->reference_id - 1;
+
419 }
+
420 
+
421 Status Segmenter::FinalizeFragment(bool finalize_segment,
+
422  Fragmenter* fragmenter) {
+
423  fragmenter->FinalizeFragment();
+
424 
+
425  // Check if all tracks are ready for fragmentation.
+
426  for (const std::unique_ptr<Fragmenter>& fragmenter : fragmenters_) {
+
427  if (!fragmenter->fragment_finalized())
+
428  return Status::OK;
+
429  }
+
430 
+
431  MediaData mdat;
+
432  // Data offset relative to 'moof': moof size + mdat header size.
+
433  // The code will also update box sizes for moof_ and its child boxes.
+
434  uint64_t data_offset = moof_->ComputeSize() + mdat.HeaderSize();
+
435  // 'traf' should follow 'mfhd' moof header box.
+
436  uint64_t next_traf_position = moof_->HeaderSize() + moof_->header.box_size();
+
437  for (size_t i = 0; i < moof_->tracks.size(); ++i) {
+
438  TrackFragment& traf = moof_->tracks[i];
+
439  if (traf.auxiliary_offset.offsets.size() > 0) {
+
440  DCHECK_EQ(traf.auxiliary_offset.offsets.size(), 1u);
+
441  DCHECK(!traf.sample_encryption.sample_encryption_entries.empty());
+
442 
+
443  next_traf_position += traf.box_size();
+
444  // SampleEncryption 'senc' box should be the last box in 'traf'.
+
445  // |auxiliary_offset| should point to the data of SampleEncryption.
+
446  traf.auxiliary_offset.offsets[0] =
+
447  next_traf_position - traf.sample_encryption.box_size() +
+
448  traf.sample_encryption.HeaderSize() +
+
449  sizeof(uint32_t); // for sample count field in 'senc'
+
450  }
+
451  traf.runs[0].data_offset = data_offset + mdat.data_size;
+
452  mdat.data_size += static_cast<uint32_t>(fragmenters_[i]->data()->Size());
+
453  }
+
454 
+
455  // Generate segment reference.
+
456  sidx_->references.resize(sidx_->references.size() + 1);
+
457  fragmenters_[GetReferenceStreamId()]->GenerateSegmentReference(
+
458  &sidx_->references[sidx_->references.size() - 1]);
+
459  sidx_->references[sidx_->references.size() - 1].referenced_size =
+
460  data_offset + mdat.data_size;
461 
-
462  // Generate segment reference.
-
463  sidx_->references.resize(sidx_->references.size() + 1);
-
464  fragmenters_[GetReferenceStreamId()]->GenerateSegmentReference(
-
465  &sidx_->references[sidx_->references.size() - 1]);
-
466  sidx_->references[sidx_->references.size() - 1].referenced_size =
-
467  data_offset + mdat.data_size;
-
468 
-
469  // Write the fragment to buffer.
-
470  moof_->Write(fragment_buffer_.get());
-
471  mdat.WriteHeader(fragment_buffer_.get());
-
472  for (const std::unique_ptr<Fragmenter>& fragmenter : fragmenters_)
-
473  fragment_buffer_->AppendBuffer(*fragmenter->data());
-
474 
-
475  // Increase sequence_number for next fragment.
-
476  ++moof_->header.sequence_number;
-
477 
-
478  if (finalize_segment)
-
479  return FinalizeSegment();
-
480 
-
481  return Status::OK;
-
482 }
-
483 
-
484 } // namespace mp4
-
485 } // namespace media
-
486 } // namespace shaka
+
462  // Write the fragment to buffer.
+
463  moof_->Write(fragment_buffer_.get());
+
464  mdat.WriteHeader(fragment_buffer_.get());
+
465  for (const std::unique_ptr<Fragmenter>& fragmenter : fragmenters_)
+
466  fragment_buffer_->AppendBuffer(*fragmenter->data());
+
467 
+
468  // Increase sequence_number for next fragment.
+
469  ++moof_->header.sequence_number;
+
470 
+
471  if (finalize_segment)
+
472  return FinalizeSegment();
+
473 
+
474  return Status::OK;
+
475 }
+
476 
+
477 } // namespace mp4
+
478 } // namespace media
+
479 } // namespace shaka
+
Abstract class holds stream information.
Definition: stream_info.h:57
- -
Status Initialize(std::unique_ptr< MkvWriter > writer, StreamInfo *info, ProgressListener *progress_listener, MuxerListener *muxer_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds)
Definition: segmenter.cc:51
+ +
Status Initialize(std::unique_ptr< MkvWriter > writer, StreamInfo *info, ProgressListener *progress_listener, MuxerListener *muxer_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds)
Definition: segmenter.cc:50
virtual Status GetKey(TrackType track_type, EncryptionKey *key)=0
This class listens to progress updates events.
virtual Status AddSample(std::shared_ptr< MediaSample > sample)
Definition: fragmenter.cc:46
-
Status AddSample(std::shared_ptr< MediaSample > sample)
Definition: segmenter.cc:124
+
Status AddSample(std::shared_ptr< MediaSample > sample)
Definition: segmenter.cc:123
@@ -590,17 +584,16 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
virtual void OnProgress(double progress)=0
- +
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:30
-
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:268
+
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:267
- 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 70aa4d9107..677f32ad4d 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 33d94b58ce..a77af43024 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 80baaadcef..07ac6546fc 100644 --- a/docs/d2/dae/webm__muxer_8cc_source.html +++ b/docs/d2/dae/webm__muxer_8cc_source.html @@ -97,133 +97,130 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
8 
9 #include "packager/media/base/fourccs.h"
10 #include "packager/media/base/media_sample.h"
-
11 #include "packager/media/base/media_stream.h"
-
12 #include "packager/media/base/stream_info.h"
-
13 #include "packager/media/formats/webm/mkv_writer.h"
-
14 #include "packager/media/formats/webm/multi_segment_segmenter.h"
-
15 #include "packager/media/formats/webm/single_segment_segmenter.h"
-
16 #include "packager/media/formats/webm/two_pass_single_segment_segmenter.h"
-
17 
-
18 namespace shaka {
-
19 namespace media {
-
20 namespace webm {
-
21 
-
22 WebMMuxer::WebMMuxer(const MuxerOptions& options) : Muxer(options) {}
-
23 WebMMuxer::~WebMMuxer() {}
-
24 
-
25 Status WebMMuxer::Initialize() {
-
26  CHECK_EQ(streams().size(), 1U);
-
27 
-
28  if (crypto_period_duration_in_seconds() > 0) {
-
29  NOTIMPLEMENTED() << "Key rotation is not implemented for WebM";
-
30  return Status(error::UNIMPLEMENTED,
-
31  "Key rotation is not implemented for WebM");
-
32  }
-
33 
-
34  if (encryption_key_source() && (protection_scheme() != FOURCC_cenc)) {
-
35  NOTIMPLEMENTED()
-
36  << "WebM does not support protection scheme other than 'cenc'.";
-
37  return Status(error::UNIMPLEMENTED,
-
38  "WebM does not support protection scheme other than 'cenc'.");
-
39  }
-
40 
-
41  std::unique_ptr<MkvWriter> writer(new MkvWriter);
-
42  Status status = writer->Open(options().output_file_name);
-
43  if (!status.ok())
-
44  return status;
-
45 
-
46  if (!options().segment_template.empty()) {
-
47  segmenter_.reset(new MultiSegmentSegmenter(options()));
-
48  } else {
-
49  segmenter_.reset(new TwoPassSingleSegmentSegmenter(options()));
-
50  }
-
51 
-
52  Status initialized = segmenter_->Initialize(
-
53  std::move(writer), streams()[0]->info().get(), progress_listener(),
-
54  muxer_listener(), encryption_key_source(), max_sd_pixels(),
-
55  max_hd_pixels(), max_uhd1_pixels(), clear_lead_in_seconds());
-
56 
-
57  if (!initialized.ok())
-
58  return initialized;
-
59 
-
60  FireOnMediaStartEvent();
-
61  return Status::OK;
-
62 }
-
63 
-
64 Status WebMMuxer::Finalize() {
-
65  DCHECK(segmenter_);
-
66  Status segmenter_finalized = segmenter_->Finalize();
-
67 
-
68  if (!segmenter_finalized.ok())
-
69  return segmenter_finalized;
-
70 
-
71  FireOnMediaEndEvent();
-
72  LOG(INFO) << "WEBM file '" << options().output_file_name << "' finalized.";
-
73  return Status::OK;
-
74 }
-
75 
-
76 Status WebMMuxer::DoAddSample(const MediaStream* stream,
-
77  std::shared_ptr<MediaSample> sample) {
-
78  DCHECK(segmenter_);
-
79  DCHECK(stream == streams()[0]);
-
80  return segmenter_->AddSample(sample);
-
81 }
-
82 
-
83 void WebMMuxer::FireOnMediaStartEvent() {
-
84  if (!muxer_listener())
-
85  return;
-
86 
-
87  DCHECK(!streams().empty()) << "Media started without a stream.";
-
88 
-
89  const uint32_t timescale = streams().front()->info()->time_scale();
-
90  muxer_listener()->OnMediaStart(options(), *streams().front()->info(),
-
91  timescale, MuxerListener::kContainerWebM);
-
92 }
-
93 
-
94 void WebMMuxer::FireOnMediaEndEvent() {
-
95  if (!muxer_listener())
-
96  return;
-
97 
-
98  uint64_t init_range_start = 0;
-
99  uint64_t init_range_end = 0;
-
100  const bool has_init_range =
-
101  segmenter_->GetInitRangeStartAndEnd(&init_range_start, &init_range_end);
-
102 
-
103  uint64_t index_range_start = 0;
-
104  uint64_t index_range_end = 0;
-
105  const bool has_index_range = segmenter_->GetIndexRangeStartAndEnd(
-
106  &index_range_start, &index_range_end);
-
107 
-
108  const float duration_seconds = segmenter_->GetDuration();
-
109 
-
110  const int64_t file_size =
-
111  File::GetFileSize(options().output_file_name.c_str());
-
112  if (file_size <= 0) {
-
113  LOG(ERROR) << "Invalid file size: " << file_size;
-
114  return;
-
115  }
-
116 
-
117  muxer_listener()->OnMediaEnd(has_init_range, init_range_start, init_range_end,
-
118  has_index_range, index_range_start,
-
119  index_range_end, duration_seconds, file_size);
-
120 }
-
121 
-
122 } // namespace webm
-
123 } // namespace media
-
124 } // namespace shaka
+
11 #include "packager/media/base/stream_info.h"
+
12 #include "packager/media/formats/webm/mkv_writer.h"
+
13 #include "packager/media/formats/webm/multi_segment_segmenter.h"
+
14 #include "packager/media/formats/webm/single_segment_segmenter.h"
+
15 #include "packager/media/formats/webm/two_pass_single_segment_segmenter.h"
+
16 
+
17 namespace shaka {
+
18 namespace media {
+
19 namespace webm {
+
20 
+
21 WebMMuxer::WebMMuxer(const MuxerOptions& options) : Muxer(options) {}
+
22 WebMMuxer::~WebMMuxer() {}
+
23 
+
24 Status WebMMuxer::InitializeMuxer() {
+
25  CHECK_EQ(streams().size(), 1U);
+
26 
+
27  if (crypto_period_duration_in_seconds() > 0) {
+
28  NOTIMPLEMENTED() << "Key rotation is not implemented for WebM";
+
29  return Status(error::UNIMPLEMENTED,
+
30  "Key rotation is not implemented for WebM");
+
31  }
+
32 
+
33  if (encryption_key_source() && (protection_scheme() != FOURCC_cenc)) {
+
34  NOTIMPLEMENTED()
+
35  << "WebM does not support protection scheme other than 'cenc'.";
+
36  return Status(error::UNIMPLEMENTED,
+
37  "WebM does not support protection scheme other than 'cenc'.");
+
38  }
+
39 
+
40  std::unique_ptr<MkvWriter> writer(new MkvWriter);
+
41  Status status = writer->Open(options().output_file_name);
+
42  if (!status.ok())
+
43  return status;
+
44 
+
45  if (!options().segment_template.empty()) {
+
46  segmenter_.reset(new MultiSegmentSegmenter(options()));
+
47  } else {
+
48  segmenter_.reset(new TwoPassSingleSegmentSegmenter(options()));
+
49  }
+
50 
+
51  Status initialized = segmenter_->Initialize(
+
52  std::move(writer), streams()[0].get(), progress_listener(),
+
53  muxer_listener(), encryption_key_source(), max_sd_pixels(),
+
54  max_hd_pixels(), max_uhd1_pixels(), clear_lead_in_seconds());
+
55 
+
56  if (!initialized.ok())
+
57  return initialized;
+
58 
+
59  FireOnMediaStartEvent();
+
60  return Status::OK;
+
61 }
+
62 
+
63 Status WebMMuxer::Finalize() {
+
64  DCHECK(segmenter_);
+
65  Status segmenter_finalized = segmenter_->Finalize();
+
66 
+
67  if (!segmenter_finalized.ok())
+
68  return segmenter_finalized;
+
69 
+
70  FireOnMediaEndEvent();
+
71  LOG(INFO) << "WEBM file '" << options().output_file_name << "' finalized.";
+
72  return Status::OK;
+
73 }
+
74 
+
75 Status WebMMuxer::DoAddSample(std::shared_ptr<MediaSample> sample) {
+
76  DCHECK(segmenter_);
+
77  return segmenter_->AddSample(sample);
+
78 }
+
79 
+
80 void WebMMuxer::FireOnMediaStartEvent() {
+
81  if (!muxer_listener())
+
82  return;
+
83 
+
84  DCHECK(!streams().empty()) << "Media started without a stream.";
+
85 
+
86  const uint32_t timescale = streams().front()->time_scale();
+
87  muxer_listener()->OnMediaStart(options(), *streams().front(), timescale,
+
88  MuxerListener::kContainerWebM);
+
89 }
+
90 
+
91 void WebMMuxer::FireOnMediaEndEvent() {
+
92  if (!muxer_listener())
+
93  return;
+
94 
+
95  uint64_t init_range_start = 0;
+
96  uint64_t init_range_end = 0;
+
97  const bool has_init_range =
+
98  segmenter_->GetInitRangeStartAndEnd(&init_range_start, &init_range_end);
+
99 
+
100  uint64_t index_range_start = 0;
+
101  uint64_t index_range_end = 0;
+
102  const bool has_index_range = segmenter_->GetIndexRangeStartAndEnd(
+
103  &index_range_start, &index_range_end);
+
104 
+
105  const float duration_seconds = segmenter_->GetDuration();
+
106 
+
107  const int64_t file_size =
+
108  File::GetFileSize(options().output_file_name.c_str());
+
109  if (file_size <= 0) {
+
110  LOG(ERROR) << "Invalid file size: " << file_size;
+
111  return;
+
112  }
+
113 
+
114  muxer_listener()->OnMediaEnd(has_init_range, init_range_start, init_range_end,
+
115  has_index_range, index_range_start,
+
116  index_range_end, duration_seconds, file_size);
+
117 }
+
118 
+
119 } // namespace webm
+
120 } // namespace media
+
121 } // 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
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
- +
virtual void OnMediaStart(const MuxerOptions &muxer_options, const StreamInfo &stream_info, uint32_t time_scale, ContainerType container_type)=0
-
WebMMuxer(const MuxerOptions &options)
Create a WebMMuxer object from MuxerOptions.
Definition: webm_muxer.cc:22
+
WebMMuxer(const MuxerOptions &options)
Create a WebMMuxer object from MuxerOptions.
Definition: webm_muxer.cc:21
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 c4cc964240..3cc12fe47e 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 a793425bd5..5016e057b5 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 9bd309af34..9573c85996 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 acb271c389..bdc22e2e2e 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 ed1a6d1e1e..f580b60afa 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 e7c09aa0ce..81ff557efa 100644 --- a/docs/d2/dc7/media__handler__test__base_8cc_source.html +++ b/docs/d2/dc7/media__handler__test__base_8cc_source.html @@ -253,7 +253,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 f0e2fff5cc..142b460a5f 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 d830f37153..9771a4efdb 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 c4e0d18baf..e562cba096 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 2d0017ca83..a8d403e5ca 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 5a980fa702..70cc15d7ab 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 @@ -227,7 +227,7 @@ uint64_t cluster_length_in

Implements shaka::media::webm::Segmenter.

-

Definition at line 29 of file multi_segment_segmenter.cc.

+

Definition at line 28 of file multi_segment_segmenter.cc.

@@ -266,7 +266,7 @@ uint64_t cluster_length_in

Implements shaka::media::webm::Segmenter.

-

Definition at line 24 of file multi_segment_segmenter.cc.

+

Definition at line 23 of file multi_segment_segmenter.cc.

@@ -277,7 +277,7 @@ uint64_t cluster_length_in diff --git a/docs/d2/dd6/mkv__writer_8h_source.html b/docs/d2/dd6/mkv__writer_8h_source.html index 0d72cbc06b..a6a20745ea 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 1b9271dff5..9872690135 100644 --- a/docs/d2/dd8/classshaka_1_1media_1_1ChunkingHandler-members.html +++ b/docs/d2/dd8/classshaka_1_1media_1_1ChunkingHandler-members.html @@ -111,15 +111,16 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); next_output_stream_index() const (defined in shaka::media::MediaHandler)shaka::media::MediaHandlerinlineprotected num_input_streams() (defined in shaka::media::MediaHandler)shaka::media::MediaHandlerinlineprotected num_input_streams() const (defined in shaka::media::MediaHandler)shaka::media::MediaHandlerinlineprotected - Process(std::unique_ptr< StreamData > stream_data) overrideshaka::media::ChunkingHandlerprotectedvirtual - SetHandler(int output_stream_index, std::shared_ptr< MediaHandler > handler)shaka::media::MediaHandler - ValidateOutputStreamIndex(int stream_index) const shaka::media::MediaHandlerprotectedvirtual - ~ChunkingHandler() override (defined in shaka::media::ChunkingHandler)shaka::media::ChunkingHandler - ~MediaHandler()=default (defined in shaka::media::MediaHandler)shaka::media::MediaHandlervirtual + output_handlers() (defined in shaka::media::MediaHandler)shaka::media::MediaHandlerinlineprotected + Process(std::unique_ptr< StreamData > stream_data) overrideshaka::media::ChunkingHandlerprotectedvirtual + SetHandler(int output_stream_index, std::shared_ptr< MediaHandler > handler)shaka::media::MediaHandler + ValidateOutputStreamIndex(int stream_index) const shaka::media::MediaHandlerprotectedvirtual + ~ChunkingHandler() override (defined in shaka::media::ChunkingHandler)shaka::media::ChunkingHandler + ~MediaHandler()=default (defined in shaka::media::MediaHandler)shaka::media::MediaHandlervirtual diff --git a/docs/d2/ddb/classshaka_1_1media_1_1WebMMediaParser.html b/docs/d2/ddb/classshaka_1_1media_1_1WebMMediaParser.html index 0d83bacb26..eb7c2885b0 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 3851e36e29..21a58e95ac 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 2212b8a356..0a13f1b14a 100644 --- a/docs/d2/de6/packager__main_8cc_source.html +++ b/docs/d2/de6/packager__main_8cc_source.html @@ -257,426 +257,424 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
168 
169  ~RemuxJob() override {}
170 
-
171  void AddMuxer(std::unique_ptr<Muxer> mux) {
-
172  muxers_.push_back(std::move(mux));
-
173  }
-
174 
-
175  Demuxer* demuxer() { return demuxer_.get(); }
-
176  Status status() { return status_; }
-
177 
-
178  private:
-
179  void Run() override {
-
180  DCHECK(demuxer_);
-
181  status_ = demuxer_->Run();
-
182  }
-
183 
-
184  std::unique_ptr<Demuxer> demuxer_;
-
185  std::vector<std::unique_ptr<Muxer>> muxers_;
-
186  Status status_;
-
187 
-
188  DISALLOW_COPY_AND_ASSIGN(RemuxJob);
-
189 };
-
190 
-
191 bool StreamInfoToTextMediaInfo(const StreamDescriptor& stream_descriptor,
-
192  const MuxerOptions& stream_muxer_options,
-
193  MediaInfo* text_media_info) {
-
194  const std::string& language = stream_descriptor.language;
-
195  std::string format = DetermineTextFileFormat(stream_descriptor.input);
-
196  if (format.empty()) {
-
197  LOG(ERROR) << "Failed to determine the text file format for "
-
198  << stream_descriptor.input;
-
199  return false;
-
200  }
-
201 
-
202  if (!File::Copy(stream_descriptor.input.c_str(),
-
203  stream_muxer_options.output_file_name.c_str())) {
-
204  LOG(ERROR) << "Failed to copy the input file (" << stream_descriptor.input
-
205  << ") to output file (" << stream_muxer_options.output_file_name
-
206  << ").";
-
207  return false;
-
208  }
-
209 
-
210  text_media_info->set_media_file_name(stream_muxer_options.output_file_name);
-
211  text_media_info->set_container_type(MediaInfo::CONTAINER_TEXT);
-
212 
-
213  if (stream_muxer_options.bandwidth != 0) {
-
214  text_media_info->set_bandwidth(stream_muxer_options.bandwidth);
-
215  } else {
-
216  // Text files are usually small and since the input is one file; there's no
-
217  // way for the player to do ranged requests. So set this value to something
-
218  // reasonable.
-
219  text_media_info->set_bandwidth(256);
-
220  }
+
171  Demuxer* demuxer() { return demuxer_.get(); }
+
172  Status status() { return status_; }
+
173 
+
174  private:
+
175  void Run() override {
+
176  DCHECK(demuxer_);
+
177  status_ = demuxer_->Run();
+
178  }
+
179 
+
180  std::unique_ptr<Demuxer> demuxer_;
+
181  Status status_;
+
182 
+
183  DISALLOW_COPY_AND_ASSIGN(RemuxJob);
+
184 };
+
185 
+
186 bool StreamInfoToTextMediaInfo(const StreamDescriptor& stream_descriptor,
+
187  const MuxerOptions& stream_muxer_options,
+
188  MediaInfo* text_media_info) {
+
189  const std::string& language = stream_descriptor.language;
+
190  std::string format = DetermineTextFileFormat(stream_descriptor.input);
+
191  if (format.empty()) {
+
192  LOG(ERROR) << "Failed to determine the text file format for "
+
193  << stream_descriptor.input;
+
194  return false;
+
195  }
+
196 
+
197  if (!File::Copy(stream_descriptor.input.c_str(),
+
198  stream_muxer_options.output_file_name.c_str())) {
+
199  LOG(ERROR) << "Failed to copy the input file (" << stream_descriptor.input
+
200  << ") to output file (" << stream_muxer_options.output_file_name
+
201  << ").";
+
202  return false;
+
203  }
+
204 
+
205  text_media_info->set_media_file_name(stream_muxer_options.output_file_name);
+
206  text_media_info->set_container_type(MediaInfo::CONTAINER_TEXT);
+
207 
+
208  if (stream_muxer_options.bandwidth != 0) {
+
209  text_media_info->set_bandwidth(stream_muxer_options.bandwidth);
+
210  } else {
+
211  // Text files are usually small and since the input is one file; there's no
+
212  // way for the player to do ranged requests. So set this value to something
+
213  // reasonable.
+
214  text_media_info->set_bandwidth(256);
+
215  }
+
216 
+
217  MediaInfo::TextInfo* text_info = text_media_info->mutable_text_info();
+
218  text_info->set_format(format);
+
219  if (!language.empty())
+
220  text_info->set_language(language);
221 
-
222  MediaInfo::TextInfo* text_info = text_media_info->mutable_text_info();
-
223  text_info->set_format(format);
-
224  if (!language.empty())
-
225  text_info->set_language(language);
-
226 
-
227  return true;
-
228 }
-
229 
-
230 std::unique_ptr<Muxer> CreateOutputMuxer(const MuxerOptions& options,
-
231  MediaContainerName container) {
-
232  if (container == CONTAINER_WEBM) {
-
233  return std::unique_ptr<Muxer>(new webm::WebMMuxer(options));
-
234  } else if (container == CONTAINER_MPEG2TS) {
-
235  return std::unique_ptr<Muxer>(new mp2t::TsMuxer(options));
-
236  } else {
-
237  DCHECK_EQ(container, CONTAINER_MOV);
-
238  return std::unique_ptr<Muxer>(new mp4::MP4Muxer(options));
-
239  }
-
240 }
-
241 
-
242 bool CreateRemuxJobs(const StreamDescriptorList& stream_descriptors,
-
243  const MuxerOptions& muxer_options,
-
244  FakeClock* fake_clock,
-
245  KeySource* key_source,
-
246  MpdNotifier* mpd_notifier,
-
247  hls::HlsNotifier* hls_notifier,
-
248  std::vector<std::unique_ptr<RemuxJob>>* remux_jobs) {
-
249  // No notifiers OR (mpd_notifier XOR hls_notifier); which is NAND.
-
250  DCHECK(!(mpd_notifier && hls_notifier));
-
251  DCHECK(remux_jobs);
-
252 
-
253  std::string previous_input;
-
254  int stream_number = 0;
-
255  for (StreamDescriptorList::const_iterator
-
256  stream_iter = stream_descriptors.begin();
-
257  stream_iter != stream_descriptors.end();
-
258  ++stream_iter, ++stream_number) {
-
259  // Process stream descriptor.
-
260  MuxerOptions stream_muxer_options(muxer_options);
-
261  stream_muxer_options.output_file_name = stream_iter->output;
-
262  if (!stream_iter->segment_template.empty()) {
-
263  if (!ValidateSegmentTemplate(stream_iter->segment_template)) {
-
264  LOG(ERROR) << "ERROR: segment template with '"
-
265  << stream_iter->segment_template << "' is invalid.";
-
266  return false;
-
267  }
-
268  stream_muxer_options.segment_template = stream_iter->segment_template;
-
269  }
-
270  stream_muxer_options.bandwidth = stream_iter->bandwidth;
-
271 
-
272  // Handle text input.
-
273  if (stream_iter->stream_selector == "text") {
-
274  MediaInfo text_media_info;
-
275  if (!StreamInfoToTextMediaInfo(*stream_iter, stream_muxer_options,
-
276  &text_media_info)) {
-
277  return false;
-
278  }
-
279 
-
280  if (mpd_notifier) {
-
281  uint32_t unused;
-
282  if (!mpd_notifier->NotifyNewContainer(text_media_info, &unused)) {
-
283  LOG(ERROR) << "Failed to process text file " << stream_iter->input;
-
284  } else {
-
285  mpd_notifier->Flush();
-
286  }
-
287  } else if (FLAGS_output_media_info) {
- -
289  text_media_info,
-
290  stream_muxer_options.output_file_name + kMediaInfoSuffix);
-
291  } else {
-
292  NOTIMPLEMENTED()
-
293  << "--mpd_output or --output_media_info flags are "
-
294  "required for text output. Skipping manifest related output for "
-
295  << stream_iter->input;
-
296  }
-
297  continue;
-
298  }
-
299 
-
300  if (stream_iter->input != previous_input) {
-
301  // New remux job needed. Create demux and job thread.
-
302  std::unique_ptr<Demuxer> demuxer(new Demuxer(stream_iter->input));
-
303  if (FLAGS_enable_widevine_decryption ||
-
304  FLAGS_enable_fixed_key_decryption) {
-
305  std::unique_ptr<KeySource> key_source(CreateDecryptionKeySource());
-
306  if (!key_source)
-
307  return false;
-
308  demuxer->SetKeySource(std::move(key_source));
-
309  }
-
310  Status status = demuxer->Initialize();
-
311  if (!status.ok()) {
-
312  LOG(ERROR) << "Demuxer failed to initialize: " << status.ToString();
-
313  return false;
-
314  }
-
315  if (FLAGS_dump_stream_info) {
-
316  printf("\nFile \"%s\":\n", stream_iter->input.c_str());
-
317  DumpStreamInfo(demuxer->streams());
-
318  if (stream_iter->output.empty())
-
319  continue; // just need stream info.
-
320  }
-
321  remux_jobs->emplace_back(new RemuxJob(std::move(demuxer)));
-
322  previous_input = stream_iter->input;
-
323  }
-
324  DCHECK(!remux_jobs->empty());
-
325 
-
326  std::unique_ptr<Muxer> muxer(
-
327  CreateOutputMuxer(stream_muxer_options, stream_iter->output_format));
-
328  if (FLAGS_use_fake_clock_for_muxer) muxer->set_clock(fake_clock);
-
329 
-
330  if (key_source) {
-
331  muxer->SetKeySource(key_source,
-
332  FLAGS_max_sd_pixels,
-
333  FLAGS_max_hd_pixels,
-
334  FLAGS_max_uhd1_pixels,
-
335  FLAGS_clear_lead,
-
336  FLAGS_crypto_period_duration,
-
337  GetProtectionScheme(FLAGS_protection_scheme));
-
338  }
-
339 
-
340  std::unique_ptr<MuxerListener> muxer_listener;
-
341  DCHECK(!(FLAGS_output_media_info && mpd_notifier));
-
342  if (FLAGS_output_media_info) {
-
343  const std::string output_media_info_file_name =
-
344  stream_muxer_options.output_file_name + kMediaInfoSuffix;
-
345  std::unique_ptr<VodMediaInfoDumpMuxerListener>
-
346  vod_media_info_dump_muxer_listener(
-
347  new VodMediaInfoDumpMuxerListener(output_media_info_file_name));
-
348  muxer_listener = std::move(vod_media_info_dump_muxer_listener);
-
349  }
-
350  if (mpd_notifier) {
-
351  std::unique_ptr<MpdNotifyMuxerListener> mpd_notify_muxer_listener(
-
352  new MpdNotifyMuxerListener(mpd_notifier));
-
353  muxer_listener = std::move(mpd_notify_muxer_listener);
-
354  }
-
355 
-
356  if (hls_notifier) {
-
357  // TODO(rkuroiwa): Do some smart stuff to group the audios, e.g. detect
-
358  // languages.
-
359  std::string group_id = stream_iter->hls_group_id;
-
360  std::string name = stream_iter->hls_name;
-
361  std::string hls_playlist_name = stream_iter->hls_playlist_name;
-
362  if (group_id.empty())
-
363  group_id = "audio";
-
364  if (name.empty())
-
365  name = base::StringPrintf("stream_%d", stream_number);
-
366  if (hls_playlist_name.empty())
-
367  hls_playlist_name = base::StringPrintf("stream_%d.m3u8", stream_number);
-
368 
-
369  muxer_listener.reset(new HlsNotifyMuxerListener(hls_playlist_name, name,
-
370  group_id, hls_notifier));
-
371  }
-
372 
-
373  if (muxer_listener)
-
374  muxer->SetMuxerListener(std::move(muxer_listener));
-
375 
-
376  if (!AddStreamToMuxer(remux_jobs->back()->demuxer()->streams(),
-
377  stream_iter->stream_selector,
-
378  stream_iter->language,
-
379  muxer.get())) {
+
222  return true;
+
223 }
+
224 
+
225 std::shared_ptr<Muxer> CreateOutputMuxer(const MuxerOptions& options,
+
226  MediaContainerName container) {
+
227  if (container == CONTAINER_WEBM) {
+
228  return std::shared_ptr<Muxer>(new webm::WebMMuxer(options));
+
229  } else if (container == CONTAINER_MPEG2TS) {
+
230  return std::shared_ptr<Muxer>(new mp2t::TsMuxer(options));
+
231  } else {
+
232  DCHECK_EQ(container, CONTAINER_MOV);
+
233  return std::shared_ptr<Muxer>(new mp4::MP4Muxer(options));
+
234  }
+
235 }
+
236 
+
237 bool CreateRemuxJobs(const StreamDescriptorList& stream_descriptors,
+
238  const MuxerOptions& muxer_options,
+
239  FakeClock* fake_clock,
+
240  KeySource* key_source,
+
241  MpdNotifier* mpd_notifier,
+
242  hls::HlsNotifier* hls_notifier,
+
243  std::vector<std::unique_ptr<RemuxJob>>* remux_jobs) {
+
244  // No notifiers OR (mpd_notifier XOR hls_notifier); which is NAND.
+
245  DCHECK(!(mpd_notifier && hls_notifier));
+
246  DCHECK(remux_jobs);
+
247 
+
248  std::string previous_input;
+
249  int stream_number = 0;
+
250  for (StreamDescriptorList::const_iterator
+
251  stream_iter = stream_descriptors.begin();
+
252  stream_iter != stream_descriptors.end();
+
253  ++stream_iter, ++stream_number) {
+
254  // Process stream descriptor.
+
255  MuxerOptions stream_muxer_options(muxer_options);
+
256  stream_muxer_options.output_file_name = stream_iter->output;
+
257  if (!stream_iter->segment_template.empty()) {
+
258  if (!ValidateSegmentTemplate(stream_iter->segment_template)) {
+
259  LOG(ERROR) << "ERROR: segment template with '"
+
260  << stream_iter->segment_template << "' is invalid.";
+
261  return false;
+
262  }
+
263  stream_muxer_options.segment_template = stream_iter->segment_template;
+
264  }
+
265  stream_muxer_options.bandwidth = stream_iter->bandwidth;
+
266 
+
267  // Handle text input.
+
268  if (stream_iter->stream_selector == "text") {
+
269  MediaInfo text_media_info;
+
270  if (!StreamInfoToTextMediaInfo(*stream_iter, stream_muxer_options,
+
271  &text_media_info)) {
+
272  return false;
+
273  }
+
274 
+
275  if (mpd_notifier) {
+
276  uint32_t unused;
+
277  if (!mpd_notifier->NotifyNewContainer(text_media_info, &unused)) {
+
278  LOG(ERROR) << "Failed to process text file " << stream_iter->input;
+
279  } else {
+
280  mpd_notifier->Flush();
+
281  }
+
282  } else if (FLAGS_output_media_info) {
+ +
284  text_media_info,
+
285  stream_muxer_options.output_file_name + kMediaInfoSuffix);
+
286  } else {
+
287  NOTIMPLEMENTED()
+
288  << "--mpd_output or --output_media_info flags are "
+
289  "required for text output. Skipping manifest related output for "
+
290  << stream_iter->input;
+
291  }
+
292  continue;
+
293  }
+
294 
+
295  if (stream_iter->input != previous_input) {
+
296  // New remux job needed. Create demux and job thread.
+
297  std::unique_ptr<Demuxer> demuxer(new Demuxer(stream_iter->input));
+
298  demuxer->set_dump_stream_info(FLAGS_dump_stream_info);
+
299  if (FLAGS_enable_widevine_decryption ||
+
300  FLAGS_enable_fixed_key_decryption) {
+
301  std::unique_ptr<KeySource> key_source(CreateDecryptionKeySource());
+
302  if (!key_source)
+
303  return false;
+
304  demuxer->SetKeySource(std::move(key_source));
+
305  }
+
306  remux_jobs->emplace_back(new RemuxJob(std::move(demuxer)));
+
307  previous_input = stream_iter->input;
+
308  // Skip setting up muxers if output is not needed.
+
309  if (stream_iter->output.empty())
+
310  continue;
+
311  }
+
312  DCHECK(!remux_jobs->empty());
+
313 
+
314  std::shared_ptr<Muxer> muxer(
+
315  CreateOutputMuxer(stream_muxer_options, stream_iter->output_format));
+
316  if (FLAGS_use_fake_clock_for_muxer) muxer->set_clock(fake_clock);
+
317 
+
318  if (key_source) {
+
319  muxer->SetKeySource(key_source,
+
320  FLAGS_max_sd_pixels,
+
321  FLAGS_max_hd_pixels,
+
322  FLAGS_max_uhd1_pixels,
+
323  FLAGS_clear_lead,
+
324  FLAGS_crypto_period_duration,
+
325  GetProtectionScheme(FLAGS_protection_scheme));
+
326  }
+
327 
+
328  std::unique_ptr<MuxerListener> muxer_listener;
+
329  DCHECK(!(FLAGS_output_media_info && mpd_notifier));
+
330  if (FLAGS_output_media_info) {
+
331  const std::string output_media_info_file_name =
+
332  stream_muxer_options.output_file_name + kMediaInfoSuffix;
+
333  std::unique_ptr<VodMediaInfoDumpMuxerListener>
+
334  vod_media_info_dump_muxer_listener(
+
335  new VodMediaInfoDumpMuxerListener(output_media_info_file_name));
+
336  muxer_listener = std::move(vod_media_info_dump_muxer_listener);
+
337  }
+
338  if (mpd_notifier) {
+
339  std::unique_ptr<MpdNotifyMuxerListener> mpd_notify_muxer_listener(
+
340  new MpdNotifyMuxerListener(mpd_notifier));
+
341  muxer_listener = std::move(mpd_notify_muxer_listener);
+
342  }
+
343 
+
344  if (hls_notifier) {
+
345  // TODO(rkuroiwa): Do some smart stuff to group the audios, e.g. detect
+
346  // languages.
+
347  std::string group_id = stream_iter->hls_group_id;
+
348  std::string name = stream_iter->hls_name;
+
349  std::string hls_playlist_name = stream_iter->hls_playlist_name;
+
350  if (group_id.empty())
+
351  group_id = "audio";
+
352  if (name.empty())
+
353  name = base::StringPrintf("stream_%d", stream_number);
+
354  if (hls_playlist_name.empty())
+
355  hls_playlist_name = base::StringPrintf("stream_%d.m3u8", stream_number);
+
356 
+
357  muxer_listener.reset(new HlsNotifyMuxerListener(hls_playlist_name, name,
+
358  group_id, hls_notifier));
+
359  }
+
360 
+
361  if (muxer_listener)
+
362  muxer->SetMuxerListener(std::move(muxer_listener));
+
363 
+
364  auto* demuxer = remux_jobs->back()->demuxer();
+
365  const std::string& stream_selector = stream_iter->stream_selector;
+
366  Status status = demuxer->SetHandler(stream_selector, std::move(muxer));
+
367  if (!status.ok()) {
+
368  LOG(ERROR) << "Demuxer::SetHandler failed " << status;
+
369  return false;
+
370  }
+
371  if (!stream_iter->language.empty())
+
372  demuxer->SetLanguageOverride(stream_selector, stream_iter->language);
+
373  }
+
374 
+
375  // Initialize processing graph.
+
376  for (const std::unique_ptr<RemuxJob>& job : *remux_jobs) {
+
377  Status status = job->demuxer()->Initialize();
+
378  if (!status.ok()) {
+
379  LOG(ERROR) << "Failed to initialize processing graph " << status;
380  return false;
381  }
-
382  remux_jobs->back()->AddMuxer(std::move(muxer));
-
383  }
-
384 
-
385  return true;
-
386 }
-
387 
-
388 Status RunRemuxJobs(const std::vector<std::unique_ptr<RemuxJob>>& remux_jobs) {
-
389  // Start the job threads.
-
390  for (const std::unique_ptr<RemuxJob>& job : remux_jobs)
-
391  job->Start();
-
392 
-
393  // Wait for all jobs to complete or an error occurs.
-
394  Status status;
-
395  bool all_joined;
-
396  do {
-
397  all_joined = true;
-
398  for (const std::unique_ptr<RemuxJob>& job : remux_jobs) {
-
399  if (job->HasBeenJoined()) {
-
400  status = job->status();
-
401  if (!status.ok())
-
402  break;
-
403  } else {
-
404  all_joined = false;
-
405  job->Join();
-
406  }
-
407  }
-
408  } while (!all_joined && status.ok());
-
409 
-
410  return status;
-
411 }
-
412 
-
413 bool RunPackager(const StreamDescriptorList& stream_descriptors) {
-
414  const FourCC protection_scheme = GetProtectionScheme(FLAGS_protection_scheme);
-
415  if (protection_scheme == FOURCC_NULL)
-
416  return false;
-
417 
-
418  if (FLAGS_output_media_info && !FLAGS_mpd_output.empty()) {
-
419  NOTIMPLEMENTED() << "ERROR: --output_media_info and --mpd_output do not "
-
420  "work together.";
-
421  return false;
-
422  }
-
423 
-
424  // Since there isn't a muxer listener that can output both MPD and HLS,
-
425  // disallow specifying both MPD and HLS flags.
-
426  if (!FLAGS_mpd_output.empty() && !FLAGS_hls_master_playlist_output.empty()) {
-
427  LOG(ERROR) << "Cannot output both MPD and HLS.";
-
428  return false;
-
429  }
-
430 
-
431  // Get basic muxer options.
-
432  MuxerOptions muxer_options;
-
433  if (!GetMuxerOptions(&muxer_options))
-
434  return false;
-
435 
-
436  DCHECK(!stream_descriptors.empty());
-
437  // On demand profile generates single file segment while live profile
-
438  // generates multiple segments specified using segment template.
-
439  const bool on_demand_dash_profile =
-
440  stream_descriptors.begin()->segment_template.empty();
-
441  for (const auto& stream_descriptor : stream_descriptors) {
-
442  if (on_demand_dash_profile != stream_descriptor.segment_template.empty()) {
-
443  LOG(ERROR) << "Inconsistent stream descriptor specification: "
-
444  "segment_template should be specified for none or all "
-
445  "stream descriptors.";
-
446  return false;
-
447  }
-
448  }
-
449  if (FLAGS_output_media_info && !on_demand_dash_profile) {
-
450  // TODO(rkuroiwa, kqyang): Support partial media info dump for live.
-
451  NOTIMPLEMENTED() << "ERROR: --output_media_info is only supported for "
-
452  "on-demand profile (not using segment_template).";
-
453  return false;
-
454  }
-
455 
-
456  MpdOptions mpd_options;
-
457  if (!GetMpdOptions(on_demand_dash_profile, &mpd_options))
-
458  return false;
-
459 
-
460  // Create encryption key source if needed.
-
461  std::unique_ptr<KeySource> encryption_key_source;
-
462  if (FLAGS_enable_widevine_encryption || FLAGS_enable_fixed_key_encryption ||
-
463  FLAGS_enable_playready_encryption) {
-
464  encryption_key_source = CreateEncryptionKeySource();
-
465  if (!encryption_key_source)
-
466  return false;
-
467  }
-
468 
-
469  std::unique_ptr<MpdNotifier> mpd_notifier;
-
470  if (!FLAGS_mpd_output.empty()) {
-
471  std::vector<std::string> base_urls = base::SplitString(
-
472  FLAGS_base_urls, ",", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
-
473  if (FLAGS_generate_dash_if_iop_compliant_mpd) {
-
474  mpd_notifier.reset(
-
475  new DashIopMpdNotifier(mpd_options, base_urls, FLAGS_mpd_output));
-
476  } else {
-
477  mpd_notifier.reset(
-
478  new SimpleMpdNotifier(mpd_options, base_urls, FLAGS_mpd_output));
-
479  }
-
480  if (!mpd_notifier->Init()) {
-
481  LOG(ERROR) << "MpdNotifier failed to initialize.";
-
482  return false;
-
483  }
-
484  }
-
485 
-
486  std::unique_ptr<hls::HlsNotifier> hls_notifier;
-
487  if (!FLAGS_hls_master_playlist_output.empty()) {
-
488  base::FilePath master_playlist_path(
-
489  base::FilePath::FromUTF8Unsafe(FLAGS_hls_master_playlist_output));
-
490  base::FilePath master_playlist_name = master_playlist_path.BaseName();
-
491 
-
492  hls_notifier.reset(new hls::SimpleHlsNotifier(
-
493  hls::HlsNotifier::HlsProfile::kOnDemandProfile, FLAGS_hls_base_url,
-
494  master_playlist_path.DirName().AsEndingWithSeparator().AsUTF8Unsafe(),
-
495  master_playlist_name.AsUTF8Unsafe()));
-
496  }
-
497 
-
498  std::vector<std::unique_ptr<RemuxJob>> remux_jobs;
-
499  FakeClock fake_clock;
-
500  if (!CreateRemuxJobs(stream_descriptors, muxer_options, &fake_clock,
-
501  encryption_key_source.get(), mpd_notifier.get(),
-
502  hls_notifier.get(), &remux_jobs)) {
-
503  return false;
-
504  }
-
505 
-
506  Status status = RunRemuxJobs(remux_jobs);
-
507  if (!status.ok()) {
-
508  LOG(ERROR) << "Packaging Error: " << status.ToString();
-
509  return false;
-
510  }
-
511 
-
512  if (hls_notifier) {
-
513  if (!hls_notifier->Flush())
-
514  return false;
-
515  }
-
516  if (mpd_notifier) {
-
517  if (!mpd_notifier->Flush())
-
518  return false;
-
519  }
-
520 
-
521  printf("Packaging completed successfully.\n");
-
522  return true;
-
523 }
-
524 
-
525 int PackagerMain(int argc, char** argv) {
-
526  base::AtExitManager exit;
-
527  // Needed to enable VLOG/DVLOG through --vmodule or --v.
-
528  base::CommandLine::Init(argc, argv);
-
529 
-
530  // Set up logging.
-
531  logging::LoggingSettings log_settings;
-
532  log_settings.logging_dest = logging::LOG_TO_SYSTEM_DEBUG_LOG;
-
533  CHECK(logging::InitLogging(log_settings));
-
534 
-
535  google::SetVersionString(GetPackagerVersion());
-
536  google::SetUsageMessage(base::StringPrintf(kUsage, argv[0]));
-
537  google::ParseCommandLineFlags(&argc, &argv, true);
-
538  if (argc < 2) {
-
539  google::ShowUsageWithFlags("Usage");
-
540  return kSuccess;
-
541  }
-
542 
- - -
545  return kArgumentValidationFailed;
-
546  }
-
547 
-
548  if (FLAGS_override_version)
-
549  SetPackagerVersionForTesting(FLAGS_test_version);
-
550 
-
551  LibcryptoThreading libcrypto_threading;
-
552  // TODO(tinskip): Make InsertStreamDescriptor a member of
-
553  // StreamDescriptorList.
-
554  StreamDescriptorList stream_descriptors;
-
555  for (int i = 1; i < argc; ++i) {
-
556  if (!InsertStreamDescriptor(argv[i], &stream_descriptors))
-
557  return kArgumentValidationFailed;
-
558  }
-
559  return RunPackager(stream_descriptors) ? kSuccess : kPackagingFailed;
-
560 }
-
561 
-
562 } // namespace media
-
563 } // namespace shaka
-
564 
-
565 #if defined(OS_WIN)
-
566 // Windows wmain, which converts wide character arguments to UTF-8.
-
567 int wmain(int argc, wchar_t* argv[], wchar_t* envp[]) {
-
568  std::unique_ptr<char* [], std::function<void(char**)>> utf8_argv(
-
569  new char*[argc], [argc](char** utf8_args) {
-
570  // TODO(tinskip): This leaks, but if this code is enabled, it crashes.
-
571  // Figure out why. I suspect gflags does something funny with the
-
572  // argument array.
-
573  // for (int idx = 0; idx < argc; ++idx)
-
574  // delete[] utf8_args[idx];
-
575  delete[] utf8_args;
-
576  });
-
577  std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;
-
578  for (int idx = 0; idx < argc; ++idx) {
-
579  std::string utf8_arg(converter.to_bytes(argv[idx]));
-
580  utf8_arg += '\0';
-
581  utf8_argv[idx] = new char[utf8_arg.size()];
-
582  memcpy(utf8_argv[idx], &utf8_arg[0], utf8_arg.size());
-
583  }
-
584  return shaka::media::PackagerMain(argc, utf8_argv.get());
-
585 }
-
586 #else
-
587 int main(int argc, char** argv) {
-
588  return shaka::media::PackagerMain(argc, argv);
-
589 }
-
590 #endif // defined(OS_WIN)
+
382  }
+
383  return true;
+
384 }
+
385 
+
386 Status RunRemuxJobs(const std::vector<std::unique_ptr<RemuxJob>>& remux_jobs) {
+
387  // Start the job threads.
+
388  for (const std::unique_ptr<RemuxJob>& job : remux_jobs)
+
389  job->Start();
+
390 
+
391  // Wait for all jobs to complete or an error occurs.
+
392  Status status;
+
393  bool all_joined;
+
394  do {
+
395  all_joined = true;
+
396  for (const std::unique_ptr<RemuxJob>& job : remux_jobs) {
+
397  if (job->HasBeenJoined()) {
+
398  status = job->status();
+
399  if (!status.ok())
+
400  break;
+
401  } else {
+
402  all_joined = false;
+
403  job->Join();
+
404  }
+
405  }
+
406  } while (!all_joined && status.ok());
+
407 
+
408  return status;
+
409 }
+
410 
+
411 bool RunPackager(const StreamDescriptorList& stream_descriptors) {
+
412  const FourCC protection_scheme = GetProtectionScheme(FLAGS_protection_scheme);
+
413  if (protection_scheme == FOURCC_NULL)
+
414  return false;
+
415 
+
416  if (FLAGS_output_media_info && !FLAGS_mpd_output.empty()) {
+
417  NOTIMPLEMENTED() << "ERROR: --output_media_info and --mpd_output do not "
+
418  "work together.";
+
419  return false;
+
420  }
+
421 
+
422  // Since there isn't a muxer listener that can output both MPD and HLS,
+
423  // disallow specifying both MPD and HLS flags.
+
424  if (!FLAGS_mpd_output.empty() && !FLAGS_hls_master_playlist_output.empty()) {
+
425  LOG(ERROR) << "Cannot output both MPD and HLS.";
+
426  return false;
+
427  }
+
428 
+
429  // Get basic muxer options.
+
430  MuxerOptions muxer_options;
+
431  if (!GetMuxerOptions(&muxer_options))
+
432  return false;
+
433 
+
434  DCHECK(!stream_descriptors.empty());
+
435  // On demand profile generates single file segment while live profile
+
436  // generates multiple segments specified using segment template.
+
437  const bool on_demand_dash_profile =
+
438  stream_descriptors.begin()->segment_template.empty();
+
439  for (const auto& stream_descriptor : stream_descriptors) {
+
440  if (on_demand_dash_profile != stream_descriptor.segment_template.empty()) {
+
441  LOG(ERROR) << "Inconsistent stream descriptor specification: "
+
442  "segment_template should be specified for none or all "
+
443  "stream descriptors.";
+
444  return false;
+
445  }
+
446  }
+
447  if (FLAGS_output_media_info && !on_demand_dash_profile) {
+
448  // TODO(rkuroiwa, kqyang): Support partial media info dump for live.
+
449  NOTIMPLEMENTED() << "ERROR: --output_media_info is only supported for "
+
450  "on-demand profile (not using segment_template).";
+
451  return false;
+
452  }
+
453 
+
454  MpdOptions mpd_options;
+
455  if (!GetMpdOptions(on_demand_dash_profile, &mpd_options))
+
456  return false;
+
457 
+
458  // Create encryption key source if needed.
+
459  std::unique_ptr<KeySource> encryption_key_source;
+
460  if (FLAGS_enable_widevine_encryption || FLAGS_enable_fixed_key_encryption ||
+
461  FLAGS_enable_playready_encryption) {
+
462  encryption_key_source = CreateEncryptionKeySource();
+
463  if (!encryption_key_source)
+
464  return false;
+
465  }
+
466 
+
467  std::unique_ptr<MpdNotifier> mpd_notifier;
+
468  if (!FLAGS_mpd_output.empty()) {
+
469  std::vector<std::string> base_urls = base::SplitString(
+
470  FLAGS_base_urls, ",", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
+
471  if (FLAGS_generate_dash_if_iop_compliant_mpd) {
+
472  mpd_notifier.reset(
+
473  new DashIopMpdNotifier(mpd_options, base_urls, FLAGS_mpd_output));
+
474  } else {
+
475  mpd_notifier.reset(
+
476  new SimpleMpdNotifier(mpd_options, base_urls, FLAGS_mpd_output));
+
477  }
+
478  if (!mpd_notifier->Init()) {
+
479  LOG(ERROR) << "MpdNotifier failed to initialize.";
+
480  return false;
+
481  }
+
482  }
+
483 
+
484  std::unique_ptr<hls::HlsNotifier> hls_notifier;
+
485  if (!FLAGS_hls_master_playlist_output.empty()) {
+
486  base::FilePath master_playlist_path(
+
487  base::FilePath::FromUTF8Unsafe(FLAGS_hls_master_playlist_output));
+
488  base::FilePath master_playlist_name = master_playlist_path.BaseName();
+
489 
+
490  hls_notifier.reset(new hls::SimpleHlsNotifier(
+
491  hls::HlsNotifier::HlsProfile::kOnDemandProfile, FLAGS_hls_base_url,
+
492  master_playlist_path.DirName().AsEndingWithSeparator().AsUTF8Unsafe(),
+
493  master_playlist_name.AsUTF8Unsafe()));
+
494  }
+
495 
+
496  std::vector<std::unique_ptr<RemuxJob>> remux_jobs;
+
497  FakeClock fake_clock;
+
498  if (!CreateRemuxJobs(stream_descriptors, muxer_options, &fake_clock,
+
499  encryption_key_source.get(), mpd_notifier.get(),
+
500  hls_notifier.get(), &remux_jobs)) {
+
501  return false;
+
502  }
+
503 
+
504  Status status = RunRemuxJobs(remux_jobs);
+
505  if (!status.ok()) {
+
506  LOG(ERROR) << "Packaging Error: " << status.ToString();
+
507  return false;
+
508  }
+
509 
+
510  if (hls_notifier) {
+
511  if (!hls_notifier->Flush())
+
512  return false;
+
513  }
+
514  if (mpd_notifier) {
+
515  if (!mpd_notifier->Flush())
+
516  return false;
+
517  }
+
518 
+
519  printf("Packaging completed successfully.\n");
+
520  return true;
+
521 }
+
522 
+
523 int PackagerMain(int argc, char** argv) {
+
524  base::AtExitManager exit;
+
525  // Needed to enable VLOG/DVLOG through --vmodule or --v.
+
526  base::CommandLine::Init(argc, argv);
+
527 
+
528  // Set up logging.
+
529  logging::LoggingSettings log_settings;
+
530  log_settings.logging_dest = logging::LOG_TO_SYSTEM_DEBUG_LOG;
+
531  CHECK(logging::InitLogging(log_settings));
+
532 
+
533  google::SetVersionString(GetPackagerVersion());
+
534  google::SetUsageMessage(base::StringPrintf(kUsage, argv[0]));
+
535  google::ParseCommandLineFlags(&argc, &argv, true);
+
536  if (argc < 2) {
+
537  google::ShowUsageWithFlags("Usage");
+
538  return kSuccess;
+
539  }
+
540 
+ + +
543  return kArgumentValidationFailed;
+
544  }
+
545 
+
546  if (FLAGS_override_version)
+
547  SetPackagerVersionForTesting(FLAGS_test_version);
+
548 
+
549  LibcryptoThreading libcrypto_threading;
+
550  // TODO(tinskip): Make InsertStreamDescriptor a member of
+
551  // StreamDescriptorList.
+
552  StreamDescriptorList stream_descriptors;
+
553  for (int i = 1; i < argc; ++i) {
+
554  if (!InsertStreamDescriptor(argv[i], &stream_descriptors))
+
555  return kArgumentValidationFailed;
+
556  }
+
557  return RunPackager(stream_descriptors) ? kSuccess : kPackagingFailed;
+
558 }
+
559 
+
560 } // namespace media
+
561 } // namespace shaka
+
562 
+
563 #if defined(OS_WIN)
+
564 // Windows wmain, which converts wide character arguments to UTF-8.
+
565 int wmain(int argc, wchar_t* argv[], wchar_t* envp[]) {
+
566  std::unique_ptr<char* [], std::function<void(char**)>> utf8_argv(
+
567  new char*[argc], [argc](char** utf8_args) {
+
568  // TODO(tinskip): This leaks, but if this code is enabled, it crashes.
+
569  // Figure out why. I suspect gflags does something funny with the
+
570  // argument array.
+
571  // for (int idx = 0; idx < argc; ++idx)
+
572  // delete[] utf8_args[idx];
+
573  delete[] utf8_args;
+
574  });
+
575  std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;
+
576  for (int idx = 0; idx < argc; ++idx) {
+
577  std::string utf8_arg(converter.to_bytes(argv[idx]));
+
578  utf8_arg += '\0';
+
579  utf8_argv[idx] = new char[utf8_arg.size()];
+
580  memcpy(utf8_argv[idx], &utf8_arg[0], utf8_arg.size());
+
581  }
+
582  return shaka::media::PackagerMain(argc, utf8_argv.get());
+
583 }
+
584 #else
+
585 int main(int argc, char** argv) {
+
586  return shaka::media::PackagerMain(argc, argv);
+
587 }
+
588 #endif // defined(OS_WIN)
static bool Copy(const char *from_file_name, const char *to_file_name)
Definition: file.cc:203
bool ValidateWidevineCryptoFlags()
static bool WriteMediaInfoToFile(const MediaInfo &media_info, const std::string &output_file_path)
@@ -686,7 +684,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 f981f30e9f..8dc8aa5fb6 100644 --- a/docs/d2/de7/classshaka_1_1media_1_1TextStreamInfo-members.html +++ b/docs/d2/de7/classshaka_1_1media_1_1TextStreamInfo-members.html @@ -119,7 +119,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 2f4a6de038..5c24ec326e 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 68187bb16f..18e8285277 100644 --- a/docs/d2/de9/media__handler_8cc_source.html +++ b/docs/d2/de9/media__handler_8cc_source.html @@ -165,7 +165,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 73bdd2ac73..514dfaacc6 100644 --- a/docs/d2/de9/mock__muxer__listener_8h_source.html +++ b/docs/d2/de9/mock__muxer__listener_8h_source.html @@ -163,7 +163,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/deb/es__parser_8h_source.html b/docs/d2/deb/es__parser_8h_source.html index 44fbb82e7d..26207cbac3 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 33df8af5f5..e1e764b724 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 d1b96b0315..12eb1a4359 100644 --- a/docs/d2/dee/pes__packet__generator_8cc_source.html +++ b/docs/d2/dee/pes__packet__generator_8cc_source.html @@ -326,7 +326,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d2/df8/classshaka_1_1media_1_1SegmentTestBase_1_1ClusterParser.html b/docs/d2/df8/classshaka_1_1media_1_1SegmentTestBase_1_1ClusterParser.html index 4b3e9a211b..4b2bdb5477 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 bce99220f0..cbcad1f19a 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 b1f883a05c..a110c1b86e 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 33b1a45d25..c265172b7f 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 d197ce0a6d..08b0c720d2 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 791c23277c..28f5613ce2 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 b755f5c4ab..d28dff1ae9 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 4dc2cc9eb2..c737508808 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 4504b97b5b..c6e2948f80 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 397b716722..95fd1ea4c9 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 8efb495152..aa6d566b0f 100644 --- a/docs/d3/d35/video__slice__header__parser_8cc_source.html +++ b/docs/d3/d35/video__slice__header__parser_8cc_source.html @@ -200,7 +200,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d3/d47/structshaka_1_1media_1_1mp4_1_1PrivFrame.html b/docs/d3/d47/structshaka_1_1media_1_1mp4_1_1PrivFrame.html index f59ddef7e4..72068be67d 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 bf7807ade0..4970677d33 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 b5d418b5a2..4df092e24b 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 d4cdb3f121..16aabb5ab3 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 3fb42e721d..5df88e46a1 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 64262c58e5..900516df0e 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 dfa3a49130..18d4f8b4c7 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 dbb520dbe7..32ee9bf570 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 d2d2a64eb1..d9b69a457b 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 dab867a8a6..1df7a7d68b 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 @@ -101,7 +101,8 @@ Inheritance diagram for shaka::media::mp2t::TsMuxer:
-shaka::media::Muxer +shaka::media::Muxer +shaka::media::MediaHandler
@@ -116,25 +117,29 @@ Public Member Functions - - - - - - - - + + + + + + + + + + +
 
void SetKeySource (KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)
 
-void AddStream (MediaStream *stream)
 Add video/audio stream.
 
-Status Run ()
 Drive the remuxing from muxer side (pull).
 
void Cancel ()
 
void SetMuxerListener (std::unique_ptr< MuxerListener > muxer_listener)
 
void SetProgressListener (std::unique_ptr< ProgressListener > progress_listener)
 
-const std::vector< MediaStream * > & streams () const
 
+const std::vector
+< std::shared_ptr< StreamInfo > > & 
streams () const
 
void set_clock (base::Clock *clock)
 
- Public Member Functions inherited from shaka::media::MediaHandler
+Status SetHandler (int output_stream_index, std::shared_ptr< MediaHandler > handler)
 Connect downstream handler at the specified output stream index.
 
+Status AddHandler (std::shared_ptr< MediaHandler > handler)
 Connect downstream handler to the next availble output stream index.
 
Status Initialize ()
 
@@ -172,6 +177,62 @@ base::Clock *  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Additional Inherited Members

clock ()
FourCC protection_scheme () const
 
Status InitializeInternal () override
 
Status Process (std::unique_ptr< StreamData > stream_data) override
 
+Status FlushStream (int input_stream_index) override
 Flush the stream at the specified input stream index.
 
- Protected Member Functions inherited from shaka::media::MediaHandler
+virtual bool ValidateOutputStreamIndex (int stream_index) const
 Validate if the stream at the specified index actually exists.
 
+bool initialized ()
 
+int num_input_streams ()
 
Status Dispatch (std::unique_ptr< StreamData > stream_data)
 
+Status DispatchPeriodInfo (int stream_index, std::shared_ptr< PeriodInfo > period_info)
 Dispatch the period info to downstream handlers.
 
+Status DispatchStreamInfo (int stream_index, std::shared_ptr< StreamInfo > stream_info)
 Dispatch the stream info to downstream handlers.
 
+Status DispatchEncryptionConfig (int stream_index, std::unique_ptr< EncryptionConfig > encryption_config)
 Dispatch the encryption config to downstream handlers.
 
+Status DispatchMediaSample (int stream_index, std::shared_ptr< MediaSample > media_sample)
 Dispatch the media sample to downstream handlers.
 
+Status DispatchMediaEvent (int stream_index, std::shared_ptr< MediaEvent > media_event)
 Dispatch the media event to downstream handlers.
 
+Status DispatchSegmentInfo (int stream_index, std::shared_ptr< SegmentInfo > segment_info)
 Dispatch the segment info to downstream handlers.
 
+int num_input_streams () const
 
+int next_output_stream_index () const
 
+const std::map< int, std::pair
+< std::shared_ptr
+< MediaHandler >, int > > & 
output_handlers ()
 

Detailed Description

MPEG2 TS muxer. This is a single program, single elementary stream TS muxer.

@@ -184,7 +245,7 @@ FourCC protection_scheme diff --git a/docs/d3/d71/classshaka_1_1media_1_1mp2t_1_1TsMuxer.png b/docs/d3/d71/classshaka_1_1media_1_1mp2t_1_1TsMuxer.png index 9f1a56cecc91889b2cc792b9894bf075ad8e1582..36e7d5b0756cf85b1fcc8f5072d021a7b5a24526 100644 GIT binary patch delta 886 zcmV-+1Bv{<1^5S$7Yc|70{{R3uMX?8ks&&N1BXdOK~#7F?VZt%>mUq74};YI|KyuC z5HQfRtMy(9$*W8^B!fBFE`25EoHr3!lD1H=N|L{VRg(NQuqH|EvLi`a>adN@I-cUS z2j|^#iA6w1R!Qbch2$pQZ&+V(Qwg8S=r!jY)G#$rd3t=VY#r+xV`Hu3HvwN`!+O4d zf4;5G>T1-dp$oR0)6cv&cIoKfT3;(p&)T?Zlq*sF&9q`GS!Y|YTH}$m=bx$ixaFQ_ z(F0fd8*2+`5`0=rt61B;(e%KQwFF$SE;l#r&E$1#kim9uoO)oDS5vI9Ul$YJvo71q z^wLlI^r!snRoP)|$vsj)U zpDSBqEn#Z`%B=f5d|*AJmf#m?xv6hYv_`j_)6blr*L_LSTYYA2TvrmNGLNfv|Ez6f zt#vbNNYYAQfA+vt&&GNVM%H36tzvD9RF+x4WnE@#%7e-4*dT*#*&APdYrpH)5qSx5 z*RN&^U6c2n;obu+@-?uat8-u~e05CcfF!+D{KiU>zk*eg{1vQ{+`0{APFegPzZq?FPoA^~inUoLB+wR6sjte|z3v>;Nk@*0S+)#+8QGzb?wl z-&vmiJ6jD{ZhJ>twB45}wOVC~YObuOvG_00TDa@+6RiVT&9SyCo92D{=$4s+)L9o| zV{HMieN7b`1KHw#zP0rqowd(b&svLYfaV^!>e*PkuR))=(_&iXJ!?zFq6ZqNWi1hB z)@8QFt&wQgT-n?7uUJhRta`v&ZNHAlUqIM?ozj2DI_18!dfyq}^guIT0}Hx32PRuN z2WrQ3$H-#Q8g4oV{?G50XY^p*lNG>A!3yB7U}!4FCWD M07*qoM6N<$f}bC_X#fBK delta 606 zcmV-k0-^o*2fqc77Ya}a0{{R3QDb%Sks&&N0!~RpK~#7F?Vateqc99aPX_6}|08c( z^5rB2R_nV`BufksI&luRN&j*j$FYexBxwr;t0eg=SS86{k64qWcG!_5E%maE&N6-& zL6SLsl~s~C()lc3B2Ud)CHPlQ5NeT(!Gc+sIn#X4a6Tl^*s$t!HCB2P12? zm{zg2MJn^Ge`Q@}Ys!Pk>)0TJZP^=-zS?K~IwCJ2uKLxyLf7PdXSnx3i(Cg5bhQsm zg)fe2ACRQ4ivL(i@>j4*lD~pglKd4Vtdiuf7wd5x#~uRk*AKuZ+KBb%XCK&&SYN2y z!0yBv`vAaiD3iScB!2+@3RVDr1uH3~w24RnTPRoo{1vPK{u)><_`}zD*>0WhuejOD zcWsxs3*y8IaHR~|Is4o5zOn?pIrX>a2af zde%~812p$Qt!HEHK7&4Ur^U3&ch;7QMGrJk%bFw3tjlbTuSTLBb7e2nzhX6Qu<8M8 zwf#CGKY+0PI;H=Lb;^Bi^}aKn^guJ$fdyUd1CuT91EpiSZDg@%2{-Kn|L1?pGkUP@ s$qL}5U%CW}l+qUZ1Ir~Og!P~XT>t<807*qoM6N<$g5}>R&Hw-a diff --git a/docs/d3/d72/fixed__key__source_8h_source.html b/docs/d3/d72/fixed__key__source_8h_source.html index d56ae528d6..c32546b559 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 9b765617fc..4538333981 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 @@ -104,7 +104,8 @@ Inheritance diagram for shaka::media::webm::WebMMuxer:
-shaka::media::Muxer +shaka::media::Muxer +shaka::media::MediaHandler
@@ -120,25 +121,29 @@ Public Member Functions - - - - - - - - + + + + + + + + + + +
 
void SetKeySource (KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)
 
-void AddStream (MediaStream *stream)
 Add video/audio stream.
 
-Status Run ()
 Drive the remuxing from muxer side (pull).
 
void Cancel ()
 
void SetMuxerListener (std::unique_ptr< MuxerListener > muxer_listener)
 
void SetProgressListener (std::unique_ptr< ProgressListener > progress_listener)
 
-const std::vector< MediaStream * > & streams () const
 
+const std::vector
+< std::shared_ptr< StreamInfo > > & 
streams () const
 
void set_clock (base::Clock *clock)
 
- Public Member Functions inherited from shaka::media::MediaHandler
+Status SetHandler (int output_stream_index, std::shared_ptr< MediaHandler > handler)
 Connect downstream handler at the specified output stream index.
 
+Status AddHandler (std::shared_ptr< MediaHandler > handler)
 Connect downstream handler to the next availble output stream index.
 
Status Initialize ()
 
@@ -176,6 +181,62 @@ base::Clock *  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Additional Inherited Members

clock ()
FourCC protection_scheme () const
 
Status InitializeInternal () override
 
Status Process (std::unique_ptr< StreamData > stream_data) override
 
+Status FlushStream (int input_stream_index) override
 Flush the stream at the specified input stream index.
 
- Protected Member Functions inherited from shaka::media::MediaHandler
+virtual bool ValidateOutputStreamIndex (int stream_index) const
 Validate if the stream at the specified index actually exists.
 
+bool initialized ()
 
+int num_input_streams ()
 
Status Dispatch (std::unique_ptr< StreamData > stream_data)
 
+Status DispatchPeriodInfo (int stream_index, std::shared_ptr< PeriodInfo > period_info)
 Dispatch the period info to downstream handlers.
 
+Status DispatchStreamInfo (int stream_index, std::shared_ptr< StreamInfo > stream_info)
 Dispatch the stream info to downstream handlers.
 
+Status DispatchEncryptionConfig (int stream_index, std::unique_ptr< EncryptionConfig > encryption_config)
 Dispatch the encryption config to downstream handlers.
 
+Status DispatchMediaSample (int stream_index, std::shared_ptr< MediaSample > media_sample)
 Dispatch the media sample to downstream handlers.
 
+Status DispatchMediaEvent (int stream_index, std::shared_ptr< MediaEvent > media_event)
 Dispatch the media event to downstream handlers.
 
+Status DispatchSegmentInfo (int stream_index, std::shared_ptr< SegmentInfo > segment_info)
 Dispatch the segment info to downstream handlers.
 
+int num_input_streams () const
 
+int next_output_stream_index () const
 
+const std::map< int, std::pair
+< std::shared_ptr
+< MediaHandler >, int > > & 
output_handlers ()
 

Detailed Description

Implements WebM Muxer.

@@ -188,7 +249,7 @@ FourCC protection_scheme diff --git a/docs/d3/d73/classshaka_1_1media_1_1webm_1_1WebMMuxer.png b/docs/d3/d73/classshaka_1_1media_1_1webm_1_1WebMMuxer.png index 94c7a93673dc5bb56ff3e526b0aedc5b918e9f6e..fc472463a125cf06c7e90b5766d8e9d7253c0611 100644 GIT binary patch literal 1076 zcmeAS@N?(olHy`uVBq!ia0vp^CxEzvgBeIpy%%x-NJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~ANF){45?szJNMzX#acYA_GZ~%|H}Wo zrRBt6`|ZrzHCImd{MINF{^4<8|C2eNWnHE%c^}^3F-e`ZL#6VPrN^WY{o9k4tQ3oW zuk%(hu6CoHZ~F|EDJrYaH+UF@-&$5F^gdZ(z2jxGvRhH>8?qPo1iIb4r&pi8jqS;S z2uH8q3J+H6dWN|xWIs>8F0`y=g~#fJl9{)bzpc#6xwh)>)nC81#4)U#tmphj@m71H z)m9;?+bl<@S^u`CN6HMkBTytuRa`fhHs`BZ|<6% zg=RP2T$!}Q@&AeGv6J?>Fe-V@6H%D-#1q8W(f|wqUX~AqwhZqU>~64;GgsWned16d z|D@XuM^>^v@MdIs;7L3#2(^4(!#+{<(A zAJ(YbDxA^l`I!H5&FcSRb6IlUTfxKEbJlEo@Gmd(YU1~{ zr8DM6IopaJFUaz|BCY6#t%z~$2(R{3EI`{!Ek>)Ob_3YpxBg{9DB>>`|aFL`!LY{6-dhgq+$=oOy6 z?Uoz%vuUmO$zSzf<~B@ua%&SXZTXkX4s#9>E8jYUYfpkTlVojg{iK$)hgni~H5@K` zlWr{5G56t_Yj1Avy?mscC8?Q5;rY~pFypfRGv5kdTQW)}^Y*{yo2~n?FmtQ*R=s@V z3vaG$+InYR{aM2s53a2IvXAqG)wP1GyT4EKeVEH7zyJ(j2(GGY4Dx#U`>XtJnZOEd Tv%gTe~DWM4fTQ~jW delta 672 zcmV;R0$=^K2;l{g7Ya}a0{{R3YqQFNks&&N0&q!0K~#7F?VZt*qaYAP57(;v|0l1B zfZafh$?i-Mw`;tkm<#l28hmA0mgNd!k)-cefJo9z3J^(}NuPiuN&Dqnk~Gw6Yn`Qi zas)|wuHOWa6%Qs2-3%v>Qm^9_NQ*J$i+!`h5lK=d6{XeqpAbHrbbh+0%YxN#~ z$Tnr3xl-hZ^6M7&9{RA4?b*LC(2{ggZ-eYX*YtJO(}rYj-qwPY6?bz;(rbNITD44e zkgd^zWQ(gnZyPK^?)9S}!#sBxbSu)o2<`O{V~Vk))XvAd)nb0z{H#(h9OH%W?q${J3raSI|{J zZnuk&Tm@w1xCY5(K;qN_m`ecyFp~lVU?v3!z)T7dfSD8^05d5-0A^Bv0L-KS0hmbv z0x**T1Yjlw2*6AV5P-8vDWxlj1n~U|5P+E!AOJI|0r6BP8CTmY=lJ*g+al+GD=*B* zuV?rtAOJ^t7i7ENZ{`u;sdkWub!|S{_j9=>WNR3|vE2Q=%|uv6Dz`T5D(4%5)Dg_U z6`+D_#_X>YHlkuMp%44GZWX8N?S^fAdvEs$$y_-B&59H*TcNIzEhxb3h}il3L3-Kl$e%|xS9%h$3!|I9IHaQ0AI z-vDHrt2?!>{bdLEP6Y_SObQTynG_%ZGwJ>XN-3r9*B?xcDz+;fyqEwB0000mutable_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 1a1656d6d6..aea2dd1f3b 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 381e902c1e..49acdc7d39 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 28875f411e..24657a29b0 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 0648a4d5db..9f9c3fa24e 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 247fd988ca..b4a54904ca 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 0f9b94d227..834ad88e24 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 fd54577b2e..632bb6a551 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 7810bc92b8..a88f0fd946 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 22bde47ce6..6da343723a 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 e0c7cdcb48..6cd785285e 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 607ee31646..19bea404bc 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 4aa426548e..155a5979ac 100644 --- a/docs/d3/d93/media__handler_8h_source.html +++ b/docs/d3/d93/media__handler_8h_source.html @@ -226,25 +226,29 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
172 
173  int num_input_streams() const { return num_input_streams_; }
174  int next_output_stream_index() const { return next_output_stream_index_; }
-
175 
-
176  private:
-
177  MediaHandler(const MediaHandler&) = delete;
-
178  MediaHandler& operator=(const MediaHandler&) = delete;
+
175  const std::map<int, std::pair<std::shared_ptr<MediaHandler>, int>>&
+
176  output_handlers() {
+
177  return output_handlers_;
+
178  }
179 
-
180  bool initialized_ = false;
-
181  // Number of input streams.
-
182  int num_input_streams_ = 0;
-
183  // The next available output stream index, used by AddHandler.
-
184  int next_output_stream_index_ = 0;
-
185  // output stream index -> {output handler, output handler input stream index}
-
186  // map.
-
187  std::map<int, std::pair<std::shared_ptr<MediaHandler>, int>> output_handlers_;
-
188 };
-
189 
-
190 } // namespace media
-
191 } // namespace shaka
-
192 
-
193 #endif // PACKAGER_MEDIA_BASE_MEDIA_HANDLER_H_
+
180  private:
+
181  MediaHandler(const MediaHandler&) = delete;
+
182  MediaHandler& operator=(const MediaHandler&) = delete;
+
183 
+
184  bool initialized_ = false;
+
185  // Number of input streams.
+
186  int num_input_streams_ = 0;
+
187  // The next available output stream index, used by AddHandler.
+
188  int next_output_stream_index_ = 0;
+
189  // output stream index -> {output handler, output handler input stream index}
+
190  // map.
+
191  std::map<int, std::pair<std::shared_ptr<MediaHandler>, int>> output_handlers_;
+
192 };
+
193 
+
194 } // namespace media
+
195 } // namespace shaka
+
196 
+
197 #endif // PACKAGER_MEDIA_BASE_MEDIA_HANDLER_H_
Status DispatchPeriodInfo(int stream_index, std::shared_ptr< PeriodInfo > period_info)
Dispatch the period info to downstream handlers.
Status SetHandler(int output_stream_index, std::shared_ptr< MediaHandler > handler)
Connect downstream handler at the specified output stream index.
@@ -269,7 +273,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 1ba61a8fff..b72f25e76e 100644 --- a/docs/d3/d9c/encryption__handler_8cc_source.html +++ b/docs/d3/d9c/encryption__handler_8cc_source.html @@ -526,7 +526,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 10a69494d3..cc6de11576 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 dc9b2ba9e4..7321168010 100644 --- a/docs/d3/da1/classshaka_1_1media_1_1webm_1_1SingleSegmentSegmenter.html +++ b/docs/d3/da1/classshaka_1_1media_1_1webm_1_1SingleSegmentSegmenter.html @@ -296,7 +296,7 @@ uint64_t cluster_length_in diff --git a/docs/d3/da2/structshaka_1_1media_1_1mp4_1_1SchemeType.html b/docs/d3/da2/structshaka_1_1media_1_1mp4_1_1SchemeType.html index a4137f730f..bf30f1e9b4 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 58d0701f35..f031462e28 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 6071014535..0f07ff558e 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 697b43ed24..313c248130 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 6dade45203..51347a5162 100644 --- a/docs/d3/db5/structshaka_1_1media_1_1mp4_1_1Track.html +++ b/docs/d3/db5/structshaka_1_1media_1_1mp4_1_1Track.html @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/d3/db6/webm__parser_8cc_source.html b/docs/d3/db6/webm__parser_8cc_source.html index c2b8459e1d..fd1856869c 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 99a5457038..aaa6832b48 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 5c26e675b5..13ee915255 100644 --- a/docs/d3/dbe/demuxer_8cc_source.html +++ b/docs/d3/dbe/demuxer_8cc_source.html @@ -95,246 +95,332 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
6 
7 #include "packager/media/base/demuxer.h"
8 
-
9 #include "packager/base/bind.h"
-
10 #include "packager/base/logging.h"
-
11 #include "packager/media/base/decryptor_source.h"
-
12 #include "packager/media/base/key_source.h"
-
13 #include "packager/media/base/media_sample.h"
-
14 #include "packager/media/base/media_stream.h"
-
15 #include "packager/media/base/stream_info.h"
-
16 #include "packager/media/file/file.h"
-
17 #include "packager/media/formats/mp2t/mp2t_media_parser.h"
-
18 #include "packager/media/formats/mp4/mp4_media_parser.h"
-
19 #include "packager/media/formats/webm/webm_media_parser.h"
-
20 #include "packager/media/formats/webvtt/webvtt_media_parser.h"
-
21 #include "packager/media/formats/wvm/wvm_media_parser.h"
-
22 
-
23 namespace {
-
24 // 65KB, sufficient to determine the container and likely all init data.
-
25 const size_t kInitBufSize = 0x10000;
-
26 const size_t kBufSize = 0x200000; // 2MB
-
27 // Maximum number of allowed queued samples. If we are receiving a lot of
-
28 // samples before seeing init_event, something is not right. The number
-
29 // set here is arbitrary though.
-
30 const size_t kQueuedSamplesLimit = 10000;
-
31 }
-
32 
-
33 namespace shaka {
-
34 namespace media {
-
35 
-
36 Demuxer::Demuxer(const std::string& file_name)
-
37  : file_name_(file_name),
-
38  media_file_(NULL),
-
39  init_event_received_(false),
-
40  container_name_(CONTAINER_UNKNOWN),
-
41  buffer_(new uint8_t[kBufSize]),
-
42  cancelled_(false) {
-
43 }
-
44 
-
45 Demuxer::~Demuxer() {
-
46  if (media_file_)
-
47  media_file_->Close();
-
48 }
-
49 
-
50 void Demuxer::SetKeySource(std::unique_ptr<KeySource> key_source) {
-
51  key_source_ = std::move(key_source);
-
52 }
-
53 
- -
55  DCHECK(!media_file_);
-
56  DCHECK(!init_event_received_);
-
57 
-
58  LOG(INFO) << "Initialize Demuxer for file '" << file_name_ << "'.";
-
59 
-
60  media_file_ = File::Open(file_name_.c_str(), "r");
-
61  if (!media_file_) {
-
62  return Status(error::FILE_FAILURE,
-
63  "Cannot open file for reading " + file_name_);
-
64  }
-
65 
-
66  // Read enough bytes before detecting the container.
-
67  size_t bytes_read = 0;
-
68  while (bytes_read < kInitBufSize) {
-
69  int64_t read_result =
-
70  media_file_->Read(buffer_.get() + bytes_read, kInitBufSize);
-
71  if (read_result < 0)
-
72  return Status(error::FILE_FAILURE, "Cannot read file " + file_name_);
-
73  if (read_result == 0)
-
74  break;
-
75  bytes_read += read_result;
-
76  }
-
77  container_name_ = DetermineContainer(buffer_.get(), bytes_read);
-
78 
-
79  // Initialize media parser.
-
80  switch (container_name_) {
-
81  case CONTAINER_MOV:
-
82  parser_.reset(new mp4::MP4MediaParser());
-
83  break;
-
84  case CONTAINER_MPEG2TS:
-
85  parser_.reset(new mp2t::Mp2tMediaParser());
-
86  break;
-
87  case CONTAINER_MPEG2PS:
-
88  parser_.reset(new wvm::WvmMediaParser());
-
89  break;
-
90  case CONTAINER_WEBM:
-
91  parser_.reset(new WebMMediaParser());
-
92  break;
-
93  case CONTAINER_WEBVTT:
-
94  parser_.reset(new WebVttMediaParser());
-
95  break;
-
96  default:
-
97  NOTIMPLEMENTED();
-
98  return Status(error::UNIMPLEMENTED, "Container not supported.");
-
99  }
-
100 
-
101  parser_->Init(base::Bind(&Demuxer::ParserInitEvent, base::Unretained(this)),
-
102  base::Bind(&Demuxer::NewSampleEvent, base::Unretained(this)),
-
103  key_source_.get());
-
104 
-
105  // Handle trailing 'moov'.
-
106  if (container_name_ == CONTAINER_MOV)
-
107  static_cast<mp4::MP4MediaParser*>(parser_.get())->LoadMoov(file_name_);
-
108 
-
109  if (!parser_->Parse(buffer_.get(), bytes_read)) {
-
110  init_parsing_status_ =
-
111  Status(error::PARSER_FAILURE, "Cannot parse media file " + file_name_);
-
112  }
-
113 
-
114  // Parse until init event received or on error.
-
115  while (!init_event_received_ && init_parsing_status_.ok())
-
116  init_parsing_status_ = Parse();
-
117  // Defer error reporting if init completed successfully.
-
118  return init_event_received_ ? Status::OK : init_parsing_status_;
-
119 }
-
120 
-
121 void Demuxer::ParserInitEvent(
-
122  const std::vector<std::shared_ptr<StreamInfo>>& stream_infos) {
-
123  init_event_received_ = true;
-
124  for (const std::shared_ptr<StreamInfo>& stream_info : stream_infos)
-
125  streams_.emplace_back(new MediaStream(stream_info, this));
-
126 }
-
127 
-
128 Demuxer::QueuedSample::QueuedSample(uint32_t local_track_id,
-
129  std::shared_ptr<MediaSample> local_sample)
-
130  : track_id(local_track_id), sample(local_sample) {}
-
131 Demuxer::QueuedSample::~QueuedSample() {}
+
9 #include <algorithm>
+
10 
+
11 #include "packager/base/bind.h"
+
12 #include "packager/base/logging.h"
+
13 #include "packager/base/strings/string_number_conversions.h"
+
14 #include "packager/media/base/decryptor_source.h"
+
15 #include "packager/media/base/key_source.h"
+
16 #include "packager/media/base/media_sample.h"
+
17 #include "packager/media/base/stream_info.h"
+
18 #include "packager/media/file/file.h"
+
19 #include "packager/media/formats/mp2t/mp2t_media_parser.h"
+
20 #include "packager/media/formats/mp4/mp4_media_parser.h"
+
21 #include "packager/media/formats/webm/webm_media_parser.h"
+
22 #include "packager/media/formats/webvtt/webvtt_media_parser.h"
+
23 #include "packager/media/formats/wvm/wvm_media_parser.h"
+
24 
+
25 namespace {
+
26 // 65KB, sufficient to determine the container and likely all init data.
+
27 const size_t kInitBufSize = 0x10000;
+
28 const size_t kBufSize = 0x200000; // 2MB
+
29 // Maximum number of allowed queued samples. If we are receiving a lot of
+
30 // samples before seeing init_event, something is not right. The number
+
31 // set here is arbitrary though.
+
32 const size_t kQueuedSamplesLimit = 10000;
+
33 const int kInvalidStreamIndex = -1;
+
34 const int kBaseVideoOutputStreamIndex = 0x100;
+
35 const int kBaseAudioOutputStreamIndex = 0x200;
+
36 
+
37 std::string GetStreamLabel(int stream_index) {
+
38  switch (stream_index) {
+
39  case kBaseVideoOutputStreamIndex:
+
40  return "video";
+
41  case kBaseAudioOutputStreamIndex:
+
42  return "audio";
+
43  default:
+
44  return base::IntToString(stream_index);
+
45  }
+
46 }
+
47 
+
48 bool GetStreamIndex(const std::string& stream_label, int* stream_index) {
+
49  DCHECK(stream_index);
+
50  if (stream_label == "video") {
+
51  *stream_index = kBaseVideoOutputStreamIndex;
+
52  } else if (stream_label == "audio") {
+
53  *stream_index = kBaseAudioOutputStreamIndex;
+
54  } else {
+
55  // Expect stream_label to be a zero based stream id.
+
56  if (!base::StringToInt(stream_label, stream_index)) {
+
57  LOG(ERROR) << "Invalid argument --stream=" << stream_label << "; "
+
58  << "should be 'audio', 'video', or a number";
+
59  return false;
+
60  }
+
61  }
+
62  return true;
+
63 }
+
64 
+
65 }
+
66 
+
67 namespace shaka {
+
68 namespace media {
+
69 
+
70 Demuxer::Demuxer(const std::string& file_name)
+
71  : file_name_(file_name), buffer_(new uint8_t[kBufSize]) {}
+
72 
+
73 Demuxer::~Demuxer() {
+
74  if (media_file_)
+
75  media_file_->Close();
+
76 }
+
77 
+
78 void Demuxer::SetKeySource(std::unique_ptr<KeySource> key_source) {
+
79  key_source_ = std::move(key_source);
+
80 }
+
81 
+ +
83  LOG(INFO) << "Demuxer::Run() on file '" << file_name_ << "'.";
+
84  Status status = InitializeParser();
+
85  // ParserInitEvent callback is called after a few calls to Parse(), which sets
+
86  // up the streams. Only after that, we can verify the outputs below.
+
87  while (!all_streams_ready_ && status.ok())
+
88  status.Update(Parse());
+
89  // If no output is defined, then return success after receiving all stream
+
90  // info.
+
91  if (all_streams_ready_ && output_handlers().empty())
+
92  return Status::OK;
+
93  // Check if all specified outputs exists.
+
94  for (const auto& pair : output_handlers()) {
+
95  if (std::find(stream_indexes_.begin(), stream_indexes_.end(), pair.first) ==
+
96  stream_indexes_.end()) {
+
97  LOG(ERROR) << "Invalid argument, stream=" << GetStreamLabel(pair.first)
+
98  << " not available.";
+
99  return Status(error::INVALID_ARGUMENT, "Stream not available");
+
100  }
+
101  }
+
102 
+
103  while (!cancelled_ && status.ok())
+
104  status.Update(Parse());
+
105  if (cancelled_ && status.ok())
+
106  return Status(error::CANCELLED, "Demuxer run cancelled");
+
107 
+
108  if (status.error_code() == error::END_OF_STREAM) {
+
109  for (int stream_index : stream_indexes_) {
+
110  status = FlushStream(stream_index);
+
111  if (!status.ok())
+
112  return status;
+
113  }
+
114  return Status::OK;
+
115  }
+
116  return status;
+
117 }
+
118 
+ +
120  cancelled_ = true;
+
121 }
+
122 
+
123 Status Demuxer::SetHandler(const std::string& stream_label,
+
124  std::shared_ptr<MediaHandler> handler) {
+
125  int stream_index = kInvalidStreamIndex;
+
126  if (!GetStreamIndex(stream_label, &stream_index)) {
+
127  return Status(error::INVALID_ARGUMENT,
+
128  "Invalid stream: " + stream_label);
+
129  }
+
130  return MediaHandler::SetHandler(stream_index, std::move(handler));
+
131 }
132 
-
133 bool Demuxer::NewSampleEvent(uint32_t track_id,
-
134  const std::shared_ptr<MediaSample>& sample) {
-
135  if (!init_event_received_) {
-
136  if (queued_samples_.size() >= kQueuedSamplesLimit) {
-
137  LOG(ERROR) << "Queued samples limit reached: " << kQueuedSamplesLimit;
-
138  return false;
-
139  }
-
140  queued_samples_.push_back(QueuedSample(track_id, sample));
-
141  return true;
-
142  }
-
143  while (!queued_samples_.empty()) {
-
144  if (!PushSample(queued_samples_.front().track_id,
-
145  queued_samples_.front().sample)) {
-
146  return false;
-
147  }
-
148  queued_samples_.pop_front();
-
149  }
-
150  return PushSample(track_id, sample);
-
151 }
+
133 void Demuxer::SetLanguageOverride(const std::string& stream_label,
+
134  const std::string& language_override) {
+
135  int stream_index = kInvalidStreamIndex;
+
136  if (!GetStreamIndex(stream_label, &stream_index))
+
137  LOG(WARNING) << "Invalid stream for language override " << stream_label;
+
138  language_overrides_[stream_index] = language_override;
+
139 }
+
140 
+
141 Demuxer::QueuedSample::QueuedSample(uint32_t local_track_id,
+
142  std::shared_ptr<MediaSample> local_sample)
+
143  : track_id(local_track_id), sample(local_sample) {}
+
144 
+
145 Demuxer::QueuedSample::~QueuedSample() {}
+
146 
+
147 Status Demuxer::InitializeParser() {
+
148  DCHECK(!media_file_);
+
149  DCHECK(!all_streams_ready_);
+
150 
+
151  LOG(INFO) << "Initialize Demuxer for file '" << file_name_ << "'.";
152 
-
153 bool Demuxer::PushSample(uint32_t track_id,
-
154  const std::shared_ptr<MediaSample>& sample) {
-
155  for (const std::unique_ptr<MediaStream>& stream : streams_) {
-
156  if (track_id == stream->info()->track_id()) {
-
157  Status status = stream->PushSample(sample);
-
158  if (!status.ok())
-
159  LOG(ERROR) << "Demuxer::PushSample failed with " << status;
-
160  return status.ok();
-
161  }
-
162  }
-
163  LOG(ERROR) << "Track " << track_id << " not found.";
-
164  return false;
-
165 }
-
166 
- -
168  Status status;
-
169 
-
170  LOG(INFO) << "Demuxer::Run() on file '" << file_name_ << "'.";
+
153  media_file_ = File::Open(file_name_.c_str(), "r");
+
154  if (!media_file_) {
+
155  return Status(error::FILE_FAILURE,
+
156  "Cannot open file for reading " + file_name_);
+
157  }
+
158 
+
159  // Read enough bytes before detecting the container.
+
160  size_t bytes_read = 0;
+
161  while (bytes_read < kInitBufSize) {
+
162  int64_t read_result =
+
163  media_file_->Read(buffer_.get() + bytes_read, kInitBufSize);
+
164  if (read_result < 0)
+
165  return Status(error::FILE_FAILURE, "Cannot read file " + file_name_);
+
166  if (read_result == 0)
+
167  break;
+
168  bytes_read += read_result;
+
169  }
+
170  container_name_ = DetermineContainer(buffer_.get(), bytes_read);
171 
-
172  // Start the streams.
-
173  for (const std::unique_ptr<MediaStream>& stream : streams_) {
-
174  status = stream->Start(MediaStream::kPush);
-
175  if (!status.ok())
-
176  return status;
-
177  }
-
178 
-
179  while (!cancelled_ && (status = Parse()).ok())
-
180  continue;
-
181 
-
182  if (cancelled_ && status.ok())
-
183  return Status(error::CANCELLED, "Demuxer run cancelled");
-
184 
-
185  if (status.error_code() == error::END_OF_STREAM) {
-
186  // Push EOS sample to muxer to indicate end of stream.
-
187  const std::shared_ptr<MediaSample>& sample = MediaSample::CreateEOSBuffer();
-
188  for (const std::unique_ptr<MediaStream>& stream : streams_) {
-
189  status = stream->PushSample(sample);
-
190  if (!status.ok())
-
191  return status;
-
192  }
-
193  }
-
194  return status;
-
195 }
-
196 
- -
198  DCHECK(media_file_);
-
199  DCHECK(parser_);
-
200  DCHECK(buffer_);
-
201 
-
202  // Return early and avoid call Parse(...) again if it has already failed at
-
203  // the initialization.
-
204  if (!init_parsing_status_.ok())
-
205  return init_parsing_status_;
-
206 
-
207  int64_t bytes_read = media_file_->Read(buffer_.get(), kBufSize);
-
208  if (bytes_read == 0) {
-
209  if (!parser_->Flush())
-
210  return Status(error::PARSER_FAILURE, "Failed to flush.");
-
211  return Status(error::END_OF_STREAM, "");
-
212  } else if (bytes_read < 0) {
-
213  return Status(error::FILE_FAILURE, "Cannot read file " + file_name_);
-
214  }
-
215 
-
216  return parser_->Parse(buffer_.get(), bytes_read)
-
217  ? Status::OK
-
218  : Status(error::PARSER_FAILURE,
-
219  "Cannot parse media file " + file_name_);
-
220 }
-
221 
- -
223  cancelled_ = true;
-
224 }
-
225 
-
226 } // namespace media
-
227 } // namespace shaka
+
172  // Initialize media parser.
+
173  switch (container_name_) {
+
174  case CONTAINER_MOV:
+
175  parser_.reset(new mp4::MP4MediaParser());
+
176  break;
+
177  case CONTAINER_MPEG2TS:
+
178  parser_.reset(new mp2t::Mp2tMediaParser());
+
179  break;
+
180  case CONTAINER_MPEG2PS:
+
181  parser_.reset(new wvm::WvmMediaParser());
+
182  break;
+
183  case CONTAINER_WEBM:
+
184  parser_.reset(new WebMMediaParser());
+
185  break;
+
186  case CONTAINER_WEBVTT:
+
187  parser_.reset(new WebVttMediaParser());
+
188  break;
+
189  default:
+
190  NOTIMPLEMENTED();
+
191  return Status(error::UNIMPLEMENTED, "Container not supported.");
+
192  }
+
193 
+
194  parser_->Init(base::Bind(&Demuxer::ParserInitEvent, base::Unretained(this)),
+
195  base::Bind(&Demuxer::NewSampleEvent, base::Unretained(this)),
+
196  key_source_.get());
+
197 
+
198  // Handle trailing 'moov'.
+
199  if (container_name_ == CONTAINER_MOV)
+
200  static_cast<mp4::MP4MediaParser*>(parser_.get())->LoadMoov(file_name_);
+
201  if (!parser_->Parse(buffer_.get(), bytes_read)) {
+
202  return Status(error::PARSER_FAILURE,
+
203  "Cannot parse media file " + file_name_);
+
204  }
+
205  return Status::OK;
+
206 }
+
207 
+
208 void Demuxer::ParserInitEvent(
+
209  const std::vector<std::shared_ptr<StreamInfo>>& stream_infos) {
+
210  if (dump_stream_info_) {
+
211  printf("\nFile \"%s\":\n", file_name_.c_str());
+
212  printf("Found %zu stream(s).\n", stream_infos.size());
+
213  for (size_t i = 0; i < stream_infos.size(); ++i)
+
214  printf("Stream [%zu] %s\n", i, stream_infos[i]->ToString().c_str());
+
215  }
+
216 
+
217  int base_stream_index = 0;
+
218  bool video_handler_set =
+
219  output_handlers().find(kBaseVideoOutputStreamIndex) !=
+
220  output_handlers().end();
+
221  bool audio_handler_set =
+
222  output_handlers().find(kBaseAudioOutputStreamIndex) !=
+
223  output_handlers().end();
+
224  for (const std::shared_ptr<StreamInfo>& stream_info : stream_infos) {
+
225  int stream_index = base_stream_index;
+
226  if (video_handler_set && stream_info->stream_type() == kStreamVideo) {
+
227  stream_index = kBaseVideoOutputStreamIndex;
+
228  // Only for the first video stream.
+
229  video_handler_set = false;
+
230  }
+
231  if (audio_handler_set && stream_info->stream_type() == kStreamAudio) {
+
232  stream_index = kBaseAudioOutputStreamIndex;
+
233  // Only for the first audio stream.
+
234  audio_handler_set = false;
+
235  }
+
236 
+
237  const bool handler_set =
+
238  output_handlers().find(stream_index) != output_handlers().end();
+
239  if (handler_set) {
+
240  track_id_to_stream_index_map_[stream_info->track_id()] = stream_index;
+
241  stream_indexes_.push_back(stream_index);
+
242  auto iter = language_overrides_.find(stream_index);
+
243  if (iter != language_overrides_.end() &&
+
244  stream_info->stream_type() != kStreamVideo) {
+
245  stream_info->set_language(iter->second);
+
246  }
+
247  DispatchStreamInfo(stream_index, stream_info);
+
248  } else {
+
249  track_id_to_stream_index_map_[stream_info->track_id()] =
+
250  kInvalidStreamIndex;
+
251  }
+
252  ++base_stream_index;
+
253  }
+
254  all_streams_ready_ = true;
+
255 }
+
256 
+
257 bool Demuxer::NewSampleEvent(uint32_t track_id,
+
258  const std::shared_ptr<MediaSample>& sample) {
+
259  if (!all_streams_ready_) {
+
260  if (queued_samples_.size() >= kQueuedSamplesLimit) {
+
261  LOG(ERROR) << "Queued samples limit reached: " << kQueuedSamplesLimit;
+
262  return false;
+
263  }
+
264  queued_samples_.push_back(QueuedSample(track_id, sample));
+
265  return true;
+
266  }
+
267  while (!queued_samples_.empty()) {
+
268  if (!PushSample(queued_samples_.front().track_id,
+
269  queued_samples_.front().sample)) {
+
270  return false;
+
271  }
+
272  queued_samples_.pop_front();
+
273  }
+
274  return PushSample(track_id, sample);
+
275 }
+
276 
+
277 bool Demuxer::PushSample(uint32_t track_id,
+
278  const std::shared_ptr<MediaSample>& sample) {
+
279  auto stream_index_iter = track_id_to_stream_index_map_.find(track_id);
+
280  if (stream_index_iter == track_id_to_stream_index_map_.end()) {
+
281  LOG(ERROR) << "Track " << track_id << " not found.";
+
282  return false;
+
283  }
+
284  if (stream_index_iter->second == kInvalidStreamIndex)
+
285  return true;
+
286  Status status = DispatchMediaSample(stream_index_iter->second, sample);
+
287  if (!status.ok()) {
+
288  LOG(ERROR) << "Failed to process sample " << stream_index_iter->second
+
289  << " " << status;
+
290  }
+
291  return status.ok();
+
292 }
+
293 
+
294 Status Demuxer::Parse() {
+
295  DCHECK(media_file_);
+
296  DCHECK(parser_);
+
297  DCHECK(buffer_);
+
298 
+
299  int64_t bytes_read = media_file_->Read(buffer_.get(), kBufSize);
+
300  if (bytes_read == 0) {
+
301  if (!parser_->Flush())
+
302  return Status(error::PARSER_FAILURE, "Failed to flush.");
+
303  return Status(error::END_OF_STREAM, "");
+
304  } else if (bytes_read < 0) {
+
305  return Status(error::FILE_FAILURE, "Cannot read file " + file_name_);
+
306  }
+
307 
+
308  return parser_->Parse(buffer_.get(), bytes_read)
+
309  ? Status::OK
+
310  : Status(error::PARSER_FAILURE,
+
311  "Cannot parse media file " + file_name_);
+
312 }
+
313 
+
314 } // namespace media
+
315 } // namespace shaka
virtual bool Open()=0
Internal open. Should not be used directly.
- -
static std::shared_ptr< MediaSample > CreateEOSBuffer()
Definition: media_sample.cc:79
- - +
Status SetHandler(const std::string &stream_label, std::shared_ptr< MediaHandler > handler)
Definition: demuxer.cc:123
+
Status SetHandler(int output_stream_index, std::shared_ptr< MediaHandler > handler)
Connect downstream handler at the specified output stream index.
+
virtual bool Close()=0
- - - -
void SetKeySource(std::unique_ptr< KeySource > key_source)
Definition: demuxer.cc:50
+
void SetLanguageOverride(const std::string &stream_label, const std::string &language_override)
Definition: demuxer.cc:133
+ +
void Update(const Status &new_status)
Definition: status.h:127
+
void SetKeySource(std::unique_ptr< KeySource > key_source)
Definition: demuxer.cc:78
virtual int64_t Read(void *buffer, uint64_t length)=0
-
Status Parse()
Read from the source and send it to the parser.
Definition: demuxer.cc:197
-
Status Initialize()
Definition: demuxer.cc:54
-
Demuxer(const std::string &file_name)
Definition: demuxer.cc:36
+
virtual Status FlushStream(int input_stream_index)
Flush the stream at the specified input stream index.
+
Status DispatchMediaSample(int stream_index, std::shared_ptr< MediaSample > media_sample)
Dispatch the media sample to downstream handlers.
+
Demuxer(const std::string &file_name)
Definition: demuxer.cc:70
- - +
Status DispatchStreamInfo(int stream_index, std::shared_ptr< StreamInfo > stream_info)
Dispatch the stream info to downstream handlers.
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 1b3884d7d5..79e7bab4af 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 94be118a81..71843b2847 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 f80572b7f2..58a6f7fbf8 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 4ec0224a88..f5a413b4d2 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 f317725d2e..a96879b6a8 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 48961be676..df1cb05653 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 6abcf66e14..7e0a240408 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 029a0f930e..e9ee8e59b0 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 ba68f5ccb4..b60e876e21 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 37b99a7b8f..fafec9f1e2 100644 --- a/docs/d4/d00/mp4_2multi__segment__segmenter_8cc_source.html +++ b/docs/d4/d00/mp4_2multi__segment__segmenter_8cc_source.html @@ -100,205 +100,204 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
11 #include "packager/base/strings/string_number_conversions.h"
12 #include "packager/base/strings/string_util.h"
13 #include "packager/media/base/buffer_writer.h"
-
14 #include "packager/media/base/media_stream.h"
-
15 #include "packager/media/base/muxer_options.h"
-
16 #include "packager/media/base/muxer_util.h"
-
17 #include "packager/media/event/muxer_listener.h"
-
18 #include "packager/media/file/file.h"
-
19 #include "packager/media/formats/mp4/box_definitions.h"
-
20 
-
21 namespace shaka {
-
22 namespace media {
-
23 namespace mp4 {
-
24 
-
25 MultiSegmentSegmenter::MultiSegmentSegmenter(const MuxerOptions& options,
-
26  std::unique_ptr<FileType> ftyp,
-
27  std::unique_ptr<Movie> moov)
-
28  : Segmenter(options, std::move(ftyp), std::move(moov)),
-
29  styp_(new SegmentType),
-
30  num_segments_(0) {
-
31  // Use the same brands for styp as ftyp.
-
32  styp_->major_brand = Segmenter::ftyp()->major_brand;
-
33  styp_->compatible_brands = Segmenter::ftyp()->compatible_brands;
-
34 }
-
35 
-
36 MultiSegmentSegmenter::~MultiSegmentSegmenter() {}
-
37 
-
38 bool MultiSegmentSegmenter::GetInitRange(size_t* offset, size_t* size) {
-
39  DLOG(INFO) << "MultiSegmentSegmenter outputs init segment: "
-
40  << options().output_file_name;
-
41  return false;
-
42 }
-
43 
-
44 bool MultiSegmentSegmenter::GetIndexRange(size_t* offset, size_t* size) {
-
45  DLOG(INFO) << "MultiSegmentSegmenter does not have index range.";
-
46  return false;
-
47 }
-
48 
-
49 Status MultiSegmentSegmenter::DoInitialize() {
-
50  DCHECK(ftyp());
-
51  DCHECK(moov());
-
52  // Generate the output file with init segment.
-
53  File* file = File::Open(options().output_file_name.c_str(), "w");
-
54  if (file == NULL) {
-
55  return Status(error::FILE_FAILURE,
-
56  "Cannot open file for write " + options().output_file_name);
-
57  }
-
58  std::unique_ptr<BufferWriter> buffer(new BufferWriter);
-
59  ftyp()->Write(buffer.get());
-
60  moov()->Write(buffer.get());
-
61  Status status = buffer->WriteToFile(file);
-
62  if (!file->Close()) {
-
63  LOG(WARNING) << "Failed to close the file properly: "
-
64  << options().output_file_name;
-
65  }
-
66  return status;
-
67 }
-
68 
-
69 Status MultiSegmentSegmenter::DoFinalize() {
-
70  SetComplete();
-
71  return Status::OK;
-
72 }
-
73 
-
74 Status MultiSegmentSegmenter::DoFinalizeSegment() {
-
75  DCHECK(sidx());
-
76  // earliest_presentation_time is the earliest presentation time of any
-
77  // access unit in the reference stream in the first subsegment.
-
78  // It will be re-calculated later when subsegments are finalized.
-
79  sidx()->earliest_presentation_time =
-
80  sidx()->references[0].earliest_presentation_time;
-
81 
-
82  if (options().num_subsegments_per_sidx <= 0)
-
83  return WriteSegment();
-
84 
-
85  // sidx() contains pre-generated segment references with one reference per
-
86  // fragment. Calculate |num_fragments_per_subsegment| and combine
-
87  // pre-generated references into final subsegment references.
-
88  size_t num_fragments = sidx()->references.size();
-
89  size_t num_fragments_per_subsegment =
-
90  (num_fragments - 1) / options().num_subsegments_per_sidx + 1;
-
91  if (num_fragments_per_subsegment <= 1)
-
92  return WriteSegment();
-
93 
-
94  size_t frag_index = 0;
-
95  size_t subseg_index = 0;
-
96  std::vector<SegmentReference>& refs = sidx()->references;
-
97  uint64_t first_sap_time =
-
98  refs[0].sap_delta_time + refs[0].earliest_presentation_time;
-
99  for (size_t i = 1; i < num_fragments; ++i) {
-
100  refs[subseg_index].referenced_size += refs[i].referenced_size;
-
101  refs[subseg_index].subsegment_duration += refs[i].subsegment_duration;
-
102  refs[subseg_index].earliest_presentation_time =
-
103  std::min(refs[subseg_index].earliest_presentation_time,
-
104  refs[i].earliest_presentation_time);
-
105  if (refs[subseg_index].sap_type == SegmentReference::TypeUnknown &&
-
106  refs[i].sap_type != SegmentReference::TypeUnknown) {
-
107  refs[subseg_index].sap_type = refs[i].sap_type;
-
108  first_sap_time =
-
109  refs[i].sap_delta_time + refs[i].earliest_presentation_time;
-
110  }
-
111  if (++frag_index >= num_fragments_per_subsegment) {
-
112  // Calculate sap delta time w.r.t. sidx_->earliest_presentation_time.
-
113  if (refs[subseg_index].sap_type != SegmentReference::TypeUnknown) {
-
114  refs[subseg_index].sap_delta_time =
-
115  first_sap_time - refs[subseg_index].earliest_presentation_time;
-
116  }
-
117  if (++i >= num_fragments)
-
118  break;
-
119  refs[++subseg_index] = refs[i];
-
120  first_sap_time =
-
121  refs[i].sap_delta_time + refs[i].earliest_presentation_time;
-
122  frag_index = 1;
-
123  }
-
124  }
-
125 
-
126  refs.resize(options().num_subsegments_per_sidx);
-
127 
-
128  // earliest_presentation_time is the earliest presentation time of any
-
129  // access unit in the reference stream in the first subsegment.
-
130  sidx()->earliest_presentation_time = refs[0].earliest_presentation_time;
-
131 
-
132  return WriteSegment();
-
133 }
-
134 
-
135 Status MultiSegmentSegmenter::WriteSegment() {
-
136  DCHECK(sidx());
-
137  DCHECK(fragment_buffer());
-
138  DCHECK(styp_);
-
139 
-
140  std::unique_ptr<BufferWriter> buffer(new BufferWriter());
-
141  File* file;
-
142  std::string file_name;
-
143  if (options().segment_template.empty()) {
-
144  // Append the segment to output file if segment template is not specified.
-
145  file_name = options().output_file_name.c_str();
-
146  file = File::Open(file_name.c_str(), "a");
-
147  if (file == NULL) {
-
148  return Status(
-
149  error::FILE_FAILURE,
-
150  "Cannot open file for append " + options().output_file_name);
-
151  }
-
152  } else {
-
153  file_name = GetSegmentName(options().segment_template,
-
154  sidx()->earliest_presentation_time,
-
155  num_segments_++, options().bandwidth);
-
156  file = File::Open(file_name.c_str(), "w");
-
157  if (file == NULL) {
-
158  return Status(error::FILE_FAILURE,
-
159  "Cannot open file for write " + file_name);
-
160  }
-
161  styp_->Write(buffer.get());
-
162  }
-
163 
-
164  // If num_subsegments_per_sidx is negative, no SIDX box is generated.
-
165  if (options().num_subsegments_per_sidx >= 0)
-
166  sidx()->Write(buffer.get());
-
167 
-
168  const size_t segment_size = buffer->Size() + fragment_buffer()->Size();
-
169  DCHECK_NE(segment_size, 0u);
-
170 
-
171  Status status = buffer->WriteToFile(file);
-
172  if (status.ok())
-
173  status = fragment_buffer()->WriteToFile(file);
-
174 
-
175  if (!file->Close())
-
176  LOG(WARNING) << "Failed to close the file properly: " << file_name;
-
177 
-
178  if (!status.ok())
-
179  return status;
-
180 
-
181  uint64_t segment_duration = 0;
-
182  // ISO/IEC 23009-1:2012: the value shall be identical to sum of the the
-
183  // values of all Subsegment_duration fields in the first ‘sidx’ box.
-
184  for (size_t i = 0; i < sidx()->references.size(); ++i)
-
185  segment_duration += sidx()->references[i].subsegment_duration;
-
186 
-
187  UpdateProgress(segment_duration);
-
188  if (muxer_listener()) {
-
189  muxer_listener()->OnSampleDurationReady(sample_duration());
-
190  muxer_listener()->OnNewSegment(file_name,
-
191  sidx()->earliest_presentation_time,
-
192  segment_duration, segment_size);
-
193  }
-
194 
-
195  return Status::OK;
-
196 }
-
197 
-
198 } // namespace mp4
-
199 } // namespace media
-
200 } // namespace shaka
+
14 #include "packager/media/base/muxer_options.h"
+
15 #include "packager/media/base/muxer_util.h"
+
16 #include "packager/media/event/muxer_listener.h"
+
17 #include "packager/media/file/file.h"
+
18 #include "packager/media/formats/mp4/box_definitions.h"
+
19 
+
20 namespace shaka {
+
21 namespace media {
+
22 namespace mp4 {
+
23 
+
24 MultiSegmentSegmenter::MultiSegmentSegmenter(const MuxerOptions& options,
+
25  std::unique_ptr<FileType> ftyp,
+
26  std::unique_ptr<Movie> moov)
+
27  : Segmenter(options, std::move(ftyp), std::move(moov)),
+
28  styp_(new SegmentType),
+
29  num_segments_(0) {
+
30  // Use the same brands for styp as ftyp.
+
31  styp_->major_brand = Segmenter::ftyp()->major_brand;
+
32  styp_->compatible_brands = Segmenter::ftyp()->compatible_brands;
+
33 }
+
34 
+
35 MultiSegmentSegmenter::~MultiSegmentSegmenter() {}
+
36 
+
37 bool MultiSegmentSegmenter::GetInitRange(size_t* offset, size_t* size) {
+
38  DLOG(INFO) << "MultiSegmentSegmenter outputs init segment: "
+
39  << options().output_file_name;
+
40  return false;
+
41 }
+
42 
+
43 bool MultiSegmentSegmenter::GetIndexRange(size_t* offset, size_t* size) {
+
44  DLOG(INFO) << "MultiSegmentSegmenter does not have index range.";
+
45  return false;
+
46 }
+
47 
+
48 Status MultiSegmentSegmenter::DoInitialize() {
+
49  DCHECK(ftyp());
+
50  DCHECK(moov());
+
51  // Generate the output file with init segment.
+
52  File* file = File::Open(options().output_file_name.c_str(), "w");
+
53  if (file == NULL) {
+
54  return Status(error::FILE_FAILURE,
+
55  "Cannot open file for write " + options().output_file_name);
+
56  }
+
57  std::unique_ptr<BufferWriter> buffer(new BufferWriter);
+
58  ftyp()->Write(buffer.get());
+
59  moov()->Write(buffer.get());
+
60  Status status = buffer->WriteToFile(file);
+
61  if (!file->Close()) {
+
62  LOG(WARNING) << "Failed to close the file properly: "
+
63  << options().output_file_name;
+
64  }
+
65  return status;
+
66 }
+
67 
+
68 Status MultiSegmentSegmenter::DoFinalize() {
+
69  SetComplete();
+
70  return Status::OK;
+
71 }
+
72 
+
73 Status MultiSegmentSegmenter::DoFinalizeSegment() {
+
74  DCHECK(sidx());
+
75  // earliest_presentation_time is the earliest presentation time of any
+
76  // access unit in the reference stream in the first subsegment.
+
77  // It will be re-calculated later when subsegments are finalized.
+
78  sidx()->earliest_presentation_time =
+
79  sidx()->references[0].earliest_presentation_time;
+
80 
+
81  if (options().num_subsegments_per_sidx <= 0)
+
82  return WriteSegment();
+
83 
+
84  // sidx() contains pre-generated segment references with one reference per
+
85  // fragment. Calculate |num_fragments_per_subsegment| and combine
+
86  // pre-generated references into final subsegment references.
+
87  size_t num_fragments = sidx()->references.size();
+
88  size_t num_fragments_per_subsegment =
+
89  (num_fragments - 1) / options().num_subsegments_per_sidx + 1;
+
90  if (num_fragments_per_subsegment <= 1)
+
91  return WriteSegment();
+
92 
+
93  size_t frag_index = 0;
+
94  size_t subseg_index = 0;
+
95  std::vector<SegmentReference>& refs = sidx()->references;
+
96  uint64_t first_sap_time =
+
97  refs[0].sap_delta_time + refs[0].earliest_presentation_time;
+
98  for (size_t i = 1; i < num_fragments; ++i) {
+
99  refs[subseg_index].referenced_size += refs[i].referenced_size;
+
100  refs[subseg_index].subsegment_duration += refs[i].subsegment_duration;
+
101  refs[subseg_index].earliest_presentation_time =
+
102  std::min(refs[subseg_index].earliest_presentation_time,
+
103  refs[i].earliest_presentation_time);
+
104  if (refs[subseg_index].sap_type == SegmentReference::TypeUnknown &&
+
105  refs[i].sap_type != SegmentReference::TypeUnknown) {
+
106  refs[subseg_index].sap_type = refs[i].sap_type;
+
107  first_sap_time =
+
108  refs[i].sap_delta_time + refs[i].earliest_presentation_time;
+
109  }
+
110  if (++frag_index >= num_fragments_per_subsegment) {
+
111  // Calculate sap delta time w.r.t. sidx_->earliest_presentation_time.
+
112  if (refs[subseg_index].sap_type != SegmentReference::TypeUnknown) {
+
113  refs[subseg_index].sap_delta_time =
+
114  first_sap_time - refs[subseg_index].earliest_presentation_time;
+
115  }
+
116  if (++i >= num_fragments)
+
117  break;
+
118  refs[++subseg_index] = refs[i];
+
119  first_sap_time =
+
120  refs[i].sap_delta_time + refs[i].earliest_presentation_time;
+
121  frag_index = 1;
+
122  }
+
123  }
+
124 
+
125  refs.resize(options().num_subsegments_per_sidx);
+
126 
+
127  // earliest_presentation_time is the earliest presentation time of any
+
128  // access unit in the reference stream in the first subsegment.
+
129  sidx()->earliest_presentation_time = refs[0].earliest_presentation_time;
+
130 
+
131  return WriteSegment();
+
132 }
+
133 
+
134 Status MultiSegmentSegmenter::WriteSegment() {
+
135  DCHECK(sidx());
+
136  DCHECK(fragment_buffer());
+
137  DCHECK(styp_);
+
138 
+
139  std::unique_ptr<BufferWriter> buffer(new BufferWriter());
+
140  File* file;
+
141  std::string file_name;
+
142  if (options().segment_template.empty()) {
+
143  // Append the segment to output file if segment template is not specified.
+
144  file_name = options().output_file_name.c_str();
+
145  file = File::Open(file_name.c_str(), "a");
+
146  if (file == NULL) {
+
147  return Status(
+
148  error::FILE_FAILURE,
+
149  "Cannot open file for append " + options().output_file_name);
+
150  }
+
151  } else {
+
152  file_name = GetSegmentName(options().segment_template,
+
153  sidx()->earliest_presentation_time,
+
154  num_segments_++, options().bandwidth);
+
155  file = File::Open(file_name.c_str(), "w");
+
156  if (file == NULL) {
+
157  return Status(error::FILE_FAILURE,
+
158  "Cannot open file for write " + file_name);
+
159  }
+
160  styp_->Write(buffer.get());
+
161  }
+
162 
+
163  // If num_subsegments_per_sidx is negative, no SIDX box is generated.
+
164  if (options().num_subsegments_per_sidx >= 0)
+
165  sidx()->Write(buffer.get());
+
166 
+
167  const size_t segment_size = buffer->Size() + fragment_buffer()->Size();
+
168  DCHECK_NE(segment_size, 0u);
+
169 
+
170  Status status = buffer->WriteToFile(file);
+
171  if (status.ok())
+
172  status = fragment_buffer()->WriteToFile(file);
+
173 
+
174  if (!file->Close())
+
175  LOG(WARNING) << "Failed to close the file properly: " << file_name;
+
176 
+
177  if (!status.ok())
+
178  return status;
+
179 
+
180  uint64_t segment_duration = 0;
+
181  // ISO/IEC 23009-1:2012: the value shall be identical to sum of the the
+
182  // values of all Subsegment_duration fields in the first ‘sidx’ box.
+
183  for (size_t i = 0; i < sidx()->references.size(); ++i)
+
184  segment_duration += sidx()->references[i].subsegment_duration;
+
185 
+
186  UpdateProgress(segment_duration);
+
187  if (muxer_listener()) {
+
188  muxer_listener()->OnSampleDurationReady(sample_duration());
+
189  muxer_listener()->OnNewSegment(file_name,
+
190  sidx()->earliest_presentation_time,
+
191  segment_duration, segment_size);
+
192  }
+
193 
+
194  return Status::OK;
+
195 }
+
196 
+
197 } // namespace mp4
+
198 } // namespace media
+
199 } // namespace shaka
virtual void OnNewSegment(const std::string &segment_name, uint64_t start_time, uint64_t duration, uint64_t segment_file_size)=0
virtual bool Open()=0
Internal open. Should not be used directly.
-
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:390
-
void SetComplete()
Set progress to 100%.
Definition: segmenter.cc:406
+
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:383
+
void SetComplete()
Set progress to 100%.
Definition: segmenter.cc:399
virtual void OnSampleDurationReady(uint32_t sample_duration)=0
virtual bool Close()=0
Define an abstract file interface.
Definition: file.h:24
-
uint32_t sample_duration() const
Definition: segmenter.h:110
+
uint32_t sample_duration() const
Definition: segmenter.h:108
-
bool GetInitRange(size_t *offset, size_t *size) override
-
bool GetIndexRange(size_t *offset, size_t *size) override
+
bool GetInitRange(size_t *offset, size_t *size) override
+
bool GetIndexRange(size_t *offset, size_t *size) override
void Write(BufferWriter *writer)
Definition: box.cc:25
@@ -306,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 2cb80129f0..3220bd528b 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 0f5ba4fafb..0d02c367aa 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 1eb2a8f228..17be34ea95 100644 --- a/docs/d4/d14/classshaka_1_1media_1_1WebVttMediaParser-members.html +++ b/docs/d4/d14/classshaka_1_1media_1_1WebVttMediaParser-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/d18/structshaka_1_1media_1_1mp4_1_1EditListEntry.html b/docs/d4/d18/structshaka_1_1media_1_1mp4_1_1EditListEntry.html index ba5addde75..86046264c3 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 dd911c5530..e776c6adad 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 d8eaa615d0..69d836e927 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 833529eb21..be15735362 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 06dcdedc7c..3e08ac819e 100644 --- a/docs/d4/d33/structshaka_1_1media_1_1mp4_1_1WebVTTSourceLabelBox.html +++ b/docs/d4/d33/structshaka_1_1media_1_1mp4_1_1WebVTTSourceLabelBox.html @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d4/d37/io__cache_8cc_source.html b/docs/d4/d37/io__cache_8cc_source.html index 5d3a592748..c22fd2f01d 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 28b337d4af..9582b31f93 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 7e229e610e..393d74314d 100644 --- a/docs/d4/d43/classshaka_1_1media_1_1ChunkingHandler.html +++ b/docs/d4/d43/classshaka_1_1media_1_1ChunkingHandler.html @@ -177,6 +177,11 @@ int num_input_streams int next_output_stream_index () const   + +const std::map< int, std::pair
+< std::shared_ptr
+< MediaHandler >, int > > & output_handlers () +  @@ -259,7 +264,7 @@ class 

Friends

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 8ab9ba9064..ebf774e818 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 f1162de571..3b454b315f 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 37eee3ea92..02961a0bbb 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 363d061942..dca34b37d4 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 189731ff7b..baf98eef05 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 f547373de9..4256315992 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 01750e1ed1..2f52001064 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 e34d0c1822..74972e8735 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 49dc160f92..682588e58d 100644 --- a/docs/d4/d83/cue_8cc_source.html +++ b/docs/d4/d83/cue_8cc_source.html @@ -152,7 +152,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 5e82415954..a214a0d8ca 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 2dca4b1a32..dfd345fb68 100644 --- a/docs/d4/d8a/classshaka_1_1media_1_1HEVCDecoderConfigurationRecord.html +++ b/docs/d4/d8a/classshaka_1_1media_1_1HEVCDecoderConfigurationRecord.html @@ -171,7 +171,7 @@ void  diff --git a/docs/d4/d8d/structshaka_1_1media_1_1mp4_1_1EC3Specific.html b/docs/d4/d8d/structshaka_1_1media_1_1mp4_1_1EC3Specific.html index 43d71a4bd8..7fd3b32b8c 100644 --- a/docs/d4/d8d/structshaka_1_1media_1_1mp4_1_1EC3Specific.html +++ b/docs/d4/d8d/structshaka_1_1media_1_1mp4_1_1EC3Specific.html @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d4/d8e/classshaka_1_1media_1_1UdpOptions.html b/docs/d4/d8e/classshaka_1_1media_1_1UdpOptions.html index f21c97bd92..cda4078c77 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 3e9ce90676..c0330016b1 100644 --- a/docs/d4/d9b/classshaka_1_1media_1_1MediaHandlerTestBase.html +++ b/docs/d4/d9b/classshaka_1_1media_1_1MediaHandlerTestBase.html @@ -173,7 +173,7 @@ void  diff --git a/docs/d4/da6/classshaka_1_1media_1_1PlayReadyKeySource.html b/docs/d4/da6/classshaka_1_1media_1_1PlayReadyKeySource.html index 66d2221913..766ff285aa 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/da7/segmenter__test__base_8cc_source.html b/docs/d4/da7/segmenter__test__base_8cc_source.html index 417e3013cf..f6e59416e7 100644 --- a/docs/d4/da7/segmenter__test__base_8cc_source.html +++ b/docs/d4/da7/segmenter__test__base_8cc_source.html @@ -299,7 +299,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); 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 53eb7c2c26..3c92a01159 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 fdb80ece92..3f018c58de 100644 --- a/docs/d4/db1/structshaka_1_1media_1_1mp4_1_1CompactSampleSize-members.html +++ b/docs/d4/db1/structshaka_1_1media_1_1mp4_1_1CompactSampleSize-members.html @@ -114,7 +114,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d4/db2/cluster__builder_8h_source.html b/docs/d4/db2/cluster__builder_8h_source.html index c9d25439dc..7955ef0097 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 13ec2e3191..a583facf1e 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 777299bece..e4018dc715 100644 --- a/docs/d4/db9/structshaka_1_1media_1_1mp4_1_1MediaHeader.html +++ b/docs/d4/db9/structshaka_1_1media_1_1mp4_1_1MediaHeader.html @@ -194,7 +194,7 @@ Additional Inherited Members diff --git a/docs/d4/dc8/classshaka_1_1media_1_1mp2t_1_1AacProgramMapTableWriter.html b/docs/d4/dc8/classshaka_1_1media_1_1mp2t_1_1AacProgramMapTableWriter.html index c1a78bad61..b8b7164111 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 c5c6223aa7..cf12aeba65 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 1dd661d669..2c3034a939 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 27c6d6bb01..22b975e225 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 3e0d336f44..96583d8b3b 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 83b7c8dc0c..ca8bfdf147 100644 --- a/docs/d4/de3/structshaka_1_1media_1_1mp4_1_1DataReference.html +++ b/docs/d4/de3/structshaka_1_1media_1_1mp4_1_1DataReference.html @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/d4/de6/classshaka_1_1media_1_1ProgressListener.html b/docs/d4/de6/classshaka_1_1media_1_1ProgressListener.html index e7402a688b..1d79f2f1e5 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 7bbf0e162c..5cde43a0e4 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 e8894f096a..a9278bd900 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 314cda5df0..f6c20d3417 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 5d3be119cb..7822f3740a 100644 --- a/docs/d4/df5/webvtt__sample__converter_8cc_source.html +++ b/docs/d4/df5/webvtt__sample__converter_8cc_source.html @@ -408,7 +408,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 ce6c5377ff..2b408876e8 100644 --- a/docs/d4/df9/structshaka_1_1media_1_1mp4_1_1SegmentIndex.html +++ b/docs/d4/df9/structshaka_1_1media_1_1mp4_1_1SegmentIndex.html @@ -194,7 +194,7 @@ Additional Inherited Members diff --git a/docs/d4/dfa/structshaka_1_1media_1_1mp4_1_1AC3Specific.html b/docs/d4/dfa/structshaka_1_1media_1_1mp4_1_1AC3Specific.html index 2932926986..b5064e27f3 100644 --- a/docs/d4/dfa/structshaka_1_1media_1_1mp4_1_1AC3Specific.html +++ b/docs/d4/dfa/structshaka_1_1media_1_1mp4_1_1AC3Specific.html @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d4/dfd/structshaka_1_1media_1_1H265Sps.html b/docs/d4/dfd/structshaka_1_1media_1_1H265Sps.html index 4bf304d9f7..145acf0e82 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 9079392201..564fddd445 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 7cdee396d0..b5710a4546 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 aee98e3bca..4b37313f4e 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 4aa319e4ef..a36c87954c 100644 --- a/docs/d5/d09/structshaka_1_1media_1_1mp4_1_1CueIDBox.html +++ b/docs/d5/d09/structshaka_1_1media_1_1mp4_1_1CueIDBox.html @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d5/d11/classshaka_1_1media_1_1WebMInfoParser-members.html b/docs/d5/d11/classshaka_1_1media_1_1WebMInfoParser-members.html index b461833cbe..c547403da3 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 66a4f06640..5f99a1215c 100644 --- a/docs/d5/d11/structshaka_1_1media_1_1mp4_1_1ElementaryStreamDescriptor.html +++ b/docs/d5/d11/structshaka_1_1media_1_1mp4_1_1ElementaryStreamDescriptor.html @@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/d5/d13/classshaka_1_1media_1_1ESDescriptor.html b/docs/d5/d13/classshaka_1_1media_1_1ESDescriptor.html index 0b38dc1d53..462a8ac12d 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 3d407233e7..f706ce90b3 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 c259f844ac..1b2fcf225d 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 8315c15534..2bbddc314a 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 2c73607daa..7c9e3a148d 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 aca8629df5..5beaf1cb68 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 e127d434db..c35a5ece2f 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 a0c7f09b6f..184e744174 100644 --- a/docs/d5/d40/webm_2single__segment__segmenter_8h_source.html +++ b/docs/d5/d40/webm_2single__segment__segmenter_8h_source.html @@ -159,7 +159,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d4b/classshaka_1_1media_1_1mp2t_1_1TsSectionPsi-members.html b/docs/d5/d4b/classshaka_1_1media_1_1mp2t_1_1TsSectionPsi-members.html index 482f71a6b8..0093b0a4ca 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 900495d4d0..73aaadf39e 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 4d575ef1be..032df8b1f0 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 5b8720279f..2695c9a57b 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 d7a154df48..78618326b8 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 5f1eb91649..e296c70db8 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 015a1b3a12..df060ea1cb 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 fdb5447ddf..f5cf9b0523 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 0ea21e0824..2db550a3b7 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 64c3bf580e..420aa7db50 100644 --- a/docs/d5/d66/classshaka_1_1media_1_1NalUnitToByteStreamConverter.html +++ b/docs/d5/d66/classshaka_1_1media_1_1NalUnitToByteStreamConverter.html @@ -289,7 +289,7 @@ class NalUnitToByteStreamC diff --git a/docs/d5/d6f/vlog__flags_8cc_source.html b/docs/d5/d6f/vlog__flags_8cc_source.html index 633d1cab2b..3563cbabe0 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 544a9bb8a4..7f54c3d32e 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 123b227faf..867d2b1d3a 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 ad9b6e6465..6698a991c9 100644 --- a/docs/d5/d86/structshaka_1_1media_1_1mp4_1_1MediaInformation.html +++ b/docs/d5/d86/structshaka_1_1media_1_1mp4_1_1MediaInformation.html @@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/d5/d89/widevine__key__source_8cc_source.html b/docs/d5/d89/widevine__key__source_8cc_source.html index d5a43fee47..32bde7bc07 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 9ca5ec89ed..419012429c 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 aac39ae3f6..3336340e81 100644 --- a/docs/d5/d8f/webm__cluster__parser_8cc_source.html +++ b/docs/d5/d8f/webm__cluster__parser_8cc_source.html @@ -722,7 +722,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d91/es__parser__adts_8cc_source.html b/docs/d5/d91/es__parser__adts_8cc_source.html index 61a47f2b2c..09b0cf34e1 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 038866d0c5..dda6514ead 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 4d81fd6355..b28256296c 100644 --- a/docs/d5/d98/encryptor_8cc_source.html +++ b/docs/d5/d98/encryptor_8cc_source.html @@ -318,7 +318,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d5/d9b/vp__codec__configuration__record_8h_source.html b/docs/d5/d9b/vp__codec__configuration__record_8h_source.html index 7c1ef5066c..4dd2003a25 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 df0630e95a..30e83f53f2 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 ace49cdfc3..110863245d 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 f5f12f537c..22cf545ab9 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 33651aac67..c2cfd26192 100644 --- a/docs/d5/db1/classshaka_1_1media_1_1StreamInfo.html +++ b/docs/d5/db1/classshaka_1_1media_1_1StreamInfo.html @@ -231,7 +231,7 @@ void set_is_encrypted 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 ee8af3183e..77c4622bae 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 d74d877652..068e79c844 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 371b8a4a1b..aeebcb2afa 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 dab0d0de39..a69e3f8e81 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 c95ad17511..41dc1114e5 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 28d019007f..5d23af2ad8 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 a05298b7cd..edd9ca0b85 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 c78478b8bc..fc8886088c 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 a76a8363aa..6fd82bb629 100644 --- a/docs/d5/de0/classshaka_1_1media_1_1mp2t_1_1PesPacketGenerator.html +++ b/docs/d5/de0/classshaka_1_1media_1_1mp2t_1_1PesPacketGenerator.html @@ -307,7 +307,7 @@ class PesPacketGeneratorTe diff --git a/docs/d5/dec/classshaka_1_1media_1_1WebMParserClient.html b/docs/d5/dec/classshaka_1_1media_1_1WebMParserClient.html index e5caf7159c..14fd266824 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 3da4f91792..33613588eb 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 6bdad44be1..b10577ad36 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 c95b5b478d..9598644af9 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 a0b643373c..b9e6c4ae7f 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 0aa37391a6..5d28f10989 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 46ce2b0eeb..3a43a34247 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 1585b179a5..f6a850e608 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 31ce91735e..fe0a5b094f 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 ddef96e3b5..038ca224a3 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 66277bd78f..cc3345e4f0 100644 --- a/docs/d6/d16/text__stream__info_8cc_source.html +++ b/docs/d6/d16/text__stream__info_8cc_source.html @@ -124,7 +124,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d17/es__parser__h264_8cc_source.html b/docs/d6/d17/es__parser__h264_8cc_source.html index 9d9df5403c..d01112fb07 100644 --- a/docs/d6/d17/es__parser__h264_8cc_source.html +++ b/docs/d6/d17/es__parser__h264_8cc_source.html @@ -262,7 +262,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d1a/structshaka_1_1media_1_1mp4_1_1MovieHeader.html b/docs/d6/d1a/structshaka_1_1media_1_1mp4_1_1MovieHeader.html index 0e112e21f8..89f3563c15 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 4d8b5fa169..50768ddfad 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 ea404c2ea1..e5521b97db 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 e64d6487b7..dfc58f7c7e 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 9f8b8dbc33..d7ef35b10d 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 294b4cd268..0c27ece7f4 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 f614888b8d..f8401c5364 100644 --- a/docs/d6/d3b/chunk__info__iterator_8cc_source.html +++ b/docs/d6/d3b/chunk__info__iterator_8cc_source.html @@ -171,7 +171,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d41/encrypting__fragmenter_8cc_source.html b/docs/d6/d41/encrypting__fragmenter_8cc_source.html index e142f3e4b2..c80f6ae58d 100644 --- a/docs/d6/d41/encrypting__fragmenter_8cc_source.html +++ b/docs/d6/d41/encrypting__fragmenter_8cc_source.html @@ -501,7 +501,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 64e1753a3f..fd6b585b63 100644 --- a/docs/d6/d4c/classshaka_1_1media_1_1EncryptionHandler.html +++ b/docs/d6/d4c/classshaka_1_1media_1_1EncryptionHandler.html @@ -175,6 +175,11 @@ int num_input_streams int next_output_stream_index () const   + +const std::map< int, std::pair
+< std::shared_ptr
+< MediaHandler >, int > > & output_handlers () +  @@ -250,7 +255,7 @@ class 

Friends

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 46713a71d4..18b6a47d8d 100644 --- a/docs/d6/d4e/webm_2multi__segment__segmenter_8cc_source.html +++ b/docs/d6/d4e/webm_2multi__segment__segmenter_8cc_source.html @@ -95,99 +95,98 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
6 
7 #include "packager/media/formats/webm/multi_segment_segmenter.h"
8 
-
9 #include "packager/media/base/media_stream.h"
-
10 #include "packager/media/base/muxer_options.h"
-
11 #include "packager/media/base/muxer_util.h"
-
12 #include "packager/media/base/stream_info.h"
-
13 #include "packager/media/event/muxer_listener.h"
-
14 #include "packager/third_party/libwebm/src/mkvmuxer.hpp"
-
15 
-
16 namespace shaka {
-
17 namespace media {
-
18 namespace webm {
-
19 MultiSegmentSegmenter::MultiSegmentSegmenter(const MuxerOptions& options)
-
20  : Segmenter(options), num_segment_(0) {}
-
21 
-
22 MultiSegmentSegmenter::~MultiSegmentSegmenter() {}
-
23 
-
24 bool MultiSegmentSegmenter::GetInitRangeStartAndEnd(uint64_t* start,
-
25  uint64_t* end) {
-
26  return false;
-
27 }
-
28 
-
29 bool MultiSegmentSegmenter::GetIndexRangeStartAndEnd(uint64_t* start,
-
30  uint64_t* end) {
-
31  return false;
-
32 }
-
33 
-
34 Status MultiSegmentSegmenter::DoInitialize(std::unique_ptr<MkvWriter> writer) {
-
35  writer_ = std::move(writer);
-
36  return WriteSegmentHeader(0, writer_.get());
-
37 }
-
38 
-
39 Status MultiSegmentSegmenter::DoFinalize() {
-
40  Status status = FinalizeSegment();
-
41  status.Update(writer_->Close());
-
42  return status;
-
43 }
-
44 
-
45 Status MultiSegmentSegmenter::FinalizeSegment() {
-
46  if (!cluster()->Finalize())
-
47  return Status(error::FILE_FAILURE, "Error finalizing segment.");
-
48 
-
49  if (muxer_listener()) {
-
50  const uint64_t size = cluster()->Size();
-
51  const uint64_t start_webm_timecode = cluster()->timecode();
-
52  const uint64_t start_timescale = FromWebMTimecode(start_webm_timecode);
-
53  muxer_listener()->OnNewSegment(writer_->file()->file_name(),
-
54  start_timescale,
-
55  cluster_length_in_time_scale(), size);
-
56  }
-
57 
-
58  VLOG(1) << "WEBM file '" << writer_->file()->file_name() << "' finalized.";
-
59  return Status::OK;
-
60 }
-
61 
-
62 Status MultiSegmentSegmenter::NewSubsegment(uint64_t start_timescale) {
-
63  if (cluster() && !cluster()->Finalize())
-
64  return Status(error::FILE_FAILURE, "Error finalizing segment.");
-
65 
-
66  uint64_t start_webm_timecode = FromBMFFTimescale(start_timescale);
-
67  return SetCluster(start_webm_timecode, 0, writer_.get());
-
68 }
-
69 
-
70 Status MultiSegmentSegmenter::NewSegment(uint64_t start_timescale) {
-
71  if (cluster()) {
-
72  Status temp = FinalizeSegment();
-
73  if (!temp.ok())
-
74  return temp;
-
75  }
-
76 
-
77  // Create a new file for the new segment.
-
78  std::string segment_name =
-
79  GetSegmentName(options().segment_template, start_timescale, num_segment_,
-
80  options().bandwidth);
-
81  writer_.reset(new MkvWriter);
-
82  Status status = writer_->Open(segment_name);
-
83  if (!status.ok())
-
84  return status;
-
85  num_segment_++;
-
86 
-
87  uint64_t start_webm_timecode = FromBMFFTimescale(start_timescale);
-
88  return SetCluster(start_webm_timecode, 0, writer_.get());
-
89 }
-
90 
-
91 } // namespace webm
-
92 } // namespace media
-
93 } // namespace shaka
+
9 #include "packager/media/base/muxer_options.h"
+
10 #include "packager/media/base/muxer_util.h"
+
11 #include "packager/media/base/stream_info.h"
+
12 #include "packager/media/event/muxer_listener.h"
+
13 #include "packager/third_party/libwebm/src/mkvmuxer.hpp"
+
14 
+
15 namespace shaka {
+
16 namespace media {
+
17 namespace webm {
+
18 MultiSegmentSegmenter::MultiSegmentSegmenter(const MuxerOptions& options)
+
19  : Segmenter(options), num_segment_(0) {}
+
20 
+
21 MultiSegmentSegmenter::~MultiSegmentSegmenter() {}
+
22 
+
23 bool MultiSegmentSegmenter::GetInitRangeStartAndEnd(uint64_t* start,
+
24  uint64_t* end) {
+
25  return false;
+
26 }
+
27 
+
28 bool MultiSegmentSegmenter::GetIndexRangeStartAndEnd(uint64_t* start,
+
29  uint64_t* end) {
+
30  return false;
+
31 }
+
32 
+
33 Status MultiSegmentSegmenter::DoInitialize(std::unique_ptr<MkvWriter> writer) {
+
34  writer_ = std::move(writer);
+
35  return WriteSegmentHeader(0, writer_.get());
+
36 }
+
37 
+
38 Status MultiSegmentSegmenter::DoFinalize() {
+
39  Status status = FinalizeSegment();
+
40  status.Update(writer_->Close());
+
41  return status;
+
42 }
+
43 
+
44 Status MultiSegmentSegmenter::FinalizeSegment() {
+
45  if (!cluster()->Finalize())
+
46  return Status(error::FILE_FAILURE, "Error finalizing segment.");
+
47 
+
48  if (muxer_listener()) {
+
49  const uint64_t size = cluster()->Size();
+
50  const uint64_t start_webm_timecode = cluster()->timecode();
+
51  const uint64_t start_timescale = FromWebMTimecode(start_webm_timecode);
+
52  muxer_listener()->OnNewSegment(writer_->file()->file_name(),
+
53  start_timescale,
+
54  cluster_length_in_time_scale(), size);
+
55  }
+
56 
+
57  VLOG(1) << "WEBM file '" << writer_->file()->file_name() << "' finalized.";
+
58  return Status::OK;
+
59 }
+
60 
+
61 Status MultiSegmentSegmenter::NewSubsegment(uint64_t start_timescale) {
+
62  if (cluster() && !cluster()->Finalize())
+
63  return Status(error::FILE_FAILURE, "Error finalizing segment.");
+
64 
+
65  uint64_t start_webm_timecode = FromBMFFTimescale(start_timescale);
+
66  return SetCluster(start_webm_timecode, 0, writer_.get());
+
67 }
+
68 
+
69 Status MultiSegmentSegmenter::NewSegment(uint64_t start_timescale) {
+
70  if (cluster()) {
+
71  Status temp = FinalizeSegment();
+
72  if (!temp.ok())
+
73  return temp;
+
74  }
+
75 
+
76  // Create a new file for the new segment.
+
77  std::string segment_name =
+
78  GetSegmentName(options().segment_template, start_timescale, num_segment_,
+
79  options().bandwidth);
+
80  writer_.reset(new MkvWriter);
+
81  Status status = writer_->Open(segment_name);
+
82  if (!status.ok())
+
83  return status;
+
84  num_segment_++;
+
85 
+
86  uint64_t start_webm_timecode = FromBMFFTimescale(start_timescale);
+
87  return SetCluster(start_webm_timecode, 0, writer_.get());
+
88 }
+
89 
+
90 } // namespace webm
+
91 } // namespace media
+
92 } // namespace shaka
virtual void OnNewSegment(const std::string &segment_name, uint64_t start_time, uint64_t duration, uint64_t segment_file_size)=0
void Update(const Status &new_status)
Definition: status.h:127
- + diff --git a/docs/d6/d55/aes__cryptor_8cc_source.html b/docs/d6/d55/aes__cryptor_8cc_source.html index 541c394e5f..b498c170bc 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 f88552fbcf..526ab2f16f 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 1141b59084..f4098e4be4 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 d5ffc2db63..0e07d36ad0 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 1ffa357be9..bb8469d4e7 100644 --- a/docs/d6/d6a/cue_8h_source.html +++ b/docs/d6/d6a/cue_8h_source.html @@ -124,7 +124,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 dcac6e740b..963c9e2bcb 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 80aa340802..9fd04d8fa6 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 02557b76b8..0207fc1a1f 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 3e0a92f89a..b577eda6d7 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 80050094f8..e5775642e1 100644 --- a/docs/d6/d79/structshaka_1_1media_1_1mp4_1_1VTTAdditionalTextBox.html +++ b/docs/d6/d79/structshaka_1_1media_1_1mp4_1_1VTTAdditionalTextBox.html @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d6/d7b/webm__tracks__parser_8h_source.html b/docs/d6/d7b/webm__tracks__parser_8h_source.html index 72775b4726..dee0c80de9 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 f127a37de2..3525819aad 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 839c4fa28c..c39f1c919d 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 13ebbcb4e6..00b1955c25 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 4155189081..d6df8310ba 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 c39a4e90e0..9767c94f68 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 6a6db7e919..1720bd7910 100644 --- a/docs/d6/d9b/h264__parser_8h_source.html +++ b/docs/d6/d9b/h264__parser_8h_source.html @@ -448,7 +448,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/d9f/hls__flags_8cc_source.html b/docs/d6/d9f/hls__flags_8cc_source.html index bd45e71c63..33526504b3 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 ad2ccf3c5a..0f1e56212d 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 e5741fd13b..a5d2dce711 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 11a9b60804..b5581d6fce 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 b0e7c8fe73..b8ec32eb38 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 e6712d40eb..ef31c46442 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 cb47e44bb6..2283c4e552 100644 --- a/docs/d6/daa/structshaka_1_1media_1_1mp4_1_1VTTCueBox.html +++ b/docs/d6/daa/structshaka_1_1media_1_1mp4_1_1VTTCueBox.html @@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/d6/db1/classshaka_1_1media_1_1MediaStream-members.html b/docs/d6/db1/classshaka_1_1media_1_1MediaStream-members.html deleted file mode 100644 index 73433b9cb5..0000000000 --- a/docs/d6/db1/classshaka_1_1media_1_1MediaStream-members.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -DASH Media Packaging SDK: Member List - - - - - - - - - -
-
- - - - - - -
-
DASH Media Packaging SDK -
-
-
- - - - - - - - - -
- -
- - -
-
-
-
shaka::media::MediaStream Member List
-
-
- -

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

- - - - - - - - - - - - - - -
Connect(Muxer *muxer)shaka::media::MediaStream
demuxer() (defined in shaka::media::MediaStream)shaka::media::MediaStreaminline
info() const (defined in shaka::media::MediaStream)shaka::media::MediaStream
kPull enum value (defined in shaka::media::MediaStream)shaka::media::MediaStream
kPush enum value (defined in shaka::media::MediaStream)shaka::media::MediaStream
MediaStream(std::shared_ptr< StreamInfo > info, Demuxer *demuxer)shaka::media::MediaStream
MediaStreamOperation enum name (defined in shaka::media::MediaStream)shaka::media::MediaStream
muxer() (defined in shaka::media::MediaStream)shaka::media::MediaStreaminline
PullSample(std::shared_ptr< MediaSample > *sample)shaka::media::MediaStream
PushSample(const std::shared_ptr< MediaSample > &sample)shaka::media::MediaStream
Start(MediaStreamOperation operation)shaka::media::MediaStream
ToString() const shaka::media::MediaStream
~MediaStream() (defined in shaka::media::MediaStream)shaka::media::MediaStream
- - - - diff --git a/docs/d6/db1/classshaka_1_1media_1_1VideoStreamInfo.html b/docs/d6/db1/classshaka_1_1media_1_1VideoStreamInfo.html index 0fe490845c..19a6bb8253 100644 --- a/docs/d6/db1/classshaka_1_1media_1_1VideoStreamInfo.html +++ b/docs/d6/db1/classshaka_1_1media_1_1VideoStreamInfo.html @@ -438,7 +438,7 @@ void set_is_encrypted 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 e798bf79db..f0d1e1abb4 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 6668c77cdc..c0b6947275 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 5f0b107123..381ed655c9 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 0aa0f7e29b..ee5297d8c5 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 b048d4ce3d..0fbff30522 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 03e17ecf56..bbe82d339d 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 1358608234..30e74b0b56 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 74a8b89869..8f5c43d907 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 6f3bd551e5..a0982fe4d0 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 efb7b0d287..632ae08649 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 067c655f3e..66708f5079 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 00117f946e..1f5a35c344 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 5fc176310e..8203ab4364 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 51cdfb427b..bb6170c457 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 ebb0c585f3..b6027b2197 100644 --- a/docs/d6/de9/ts__segmenter_8cc_source.html +++ b/docs/d6/de9/ts__segmenter_8cc_source.html @@ -305,7 +305,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
void SetTsWriterFileOpenedForTesting(bool value)
Only for testing.
void InjectTsWriterForTesting(std::unique_ptr< TsWriter > writer)
Only for testing.
Status Initialize(const StreamInfo &stream_info, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds)
Definition: ts_segmenter.cc:34
- +
static int64_t GetFileSize(const char *file_name)
Definition: file.cc:176
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:30
@@ -316,7 +316,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d6/ded/ts__packet_8h_source.html b/docs/d6/ded/ts__packet_8h_source.html index 445e8eb4a8..27c8a59cfa 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 45cc42be5a..795137edc2 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 b8870dc00c..b28001cb6e 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 d519ace3c5..84ae172476 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 8045816802..7c2f42a125 100644 --- a/docs/d7/d07/structshaka_1_1media_1_1mp4_1_1SoundMediaHeader.html +++ b/docs/d7/d07/structshaka_1_1media_1_1mp4_1_1SoundMediaHeader.html @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/d7/d0b/muxer__listener__test__helper_8h_source.html b/docs/d7/d0b/muxer__listener__test__helper_8h_source.html index e0499ff4cc..1dec296b13 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 76b33b2659..7a937e7a2f 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 ccd0d85ace..2ca4768ba0 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 2dbe7b8768..28b908a8e0 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 51537a3b0d..d8b2fcd1d3 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 7fb880d3bf..61ffa87577 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 c3001f99a2..fea6a54353 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 64ce87538b..14c3204e40 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 51d09e07fa..5aaa39d5b5 100644 --- a/docs/d7/d34/structshaka_1_1media_1_1EncryptionConfig.html +++ b/docs/d7/d34/structshaka_1_1media_1_1EncryptionConfig.html @@ -99,7 +99,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d36/classshaka_1_1media_1_1ContentEncoding-members.html b/docs/d7/d36/classshaka_1_1media_1_1ContentEncoding-members.html index 9202eeb935..744542ee80 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 1b125979f9..c211c6416b 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 1547e7b847..177b9fd68b 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 22f8043c68..9ef96d14e5 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 7287ae8fdd..b7b03bbef0 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 04ecb5b6e5..8f52475b8a 100644 --- a/docs/d7/d54/classshaka_1_1media_1_1H26xByteToUnitStreamConverter-members.html +++ b/docs/d7/d54/classshaka_1_1media_1_1H26xByteToUnitStreamConverter-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d58/structshaka_1_1media_1_1PeriodInfo.html b/docs/d7/d58/structshaka_1_1media_1_1PeriodInfo.html index 40ccd3f073..29c1edf1d7 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 4d37e79e75..d5b9c78cfa 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 2e98c11579..3e5a4c67ee 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 08a0e6da0c..7442b62f55 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 7c3f280cd4..452edde3d3 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 bab683d224..90adba5f72 100644 --- a/docs/d7/d79/chunking__handler_8h_source.html +++ b/docs/d7/d79/chunking__handler_8h_source.html @@ -188,7 +188,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 8d8cf42895..f37f58504e 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 f628423f41..c10565e3d3 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 5c05fc2f5b..c42627275f 100644 --- a/docs/d7/d87/video__stream__info_8h_source.html +++ b/docs/d7/d87/video__stream__info_8h_source.html @@ -171,7 +171,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/d9c/structshaka_1_1media_1_1H265SliceHeader_1_1LongTermPicsInfo.html b/docs/d7/d9c/structshaka_1_1media_1_1H265SliceHeader_1_1LongTermPicsInfo.html index b7eaeba64c..0290f7208d 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 d985e44b45..02b95ab0df 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 20af139d33..1e11ebe7b8 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 77f5178415..065e563e8a 100644 --- a/docs/d7/dae/structshaka_1_1media_1_1mp4_1_1MediaData.html +++ b/docs/d7/dae/structshaka_1_1media_1_1mp4_1_1MediaData.html @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d7/db0/mpd__writer_8h_source.html b/docs/d7/db0/mpd__writer_8h_source.html index e29a34edb0..e540f8145b 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 31be24c442..14382b30ab 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 ae4ae40e07..60004847a5 100644 --- a/docs/d7/dc3/structshaka_1_1media_1_1mp4_1_1TextSampleEntry.html +++ b/docs/d7/dc3/structshaka_1_1media_1_1mp4_1_1TextSampleEntry.html @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/d7/dc6/byte__queue_8h_source.html b/docs/d7/dc6/byte__queue_8h_source.html index edba0f3afb..85fb0bb42e 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 32de34af81..0b9858892f 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 347cdd2a09..0bb065b9b7 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 efab7baa90..39be8fca28 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 @@ -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 30c3769eab..c0485ebe45 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 5a0726269a..bfdc4f3396 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 8c802a627a..2be2ed3894 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 b41bf586b7..cd5237b997 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 2b04e27118..9a28f324b6 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 56ddf20d4b..8737427d5d 100644 --- a/docs/d7/dec/h264__byte__to__unit__stream__converter_8h_source.html +++ b/docs/d7/dec/h264__byte__to__unit__stream__converter_8h_source.html @@ -134,7 +134,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/dee/mpd__generator_8cc_source.html b/docs/d7/dee/mpd__generator_8cc_source.html index df67b39fb7..8bc8e7c65d 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 8d3b3cc25e..e0704736f8 100644 --- a/docs/d7/def/mp4__media__parser_8cc_source.html +++ b/docs/d7/def/mp4__media__parser_8cc_source.html @@ -871,7 +871,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d7/df9/byte__queue_8cc_source.html b/docs/d7/df9/byte__queue_8cc_source.html index 3bd19803f9..8a146e00d8 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 e190363b4b..9cb5e4bc21 100644 --- a/docs/d8/d08/classshaka_1_1media_1_1H264ByteToUnitStreamConverter.html +++ b/docs/d8/d08/classshaka_1_1media_1_1H264ByteToUnitStreamConverter.html @@ -171,7 +171,7 @@ static 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 a9c07db9d4..82010fcc42 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 513d682c7a..c68bb205c4 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 67c5f8d8d9..4c676a9c40 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 056cd27299..2875652391 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 5edf7116cc..4c14932f4b 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 36ab8149ec..a25f492094 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 fd5972d311..fcb0aaceb6 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 27344640d1..4e018f7bdd 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 ee78c8ca84..20de7c36ff 100644 --- a/docs/d8/d16/structshaka_1_1media_1_1MuxerOptions-members.html +++ b/docs/d8/d16/structshaka_1_1media_1_1MuxerOptions-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/d19/bandwidth__estimator_8h_source.html b/docs/d8/d19/bandwidth__estimator_8h_source.html index a7824bf44c..bebb7f9dc4 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 3f00d56492..9158d5c679 100644 --- a/docs/d8/d20/structshaka_1_1media_1_1mp4_1_1WebVTTConfigurationBox.html +++ b/docs/d8/d20/structshaka_1_1media_1_1mp4_1_1WebVTTConfigurationBox.html @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d8/d23/structshaka_1_1media_1_1SubsampleEntry-members.html b/docs/d8/d23/structshaka_1_1media_1_1SubsampleEntry-members.html index 8605485fb4..9e5576e9c7 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 4f5dd87a4b..e214f5b9e1 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 887b5968d0..ff1409e890 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 243ecc904e..715f75ac80 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 2c70289a2a..5c9e39782b 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 335d7de698..b6b4e77553 100644 --- a/docs/d8/d5b/structshaka_1_1media_1_1mp4_1_1AudioSampleEntry.html +++ b/docs/d8/d5b/structshaka_1_1media_1_1mp4_1_1AudioSampleEntry.html @@ -206,7 +206,7 @@ Additional Inherited Members diff --git a/docs/d8/d5c/classshaka_1_1media_1_1MediaStream.html b/docs/d8/d5c/classshaka_1_1media_1_1MediaStream.html deleted file mode 100644 index 6e445ad286..0000000000 --- a/docs/d8/d5c/classshaka_1_1media_1_1MediaStream.html +++ /dev/null @@ -1,233 +0,0 @@ - - - - - - -DASH Media Packaging SDK: shaka::media::MediaStream Class Reference - - - - - - - - - -
-
- - - - - - -
-
DASH Media Packaging SDK -
-
-
- - - - - - - - - -
- -
- - -
-
- -
-
shaka::media::MediaStream Class Reference
-
-
- -

#include <media_stream.h>

- - - - -

-Public Types

enum  MediaStreamOperation { kPush, -kPull - }
 
- - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 MediaStream (std::shared_ptr< StreamInfo > info, Demuxer *demuxer)
 
void Connect (Muxer *muxer)
 
-Status Start (MediaStreamOperation operation)
 Start the stream for pushing or pulling.
 
-Status PushSample (const std::shared_ptr< MediaSample > &sample)
 Push sample to Muxer (triggered by Demuxer).
 
-Status PullSample (std::shared_ptr< MediaSample > *sample)
 Pull sample from Demuxer (triggered by Muxer).
 
-Demuxerdemuxer ()
 
-Muxermuxer ()
 
-const std::shared_ptr< StreamInfoinfo () const
 
std::string ToString () const
 
-

Detailed Description

-

MediaStream connects Demuxer to Muxer. It is an abstraction for a media elementary stream.

- -

Definition at line 25 of file media_stream.h.

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
shaka::media::MediaStream::MediaStream (std::shared_ptr< StreamInfoinfo,
Demuxerdemuxer 
)
-
-

Create MediaStream from StreamInfo and Demuxer.

-
Parameters
- - -
demuxercannot be NULL.
-
-
- -

Definition at line 19 of file media_stream.cc.

- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
void shaka::media::MediaStream::Connect (Muxermuxer)
-
-

Connect the stream to Muxer.

-
Parameters
- - -
muxercannot be NULL.
-
-
- -

Definition at line 55 of file media_stream.cc.

- -
-
- -
-
- - - - - - - -
std::string shaka::media::MediaStream::ToString () const
-
-
Returns
a human-readable string describing |*this|.
- -

Definition at line 105 of file media_stream.cc.

- -
-
-
The documentation for this class was generated from the following files: -
- - - - 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 f7b9b056e0..f9e71950d7 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 1defa9d227..dbca8d6f40 100644 --- a/docs/d8/d6d/structshaka_1_1media_1_1mp4_1_1DataInformation.html +++ b/docs/d8/d6d/structshaka_1_1media_1_1mp4_1_1DataInformation.html @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d8/d70/structshaka_1_1media_1_1mp4_1_1Metadata-members.html b/docs/d8/d70/structshaka_1_1media_1_1mp4_1_1Metadata-members.html index f4ead3199a..4dc258e000 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 6a1e9dd4da..774e64a9a5 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 975c7154dd..520ff99e52 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 dca0b1e101..66f4fc9884 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 d220a196ef..81bef2aa8f 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 7367f117e5..32de3620d0 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 04ae826cbd..f85bbb453f 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 dca8868b7a..e5c5e9293e 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 baf2e0509c..b4f56498ea 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 2df61b02fc..b2ace7ca86 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 0cb23268d6..96e0b6092b 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 0ae45164af..35e9c68133 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 9ef68ea262..7d4f59cfe3 100644 --- a/docs/d8/d9a/fragmenter_8cc_source.html +++ b/docs/d8/d9a/fragmenter_8cc_source.html @@ -302,7 +302,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 073196dadb..2add5ade50 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 924c801c5f..ca3525f295 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 4921d3ccd7..7a3e8a289b 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 10bc14aa82..3e673920b8 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 40c1d1779e..288834202b 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 3e6224693c..a1fe0c0391 100644 --- a/docs/d8/daa/stream__info_8h_source.html +++ b/docs/d8/daa/stream__info_8h_source.html @@ -208,7 +208,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d8/daf/namespaceshaka.html b/docs/d8/daf/namespaceshaka.html index 0fe68d2d2c..083592ccec 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 b6d814ca4a..7b8a234d86 100644 --- a/docs/d8/db7/classshaka_1_1media_1_1mp4_1_1MultiSegmentSegmenter.html +++ b/docs/d8/db7/classshaka_1_1media_1_1mp4_1_1MultiSegmentSegmenter.html @@ -119,12 +119,12 @@ Public Member Functions  Segmenter (const MuxerOptions &options, std::unique_ptr< FileType > ftyp, std::unique_ptr< Movie > moov)   -Status Initialize (const std::vector< MediaStream * > &streams, MuxerListener *muxer_listener, ProgressListener *progress_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme) -  +Status Initialize (const std::vector< std::shared_ptr< StreamInfo >> &streams, MuxerListener *muxer_listener, ProgressListener *progress_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme) +  Status Finalize ()   -Status AddSample (const MediaStream *stream, std::shared_ptr< MediaSample > sample) -  +Status AddSample (const StreamInfo &stream_Info, std::shared_ptr< MediaSample > sample) +  uint32_t GetReferenceTimeScale () const   @@ -209,7 +209,7 @@ void set_progress_targetImplements shaka::media::mp4::Segmenter.

-

Definition at line 44 of file multi_segment_segmenter.cc.

+

Definition at line 43 of file multi_segment_segmenter.cc.

@@ -248,7 +248,7 @@ void set_progress_targetImplements shaka::media::mp4::Segmenter.

-

Definition at line 38 of file multi_segment_segmenter.cc.

+

Definition at line 37 of file multi_segment_segmenter.cc.

@@ -259,7 +259,7 @@ void set_progress_target diff --git a/docs/d8/db9/classshaka_1_1media_1_1WebMContentEncodingsClient-members.html b/docs/d8/db9/classshaka_1_1media_1_1WebMContentEncodingsClient-members.html index 81c09426dc..eca8c144b8 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 d7217c51cb..f86c45be72 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 c68e1f3998..0f666865fa 100644 --- a/docs/d8/dc3/structshaka_1_1media_1_1mp4_1_1CueTimeBox.html +++ b/docs/d8/dc3/structshaka_1_1media_1_1mp4_1_1CueTimeBox.html @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d8/dca/ts__writer_8h_source.html b/docs/d8/dca/ts__writer_8h_source.html index bff1687681..c09d97742e 100644 --- a/docs/d8/dca/ts__writer_8h_source.html +++ b/docs/d8/dca/ts__writer_8h_source.html @@ -101,68 +101,70 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
12 #include <memory>
13 #include <vector>
14 
-
15 #include "packager/media/base/media_stream.h"
-
16 #include "packager/media/file/file.h"
-
17 #include "packager/media/file/file_closer.h"
-
18 #include "packager/media/formats/mp2t/continuity_counter.h"
-
19 #include "packager/media/formats/mp2t/pes_packet.h"
-
20 #include "packager/media/formats/mp2t/program_map_table_writer.h"
-
21 
-
22 namespace shaka {
-
23 namespace media {
-
24 namespace mp2t {
+
15 #include "packager/media/file/file.h"
+
16 #include "packager/media/file/file_closer.h"
+
17 #include "packager/media/formats/mp2t/continuity_counter.h"
+
18 #include "packager/media/formats/mp2t/pes_packet.h"
+
19 #include "packager/media/formats/mp2t/program_map_table_writer.h"
+
20 
+
21 namespace shaka {
+
22 namespace media {
+
23 
+
24 class StreamInfo;
25 
-
28 class TsWriter {
-
29  public:
-
30  TsWriter();
-
31  virtual ~TsWriter();
-
32 
-
36  virtual bool Initialize(const StreamInfo& stream_info);
-
37 
-
42  virtual bool NewSegment(const std::string& file_name);
-
43 
-
45  virtual void SignalEncrypted();
-
46 
-
50  virtual bool FinalizeSegment();
-
51 
-
56  virtual bool AddPesPacket(std::unique_ptr<PesPacket> pes_packet);
-
57 
- -
60  std::unique_ptr<ProgramMapTableWriter> table_writer);
-
61 
-
62  private:
-
63  // True if further segments generated by this instance should be encrypted.
-
64  bool encrypted_ = false;
-
65 
-
66  ContinuityCounter pmt_continuity_counter_;
-
67  ContinuityCounter pat_continuity_counter_;
-
68  ContinuityCounter elementary_stream_continuity_counter_;
-
69 
-
70  std::unique_ptr<ProgramMapTableWriter> pmt_writer_;
+
26 namespace mp2t {
+
27 
+
30 class TsWriter {
+
31  public:
+
32  TsWriter();
+
33  virtual ~TsWriter();
+
34 
+
38  virtual bool Initialize(const StreamInfo& stream_info);
+
39 
+
44  virtual bool NewSegment(const std::string& file_name);
+
45 
+
47  virtual void SignalEncrypted();
+
48 
+
52  virtual bool FinalizeSegment();
+
53 
+
58  virtual bool AddPesPacket(std::unique_ptr<PesPacket> pes_packet);
+
59 
+ +
62  std::unique_ptr<ProgramMapTableWriter> table_writer);
+
63 
+
64  private:
+
65  // True if further segments generated by this instance should be encrypted.
+
66  bool encrypted_ = false;
+
67 
+
68  ContinuityCounter pmt_continuity_counter_;
+
69  ContinuityCounter pat_continuity_counter_;
+
70  ContinuityCounter elementary_stream_continuity_counter_;
71 
-
72  std::unique_ptr<File, FileCloser> current_file_;
+
72  std::unique_ptr<ProgramMapTableWriter> pmt_writer_;
73 
-
74  DISALLOW_COPY_AND_ASSIGN(TsWriter);
-
75 };
-
76 
-
77 } // namespace mp2t
-
78 } // namespace media
-
79 } // namespace shaka
-
80 
-
81 #endif // PACKAGER_MEDIA_FORMATS_MP2T_TS_WRITER_H_
+
74  std::unique_ptr<File, FileCloser> current_file_;
+
75 
+
76  DISALLOW_COPY_AND_ASSIGN(TsWriter);
+
77 };
+
78 
+
79 } // namespace mp2t
+
80 } // namespace media
+
81 } // namespace shaka
+
82 
+
83 #endif // PACKAGER_MEDIA_FORMATS_MP2T_TS_WRITER_H_
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
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
virtual void SignalEncrypted()
Signals the writer that the rest of the segments are encrypted.
Definition: ts_writer.cc:229
diff --git a/docs/d8/dcd/structshaka_1_1media_1_1mp4_1_1DecodingTime-members.html b/docs/d8/dcd/structshaka_1_1media_1_1mp4_1_1DecodingTime-members.html index 5c56021ea0..07a63acbd4 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 c9d6bdf0d1..bdf0311f5c 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 953330f76f..75c7e6f60e 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 6605c3bd41..6be8a24e28 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 6a6235d9a2..2377f87a7e 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 3c8b6d8719..e99d421e55 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 6a2ad04bfc..e4ba9d72fe 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 73452f756c..930dfe3287 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 24d25a7203..a3a44f1e1b 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 dfbb23d27b..b6e5c64c4e 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 b4185f3a3f..098336e957 100644 --- a/docs/d8/df0/webm_2single__segment__segmenter_8cc_source.html +++ b/docs/d8/df0/webm_2single__segment__segmenter_8cc_source.html @@ -177,11 +177,11 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
88 } // namespace webm
89 } // namespace media
90 } // namespace shaka
- + diff --git a/docs/d8/df7/classshaka_1_1media_1_1SegmentTestBase-members.html b/docs/d8/df7/classshaka_1_1media_1_1SegmentTestBase-members.html index a317c9e74e..af09f89cc2 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 94cdd92872..b91f4ef6f8 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 @@ -153,7 +153,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 d01b8dce10..57450aba3a 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 c39b3a24f0..c5f5519e80 100644 --- a/docs/d9/d01/mp4_2single__segment__segmenter_8h_source.html +++ b/docs/d9/d01/mp4_2single__segment__segmenter_8h_source.html @@ -131,16 +131,16 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
56 } // namespace shaka
57 
58 #endif // MEDIA_FORMATS_MP4_SINGLE_SEGMENT_SEGMENTER_H_
-
bool GetIndexRange(size_t *offset, size_t *size) override
+
bool GetIndexRange(size_t *offset, size_t *size) override
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
-
bool GetInitRange(size_t *offset, size_t *size) override
+
bool GetInitRange(size_t *offset, size_t *size) override
diff --git a/docs/d9/d08/mock__mpd__builder_8h_source.html b/docs/d9/d08/mock__mpd__builder_8h_source.html index 626dfd7b92..87dc1cbaca 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 53f77a9184..5cd73c0305 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 88d7f9f87c..28c86c4277 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 030dec0491..cd584eab95 100644 --- a/docs/d9/d12/chunking__handler_8cc_source.html +++ b/docs/d9/d12/chunking__handler_8cc_source.html @@ -356,7 +356,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 f35de81fe9..9727ae0b0d 100644 --- a/docs/d9/d13/classshaka_1_1media_1_1BufferReader.html +++ b/docs/d9/d13/classshaka_1_1media_1_1BufferReader.html @@ -276,7 +276,7 @@ bool ReadNBytesInto8s diff --git a/docs/d9/d15/key__rotation__fragmenter_8cc_source.html b/docs/d9/d15/key__rotation__fragmenter_8cc_source.html index 0f65f0ed0a..f7f654f00d 100644 --- a/docs/d9/d15/key__rotation__fragmenter_8cc_source.html +++ b/docs/d9/d15/key__rotation__fragmenter_8cc_source.html @@ -244,7 +244,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d1f/structshaka_1_1media_1_1mp4_1_1MovieFragment.html b/docs/d9/d1f/structshaka_1_1media_1_1mp4_1_1MovieFragment.html index c112c13594..014f86990e 100644 --- a/docs/d9/d1f/structshaka_1_1media_1_1mp4_1_1MovieFragment.html +++ b/docs/d9/d1f/structshaka_1_1media_1_1mp4_1_1MovieFragment.html @@ -180,7 +180,7 @@ Additional Inherited Members diff --git a/docs/d9/d26/classshaka_1_1media_1_1AesEncryptor-members.html b/docs/d9/d26/classshaka_1_1media_1_1AesEncryptor-members.html index 8e7e113173..cde09a691d 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 8dbf7c0962..af8b60962f 100644 --- a/docs/d9/d26/classshaka_1_1media_1_1mp4_1_1Segmenter.html +++ b/docs/d9/d26/classshaka_1_1media_1_1mp4_1_1Segmenter.html @@ -112,12 +112,12 @@ Public Member Functions  Segmenter (const MuxerOptions &options, std::unique_ptr< FileType > ftyp, std::unique_ptr< Movie > moov)   -Status Initialize (const std::vector< MediaStream * > &streams, MuxerListener *muxer_listener, ProgressListener *progress_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme) -  +Status Initialize (const std::vector< std::shared_ptr< StreamInfo >> &streams, MuxerListener *muxer_listener, ProgressListener *progress_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme) +  Status Finalize ()   -Status AddSample (const MediaStream *stream, std::shared_ptr< MediaSample > sample) -  +Status AddSample (const StreamInfo &stream_Info, std::shared_ptr< MediaSample > sample) +  virtual bool GetInitRange (size_t *offset, size_t *size)=0   virtual bool GetIndexRange (size_t *offset, size_t *size)=0 @@ -170,15 +170,15 @@ void set_progress_targetDefinition at line 40 of file segmenter.h.

Member Function Documentation

- +
- - + + @@ -196,14 +196,13 @@ void 
Status shaka::media::mp4::Segmenter::AddSample (const MediaStreamstream, const StreamInfostream_Info,
set_progress_targetAdd sample to the indicated stream.

Parameters
-
streampoints to the stream to which the sample belongs. It cannot be NULL.
samplepoints to the sample to be added.
Returns
OK on success, an error status otherwise.
-

Definition at line 323 of file segmenter.cc.

+

Definition at line 318 of file segmenter.cc.

@@ -222,7 +221,7 @@ void 
set_progress_targetFinalize the segmenter.

Returns
OK on success, an error status otherwise.
-

Definition at line 299 of file segmenter.cc.

+

Definition at line 294 of file segmenter.cc.

@@ -240,7 +239,7 @@ void 
set_progress_target
Returns
The total length, in seconds, of segmented media files.
-

Definition at line 381 of file segmenter.cc.

+

Definition at line 374 of file segmenter.cc.

@@ -318,14 +317,14 @@ void 
set_progress_target - +
- + @@ -407,7 +406,7 @@ void 
Status shaka::media::mp4::Segmenter::Initialize (const std::vector< MediaStream * > & const std::vector< std::shared_ptr< StreamInfo >> &  streams,
set_progress_target
Returns
OK on success, an error status otherwise.
-

Definition at line 165 of file segmenter.cc.

+

Definition at line 164 of file segmenter.cc.

@@ -433,7 +432,7 @@ void 
set_progress_target
Returns
The sample duration in the timescale of the media. Returns 0 if no samples are added yet.
-

Definition at line 110 of file segmenter.h.

+

Definition at line 108 of file segmenter.h.

@@ -444,7 +443,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 5a33334f4b..9b528b0713 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 1dc727a325..0bf21bb716 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 cb7aa1c6ac..793d0f0235 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 c285716e6d..6670e754dc 100644 --- a/docs/d9/d3c/structshaka_1_1media_1_1mp4_1_1VTTEmptyCueBox.html +++ b/docs/d9/d3c/structshaka_1_1media_1_1mp4_1_1VTTEmptyCueBox.html @@ -166,7 +166,7 @@ Additional Inherited Members diff --git a/docs/d9/d3e/structshaka_1_1media_1_1mp4_1_1CueSourceIDBox.html b/docs/d9/d3e/structshaka_1_1media_1_1mp4_1_1CueSourceIDBox.html index 52d53cab58..186e6f271f 100644 --- a/docs/d9/d3e/structshaka_1_1media_1_1mp4_1_1CueSourceIDBox.html +++ b/docs/d9/d3e/structshaka_1_1media_1_1mp4_1_1CueSourceIDBox.html @@ -173,7 +173,7 @@ Additional Inherited Members diff --git a/docs/d9/d57/classshaka_1_1media_1_1mp4_1_1ChunkInfoIterator.html b/docs/d9/d57/classshaka_1_1media_1_1mp4_1_1ChunkInfoIterator.html index 8b0ada8bba..44111c4a93 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 483622ec67..7f8aa6ac25 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 e329427bcb..8af7266ade 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 9f6a3f600d..6f20218b30 100644 --- a/docs/d9/d6a/structshaka_1_1media_1_1H264SliceHeader-members.html +++ b/docs/d9/d6a/structshaka_1_1media_1_1H264SliceHeader-members.html @@ -154,7 +154,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d76/ts__muxer_8cc_source.html b/docs/d9/d76/ts__muxer_8cc_source.html index 1c83934881..0b3b9bfefa 100644 --- a/docs/d9/d76/ts__muxer_8cc_source.html +++ b/docs/d9/d76/ts__muxer_8cc_source.html @@ -106,57 +106,55 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
17 TsMuxer::TsMuxer(const MuxerOptions& muxer_options) : Muxer(muxer_options) {}
18 TsMuxer::~TsMuxer() {}
19 
-
20 Status TsMuxer::Initialize() {
+
20 Status TsMuxer::InitializeMuxer() {
21  if (streams().size() > 1u)
22  return Status(error::MUXER_FAILURE, "Cannot handle more than one streams.");
23 
24  segmenter_.reset(new TsSegmenter(options(), muxer_listener()));
-
25  Status status =
-
26  segmenter_->Initialize(*streams()[0]->info(), encryption_key_source(),
-
27  max_sd_pixels(), max_hd_pixels(),
-
28  max_uhd1_pixels(), clear_lead_in_seconds());
-
29  FireOnMediaStartEvent();
-
30  return status;
-
31 }
-
32 
-
33 Status TsMuxer::Finalize() {
-
34  FireOnMediaEndEvent();
-
35  return segmenter_->Finalize();
-
36 }
-
37 
-
38 Status TsMuxer::DoAddSample(const MediaStream* stream,
-
39  std::shared_ptr<MediaSample> sample) {
-
40  return segmenter_->AddSample(sample);
-
41 }
-
42 
-
43 void TsMuxer::FireOnMediaStartEvent() {
-
44  if (!muxer_listener())
-
45  return;
-
46  muxer_listener()->OnMediaStart(options(), *streams().front()->info(),
-
47  kTsTimescale, MuxerListener::kContainerWebM);
-
48 }
-
49 
-
50 void TsMuxer::FireOnMediaEndEvent() {
-
51  if (!muxer_listener())
-
52  return;
-
53 
-
54  // For now, there is no single file TS segmenter. So all the values passed
-
55  // here are false and 0. Called just to notify the MuxerListener.
-
56  const bool kHasInitRange = true;
-
57  const bool kHasIndexRange = true;
-
58  muxer_listener()->OnMediaEnd(!kHasInitRange, 0, 0, !kHasIndexRange, 0, 0, 0,
-
59  0);
-
60 }
-
61 
-
62 } // namespace mp2t
-
63 } // namespace media
-
64 } // namespace shaka
+
25  Status status = segmenter_->Initialize(
+
26  *streams()[0], encryption_key_source(), max_sd_pixels(), max_hd_pixels(),
+
27  max_uhd1_pixels(), clear_lead_in_seconds());
+
28  FireOnMediaStartEvent();
+
29  return status;
+
30 }
+
31 
+
32 Status TsMuxer::Finalize() {
+
33  FireOnMediaEndEvent();
+
34  return segmenter_->Finalize();
+
35 }
+
36 
+
37 Status TsMuxer::DoAddSample(std::shared_ptr<MediaSample> sample) {
+
38  return segmenter_->AddSample(sample);
+
39 }
+
40 
+
41 void TsMuxer::FireOnMediaStartEvent() {
+
42  if (!muxer_listener())
+
43  return;
+
44  muxer_listener()->OnMediaStart(options(), *streams().front(), kTsTimescale,
+
45  MuxerListener::kContainerWebM);
+
46 }
+
47 
+
48 void TsMuxer::FireOnMediaEndEvent() {
+
49  if (!muxer_listener())
+
50  return;
+
51 
+
52  // For now, there is no single file TS segmenter. So all the values passed
+
53  // here are false and 0. Called just to notify the MuxerListener.
+
54  const bool kHasInitRange = true;
+
55  const bool kHasIndexRange = true;
+
56  muxer_listener()->OnMediaEnd(!kHasInitRange, 0, 0, !kHasIndexRange, 0, 0, 0,
+
57  0);
+
58 }
+
59 
+
60 } // namespace mp2t
+
61 } // namespace media
+
62 } // namespace shaka
virtual void OnMediaEnd(bool has_init_range, uint64_t init_range_start, uint64_t init_range_end, bool has_index_range, uint64_t index_range_start, uint64_t index_range_end, float duration_seconds, uint64_t file_size)=0
virtual void OnMediaStart(const MuxerOptions &muxer_options, const StreamInfo &stream_info, uint32_t time_scale, ContainerType container_type)=0
diff --git a/docs/d9/d81/classshaka_1_1media_1_1ClosureThread-members.html b/docs/d9/d81/classshaka_1_1media_1_1ClosureThread-members.html index bb269bdcbb..6a34abc5fd 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 95a3840388..b39ae1d962 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 05d47b3b07..5b4f532efd 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 95d51bfce2..096fff90de 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 2d911f7049..26291051d3 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 34d63d1182..44342854f6 100644 --- a/docs/d9/d90/text__track_8h_source.html +++ b/docs/d9/d90/text__track_8h_source.html @@ -134,7 +134,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/d9/d93/media__stream_8h_source.html b/docs/d9/d93/media__stream_8h_source.html deleted file mode 100644 index 6667498c27..0000000000 --- a/docs/d9/d93/media__stream_8h_source.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - -DASH Media Packaging SDK: media/base/media_stream.h Source File - - - - - - - - - -
-
- - - - - - -
-
DASH Media Packaging SDK -
-
-
- - - - - - - - - -
- -
- - -
-
-
-
media_stream.h
-
-
-
1 // Copyright 2014 Google Inc. All rights reserved.
-
2 //
-
3 // Use of this source code is governed by a BSD-style
-
4 // license that can be found in the LICENSE file or at
-
5 // https://developers.google.com/open-source/licenses/bsd
-
6 
-
7 #ifndef MEDIA_BASE_MEDIA_STREAM_H_
-
8 #define MEDIA_BASE_MEDIA_STREAM_H_
-
9 
-
10 #include <deque>
-
11 #include <memory>
-
12 
-
13 #include "packager/media/base/status.h"
-
14 
-
15 namespace shaka {
-
16 namespace media {
-
17 
-
18 class Demuxer;
-
19 class Muxer;
-
20 class MediaSample;
-
21 class StreamInfo;
-
22 
-
25 class MediaStream {
-
26  public:
-
27  enum MediaStreamOperation {
-
28  kPush,
-
29  kPull,
-
30  };
-
33  MediaStream(std::shared_ptr<StreamInfo> info, Demuxer* demuxer);
-
34  ~MediaStream();
-
35 
-
38  void Connect(Muxer* muxer);
-
39 
-
41  Status Start(MediaStreamOperation operation);
-
42 
-
44  Status PushSample(const std::shared_ptr<MediaSample>& sample);
-
45 
-
47  Status PullSample(std::shared_ptr<MediaSample>* sample);
-
48 
-
49  Demuxer* demuxer() { return demuxer_; }
-
50  Muxer* muxer() { return muxer_; }
-
51  const std::shared_ptr<StreamInfo> info() const;
-
52 
-
54  std::string ToString() const;
-
55 
-
56  private:
-
57  MediaStream(const MediaStream&) = delete;
-
58  MediaStream& operator=(const MediaStream&) = delete;
-
59 
-
60  // State transition diagram available @ http://goo.gl/ThJQbl.
-
61  enum State {
-
62  kIdle,
-
63  kConnected,
-
64  kDisconnected,
-
65  kPushing,
-
66  kPulling,
-
67  };
-
68 
-
69  std::shared_ptr<StreamInfo> info_;
-
70  Demuxer* demuxer_;
-
71  Muxer* muxer_;
-
72  State state_;
-
73  // An internal buffer to store samples temporarily.
-
74  std::deque<std::shared_ptr<MediaSample>> samples_;
-
75 };
-
76 
-
77 } // namespace media
-
78 } // namespace shaka
-
79 
-
80 #endif // MEDIA_BASE_MEDIA_STREAM_H_
-
MediaStream(std::shared_ptr< StreamInfo > info, Demuxer *demuxer)
Definition: media_stream.cc:19
-
Status PushSample(const std::shared_ptr< MediaSample > &sample)
Push sample to Muxer (triggered by Demuxer).
Definition: media_stream.cc:39
-
Status Start(MediaStreamOperation operation)
Start the stream for pushing or pulling.
Definition: media_stream.cc:62
- -
void Connect(Muxer *muxer)
Definition: media_stream.cc:55
-
Status PullSample(std::shared_ptr< MediaSample > *sample)
Pull sample from Demuxer (triggered by Muxer).
Definition: media_stream.cc:24
- - -
std::string ToString() const
- -
- - - - diff --git a/docs/d9/da4/stream__descriptor_8h_source.html b/docs/d9/da4/stream__descriptor_8h_source.html index 2bdbe7886c..f5e24f6771 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 c1a524ca16..4a45471585 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 d3fb91c25f..62635d3f2c 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 ef51e483bb..1a6e11bc09 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 @@ -93,7 +93,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');

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

- + @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); - + @@ -116,7 +116,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
AddSample(const MediaStream *stream, std::shared_ptr< MediaSample > sample)shaka::media::mp4::Segmenter
AddSample(const StreamInfo &stream_Info, std::shared_ptr< MediaSample > sample)shaka::media::mp4::Segmenter
Finalize()shaka::media::mp4::Segmenter
fragment_buffer() (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected
ftyp() (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected
GetIndexRange(size_t *offset, size_t *size)=0shaka::media::mp4::Segmenterpure virtual
GetInitRange(size_t *offset, size_t *size)=0shaka::media::mp4::Segmenterpure virtual
GetReferenceTimeScale() const (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenter
Initialize(const std::vector< MediaStream * > &streams, MuxerListener *muxer_listener, ProgressListener *progress_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)shaka::media::mp4::Segmenter
Initialize(const std::vector< std::shared_ptr< StreamInfo >> &streams, MuxerListener *muxer_listener, ProgressListener *progress_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)shaka::media::mp4::Segmenter
moov() (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected
muxer_listener() (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected
options() const (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected
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 ade7c1f001..91f37dd6d3 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 693de11ef9..3171bb5cac 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 21c000ff98..9c30e47d3b 100644 --- a/docs/d9/db9/muxer_8cc_source.html +++ b/docs/d9/db9/muxer_8cc_source.html @@ -99,134 +99,84 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
10 
11 #include "packager/media/base/fourccs.h"
12 #include "packager/media/base/media_sample.h"
-
13 #include "packager/media/base/media_stream.h"
-
14 
-
15 namespace shaka {
-
16 namespace media {
-
17 
-
18 Muxer::Muxer(const MuxerOptions& options)
-
19  : options_(options),
-
20  initialized_(false),
-
21  encryption_key_source_(NULL),
-
22  max_sd_pixels_(0),
-
23  max_hd_pixels_(0),
-
24  max_uhd1_pixels_(0),
-
25  clear_lead_in_seconds_(0),
-
26  crypto_period_duration_in_seconds_(0),
-
27  protection_scheme_(FOURCC_NULL),
-
28  cancelled_(false),
-
29  clock_(NULL) {}
+
13 
+
14 namespace shaka {
+
15 namespace media {
+
16 
+
17 Muxer::Muxer(const MuxerOptions& options)
+
18  : options_(options),
+
19  encryption_key_source_(NULL),
+
20  max_sd_pixels_(0),
+
21  max_hd_pixels_(0),
+
22  max_uhd1_pixels_(0),
+
23  clear_lead_in_seconds_(0),
+
24  crypto_period_duration_in_seconds_(0),
+
25  protection_scheme_(FOURCC_NULL),
+
26  cancelled_(false),
+
27  clock_(NULL) {}
+
28 
+
29 Muxer::~Muxer() {}
30 
-
31 Muxer::~Muxer() {}
-
32 
-
33 void Muxer::SetKeySource(KeySource* encryption_key_source,
-
34  uint32_t max_sd_pixels,
-
35  uint32_t max_hd_pixels,
-
36  uint32_t max_uhd1_pixels,
-
37  double clear_lead_in_seconds,
-
38  double crypto_period_duration_in_seconds,
-
39  FourCC protection_scheme) {
-
40  DCHECK(encryption_key_source);
-
41  encryption_key_source_ = encryption_key_source;
-
42  max_sd_pixels_ = max_sd_pixels;
-
43  max_hd_pixels_ = max_hd_pixels;
-
44  max_uhd1_pixels_ = max_uhd1_pixels;
-
45  clear_lead_in_seconds_ = clear_lead_in_seconds;
-
46  crypto_period_duration_in_seconds_ = crypto_period_duration_in_seconds;
-
47  protection_scheme_ = protection_scheme;
-
48 }
-
49 
- -
51  DCHECK(stream);
-
52  stream->Connect(this);
-
53  streams_.push_back(stream);
+
31 void Muxer::SetKeySource(KeySource* encryption_key_source,
+
32  uint32_t max_sd_pixels,
+
33  uint32_t max_hd_pixels,
+
34  uint32_t max_uhd1_pixels,
+
35  double clear_lead_in_seconds,
+
36  double crypto_period_duration_in_seconds,
+
37  FourCC protection_scheme) {
+
38  DCHECK(encryption_key_source);
+
39  encryption_key_source_ = encryption_key_source;
+
40  max_sd_pixels_ = max_sd_pixels;
+
41  max_hd_pixels_ = max_hd_pixels;
+
42  max_uhd1_pixels_ = max_uhd1_pixels;
+
43  clear_lead_in_seconds_ = clear_lead_in_seconds;
+
44  crypto_period_duration_in_seconds_ = crypto_period_duration_in_seconds;
+
45  protection_scheme_ = protection_scheme;
+
46 }
+
47 
+
48 void Muxer::Cancel() {
+
49  cancelled_ = true;
+
50 }
+
51 
+
52 void Muxer::SetMuxerListener(std::unique_ptr<MuxerListener> muxer_listener) {
+
53  muxer_listener_ = std::move(muxer_listener);
54 }
55 
- -
57  DCHECK(!streams_.empty());
-
58 
-
59  Status status;
-
60  // Start the streams.
-
61  for (std::vector<MediaStream*>::iterator it = streams_.begin();
-
62  it != streams_.end();
-
63  ++it) {
-
64  status = (*it)->Start(MediaStream::kPull);
-
65  if (!status.ok())
-
66  return status;
-
67  }
-
68 
-
69  uint32_t current_stream_id = 0;
-
70  while (status.ok()) {
-
71  if (cancelled_)
-
72  return Status(error::CANCELLED, "muxer run cancelled");
-
73 
-
74  std::shared_ptr<MediaSample> sample;
-
75  status = streams_[current_stream_id]->PullSample(&sample);
-
76  if (!status.ok())
-
77  break;
-
78  status = AddSample(streams_[current_stream_id], sample);
-
79 
-
80  // Switch to next stream if the current stream is ready for fragmentation.
-
81  if (status.error_code() == error::FRAGMENT_FINALIZED) {
-
82  current_stream_id = (current_stream_id + 1) % streams_.size();
-
83  status.Clear();
-
84  }
-
85  }
-
86  // Finalize the muxer after reaching end of stream.
-
87  return status.error_code() == error::END_OF_STREAM ? Finalize() : status;
-
88 }
-
89 
-
90 void Muxer::Cancel() {
-
91  cancelled_ = true;
-
92 }
-
93 
-
94 void Muxer::SetMuxerListener(std::unique_ptr<MuxerListener> muxer_listener) {
-
95  muxer_listener_ = std::move(muxer_listener);
-
96 }
-
97 
- -
99  std::unique_ptr<ProgressListener> progress_listener) {
-
100  progress_listener_ = std::move(progress_listener);
-
101 }
-
102 
-
103 Status Muxer::AddSample(const MediaStream* stream,
-
104  std::shared_ptr<MediaSample> sample) {
-
105  DCHECK(std::find(streams_.begin(), streams_.end(), stream) != streams_.end());
-
106 
-
107  if (!initialized_) {
-
108  Status status = Initialize();
-
109  if (!status.ok())
-
110  return status;
-
111  initialized_ = true;
-
112  }
-
113  if (sample->end_of_stream()) {
-
114  // EOS sample should be sent only when the sample was pushed from Demuxer
-
115  // to Muxer. In this case, there should be only one stream in Muxer.
-
116  DCHECK_EQ(1u, streams_.size());
-
117  return Finalize();
-
118  } else if (sample->is_encrypted()) {
-
119  LOG(ERROR) << "Unable to multiplex encrypted media sample";
-
120  return Status(error::INTERNAL_ERROR, "Encrypted media sample.");
-
121  }
-
122  return DoAddSample(stream, sample);
-
123 }
-
124 
-
125 } // namespace media
-
126 } // namespace shaka
- -
void AddStream(MediaStream *stream)
Add video/audio stream.
Definition: muxer.cc:50
-
Status Run()
Drive the remuxing from muxer side (pull).
Definition: muxer.cc:56
-
void Connect(Muxer *muxer)
Definition: media_stream.cc:55
-
void SetProgressListener(std::unique_ptr< ProgressListener > progress_listener)
Definition: muxer.cc:98
+ +
57  std::unique_ptr<ProgressListener> progress_listener) {
+
58  progress_listener_ = std::move(progress_listener);
+
59 }
+
60 
+
61 Status Muxer::Process(std::unique_ptr<StreamData> stream_data) {
+
62  Status status;
+
63  switch (stream_data->stream_data_type) {
+
64  case StreamDataType::kStreamInfo:
+
65  streams_.push_back(std::move(stream_data->stream_info));
+
66  return InitializeMuxer();
+
67  case StreamDataType::kMediaSample:
+
68  return DoAddSample(stream_data->media_sample);
+
69  default:
+
70  VLOG(3) << "Stream data type "
+
71  << static_cast<int>(stream_data->stream_data_type) << " ignored.";
+
72  break;
+
73  }
+
74  // No dispatch for muxer.
+
75  return Status::OK;
+
76 }
+
77 
+
78 } // namespace media
+
79 } // namespace shaka
+ +
void SetProgressListener(std::unique_ptr< ProgressListener > progress_listener)
Definition: muxer.cc:56
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:30
-
void SetKeySource(KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)
Definition: muxer.cc:33
- -
void SetMuxerListener(std::unique_ptr< MuxerListener > muxer_listener)
Definition: muxer.cc:94
+
void SetKeySource(KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)
Definition: muxer.cc:31
+
Status Process(std::unique_ptr< StreamData > stream_data) override
Definition: muxer.cc:61
+
void SetMuxerListener(std::unique_ptr< MuxerListener > muxer_listener)
Definition: muxer.cc:52
diff --git a/docs/d9/dbd/classshaka_1_1media_1_1MemoryFile.html b/docs/d9/dbd/classshaka_1_1media_1_1MemoryFile.html index 3ea8fc77f4..abd946e505 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 885bb43fb2..b4f8534022 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 956ddc68d3..19eb237cb5 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 8976cdfbc1..d140ff8cbd 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 5cf8acf5de..5bd9ef3079 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 5efab97071..dcfb8fc28d 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 fa1211cbd2..4f1eea5d31 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 73797ee84d..24560a36af 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 c5c4fdb1c0..8d80dbb1a0 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 a22d2e2307..823c8e49bb 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 313c9b50e7..9b688f7b1a 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 9b4464af62..76fdd4e7a2 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 3e1d73cede..0e768b8cda 100644 --- a/docs/da/d04/audio__stream__info_8cc_source.html +++ b/docs/da/d04/audio__stream__info_8cc_source.html @@ -223,7 +223,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d10/classshaka_1_1media_1_1mp2t_1_1EsParser.html b/docs/da/d10/classshaka_1_1media_1_1mp2t_1_1EsParser.html index e0cd55395e..5b4e885fdb 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 6b9eeccbe3..31351bd6a2 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 af9de8625e..8f7ae9ee47 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 1c782684ad..b737753eb8 100644 --- a/docs/da/d1d/udp__options_8cc_source.html +++ b/docs/da/d1d/udp__options_8cc_source.html @@ -224,7 +224,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d22/key__rotation__fragmenter_8h_source.html b/docs/da/d22/key__rotation__fragmenter_8h_source.html index e5a9ea5bb3..911ff5e1bb 100644 --- a/docs/da/d22/key__rotation__fragmenter_8h_source.html +++ b/docs/da/d22/key__rotation__fragmenter_8h_source.html @@ -156,7 +156,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d23/classshaka_1_1media_1_1mp2t_1_1EsParserH26x.html b/docs/da/d23/classshaka_1_1media_1_1mp2t_1_1EsParserH26x.html index 6a6a90e0a2..33b73374dc 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 4a366f21aa..b55bf0720f 100644 --- a/docs/da/d23/ts__muxer_8h_source.html +++ b/docs/da/d23/ts__muxer_8h_source.html @@ -111,33 +111,31 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
24 
25  private:
26  // Muxer implementation.
-
27  Status Initialize() override;
+
27  Status InitializeMuxer() override;
28  Status Finalize() override;
-
29  Status DoAddSample(const MediaStream* stream,
-
30  std::shared_ptr<MediaSample> sample) override;
-
31 
-
32  void FireOnMediaStartEvent();
-
33  void FireOnMediaEndEvent();
-
34 
-
35  std::unique_ptr<TsSegmenter> segmenter_;
-
36 
-
37  DISALLOW_COPY_AND_ASSIGN(TsMuxer);
-
38 };
-
39 
-
40 } // namespace mp2t
-
41 } // namespace media
-
42 } // namespace shaka
-
43 
-
44 #endif // PACKAGER_MEDIA_FORMATS_MP2T_TS_MUXER_H_
+
29  Status DoAddSample(std::shared_ptr<MediaSample> sample) override;
+
30 
+
31  void FireOnMediaStartEvent();
+
32  void FireOnMediaEndEvent();
+
33 
+
34  std::unique_ptr<TsSegmenter> segmenter_;
+
35 
+
36  DISALLOW_COPY_AND_ASSIGN(TsMuxer);
+
37 };
+
38 
+
39 } // namespace mp2t
+
40 } // namespace media
+
41 } // namespace shaka
+
42 
+
43 #endif // PACKAGER_MEDIA_FORMATS_MP2T_TS_MUXER_H_
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
- + - diff --git a/docs/da/d24/h265__parser_8h_source.html b/docs/da/d24/h265__parser_8h_source.html index a8e91e6483..07e4254097 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 44e2f6467f..f5e82efee4 100644 --- a/docs/da/d2a/text__stream__info_8h_source.html +++ b/docs/da/d2a/text__stream__info_8h_source.html @@ -135,7 +135,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d2d/classshaka_1_1media_1_1webm_1_1WebMMuxer-members.html b/docs/da/d2d/classshaka_1_1media_1_1webm_1_1WebMMuxer-members.html index 6d8a3a6c9e..ac1d220965 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 @@ -93,33 +93,52 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');

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

- + - - - - + + + + + + + + + + + + + + + + - - - - + + + + + + + + - - - - + + + + + + - - + + +
AddStream(MediaStream *stream)shaka::media::Muxer
AddHandler(std::shared_ptr< MediaHandler > handler)shaka::media::MediaHandlerinline
Cancel()shaka::media::Muxer
clear_lead_in_seconds() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
clock() (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
crypto_period_duration_in_seconds() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
encryption_key_source() (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
max_hd_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
max_sd_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
max_uhd1_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
Dispatch(std::unique_ptr< StreamData > stream_data)shaka::media::MediaHandlerprotected
DispatchEncryptionConfig(int stream_index, std::unique_ptr< EncryptionConfig > encryption_config)shaka::media::MediaHandlerinlineprotected
DispatchMediaEvent(int stream_index, std::shared_ptr< MediaEvent > media_event)shaka::media::MediaHandlerinlineprotected
DispatchMediaSample(int stream_index, std::shared_ptr< MediaSample > media_sample)shaka::media::MediaHandlerinlineprotected
DispatchPeriodInfo(int stream_index, std::shared_ptr< PeriodInfo > period_info)shaka::media::MediaHandlerinlineprotected
DispatchSegmentInfo(int stream_index, std::shared_ptr< SegmentInfo > segment_info)shaka::media::MediaHandlerinlineprotected
DispatchStreamInfo(int stream_index, std::shared_ptr< StreamInfo > stream_info)shaka::media::MediaHandlerinlineprotected
encryption_key_source() (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
FlushStream(int input_stream_index) overrideshaka::media::Muxerinlineprotectedvirtual
Initialize()shaka::media::MediaHandler
initialized() (defined in shaka::media::MediaHandler)shaka::media::MediaHandlerinlineprotected
InitializeInternal() overrideshaka::media::Muxerinlineprotectedvirtual
max_hd_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
max_sd_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
max_uhd1_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
MediaHandler()=default (defined in shaka::media::MediaHandler)shaka::media::MediaHandler
Muxer(const MuxerOptions &options) (defined in shaka::media::Muxer)shaka::media::Muxerexplicit
muxer_listener() (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
options() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
progress_listener() (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
protection_scheme() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
Run()shaka::media::Muxer
next_output_stream_index() const (defined in shaka::media::MediaHandler)shaka::media::MediaHandlerinlineprotected
num_input_streams() (defined in shaka::media::MediaHandler)shaka::media::MediaHandlerinlineprotected
num_input_streams() const (defined in shaka::media::MediaHandler)shaka::media::MediaHandlerinlineprotected
options() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
output_handlers() (defined in shaka::media::MediaHandler)shaka::media::MediaHandlerinlineprotected
Process(std::unique_ptr< StreamData > stream_data) overrideshaka::media::Muxerprotectedvirtual
progress_listener() (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
protection_scheme() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
set_clock(base::Clock *clock)shaka::media::Muxerinline
SetKeySource(KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)shaka::media::Muxer
SetMuxerListener(std::unique_ptr< MuxerListener > muxer_listener)shaka::media::Muxer
SetProgressListener(std::unique_ptr< ProgressListener > progress_listener)shaka::media::Muxer
streams() const (defined in shaka::media::Muxer)shaka::media::Muxerinline
SetHandler(int output_stream_index, std::shared_ptr< MediaHandler > handler)shaka::media::MediaHandler
SetKeySource(KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)shaka::media::Muxer
SetMuxerListener(std::unique_ptr< MuxerListener > muxer_listener)shaka::media::Muxer
SetProgressListener(std::unique_ptr< ProgressListener > progress_listener)shaka::media::Muxer
streams() const (defined in shaka::media::Muxer)shaka::media::Muxerinline
ValidateOutputStreamIndex(int stream_index) const shaka::media::MediaHandlerprotectedvirtual
WebMMuxer(const MuxerOptions &options)shaka::media::webm::WebMMuxerexplicit
~Muxer() (defined in shaka::media::Muxer)shaka::media::Muxervirtual
~WebMMuxer() override (defined in shaka::media::webm::WebMMuxer)shaka::media::webm::WebMMuxer
~MediaHandler()=default (defined in shaka::media::MediaHandler)shaka::media::MediaHandlervirtual
~Muxer() (defined in shaka::media::Muxer)shaka::media::Muxervirtual
~WebMMuxer() override (defined in shaka::media::webm::WebMMuxer)shaka::media::webm::WebMMuxer
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 c9ec522509..32f2a01d7c 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 8b254b6ba1..2fb90596ab 100644 --- a/docs/da/d41/mp4_2multi__segment__segmenter_8h_source.html +++ b/docs/da/d41/mp4_2multi__segment__segmenter_8h_source.html @@ -135,15 +135,15 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
62 
63 #endif // MEDIA_FORMATS_MP4_MULTI_SEGMENT_SEGMENTER_H_
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
-
bool GetInitRange(size_t *offset, size_t *size) override
-
bool GetIndexRange(size_t *offset, size_t *size) override
+
bool GetInitRange(size_t *offset, size_t *size) override
+
bool GetIndexRange(size_t *offset, size_t *size) override
diff --git a/docs/da/d43/structshaka_1_1ContentProtectionElement.html b/docs/da/d43/structshaka_1_1ContentProtectionElement.html index 01dba94266..138678fbad 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 6e0f184fb0..6e5ab10c1d 100644 --- a/docs/da/d4e/classshaka_1_1media_1_1AudioStreamInfo.html +++ b/docs/da/d4e/classshaka_1_1media_1_1AudioStreamInfo.html @@ -316,7 +316,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 b00bcbf38d..d1ad1a673c 100644 --- a/docs/da/d50/structshaka_1_1media_1_1mp4_1_1MovieExtendsHeader.html +++ b/docs/da/d50/structshaka_1_1media_1_1mp4_1_1MovieExtendsHeader.html @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/da/d53/es__parser__h265_8cc_source.html b/docs/da/d53/es__parser__h265_8cc_source.html index cde62c0dae..be81607302 100644 --- a/docs/da/d53/es__parser__h265_8cc_source.html +++ b/docs/da/d53/es__parser__h265_8cc_source.html @@ -260,7 +260,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d59/structshaka_1_1media_1_1mp4_1_1CompactSampleSize.html b/docs/da/d59/structshaka_1_1media_1_1mp4_1_1CompactSampleSize.html index d824bcf980..12283bc6da 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 baf0bcc145..165390c113 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 c2cbb93840..ad2c3e0cff 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 5c2b78e508..4eb4908933 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 @@ -93,7 +93,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');

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

- + @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); - + @@ -118,7 +118,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
AddSample(const MediaStream *stream, std::shared_ptr< MediaSample > sample)shaka::media::mp4::Segmenter
AddSample(const StreamInfo &stream_Info, std::shared_ptr< MediaSample > sample)shaka::media::mp4::Segmenter
Finalize()shaka::media::mp4::Segmenter
fragment_buffer() (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected
ftyp() (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected
GetIndexRange(size_t *offset, size_t *size) overrideshaka::media::mp4::SingleSegmentSegmentervirtual
GetInitRange(size_t *offset, size_t *size) overrideshaka::media::mp4::SingleSegmentSegmentervirtual
GetReferenceTimeScale() const (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenter
Initialize(const std::vector< MediaStream * > &streams, MuxerListener *muxer_listener, ProgressListener *progress_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)shaka::media::mp4::Segmenter
Initialize(const std::vector< std::shared_ptr< StreamInfo >> &streams, MuxerListener *muxer_listener, ProgressListener *progress_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)shaka::media::mp4::Segmenter
moov() (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected
muxer_listener() (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected
options() const (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected
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 9e8f601076..0703fd7d2a 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 994c16e602..9b764c07d5 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 d3c4167d72..203ec547cb 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 dc48d643a1..f5b7820d4c 100644 --- a/docs/da/d85/classshaka_1_1media_1_1mp2t_1_1TsSegmenter-members.html +++ b/docs/da/d85/classshaka_1_1media_1_1mp2t_1_1TsSegmenter-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/d88/mp4__muxer_8cc_source.html b/docs/da/d88/mp4__muxer_8cc_source.html index 3474fd8bfb..b2e7026e7a 100644 --- a/docs/da/d88/mp4__muxer_8cc_source.html +++ b/docs/da/d88/mp4__muxer_8cc_source.html @@ -102,409 +102,400 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
13 #include "packager/media/base/fourccs.h"
14 #include "packager/media/base/key_source.h"
15 #include "packager/media/base/media_sample.h"
-
16 #include "packager/media/base/media_stream.h"
-
17 #include "packager/media/base/video_stream_info.h"
-
18 #include "packager/media/codecs/es_descriptor.h"
-
19 #include "packager/media/event/muxer_listener.h"
-
20 #include "packager/media/file/file.h"
-
21 #include "packager/media/formats/mp4/box_definitions.h"
-
22 #include "packager/media/formats/mp4/multi_segment_segmenter.h"
-
23 #include "packager/media/formats/mp4/single_segment_segmenter.h"
-
24 
-
25 namespace shaka {
-
26 namespace media {
-
27 namespace mp4 {
-
28 
-
29 namespace {
-
30 
-
31 // Sets the range start and end value from offset and size.
-
32 // |start| and |end| are for byte-range-spec specified in RFC2616.
-
33 void SetStartAndEndFromOffsetAndSize(size_t offset,
-
34  size_t size,
-
35  uint32_t* start,
-
36  uint32_t* end) {
-
37  DCHECK(start && end);
-
38  *start = static_cast<uint32_t>(offset);
-
39  // Note that ranges are inclusive. So we need - 1.
-
40  *end = *start + static_cast<uint32_t>(size) - 1;
-
41 }
-
42 
-
43 FourCC CodecToFourCC(Codec codec) {
-
44  switch (codec) {
-
45  case kCodecH264:
-
46  return FOURCC_avc1;
-
47  case kCodecHEV1:
-
48  return FOURCC_hev1;
-
49  case kCodecHVC1:
-
50  return FOURCC_hvc1;
-
51  case kCodecVP8:
-
52  return FOURCC_vp08;
-
53  case kCodecVP9:
-
54  return FOURCC_vp09;
-
55  case kCodecVP10:
-
56  return FOURCC_vp10;
-
57  case kCodecAAC:
-
58  return FOURCC_mp4a;
-
59  case kCodecAC3:
-
60  return FOURCC_ac_3;
-
61  case kCodecDTSC:
-
62  return FOURCC_dtsc;
-
63  case kCodecDTSH:
-
64  return FOURCC_dtsh;
-
65  case kCodecDTSL:
-
66  return FOURCC_dtsl;
-
67  case kCodecDTSE:
-
68  return FOURCC_dtse;
-
69  case kCodecDTSM:
-
70  return FOURCC_dtsm;
-
71  case kCodecEAC3:
-
72  return FOURCC_ec_3;
-
73  case kCodecOpus:
-
74  return FOURCC_Opus;
-
75  default:
-
76  return FOURCC_NULL;
-
77  }
-
78 }
-
79 
-
80 } // namespace
-
81 
-
82 MP4Muxer::MP4Muxer(const MuxerOptions& options) : Muxer(options) {}
-
83 MP4Muxer::~MP4Muxer() {}
-
84 
-
85 Status MP4Muxer::Initialize() {
-
86  DCHECK(!streams().empty());
-
87 
-
88  std::unique_ptr<FileType> ftyp(new FileType);
-
89  std::unique_ptr<Movie> moov(new Movie);
-
90 
-
91  ftyp->major_brand = FOURCC_dash;
-
92  ftyp->compatible_brands.push_back(FOURCC_iso6);
-
93  ftyp->compatible_brands.push_back(FOURCC_mp41);
-
94  if (streams().size() == 1 &&
-
95  streams()[0]->info()->stream_type() == kStreamVideo) {
-
96  const FourCC codec_fourcc = CodecToFourCC(
-
97  static_cast<VideoStreamInfo*>(streams()[0]->info().get())->codec());
-
98  if (codec_fourcc != FOURCC_NULL)
-
99  ftyp->compatible_brands.push_back(codec_fourcc);
-
100  }
-
101 
-
102  moov->header.creation_time = IsoTimeNow();
-
103  moov->header.modification_time = IsoTimeNow();
-
104  moov->header.next_track_id = static_cast<uint32_t>(streams().size()) + 1;
-
105 
-
106  moov->tracks.resize(streams().size());
-
107  moov->extends.tracks.resize(streams().size());
-
108 
-
109  // Initialize tracks.
-
110  for (uint32_t i = 0; i < streams().size(); ++i) {
-
111  Track& trak = moov->tracks[i];
-
112  trak.header.track_id = i + 1;
-
113 
-
114  TrackExtends& trex = moov->extends.tracks[i];
-
115  trex.track_id = trak.header.track_id;
-
116  trex.default_sample_description_index = 1;
-
117 
-
118  switch (streams()[i]->info()->stream_type()) {
-
119  case kStreamVideo:
-
120  GenerateVideoTrak(
-
121  static_cast<VideoStreamInfo*>(streams()[i]->info().get()),
-
122  &trak,
-
123  i + 1);
+
16 #include "packager/media/base/video_stream_info.h"
+
17 #include "packager/media/codecs/es_descriptor.h"
+
18 #include "packager/media/event/muxer_listener.h"
+
19 #include "packager/media/file/file.h"
+
20 #include "packager/media/formats/mp4/box_definitions.h"
+
21 #include "packager/media/formats/mp4/multi_segment_segmenter.h"
+
22 #include "packager/media/formats/mp4/single_segment_segmenter.h"
+
23 
+
24 namespace shaka {
+
25 namespace media {
+
26 namespace mp4 {
+
27 
+
28 namespace {
+
29 
+
30 // Sets the range start and end value from offset and size.
+
31 // |start| and |end| are for byte-range-spec specified in RFC2616.
+
32 void SetStartAndEndFromOffsetAndSize(size_t offset,
+
33  size_t size,
+
34  uint32_t* start,
+
35  uint32_t* end) {
+
36  DCHECK(start && end);
+
37  *start = static_cast<uint32_t>(offset);
+
38  // Note that ranges are inclusive. So we need - 1.
+
39  *end = *start + static_cast<uint32_t>(size) - 1;
+
40 }
+
41 
+
42 FourCC CodecToFourCC(Codec codec) {
+
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 } // namespace
+
80 
+
81 MP4Muxer::MP4Muxer(const MuxerOptions& options) : Muxer(options) {}
+
82 MP4Muxer::~MP4Muxer() {}
+
83 
+
84 Status MP4Muxer::InitializeMuxer() {
+
85  DCHECK(!streams().empty());
+
86 
+
87  std::unique_ptr<FileType> ftyp(new FileType);
+
88  std::unique_ptr<Movie> moov(new Movie);
+
89 
+
90  ftyp->major_brand = FOURCC_dash;
+
91  ftyp->compatible_brands.push_back(FOURCC_iso6);
+
92  ftyp->compatible_brands.push_back(FOURCC_mp41);
+
93  if (streams().size() == 1 && streams()[0]->stream_type() == kStreamVideo) {
+
94  const FourCC codec_fourcc = CodecToFourCC(
+
95  static_cast<VideoStreamInfo*>(streams()[0].get())->codec());
+
96  if (codec_fourcc != FOURCC_NULL)
+
97  ftyp->compatible_brands.push_back(codec_fourcc);
+
98  }
+
99 
+
100  moov->header.creation_time = IsoTimeNow();
+
101  moov->header.modification_time = IsoTimeNow();
+
102  moov->header.next_track_id = static_cast<uint32_t>(streams().size()) + 1;
+
103 
+
104  moov->tracks.resize(streams().size());
+
105  moov->extends.tracks.resize(streams().size());
+
106 
+
107  // Initialize tracks.
+
108  for (uint32_t i = 0; i < streams().size(); ++i) {
+
109  Track& trak = moov->tracks[i];
+
110  trak.header.track_id = i + 1;
+
111 
+
112  TrackExtends& trex = moov->extends.tracks[i];
+
113  trex.track_id = trak.header.track_id;
+
114  trex.default_sample_description_index = 1;
+
115 
+
116  switch (streams()[i]->stream_type()) {
+
117  case kStreamVideo:
+
118  GenerateVideoTrak(static_cast<VideoStreamInfo*>(streams()[i].get()),
+
119  &trak, i + 1);
+
120  break;
+
121  case kStreamAudio:
+
122  GenerateAudioTrak(static_cast<AudioStreamInfo*>(streams()[i].get()),
+
123  &trak, i + 1);
124  break;
-
125  case kStreamAudio:
-
126  GenerateAudioTrak(
-
127  static_cast<AudioStreamInfo*>(streams()[i]->info().get()),
-
128  &trak,
-
129  i + 1);
-
130  break;
-
131  default:
-
132  NOTIMPLEMENTED() << "Not implemented for stream type: "
-
133  << streams()[i]->info()->stream_type();
-
134  }
-
135  }
-
136 
-
137  if (options().segment_template.empty()) {
-
138  segmenter_.reset(new SingleSegmentSegmenter(options(), std::move(ftyp),
-
139  std::move(moov)));
-
140  } else {
-
141  segmenter_.reset(
-
142  new MultiSegmentSegmenter(options(), std::move(ftyp), std::move(moov)));
-
143  }
+
125  default:
+
126  NOTIMPLEMENTED() << "Not implemented for stream type: "
+
127  << streams()[i]->stream_type();
+
128  }
+
129  }
+
130 
+
131  if (options().segment_template.empty()) {
+
132  segmenter_.reset(new SingleSegmentSegmenter(options(), std::move(ftyp),
+
133  std::move(moov)));
+
134  } else {
+
135  segmenter_.reset(
+
136  new MultiSegmentSegmenter(options(), std::move(ftyp), std::move(moov)));
+
137  }
+
138 
+
139  const Status segmenter_initialized = segmenter_->Initialize(
+
140  streams(), muxer_listener(), progress_listener(), encryption_key_source(),
+
141  max_sd_pixels(), max_hd_pixels(), max_uhd1_pixels(),
+
142  clear_lead_in_seconds(), crypto_period_duration_in_seconds(),
+
143  protection_scheme());
144 
-
145  const Status segmenter_initialized = segmenter_->Initialize(
-
146  streams(), muxer_listener(), progress_listener(), encryption_key_source(),
-
147  max_sd_pixels(), max_hd_pixels(), max_uhd1_pixels(),
-
148  clear_lead_in_seconds(), crypto_period_duration_in_seconds(),
-
149  protection_scheme());
-
150 
-
151  if (!segmenter_initialized.ok())
-
152  return segmenter_initialized;
-
153 
-
154  FireOnMediaStartEvent();
-
155  return Status::OK;
-
156 }
-
157 
-
158 Status MP4Muxer::Finalize() {
-
159  DCHECK(segmenter_);
-
160  Status segmenter_finalized = segmenter_->Finalize();
-
161 
-
162  if (!segmenter_finalized.ok())
-
163  return segmenter_finalized;
-
164 
-
165  FireOnMediaEndEvent();
-
166  LOG(INFO) << "MP4 file '" << options().output_file_name << "' finalized.";
-
167  return Status::OK;
-
168 }
-
169 
-
170 Status MP4Muxer::DoAddSample(const MediaStream* stream,
-
171  std::shared_ptr<MediaSample> sample) {
-
172  DCHECK(segmenter_);
-
173  return segmenter_->AddSample(stream, sample);
-
174 }
-
175 
-
176 void MP4Muxer::InitializeTrak(const StreamInfo* info, Track* trak) {
-
177  int64_t now = IsoTimeNow();
-
178  trak->header.creation_time = now;
-
179  trak->header.modification_time = now;
-
180  trak->header.duration = 0;
-
181  trak->media.header.creation_time = now;
-
182  trak->media.header.modification_time = now;
-
183  trak->media.header.timescale = info->time_scale();
-
184  trak->media.header.duration = 0;
-
185  if (!info->language().empty()) {
-
186  // Strip off the subtag, if any.
-
187  std::string main_language = info->language();
-
188  size_t dash = main_language.find('-');
-
189  if (dash != std::string::npos) {
-
190  main_language.erase(dash);
-
191  }
-
192 
-
193  // ISO-639-2/T main language code should be 3 characters.
-
194  if (main_language.size() != 3) {
-
195  LOG(WARNING) << "'" << main_language << "' is not a valid ISO-639-2 "
-
196  << "language code, ignoring.";
-
197  } else {
-
198  trak->media.header.language.code = main_language;
-
199  }
-
200  }
-
201 }
-
202 
-
203 void MP4Muxer::GenerateVideoTrak(const VideoStreamInfo* video_info,
-
204  Track* trak,
-
205  uint32_t track_id) {
-
206  InitializeTrak(video_info, trak);
-
207 
-
208  // width and height specify the track's visual presentation size as
-
209  // fixed-point 16.16 values.
-
210  uint32_t pixel_width = video_info->pixel_width();
-
211  uint32_t pixel_height = video_info->pixel_height();
-
212  if (pixel_width == 0 || pixel_height == 0) {
-
213  LOG(WARNING) << "pixel width/height are not set. Assuming 1:1.";
-
214  pixel_width = 1;
-
215  pixel_height = 1;
-
216  }
-
217  const double sample_aspect_ratio =
-
218  static_cast<double>(pixel_width) / pixel_height;
-
219  trak->header.width = video_info->width() * sample_aspect_ratio * 0x10000;
-
220  trak->header.height = video_info->height() * 0x10000;
-
221 
-
222  VideoSampleEntry video;
-
223  video.format = CodecToFourCC(video_info->codec());
-
224  video.width = video_info->width();
-
225  video.height = video_info->height();
-
226  video.codec_configuration.data = video_info->codec_config();
-
227  if (pixel_width != 1 || pixel_height != 1) {
-
228  video.pixel_aspect.h_spacing = pixel_width;
-
229  video.pixel_aspect.v_spacing = pixel_height;
-
230  }
-
231 
-
232  SampleDescription& sample_description =
-
233  trak->media.information.sample_table.description;
-
234  sample_description.type = kVideo;
-
235  sample_description.video_entries.push_back(video);
-
236 }
+
145  if (!segmenter_initialized.ok())
+
146  return segmenter_initialized;
+
147 
+
148  FireOnMediaStartEvent();
+
149  return Status::OK;
+
150 }
+
151 
+
152 Status MP4Muxer::Finalize() {
+
153  DCHECK(segmenter_);
+
154  Status segmenter_finalized = segmenter_->Finalize();
+
155 
+
156  if (!segmenter_finalized.ok())
+
157  return segmenter_finalized;
+
158 
+
159  FireOnMediaEndEvent();
+
160  LOG(INFO) << "MP4 file '" << options().output_file_name << "' finalized.";
+
161  return Status::OK;
+
162 }
+
163 
+
164 Status MP4Muxer::DoAddSample(std::shared_ptr<MediaSample> sample) {
+
165  DCHECK(segmenter_);
+
166  return segmenter_->AddSample(*streams()[0], sample);
+
167 }
+
168 
+
169 void MP4Muxer::InitializeTrak(const StreamInfo* info, Track* trak) {
+
170  int64_t now = IsoTimeNow();
+
171  trak->header.creation_time = now;
+
172  trak->header.modification_time = now;
+
173  trak->header.duration = 0;
+
174  trak->media.header.creation_time = now;
+
175  trak->media.header.modification_time = now;
+
176  trak->media.header.timescale = info->time_scale();
+
177  trak->media.header.duration = 0;
+
178  if (!info->language().empty()) {
+
179  // Strip off the subtag, if any.
+
180  std::string main_language = info->language();
+
181  size_t dash = main_language.find('-');
+
182  if (dash != std::string::npos) {
+
183  main_language.erase(dash);
+
184  }
+
185 
+
186  // ISO-639-2/T main language code should be 3 characters.
+
187  if (main_language.size() != 3) {
+
188  LOG(WARNING) << "'" << main_language << "' is not a valid ISO-639-2 "
+
189  << "language code, ignoring.";
+
190  } else {
+
191  trak->media.header.language.code = main_language;
+
192  }
+
193  }
+
194 }
+
195 
+
196 void MP4Muxer::GenerateVideoTrak(const VideoStreamInfo* video_info,
+
197  Track* trak,
+
198  uint32_t track_id) {
+
199  InitializeTrak(video_info, trak);
+
200 
+
201  // width and height specify the track's visual presentation size as
+
202  // fixed-point 16.16 values.
+
203  uint32_t pixel_width = video_info->pixel_width();
+
204  uint32_t pixel_height = video_info->pixel_height();
+
205  if (pixel_width == 0 || pixel_height == 0) {
+
206  LOG(WARNING) << "pixel width/height are not set. Assuming 1:1.";
+
207  pixel_width = 1;
+
208  pixel_height = 1;
+
209  }
+
210  const double sample_aspect_ratio =
+
211  static_cast<double>(pixel_width) / pixel_height;
+
212  trak->header.width = video_info->width() * sample_aspect_ratio * 0x10000;
+
213  trak->header.height = video_info->height() * 0x10000;
+
214 
+
215  VideoSampleEntry video;
+
216  video.format = CodecToFourCC(video_info->codec());
+
217  video.width = video_info->width();
+
218  video.height = video_info->height();
+
219  video.codec_configuration.data = video_info->codec_config();
+
220  if (pixel_width != 1 || pixel_height != 1) {
+
221  video.pixel_aspect.h_spacing = pixel_width;
+
222  video.pixel_aspect.v_spacing = pixel_height;
+
223  }
+
224 
+
225  SampleDescription& sample_description =
+
226  trak->media.information.sample_table.description;
+
227  sample_description.type = kVideo;
+
228  sample_description.video_entries.push_back(video);
+
229 }
+
230 
+
231 void MP4Muxer::GenerateAudioTrak(const AudioStreamInfo* audio_info,
+
232  Track* trak,
+
233  uint32_t track_id) {
+
234  InitializeTrak(audio_info, trak);
+
235 
+
236  trak->header.volume = 0x100;
237 
-
238 void MP4Muxer::GenerateAudioTrak(const AudioStreamInfo* audio_info,
-
239  Track* trak,
-
240  uint32_t track_id) {
-
241  InitializeTrak(audio_info, trak);
-
242 
-
243  trak->header.volume = 0x100;
-
244 
-
245  AudioSampleEntry audio;
-
246  audio.format = CodecToFourCC(audio_info->codec());
-
247  switch(audio_info->codec()){
-
248  case kCodecAAC:
-
249  audio.esds.es_descriptor.set_object_type(kISO_14496_3); // MPEG4 AAC.
-
250  audio.esds.es_descriptor.set_esid(track_id);
-
251  audio.esds.es_descriptor.set_decoder_specific_info(
-
252  audio_info->codec_config());
-
253  audio.esds.es_descriptor.set_max_bitrate(audio_info->max_bitrate());
-
254  audio.esds.es_descriptor.set_avg_bitrate(audio_info->avg_bitrate());
-
255  break;
-
256  case kCodecDTSC:
-
257  case kCodecDTSH:
-
258  case kCodecDTSL:
-
259  case kCodecDTSE:
-
260  case kCodecDTSM:
-
261  audio.ddts.extra_data = audio_info->codec_config();
-
262  audio.ddts.max_bitrate = audio_info->max_bitrate();
-
263  audio.ddts.avg_bitrate = audio_info->avg_bitrate();
-
264  audio.ddts.sampling_frequency = audio_info->sampling_frequency();
-
265  audio.ddts.pcm_sample_depth = audio_info->sample_bits();
-
266  break;
-
267  case kCodecAC3:
-
268  audio.dac3.data = audio_info->codec_config();
-
269  break;
-
270  case kCodecEAC3:
-
271  audio.dec3.data = audio_info->codec_config();
-
272  break;
-
273  case kCodecOpus:
-
274  audio.dops.opus_identification_header = audio_info->codec_config();
-
275  break;
-
276  default:
-
277  NOTIMPLEMENTED();
-
278  break;
-
279  }
-
280 
-
281  audio.channelcount = audio_info->num_channels();
-
282  audio.samplesize = audio_info->sample_bits();
-
283  audio.samplerate = audio_info->sampling_frequency();
-
284  SampleTable& sample_table = trak->media.information.sample_table;
-
285  SampleDescription& sample_description = sample_table.description;
-
286  sample_description.type = kAudio;
-
287  sample_description.audio_entries.push_back(audio);
-
288 
-
289  // Opus requires at least one sample group description box and at least one
-
290  // sample to group box with grouping type 'roll' within sample table box.
-
291  if (audio_info->codec() == kCodecOpus) {
-
292  sample_table.sample_group_descriptions.resize(1);
-
293  SampleGroupDescription& sample_group_description =
-
294  sample_table.sample_group_descriptions.back();
-
295  sample_group_description.grouping_type = FOURCC_roll;
-
296  sample_group_description.audio_roll_recovery_entries.resize(1);
-
297  // The roll distance is expressed in sample units and always takes negative
-
298  // values.
-
299  const uint64_t kNanosecondsPerSecond = 1000000000ull;
-
300  sample_group_description.audio_roll_recovery_entries[0].roll_distance =
-
301  (0 - (audio_info->seek_preroll_ns() * audio.samplerate +
-
302  kNanosecondsPerSecond / 2)) /
-
303  kNanosecondsPerSecond;
-
304 
-
305  sample_table.sample_to_groups.resize(1);
-
306  SampleToGroup& sample_to_group = sample_table.sample_to_groups.back();
-
307  sample_to_group.grouping_type = FOURCC_roll;
-
308 
-
309  sample_to_group.entries.resize(1);
-
310  SampleToGroupEntry& sample_to_group_entry = sample_to_group.entries.back();
-
311  // All samples are in track fragments.
-
312  sample_to_group_entry.sample_count = 0;
-
313  sample_to_group_entry.group_description_index =
-
314  SampleToGroupEntry::kTrackGroupDescriptionIndexBase + 1;
-
315  } else if (audio_info->seek_preroll_ns() != 0) {
-
316  LOG(WARNING) << "Unexpected seek preroll for codec " << audio_info->codec();
-
317  return;
-
318  }
-
319 }
-
320 
-
321 bool MP4Muxer::GetInitRangeStartAndEnd(uint32_t* start, uint32_t* end) {
-
322  DCHECK(start && end);
-
323  size_t range_offset = 0;
-
324  size_t range_size = 0;
-
325  const bool has_range = segmenter_->GetInitRange(&range_offset, &range_size);
+
238  AudioSampleEntry audio;
+
239  audio.format = CodecToFourCC(audio_info->codec());
+
240  switch(audio_info->codec()){
+
241  case kCodecAAC:
+
242  audio.esds.es_descriptor.set_object_type(kISO_14496_3); // MPEG4 AAC.
+
243  audio.esds.es_descriptor.set_esid(track_id);
+
244  audio.esds.es_descriptor.set_decoder_specific_info(
+
245  audio_info->codec_config());
+
246  audio.esds.es_descriptor.set_max_bitrate(audio_info->max_bitrate());
+
247  audio.esds.es_descriptor.set_avg_bitrate(audio_info->avg_bitrate());
+
248  break;
+
249  case kCodecDTSC:
+
250  case kCodecDTSH:
+
251  case kCodecDTSL:
+
252  case kCodecDTSE:
+
253  case kCodecDTSM:
+
254  audio.ddts.extra_data = audio_info->codec_config();
+
255  audio.ddts.max_bitrate = audio_info->max_bitrate();
+
256  audio.ddts.avg_bitrate = audio_info->avg_bitrate();
+
257  audio.ddts.sampling_frequency = audio_info->sampling_frequency();
+
258  audio.ddts.pcm_sample_depth = audio_info->sample_bits();
+
259  break;
+
260  case kCodecAC3:
+
261  audio.dac3.data = audio_info->codec_config();
+
262  break;
+
263  case kCodecEAC3:
+
264  audio.dec3.data = audio_info->codec_config();
+
265  break;
+
266  case kCodecOpus:
+
267  audio.dops.opus_identification_header = audio_info->codec_config();
+
268  break;
+
269  default:
+
270  NOTIMPLEMENTED();
+
271  break;
+
272  }
+
273 
+
274  audio.channelcount = audio_info->num_channels();
+
275  audio.samplesize = audio_info->sample_bits();
+
276  audio.samplerate = audio_info->sampling_frequency();
+
277  SampleTable& sample_table = trak->media.information.sample_table;
+
278  SampleDescription& sample_description = sample_table.description;
+
279  sample_description.type = kAudio;
+
280  sample_description.audio_entries.push_back(audio);
+
281 
+
282  // Opus requires at least one sample group description box and at least one
+
283  // sample to group box with grouping type 'roll' within sample table box.
+
284  if (audio_info->codec() == kCodecOpus) {
+
285  sample_table.sample_group_descriptions.resize(1);
+
286  SampleGroupDescription& sample_group_description =
+
287  sample_table.sample_group_descriptions.back();
+
288  sample_group_description.grouping_type = FOURCC_roll;
+
289  sample_group_description.audio_roll_recovery_entries.resize(1);
+
290  // The roll distance is expressed in sample units and always takes negative
+
291  // values.
+
292  const uint64_t kNanosecondsPerSecond = 1000000000ull;
+
293  sample_group_description.audio_roll_recovery_entries[0].roll_distance =
+
294  (0 - (audio_info->seek_preroll_ns() * audio.samplerate +
+
295  kNanosecondsPerSecond / 2)) /
+
296  kNanosecondsPerSecond;
+
297 
+
298  sample_table.sample_to_groups.resize(1);
+
299  SampleToGroup& sample_to_group = sample_table.sample_to_groups.back();
+
300  sample_to_group.grouping_type = FOURCC_roll;
+
301 
+
302  sample_to_group.entries.resize(1);
+
303  SampleToGroupEntry& sample_to_group_entry = sample_to_group.entries.back();
+
304  // All samples are in track fragments.
+
305  sample_to_group_entry.sample_count = 0;
+
306  sample_to_group_entry.group_description_index =
+
307  SampleToGroupEntry::kTrackGroupDescriptionIndexBase + 1;
+
308  } else if (audio_info->seek_preroll_ns() != 0) {
+
309  LOG(WARNING) << "Unexpected seek preroll for codec " << audio_info->codec();
+
310  return;
+
311  }
+
312 }
+
313 
+
314 bool MP4Muxer::GetInitRangeStartAndEnd(uint32_t* start, uint32_t* end) {
+
315  DCHECK(start && end);
+
316  size_t range_offset = 0;
+
317  size_t range_size = 0;
+
318  const bool has_range = segmenter_->GetInitRange(&range_offset, &range_size);
+
319 
+
320  if (!has_range)
+
321  return false;
+
322 
+
323  SetStartAndEndFromOffsetAndSize(range_offset, range_size, start, end);
+
324  return true;
+
325 }
326 
-
327  if (!has_range)
-
328  return false;
-
329 
-
330  SetStartAndEndFromOffsetAndSize(range_offset, range_size, start, end);
-
331  return true;
-
332 }
-
333 
-
334 bool MP4Muxer::GetIndexRangeStartAndEnd(uint32_t* start, uint32_t* end) {
-
335  DCHECK(start && end);
-
336  size_t range_offset = 0;
-
337  size_t range_size = 0;
-
338  const bool has_range = segmenter_->GetIndexRange(&range_offset, &range_size);
+
327 bool MP4Muxer::GetIndexRangeStartAndEnd(uint32_t* start, uint32_t* end) {
+
328  DCHECK(start && end);
+
329  size_t range_offset = 0;
+
330  size_t range_size = 0;
+
331  const bool has_range = segmenter_->GetIndexRange(&range_offset, &range_size);
+
332 
+
333  if (!has_range)
+
334  return false;
+
335 
+
336  SetStartAndEndFromOffsetAndSize(range_offset, range_size, start, end);
+
337  return true;
+
338 }
339 
-
340  if (!has_range)
-
341  return false;
-
342 
-
343  SetStartAndEndFromOffsetAndSize(range_offset, range_size, start, end);
-
344  return true;
-
345 }
-
346 
-
347 void MP4Muxer::FireOnMediaStartEvent() {
-
348  if (!muxer_listener())
-
349  return;
-
350 
-
351  if (streams().size() > 1) {
-
352  LOG(ERROR) << "MuxerListener cannot take more than 1 stream.";
-
353  return;
-
354  }
-
355  DCHECK(!streams().empty()) << "Media started without a stream.";
-
356 
-
357  const uint32_t timescale = segmenter_->GetReferenceTimeScale();
-
358  muxer_listener()->OnMediaStart(options(),
-
359  *streams().front()->info(),
-
360  timescale,
-
361  MuxerListener::kContainerMp4);
-
362 }
+
340 void MP4Muxer::FireOnMediaStartEvent() {
+
341  if (!muxer_listener())
+
342  return;
+
343 
+
344  if (streams().size() > 1) {
+
345  LOG(ERROR) << "MuxerListener cannot take more than 1 stream.";
+
346  return;
+
347  }
+
348  DCHECK(!streams().empty()) << "Media started without a stream.";
+
349 
+
350  const uint32_t timescale = segmenter_->GetReferenceTimeScale();
+
351  muxer_listener()->OnMediaStart(options(), *streams().front(), timescale,
+
352  MuxerListener::kContainerMp4);
+
353 }
+
354 
+
355 void MP4Muxer::FireOnMediaEndEvent() {
+
356  if (!muxer_listener())
+
357  return;
+
358 
+
359  uint32_t init_range_start = 0;
+
360  uint32_t init_range_end = 0;
+
361  const bool has_init_range =
+
362  GetInitRangeStartAndEnd(&init_range_start, &init_range_end);
363 
-
364 void MP4Muxer::FireOnMediaEndEvent() {
-
365  if (!muxer_listener())
-
366  return;
-
367 
-
368  uint32_t init_range_start = 0;
-
369  uint32_t init_range_end = 0;
-
370  const bool has_init_range =
-
371  GetInitRangeStartAndEnd(&init_range_start, &init_range_end);
-
372 
-
373  uint32_t index_range_start = 0;
-
374  uint32_t index_range_end = 0;
-
375  const bool has_index_range =
-
376  GetIndexRangeStartAndEnd(&index_range_start, &index_range_end);
+
364  uint32_t index_range_start = 0;
+
365  uint32_t index_range_end = 0;
+
366  const bool has_index_range =
+
367  GetIndexRangeStartAndEnd(&index_range_start, &index_range_end);
+
368 
+
369  const float duration_seconds = static_cast<float>(segmenter_->GetDuration());
+
370 
+
371  const int64_t file_size =
+
372  File::GetFileSize(options().output_file_name.c_str());
+
373  if (file_size <= 0) {
+
374  LOG(ERROR) << "Invalid file size: " << file_size;
+
375  return;
+
376  }
377 
-
378  const float duration_seconds = static_cast<float>(segmenter_->GetDuration());
-
379 
-
380  const int64_t file_size =
-
381  File::GetFileSize(options().output_file_name.c_str());
-
382  if (file_size <= 0) {
-
383  LOG(ERROR) << "Invalid file size: " << file_size;
-
384  return;
-
385  }
-
386 
-
387  muxer_listener()->OnMediaEnd(has_init_range,
-
388  init_range_start,
-
389  init_range_end,
-
390  has_index_range,
-
391  index_range_start,
-
392  index_range_end,
-
393  duration_seconds,
-
394  file_size);
-
395 }
-
396 
-
397 uint64_t MP4Muxer::IsoTimeNow() {
-
398  // Time in seconds from Jan. 1, 1904 to epoch time, i.e. Jan. 1, 1970.
-
399  const uint64_t kIsomTimeOffset = 2082844800l;
-
400  return kIsomTimeOffset +
-
401  (clock() ? clock()->Now() : base::Time::Now()).ToDoubleT();
-
402 }
-
403 
-
404 } // namespace mp4
-
405 } // namespace media
-
406 } // namespace shaka
+
378  muxer_listener()->OnMediaEnd(has_init_range,
+
379  init_range_start,
+
380  init_range_end,
+
381  has_index_range,
+
382  index_range_start,
+
383  index_range_end,
+
384  duration_seconds,
+
385  file_size);
+
386 }
+
387 
+
388 uint64_t MP4Muxer::IsoTimeNow() {
+
389  // Time in seconds from Jan. 1, 1904 to epoch time, i.e. Jan. 1, 1970.
+
390  const uint64_t kIsomTimeOffset = 2082844800l;
+
391  return kIsomTimeOffset +
+
392  (clock() ? clock()->Now() : base::Time::Now()).ToDoubleT();
+
393 }
+
394 
+
395 } // namespace mp4
+
396 } // namespace media
+
397 } // namespace shaka
virtual void OnMediaEnd(bool has_init_range, uint64_t init_range_start, uint64_t init_range_end, bool has_index_range, uint64_t index_range_start, uint64_t index_range_end, float duration_seconds, uint64_t file_size)=0
-
MP4Muxer(const MuxerOptions &options)
Create a MP4Muxer object from MuxerOptions.
Definition: mp4_muxer.cc:82
+
MP4Muxer(const MuxerOptions &options)
Create a MP4Muxer object from MuxerOptions.
Definition: mp4_muxer.cc:81
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
- +
virtual void OnMediaStart(const MuxerOptions &muxer_options, const StreamInfo &stream_info, uint32_t time_scale, ContainerType container_type)=0
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 f5d078a05d..16f49e900a 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 75a0cb049c..f343080595 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 d6105e0e08..1fe7cb6058 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 e04d39d52b..6d5fc21acd 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 d8c507647a..f69908f58a 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 5cf09c6948..ab8b8dbd70 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 a8196fb022..854c6db1ec 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 a399347ab7..88d73c2662 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 b07a51a9aa..d4e54217d3 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 787212d6b9..70bb5c70fc 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 1e391ed89f..f4cd02d1b7 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 f37862f338..c6fe97e11b 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 89533a4b06..882b328fa4 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 0eda9621d8..a5b5185a6c 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 dad74adc56..7d01491ace 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 7fb522e4f1..476f2fea8d 100644 --- a/docs/da/dd1/fragmenter_8h_source.html +++ b/docs/da/dd1/fragmenter_8h_source.html @@ -204,7 +204,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 f0bdce89a4..558fb05dc2 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 c4ca61d241..b4067210b9 100644 --- a/docs/da/dd6/classshaka_1_1media_1_1H264ByteToUnitStreamConverter-members.html +++ b/docs/da/dd6/classshaka_1_1media_1_1H264ByteToUnitStreamConverter-members.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/da/dd8/classshaka_1_1media_1_1mp2t_1_1Mp2tMediaParser-members.html b/docs/da/dd8/classshaka_1_1media_1_1mp2t_1_1Mp2tMediaParser-members.html index dc2908ec2b..1c2fee2f40 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 29de65736c..b1fa713ebf 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 40f09c68f0..5f73b7366f 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 f9a6146ac7..89e5543083 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 b5fe115d70..a9dfa2a534 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 d43981a51c..10a53f0a54 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 bc2a49d4db..adcfb844b9 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 d52b57114d..9016460185 100644 --- a/docs/da/de8/classshaka_1_1media_1_1AudioStreamInfo-members.html +++ b/docs/da/de8/classshaka_1_1media_1_1AudioStreamInfo-members.html @@ -128,7 +128,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 ccef90378e..59b64d6df9 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 f7a6667eda..fa5d4dc806 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 fdebdb8175..f84f4b8a50 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 cc5b2c5cff..539ee27af3 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 e92b4fa97f..508f525f39 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 b149bf3dd4..9ab729065a 100644 --- a/docs/da/dfd/classshaka_1_1media_1_1MediaHandler.html +++ b/docs/da/dfd/classshaka_1_1media_1_1MediaHandler.html @@ -102,8 +102,13 @@ Inheritance diagram for shaka::media::MediaHandler:
-shaka::media::ChunkingHandler -shaka::media::EncryptionHandler +shaka::media::ChunkingHandler +shaka::media::Demuxer +shaka::media::EncryptionHandler +shaka::media::Muxer +shaka::media::mp2t::TsMuxer +shaka::media::mp4::MP4Muxer +shaka::media::webm::WebMMuxer
@@ -172,6 +177,11 @@ int  + +
num_input_streams
int next_output_stream_index () const
 
+const std::map< int, std::pair
+< std::shared_ptr
+< MediaHandler >, int > > & 
output_handlers ()
 

Detailed Description

MediaHandler is the base media processing unit. Media handlers transform the input streams and propagate the outputs to downstream media handlers. There are three different types of media handlers: 1) Single input single output This is the most basic handler. It only supports one input and one output with both index as 0. 2) Multiple inputs multiple outputs The number of outputs must be equal to the number of inputs. The output stream at a specific index comes from the input stream at the same index. Different streams usually share a common resource, although they may be independent. One example of this is encryptor handler. 3) Single input multiple outputs The input stream is splitted into multiple output streams. One example of this is trick play handler. Other types of media handlers are disallowed and not supported.

@@ -245,7 +255,7 @@ int next_output_stream_ind

Internal implementation of initialize. Note that it should only initialize the MediaHandler itself. Downstream handlers are handled in Initialize().

-

Implemented in shaka::media::ChunkingHandler, and shaka::media::EncryptionHandler.

+

Implemented in shaka::media::Muxer, shaka::media::Demuxer, shaka::media::ChunkingHandler, and shaka::media::EncryptionHandler.

@@ -272,7 +282,7 @@ int next_output_stream_ind

Process the incoming stream data. Note that (1) stream_data.stream_index should be the input stream index; (2) The implementation needs to call DispatchXxx to dispatch the processed stream data to the downstream handlers after finishing processing if needed.

-

Implemented in shaka::media::ChunkingHandler, and shaka::media::EncryptionHandler.

+

Implemented in shaka::media::Muxer, shaka::media::Demuxer, shaka::media::ChunkingHandler, and shaka::media::EncryptionHandler.

@@ -283,7 +293,7 @@ int next_output_stream_ind diff --git a/docs/da/dfd/classshaka_1_1media_1_1MediaHandler.png b/docs/da/dfd/classshaka_1_1media_1_1MediaHandler.png index 1d2549f8d5ae23b3ed9f9c4702afa1093d9af0bf..5b2f546dc3f59f34cf87b15ebbea634be9a1872e 100644 GIT binary patch literal 2806 zcmcJRdr;C@8^_7g5OcNFHqDYK5;M`tQX|EU)rwKk#B$N{mPr;~(#%_8wV<138tiIb z(0Wa?Rg;$TlA5I3#m&pBu9pfe@V{M?TE{8 z_=W3NWxkrMo?4Q2KUcXPVb>vyuvKW>`ueh(<)kz29^sOjx^FSmULY}H>WJ}t#0rFd z|Gsr<`lj3{i+&{udbTO3*m2{b)J{$ zf|RP%{T%u0`V_Jbl0+?h>W2}fbPU8lUXUhir=c19FMFZ#J0xr7;=cGZJZt}0nWpOD z``S$%6|qN~z4)ak*B2T(%-co`=Sv4d1QdzCW+W*H0O$I*rRqh?x5N5bn8HdbwB zguEAusdnS(Ue9GuhfAU5y=wdXhcpytddPLYix!CqJWH*hcq5*8aRB50(+K> zhGDShN7^hB*EL0R$CBw=fvoi?!A<`Ke`x#lc_XC9A-zPgrIxUsZJCS>oqwm-MB_t; z5^FWPfhM?=lELf1E|nc{!;p+% z{dfQFkf9iV(Z(-Qn!{lTaOy{{yMrjD2Nbn98e6^=j7}`)SR8F$y%%~g)a962&(-d? z`0f8-5l{G^0ep!t*3S5qG}bO_NE)kf{`zu-bTO;M@M+aOU4Qn&e*d?7wwiKrSnGc4 zHaMc3l%`$fYIQ}etUK_#(C%xu_@DkSQ&IyAk{|8+qIqYzi`9nYfLKoOo;A&r=98}s zSi|qA$7#eVN%u8Y&|6P9@n_;2Jn`pHvsL{#Y!&+T<~CDel`At7op)z~jec7~xKz;{ z=*-gYf~Jo1Z$KRg9msC@{gRBxy=9+D)9oex}NM zDM=z}v5u+*+N|ctK}SN4{`9>A~Q26@?t_$ zOy3N0`P<#^6BNotX2hF+H{$zFC8!iu3k>86k%{dgiXZd((X>CYPqGBgZzq7!Bn z?JbcGCulo@a5?gA12RX|aY}9+%lyI3PBXF9CW&mU#Y0(3=WVtu?=B<6hIe_P6#nOC zwlK&kzVXwZ`a{8Z^=nUNK3K6s124!vTz)-&>c_8&s70+CRkQ~cH^zdxY%&J&poBkk z;>5hkfN+PUrbpDiF(*|0{;}Ezew6%8n!*K+<>>K#DRpn8(n_mtDat7Eh-`dH)G_B| zlV(#O6cb_-O0@P`Z|9BVU|PP6VNAAD3ZKa3Gvz&zFQ?~T;~Fd&)fPR+;g#m?zKorV z)_x@GrUdRPI@(L6z^i>G-In#( zkMXqWT-&;}O&@-J_cF?3tL$-(Brk>;A(=Yi<}x@>MwMrdp=pDTG1LOIv!LZPbDE;t zbpE##!rT(B!Hf}uvDa(bk;VgNrp!Ofz`fH6Yi=)&Hp=?O*P>L`~%Vj)5oinN*~fupwuuMYcyOtI00y=8JA5p&9Ff?J1W! zBdJ z*EC*+48{$mM;(Na<9d#v1}Z@Ias{w?aWWmM2f2TYkoZ!FL-xxYs=JH(n}YEN%l^X5 ze}kXhvp=aL*a={it9TN47Oc)EKTPxo#&-9QeuL+N{Q&xeBKxfY{=el^>Cp0kjB?W3 z)xhL1^<#G@Rze;JJes*23Q6h-S>ywBL16mlX#x$B146HZ^VrdSEjhrzS0o8urEdKq z6RpAz%@A2hg?^m1`u!V23jt?nhaZplYB;mD zXE3;7yN5KfnnLlCECd@QZ+AS%p&O4WsDn%EP0pneVsH8|VLsF&a6jh+Z=v%*`q_^g zcbZi_qm~3@d*=xnmo_wv24^}SHEGe-VQ?dNXWtIPIMk|W-qnT;dvAzOuEz@O>`xR^ z1h%&&Bgatu-dYT!vpoXKkPa}5k;*uI>!rO2`^NLWCq$gHyKke}Ll1P1xdc}g`eIZf zs$CZ^1d9k5a0G-gDBe@uu3Fa=8MaQ1#&JTmekJEUbSsYeNk(zy5DsqR8Cc)Ttkt!! zqyVPuo4I=GzX6v{kolTF?0dU{FT zXmi79B0T1&v)=!*ga@<*;nV2xQMg|pr5CuI-Bna=68TA9%zgdlVu8gk1A2eS5XdEM zCP|gumd_duE|5!ySUD5BL>SU+*e86;$Jot`Xm*ZE2yUKP=5{AKuQNffHm4V5h)g5Y zY!YAHR;KGOHb)4fdMdRRYM*Dv*MylDbp4~ zgS+9d!$gKW^#l5>2Y3Vk7sKihRFV-Zsz_j_r8|I$l_!X!`#soOw0ym3oGLdKEfd&H z;R==51Hg)tHX)1X77fT>@1Xi>bO(4Zi4CgtyRV@_-EXa0Id5lbY#L#h0RE)Hh)yKO J`vm_hzXLj|KV1L- literal 1102 zcmeAS@N?(olHy`uVBq!ia0y~yV4MVG2XHV0NfvJA!$3+Rz$e7@|Ns9$=8HF9OZyK^ z0J6aNz<~p-op4 z?b-jXNpFvTr#^?T@tKz@gY%pXM!rA%>Q_EFUbF6U__9cy;MY=B*=N?D`)qpG_W$cv zN!8{9p(pRil~m+1pZ&_~m3O&dW=o~hvy%}|?=YR2v-AB8^Y6^PrN6iIzTSQ-Tr+Zc z{k%1*7yjMwc@vfHGh^`*UYqxgr{jZHRc$V_Y1p}MWr40~a_FXWF`Hxa6n$&64}W8x zedwvyOshX}s_%mCuDOyn{Y&Ut?%Vu#MD+5f_lOG|VBc6g&Em6B*rRFxmNDEbp4MY^ z=8)<2Nu~Wdz1NPf^_h8iA8+=rPt1G!OAF)Ub}-y)MfN#5yFWO{OEaI(fvI4Eumh6- zNNwk3&AALLN>dqJ9_6UaWjLZZm4QXMm7xVFLI}$|F0qc5l9Y*#C`IWtiG@n{_iiF3H^!cz^Cirb1-=DlPlhjJfAD4}5vP@3KzAyN5}Ovd`~7^TyJD`o$Svw}yV26gmX{N+MD}o+jmamwZFaQ%{*zc>|0@agzM|C z9&ULLqrP39)nR+T=ULs7*c zj!75aE?l{;<4?(+{R+bFozZ;qr%zaWAFD3had-Eo8$6ZL%N9MmW$o=Y|HsAxTf@m8 zw?#}5IT_bJg~#ZYe#|$4c~WoNmw(zUH&HF;=AUPOUb$bJm-p9fyZ45lNB*|HUg)!H z^Ag!ZI%%>`zueJ|aW{I!JzeFmWZ5j$ml}BwCoTDZFs;$!l5$JnC2?g>t5fk>hS9E* z<~huXHOh_m+%?@k#HjbD@l=mX`adrpQuXv#o$3*!5!9*Dssv*^TC?O@)P0%7AaYLq YtbIX$%VhJm12aE^r>mdKI;Vst00$lTKmY&$ diff --git a/docs/db/d02/structshaka_1_1media_1_1ChunkingOptions.html b/docs/db/d02/structshaka_1_1media_1_1ChunkingOptions.html index f239b43c8c..9612fb60d1 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 1ecfa75bd6..4394851b05 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 0060e48eca..47126d392d 100644 --- a/docs/db/d0b/webvtt__sample__converter_8h_source.html +++ b/docs/db/d0b/webvtt__sample__converter_8h_source.html @@ -172,7 +172,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 6895594550..2870e75929 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 f5c5cac91a..2dd3f7291e 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 387b2a875f..b76c74bc08 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 ee3bf198ef..2284a61ca8 100644 --- a/docs/db/d21/structshaka_1_1media_1_1mp4_1_1SubtitleMediaHeader.html +++ b/docs/db/d21/structshaka_1_1media_1_1mp4_1_1SubtitleMediaHeader.html @@ -175,7 +175,7 @@ uint32_t flags diff --git a/docs/db/d30/classshaka_1_1media_1_1mp4_1_1MP4Muxer.html b/docs/db/d30/classshaka_1_1media_1_1mp4_1_1MP4Muxer.html index 410145b580..fc50da853f 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 @@ -101,7 +101,8 @@ Inheritance diagram for shaka::media::mp4::MP4Muxer:
-shaka::media::Muxer +shaka::media::Muxer +shaka::media::MediaHandler
@@ -117,25 +118,29 @@ Public Member Functions - - - - - - - - + + + + + + + + + + +
 
void SetKeySource (KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)
 
-void AddStream (MediaStream *stream)
 Add video/audio stream.
 
-Status Run ()
 Drive the remuxing from muxer side (pull).
 
void Cancel ()
 
void SetMuxerListener (std::unique_ptr< MuxerListener > muxer_listener)
 
void SetProgressListener (std::unique_ptr< ProgressListener > progress_listener)
 
-const std::vector< MediaStream * > & streams () const
 
+const std::vector
+< std::shared_ptr< StreamInfo > > & 
streams () const
 
void set_clock (base::Clock *clock)
 
- Public Member Functions inherited from shaka::media::MediaHandler
+Status SetHandler (int output_stream_index, std::shared_ptr< MediaHandler > handler)
 Connect downstream handler at the specified output stream index.
 
+Status AddHandler (std::shared_ptr< MediaHandler > handler)
 Connect downstream handler to the next availble output stream index.
 
Status Initialize ()
 
@@ -173,6 +178,62 @@ base::Clock *  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Additional Inherited Members

clock ()
FourCC protection_scheme () const
 
Status InitializeInternal () override
 
Status Process (std::unique_ptr< StreamData > stream_data) override
 
+Status FlushStream (int input_stream_index) override
 Flush the stream at the specified input stream index.
 
- Protected Member Functions inherited from shaka::media::MediaHandler
+virtual bool ValidateOutputStreamIndex (int stream_index) const
 Validate if the stream at the specified index actually exists.
 
+bool initialized ()
 
+int num_input_streams ()
 
Status Dispatch (std::unique_ptr< StreamData > stream_data)
 
+Status DispatchPeriodInfo (int stream_index, std::shared_ptr< PeriodInfo > period_info)
 Dispatch the period info to downstream handlers.
 
+Status DispatchStreamInfo (int stream_index, std::shared_ptr< StreamInfo > stream_info)
 Dispatch the stream info to downstream handlers.
 
+Status DispatchEncryptionConfig (int stream_index, std::unique_ptr< EncryptionConfig > encryption_config)
 Dispatch the encryption config to downstream handlers.
 
+Status DispatchMediaSample (int stream_index, std::shared_ptr< MediaSample > media_sample)
 Dispatch the media sample to downstream handlers.
 
+Status DispatchMediaEvent (int stream_index, std::shared_ptr< MediaEvent > media_event)
 Dispatch the media event to downstream handlers.
 
+Status DispatchSegmentInfo (int stream_index, std::shared_ptr< SegmentInfo > segment_info)
 Dispatch the segment info to downstream handlers.
 
+int num_input_streams () const
 
+int next_output_stream_index () const
 
+const std::map< int, std::pair
+< std::shared_ptr
+< MediaHandler >, int > > & 
output_handlers ()
 

Detailed Description

Implements MP4 Muxer for ISO-BMFF. Please refer to ISO/IEC 14496-12: ISO base media file format for details.

@@ -185,7 +246,7 @@ FourCC protection_scheme diff --git a/docs/db/d30/classshaka_1_1media_1_1mp4_1_1MP4Muxer.png b/docs/db/d30/classshaka_1_1media_1_1mp4_1_1MP4Muxer.png index 5682ba6c1a2c8e66916537722f4c490d7e421e4b..49141a97e338c8cb56b9567dedfe04ec643019ed 100644 GIT binary patch delta 900 zcmV-~1AF|`1(FDm7Yc|70{{R3mT6k(ks&&N1EEPoK~#7F?Vat8>mUq74};YAf8?7M z2%pJKrL83-uQJ;}26HeD`Adv3ZYQE7Z6>FdBpW%kB-v<19VFGOZ%NWphi!D0_7tyn zq`T!5i-13&megG#Gu_1d8|u#tAx{)?>oYnvO285__a6UOwubt`SgA|RO%YMOM0?&h1A>bja`K-sdKg9r`^>(=)%V)6N8>b3c<$8W$mvy}udQH77 z!>-c4sq3qNUsXuW^x5cq)(!Cy1SHd$fQxS~wH$S~? zq%M2ef6XCDm-?nc&fTumsWDP#OIJv}ZIRwQ>hGwR8Ju#{<$5fi!M3cN=kNI!bv?o_ zaqjB6TTJsZv~}~t3aN9PjUIV*hD>Eq9Mc&hN%!(Ex+K}isU^uqPAy3`a%xGk(Lo(! zjJpZoM|uHlr!A>puN|?sq&}cG#NLzI&kz7BlYId$e=CF#wi5whGdVSYjhq_5Mgw)f zgog_{Y!95(Qtsa4J_o|t+dKid)E`j;+^fLV+xO4sF8%vZ*Czm%s?=#%9+5JT!=C9V z{>Jk5-`UQ9ZLSy8>G|*^4@!H|MmeJ;WA>lOW!ui~H)Mmf8q?c4fb#t88L9gxHC%C> zuuWNYf5nxj9ExBJ)cpL%Hf%&@%XK}hZ3Jz#tdMiJD|LNix@;y(S4daX?Tj_u{c79& zov7>LrnhmC!EuoU>ebBGOtYkJ&Wa^<&A~w3@6$wmvG4!End^GmlD7C3nO*fZFGpKZ zPb#E&fl8xCUY#M6t(+mNUAd)Bfu}RX=G*w2F6d4TFltX~fWMbh1K7x^0c=#hwjqSD ak^TWTmr1+2Lg!Qf0000~Cj6~VZE^Xkn;>YU4N4M{rHClyk%U8!SZq)sMX zA@yd9@TOVcqh3aEicJ^mv3v%zW#!yI=O5Jd2*1R+s_Sku&0%Qk=7$wh*C>r1d3A?O zWsxnWJ4BMM<^SlCWFx1RBpW%kB-zL)sU^uqPwL}1j@<TdlaT=_f4V1x5VjKmU^6*2fQ_6Qz(xagzlEC{dYav^tS0&EHSc{P zl-_0p;8b6t2Dny+tDmpe`z!vusp|;9sVa4xmS)5VB)26T*}gG(*v~E_TYQViu6mop(N@%*3TX~dZuH2jJ7hA;cgQL$ zm(uF+LIdK`*Lak8#y(Ajq<;32qA2wKg{(euda`&*Z=?k07*qo IM6N<$g5~5glK=n! 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 f5b45b2a77..01e211dfad 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 @@ -142,7 +142,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
diff --git a/docs/db/d31/track__run__iterator_8cc_source.html b/docs/db/d31/track__run__iterator_8cc_source.html index 423da05788..e3b543274b 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 3274c43e38..0fdf20c266 100644 --- a/docs/db/d38/classshaka_1_1media_1_1mp2t_1_1PesPacketGenerator-members.html +++ b/docs/db/d38/classshaka_1_1media_1_1mp2t_1_1PesPacketGenerator-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d3b/classshaka_1_1media_1_1VideoSliceHeaderParser-members.html b/docs/db/d3b/classshaka_1_1media_1_1VideoSliceHeaderParser-members.html index 16f87c1513..a2b2d94a0d 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 1f614059d5..daad831c88 100644 --- a/docs/db/d45/mpd__notify__muxer__listener_8h_source.html +++ b/docs/db/d45/mpd__notify__muxer__listener_8h_source.html @@ -189,7 +189,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d4b/classshaka_1_1MockAdaptationSet.html b/docs/db/d4b/classshaka_1_1MockAdaptationSet.html index 866f7dcd62..fc2f11180f 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 60f66c3f24..112d7be5e4 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 4b13ac3468..99d5e4d515 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 2d027bb9ad..8300798385 100644 --- a/docs/db/d51/two__pass__single__segment__segmenter_8h_source.html +++ b/docs/db/d51/two__pass__single__segment__segmenter_8h_source.html @@ -144,7 +144,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d59/media__handler__test__base_8h_source.html b/docs/db/d59/media__handler__test__base_8h_source.html index d0000c95df..d8d91cb29d 100644 --- a/docs/db/d59/media__handler__test__base_8h_source.html +++ b/docs/db/d59/media__handler__test__base_8h_source.html @@ -189,7 +189,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 2191491727..6c8c8ea04e 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 188f9cdf1d..8606609dec 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 0b77275b85..5c89af6f05 100644 --- a/docs/db/d64/webvtt__media__parser_8h_source.html +++ b/docs/db/d64/webvtt__media__parser_8h_source.html @@ -167,7 +167,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 431554a890..dae3d70af4 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 5e4e01df8d..1e0fd5ab16 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 aa3452479a..05511ac78e 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 e1d4074f28..01820292cd 100644 --- a/docs/db/d74/classshaka_1_1media_1_1HEVCDecoderConfigurationRecord-members.html +++ b/docs/db/d74/classshaka_1_1media_1_1HEVCDecoderConfigurationRecord-members.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/d75/classshaka_1_1media_1_1webm_1_1TwoPassSingleSegmentSegmenter-members.html b/docs/db/d75/classshaka_1_1media_1_1webm_1_1TwoPassSingleSegmentSegmenter-members.html index 1f25cac868..089a67c4e2 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 063e173fc5..5571ab9374 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 1c2e744ce2..6f926763f8 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 58585160aa..7cf4d647ca 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 ff00e20b03..17190cc0a4 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 b9a8546fa3..eb66e3c2c7 100644 --- a/docs/db/d8f/mp4__muxer_8h_source.html +++ b/docs/db/d8f/mp4__muxer_8h_source.html @@ -121,59 +121,57 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
35 
36  private:
37  // Muxer implementation overrides.
-
38  Status Initialize() override;
+
38  Status InitializeMuxer() override;
39  Status Finalize() override;
-
40  Status DoAddSample(const MediaStream* stream,
-
41  std::shared_ptr<MediaSample> sample) override;
-
42 
-
43  // Generate Audio/Video Track box.
-
44  void InitializeTrak(const StreamInfo* info, Track* trak);
-
45  void GenerateAudioTrak(const AudioStreamInfo* audio_info,
-
46  Track* trak,
-
47  uint32_t track_id);
-
48  void GenerateVideoTrak(const VideoStreamInfo* video_info,
-
49  Track* trak,
-
50  uint32_t track_id);
-
51 
-
52  // Gets |start| and |end| initialization range. Returns true if there is an
-
53  // init range and sets start-end byte-range-spec specified in RFC2616.
-
54  bool GetInitRangeStartAndEnd(uint32_t* start, uint32_t* end);
-
55 
-
56  // Gets |start| and |end| index range. Returns true if there is an index range
-
57  // and sets start-end byte-range-spec specified in RFC2616.
-
58  bool GetIndexRangeStartAndEnd(uint32_t* start, uint32_t* end);
-
59 
-
60  // Fire events if there are no errors and Muxer::muxer_listener() is not NULL.
-
61  void FireOnMediaStartEvent();
-
62  void FireOnMediaEndEvent();
-
63 
-
64  // Get time in seconds since midnight, Jan. 1, 1904, in UTC Time.
-
65  uint64_t IsoTimeNow();
-
66 
-
67  std::unique_ptr<Segmenter> segmenter_;
-
68 
-
69  DISALLOW_COPY_AND_ASSIGN(MP4Muxer);
-
70 };
-
71 
-
72 } // namespace mp4
-
73 } // namespace media
-
74 } // namespace shaka
-
75 
-
76 #endif // MEDIA_FORMATS_MP4_MP4_MUXER_H_
+
40  Status DoAddSample(std::shared_ptr<MediaSample> sample) override;
+
41 
+
42  // Generate Audio/Video Track box.
+
43  void InitializeTrak(const StreamInfo* info, Track* trak);
+
44  void GenerateAudioTrak(const AudioStreamInfo* audio_info,
+
45  Track* trak,
+
46  uint32_t track_id);
+
47  void GenerateVideoTrak(const VideoStreamInfo* video_info,
+
48  Track* trak,
+
49  uint32_t track_id);
+
50 
+
51  // Gets |start| and |end| initialization range. Returns true if there is an
+
52  // init range and sets start-end byte-range-spec specified in RFC2616.
+
53  bool GetInitRangeStartAndEnd(uint32_t* start, uint32_t* end);
+
54 
+
55  // Gets |start| and |end| index range. Returns true if there is an index range
+
56  // and sets start-end byte-range-spec specified in RFC2616.
+
57  bool GetIndexRangeStartAndEnd(uint32_t* start, uint32_t* end);
+
58 
+
59  // Fire events if there are no errors and Muxer::muxer_listener() is not NULL.
+
60  void FireOnMediaStartEvent();
+
61  void FireOnMediaEndEvent();
+
62 
+
63  // Get time in seconds since midnight, Jan. 1, 1904, in UTC Time.
+
64  uint64_t IsoTimeNow();
+
65 
+
66  std::unique_ptr<Segmenter> segmenter_;
+
67 
+
68  DISALLOW_COPY_AND_ASSIGN(MP4Muxer);
+
69 };
+
70 
+
71 } // namespace mp4
+
72 } // namespace media
+
73 } // namespace shaka
+
74 
+
75 #endif // MEDIA_FORMATS_MP4_MP4_MUXER_H_
Abstract class holds stream information.
Definition: stream_info.h:57
-
MP4Muxer(const MuxerOptions &options)
Create a MP4Muxer object from MuxerOptions.
Definition: mp4_muxer.cc:82
+
MP4Muxer(const MuxerOptions &options)
Create a MP4Muxer object from MuxerOptions.
Definition: mp4_muxer.cc:81
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
- +
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 4740531e97..d6d306f648 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 6f3a7ef20c..8243d546b0 100644 --- a/docs/db/d95/classshaka_1_1media_1_1mp4_1_1Fragmenter.html +++ b/docs/db/d95/classshaka_1_1media_1_1mp4_1_1Fragmenter.html @@ -339,7 +339,7 @@ template<typename T > diff --git a/docs/db/d95/structshaka_1_1media_1_1mp4_1_1ChunkLargeOffset.html b/docs/db/d95/structshaka_1_1media_1_1mp4_1_1ChunkLargeOffset.html index 804ba4387d..494964be12 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 5b353572dc..985d1d19cb 100644 --- a/docs/db/d96/wvm__media__parser_8h_source.html +++ b/docs/db/d96/wvm__media__parser_8h_source.html @@ -362,7 +362,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/da4/classBandwidthEstimator-members.html b/docs/db/da4/classBandwidthEstimator-members.html index 965b3e6e13..1e6fc62f44 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 7530d32bdd..c073a79dfb 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 8db27a04a6..2785237b2a 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 019b9ecd15..f9af3c8c2f 100644 --- a/docs/db/dab/classshaka_1_1media_1_1TextStreamInfo.html +++ b/docs/db/dab/classshaka_1_1media_1_1TextStreamInfo.html @@ -285,7 +285,7 @@ void set_is_encrypted diff --git a/docs/db/dae/classshaka_1_1media_1_1WebMInfoParser.html b/docs/db/dae/classshaka_1_1media_1_1WebMInfoParser.html index 15a50cd228..68d9b0589b 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 158885e5ef..4cbc04c717 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 23be038142..01220c89b5 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 4731e0c3d7..2f79fb821d 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 fda526a805..c0d07d600b 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 10f531c5a8..fc976a5a80 100644 --- a/docs/db/dcb/classshaka_1_1media_1_1VPxParser.html +++ b/docs/db/dcb/classshaka_1_1media_1_1VPxParser.html @@ -205,7 +205,7 @@ Protected Member Functions diff --git a/docs/db/dcc/classshaka_1_1media_1_1webm_1_1Encryptor-members.html b/docs/db/dcc/classshaka_1_1media_1_1webm_1_1Encryptor-members.html index 5b6fb4a44c..d0b6f4d0f2 100644 --- a/docs/db/dcc/classshaka_1_1media_1_1webm_1_1Encryptor-members.html +++ b/docs/db/dcc/classshaka_1_1media_1_1webm_1_1Encryptor-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/db/dcd/classshaka_1_1MpdWriter.html b/docs/db/dcd/classshaka_1_1MpdWriter.html index a8ce485c4f..65ebe46216 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 be58910a9e..16f6f2f4aa 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 435d0bc27a..f9a56c06db 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 aeb4a5a736..6239ea1a9c 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 6dae15beed..9dd2a07c1b 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 75b2cd8f17..a10ca0ed4b 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 c737f0d7f8..1f571f1a7e 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 ccf8445711..d42aadf6e6 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 9f25e86dac..8dae0831d2 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 3565eb3ac0..f0265bbdcf 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 617ee9381f..371c709c2f 100644 --- a/docs/db/df6/muxer_8h_source.html +++ b/docs/db/df6/muxer_8h_source.html @@ -103,124 +103,120 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
14 
15 #include "packager/base/time/clock.h"
16 #include "packager/media/base/fourccs.h"
-
17 #include "packager/media/base/muxer_options.h"
-
18 #include "packager/media/base/status.h"
-
19 #include "packager/media/event/muxer_listener.h"
-
20 #include "packager/media/event/progress_listener.h"
-
21 
-
22 namespace shaka {
-
23 namespace media {
-
24 
-
25 class KeySource;
-
26 class MediaSample;
-
27 class MediaStream;
-
28 
-
32 class Muxer {
-
33  public:
-
34  explicit Muxer(const MuxerOptions& options);
-
35  virtual ~Muxer();
-
36 
-
37  // TODO(kqyang): refactor max_sd_pixels through crypto_period_duration into
-
38  // an encapsulated EncryptionParams structure.
-
39 
-
60  void SetKeySource(KeySource* encryption_key_source,
-
61  uint32_t max_sd_pixels,
-
62  uint32_t max_hd_pixels,
-
63  uint32_t max_uhd1_pixels,
-
64  double clear_lead_in_seconds,
-
65  double crypto_period_duration_in_seconds,
-
66  FourCC protection_scheme);
-
67 
-
69  void AddStream(MediaStream* stream);
-
70 
-
72  Status Run();
-
73 
-
76  void Cancel();
-
77 
-
80  void SetMuxerListener(std::unique_ptr<MuxerListener> muxer_listener);
-
81 
-
84  void SetProgressListener(std::unique_ptr<ProgressListener> progress_listener);
-
85 
-
86  const std::vector<MediaStream*>& streams() const { return streams_; }
-
87 
-
94  void set_clock(base::Clock* clock) {
-
95  clock_ = clock;
-
96  }
-
97 
-
98  protected:
-
99  const MuxerOptions& options() const { return options_; }
-
100  KeySource* encryption_key_source() {
-
101  return encryption_key_source_;
-
102  }
-
103  uint32_t max_sd_pixels() const { return max_sd_pixels_; }
-
104  uint32_t max_hd_pixels() const { return max_hd_pixels_; }
-
105  uint32_t max_uhd1_pixels() const { return max_uhd1_pixels_; }
-
106  double clear_lead_in_seconds() const { return clear_lead_in_seconds_; }
-
107  double crypto_period_duration_in_seconds() const {
-
108  return crypto_period_duration_in_seconds_;
-
109  }
-
110  MuxerListener* muxer_listener() { return muxer_listener_.get(); }
-
111  ProgressListener* progress_listener() { return progress_listener_.get(); }
-
112  base::Clock* clock() { return clock_; }
-
113  FourCC protection_scheme() const { return protection_scheme_; }
-
114 
-
115  private:
-
116  friend class MediaStream; // Needed to access AddSample.
-
117 
-
118  // Add new media sample.
-
119  Status AddSample(const MediaStream* stream,
-
120  std::shared_ptr<MediaSample> sample);
-
121 
-
122  // Initialize the muxer.
-
123  virtual Status Initialize() = 0;
-
124 
-
125  // Final clean up.
-
126  virtual Status Finalize() = 0;
-
127 
-
128  // AddSample implementation.
-
129  virtual Status DoAddSample(const MediaStream* stream,
-
130  std::shared_ptr<MediaSample> sample) = 0;
-
131 
-
132  MuxerOptions options_;
-
133  bool initialized_;
-
134  std::vector<MediaStream*> streams_;
-
135  KeySource* encryption_key_source_;
-
136  uint32_t max_sd_pixels_;
-
137  uint32_t max_hd_pixels_;
-
138  uint32_t max_uhd1_pixels_;
-
139  double clear_lead_in_seconds_;
-
140  double crypto_period_duration_in_seconds_;
-
141  FourCC protection_scheme_;
-
142  bool cancelled_;
-
143 
-
144  std::unique_ptr<MuxerListener> muxer_listener_;
-
145  std::unique_ptr<ProgressListener> progress_listener_;
-
146  // An external injected clock, can be NULL.
-
147  base::Clock* clock_;
-
148 
-
149  DISALLOW_COPY_AND_ASSIGN(Muxer);
-
150 };
-
151 
-
152 } // namespace media
-
153 } // namespace shaka
-
154 
-
155 #endif // MEDIA_BASE_MUXER_H_
- +
17 #include "packager/media/base/media_handler.h"
+
18 #include "packager/media/base/muxer_options.h"
+
19 #include "packager/media/base/status.h"
+
20 #include "packager/media/event/muxer_listener.h"
+
21 #include "packager/media/event/progress_listener.h"
+
22 
+
23 namespace shaka {
+
24 namespace media {
+
25 
+
26 class KeySource;
+
27 class MediaSample;
+
28 class MediaStream;
+
29 
+
33 class Muxer : public MediaHandler {
+
34  public:
+
35  explicit Muxer(const MuxerOptions& options);
+
36  virtual ~Muxer();
+
37 
+
38  // TODO(kqyang): refactor max_sd_pixels through crypto_period_duration into
+
39  // an encapsulated EncryptionParams structure.
+
40 
+
61  void SetKeySource(KeySource* encryption_key_source,
+
62  uint32_t max_sd_pixels,
+
63  uint32_t max_hd_pixels,
+
64  uint32_t max_uhd1_pixels,
+
65  double clear_lead_in_seconds,
+
66  double crypto_period_duration_in_seconds,
+
67  FourCC protection_scheme);
+
68 
+
71  void Cancel();
+
72 
+
75  void SetMuxerListener(std::unique_ptr<MuxerListener> muxer_listener);
+
76 
+
79  void SetProgressListener(std::unique_ptr<ProgressListener> progress_listener);
+
80 
+
81  const std::vector<std::shared_ptr<StreamInfo>>& streams() const {
+
82  return streams_;
+
83  }
+
84 
+
91  void set_clock(base::Clock* clock) {
+
92  clock_ = clock;
+
93  }
+
94 
+
95  protected:
+
98  Status InitializeInternal() override { return Status::OK; }
+
99  Status Process(std::unique_ptr<StreamData> stream_data) override;
+
100  Status FlushStream(int input_stream_index) override { return Finalize(); }
+
102 
+
103  const MuxerOptions& options() const { return options_; }
+
104  KeySource* encryption_key_source() {
+
105  return encryption_key_source_;
+
106  }
+
107  uint32_t max_sd_pixels() const { return max_sd_pixels_; }
+
108  uint32_t max_hd_pixels() const { return max_hd_pixels_; }
+
109  uint32_t max_uhd1_pixels() const { return max_uhd1_pixels_; }
+
110  double clear_lead_in_seconds() const { return clear_lead_in_seconds_; }
+
111  double crypto_period_duration_in_seconds() const {
+
112  return crypto_period_duration_in_seconds_;
+
113  }
+
114  MuxerListener* muxer_listener() { return muxer_listener_.get(); }
+
115  ProgressListener* progress_listener() { return progress_listener_.get(); }
+
116  base::Clock* clock() { return clock_; }
+
117  FourCC protection_scheme() const { return protection_scheme_; }
+
118 
+
119  private:
+
120  // Initialize the muxer.
+
121  virtual Status InitializeMuxer() = 0;
+
122 
+
123  // Final clean up.
+
124  virtual Status Finalize() = 0;
+
125 
+
126  // AddSample implementation.
+
127  virtual Status DoAddSample(std::shared_ptr<MediaSample> sample) = 0;
+
128 
+
129  MuxerOptions options_;
+
130  std::vector<std::shared_ptr<StreamInfo>> streams_;
+
131  KeySource* encryption_key_source_;
+
132  uint32_t max_sd_pixels_;
+
133  uint32_t max_hd_pixels_;
+
134  uint32_t max_uhd1_pixels_;
+
135  double clear_lead_in_seconds_;
+
136  double crypto_period_duration_in_seconds_;
+
137  FourCC protection_scheme_;
+
138  bool cancelled_;
+
139 
+
140  std::unique_ptr<MuxerListener> muxer_listener_;
+
141  std::unique_ptr<ProgressListener> progress_listener_;
+
142  // An external injected clock, can be NULL.
+
143  base::Clock* clock_;
+
144 
+
145  DISALLOW_COPY_AND_ASSIGN(Muxer);
+
146 };
+
147 
+
148 } // namespace media
+
149 } // namespace shaka
+
150 
+
151 #endif // MEDIA_BASE_MUXER_H_
+ +
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
-
void AddStream(MediaStream *stream)
Add video/audio stream.
Definition: muxer.cc:50
-
Status Run()
Drive the remuxing from muxer side (pull).
Definition: muxer.cc:56
-
void SetProgressListener(std::unique_ptr< ProgressListener > progress_listener)
Definition: muxer.cc:98
- +
void SetProgressListener(std::unique_ptr< ProgressListener > progress_listener)
Definition: muxer.cc:56
+ +
Status InitializeInternal() override
Definition: muxer.h:98
+
Status FlushStream(int input_stream_index) override
Flush the stream at the specified input stream index.
Definition: muxer.h:100
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:30
-
void SetKeySource(KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)
Definition: muxer.cc:33
-
void set_clock(base::Clock *clock)
Definition: muxer.h:94
- -
void SetMuxerListener(std::unique_ptr< MuxerListener > muxer_listener)
Definition: muxer.cc:94
+
void SetKeySource(KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)
Definition: muxer.cc:31
+
Status Process(std::unique_ptr< StreamData > stream_data) override
Definition: muxer.cc:61
+
void set_clock(base::Clock *clock)
Definition: muxer.h:91
+
void SetMuxerListener(std::unique_ptr< MuxerListener > muxer_listener)
Definition: muxer.cc:52
diff --git a/docs/db/df8/classshaka_1_1media_1_1H265ByteToUnitStreamConverter.html b/docs/db/df8/classshaka_1_1media_1_1H265ByteToUnitStreamConverter.html index fb69857a25..01c0dd5df7 100644 --- a/docs/db/df8/classshaka_1_1media_1_1H265ByteToUnitStreamConverter.html +++ b/docs/db/df8/classshaka_1_1media_1_1H265ByteToUnitStreamConverter.html @@ -171,7 +171,7 @@ static 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 41fbad914e..bca4d7d5e0 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 03356f6d35..61ea77cae8 100644 --- a/docs/db/dfc/mpd__notify__muxer__listener_8cc_source.html +++ b/docs/db/dfc/mpd__notify__muxer__listener_8cc_source.html @@ -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 87f94a70c3..d4660cad7f 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 e16238b461..bcf08d3554 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 5aa0c41b4b..ba3f6e7910 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 95f2b5511c..99beaed445 100644 --- a/docs/dc/d06/classshaka_1_1media_1_1StreamInfo-members.html +++ b/docs/dc/d06/classshaka_1_1media_1_1StreamInfo-members.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d0b/classshaka_1_1media_1_1ESDescriptor-members.html b/docs/dc/d0b/classshaka_1_1media_1_1ESDescriptor-members.html index aa41bdbb8f..a403f0ecd8 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 04562aa54f..593084407c 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 6470ce0c55..cfc451b61e 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 @@ -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 cea3e1f7dd..18d03bfb98 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 82ef493a24..c12733b54e 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 7de3ddec31..e9b6cdddfe 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 f181142b2b..0801289382 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 89af7a6c58..1a39aa7d7f 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 7841d2e262..9cb58099d7 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 eb32956271..bdcf447bec 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 cb74f2fbad..770811ed83 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 730f01b5aa..715eb3df20 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 0dfa01ca5c..e5606b45ef 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 c1a9fb7f89..2b2a7b633c 100644 --- a/docs/dc/d51/h265__byte__to__unit__stream__converter_8cc_source.html +++ b/docs/dc/d51/h265__byte__to__unit__stream__converter_8cc_source.html @@ -226,7 +226,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/d52/decoding__time__iterator_8h_source.html b/docs/dc/d52/decoding__time__iterator_8h_source.html index 46cbf52b45..9630db4e8d 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 78c791964f..b066c1a3b0 100644 --- a/docs/dc/d53/webm_2segmenter_8cc_source.html +++ b/docs/dc/d53/webm_2segmenter_8cc_source.html @@ -98,452 +98,452 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
9 #include "packager/base/time/time.h"
10 #include "packager/media/base/audio_stream_info.h"
11 #include "packager/media/base/media_sample.h"
-
12 #include "packager/media/base/media_stream.h"
-
13 #include "packager/media/base/muxer_options.h"
-
14 #include "packager/media/base/muxer_util.h"
-
15 #include "packager/media/base/stream_info.h"
-
16 #include "packager/media/base/video_stream_info.h"
-
17 #include "packager/media/codecs/vp_codec_configuration_record.h"
-
18 #include "packager/media/event/muxer_listener.h"
-
19 #include "packager/media/event/progress_listener.h"
-
20 #include "packager/third_party/libwebm/src/mkvmuxerutil.hpp"
-
21 #include "packager/third_party/libwebm/src/webmids.hpp"
-
22 #include "packager/version/version.h"
-
23 
-
24 namespace shaka {
-
25 namespace media {
-
26 namespace webm {
-
27 namespace {
-
28 int64_t kTimecodeScale = 1000000;
-
29 int64_t kSecondsToNs = 1000000000L;
-
30 } // namespace
-
31 
-
32 Segmenter::Segmenter(const MuxerOptions& options)
-
33  : reference_frame_timestamp_(0),
-
34  options_(options),
-
35  clear_lead_(0),
-
36  enable_encryption_(false),
-
37  info_(NULL),
-
38  muxer_listener_(NULL),
-
39  progress_listener_(NULL),
-
40  progress_target_(0),
-
41  accumulated_progress_(0),
-
42  first_timestamp_(0),
-
43  sample_duration_(0),
-
44  segment_payload_pos_(0),
-
45  cluster_length_in_time_scale_(0),
-
46  segment_length_in_time_scale_(0),
-
47  track_id_(0) {}
-
48 
-
49 Segmenter::~Segmenter() {}
-
50 
-
51 Status Segmenter::Initialize(std::unique_ptr<MkvWriter> writer,
-
52  StreamInfo* info,
-
53  ProgressListener* progress_listener,
-
54  MuxerListener* muxer_listener,
-
55  KeySource* encryption_key_source,
-
56  uint32_t max_sd_pixels,
-
57  uint32_t max_hd_pixels,
-
58  uint32_t max_uhd1_pixels,
-
59  double clear_lead_in_seconds) {
-
60  muxer_listener_ = muxer_listener;
-
61  info_ = info;
-
62  clear_lead_ = clear_lead_in_seconds;
-
63 
-
64  // Use media duration as progress target.
-
65  progress_target_ = info_->duration();
-
66  progress_listener_ = progress_listener;
-
67 
-
68  segment_info_.Init();
-
69  segment_info_.set_timecode_scale(kTimecodeScale);
-
70 
-
71  const std::string version = GetPackagerVersion();
-
72  if (!version.empty()) {
-
73  segment_info_.set_writing_app(
-
74  (GetPackagerProjectUrl() + " version " + version).c_str());
-
75  }
-
76 
-
77  if (options().segment_template.empty()) {
-
78  // Set an initial duration so the duration element is written; will be
-
79  // overwritten at the end. This works because this is a float and floats
-
80  // are always the same size.
-
81  segment_info_.set_duration(1);
-
82  }
-
83 
-
84  Status status;
-
85  if (encryption_key_source) {
-
86  status = InitializeEncryptor(encryption_key_source,
-
87  max_sd_pixels,
-
88  max_hd_pixels,
-
89  max_uhd1_pixels);
-
90  if (!status.ok())
-
91  return status;
-
92  }
-
93 
-
94  // Create the track info.
-
95  switch (info_->stream_type()) {
-
96  case kStreamVideo:
-
97  status = CreateVideoTrack(static_cast<VideoStreamInfo*>(info_));
-
98  break;
-
99  case kStreamAudio:
-
100  status = CreateAudioTrack(static_cast<AudioStreamInfo*>(info_));
-
101  break;
-
102  default:
-
103  NOTIMPLEMENTED() << "Not implemented for stream type: "
-
104  << info_->stream_type();
-
105  status = Status(error::UNIMPLEMENTED, "Not implemented for stream type");
-
106  }
-
107  if (!status.ok())
-
108  return status;
-
109 
-
110  return DoInitialize(std::move(writer));
-
111 }
-
112 
- -
114  Status status = WriteFrame(true /* write_duration */);
-
115  if (!status.ok())
-
116  return status;
-
117 
-
118  uint64_t duration =
-
119  prev_sample_->pts() - first_timestamp_ + prev_sample_->duration();
-
120  segment_info_.set_duration(FromBMFFTimescale(duration));
-
121  return DoFinalize();
-
122 }
-
123 
-
124 Status Segmenter::AddSample(std::shared_ptr<MediaSample> sample) {
-
125  if (sample_duration_ == 0) {
-
126  first_timestamp_ = sample->pts();
-
127  sample_duration_ = sample->duration();
-
128  if (muxer_listener_)
-
129  muxer_listener_->OnSampleDurationReady(sample_duration_);
-
130  }
-
131 
-
132  UpdateProgress(sample->duration());
-
133 
-
134  // This writes frames in a delay. Meaning that the previous frame is written
-
135  // on this call to AddSample. The current frame is stored until the next
-
136  // call. This is done to determine which frame is the last in a Cluster.
-
137  // This first block determines if this is a new Cluster and writes the
-
138  // previous frame first before creating the new Cluster.
-
139 
-
140  Status status;
-
141  bool wrote_frame = false;
-
142  bool new_segment = false;
-
143  if (!cluster_) {
-
144  status = NewSegment(sample->pts());
-
145  new_segment = true;
-
146  // First frame, so no previous frame to write.
-
147  wrote_frame = true;
-
148  } else if (segment_length_in_time_scale_ >=
-
149  options_.segment_duration * info_->time_scale()) {
-
150  if (sample->is_key_frame() || !options_.segment_sap_aligned) {
-
151  status = WriteFrame(true /* write_duration */);
-
152  status.Update(NewSegment(sample->pts()));
-
153  new_segment = true;
-
154  segment_length_in_time_scale_ = 0;
-
155  cluster_length_in_time_scale_ = 0;
-
156  wrote_frame = true;
-
157  }
-
158  } else if (cluster_length_in_time_scale_ >=
-
159  options_.fragment_duration * info_->time_scale()) {
-
160  if (sample->is_key_frame() || !options_.fragment_sap_aligned) {
-
161  status = WriteFrame(true /* write_duration */);
-
162  status.Update(NewSubsegment(sample->pts()));
-
163  cluster_length_in_time_scale_ = 0;
-
164  wrote_frame = true;
-
165  }
-
166  }
-
167  if (!wrote_frame) {
-
168  status = WriteFrame(false /* write_duration */);
-
169  }
-
170  if (!status.ok())
-
171  return status;
-
172 
-
173  // Encrypt the frame.
-
174  if (encryptor_) {
-
175  // Don't enable encryption in the middle of a segment, i.e. only at the
-
176  // first frame of a segment.
-
177  if (new_segment && !enable_encryption_) {
-
178  if (sample->pts() - first_timestamp_ >=
-
179  clear_lead_ * info_->time_scale()) {
-
180  enable_encryption_ = true;
-
181  if (muxer_listener_)
-
182  muxer_listener_->OnEncryptionStart();
-
183  }
-
184  }
-
185 
-
186  status = encryptor_->EncryptFrame(sample, enable_encryption_);
-
187  if (!status.ok()) {
-
188  LOG(ERROR) << "Error encrypting frame.";
-
189  return status;
-
190  }
-
191  }
-
192 
-
193  // Add the sample to the durations even though we have not written the frame
-
194  // yet. This is needed to make sure we split Clusters at the correct point.
-
195  // These are only used in this method.
-
196  cluster_length_in_time_scale_ += sample->duration();
-
197  segment_length_in_time_scale_ += sample->duration();
-
198 
-
199  prev_sample_ = sample;
-
200  return Status::OK;
-
201 }
-
202 
-
203 float Segmenter::GetDuration() const {
-
204  return static_cast<float>(segment_info_.duration()) *
-
205  segment_info_.timecode_scale() / kSecondsToNs;
-
206 }
-
207 
-
208 uint64_t Segmenter::FromBMFFTimescale(uint64_t time_timescale) {
-
209  // Convert the time from BMFF time_code to WebM timecode scale.
-
210  const int64_t time_ns =
-
211  kSecondsToNs * time_timescale / info_->time_scale();
-
212  return time_ns / segment_info_.timecode_scale();
-
213 }
-
214 
-
215 uint64_t Segmenter::FromWebMTimecode(uint64_t time_webm_timecode) {
-
216  // Convert the time to BMFF time_code from WebM timecode scale.
-
217  const int64_t time_ns = time_webm_timecode * segment_info_.timecode_scale();
-
218  return time_ns * info_->time_scale() / kSecondsToNs;
-
219 }
-
220 
-
221 Status Segmenter::WriteSegmentHeader(uint64_t file_size, MkvWriter* writer) {
-
222  Status error_status(error::FILE_FAILURE, "Error writing segment header.");
-
223 
-
224  if (!WriteEbmlHeader(writer))
-
225  return error_status;
-
226 
-
227  if (WriteID(writer, mkvmuxer::kMkvSegment) != 0)
-
228  return error_status;
-
229 
-
230  const uint64_t segment_size_size = 8;
-
231  segment_payload_pos_ = writer->Position() + segment_size_size;
-
232  if (file_size > 0) {
-
233  // We want the size of the segment element, so subtract the header.
-
234  if (WriteUIntSize(writer, file_size - segment_payload_pos_,
-
235  segment_size_size) != 0)
-
236  return error_status;
-
237  if (!seek_head_.Write(writer))
-
238  return error_status;
-
239  } else {
-
240  if (SerializeInt(writer, mkvmuxer::kEbmlUnknownValue, segment_size_size) !=
-
241  0)
-
242  return error_status;
-
243  // We don't know the header size, so write a placeholder.
-
244  if (!seek_head_.WriteVoid(writer))
-
245  return error_status;
-
246  }
-
247 
-
248  seek_head_.set_info_pos(writer->Position() - segment_payload_pos_);
-
249  if (!segment_info_.Write(writer))
-
250  return error_status;
-
251 
-
252  seek_head_.set_tracks_pos(writer->Position() - segment_payload_pos_);
-
253  if (!tracks_.Write(writer))
-
254  return error_status;
-
255 
-
256  return Status::OK;
-
257 }
-
258 
-
259 Status Segmenter::SetCluster(uint64_t start_webm_timecode,
-
260  uint64_t position,
-
261  MkvWriter* writer) {
-
262  const uint64_t scale = segment_info_.timecode_scale();
-
263  cluster_.reset(new mkvmuxer::Cluster(start_webm_timecode, position, scale));
-
264  cluster_->Init(writer);
-
265  return Status::OK;
-
266 }
-
267 
-
268 void Segmenter::UpdateProgress(uint64_t progress) {
-
269  accumulated_progress_ += progress;
-
270  if (!progress_listener_ || progress_target_ == 0)
-
271  return;
-
272  // It might happen that accumulated progress exceeds progress_target due to
-
273  // computation errors, e.g. rounding error. Cap it so it never reports > 100%
-
274  // progress.
-
275  if (accumulated_progress_ >= progress_target_) {
-
276  progress_listener_->OnProgress(1.0);
-
277  } else {
-
278  progress_listener_->OnProgress(static_cast<double>(accumulated_progress_) /
-
279  progress_target_);
-
280  }
-
281 }
-
282 
-
283 Status Segmenter::CreateVideoTrack(VideoStreamInfo* info) {
-
284  // The seed is only used to create a UID which we overwrite later.
-
285  unsigned int seed = 0;
-
286  mkvmuxer::VideoTrack* track = new mkvmuxer::VideoTrack(&seed);
-
287  if (!track)
-
288  return Status(error::INTERNAL_ERROR, "Failed to create video track.");
-
289 
-
290  if (info->codec() == kCodecVP8) {
-
291  track->set_codec_id(mkvmuxer::Tracks::kVp8CodecId);
-
292  } else if (info->codec() == kCodecVP9) {
-
293  track->set_codec_id(mkvmuxer::Tracks::kVp9CodecId);
-
294 
-
295  // The |StreamInfo::codec_config| field is stored using the MP4 format; we
-
296  // need to convert it to the WebM format.
-
297  VPCodecConfigurationRecord vp_config;
-
298  if (!vp_config.ParseMP4(info->codec_config())) {
-
299  return Status(error::INTERNAL_ERROR,
-
300  "Unable to parse VP9 codec configuration");
-
301  }
-
302 
-
303  std::vector<uint8_t> codec_config;
-
304  vp_config.WriteWebM(&codec_config);
-
305  if (!track->SetCodecPrivate(codec_config.data(), codec_config.size())) {
-
306  return Status(error::INTERNAL_ERROR,
-
307  "Private codec data required for VP9 streams");
-
308  }
-
309  } else {
-
310  LOG(ERROR) << "Only VP8 and VP9 video codecs are supported.";
-
311  return Status(error::UNIMPLEMENTED,
-
312  "Only VP8 and VP9 video codecs are supported.");
-
313  }
-
314 
-
315  track->set_uid(info->track_id());
-
316  if (!info->language().empty())
-
317  track->set_language(info->language().c_str());
-
318  track->set_type(mkvmuxer::Tracks::kVideo);
-
319  track->set_width(info->width());
-
320  track->set_height(info->height());
-
321  track->set_display_height(info->height());
-
322  track->set_display_width(info->width() * info->pixel_width() /
-
323  info->pixel_height());
-
324 
-
325  if (encryptor_)
-
326  encryptor_->AddTrackInfo(track);
-
327 
-
328  tracks_.AddTrack(track, info->track_id());
-
329  track_id_ = track->number();
-
330  return Status::OK;
-
331 }
-
332 
-
333 Status Segmenter::CreateAudioTrack(AudioStreamInfo* info) {
-
334  // The seed is only used to create a UID which we overwrite later.
-
335  unsigned int seed = 0;
-
336  mkvmuxer::AudioTrack* track = new mkvmuxer::AudioTrack(&seed);
-
337  if (!track)
-
338  return Status(error::INTERNAL_ERROR, "Failed to create audio track.");
-
339 
-
340  if (info->codec() == kCodecOpus) {
-
341  track->set_codec_id(mkvmuxer::Tracks::kOpusCodecId);
-
342  } else if (info->codec() == kCodecVorbis) {
-
343  track->set_codec_id(mkvmuxer::Tracks::kVorbisCodecId);
-
344  } else {
-
345  LOG(ERROR) << "Only Vorbis and Opus audio codec is supported.";
-
346  return Status(error::UNIMPLEMENTED,
-
347  "Only Vorbis and Opus audio codecs are supported.");
-
348  }
-
349  if (!track->SetCodecPrivate(info->codec_config().data(),
-
350  info->codec_config().size())) {
-
351  return Status(error::INTERNAL_ERROR,
-
352  "Private codec data required for audio streams");
-
353  }
-
354 
-
355  track->set_uid(info->track_id());
-
356  if (!info->language().empty())
-
357  track->set_language(info->language().c_str());
-
358  track->set_type(mkvmuxer::Tracks::kAudio);
-
359  track->set_sample_rate(info->sampling_frequency());
-
360  track->set_channels(info->num_channels());
-
361  track->set_seek_pre_roll(info->seek_preroll_ns());
-
362  track->set_codec_delay(info->codec_delay_ns());
-
363 
-
364  if (encryptor_)
-
365  encryptor_->AddTrackInfo(track);
-
366 
-
367  tracks_.AddTrack(track, info->track_id());
-
368  track_id_ = track->number();
-
369  return Status::OK;
-
370 }
-
371 
-
372 Status Segmenter::InitializeEncryptor(KeySource* key_source,
-
373  uint32_t max_sd_pixels,
-
374  uint32_t max_hd_pixels,
-
375  uint32_t max_uhd1_pixels) {
-
376  encryptor_.reset(new Encryptor());
-
377  const KeySource::TrackType track_type =
-
378  GetTrackTypeForEncryption(*info_, max_sd_pixels, max_hd_pixels,
-
379  max_uhd1_pixels);
-
380  if (track_type == KeySource::TrackType::TRACK_TYPE_UNKNOWN)
-
381  return Status::OK;
-
382  return encryptor_->Initialize(muxer_listener_, track_type, info_->codec(),
-
383  key_source, options_.webm_subsample_encryption);
-
384 }
-
385 
-
386 Status Segmenter::WriteFrame(bool write_duration) {
-
387  // Create a frame manually so we can create non-SimpleBlock frames. This
-
388  // is required to allow the frame duration to be added. If the duration
-
389  // is not set, then a SimpleBlock will still be written.
-
390  mkvmuxer::Frame frame;
-
391 
-
392  if (!frame.Init(prev_sample_->data(), prev_sample_->data_size())) {
-
393  return Status(error::MUXER_FAILURE,
-
394  "Error adding sample to segment: Frame::Init failed");
-
395  }
-
396 
-
397  if (write_duration) {
-
398  const uint64_t duration_ns =
-
399  prev_sample_->duration() * kSecondsToNs / info_->time_scale();
-
400  frame.set_duration(duration_ns);
-
401  }
-
402  frame.set_is_key(prev_sample_->is_key_frame());
-
403  frame.set_timestamp(prev_sample_->pts() * kSecondsToNs / info_->time_scale());
-
404  frame.set_track_number(track_id_);
-
405 
-
406  if (prev_sample_->side_data_size() > 0) {
-
407  uint64_t block_add_id;
-
408  // First 8 bytes of side_data is the BlockAddID element's value, which is
-
409  // done to mimic ffmpeg behavior. See webm_cluster_parser.cc for details.
-
410  CHECK_GT(prev_sample_->side_data_size(), sizeof(block_add_id));
-
411  memcpy(&block_add_id, prev_sample_->side_data(), sizeof(block_add_id));
-
412  if (!frame.AddAdditionalData(
-
413  prev_sample_->side_data() + sizeof(block_add_id),
-
414  prev_sample_->side_data_size() - sizeof(block_add_id),
-
415  block_add_id)) {
-
416  return Status(
-
417  error::MUXER_FAILURE,
-
418  "Error adding sample to segment: Frame::AddAditionalData Failed");
-
419  }
-
420  }
-
421 
-
422  if (!prev_sample_->is_key_frame() && !frame.CanBeSimpleBlock()) {
-
423  const int64_t timestamp_ns =
-
424  reference_frame_timestamp_ * kSecondsToNs / info_->time_scale();
-
425  frame.set_reference_block_timestamp(timestamp_ns);
-
426  }
-
427 
-
428  // GetRelativeTimecode will return -1 if the relative timecode is too large
-
429  // to fit in the frame.
-
430  if (cluster_->GetRelativeTimecode(frame.timestamp() /
-
431  cluster_->timecode_scale()) < 0) {
-
432  const double segment_duration =
-
433  static_cast<double>(frame.timestamp()) / kSecondsToNs;
-
434  LOG(ERROR) << "Error adding sample to segment: segment too large, "
-
435  << segment_duration << " seconds.";
-
436  return Status(error::MUXER_FAILURE,
-
437  "Error adding sample to segment: segment too large");
-
438  }
-
439 
-
440  if (!cluster_->AddFrame(&frame)) {
-
441  return Status(error::MUXER_FAILURE,
-
442  "Error adding sample to segment: Cluster::AddFrame failed");
-
443  }
-
444 
-
445  // A reference frame is needed for non-keyframes. Having a reference to the
-
446  // previous block is good enough.
-
447  // See libwebm Segment::AddGenericFrame
-
448  reference_frame_timestamp_ = prev_sample_->pts();
-
449  return Status::OK;
-
450 }
-
451 
-
452 } // namespace webm
-
453 } // namespace media
-
454 } // namespace shaka
+
12 #include "packager/media/base/muxer_options.h"
+
13 #include "packager/media/base/muxer_util.h"
+
14 #include "packager/media/base/stream_info.h"
+
15 #include "packager/media/base/video_stream_info.h"
+
16 #include "packager/media/codecs/vp_codec_configuration_record.h"
+
17 #include "packager/media/event/muxer_listener.h"
+
18 #include "packager/media/event/progress_listener.h"
+
19 #include "packager/third_party/libwebm/src/mkvmuxerutil.hpp"
+
20 #include "packager/third_party/libwebm/src/webmids.hpp"
+
21 #include "packager/version/version.h"
+
22 
+
23 namespace shaka {
+
24 namespace media {
+
25 namespace webm {
+
26 namespace {
+
27 int64_t kTimecodeScale = 1000000;
+
28 int64_t kSecondsToNs = 1000000000L;
+
29 } // namespace
+
30 
+
31 Segmenter::Segmenter(const MuxerOptions& options)
+
32  : reference_frame_timestamp_(0),
+
33  options_(options),
+
34  clear_lead_(0),
+
35  enable_encryption_(false),
+
36  info_(NULL),
+
37  muxer_listener_(NULL),
+
38  progress_listener_(NULL),
+
39  progress_target_(0),
+
40  accumulated_progress_(0),
+
41  first_timestamp_(0),
+
42  sample_duration_(0),
+
43  segment_payload_pos_(0),
+
44  cluster_length_in_time_scale_(0),
+
45  segment_length_in_time_scale_(0),
+
46  track_id_(0) {}
+
47 
+
48 Segmenter::~Segmenter() {}
+
49 
+
50 Status Segmenter::Initialize(std::unique_ptr<MkvWriter> writer,
+
51  StreamInfo* info,
+
52  ProgressListener* progress_listener,
+
53  MuxerListener* muxer_listener,
+
54  KeySource* encryption_key_source,
+
55  uint32_t max_sd_pixels,
+
56  uint32_t max_hd_pixels,
+
57  uint32_t max_uhd1_pixels,
+
58  double clear_lead_in_seconds) {
+
59  muxer_listener_ = muxer_listener;
+
60  info_ = info;
+
61  clear_lead_ = clear_lead_in_seconds;
+
62 
+
63  // Use media duration as progress target.
+
64  progress_target_ = info_->duration();
+
65  progress_listener_ = progress_listener;
+
66 
+
67  segment_info_.Init();
+
68  segment_info_.set_timecode_scale(kTimecodeScale);
+
69 
+
70  const std::string version = GetPackagerVersion();
+
71  if (!version.empty()) {
+
72  segment_info_.set_writing_app(
+
73  (GetPackagerProjectUrl() + " version " + version).c_str());
+
74  }
+
75 
+
76  if (options().segment_template.empty()) {
+
77  // Set an initial duration so the duration element is written; will be
+
78  // overwritten at the end. This works because this is a float and floats
+
79  // are always the same size.
+
80  segment_info_.set_duration(1);
+
81  }
+
82 
+
83  Status status;
+
84  if (encryption_key_source) {
+
85  status = InitializeEncryptor(encryption_key_source,
+
86  max_sd_pixels,
+
87  max_hd_pixels,
+
88  max_uhd1_pixels);
+
89  if (!status.ok())
+
90  return status;
+
91  }
+
92 
+
93  // Create the track info.
+
94  switch (info_->stream_type()) {
+
95  case kStreamVideo:
+
96  status = CreateVideoTrack(static_cast<VideoStreamInfo*>(info_));
+
97  break;
+
98  case kStreamAudio:
+
99  status = CreateAudioTrack(static_cast<AudioStreamInfo*>(info_));
+
100  break;
+
101  default:
+
102  NOTIMPLEMENTED() << "Not implemented for stream type: "
+
103  << info_->stream_type();
+
104  status = Status(error::UNIMPLEMENTED, "Not implemented for stream type");
+
105  }
+
106  if (!status.ok())
+
107  return status;
+
108 
+
109  return DoInitialize(std::move(writer));
+
110 }
+
111 
+ +
113  Status status = WriteFrame(true /* write_duration */);
+
114  if (!status.ok())
+
115  return status;
+
116 
+
117  uint64_t duration =
+
118  prev_sample_->pts() - first_timestamp_ + prev_sample_->duration();
+
119  segment_info_.set_duration(FromBMFFTimescale(duration));
+
120  return DoFinalize();
+
121 }
+
122 
+
123 Status Segmenter::AddSample(std::shared_ptr<MediaSample> sample) {
+
124  if (sample_duration_ == 0) {
+
125  first_timestamp_ = sample->pts();
+
126  sample_duration_ = sample->duration();
+
127  if (muxer_listener_)
+
128  muxer_listener_->OnSampleDurationReady(sample_duration_);
+
129  }
+
130 
+
131  UpdateProgress(sample->duration());
+
132 
+
133  // This writes frames in a delay. Meaning that the previous frame is written
+
134  // on this call to AddSample. The current frame is stored until the next
+
135  // call. This is done to determine which frame is the last in a Cluster.
+
136  // This first block determines if this is a new Cluster and writes the
+
137  // previous frame first before creating the new Cluster.
+
138 
+
139  Status status;
+
140  bool wrote_frame = false;
+
141  bool new_segment = false;
+
142  if (!cluster_) {
+
143  status = NewSegment(sample->pts());
+
144  new_segment = true;
+
145  // First frame, so no previous frame to write.
+
146  wrote_frame = true;
+
147  } else if (segment_length_in_time_scale_ >=
+
148  options_.segment_duration * info_->time_scale()) {
+
149  if (sample->is_key_frame() || !options_.segment_sap_aligned) {
+
150  status = WriteFrame(true /* write_duration */);
+
151  status.Update(NewSegment(sample->pts()));
+
152  new_segment = true;
+
153  segment_length_in_time_scale_ = 0;
+
154  cluster_length_in_time_scale_ = 0;
+
155  wrote_frame = true;
+
156  }
+
157  } else if (cluster_length_in_time_scale_ >=
+
158  options_.fragment_duration * info_->time_scale()) {
+
159  if (sample->is_key_frame() || !options_.fragment_sap_aligned) {
+
160  status = WriteFrame(true /* write_duration */);
+
161  status.Update(NewSubsegment(sample->pts()));
+
162  cluster_length_in_time_scale_ = 0;
+
163  wrote_frame = true;
+
164  }
+
165  }
+
166  if (!wrote_frame) {
+
167  status = WriteFrame(false /* write_duration */);
+
168  }
+
169  if (!status.ok())
+
170  return status;
+
171 
+
172  // Encrypt the frame.
+
173  if (encryptor_) {
+
174  // Don't enable encryption in the middle of a segment, i.e. only at the
+
175  // first frame of a segment.
+
176  if (new_segment && !enable_encryption_) {
+
177  if (sample->pts() - first_timestamp_ >=
+
178  clear_lead_ * info_->time_scale()) {
+
179  enable_encryption_ = true;
+
180  if (muxer_listener_)
+
181  muxer_listener_->OnEncryptionStart();
+
182  }
+
183  }
+
184 
+
185  status = encryptor_->EncryptFrame(sample, enable_encryption_);
+
186  if (!status.ok()) {
+
187  LOG(ERROR) << "Error encrypting frame.";
+
188  return status;
+
189  }
+
190  }
+
191 
+
192  // Add the sample to the durations even though we have not written the frame
+
193  // yet. This is needed to make sure we split Clusters at the correct point.
+
194  // These are only used in this method.
+
195  cluster_length_in_time_scale_ += sample->duration();
+
196  segment_length_in_time_scale_ += sample->duration();
+
197 
+
198  prev_sample_ = sample;
+
199  return Status::OK;
+
200 }
+
201 
+
202 float Segmenter::GetDuration() const {
+
203  return static_cast<float>(segment_info_.duration()) *
+
204  segment_info_.timecode_scale() / kSecondsToNs;
+
205 }
+
206 
+
207 uint64_t Segmenter::FromBMFFTimescale(uint64_t time_timescale) {
+
208  // Convert the time from BMFF time_code to WebM timecode scale.
+
209  const int64_t time_ns =
+
210  kSecondsToNs * time_timescale / info_->time_scale();
+
211  return time_ns / segment_info_.timecode_scale();
+
212 }
+
213 
+
214 uint64_t Segmenter::FromWebMTimecode(uint64_t time_webm_timecode) {
+
215  // Convert the time to BMFF time_code from WebM timecode scale.
+
216  const int64_t time_ns = time_webm_timecode * segment_info_.timecode_scale();
+
217  return time_ns * info_->time_scale() / kSecondsToNs;
+
218 }
+
219 
+
220 Status Segmenter::WriteSegmentHeader(uint64_t file_size, MkvWriter* writer) {
+
221  Status error_status(error::FILE_FAILURE, "Error writing segment header.");
+
222 
+
223  if (!WriteEbmlHeader(writer))
+
224  return error_status;
+
225 
+
226  if (WriteID(writer, mkvmuxer::kMkvSegment) != 0)
+
227  return error_status;
+
228 
+
229  const uint64_t segment_size_size = 8;
+
230  segment_payload_pos_ = writer->Position() + segment_size_size;
+
231  if (file_size > 0) {
+
232  // We want the size of the segment element, so subtract the header.
+
233  if (WriteUIntSize(writer, file_size - segment_payload_pos_,
+
234  segment_size_size) != 0)
+
235  return error_status;
+
236  if (!seek_head_.Write(writer))
+
237  return error_status;
+
238  } else {
+
239  if (SerializeInt(writer, mkvmuxer::kEbmlUnknownValue, segment_size_size) !=
+
240  0)
+
241  return error_status;
+
242  // We don't know the header size, so write a placeholder.
+
243  if (!seek_head_.WriteVoid(writer))
+
244  return error_status;
+
245  }
+
246 
+
247  seek_head_.set_info_pos(writer->Position() - segment_payload_pos_);
+
248  if (!segment_info_.Write(writer))
+
249  return error_status;
+
250 
+
251  seek_head_.set_tracks_pos(writer->Position() - segment_payload_pos_);
+
252  if (!tracks_.Write(writer))
+
253  return error_status;
+
254 
+
255  return Status::OK;
+
256 }
+
257 
+
258 Status Segmenter::SetCluster(uint64_t start_webm_timecode,
+
259  uint64_t position,
+
260  MkvWriter* writer) {
+
261  const uint64_t scale = segment_info_.timecode_scale();
+
262  cluster_.reset(new mkvmuxer::Cluster(start_webm_timecode, position, scale));
+
263  cluster_->Init(writer);
+
264  return Status::OK;
+
265 }
+
266 
+
267 void Segmenter::UpdateProgress(uint64_t progress) {
+
268  accumulated_progress_ += progress;
+
269  if (!progress_listener_ || progress_target_ == 0)
+
270  return;
+
271  // It might happen that accumulated progress exceeds progress_target due to
+
272  // computation errors, e.g. rounding error. Cap it so it never reports > 100%
+
273  // progress.
+
274  if (accumulated_progress_ >= progress_target_) {
+
275  progress_listener_->OnProgress(1.0);
+
276  } else {
+
277  progress_listener_->OnProgress(static_cast<double>(accumulated_progress_) /
+
278  progress_target_);
+
279  }
+
280 }
+
281 
+
282 Status Segmenter::CreateVideoTrack(VideoStreamInfo* info) {
+
283  // The seed is only used to create a UID which we overwrite later.
+
284  unsigned int seed = 0;
+
285  mkvmuxer::VideoTrack* track = new mkvmuxer::VideoTrack(&seed);
+
286  if (!track)
+
287  return Status(error::INTERNAL_ERROR, "Failed to create video track.");
+
288 
+
289  if (info->codec() == kCodecVP8) {
+
290  track->set_codec_id(mkvmuxer::Tracks::kVp8CodecId);
+
291  } else if (info->codec() == kCodecVP9) {
+
292  track->set_codec_id(mkvmuxer::Tracks::kVp9CodecId);
+
293 
+
294  // The |StreamInfo::codec_config| field is stored using the MP4 format; we
+
295  // need to convert it to the WebM format.
+
296  VPCodecConfigurationRecord vp_config;
+
297  if (!vp_config.ParseMP4(info->codec_config())) {
+
298  return Status(error::INTERNAL_ERROR,
+
299  "Unable to parse VP9 codec configuration");
+
300  }
+
301 
+
302  std::vector<uint8_t> codec_config;
+
303  vp_config.WriteWebM(&codec_config);
+
304  if (!track->SetCodecPrivate(codec_config.data(), codec_config.size())) {
+
305  return Status(error::INTERNAL_ERROR,
+
306  "Private codec data required for VP9 streams");
+
307  }
+
308  } else {
+
309  LOG(ERROR) << "Only VP8 and VP9 video codecs are supported.";
+
310  return Status(error::UNIMPLEMENTED,
+
311  "Only VP8 and VP9 video codecs are supported.");
+
312  }
+
313 
+
314  track->set_uid(info->track_id());
+
315  if (!info->language().empty())
+
316  track->set_language(info->language().c_str());
+
317  track->set_type(mkvmuxer::Tracks::kVideo);
+
318  track->set_width(info->width());
+
319  track->set_height(info->height());
+
320  track->set_display_height(info->height());
+
321  track->set_display_width(info->width() * info->pixel_width() /
+
322  info->pixel_height());
+
323 
+
324  if (encryptor_)
+
325  encryptor_->AddTrackInfo(track);
+
326 
+
327  tracks_.AddTrack(track, info->track_id());
+
328  track_id_ = track->number();
+
329  return Status::OK;
+
330 }
+
331 
+
332 Status Segmenter::CreateAudioTrack(AudioStreamInfo* info) {
+
333  // The seed is only used to create a UID which we overwrite later.
+
334  unsigned int seed = 0;
+
335  mkvmuxer::AudioTrack* track = new mkvmuxer::AudioTrack(&seed);
+
336  if (!track)
+
337  return Status(error::INTERNAL_ERROR, "Failed to create audio track.");
+
338 
+
339  if (info->codec() == kCodecOpus) {
+
340  track->set_codec_id(mkvmuxer::Tracks::kOpusCodecId);
+
341  } else if (info->codec() == kCodecVorbis) {
+
342  track->set_codec_id(mkvmuxer::Tracks::kVorbisCodecId);
+
343  } else {
+
344  LOG(ERROR) << "Only Vorbis and Opus audio codec is supported.";
+
345  return Status(error::UNIMPLEMENTED,
+
346  "Only Vorbis and Opus audio codecs are supported.");
+
347  }
+
348  if (!track->SetCodecPrivate(info->codec_config().data(),
+
349  info->codec_config().size())) {
+
350  return Status(error::INTERNAL_ERROR,
+
351  "Private codec data required for audio streams");
+
352  }
+
353 
+
354  track->set_uid(info->track_id());
+
355  if (!info->language().empty())
+
356  track->set_language(info->language().c_str());
+
357  track->set_type(mkvmuxer::Tracks::kAudio);
+
358  track->set_sample_rate(info->sampling_frequency());
+
359  track->set_channels(info->num_channels());
+
360  track->set_seek_pre_roll(info->seek_preroll_ns());
+
361  track->set_codec_delay(info->codec_delay_ns());
+
362 
+
363  if (encryptor_)
+
364  encryptor_->AddTrackInfo(track);
+
365 
+
366  tracks_.AddTrack(track, info->track_id());
+
367  track_id_ = track->number();
+
368  return Status::OK;
+
369 }
+
370 
+
371 Status Segmenter::InitializeEncryptor(KeySource* key_source,
+
372  uint32_t max_sd_pixels,
+
373  uint32_t max_hd_pixels,
+
374  uint32_t max_uhd1_pixels) {
+
375  encryptor_.reset(new Encryptor());
+
376  const KeySource::TrackType track_type =
+
377  GetTrackTypeForEncryption(*info_, max_sd_pixels, max_hd_pixels,
+
378  max_uhd1_pixels);
+
379  if (track_type == KeySource::TrackType::TRACK_TYPE_UNKNOWN)
+
380  return Status::OK;
+
381  return encryptor_->Initialize(muxer_listener_, track_type, info_->codec(),
+
382  key_source, options_.webm_subsample_encryption);
+
383 }
+
384 
+
385 Status Segmenter::WriteFrame(bool write_duration) {
+
386  // Create a frame manually so we can create non-SimpleBlock frames. This
+
387  // is required to allow the frame duration to be added. If the duration
+
388  // is not set, then a SimpleBlock will still be written.
+
389  mkvmuxer::Frame frame;
+
390 
+
391  if (!frame.Init(prev_sample_->data(), prev_sample_->data_size())) {
+
392  return Status(error::MUXER_FAILURE,
+
393  "Error adding sample to segment: Frame::Init failed");
+
394  }
+
395 
+
396  if (write_duration) {
+
397  const uint64_t duration_ns =
+
398  prev_sample_->duration() * kSecondsToNs / info_->time_scale();
+
399  frame.set_duration(duration_ns);
+
400  }
+
401  frame.set_is_key(prev_sample_->is_key_frame());
+
402  frame.set_timestamp(prev_sample_->pts() * kSecondsToNs / info_->time_scale());
+
403  frame.set_track_number(track_id_);
+
404 
+
405  if (prev_sample_->side_data_size() > 0) {
+
406  uint64_t block_add_id;
+
407  // First 8 bytes of side_data is the BlockAddID element's value, which is
+
408  // done to mimic ffmpeg behavior. See webm_cluster_parser.cc for details.
+
409  CHECK_GT(prev_sample_->side_data_size(), sizeof(block_add_id));
+
410  memcpy(&block_add_id, prev_sample_->side_data(), sizeof(block_add_id));
+
411  if (!frame.AddAdditionalData(
+
412  prev_sample_->side_data() + sizeof(block_add_id),
+
413  prev_sample_->side_data_size() - sizeof(block_add_id),
+
414  block_add_id)) {
+
415  return Status(
+
416  error::MUXER_FAILURE,
+
417  "Error adding sample to segment: Frame::AddAditionalData Failed");
+
418  }
+
419  }
+
420 
+
421  if (!prev_sample_->is_key_frame() && !frame.CanBeSimpleBlock()) {
+
422  const int64_t timestamp_ns =
+
423  reference_frame_timestamp_ * kSecondsToNs / info_->time_scale();
+
424  frame.set_reference_block_timestamp(timestamp_ns);
+
425  }
+
426 
+
427  // GetRelativeTimecode will return -1 if the relative timecode is too large
+
428  // to fit in the frame.
+
429  if (cluster_->GetRelativeTimecode(frame.timestamp() /
+
430  cluster_->timecode_scale()) < 0) {
+
431  const double segment_duration =
+
432  static_cast<double>(frame.timestamp()) / kSecondsToNs;
+
433  LOG(ERROR) << "Error adding sample to segment: segment too large, "
+
434  << segment_duration << " seconds.";
+
435  return Status(error::MUXER_FAILURE,
+
436  "Error adding sample to segment: segment too large");
+
437  }
+
438 
+
439  if (!cluster_->AddFrame(&frame)) {
+
440  return Status(error::MUXER_FAILURE,
+
441  "Error adding sample to segment: Cluster::AddFrame failed");
+
442  }
+
443 
+
444  // A reference frame is needed for non-keyframes. Having a reference to the
+
445  // previous block is good enough.
+
446  // See libwebm Segment::AddGenericFrame
+
447  reference_frame_timestamp_ = prev_sample_->pts();
+
448  return Status::OK;
+
449 }
+
450 
+
451 } // namespace webm
+
452 } // namespace media
+
453 } // namespace shaka
Abstract class holds stream information.
Definition: stream_info.h:57
-
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:390
+
Status AddSample(const StreamInfo &stream_Info, std::shared_ptr< MediaSample > sample)
Definition: segmenter.cc:318
+
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:383
virtual void OnSampleDurationReady(uint32_t sample_duration)=0
Class for parsing or writing VP codec configuration record.
virtual void OnEncryptionStart()=0
@@ -551,25 +551,24 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
This class listens to progress updates events.
mkvmuxer::int64 Position() const override
Definition: mkv_writer.cc:71
-
Status Initialize(const std::vector< MediaStream * > &streams, MuxerListener *muxer_listener, ProgressListener *progress_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)
Definition: segmenter.cc:165
void WriteWebM(std::vector< uint8_t > *data) const
An implementation of IMkvWriter using our File type.
Definition: mkv_writer.h:21
bool ParseMP4(const std::vector< uint8_t > &data)
- +
Status Initialize(const std::vector< std::shared_ptr< StreamInfo >> &streams, MuxerListener *muxer_listener, ProgressListener *progress_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)
Definition: segmenter.cc:164
+
virtual void OnProgress(double progress)=0
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:30
-
double GetDuration() const
Definition: segmenter.cc:381
+
double GetDuration() const
Definition: segmenter.cc:374
Holds video stream information.
-
Status AddSample(const MediaStream *stream, std::shared_ptr< MediaSample > sample)
Definition: segmenter.cc:323
diff --git a/docs/dc/d54/structshaka_1_1media_1_1H264DecRefPicMarking.html b/docs/dc/d54/structshaka_1_1media_1_1H264DecRefPicMarking.html index 0b05ed837c..f1368a0cb9 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 c9208388d7..def86dfd33 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 c948619c94..23c639d1a9 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 f0018aa53c..9c8a92be8c 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 7ac95b2731..85b95a78bd 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 5ba52ee830..28f08b6fe1 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 281da1b53b..2ab42f4400 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 afba3e44eb..b60c3234c3 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 f6008ee2cd..970a4b758a 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 1921eea5c1..757b4cc2c2 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 4a4cfa2132..348d828c4f 100644 --- a/docs/dc/d8f/structshaka_1_1media_1_1mp4_1_1MovieFragmentHeader.html +++ b/docs/dc/d8f/structshaka_1_1media_1_1mp4_1_1MovieFragmentHeader.html @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/dc/da0/structshaka_1_1media_1_1mp4_1_1DTSSpecific.html b/docs/dc/da0/structshaka_1_1media_1_1mp4_1_1DTSSpecific.html index c7a1b3d211..d7e0974664 100644 --- a/docs/dc/da0/structshaka_1_1media_1_1mp4_1_1DTSSpecific.html +++ b/docs/dc/da0/structshaka_1_1media_1_1mp4_1_1DTSSpecific.html @@ -185,7 +185,7 @@ Additional Inherited Members diff --git a/docs/dc/da1/classshaka_1_1MpdBuilder.html b/docs/dc/da1/classshaka_1_1MpdBuilder.html index 94ec0f8859..4d3e6bf959 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 556a3547f5..ae7aaed47c 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 f59b4e6829..c013feeca7 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 6d837114a5..36e3ac38f4 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 492182b80b..5098d2cda0 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 100ebe7426..c7f174f427 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 272a8218d3..9af5e237fd 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 ddd3144cfd..8cb4fdbe09 100644 --- a/docs/dc/ddf/structshaka_1_1media_1_1mp4_1_1Media.html +++ b/docs/dc/ddf/structshaka_1_1media_1_1mp4_1_1Media.html @@ -179,7 +179,7 @@ Additional Inherited Members diff --git a/docs/dc/de1/structshaka_1_1SegmentInfo.html b/docs/dc/de1/structshaka_1_1SegmentInfo.html index dc2e01c719..499608126f 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 a11fc54338..9555a73513 100644 --- a/docs/dc/deb/classshaka_1_1media_1_1mp4_1_1Fragmenter-members.html +++ b/docs/dc/deb/classshaka_1_1media_1_1mp4_1_1Fragmenter-members.html @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/deb/h265__byte__to__unit__stream__converter_8h_source.html b/docs/dc/deb/h265__byte__to__unit__stream__converter_8h_source.html index 4fbf1fc468..fe248af4c9 100644 --- a/docs/dc/deb/h265__byte__to__unit__stream__converter_8h_source.html +++ b/docs/dc/deb/h265__byte__to__unit__stream__converter_8h_source.html @@ -135,7 +135,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dc/dec/ts__section__pmt_8cc_source.html b/docs/dc/dec/ts__section__pmt_8cc_source.html index 8ff359780f..20daab101e 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 c84fc19067..43b6d510e4 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 87a43d4b62..054b142bcb 100644 --- a/docs/dc/df2/classshaka_1_1media_1_1WebVttMediaParser.html +++ b/docs/dc/df2/classshaka_1_1media_1_1WebVttMediaParser.html @@ -257,7 +257,7 @@ std::shared_ptr< diff --git a/docs/dc/df3/classshaka_1_1media_1_1mp4_1_1EncryptingFragmenter.html b/docs/dc/df3/classshaka_1_1media_1_1mp4_1_1EncryptingFragmenter.html index 0f1e349d49..79b7843846 100644 --- a/docs/dc/df3/classshaka_1_1media_1_1mp4_1_1EncryptingFragmenter.html +++ b/docs/dc/df3/classshaka_1_1media_1_1mp4_1_1EncryptingFragmenter.html @@ -405,7 +405,7 @@ void set_encryption_key diff --git a/docs/dc/df4/classshaka_1_1media_1_1webm_1_1SingleSegmentSegmenter-members.html b/docs/dc/df4/classshaka_1_1media_1_1webm_1_1SingleSegmentSegmenter-members.html index b1aa2fa995..e4a773461c 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 2e77af48b5..b1351f4993 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 a3122eb2f0..3f33fde6f6 100644 --- a/docs/dc/df8/closure__thread_8h_source.html +++ b/docs/dc/df8/closure__thread_8h_source.html @@ -127,7 +127,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d06/structshaka_1_1media_1_1mp4_1_1ChunkOffset.html b/docs/dd/d06/structshaka_1_1media_1_1mp4_1_1ChunkOffset.html index 15af0e3a10..ba44dfb385 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 125b29d4c5..6f937f47ae 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 09d6d43dd4..396258204f 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 76b46f5281..7e4aa2f8f2 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 0aea667d88..13c9b32167 100644 --- a/docs/dd/d17/classshaka_1_1media_1_1Demuxer.html +++ b/docs/dd/d17/classshaka_1_1media_1_1Demuxer.html @@ -96,6 +96,15 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');

#include <demuxer.h>

+
+Inheritance diagram for shaka::media::Demuxer:
+
+
+ + +shaka::media::MediaHandler + +
@@ -103,26 +112,95 @@ Public Member Functions - - - - - - - + + + + + + + + + + + + + + + +

Public Member Functions

 
void SetKeySource (std::unique_ptr< KeySource > key_source)
 
Status Initialize ()
 
Status Run ()
 
-Status Parse ()
 Read from the source and send it to the parser.
 
void Cancel ()
 
const std::vector
-< std::unique_ptr< MediaStream > > & 
streams ()
 
MediaContainerName container_name ()
 
Status SetHandler (const std::string &stream_label, std::shared_ptr< MediaHandler > handler)
 
void SetLanguageOverride (const std::string &stream_label, const std::string &language_override)
 
+void set_dump_stream_info (bool dump_stream_info)
 
- Public Member Functions inherited from shaka::media::MediaHandler
+Status SetHandler (int output_stream_index, std::shared_ptr< MediaHandler > handler)
 Connect downstream handler at the specified output stream index.
 
+Status AddHandler (std::shared_ptr< MediaHandler > handler)
 Connect downstream handler to the next availble output stream index.
 
Status Initialize ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

MediaHandler implementation overrides.
Status InitializeInternal () override
 
Status Process (std::unique_ptr< StreamData > stream_data) override
 
+bool ValidateOutputStreamIndex (int stream_index) const override
 Validate if the stream at the specified index actually exists.
 
- Protected Member Functions inherited from shaka::media::MediaHandler
+virtual Status FlushStream (int input_stream_index)
 Flush the stream at the specified input stream index.
 
+bool initialized ()
 
+int num_input_streams ()
 
Status Dispatch (std::unique_ptr< StreamData > stream_data)
 
+Status DispatchPeriodInfo (int stream_index, std::shared_ptr< PeriodInfo > period_info)
 Dispatch the period info to downstream handlers.
 
+Status DispatchStreamInfo (int stream_index, std::shared_ptr< StreamInfo > stream_info)
 Dispatch the stream info to downstream handlers.
 
+Status DispatchEncryptionConfig (int stream_index, std::unique_ptr< EncryptionConfig > encryption_config)
 Dispatch the encryption config to downstream handlers.
 
+Status DispatchMediaSample (int stream_index, std::shared_ptr< MediaSample > media_sample)
 Dispatch the media sample to downstream handlers.
 
+Status DispatchMediaEvent (int stream_index, std::shared_ptr< MediaEvent > media_event)
 Dispatch the media event to downstream handlers.
 
+Status DispatchSegmentInfo (int stream_index, std::shared_ptr< SegmentInfo > segment_info)
 Dispatch the segment info to downstream handlers.
 
+int num_input_streams () const
 
+int next_output_stream_index () const
 
+const std::map< int, std::pair
+< std::shared_ptr
+< MediaHandler >, int > > & 
output_handlers ()
 

Detailed Description

Demuxer is responsible for extracting elementary stream samples from a media file, e.g. an ISO BMFF file.

-

Definition at line 31 of file demuxer.h.

+

Definition at line 32 of file demuxer.h.

Constructor & Destructor Documentation

@@ -152,7 +230,7 @@ Public Member Functions -

Definition at line 36 of file demuxer.cc.

+

Definition at line 70 of file demuxer.cc.

@@ -171,7 +249,7 @@ Public Member Functions

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

-

Definition at line 222 of file demuxer.cc.

+

Definition at line 119 of file demuxer.cc.

@@ -197,26 +275,64 @@ Public Member Functions
Returns
Container name (type). Value is CONTAINER_UNKNOWN if the demuxer is not initialized.
-

Definition at line 73 of file demuxer.h.

+

Definition at line 56 of file demuxer.h.

- +
+ + + + + +
- +
Status shaka::media::Demuxer::Initialize Status shaka::media::Demuxer::InitializeInternal ( )
+
+inlineoverrideprotectedvirtual
-

Initialize the Demuxer. Calling other public methods of this class without this method returning OK, results in an undefined behavior. This method primes the demuxer by parsing portions of the media file to extract stream information.

-
Returns
OK on success.
+

Internal implementation of initialize. Note that it should only initialize the MediaHandler itself. Downstream handlers are handled in Initialize().

-

Definition at line 54 of file demuxer.cc.

+

Implements shaka::media::MediaHandler.

+ +

Definition at line 80 of file demuxer.h.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + +
Status shaka::media::Demuxer::Process (std::unique_ptr< StreamDatastream_data)
+
+inlineoverrideprotectedvirtual
+
+

Process the incoming stream data. Note that (1) stream_data.stream_index should be the input stream index; (2) The implementation needs to call DispatchXxx to dispatch the processed stream data to the downstream handlers after finishing processing if needed.

+ +

Implements shaka::media::MediaHandler.

+ +

Definition at line 81 of file demuxer.h.

@@ -234,7 +350,43 @@ Public Member Functions

Drive the remuxing from demuxer side (push). Read the file and push the Data to Muxer until Eof.

-

Definition at line 167 of file demuxer.cc.

+

Definition at line 82 of file demuxer.cc.

+ +
+ + +
+
+ + + + + + + + + + + + + + + + + + +
Status shaka::media::Demuxer::SetHandler (const std::string & stream_label,
std::shared_ptr< MediaHandlerhandler 
)
+
+

Set the handler for the specified stream.

+
Parameters
+ + + +
stream_labelcan be 'audio', 'video', or stream number (zero based).
handleris the handler for the specified stream.
+
+
+ +

Definition at line 123 of file demuxer.cc.

@@ -259,33 +411,43 @@ Public Member Functions -

Definition at line 50 of file demuxer.cc.

+

Definition at line 78 of file demuxer.cc.

- +
- - - - - -
- + - + + + + + + + + + + + +
const std::vector<std::unique_ptr<MediaStream> >& shaka::media::Demuxer::streams void shaka::media::Demuxer::SetLanguageOverride ()const std::string & stream_label,
const std::string & language_override 
)
-
-inline
-
Returns
Streams in the media container being demuxed. The caller cannot add or remove streams from the returned vector, but the caller is allowed to change the internal state of the streams in the vector through MediaStream APIs.
+

Override the language in the specified stream. If the specified stream is a video stream or invalid, this function is a no-op.

+
Parameters
+ + + +
stream_labelcan be 'audio', 'video', or stream number (zero based).
language_overrideis the new language.
+
+
-

Definition at line 67 of file demuxer.h.

+

Definition at line 133 of file demuxer.cc.

@@ -296,7 +458,7 @@ Public Member Functions diff --git a/docs/dd/d17/classshaka_1_1media_1_1Demuxer.png b/docs/dd/d17/classshaka_1_1media_1_1Demuxer.png new file mode 100644 index 0000000000000000000000000000000000000000..8d454a5d1dd91b73a4edbc747d422b7c5b6db4bb GIT binary patch literal 687 zcmeAS@N?(olHy`uVBq!ia0vp^tAIFwgBeKfTPSxPNJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~*?GD+hEy=VoqMtGwE~X|f8Uk=|DVim zVPNwqUtJ}C;j7kV-IED?+nnPq`yStLmQhl&)(CKQ*(16_N$H+cz~qiCtK~a8W?1De z-rTdi;;q}iG`&QYFV3P9-+A$$m|YRS;9lZoVO!h9)n0N_G*r(OfB&;3hpRL(XGQ8B zj*5QMthyRoonuK^7j7;{npyni%y+k`ynnZRzj`U-N?T~t6_c0xmz&ncol0Bq?U-@; z_4x2lg~w;5=QYgw-F8c-?*3S0`U*Po z*tE*q^xLY3@r!4zy=r<%eeW)=AH~dD=3H|;pSgE~)l{o#xm(0G`!)PX6czj_&AO_i zV>?r*%aQ0tEu}|mg}++#C37?Wc+I+@{hMR$-ff9@*}tmXZ7o&4V!_DpM|1_lJ+2Uj zd{(W7?M$Kvq8qs$taV`h5VnA+LOXyF7(NK;f7Mr}1l@90X^<6xitcrPJO6J{@bcV} zXW|kMxc~BMU5Nd@Ha~LuigK}Y%PXg*m&`70diU~F(NEv#pE?t}Rw~An&yz5_%w^iX zYuUC1H*YW4?09fyag_6l-N#Ih?sJM-WVUA4%az9-8@;-pAU$8YB#NQAE~_DGTidF5 z!KwFhUj91bu-1(G>&#D@t7fjwyzkukdyVd zg4R{d^DbL4u3B5xZ09}il(ag-fh9i@QT=8W80?kF{g?T%mGYzsxd#sbQx}7$tDnm{ Hr-UW|%hfuX literal 0 HcmV?d00001 diff --git a/docs/dd/d18/es__parser__adts_8h_source.html b/docs/dd/d18/es__parser__adts_8h_source.html index bd39840dc3..9a06074099 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 a14c28b57a..63da37d27a 100644 --- a/docs/dd/d19/video__stream__info_8cc_source.html +++ b/docs/dd/d19/video__stream__info_8cc_source.html @@ -179,7 +179,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d30/wvm__media__parser_8cc_source.html b/docs/dd/d30/wvm__media__parser_8cc_source.html index bca9a1306b..b9f13e8cda 100644 --- a/docs/dd/d30/wvm__media__parser_8cc_source.html +++ b/docs/dd/d30/wvm__media__parser_8cc_source.html @@ -1266,7 +1266,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 189555ee42..ed2f596367 100644 --- a/docs/dd/d3b/mp4_2segmenter_8h_source.html +++ b/docs/dd/d3b/mp4_2segmenter_8h_source.html @@ -112,9 +112,9 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
23 class BufferWriter;
24 class KeySource;
25 class MediaSample;
-
26 class MediaStream;
-
27 class MuxerListener;
-
28 class ProgressListener;
+
26 class MuxerListener;
+
27 class ProgressListener;
+
28 class StreamInfo;
29 
30 namespace mp4 {
31 
@@ -127,7 +127,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
44  std::unique_ptr<Movie> moov);
45  virtual ~Segmenter();
46 
-
72  Status Initialize(const std::vector<MediaStream*>& streams,
+
72  Status Initialize(const std::vector<std::shared_ptr<StreamInfo>>& streams,
73  MuxerListener* muxer_listener,
74  ProgressListener* progress_listener,
75  KeySource* encryption_key_source,
@@ -140,88 +140,87 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
82 
85  Status Finalize();
86 
-
92  Status AddSample(const MediaStream* stream,
-
93  std::shared_ptr<MediaSample> sample);
-
94 
-
97  virtual bool GetInitRange(size_t* offset, size_t* size) = 0;
-
98 
-
101  virtual bool GetIndexRange(size_t* offset, size_t* size) = 0;
+
90  Status AddSample(const StreamInfo& stream_Info,
+
91  std::shared_ptr<MediaSample> sample);
+
92 
+
95  virtual bool GetInitRange(size_t* offset, size_t* size) = 0;
+
96 
+
99  virtual bool GetIndexRange(size_t* offset, size_t* size) = 0;
+
100 
+
101  uint32_t GetReferenceTimeScale() const;
102 
-
103  uint32_t GetReferenceTimeScale() const;
-
104 
-
106  double GetDuration() const;
-
107 
-
110  uint32_t sample_duration() const { return sample_duration_; }
-
111 
-
112  protected:
-
114  void UpdateProgress(uint64_t progress);
-
116  void SetComplete();
-
117 
-
118  const MuxerOptions& options() const { return options_; }
-
119  FileType* ftyp() { return ftyp_.get(); }
-
120  Movie* moov() { return moov_.get(); }
-
121  BufferWriter* fragment_buffer() { return fragment_buffer_.get(); }
-
122  SegmentIndex* sidx() { return sidx_.get(); }
-
123  MuxerListener* muxer_listener() { return muxer_listener_; }
-
124  uint64_t progress_target() { return progress_target_; }
-
125 
-
126  void set_progress_target(uint64_t progress_target) {
-
127  progress_target_ = progress_target;
-
128  }
-
129 
-
130  private:
-
131  virtual Status DoInitialize() = 0;
-
132  virtual Status DoFinalize() = 0;
-
133  virtual Status DoFinalizeSegment() = 0;
-
134 
-
135  Status FinalizeSegment();
-
136  uint32_t GetReferenceStreamId();
+
104  double GetDuration() const;
+
105 
+
108  uint32_t sample_duration() const { return sample_duration_; }
+
109 
+
110  protected:
+
112  void UpdateProgress(uint64_t progress);
+
114  void SetComplete();
+
115 
+
116  const MuxerOptions& options() const { return options_; }
+
117  FileType* ftyp() { return ftyp_.get(); }
+
118  Movie* moov() { return moov_.get(); }
+
119  BufferWriter* fragment_buffer() { return fragment_buffer_.get(); }
+
120  SegmentIndex* sidx() { return sidx_.get(); }
+
121  MuxerListener* muxer_listener() { return muxer_listener_; }
+
122  uint64_t progress_target() { return progress_target_; }
+
123 
+
124  void set_progress_target(uint64_t progress_target) {
+
125  progress_target_ = progress_target;
+
126  }
+
127 
+
128  private:
+
129  virtual Status DoInitialize() = 0;
+
130  virtual Status DoFinalize() = 0;
+
131  virtual Status DoFinalizeSegment() = 0;
+
132 
+
133  Status FinalizeSegment();
+
134  uint32_t GetReferenceStreamId();
+
135 
+
136  Status FinalizeFragment(bool finalize_segment, Fragmenter* fragment);
137 
-
138  Status FinalizeFragment(bool finalize_segment, Fragmenter* fragment);
-
139 
-
140  const MuxerOptions& options_;
-
141  std::unique_ptr<FileType> ftyp_;
-
142  std::unique_ptr<Movie> moov_;
-
143  std::unique_ptr<MovieFragment> moof_;
-
144  std::unique_ptr<BufferWriter> fragment_buffer_;
-
145  std::unique_ptr<SegmentIndex> sidx_;
-
146  std::vector<std::unique_ptr<Fragmenter>> fragmenters_;
-
147  std::vector<uint64_t> segment_durations_;
-
148  std::map<const MediaStream*, uint32_t> stream_map_;
-
149  MuxerListener* muxer_listener_;
-
150  ProgressListener* progress_listener_;
-
151  uint64_t progress_target_;
-
152  uint64_t accumulated_progress_;
-
153  uint32_t sample_duration_;
+
138  const MuxerOptions& options_;
+
139  std::unique_ptr<FileType> ftyp_;
+
140  std::unique_ptr<Movie> moov_;
+
141  std::unique_ptr<MovieFragment> moof_;
+
142  std::unique_ptr<BufferWriter> fragment_buffer_;
+
143  std::unique_ptr<SegmentIndex> sidx_;
+
144  std::vector<std::unique_ptr<Fragmenter>> fragmenters_;
+
145  std::vector<uint64_t> segment_durations_;
+
146  MuxerListener* muxer_listener_;
+
147  ProgressListener* progress_listener_;
+
148  uint64_t progress_target_;
+
149  uint64_t accumulated_progress_;
+
150  uint32_t sample_duration_;
+
151 
+
152  DISALLOW_COPY_AND_ASSIGN(Segmenter);
+
153 };
154 
-
155  DISALLOW_COPY_AND_ASSIGN(Segmenter);
-
156 };
-
157 
-
158 } // namespace mp4
-
159 } // namespace media
-
160 } // namespace shaka
-
161 
-
162 #endif // MEDIA_FORMATS_MP4_SEGMENTER_H_
-
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:390
-
void SetComplete()
Set progress to 100%.
Definition: segmenter.cc:406
+
155 } // namespace mp4
+
156 } // namespace media
+
157 } // namespace shaka
+
158 
+
159 #endif // MEDIA_FORMATS_MP4_SEGMENTER_H_
+
Abstract class holds stream information.
Definition: stream_info.h:57
+
Status AddSample(const StreamInfo &stream_Info, std::shared_ptr< MediaSample > sample)
Definition: segmenter.cc:318
+
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:383
+
void SetComplete()
Set progress to 100%.
Definition: segmenter.cc:399
virtual bool GetInitRange(size_t *offset, size_t *size)=0
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
-
uint32_t sample_duration() const
Definition: segmenter.h:110
+
uint32_t sample_duration() const
Definition: segmenter.h:108
This class listens to progress updates events.
-
Status Initialize(const std::vector< MediaStream * > &streams, MuxerListener *muxer_listener, ProgressListener *progress_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)
Definition: segmenter.cc:165
- +
Status Initialize(const std::vector< std::shared_ptr< StreamInfo >> &streams, MuxerListener *muxer_listener, ProgressListener *progress_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)
Definition: segmenter.cc:164
+
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:30
-
double GetDuration() const
Definition: segmenter.cc:381
+
double GetDuration() const
Definition: segmenter.cc:374
virtual bool GetIndexRange(size_t *offset, size_t *size)=0
-
Status AddSample(const MediaStream *stream, std::shared_ptr< MediaSample > sample)
Definition: segmenter.cc:323
- 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 474e603e37..8765de7d2a 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 c71565c7ba..324c30f6ee 100644 --- a/docs/dd/d42/encryptor_8h_source.html +++ b/docs/dd/d42/encryptor_8h_source.html @@ -159,7 +159,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 19968bbbe4..fbf66d3be1 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 643429c5bb..c5f5d29664 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 b1fbc7ce2b..12402b47d2 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 81fb54f6c5..ed6a08e9ab 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 e4fc77a716..0e3ccbbb81 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 ae28965b86..69bd0f0ede 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 f648571ff1..2235fbab4a 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 500542baa6..1a5ed5fc78 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 32f8509874..f9fd407b84 100644 --- a/docs/dd/d67/h264__byte__to__unit__stream__converter_8cc_source.html +++ b/docs/dd/d67/h264__byte__to__unit__stream__converter_8cc_source.html @@ -177,7 +177,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d6e/classshaka_1_1media_1_1H265VideoSliceHeaderParser-members.html b/docs/dd/d6e/classshaka_1_1media_1_1H265VideoSliceHeaderParser-members.html index 7332126ba2..ead7479781 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 1fe2257168..edba2ed47b 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 fd55250304..da21236151 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 18ba2e8842..907c7459da 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 8fbccb06e5..df30089079 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 21e62a7291..3f41b29706 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 d2fe2bf497..63e95bba46 100644 --- a/docs/dd/d88/pes__packet__generator_8h_source.html +++ b/docs/dd/d88/pes__packet__generator_8h_source.html @@ -172,7 +172,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/d8c/file__test__util_8h_source.html b/docs/dd/d8c/file__test__util_8h_source.html index de55e4ab98..91f01ca0c4 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 aeac1bec40..cb60a1d5f1 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 1a76685895..6e6c3aa18d 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 6f418038ef..549e18c16a 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 24ee142e0e..965b17650d 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 9c40c8b92b..1708de6944 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 1b60b7ae1f..e6e60de0c4 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 09ccfb6dff..2f80b356f2 100644 --- a/docs/dd/da5/classshaka_1_1media_1_1webm_1_1TwoPassSingleSegmentSegmenter.html +++ b/docs/dd/da5/classshaka_1_1media_1_1webm_1_1TwoPassSingleSegmentSegmenter.html @@ -220,7 +220,7 @@ uint64_t cluster_length_in diff --git a/docs/dd/daa/vod__media__info__dump__muxer__listener_8h_source.html b/docs/dd/daa/vod__media__info__dump__muxer__listener_8h_source.html index 647a9481c0..16df4107d6 100644 --- a/docs/dd/daa/vod__media__info__dump__muxer__listener_8h_source.html +++ b/docs/dd/daa/vod__media__info__dump__muxer__listener_8h_source.html @@ -180,7 +180,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/dab/webm__muxer_8h_source.html b/docs/dd/dab/webm__muxer_8h_source.html index aa2c7eb4aa..9041bf535a 100644 --- a/docs/dd/dab/webm__muxer_8h_source.html +++ b/docs/dd/dab/webm__muxer_8h_source.html @@ -111,34 +111,32 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
24 
25  private:
26  // Muxer implementation overrides.
-
27  Status Initialize() override;
+
27  Status InitializeMuxer() override;
28  Status Finalize() override;
-
29  Status DoAddSample(const MediaStream* stream,
-
30  std::shared_ptr<MediaSample> sample) override;
-
31 
-
32  void FireOnMediaStartEvent();
-
33  void FireOnMediaEndEvent();
-
34 
-
35  std::unique_ptr<Segmenter> segmenter_;
-
36 
-
37  DISALLOW_COPY_AND_ASSIGN(WebMMuxer);
-
38 };
-
39 
-
40 } // namespace webm
-
41 } // namespace media
-
42 } // namespace shaka
-
43 
-
44 #endif // MEDIA_FORMATS_WEBM_WEBM_MUXER_H_
+
29  Status DoAddSample(std::shared_ptr<MediaSample> sample) override;
+
30 
+
31  void FireOnMediaStartEvent();
+
32  void FireOnMediaEndEvent();
+
33 
+
34  std::unique_ptr<Segmenter> segmenter_;
+
35 
+
36  DISALLOW_COPY_AND_ASSIGN(WebMMuxer);
+
37 };
+
38 
+
39 } // namespace webm
+
40 } // namespace media
+
41 } // namespace shaka
+
42 
+
43 #endif // MEDIA_FORMATS_WEBM_WEBM_MUXER_H_
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
Implements WebM Muxer.
Definition: webm_muxer.h:19
- + -
WebMMuxer(const MuxerOptions &options)
Create a WebMMuxer object from MuxerOptions.
Definition: webm_muxer.cc:22
- +
WebMMuxer(const MuxerOptions &options)
Create a WebMMuxer object from MuxerOptions.
Definition: webm_muxer.cc:21
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 087fb07ff5..97865e1299 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 37ece8668c..9365e85885 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 c681a0c781..069a56a4bd 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 760bc9f616..779468864f 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 b96fddbce8..df02a95eaa 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 7e78dfdb8a..03dbfa76d8 100644 --- a/docs/dd/dbc/encryption__handler_8h_source.html +++ b/docs/dd/dbc/encryption__handler_8h_source.html @@ -203,7 +203,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 97d96523fd..db58138d65 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 b65e8623c1..f90cced3cf 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 78c53cc9ee..440c79fcf5 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 0f87fc45db..ae0e76b058 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 804e45e506..375d4eb97b 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 d42ee83b2a..5d0e6e3095 100644 --- a/docs/dd/dc5/classshaka_1_1media_1_1webm_1_1Segmenter.html +++ b/docs/dd/dc5/classshaka_1_1media_1_1webm_1_1Segmenter.html @@ -207,7 +207,7 @@ virtual Sta
Returns
OK on success, an error status otherwise.
-

Definition at line 124 of file segmenter.cc.

+

Definition at line 123 of file segmenter.cc.

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

Finalize the segmenter.

Returns
OK on success, an error status otherwise.
-

Definition at line 113 of file segmenter.cc.

+

Definition at line 112 of file segmenter.cc.

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

Definition at line 51 of file segmenter.cc.

+

Definition at line 50 of file segmenter.cc.

@@ -441,7 +441,7 @@ virtual Sta diff --git a/docs/dd/dca/structshaka_1_1media_1_1mp4_1_1OriginalFormat-members.html b/docs/dd/dca/structshaka_1_1media_1_1mp4_1_1OriginalFormat-members.html index 137fda791a..d17776058a 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 9fb8b6a733..2249470d60 100644 --- a/docs/dd/dce/structshaka_1_1media_1_1Cue.html +++ b/docs/dd/dce/structshaka_1_1media_1_1Cue.html @@ -125,7 +125,7 @@ std::vector< std::string >  diff --git a/docs/dd/dd2/buffer__writer_8h_source.html b/docs/dd/dd2/buffer__writer_8h_source.html index 6de2ed9e5a..dd5f380ec6 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 95bdb4a3d2..78270bbdc1 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 ffa463bbdd..ae6c83a36a 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 ea4ef79afe..3ccab231ec 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 e90f75f350..a9b622d11a 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 353bc3e286..f9655e4f98 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 a83e07fc87..dfa1ac233f 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 9eb01d2f51..0591eb8de0 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 1d89b65f03..b4e460f124 100644 --- a/docs/dd/de9/classshaka_1_1media_1_1MediaHandler-members.html +++ b/docs/dd/de9/classshaka_1_1media_1_1MediaHandler-members.html @@ -109,14 +109,15 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); next_output_stream_index() const (defined in shaka::media::MediaHandler)shaka::media::MediaHandlerinlineprotected num_input_streams() (defined in shaka::media::MediaHandler)shaka::media::MediaHandlerinlineprotected num_input_streams() const (defined in shaka::media::MediaHandler)shaka::media::MediaHandlerinlineprotected - Process(std::unique_ptr< StreamData > stream_data)=0shaka::media::MediaHandlerprotectedpure virtual - SetHandler(int output_stream_index, std::shared_ptr< MediaHandler > handler)shaka::media::MediaHandler - ValidateOutputStreamIndex(int stream_index) const shaka::media::MediaHandlerprotectedvirtual - ~MediaHandler()=default (defined in shaka::media::MediaHandler)shaka::media::MediaHandlervirtual + output_handlers() (defined in shaka::media::MediaHandler)shaka::media::MediaHandlerinlineprotected + Process(std::unique_ptr< StreamData > stream_data)=0shaka::media::MediaHandlerprotectedpure virtual + SetHandler(int output_stream_index, std::shared_ptr< MediaHandler > handler)shaka::media::MediaHandler + ValidateOutputStreamIndex(int stream_index) const shaka::media::MediaHandlerprotectedvirtual + ~MediaHandler()=default (defined in shaka::media::MediaHandler)shaka::media::MediaHandlervirtual diff --git a/docs/dd/dee/box__definitions_8cc_source.html b/docs/dd/dee/box__definitions_8cc_source.html index d36edbcc5d..350b2fcd6b 100644 --- a/docs/dd/dee/box__definitions_8cc_source.html +++ b/docs/dd/dee/box__definitions_8cc_source.html @@ -2950,7 +2950,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 44c67a063e..6494289885 100644 --- a/docs/dd/df2/webm_2multi__segment__segmenter_8h_source.html +++ b/docs/dd/df2/webm_2multi__segment__segmenter_8h_source.html @@ -139,8 +139,8 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
55 } // namespace shaka
56 
57 #endif // MEDIA_FORMATS_WEBM_MULTI_SEGMENT_SEGMENTER_H_
-
bool GetIndexRangeStartAndEnd(uint64_t *start, uint64_t *end) override
-
bool GetInitRangeStartAndEnd(uint64_t *start, uint64_t *end) override
+
bool GetIndexRangeStartAndEnd(uint64_t *start, uint64_t *end) override
+
bool GetInitRangeStartAndEnd(uint64_t *start, uint64_t *end) override
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
@@ -148,7 +148,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/dd/df5/structshaka_1_1media_1_1mp4_1_1TrackFragmentRun.html b/docs/dd/df5/structshaka_1_1media_1_1mp4_1_1TrackFragmentRun.html index f803e8718d..2e988cb6a7 100644 --- a/docs/dd/df5/structshaka_1_1media_1_1mp4_1_1TrackFragmentRun.html +++ b/docs/dd/df5/structshaka_1_1media_1_1mp4_1_1TrackFragmentRun.html @@ -212,7 +212,7 @@ Additional Inherited Members diff --git a/docs/dd/df6/structshaka_1_1media_1_1mp4_1_1Metadata.html b/docs/dd/df6/structshaka_1_1media_1_1mp4_1_1Metadata.html index c47a1c656f..789505a99e 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 ad2ad3fbbd..200a499913 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 2ae0d82a6c..593a36c4ec 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 29b13613c9..a30f226879 100644 --- a/docs/de/d13/ts__writer_8cc_source.html +++ b/docs/de/d13/ts__writer_8cc_source.html @@ -360,7 +360,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d15/media__stream_8cc_source.html b/docs/de/d15/media__stream_8cc_source.html deleted file mode 100644 index f90db9858b..0000000000 --- a/docs/de/d15/media__stream_8cc_source.html +++ /dev/null @@ -1,220 +0,0 @@ - - - - - - -DASH Media Packaging SDK: media/base/media_stream.cc Source File - - - - - - - - - -
-
- - - - - - -
-
DASH Media Packaging SDK -
-
-
- - - - - - - - - -
- -
- - -
-
-
-
media_stream.cc
-
-
-
1 // Copyright 2014 Google Inc. All rights reserved.
-
2 //
-
3 // Use of this source code is governed by a BSD-style
-
4 // license that can be found in the LICENSE file or at
-
5 // https://developers.google.com/open-source/licenses/bsd
-
6 
-
7 #include "packager/media/base/media_stream.h"
-
8 
-
9 #include "packager/base/logging.h"
-
10 #include "packager/base/strings/stringprintf.h"
-
11 #include "packager/media/base/demuxer.h"
-
12 #include "packager/media/base/media_sample.h"
-
13 #include "packager/media/base/muxer.h"
-
14 #include "packager/media/base/stream_info.h"
-
15 
-
16 namespace shaka {
-
17 namespace media {
-
18 
-
19 MediaStream::MediaStream(std::shared_ptr<StreamInfo> info, Demuxer* demuxer)
-
20  : info_(info), demuxer_(demuxer), muxer_(NULL), state_(kIdle) {}
-
21 
-
22 MediaStream::~MediaStream() {}
-
23 
-
24 Status MediaStream::PullSample(std::shared_ptr<MediaSample>* sample) {
-
25  DCHECK(state_ == kPulling || state_ == kIdle);
-
26 
-
27  // Trigger a new parse in demuxer if no more samples.
-
28  while (samples_.empty()) {
-
29  Status status = demuxer_->Parse();
-
30  if (!status.ok())
-
31  return status;
-
32  }
-
33 
-
34  *sample = samples_.front();
-
35  samples_.pop_front();
-
36  return Status::OK;
-
37 }
-
38 
-
39 Status MediaStream::PushSample(const std::shared_ptr<MediaSample>& sample) {
-
40  switch (state_) {
-
41  case kIdle:
-
42  case kPulling:
-
43  samples_.push_back(sample);
-
44  return Status::OK;
-
45  case kDisconnected:
-
46  return Status::OK;
-
47  case kPushing:
-
48  return muxer_->AddSample(this, sample);
-
49  default:
-
50  NOTREACHED() << "Unexpected State " << state_;
-
51  return Status::UNKNOWN;
-
52  }
-
53 }
-
54 
- -
56  DCHECK(muxer);
-
57  DCHECK(!muxer_);
-
58  state_ = kConnected;
-
59  muxer_ = muxer;
-
60 }
-
61 
-
62 Status MediaStream::Start(MediaStreamOperation operation) {
-
63  DCHECK(demuxer_);
-
64  DCHECK(operation == kPush || operation == kPull);
-
65 
-
66  switch (state_) {
-
67  case kIdle:
-
68  // Disconnect the stream if it is not connected to a muxer.
-
69  state_ = kDisconnected;
-
70  samples_.clear();
-
71  return Status::OK;
-
72  case kConnected:
-
73  state_ = (operation == kPush) ? kPushing : kPulling;
-
74  if (operation == kPush) {
-
75  // Push samples in the queue to muxer if there is any.
-
76  while (!samples_.empty()) {
-
77  Status status = muxer_->AddSample(this, samples_.front());
-
78  if (!status.ok())
-
79  return status;
-
80  samples_.pop_front();
-
81  }
-
82  } else {
-
83  // We need to disconnect all its peer streams which are not connected
-
84  // to a muxer.
-
85  for (size_t i = 0; i < demuxer_->streams().size(); ++i) {
-
86  Status status = demuxer_->streams()[i]->Start(operation);
-
87  if (!status.ok())
-
88  return status;
-
89  }
-
90  }
-
91  return Status::OK;
-
92  case kPulling:
-
93  DCHECK(operation == kPull);
-
94  return Status::OK;
-
95  default:
-
96  NOTREACHED() << "Unexpected State " << state_;
-
97  return Status::UNKNOWN;
-
98  }
-
99 }
-
100 
-
101 const std::shared_ptr<StreamInfo> MediaStream::info() const {
-
102  return info_;
-
103 }
-
104 
-
105 std::string MediaStream::ToString() const {
-
106  return base::StringPrintf("state: %d\n samples in the queue: %zu\n %s",
-
107  state_, samples_.size(), info_->ToString().c_str());
-
108 }
-
109 
-
110 } // namespace media
-
111 } // namespace shaka
-
MediaStream(std::shared_ptr< StreamInfo > info, Demuxer *demuxer)
Definition: media_stream.cc:19
-
Status PushSample(const std::shared_ptr< MediaSample > &sample)
Push sample to Muxer (triggered by Demuxer).
Definition: media_stream.cc:39
-
Status Start(MediaStreamOperation operation)
Start the stream for pushing or pulling.
Definition: media_stream.cc:62
-
const std::vector< std::unique_ptr< MediaStream > > & streams()
Definition: demuxer.h:67
- -
void Connect(Muxer *muxer)
Definition: media_stream.cc:55
-
Status PullSample(std::shared_ptr< MediaSample > *sample)
Pull sample from Demuxer (triggered by Muxer).
Definition: media_stream.cc:24
-
Status Parse()
Read from the source and send it to the parser.
Definition: demuxer.cc:197
- - -
std::string ToString() const
-
- - - - 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 288582cfbb..b310c6aa73 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 9ca1b69f7f..84b2e27c09 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 5b9485e98f..370e2a4bcf 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 a8d2afa71f..3de128284a 100644 --- a/docs/de/d1e/mp4_2single__segment__segmenter_8cc_source.html +++ b/docs/de/d1e/mp4_2single__segment__segmenter_8cc_source.html @@ -98,218 +98,217 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
9 #include <algorithm>
10 
11 #include "packager/media/base/buffer_writer.h"
-
12 #include "packager/media/base/media_stream.h"
-
13 #include "packager/media/base/muxer_options.h"
-
14 #include "packager/media/event/muxer_listener.h"
-
15 #include "packager/media/event/progress_listener.h"
-
16 #include "packager/media/file/file.h"
-
17 #include "packager/media/file/file_util.h"
-
18 #include "packager/media/formats/mp4/box_definitions.h"
-
19 
-
20 namespace shaka {
-
21 namespace media {
-
22 namespace mp4 {
-
23 
-
24 SingleSegmentSegmenter::SingleSegmentSegmenter(const MuxerOptions& options,
-
25  std::unique_ptr<FileType> ftyp,
-
26  std::unique_ptr<Movie> moov)
-
27  : Segmenter(options, std::move(ftyp), std::move(moov)) {}
-
28 
-
29 SingleSegmentSegmenter::~SingleSegmentSegmenter() {
-
30  if (temp_file_)
-
31  temp_file_.release()->Close();
-
32  if (!temp_file_name_.empty()) {
-
33  if (!File::Delete(temp_file_name_.c_str()))
-
34  LOG(ERROR) << "Unable to delete temporary file " << temp_file_name_;
-
35  }
-
36 }
-
37 
-
38 bool SingleSegmentSegmenter::GetInitRange(size_t* offset, size_t* size) {
-
39  // In Finalize, ftyp and moov gets written first so offset must be 0.
-
40  *offset = 0;
-
41  *size = ftyp()->ComputeSize() + moov()->ComputeSize();
-
42  return true;
-
43 }
-
44 
-
45 bool SingleSegmentSegmenter::GetIndexRange(size_t* offset, size_t* size) {
-
46  // Index range is right after init range so the offset must be the size of
-
47  // ftyp and moov.
-
48  *offset = ftyp()->ComputeSize() + moov()->ComputeSize();
-
49  *size = vod_sidx_->ComputeSize();
-
50  return true;
-
51 }
-
52 
-
53 Status SingleSegmentSegmenter::DoInitialize() {
-
54  // Single segment segmentation involves two stages:
-
55  // Stage 1: Create media subsegments from media samples
-
56  // Stage 2: Update media header (moov) which involves copying of media
-
57  // subsegments
-
58  // Assumes stage 2 takes similar amount of time as stage 1. The previous
-
59  // progress_target was set for stage 1. Times two to account for stage 2.
-
60  set_progress_target(progress_target() * 2);
-
61 
-
62  if (!TempFilePath(options().temp_dir, &temp_file_name_))
-
63  return Status(error::FILE_FAILURE, "Unable to create temporary file.");
-
64  temp_file_.reset(File::Open(temp_file_name_.c_str(), "w"));
-
65  return temp_file_
-
66  ? Status::OK
-
67  : Status(error::FILE_FAILURE,
-
68  "Cannot open file to write " + temp_file_name_);
-
69 }
-
70 
-
71 Status SingleSegmentSegmenter::DoFinalize() {
-
72  DCHECK(temp_file_);
-
73  DCHECK(ftyp());
-
74  DCHECK(moov());
-
75  DCHECK(vod_sidx_);
-
76 
-
77  // Close the temp file to prepare for reading later.
-
78  if (!temp_file_.release()->Close()) {
-
79  return Status(error::FILE_FAILURE,
-
80  "Cannot close the temp file " + temp_file_name_);
-
81  }
-
82 
-
83  std::unique_ptr<File, FileCloser> file(
-
84  File::Open(options().output_file_name.c_str(), "w"));
-
85  if (file == NULL) {
-
86  return Status(error::FILE_FAILURE,
-
87  "Cannot open file to write " + options().output_file_name);
-
88  }
-
89 
-
90  LOG(INFO) << "Update media header (moov) and rewrite the file to '"
-
91  << options().output_file_name << "'.";
-
92 
-
93  // Write ftyp, moov and sidx to output file.
-
94  std::unique_ptr<BufferWriter> buffer(new BufferWriter());
-
95  ftyp()->Write(buffer.get());
-
96  moov()->Write(buffer.get());
-
97  vod_sidx_->Write(buffer.get());
-
98  Status status = buffer->WriteToFile(file.get());
-
99  if (!status.ok())
-
100  return status;
-
101 
-
102  // Load the temp file and write to output file.
-
103  std::unique_ptr<File, FileCloser> temp_file(
-
104  File::Open(temp_file_name_.c_str(), "r"));
-
105  if (temp_file == NULL) {
-
106  return Status(error::FILE_FAILURE,
-
107  "Cannot open file to read " + temp_file_name_);
-
108  }
-
109 
-
110  // The target of 2nd stage of single segment segmentation.
-
111  const uint64_t re_segment_progress_target = progress_target() * 0.5;
-
112 
-
113  const int kBufSize = 0x200000; // 2MB.
-
114  std::unique_ptr<uint8_t[]> buf(new uint8_t[kBufSize]);
-
115  while (true) {
-
116  int64_t size = temp_file->Read(buf.get(), kBufSize);
-
117  if (size == 0) {
-
118  break;
-
119  } else if (size < 0) {
-
120  return Status(error::FILE_FAILURE,
-
121  "Failed to read file " + temp_file_name_);
-
122  }
-
123  int64_t size_written = file->Write(buf.get(), size);
-
124  if (size_written != size) {
-
125  return Status(error::FILE_FAILURE,
-
126  "Failed to write file " + options().output_file_name);
-
127  }
-
128  UpdateProgress(static_cast<double>(size) / temp_file->Size() *
-
129  re_segment_progress_target);
-
130  }
-
131  SetComplete();
-
132  return Status::OK;
-
133 }
-
134 
-
135 Status SingleSegmentSegmenter::DoFinalizeSegment() {
-
136  DCHECK(sidx());
-
137  DCHECK(fragment_buffer());
-
138  // sidx() contains pre-generated segment references with one reference per
-
139  // fragment. In VOD, this segment is converted into a subsegment, i.e. one
-
140  // reference, which contains all the fragments in sidx().
-
141  std::vector<SegmentReference>& refs = sidx()->references;
-
142  SegmentReference& vod_ref = refs[0];
-
143  uint64_t first_sap_time =
-
144  refs[0].sap_delta_time + refs[0].earliest_presentation_time;
-
145  for (uint32_t i = 1; i < refs.size(); ++i) {
-
146  vod_ref.referenced_size += refs[i].referenced_size;
-
147  // NOTE: We calculate subsegment duration based on the total duration of
-
148  // this subsegment instead of subtracting earliest_presentation_time as
-
149  // indicated in the spec.
-
150  vod_ref.subsegment_duration += refs[i].subsegment_duration;
-
151  vod_ref.earliest_presentation_time = std::min(
-
152  vod_ref.earliest_presentation_time, refs[i].earliest_presentation_time);
-
153 
-
154  if (vod_ref.sap_type == SegmentReference::TypeUnknown &&
-
155  refs[i].sap_type != SegmentReference::TypeUnknown) {
-
156  vod_ref.sap_type = refs[i].sap_type;
-
157  first_sap_time =
-
158  refs[i].sap_delta_time + refs[i].earliest_presentation_time;
-
159  }
-
160  }
-
161  // Calculate sap delta time w.r.t. earliest_presentation_time.
-
162  if (vod_ref.sap_type != SegmentReference::TypeUnknown) {
-
163  vod_ref.sap_delta_time =
-
164  first_sap_time - vod_ref.earliest_presentation_time;
-
165  }
-
166 
-
167  // Create segment if it does not exist yet.
-
168  if (vod_sidx_ == NULL) {
-
169  vod_sidx_.reset(new SegmentIndex());
-
170  vod_sidx_->reference_id = sidx()->reference_id;
-
171  vod_sidx_->timescale = sidx()->timescale;
-
172 
-
173  if (vod_ref.earliest_presentation_time > 0) {
-
174  const double starting_time_in_seconds =
-
175  static_cast<double>(vod_ref.earliest_presentation_time) /
-
176  GetReferenceTimeScale();
-
177  // Give a warning if it is significant.
-
178  if (starting_time_in_seconds > 0.5) {
-
179  // Note that DASH IF player requires presentationTimeOffset to be set in
-
180  // Segment{Base,List,Template} if there is non-zero starting time. Since
-
181  // current Chromium's MSE implementation uses DTS, the player expects
-
182  // DTS to be used.
-
183  LOG(WARNING) << "Warning! Non-zero starting time (in seconds): "
-
184  << starting_time_in_seconds
-
185  << ". Manual adjustment of presentationTimeOffset in "
-
186  "mpd might be necessary.";
-
187  }
-
188  }
-
189  // Force earliest_presentation_time to start from 0 for VOD.
-
190  vod_sidx_->earliest_presentation_time = 0;
-
191  }
-
192  vod_sidx_->references.push_back(vod_ref);
-
193 
-
194  // Append fragment buffer to temp file.
-
195  size_t segment_size = fragment_buffer()->Size();
-
196  Status status = fragment_buffer()->WriteToFile(temp_file_.get());
-
197  if (!status.ok()) return status;
-
198 
-
199  UpdateProgress(vod_ref.subsegment_duration);
-
200  if (muxer_listener()) {
-
201  muxer_listener()->OnSampleDurationReady(sample_duration());
-
202  muxer_listener()->OnNewSegment(options().output_file_name,
-
203  vod_ref.earliest_presentation_time,
-
204  vod_ref.subsegment_duration, segment_size);
-
205  }
-
206  return Status::OK;
-
207 }
-
208 
-
209 } // namespace mp4
-
210 } // namespace media
-
211 } // namespace shaka
+
12 #include "packager/media/base/muxer_options.h"
+
13 #include "packager/media/event/muxer_listener.h"
+
14 #include "packager/media/event/progress_listener.h"
+
15 #include "packager/media/file/file.h"
+
16 #include "packager/media/file/file_util.h"
+
17 #include "packager/media/formats/mp4/box_definitions.h"
+
18 
+
19 namespace shaka {
+
20 namespace media {
+
21 namespace mp4 {
+
22 
+
23 SingleSegmentSegmenter::SingleSegmentSegmenter(const MuxerOptions& options,
+
24  std::unique_ptr<FileType> ftyp,
+
25  std::unique_ptr<Movie> moov)
+
26  : Segmenter(options, std::move(ftyp), std::move(moov)) {}
+
27 
+
28 SingleSegmentSegmenter::~SingleSegmentSegmenter() {
+
29  if (temp_file_)
+
30  temp_file_.release()->Close();
+
31  if (!temp_file_name_.empty()) {
+
32  if (!File::Delete(temp_file_name_.c_str()))
+
33  LOG(ERROR) << "Unable to delete temporary file " << temp_file_name_;
+
34  }
+
35 }
+
36 
+
37 bool SingleSegmentSegmenter::GetInitRange(size_t* offset, size_t* size) {
+
38  // In Finalize, ftyp and moov gets written first so offset must be 0.
+
39  *offset = 0;
+
40  *size = ftyp()->ComputeSize() + moov()->ComputeSize();
+
41  return true;
+
42 }
+
43 
+
44 bool SingleSegmentSegmenter::GetIndexRange(size_t* offset, size_t* size) {
+
45  // Index range is right after init range so the offset must be the size of
+
46  // ftyp and moov.
+
47  *offset = ftyp()->ComputeSize() + moov()->ComputeSize();
+
48  *size = vod_sidx_->ComputeSize();
+
49  return true;
+
50 }
+
51 
+
52 Status SingleSegmentSegmenter::DoInitialize() {
+
53  // Single segment segmentation involves two stages:
+
54  // Stage 1: Create media subsegments from media samples
+
55  // Stage 2: Update media header (moov) which involves copying of media
+
56  // subsegments
+
57  // Assumes stage 2 takes similar amount of time as stage 1. The previous
+
58  // progress_target was set for stage 1. Times two to account for stage 2.
+
59  set_progress_target(progress_target() * 2);
+
60 
+
61  if (!TempFilePath(options().temp_dir, &temp_file_name_))
+
62  return Status(error::FILE_FAILURE, "Unable to create temporary file.");
+
63  temp_file_.reset(File::Open(temp_file_name_.c_str(), "w"));
+
64  return temp_file_
+
65  ? Status::OK
+
66  : Status(error::FILE_FAILURE,
+
67  "Cannot open file to write " + temp_file_name_);
+
68 }
+
69 
+
70 Status SingleSegmentSegmenter::DoFinalize() {
+
71  DCHECK(temp_file_);
+
72  DCHECK(ftyp());
+
73  DCHECK(moov());
+
74  DCHECK(vod_sidx_);
+
75 
+
76  // Close the temp file to prepare for reading later.
+
77  if (!temp_file_.release()->Close()) {
+
78  return Status(error::FILE_FAILURE,
+
79  "Cannot close the temp file " + temp_file_name_);
+
80  }
+
81 
+
82  std::unique_ptr<File, FileCloser> file(
+
83  File::Open(options().output_file_name.c_str(), "w"));
+
84  if (file == NULL) {
+
85  return Status(error::FILE_FAILURE,
+
86  "Cannot open file to write " + options().output_file_name);
+
87  }
+
88 
+
89  LOG(INFO) << "Update media header (moov) and rewrite the file to '"
+
90  << options().output_file_name << "'.";
+
91 
+
92  // Write ftyp, moov and sidx to output file.
+
93  std::unique_ptr<BufferWriter> buffer(new BufferWriter());
+
94  ftyp()->Write(buffer.get());
+
95  moov()->Write(buffer.get());
+
96  vod_sidx_->Write(buffer.get());
+
97  Status status = buffer->WriteToFile(file.get());
+
98  if (!status.ok())
+
99  return status;
+
100 
+
101  // Load the temp file and write to output file.
+
102  std::unique_ptr<File, FileCloser> temp_file(
+
103  File::Open(temp_file_name_.c_str(), "r"));
+
104  if (temp_file == NULL) {
+
105  return Status(error::FILE_FAILURE,
+
106  "Cannot open file to read " + temp_file_name_);
+
107  }
+
108 
+
109  // The target of 2nd stage of single segment segmentation.
+
110  const uint64_t re_segment_progress_target = progress_target() * 0.5;
+
111 
+
112  const int kBufSize = 0x200000; // 2MB.
+
113  std::unique_ptr<uint8_t[]> buf(new uint8_t[kBufSize]);
+
114  while (true) {
+
115  int64_t size = temp_file->Read(buf.get(), kBufSize);
+
116  if (size == 0) {
+
117  break;
+
118  } else if (size < 0) {
+
119  return Status(error::FILE_FAILURE,
+
120  "Failed to read file " + temp_file_name_);
+
121  }
+
122  int64_t size_written = file->Write(buf.get(), size);
+
123  if (size_written != size) {
+
124  return Status(error::FILE_FAILURE,
+
125  "Failed to write file " + options().output_file_name);
+
126  }
+
127  UpdateProgress(static_cast<double>(size) / temp_file->Size() *
+
128  re_segment_progress_target);
+
129  }
+
130  SetComplete();
+
131  return Status::OK;
+
132 }
+
133 
+
134 Status SingleSegmentSegmenter::DoFinalizeSegment() {
+
135  DCHECK(sidx());
+
136  DCHECK(fragment_buffer());
+
137  // sidx() contains pre-generated segment references with one reference per
+
138  // fragment. In VOD, this segment is converted into a subsegment, i.e. one
+
139  // reference, which contains all the fragments in sidx().
+
140  std::vector<SegmentReference>& refs = sidx()->references;
+
141  SegmentReference& vod_ref = refs[0];
+
142  uint64_t first_sap_time =
+
143  refs[0].sap_delta_time + refs[0].earliest_presentation_time;
+
144  for (uint32_t i = 1; i < refs.size(); ++i) {
+
145  vod_ref.referenced_size += refs[i].referenced_size;
+
146  // NOTE: We calculate subsegment duration based on the total duration of
+
147  // this subsegment instead of subtracting earliest_presentation_time as
+
148  // indicated in the spec.
+
149  vod_ref.subsegment_duration += refs[i].subsegment_duration;
+
150  vod_ref.earliest_presentation_time = std::min(
+
151  vod_ref.earliest_presentation_time, refs[i].earliest_presentation_time);
+
152 
+
153  if (vod_ref.sap_type == SegmentReference::TypeUnknown &&
+
154  refs[i].sap_type != SegmentReference::TypeUnknown) {
+
155  vod_ref.sap_type = refs[i].sap_type;
+
156  first_sap_time =
+
157  refs[i].sap_delta_time + refs[i].earliest_presentation_time;
+
158  }
+
159  }
+
160  // Calculate sap delta time w.r.t. earliest_presentation_time.
+
161  if (vod_ref.sap_type != SegmentReference::TypeUnknown) {
+
162  vod_ref.sap_delta_time =
+
163  first_sap_time - vod_ref.earliest_presentation_time;
+
164  }
+
165 
+
166  // Create segment if it does not exist yet.
+
167  if (vod_sidx_ == NULL) {
+
168  vod_sidx_.reset(new SegmentIndex());
+
169  vod_sidx_->reference_id = sidx()->reference_id;
+
170  vod_sidx_->timescale = sidx()->timescale;
+
171 
+
172  if (vod_ref.earliest_presentation_time > 0) {
+
173  const double starting_time_in_seconds =
+
174  static_cast<double>(vod_ref.earliest_presentation_time) /
+
175  GetReferenceTimeScale();
+
176  // Give a warning if it is significant.
+
177  if (starting_time_in_seconds > 0.5) {
+
178  // Note that DASH IF player requires presentationTimeOffset to be set in
+
179  // Segment{Base,List,Template} if there is non-zero starting time. Since
+
180  // current Chromium's MSE implementation uses DTS, the player expects
+
181  // DTS to be used.
+
182  LOG(WARNING) << "Warning! Non-zero starting time (in seconds): "
+
183  << starting_time_in_seconds
+
184  << ". Manual adjustment of presentationTimeOffset in "
+
185  "mpd might be necessary.";
+
186  }
+
187  }
+
188  // Force earliest_presentation_time to start from 0 for VOD.
+
189  vod_sidx_->earliest_presentation_time = 0;
+
190  }
+
191  vod_sidx_->references.push_back(vod_ref);
+
192 
+
193  // Append fragment buffer to temp file.
+
194  size_t segment_size = fragment_buffer()->Size();
+
195  Status status = fragment_buffer()->WriteToFile(temp_file_.get());
+
196  if (!status.ok()) return status;
+
197 
+
198  UpdateProgress(vod_ref.subsegment_duration);
+
199  if (muxer_listener()) {
+
200  muxer_listener()->OnSampleDurationReady(sample_duration());
+
201  muxer_listener()->OnNewSegment(options().output_file_name,
+
202  vod_ref.earliest_presentation_time,
+
203  vod_ref.subsegment_duration, segment_size);
+
204  }
+
205  return Status::OK;
+
206 }
+
207 
+
208 } // namespace mp4
+
209 } // namespace media
+
210 } // namespace shaka
virtual void OnNewSegment(const std::string &segment_name, uint64_t start_time, uint64_t duration, uint64_t segment_file_size)=0
virtual bool Open()=0
Internal open. Should not be used directly.
virtual void OnSampleDurationReady(uint32_t sample_duration)=0
bool TempFilePath(const std::string &temp_dir, std::string *temp_file_path)
Definition: file_util.cc:27
-
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:268
+
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:267
static bool Delete(const char *file_name)
Definition: file.cc:163
diff --git a/docs/de/d22/aes__pattern__cryptor_8cc_source.html b/docs/de/d22/aes__pattern__cryptor_8cc_source.html index 489ec3ae96..25e4f912b0 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 28387c622a..5fe71eb68c 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 7a2762616f..821759225f 100644 --- a/docs/de/d29/structshaka_1_1media_1_1mp4_1_1TrackExtends.html +++ b/docs/de/d29/structshaka_1_1media_1_1mp4_1_1TrackExtends.html @@ -194,7 +194,7 @@ Additional Inherited Members diff --git a/docs/de/d33/classshaka_1_1media_1_1WebMTracksParser-members.html b/docs/de/d33/classshaka_1_1media_1_1WebMTracksParser-members.html index aba59cd2e6..f7202ead8f 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 4ba1859340..88e94c7824 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 bfd60965dc..caeb6b508a 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 23e5d7efa3..d6d202da95 100644 --- a/docs/de/d3c/h26x__byte__to__unit__stream__converter_8cc_source.html +++ b/docs/de/d3c/h26x__byte__to__unit__stream__converter_8cc_source.html @@ -162,7 +162,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d3c/macros_8h_source.html b/docs/de/d3c/macros_8h_source.html index 4ec72e64b9..e07a62e3e7 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 3921477c46..f1b82d7215 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 9cafc2a79b..b75a28a445 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 88ef6d27a4..8081a7de76 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 542701d8e1..4967e74f85 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 878a3142b4..2bd9a96a63 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 c2adefcae3..f568a2ebe6 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 00d28ee9f9..2c6135cad2 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 d543ecae4a..fa9c53e0bb 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 0b7d29fbc4..1a784e2ec4 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 eb5ced93e4..6c4d542d9c 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 8be818db45..1bc8b88af5 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 @@ -118,7 +118,7 @@ void 

Detailed Description

This class takes PesPackets, encapsulates them into TS packets, and write the data to file. This also creates PSI from StreamInfo.

-

Definition at line 28 of file ts_writer.h.

+

Definition at line 30 of file ts_writer.h.

Member Function Documentation

@@ -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 febeaa88b4..193166a1b3 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 69745fe14d..c3ee2b22e7 100644 --- a/docs/de/d6e/language__utils_8h_source.html +++ b/docs/de/d6e/language__utils_8h_source.html @@ -114,7 +114,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d70/http__key__fetcher_8cc_source.html b/docs/de/d70/http__key__fetcher_8cc_source.html index 0d786dd8f9..a578092f00 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 326efee4a3..2025c1cd0b 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 7d8a61ebda..b1b67b5b7a 100644 --- a/docs/de/d7b/mp4__media__parser_8h_source.html +++ b/docs/de/d7b/mp4__media__parser_8h_source.html @@ -203,7 +203,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/d7e/classshaka_1_1media_1_1mp2t_1_1TsSectionPsi.html b/docs/de/d7e/classshaka_1_1media_1_1mp2t_1_1TsSectionPsi.html index 67f57b27af..4a54a13767 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 ccff6f92ff..2097ae757a 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 05bcf91073..797f8fc73d 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 e8a63c1b09..3632d35878 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 d7a9e84ef5..a4328f2cf7 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 ac3f4c4ff4..e0ec1b8682 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 5df880d1b2..a48da0073f 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 a11485d460..ff2588f4bc 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 6f50d19ef7..b70cdb5e20 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 a6ef987a37..6a561e4ff3 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 d2ab1bc803..d0ab3479d4 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 71e7c5623d..acaea23c23 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 4bb3206472..450a253937 100644 --- a/docs/de/dc1/demuxer_8h_source.html +++ b/docs/de/dc1/demuxer_8h_source.html @@ -102,95 +102,129 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
13 
14 #include "packager/base/compiler_specific.h"
15 #include "packager/media/base/container_names.h"
-
16 #include "packager/media/base/status.h"
-
17 
-
18 namespace shaka {
-
19 namespace media {
-
20 
-
21 class Decryptor;
-
22 class File;
-
23 class KeySource;
-
24 class MediaParser;
-
25 class MediaSample;
-
26 class MediaStream;
-
27 class StreamInfo;
-
28 
-
31 class Demuxer {
-
32  public:
-
36  explicit Demuxer(const std::string& file_name);
-
37  ~Demuxer();
-
38 
-
43  void SetKeySource(std::unique_ptr<KeySource> key_source);
-
44 
- -
51 
-
54  Status Run();
-
55 
-
57  Status Parse();
-
58 
-
61  void Cancel();
-
62 
-
67  const std::vector<std::unique_ptr<MediaStream>>& streams() {
-
68  return streams_;
-
69  }
-
70 
-
73  MediaContainerName container_name() { return container_name_; }
-
74 
-
75  private:
-
76  Demuxer(const Demuxer&) = delete;
-
77  Demuxer& operator=(const Demuxer&) = delete;
-
78 
-
79  struct QueuedSample {
-
80  QueuedSample(uint32_t track_id, std::shared_ptr<MediaSample> sample);
-
81  ~QueuedSample();
-
82 
-
83  uint32_t track_id;
-
84  std::shared_ptr<MediaSample> sample;
-
85  };
-
86 
-
87  // Parser init event.
-
88  void ParserInitEvent(const std::vector<std::shared_ptr<StreamInfo>>& streams);
-
89  // Parser new sample event handler. Queues the samples if init event has not
-
90  // been received, otherwise calls PushSample() to push the sample to
-
91  // corresponding stream.
-
92  bool NewSampleEvent(uint32_t track_id,
-
93  const std::shared_ptr<MediaSample>& sample);
-
94  // Helper function to push the sample to corresponding stream.
-
95  bool PushSample(uint32_t track_id,
-
96  const std::shared_ptr<MediaSample>& sample);
-
97 
-
98  std::string file_name_;
-
99  File* media_file_;
-
100  bool init_event_received_;
-
101  Status init_parsing_status_;
-
102  // Queued samples received in NewSampleEvent() before ParserInitEvent().
-
103  std::deque<QueuedSample> queued_samples_;
-
104  std::unique_ptr<MediaParser> parser_;
-
105  std::vector<std::unique_ptr<MediaStream>> streams_;
-
106  MediaContainerName container_name_;
-
107  std::unique_ptr<uint8_t[]> buffer_;
-
108  std::unique_ptr<KeySource> key_source_;
-
109  bool cancelled_;
-
110 };
-
111 
-
112 } // namespace media
-
113 } // namespace shaka
-
114 
-
115 #endif // MEDIA_BASE_DEMUXER_H_
-
MediaContainerName container_name()
Definition: demuxer.h:73
- - -
void SetKeySource(std::unique_ptr< KeySource > key_source)
Definition: demuxer.cc:50
-
const std::vector< std::unique_ptr< MediaStream > > & streams()
Definition: demuxer.h:67
- -
Status Parse()
Read from the source and send it to the parser.
Definition: demuxer.cc:197
-
Status Initialize()
Definition: demuxer.cc:54
-
Demuxer(const std::string &file_name)
Definition: demuxer.cc:36
+
16 #include "packager/media/base/media_handler.h"
+
17 #include "packager/media/base/status.h"
+
18 
+
19 namespace shaka {
+
20 namespace media {
+
21 
+
22 class Decryptor;
+
23 class File;
+
24 class KeySource;
+
25 class MediaParser;
+
26 class MediaSample;
+
27 class MediaStream;
+
28 class StreamInfo;
+
29 
+
32 class Demuxer : public MediaHandler {
+
33  public:
+
37  explicit Demuxer(const std::string& file_name);
+
38  ~Demuxer();
+
39 
+
44  void SetKeySource(std::unique_ptr<KeySource> key_source);
+
45 
+
48  Status Run();
+
49 
+
52  void Cancel();
+
53 
+
56  MediaContainerName container_name() { return container_name_; }
+
57 
+
62  Status SetHandler(const std::string& stream_label,
+
63  std::shared_ptr<MediaHandler> handler);
+
64 
+
70  void SetLanguageOverride(const std::string& stream_label,
+
71  const std::string& language_override);
+
72 
+
73  void set_dump_stream_info(bool dump_stream_info) {
+
74  dump_stream_info_ = dump_stream_info;
+
75  }
+
76 
+
77  protected:
+
80  Status InitializeInternal() override { return Status::OK; }
+
81  Status Process(std::unique_ptr<StreamData> stream_data) override {
+
82  return Status(error::INTERNAL_ERROR,
+
83  "Demuxer should not be the downstream handler.");
+
84  }
+
85  bool ValidateOutputStreamIndex(int stream_index) const override {
+
86  // We don't know if the stream is valid or not when setting up the graph.
+
87  // Will validate the stream index later when stream info is available.
+
88  return true;
+
89  }
+
91 
+
92  private:
+
93  Demuxer(const Demuxer&) = delete;
+
94  Demuxer& operator=(const Demuxer&) = delete;
+
95 
+
96  struct QueuedSample {
+
97  QueuedSample(uint32_t track_id, std::shared_ptr<MediaSample> sample);
+
98  ~QueuedSample();
+
99 
+
100  uint32_t track_id;
+
101  std::shared_ptr<MediaSample> sample;
+
102  };
+
103 
+
104  // Initialize the parser. This method primes the demuxer by parsing portions
+
105  // of the media file to extract stream information.
+
106  // @return OK on success.
+
107  Status InitializeParser();
+
108 
+
109  // Parser init event.
+
110  void ParserInitEvent(const std::vector<std::shared_ptr<StreamInfo>>& streams);
+
111  // Parser new sample event handler. Queues the samples if init event has not
+
112  // been received, otherwise calls PushSample() to push the sample to
+
113  // corresponding stream.
+
114  bool NewSampleEvent(uint32_t track_id,
+
115  const std::shared_ptr<MediaSample>& sample);
+
116  // Helper function to push the sample to corresponding stream.
+
117  bool PushSample(uint32_t track_id,
+
118  const std::shared_ptr<MediaSample>& sample);
+
119 
+
120  // Read from the source and send it to the parser.
+
121  Status Parse();
+
122 
+
123  std::string file_name_;
+
124  File* media_file_ = nullptr;
+
125  // A stream is considered ready after receiving the stream info.
+
126  bool all_streams_ready_ = false;
+
127  // Queued samples received in NewSampleEvent() before ParserInitEvent().
+
128  std::deque<QueuedSample> queued_samples_;
+
129  std::unique_ptr<MediaParser> parser_;
+
130  // TrackId -> StreamIndex map.
+
131  std::map<uint32_t, int> track_id_to_stream_index_map_;
+
132  // The list of stream indexes in the above map (in the same order as the input
+
133  // stream info vector).
+
134  std::vector<int> stream_indexes_;
+
135  // StreamIndex -> language_override map.
+
136  std::map<int, std::string> language_overrides_;
+
137  MediaContainerName container_name_ = CONTAINER_UNKNOWN;
+
138  std::unique_ptr<uint8_t[]> buffer_;
+
139  std::unique_ptr<KeySource> key_source_;
+
140  bool cancelled_ = false;
+
141  // Whether to dump stream info when it is received.
+
142  bool dump_stream_info_ = false;
+
143 };
+
144 
+
145 } // namespace media
+
146 } // namespace shaka
+
147 
+
148 #endif // MEDIA_BASE_DEMUXER_H_
+
MediaContainerName container_name()
Definition: demuxer.h:56
+
Status SetHandler(const std::string &stream_label, std::shared_ptr< MediaHandler > handler)
Definition: demuxer.cc:123
+ + +
void SetLanguageOverride(const std::string &stream_label, const std::string &language_override)
Definition: demuxer.cc:133
+ +
void SetKeySource(std::unique_ptr< KeySource > key_source)
Definition: demuxer.cc:78
+ +
Status InitializeInternal() override
Definition: demuxer.h:80
+
Status Process(std::unique_ptr< StreamData > stream_data) override
Definition: demuxer.h:81
+
Demuxer(const std::string &file_name)
Definition: demuxer.cc:70
+
bool ValidateOutputStreamIndex(int stream_index) const override
Validate if the stream at the specified index actually exists.
Definition: demuxer.h:85
diff --git a/docs/de/dc2/classshaka_1_1media_1_1H265Parser.html b/docs/de/dc2/classshaka_1_1media_1_1H265Parser.html index c45f340d94..7d3575ac95 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 9452aa0858..65c46bdd7c 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 630fb97093..22444464f6 100644 --- a/docs/de/dcb/ts__segmenter_8h_source.html +++ b/docs/de/dcb/ts__segmenter_8h_source.html @@ -97,112 +97,111 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
8 #define PACKAGER_MEDIA_FORMATS_MP2T_TS_SEGMENTER_H_
9 
10 #include <memory>
-
11 #include "packager/media/base/media_stream.h"
-
12 #include "packager/media/base/muxer_options.h"
-
13 #include "packager/media/base/status.h"
-
14 #include "packager/media/file/file.h"
-
15 #include "packager/media/formats/mp2t/pes_packet_generator.h"
-
16 #include "packager/media/formats/mp2t/ts_writer.h"
-
17 
-
18 namespace shaka {
-
19 namespace media {
-
20 
-
21 class KeySource;
-
22 class MuxerListener;
-
23 
-
24 namespace mp2t {
-
25 
-
26 // TODO(rkuroiwa): For now, this implements multifile segmenter. Like other
-
27 // make this an abstract super class and implement multifile and single file
-
28 // segmenters.
-
29 class TsSegmenter {
-
30  public:
-
31  // TODO(rkuroiwa): Add progress listener?
-
36  TsSegmenter(const MuxerOptions& options, MuxerListener* listener);
-
37  ~TsSegmenter();
-
38 
-
43  Status Initialize(const StreamInfo& stream_info,
-
44  KeySource* encryption_key_source,
-
45  uint32_t max_sd_pixels,
-
46  uint32_t max_hd_pixels,
-
47  uint32_t max_uhd1_pixels,
-
48  double clear_lead_in_seconds);
-
49 
-
52  Status Finalize();
-
53 
-
56  Status AddSample(std::shared_ptr<MediaSample> sample);
-
57 
-
59  void InjectTsWriterForTesting(std::unique_ptr<TsWriter> writer);
-
60 
- -
63  std::unique_ptr<PesPacketGenerator> generator);
-
64 
-
66  void SetTsWriterFileOpenedForTesting(bool value);
-
67 
-
68  private:
-
69  Status OpenNewSegmentIfClosed(uint32_t next_pts);
-
70 
-
71  // Writes PES packets (carried in TsPackets) to a file. If a file is not open,
-
72  // it will open one. This will not close the file.
-
73  Status WritePesPacketsToFile();
-
74 
-
75  // Flush all the samples that are (possibly) buffered and write them to the
-
76  // current segment, this will close the file. If a file is not already opened
-
77  // before calling this, this will open one and write them to file.
-
78  Status Flush();
-
79 
-
80  // If conditions are met, notify objects that the data is encrypted.
-
81  Status NotifyEncrypted();
-
82 
-
83  const MuxerOptions& muxer_options_;
-
84  MuxerListener* const listener_;
-
85 
-
86  // Scale used to scale the input stream to TS's timesccale (which is 90000).
-
87  // Used for calculating the duration in seconds fo the current segment.
-
88  double timescale_scale_ = 1.0;
-
89 
-
90  // This is the sum of the durations of the samples that were added to
-
91  // PesPacketGenerator for the current segment (in seconds). Note that this is
-
92  // not necessarily the same as the length of the PesPackets that have been
-
93  // written to the current segment in WritePesPacketsToFile().
-
94  double current_segment_total_sample_duration_ = 0.0;
-
95 
-
96  // Used for segment template.
-
97  uint64_t segment_number_ = 0;
-
98 
-
99  std::unique_ptr<TsWriter> ts_writer_;
-
100  // Set to true if TsWriter::NewFile() succeeds, set to false after
-
101  // TsWriter::FinalizeFile() succeeds.
-
102  bool ts_writer_file_opened_ = false;
-
103  std::unique_ptr<PesPacketGenerator> pes_packet_generator_;
-
104 
-
105  // For OnNewSegment().
-
106  uint64_t current_segment_start_time_ = 0;
-
107  // Path of the current segment so that File::GetFileSize() can be used after
-
108  // the segment has been finalized.
-
109  std::string current_segment_path_;
-
110 
-
111  std::unique_ptr<EncryptionKey> encryption_key_;
-
112  double clear_lead_in_seconds_ = 0;
-
113 
-
114  // The total duration of the segments that it has segmented. This only
-
115  // includes segments that have been finailzed. IOW, this does not count the
-
116  // current segments duration.
-
117  double total_duration_in_seconds_ = 0.0;
-
118 
-
119  DISALLOW_COPY_AND_ASSIGN(TsSegmenter);
-
120 };
-
121 
-
122 } // namespace mp2t
-
123 } // namespace media
-
124 } // namespace shaka
-
125 #endif // PACKAGER_MEDIA_FORMATS_MP2T_TS_SEGMENTER_H_
+
11 #include "packager/media/base/muxer_options.h"
+
12 #include "packager/media/base/status.h"
+
13 #include "packager/media/file/file.h"
+
14 #include "packager/media/formats/mp2t/pes_packet_generator.h"
+
15 #include "packager/media/formats/mp2t/ts_writer.h"
+
16 
+
17 namespace shaka {
+
18 namespace media {
+
19 
+
20 class KeySource;
+
21 class MuxerListener;
+
22 
+
23 namespace mp2t {
+
24 
+
25 // TODO(rkuroiwa): For now, this implements multifile segmenter. Like other
+
26 // make this an abstract super class and implement multifile and single file
+
27 // segmenters.
+
28 class TsSegmenter {
+
29  public:
+
30  // TODO(rkuroiwa): Add progress listener?
+
35  TsSegmenter(const MuxerOptions& options, MuxerListener* listener);
+
36  ~TsSegmenter();
+
37 
+
42  Status Initialize(const StreamInfo& stream_info,
+
43  KeySource* encryption_key_source,
+
44  uint32_t max_sd_pixels,
+
45  uint32_t max_hd_pixels,
+
46  uint32_t max_uhd1_pixels,
+
47  double clear_lead_in_seconds);
+
48 
+
51  Status Finalize();
+
52 
+
55  Status AddSample(std::shared_ptr<MediaSample> sample);
+
56 
+
58  void InjectTsWriterForTesting(std::unique_ptr<TsWriter> writer);
+
59 
+ +
62  std::unique_ptr<PesPacketGenerator> generator);
+
63 
+
65  void SetTsWriterFileOpenedForTesting(bool value);
+
66 
+
67  private:
+
68  Status OpenNewSegmentIfClosed(uint32_t next_pts);
+
69 
+
70  // Writes PES packets (carried in TsPackets) to a file. If a file is not open,
+
71  // it will open one. This will not close the file.
+
72  Status WritePesPacketsToFile();
+
73 
+
74  // Flush all the samples that are (possibly) buffered and write them to the
+
75  // current segment, this will close the file. If a file is not already opened
+
76  // before calling this, this will open one and write them to file.
+
77  Status Flush();
+
78 
+
79  // If conditions are met, notify objects that the data is encrypted.
+
80  Status NotifyEncrypted();
+
81 
+
82  const MuxerOptions& muxer_options_;
+
83  MuxerListener* const listener_;
+
84 
+
85  // Scale used to scale the input stream to TS's timesccale (which is 90000).
+
86  // Used for calculating the duration in seconds fo the current segment.
+
87  double timescale_scale_ = 1.0;
+
88 
+
89  // This is the sum of the durations of the samples that were added to
+
90  // PesPacketGenerator for the current segment (in seconds). Note that this is
+
91  // not necessarily the same as the length of the PesPackets that have been
+
92  // written to the current segment in WritePesPacketsToFile().
+
93  double current_segment_total_sample_duration_ = 0.0;
+
94 
+
95  // Used for segment template.
+
96  uint64_t segment_number_ = 0;
+
97 
+
98  std::unique_ptr<TsWriter> ts_writer_;
+
99  // Set to true if TsWriter::NewFile() succeeds, set to false after
+
100  // TsWriter::FinalizeFile() succeeds.
+
101  bool ts_writer_file_opened_ = false;
+
102  std::unique_ptr<PesPacketGenerator> pes_packet_generator_;
+
103 
+
104  // For OnNewSegment().
+
105  uint64_t current_segment_start_time_ = 0;
+
106  // Path of the current segment so that File::GetFileSize() can be used after
+
107  // the segment has been finalized.
+
108  std::string current_segment_path_;
+
109 
+
110  std::unique_ptr<EncryptionKey> encryption_key_;
+
111  double clear_lead_in_seconds_ = 0;
+
112 
+
113  // The total duration of the segments that it has segmented. This only
+
114  // includes segments that have been finailzed. IOW, this does not count the
+
115  // current segments duration.
+
116  double total_duration_in_seconds_ = 0.0;
+
117 
+
118  DISALLOW_COPY_AND_ASSIGN(TsSegmenter);
+
119 };
+
120 
+
121 } // namespace mp2t
+
122 } // namespace media
+
123 } // namespace shaka
+
124 #endif // PACKAGER_MEDIA_FORMATS_MP2T_TS_SEGMENTER_H_
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
Status AddSample(std::shared_ptr< MediaSample > sample)
Definition: ts_segmenter.cc:91
TsSegmenter(const MuxerOptions &options, MuxerListener *listener)
Definition: ts_segmenter.cc:27
- +
void InjectPesPacketGeneratorForTesting(std::unique_ptr< PesPacketGenerator > generator)
Only for testing.
void SetTsWriterFileOpenedForTesting(bool value)
Only for testing.
void InjectTsWriterForTesting(std::unique_ptr< TsWriter > writer)
Only for testing.
@@ -213,7 +212,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 43101e8ac6..9dadb8718f 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 34eff5ab01..51b2e6bfc1 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 5ea88a3269..e8a4dd7d76 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 e23097ee0a..6d98b5dab0 100644 --- a/docs/de/dd6/muxer__listener__test__helper_8cc_source.html +++ b/docs/de/dd6/muxer__listener__test__helper_8cc_source.html @@ -208,7 +208,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/ddd/classshaka_1_1media_1_1Muxer-members.html b/docs/de/ddd/classshaka_1_1media_1_1Muxer-members.html index 082c3e3f46..d0c4941655 100644 --- a/docs/de/ddd/classshaka_1_1media_1_1Muxer-members.html +++ b/docs/de/ddd/classshaka_1_1media_1_1Muxer-members.html @@ -93,32 +93,50 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');

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

- + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - + + + +
AddStream(MediaStream *stream)shaka::media::Muxer
AddHandler(std::shared_ptr< MediaHandler > handler)shaka::media::MediaHandlerinline
Cancel()shaka::media::Muxer
clear_lead_in_seconds() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
clock() (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
crypto_period_duration_in_seconds() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
encryption_key_source() (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
max_hd_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
max_sd_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
max_uhd1_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
MediaStream (defined in shaka::media::Muxer)shaka::media::Muxerfriend
Muxer(const MuxerOptions &options) (defined in shaka::media::Muxer)shaka::media::Muxerexplicit
muxer_listener() (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
Dispatch(std::unique_ptr< StreamData > stream_data)shaka::media::MediaHandlerprotected
DispatchEncryptionConfig(int stream_index, std::unique_ptr< EncryptionConfig > encryption_config)shaka::media::MediaHandlerinlineprotected
DispatchMediaEvent(int stream_index, std::shared_ptr< MediaEvent > media_event)shaka::media::MediaHandlerinlineprotected
DispatchMediaSample(int stream_index, std::shared_ptr< MediaSample > media_sample)shaka::media::MediaHandlerinlineprotected
DispatchPeriodInfo(int stream_index, std::shared_ptr< PeriodInfo > period_info)shaka::media::MediaHandlerinlineprotected
DispatchSegmentInfo(int stream_index, std::shared_ptr< SegmentInfo > segment_info)shaka::media::MediaHandlerinlineprotected
DispatchStreamInfo(int stream_index, std::shared_ptr< StreamInfo > stream_info)shaka::media::MediaHandlerinlineprotected
encryption_key_source() (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
FlushStream(int input_stream_index) overrideshaka::media::Muxerinlineprotectedvirtual
Initialize()shaka::media::MediaHandler
initialized() (defined in shaka::media::MediaHandler)shaka::media::MediaHandlerinlineprotected
InitializeInternal() overrideshaka::media::Muxerinlineprotectedvirtual
max_hd_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
max_sd_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
max_uhd1_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
MediaHandler()=default (defined in shaka::media::MediaHandler)shaka::media::MediaHandler
Muxer(const MuxerOptions &options) (defined in shaka::media::Muxer)shaka::media::Muxerexplicit
muxer_listener() (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
next_output_stream_index() const (defined in shaka::media::MediaHandler)shaka::media::MediaHandlerinlineprotected
num_input_streams() (defined in shaka::media::MediaHandler)shaka::media::MediaHandlerinlineprotected
num_input_streams() const (defined in shaka::media::MediaHandler)shaka::media::MediaHandlerinlineprotected
options() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
output_handlers() (defined in shaka::media::MediaHandler)shaka::media::MediaHandlerinlineprotected
Process(std::unique_ptr< StreamData > stream_data) overrideshaka::media::Muxerprotectedvirtual
progress_listener() (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
protection_scheme() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
Run()shaka::media::Muxer
set_clock(base::Clock *clock)shaka::media::Muxerinline
set_clock(base::Clock *clock)shaka::media::Muxerinline
SetHandler(int output_stream_index, std::shared_ptr< MediaHandler > handler)shaka::media::MediaHandler
SetKeySource(KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)shaka::media::Muxer
SetMuxerListener(std::unique_ptr< MuxerListener > muxer_listener)shaka::media::Muxer
SetProgressListener(std::unique_ptr< ProgressListener > progress_listener)shaka::media::Muxer
streams() const (defined in shaka::media::Muxer)shaka::media::Muxerinline
ValidateOutputStreamIndex(int stream_index) const shaka::media::MediaHandlerprotectedvirtual
~MediaHandler()=default (defined in shaka::media::MediaHandler)shaka::media::MediaHandlervirtual
~Muxer() (defined in shaka::media::Muxer)shaka::media::Muxervirtual
diff --git a/docs/de/ddd/classshaka_1_1media_1_1WebVttSampleConverter.html b/docs/de/ddd/classshaka_1_1media_1_1WebVttSampleConverter.html index 83433f3e43..dcd52bb1f9 100644 --- a/docs/de/ddd/classshaka_1_1media_1_1WebVttSampleConverter.html +++ b/docs/de/ddd/classshaka_1_1media_1_1WebVttSampleConverter.html @@ -224,7 +224,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 76ba531a06..b50a2bbc0f 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 @@ -119,7 +119,7 @@ void 

Detailed Description

-

Definition at line 29 of file ts_segmenter.h.

+

Definition at line 28 of file ts_segmenter.h.

Constructor & Destructor Documentation

@@ -268,7 +268,7 @@ void  diff --git a/docs/de/ddf/structshaka_1_1media_1_1mp4_1_1MediaData-members.html b/docs/de/ddf/structshaka_1_1media_1_1mp4_1_1MediaData-members.html index 8d799d27a1..23c1bc5963 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 19544233c2..7ab8d06c87 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 c9c79a865a..1b20991a34 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 @@ -93,33 +93,52 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');

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

- + - - - - + + + + + + + + + + + + + + + + - - - - + + + + + + + + - - - - - - + + + + + + + + +
AddStream(MediaStream *stream)shaka::media::Muxer
AddHandler(std::shared_ptr< MediaHandler > handler)shaka::media::MediaHandlerinline
Cancel()shaka::media::Muxer
clear_lead_in_seconds() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
clock() (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
crypto_period_duration_in_seconds() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
encryption_key_source() (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
max_hd_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
max_sd_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
max_uhd1_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
Dispatch(std::unique_ptr< StreamData > stream_data)shaka::media::MediaHandlerprotected
DispatchEncryptionConfig(int stream_index, std::unique_ptr< EncryptionConfig > encryption_config)shaka::media::MediaHandlerinlineprotected
DispatchMediaEvent(int stream_index, std::shared_ptr< MediaEvent > media_event)shaka::media::MediaHandlerinlineprotected
DispatchMediaSample(int stream_index, std::shared_ptr< MediaSample > media_sample)shaka::media::MediaHandlerinlineprotected
DispatchPeriodInfo(int stream_index, std::shared_ptr< PeriodInfo > period_info)shaka::media::MediaHandlerinlineprotected
DispatchSegmentInfo(int stream_index, std::shared_ptr< SegmentInfo > segment_info)shaka::media::MediaHandlerinlineprotected
DispatchStreamInfo(int stream_index, std::shared_ptr< StreamInfo > stream_info)shaka::media::MediaHandlerinlineprotected
encryption_key_source() (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
FlushStream(int input_stream_index) overrideshaka::media::Muxerinlineprotectedvirtual
Initialize()shaka::media::MediaHandler
initialized() (defined in shaka::media::MediaHandler)shaka::media::MediaHandlerinlineprotected
InitializeInternal() overrideshaka::media::Muxerinlineprotectedvirtual
max_hd_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
max_sd_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
max_uhd1_pixels() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
MediaHandler()=default (defined in shaka::media::MediaHandler)shaka::media::MediaHandler
MP4Muxer(const MuxerOptions &options)shaka::media::mp4::MP4Muxerexplicit
Muxer(const MuxerOptions &options) (defined in shaka::media::Muxer)shaka::media::Muxerexplicit
muxer_listener() (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
options() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
progress_listener() (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
protection_scheme() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
Run()shaka::media::Muxer
next_output_stream_index() const (defined in shaka::media::MediaHandler)shaka::media::MediaHandlerinlineprotected
num_input_streams() (defined in shaka::media::MediaHandler)shaka::media::MediaHandlerinlineprotected
num_input_streams() const (defined in shaka::media::MediaHandler)shaka::media::MediaHandlerinlineprotected
options() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
output_handlers() (defined in shaka::media::MediaHandler)shaka::media::MediaHandlerinlineprotected
Process(std::unique_ptr< StreamData > stream_data) overrideshaka::media::Muxerprotectedvirtual
progress_listener() (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
protection_scheme() const (defined in shaka::media::Muxer)shaka::media::Muxerinlineprotected
set_clock(base::Clock *clock)shaka::media::Muxerinline
SetKeySource(KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)shaka::media::Muxer
SetMuxerListener(std::unique_ptr< MuxerListener > muxer_listener)shaka::media::Muxer
SetProgressListener(std::unique_ptr< ProgressListener > progress_listener)shaka::media::Muxer
streams() const (defined in shaka::media::Muxer)shaka::media::Muxerinline
~MP4Muxer() override (defined in shaka::media::mp4::MP4Muxer)shaka::media::mp4::MP4Muxer
~Muxer() (defined in shaka::media::Muxer)shaka::media::Muxervirtual
SetHandler(int output_stream_index, std::shared_ptr< MediaHandler > handler)shaka::media::MediaHandler
SetKeySource(KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)shaka::media::Muxer
SetMuxerListener(std::unique_ptr< MuxerListener > muxer_listener)shaka::media::Muxer
SetProgressListener(std::unique_ptr< ProgressListener > progress_listener)shaka::media::Muxer
streams() const (defined in shaka::media::Muxer)shaka::media::Muxerinline
ValidateOutputStreamIndex(int stream_index) const shaka::media::MediaHandlerprotectedvirtual
~MediaHandler()=default (defined in shaka::media::MediaHandler)shaka::media::MediaHandlervirtual
~MP4Muxer() override (defined in shaka::media::mp4::MP4Muxer)shaka::media::mp4::MP4Muxer
~Muxer() (defined in shaka::media::Muxer)shaka::media::Muxervirtual
diff --git a/docs/de/de4/structshaka_1_1media_1_1H264Pps.html b/docs/de/de4/structshaka_1_1media_1_1H264Pps.html index ccf0a5f7a1..dd4660497e 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 8ebff205c1..4c5482fd88 100644 --- a/docs/de/dea/classshaka_1_1media_1_1H26xByteToUnitStreamConverter.html +++ b/docs/de/dea/classshaka_1_1media_1_1H26xByteToUnitStreamConverter.html @@ -216,7 +216,7 @@ static 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 8a98147e20..8bfccc6278 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 dd11f5151c..162e573d63 100644 --- a/docs/de/df6/classshaka_1_1media_1_1mp4_1_1TrackRunIterator.html +++ b/docs/de/df6/classshaka_1_1media_1_1mp4_1_1TrackRunIterator.html @@ -412,7 +412,7 @@ bool is_keyframe () co diff --git a/docs/de/dfa/classshaka_1_1media_1_1webm_1_1Encryptor.html b/docs/de/dfa/classshaka_1_1media_1_1webm_1_1Encryptor.html index 4789ff8eb2..766f2e8877 100644 --- a/docs/de/dfa/classshaka_1_1media_1_1webm_1_1Encryptor.html +++ b/docs/de/dfa/classshaka_1_1media_1_1webm_1_1Encryptor.html @@ -215,7 +215,7 @@ Public Member Functions diff --git a/docs/de/dfa/muxer__listener_8h_source.html b/docs/de/dfa/muxer__listener_8h_source.html index 93e7f49fbb..a97a4f20c1 100644 --- a/docs/de/dfa/muxer__listener_8h_source.html +++ b/docs/de/dfa/muxer__listener_8h_source.html @@ -173,7 +173,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/de/dfa/structshaka_1_1media_1_1mp4_1_1OpusSpecific.html b/docs/de/dfa/structshaka_1_1media_1_1mp4_1_1OpusSpecific.html index b50a73ce5f..530f02d95a 100644 --- a/docs/de/dfa/structshaka_1_1media_1_1mp4_1_1OpusSpecific.html +++ b/docs/de/dfa/structshaka_1_1media_1_1mp4_1_1OpusSpecific.html @@ -176,7 +176,7 @@ Additional Inherited Members diff --git a/docs/de/dfd/stream__info_8cc_source.html b/docs/de/dfd/stream__info_8cc_source.html index 4432701724..be197ca012 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 26339bc27b..6a121bd905 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 dcfe45c2c2..7f315d3c15 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 23d3a66455..1c5fa1c94c 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 a4a749151e..6e78cf2316 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 8eb52e46e2..0eba47fb68 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 f1d6c16916..852153bc58 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 6a725d1a76..2768bd53e5 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 8ff1567902..7360384fbc 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 6601b3acf1..6c35b37c6e 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 e5d4004dc8..6d5da299a0 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 bd9365fe78..90e8e7224f 100644 --- a/docs/df/d32/audio__stream__info_8h_source.html +++ b/docs/df/d32/audio__stream__info_8h_source.html @@ -164,7 +164,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d33/classshaka_1_1AdaptationSet-members.html b/docs/df/d33/classshaka_1_1AdaptationSet-members.html index ebddc6ae28..6d3a7ee452 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 e891c47d51..062dce0673 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 ee378fa12e..8b2d1dfd2e 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 98eb58bcf8..2af0958564 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 07bfe69168..0da348cb5c 100644 --- a/docs/df/d46/classshaka_1_1media_1_1Muxer.html +++ b/docs/df/d46/classshaka_1_1media_1_1Muxer.html @@ -89,7 +89,6 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
shaka::media::Muxer Class Referenceabstract
@@ -103,9 +102,10 @@ Inheritance diagram for shaka::media::Muxer:
-shaka::media::mp2t::TsMuxer -shaka::media::mp4::MP4Muxer -shaka::media::webm::WebMMuxer +shaka::media::MediaHandler +shaka::media::mp2t::TsMuxer +shaka::media::mp4::MP4Muxer +shaka::media::webm::WebMMuxer
@@ -116,25 +116,29 @@ Public Member Functions - - - - - - - - + + + + + + + + + + +
 
void SetKeySource (KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)
 
-void AddStream (MediaStream *stream)
 Add video/audio stream.
 
-Status Run ()
 Drive the remuxing from muxer side (pull).
 
void Cancel ()
 
void SetMuxerListener (std::unique_ptr< MuxerListener > muxer_listener)
 
void SetProgressListener (std::unique_ptr< ProgressListener > progress_listener)
 
-const std::vector< MediaStream * > & streams () const
 
+const std::vector
+< std::shared_ptr< StreamInfo > > & 
streams () const
 
void set_clock (base::Clock *clock)
 
- Public Member Functions inherited from shaka::media::MediaHandler
+Status SetHandler (int output_stream_index, std::shared_ptr< MediaHandler > handler)
 Connect downstream handler at the specified output stream index.
 
+Status AddHandler (std::shared_ptr< MediaHandler > handler)
 Connect downstream handler to the next availble output stream index.
 
Status Initialize ()
 
@@ -171,17 +175,68 @@ base::Clock *  -

Protected Member Functions

clock ()
FourCC protection_scheme () const
 
- - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

-Friends

-class MediaStream
 
MediaHandler implementation overrides.
Status InitializeInternal () override
 
Status Process (std::unique_ptr< StreamData > stream_data) override
 
+Status FlushStream (int input_stream_index) override
 Flush the stream at the specified input stream index.
 
- Protected Member Functions inherited from shaka::media::MediaHandler
+virtual bool ValidateOutputStreamIndex (int stream_index) const
 Validate if the stream at the specified index actually exists.
 
+bool initialized ()
 
+int num_input_streams ()
 
Status Dispatch (std::unique_ptr< StreamData > stream_data)
 
+Status DispatchPeriodInfo (int stream_index, std::shared_ptr< PeriodInfo > period_info)
 Dispatch the period info to downstream handlers.
 
+Status DispatchStreamInfo (int stream_index, std::shared_ptr< StreamInfo > stream_info)
 Dispatch the stream info to downstream handlers.
 
+Status DispatchEncryptionConfig (int stream_index, std::unique_ptr< EncryptionConfig > encryption_config)
 Dispatch the encryption config to downstream handlers.
 
+Status DispatchMediaSample (int stream_index, std::shared_ptr< MediaSample > media_sample)
 Dispatch the media sample to downstream handlers.
 
+Status DispatchMediaEvent (int stream_index, std::shared_ptr< MediaEvent > media_event)
 Dispatch the media event to downstream handlers.
 
+Status DispatchSegmentInfo (int stream_index, std::shared_ptr< SegmentInfo > segment_info)
 Dispatch the segment info to downstream handlers.
 
+int num_input_streams () const
 
+int next_output_stream_index () const
 
+const std::map< int, std::pair
+< std::shared_ptr
+< MediaHandler >, int > > & 
output_handlers ()
 

Detailed Description

Muxer is responsible for taking elementary stream samples and producing media containers. An optional KeySource can be provided to Muxer to generate encrypted outputs.

-

Definition at line 32 of file muxer.h.

+

Definition at line 33 of file muxer.h.

Member Function Documentation

@@ -197,7 +252,64 @@ class MediaStream

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

-

Definition at line 90 of file muxer.cc.

+

Definition at line 48 of file muxer.cc.

+ +
+ + +
+
+ + + + + +
+ + + + + + + +
Status shaka::media::Muxer::InitializeInternal ()
+
+inlineoverrideprotectedvirtual
+
+

Internal implementation of initialize. Note that it should only initialize the MediaHandler itself. Downstream handlers are handled in Initialize().

+ +

Implements shaka::media::MediaHandler.

+ +

Definition at line 98 of file muxer.h.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + +
Status shaka::media::Muxer::Process (std::unique_ptr< StreamDatastream_data)
+
+overrideprotectedvirtual
+
+

Process the incoming stream data. Note that (1) stream_data.stream_index should be the input stream index; (2) The implementation needs to call DispatchXxx to dispatch the processed stream data to the downstream handlers after finishing processing if needed.

+ +

Implements shaka::media::MediaHandler.

+ +

Definition at line 61 of file muxer.cc.

@@ -230,7 +342,7 @@ class MediaStream -

Definition at line 94 of file muxer.h.

+

Definition at line 91 of file muxer.h.

@@ -301,7 +413,7 @@ class MediaStream -

Definition at line 33 of file muxer.cc.

+

Definition at line 31 of file muxer.cc.

@@ -326,7 +438,7 @@ class MediaStream -

Definition at line 94 of file muxer.cc.

+

Definition at line 52 of file muxer.cc.

@@ -351,7 +463,7 @@ class MediaStream -

Definition at line 98 of file muxer.cc.

+

Definition at line 56 of file muxer.cc.

@@ -362,7 +474,7 @@ class MediaStream diff --git a/docs/df/d46/classshaka_1_1media_1_1Muxer.png b/docs/df/d46/classshaka_1_1media_1_1Muxer.png index 86d41e05904e0d7ea3b9ee7b831bfbc62561a1e8..34d41fbff6e9aafcdc7f7fed4e9ab1e4c2d5a5e4 100644 GIT binary patch literal 1904 zcmb`Ie^3)=8pnfB`=4e7h;#sTNu`&8D(k;YiCHYP( z?Cuapcy%N1{DI4YS2Azk3t6#Ajgc$fQr9l5{XEJ>clA0rv*M^}U|`TT8S&{wsNPb_ zyA8n{hYf+#910gqZkhc7oVipfEPNg+C(#Ti3K**wi{5GmAp%bK{Z{nPGw$Ql1d=ILc^~mB--RgI(2DgACTaeutN-3F~Y>`lQ z!t#f658O6t?+r96Aa5>kPl7=&sWQ>{;DsE`)TUgQ{6w&>nks%XtD2g7`?UD}le<4= zvb3;DQ%ZL`yCh6Go?bMr%tQ-7Bi>T~BU`IlN6q$6bN)zghbZFfDf=$0)cW10;VP#M zHW|?fT|pc9Bm(+?B{XFDKoMUf9PM6N6F#x)=l{Re5apjMx<5&8L-K1lseOJKVe!B1 ze^Y>z6$85-RGIDIDAfdQ!9x@=zs{!&ALlN#zHnc+<~T5?ZyqteH{ox{zDBH%Eh{?L z-BuA-&yu=*<0Fbwsywr5mlawI=Z~8Lzx2~&2T+*-;~$JAFYV>G)}1pOc6o&&T(sv* zgfCpD{By;R$vkxjb(jpb(a+Rbv5_R^3vQNclYha$dxn*`Zzz&k+{=cmajh7%)Y-T0 zafD3LOyDV?`5)VbU9XKb^;U?donc)8(0ykWX z!}TWoqnDpI&;QU%bEfs_F-w9x{$V7M|GNK8`F|v?`Zuyaxuq#|8TrmLri>h7t3AKc zY~5`q@rbf6M9yVw)#lvj3R|O>D1z(pp{{D1!%|#&(e7wszi06KI^HAOl&Z3ZSbAW8 z5XV8{;Tpkxp3y+VpmU@BFYN9f_;eg`X;r$7Z-9MQf2|&CzyD;_0M@>1$iOKp2Ep+@ zV+IJa!so9hRNMl={TLDea0w6y%1bE#kg`Psf)WoA04(?J*X#!F9fuPD^%G*i&PY{Gcs{~Yky~79HI4v75C@PZ&aB3nKV-`DP z$w9d65)r;2fWU_NQcXGOdVIj$lx29Ci_%Xg4^=|ubny`a=*@`mdW;PS-rv>N*tpd^mMPCn#w7Zqlp6FpVvy%oy7! zN^yQakxQj9hEcT<_i>`YQy?IagexqSJcwql1p3*Ph+Yhqte=2k1=k1kshL&m6nJ7 zaOWM8qD$EBn>Iugt7&|{v9%`L2=-dxDcE!)zg~XnNgCSpGhq(OyPcd`A{x81{D6ap ziQL=b`?#isA$(Xy!1UpJk|&dSe?dN;d4BTQ_170c@GEj=<9KaP+KaOv!PS}g0ixL( zfj=l&{FOAhHRW~oMhksuc@j_HhCIOwU#-{>wW XxV1HYr*|{*dqhP?#uHlhow)Ej8t%1A delta 1312 zcmai!ZB&wH7{?!mbFOrUbknBdOHrmF*-R?el1xpGX)lWMl1oKI6mm=}T^aOxR!&7! ze0R%yJ1Kg6GB|1}X9_f#I!v<%G|ov=l(amUm4WVY=d`nL`}Vs(T-W`-e%F2O*I$fp z5IAf&ZiNH@ppXse3*7yA76xL_p{Pv6e3kmgCV!Mg#qC>bYf}|;RA?aThvv%f#)%zh zdNim=Nj;5lQTSN*+5tYm<*Y|I3ZAbg;{oJfXq9Cg&`E~?Yr=V~6Ca@;G{<@!Ipw@Y zijJu_+7ub+lE42~b(0s%TwHwsf*-Gf&hs_N6hn{F^Ges_XQS7z~#% zG#M7SI}6PNAR=gH5H~=@o@=i6-ZeY{iNjl`OD|5XnlamD!B{6k#=@&)p*#9;S6K=N z^cvf}&~y$}Qdg^&FesBgv=BHnlbc@RI5WC{@rsaiDtXb2 zf#sFKAwULLOeZ;U{FL>xPa$3Xf36K!n3^0#kAHZmYX2_iQ07ye_(*Shz$1z;^(tNdIB zZ01*!dFuu%SReLnhk*shYqc@a^qp1Ir5*vg9!F*B7{Eh1KQyD?%XYWL1rqD z05=SL9t5~AJ^}g^AmUozP53NE{G7``THUlmj3+rO+x9-*mq%w-COaz^voCE^?;x%n zeE%eLxM#@DE-Mw|=_U#n1|~olPy9!~z>tvcrFCOnD2m|;N2Z!yYWw5gMGE`7TUJdZ z*Yw3nTw1u)CyOX~hmG76EyQt)8e;^@=Jw@S#eq5b{fvTe;UL-mSJL#ZnX#se!i>vj zK;rOz=;S?l&-VkzS|3R1*;G8yf3k&58Oee25@~tWS*D**13Kzzhe2BIbxbvUO{MZD zJlv_`3FaHg9)-0+UufmV9}XizPB$+gdaK&wYNCBz*>De4TwK%Qsbxu!&~&^??-$wK z9VPgbmFKB?;w(4MdwwXLz@#P+HQX(<86QK`2f4%BR|<{CO0t0S^zQhXjE*o;tc#v1 zp+o(X>BhYQCk-ssY9?6}z^I!&Y$$Hvoj#Ra9j0-a0nb`TRw1>|*Gw;bCvr!N#AzrS zjSHn#qfcX`GC$PkwkVmG$oB7thvIRbgKy}NBu%Uikupkl>hQ;eDY$kuF1~*oDW|n_ z^dVWvS$ceE4%`YYpQV_uvyXs o_!~OaEiC*3DFv->8l0}_B%q$(_IZ&TrnUF-E z)SOh4Z%M(X6q7C#p0C*n-oJ;Istb*8+UqJs^WE3(=87702NF8o-oa~jAI%0yJ&kh{ zPHp9!rK^X|sT^xf>LO0SSgv=MCPaGM5M0JuJv-zY^~=|_FAH2-Y248eV{c~c`;|?? z_L&GLb8_jln(L*NlX(sreg2h1dv9a?Y}gBY>|Ey!b_0~BZNy}kBTryv8!DwIh%0;0 zy{5V#;fS4TJ25RD!pwdFzoBQp!&^sRiop}-`s}0%ka&`St-#3FAryw|eK4@sVX6Sk oo!obj&rVfvon2){Tk~fpmUvNRyXQe*Bm5N-gCl}k0^_dy4f3jfUH||9 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 1afff9f1f8..1f841ebd9a 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 7f6ac269f0..28bd207481 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 a804743271..e5dbe064aa 100644 --- a/docs/df/d51/classshaka_1_1media_1_1RsaPrivateKey-members.html +++ b/docs/df/d51/classshaka_1_1media_1_1RsaPrivateKey-members.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d51/classshaka_1_1media_1_1mp4_1_1EncryptingFragmenter-members.html b/docs/df/d51/classshaka_1_1media_1_1mp4_1_1EncryptingFragmenter-members.html index 5de58b0c39..9dc2c30353 100644 --- a/docs/df/d51/classshaka_1_1media_1_1mp4_1_1EncryptingFragmenter-members.html +++ b/docs/df/d51/classshaka_1_1media_1_1mp4_1_1EncryptingFragmenter-members.html @@ -122,7 +122,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d60/classshaka_1_1MockMpdBuilder.html b/docs/df/d60/classshaka_1_1MockMpdBuilder.html index 17f8153ceb..6b830ca790 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 5a9dbdf3c5..1de516a42d 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 fee3b1273f..f22675468e 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 6ee574bb22..c2f72fbcce 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 902879f3de..3254bf2265 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 43e1515eb5..39810e2fd0 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 93c939e10a..d34ec2d6ca 100644 --- a/docs/df/d7b/structshaka_1_1media_1_1mp4_1_1TrackFragment.html +++ b/docs/df/d7b/structshaka_1_1media_1_1mp4_1_1TrackFragment.html @@ -198,7 +198,7 @@ Additional Inherited Members diff --git a/docs/df/d7d/webm__info__parser_8cc_source.html b/docs/df/d7d/webm__info__parser_8cc_source.html index 1a1ebb6c45..a8bce4dbb2 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 0ebe99ef8d..6a66f085ea 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 681142ee08..a9f9fedc45 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 8f227bac00..ab0a04e4c1 100644 --- a/docs/df/d8a/structshaka_1_1media_1_1mp4_1_1DataEntryUrl.html +++ b/docs/df/d8a/structshaka_1_1media_1_1mp4_1_1DataEntryUrl.html @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/df/d8a/vp9__parser_8h_source.html b/docs/df/d8a/vp9__parser_8h_source.html index 52ae954a84..fb375d655f 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 e7323dcff1..e71d669a90 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 954a89f5c2..a2ea522b74 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 @@ -93,7 +93,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');

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

- + @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); - + @@ -118,7 +118,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
AddSample(const MediaStream *stream, std::shared_ptr< MediaSample > sample)shaka::media::mp4::Segmenter
AddSample(const StreamInfo &stream_Info, std::shared_ptr< MediaSample > sample)shaka::media::mp4::Segmenter
Finalize()shaka::media::mp4::Segmenter
fragment_buffer() (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected
ftyp() (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected
GetIndexRange(size_t *offset, size_t *size) overrideshaka::media::mp4::MultiSegmentSegmentervirtual
GetInitRange(size_t *offset, size_t *size) overrideshaka::media::mp4::MultiSegmentSegmentervirtual
GetReferenceTimeScale() const (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenter
Initialize(const std::vector< MediaStream * > &streams, MuxerListener *muxer_listener, ProgressListener *progress_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)shaka::media::mp4::Segmenter
Initialize(const std::vector< std::shared_ptr< StreamInfo >> &streams, MuxerListener *muxer_listener, ProgressListener *progress_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds, double crypto_period_duration_in_seconds, FourCC protection_scheme)shaka::media::mp4::Segmenter
moov() (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected
MultiSegmentSegmenter(const MuxerOptions &options, std::unique_ptr< FileType > ftyp, std::unique_ptr< Movie > moov) (defined in shaka::media::mp4::MultiSegmentSegmenter)shaka::media::mp4::MultiSegmentSegmenter
muxer_listener() (defined in shaka::media::mp4::Segmenter)shaka::media::mp4::Segmenterinlineprotected
diff --git a/docs/df/d8d/es__parser__h26x_8h_source.html b/docs/df/d8d/es__parser__h26x_8h_source.html index 2a1a0650b1..423eeabc76 100644 --- a/docs/df/d8d/es__parser__h26x_8h_source.html +++ b/docs/df/d8d/es__parser__h26x_8h_source.html @@ -235,7 +235,7 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search'); diff --git a/docs/df/d94/classshaka_1_1RepresentationStateChangeListener.html b/docs/df/d94/classshaka_1_1RepresentationStateChangeListener.html index f3b7cbc65a..2700902d03 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 afab13e436..516a6fd6a6 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 467a6893f8..4def1c9094 100644 --- a/docs/df/d9a/structshaka_1_1media_1_1mp4_1_1TrackFragmentDecodeTime.html +++ b/docs/df/d9a/structshaka_1_1media_1_1mp4_1_1TrackFragmentDecodeTime.html @@ -182,7 +182,7 @@ Additional Inherited Members diff --git a/docs/df/d9e/classshaka_1_1xml_1_1RepresentationXmlNode.html b/docs/df/d9e/classshaka_1_1xml_1_1RepresentationXmlNode.html index 7435fc57ab..e8760df2b9 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 25fdbceac2..7a386fdce8 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 072896f4d3..09feff77e3 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 0bb37d4178..56b25a9e21 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 2ccef6eea7..9bdd1e7c31 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 fc82a8142d..aeabdb6050 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 d3c017a519..b592098b12 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 f5829fe286..e2642a92ee 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 b513faca26..447f9b9816 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 7b03ffce17..1af7d75c5c 100644 --- a/docs/df/ddc/webm_2segmenter_8h_source.html +++ b/docs/df/ddc/webm_2segmenter_8h_source.html @@ -231,32 +231,32 @@ var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
180 } // namespace shaka
181 
182 #endif // MEDIA_FORMATS_WEBM_SEGMENTER_H_
-
Status WriteSegmentHeader(uint64_t file_size, MkvWriter *writer)
Writes the Segment header to writer.
Definition: segmenter.cc:221
+
Status WriteSegmentHeader(uint64_t file_size, MkvWriter *writer)
Writes the Segment header to writer.
Definition: segmenter.cc:220
Abstract class holds stream information.
Definition: stream_info.h:57
- + -
Status Initialize(std::unique_ptr< MkvWriter > writer, StreamInfo *info, ProgressListener *progress_listener, MuxerListener *muxer_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds)
Definition: segmenter.cc:51
+
Status Initialize(std::unique_ptr< MkvWriter > writer, StreamInfo *info, ProgressListener *progress_listener, MuxerListener *muxer_listener, KeySource *encryption_key_source, uint32_t max_sd_pixels, uint32_t max_hd_pixels, uint32_t max_uhd1_pixels, double clear_lead_in_seconds)
Definition: segmenter.cc:50
This structure contains the list of configuration options for Muxer.
Definition: muxer_options.h:18
-
Status SetCluster(uint64_t start_webm_timecode, uint64_t position, MkvWriter *writer)
Creates a Cluster object with the given parameters.
Definition: segmenter.cc:259
+
Status SetCluster(uint64_t start_webm_timecode, uint64_t position, MkvWriter *writer)
Creates a Cluster object with the given parameters.
Definition: segmenter.cc:258
This class listens to progress updates events.
virtual bool GetIndexRangeStartAndEnd(uint64_t *start, uint64_t *end)=0
-
Status AddSample(std::shared_ptr< MediaSample > sample)
Definition: segmenter.cc:124
+
Status AddSample(std::shared_ptr< MediaSample > sample)
Definition: segmenter.cc:123
An implementation of IMkvWriter using our File type.
Definition: mkv_writer.h:21
- +
KeySource is responsible for encryption key acquisition.
Definition: key_source.h:30
-
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:268
+
void UpdateProgress(uint64_t progress)
Update segmentation progress using ProgressListener.
Definition: segmenter.cc:267
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:215
+
uint64_t FromWebMTimecode(uint64_t time_webm_timecode)
Converts the given time in WebM timecode to ISO BMFF timescale.
Definition: segmenter.cc:214
Holds video stream information.
Holds audio stream information.
-
uint64_t FromBMFFTimescale(uint64_t time_timescale)
Definition: segmenter.cc:208
+
uint64_t FromBMFFTimescale(uint64_t time_timescale)
Definition: segmenter.cc:207
diff --git a/docs/df/dde/ts__section__psi_8cc_source.html b/docs/df/dde/ts__section__psi_8cc_source.html index 1015183abb..1550a49538 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 c597074a9d..902adf9897 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 6039caa7f1..cda6f7d836 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 394c5b5c82..9779305bbc 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 679b59b14e..9f40448358 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 7c12c5347e..e4dc3e2d22 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 04aa94ca07..256535e3be 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 374b5d9c8b..adab73e8ed 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 6a853c722d..e44737139b 100644 --- a/docs/dir_2618cd273dea54f184e42d7a562af818.html +++ b/docs/dir_2618cd273dea54f184e42d7a562af818.html @@ -140,7 +140,7 @@ Files diff --git a/docs/dir_279fd47bebb21302c25cfb685e84c359.html b/docs/dir_279fd47bebb21302c25cfb685e84c359.html index ce946a8bef..7cdeb4a9e1 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 e9f702d307..77b6a2b73d 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 8920ae33b6..611de6ba5c 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 b4252722e8..4784f0a1e5 100644 --- a/docs/dir_3e9291fd7a18fdecc763294cb2628910.html +++ b/docs/dir_3e9291fd7a18fdecc763294cb2628910.html @@ -157,7 +157,7 @@ Files diff --git a/docs/dir_49627ef5ef0630f6cf11dd06344c4cf0.html b/docs/dir_49627ef5ef0630f6cf11dd06344c4cf0.html index c8a026cdcb..5534d87976 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 094f7c182e..f3da908c5e 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 cdd95bd9ec..f508e2585f 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 2cca9481f7..c7868dd3b9 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 7a9a08c562..b5835d1486 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 c724b147a9..7461171b83 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 2efe49907c..1fc928ac23 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 a969b1dffe..a7fb9ccf2e 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 9b1642d1d4..c42224540f 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 3e5f87c3bb..46425f0fb1 100644 --- a/docs/dir_c6ada2450b25ab5438a4dba6c9b890af.html +++ b/docs/dir_c6ada2450b25ab5438a4dba6c9b890af.html @@ -181,10 +181,6 @@ Files   file  media_sample.h [code]   -file  media_stream.cc [code] -  -file  media_stream.h [code] -  file  muxer.cc [code]   file  muxer.h [code] @@ -257,7 +253,7 @@ Files diff --git a/docs/dir_d422163b96683743ed3963d4aac17747.html b/docs/dir_d422163b96683743ed3963d4aac17747.html index 5ce95bbc95..4c28515b02 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 cdd6727e91..644e6fbe0a 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 ec05760937..7c6e893cd4 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 33e0088243..75bc2dd13a 100644 --- a/docs/files.html +++ b/docs/files.html @@ -163,42 +163,40 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); ||o*media_parser.h ||o*media_sample.cc ||o*media_sample.h -||o*media_stream.cc -||o*media_stream.h -||o*muxer.cc -||o*muxer.h -||o*muxer_options.cc -||o*muxer_options.h -||o*muxer_util.cc -||o*muxer_util.h -||o*network_util.cc -||o*network_util.h -||o*offset_byte_queue.cc -||o*offset_byte_queue.h -||o*playready_key_source.cc -||o*playready_key_source.h -||o*producer_consumer_queue.h -||o*protection_system_specific_info.cc -||o*protection_system_specific_info.h -||o*rcheck.h -||o*request_signer.cc -||o*request_signer.h -||o*rsa_key.cc -||o*rsa_key.h -||o*status.cc -||o*status.h -||o*stream_info.cc -||o*stream_info.h -||o*text_stream_info.cc -||o*text_stream_info.h -||o*text_track.h -||o*text_track_config.cc -||o*text_track_config.h -||o*timestamp.h -||o*video_stream_info.cc -||o*video_stream_info.h -||o*widevine_key_source.cc -||\*widevine_key_source.h +||o*muxer.cc +||o*muxer.h +||o*muxer_options.cc +||o*muxer_options.h +||o*muxer_util.cc +||o*muxer_util.h +||o*network_util.cc +||o*network_util.h +||o*offset_byte_queue.cc +||o*offset_byte_queue.h +||o*playready_key_source.cc +||o*playready_key_source.h +||o*producer_consumer_queue.h +||o*protection_system_specific_info.cc +||o*protection_system_specific_info.h +||o*rcheck.h +||o*request_signer.cc +||o*request_signer.h +||o*rsa_key.cc +||o*rsa_key.h +||o*status.cc +||o*status.h +||o*stream_info.cc +||o*stream_info.h +||o*text_stream_info.cc +||o*text_stream_info.h +||o*text_track.h +||o*text_track_config.cc +||o*text_track_config.h +||o*timestamp.h +||o*video_stream_info.cc +||o*video_stream_info.h +||o*widevine_key_source.cc +||\*widevine_key_source.h |o+chunking ||o*chunking_handler.cc ||\*chunking_handler.h @@ -453,7 +451,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions.html b/docs/functions.html index cd9b1a19e4..6e5b3aaab0 100644 --- a/docs/functions.html +++ b/docs/functions.html @@ -181,12 +181,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : shaka::media::mp2t::TsSegmenter , shaka::media::mp4::EncryptingFragmenter , shaka::media::mp4::Fragmenter -, shaka::media::mp4::Segmenter +, shaka::media::mp4::Segmenter , shaka::media::webm::Segmenter -
  • AddStream() -: shaka::media::Muxer -
  • AddSubsample() : shaka::media::DecryptConfig
  • @@ -219,7 +216,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , shaka::media::mp4::TrackRunIterator
  • AesCbcDecryptor() -: shaka::media::AesCbcDecryptor +: shaka::media::AesCbcDecryptor
  • AesCbcEncryptor() : shaka::media::AesCbcEncryptor @@ -255,7 +252,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_b.html b/docs/functions_b.html index 84a319e6c1..45f6bad745 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 6b98273beb..495d6d8a99 100644 --- a/docs/functions_c.html +++ b/docs/functions_c.html @@ -178,9 +178,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : shaka::media::mp4::Box , shaka::media::mp4::SampleEncryptionEntry
  • -
  • Connect() -: shaka::media::MediaStream -
  • container_name() : shaka::media::Demuxer
  • @@ -203,7 +200,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : shaka::media::File
  • CopyFrom() -: shaka::media::MediaSample +: shaka::media::MediaSample
  • Create() : shaka::media::RsaPrivateKey @@ -256,7 +253,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_d.html b/docs/functions_d.html index e8c741571d..5b3df770a3 100644 --- a/docs/functions_d.html +++ b/docs/functions_d.html @@ -183,7 +183,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_e.html b/docs/functions_e.html index 750d62fa30..92b2dfed5d 100644 --- a/docs/functions_e.html +++ b/docs/functions_e.html @@ -146,7 +146,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_enum.html b/docs/functions_enum.html index a4ab3db70b..cb6dabed39 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 4f6a586871..0cfce72941 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 7bdb689995..f8627cb35e 100644 --- a/docs/functions_f.html +++ b/docs/functions_f.html @@ -170,6 +170,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • FlushStream() : shaka::media::ChunkingHandler , shaka::media::MediaHandler +, shaka::media::Muxer
  • ForceSetSegmentAlignment() : shaka::AdaptationSet @@ -199,7 +200,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func.html b/docs/functions_func.html index 7bcd1123a3..b0238c74ca 100644 --- a/docs/functions_func.html +++ b/docs/functions_func.html @@ -181,12 +181,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : shaka::media::mp2t::TsSegmenter , shaka::media::mp4::EncryptingFragmenter , shaka::media::mp4::Fragmenter -, shaka::media::mp4::Segmenter +, shaka::media::mp4::Segmenter , shaka::media::webm::Segmenter
  • -
  • AddStream() -: shaka::media::Muxer -
  • AddSubsample() : shaka::media::DecryptConfig
  • @@ -219,7 +216,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , shaka::media::mp4::TrackRunIterator
  • AesCbcDecryptor() -: shaka::media::AesCbcDecryptor +: shaka::media::AesCbcDecryptor
  • AesCbcEncryptor() : shaka::media::AesCbcEncryptor @@ -255,7 +252,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_b.html b/docs/functions_func_b.html index 7482e8c06b..0be0fe1b28 100644 --- a/docs/functions_func_b.html +++ b/docs/functions_func_b.html @@ -237,7 +237,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_c.html b/docs/functions_func_c.html index cdde5cee0d..f12ff824f8 100644 --- a/docs/functions_func_c.html +++ b/docs/functions_func_c.html @@ -175,9 +175,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : shaka::media::mp4::Box , shaka::media::mp4::SampleEncryptionEntry
  • -
  • Connect() -: shaka::media::MediaStream -
  • container_name() : shaka::media::Demuxer
  • @@ -250,7 +247,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_d.html b/docs/functions_func_d.html index 82fcf5ef00..089cd98727 100644 --- a/docs/functions_func_d.html +++ b/docs/functions_func_d.html @@ -183,7 +183,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_e.html b/docs/functions_func_e.html index 4271aebf49..07c4a72c6e 100644 --- a/docs/functions_func_e.html +++ b/docs/functions_func_e.html @@ -146,7 +146,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_f.html b/docs/functions_func_f.html index 01341af29a..f54fc114dd 100644 --- a/docs/functions_func_f.html +++ b/docs/functions_func_f.html @@ -170,6 +170,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • FlushStream() : shaka::media::ChunkingHandler , shaka::media::MediaHandler +, shaka::media::Muxer
  • ForceSetSegmentAlignment() : shaka::AdaptationSet @@ -193,7 +194,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_g.html b/docs/functions_func_g.html index 82093a94d5..7896ae144c 100644 --- a/docs/functions_func_g.html +++ b/docs/functions_func_g.html @@ -274,7 +274,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_h.html b/docs/functions_func_h.html index 60c5c05d65..bbfb5de2bc 100644 --- a/docs/functions_func_h.html +++ b/docs/functions_func_h.html @@ -154,7 +154,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_i.html b/docs/functions_func_i.html index 63e9f1e795..23f3211d28 100644 --- a/docs/functions_func_i.html +++ b/docs/functions_func_i.html @@ -142,14 +142,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , shaka::SimpleMpdNotifier
  • Initialize() -: shaka::media::Demuxer -, shaka::media::H264VideoSliceHeaderParser +: shaka::media::H264VideoSliceHeaderParser , shaka::media::H265VideoSliceHeaderParser , shaka::media::MediaHandler , shaka::media::mp2t::PesPacketGenerator , shaka::media::mp2t::TsSegmenter , shaka::media::mp2t::TsWriter -, shaka::media::mp4::Segmenter +, shaka::media::mp4::Segmenter , shaka::media::NalUnitToByteStreamConverter , shaka::media::VideoSliceHeaderParser , shaka::media::webm::Encryptor @@ -161,8 +160,10 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • InitializeInternal() : shaka::media::ChunkingHandler +, shaka::media::Demuxer , shaka::media::EncryptionHandler , shaka::media::MediaHandler +, shaka::media::Muxer
  • InitializeWithIv() : shaka::media::AesCbcDecryptor @@ -219,7 +220,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_k.html b/docs/functions_func_k.html index 64115e6f8e..6f2e8ef7fc 100644 --- a/docs/functions_func_k.html +++ b/docs/functions_func_k.html @@ -129,7 +129,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_l.html b/docs/functions_func_l.html index 9c3cee0892..12dec142ee 100644 --- a/docs/functions_func_l.html +++ b/docs/functions_func_l.html @@ -135,7 +135,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_m.html b/docs/functions_func_m.html index 533a706083..55a5064d62 100644 --- a/docs/functions_func_m.html +++ b/docs/functions_func_m.html @@ -128,9 +128,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • Matches() : shaka::media::Status
  • -
  • MediaStream() -: shaka::media::MediaStream -
  • MP4Muxer() : shaka::media::mp4::MP4Muxer
  • @@ -150,7 +147,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_n.html b/docs/functions_func_n.html index de5a7b8b67..144b793edd 100644 --- a/docs/functions_func_n.html +++ b/docs/functions_func_n.html @@ -172,7 +172,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_o.html b/docs/functions_func_o.html index fa0c9580ee..06f509e594 100644 --- a/docs/functions_func_o.html +++ b/docs/functions_func_o.html @@ -193,7 +193,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_p.html b/docs/functions_func_p.html index d17166164f..ccfc17450e 100644 --- a/docs/functions_func_p.html +++ b/docs/functions_func_p.html @@ -125,7 +125,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • Parse() : shaka::media::AACAudioSpecificConfig , shaka::media::DecoderConfigurationRecord -, shaka::media::Demuxer , shaka::media::MediaParser , shaka::media::mp2t::AdtsHeader , shaka::media::mp2t::Mp2tMediaParser @@ -218,8 +217,10 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • Process() : shaka::media::ChunkingHandler +, shaka::media::Demuxer , shaka::media::EncryptionHandler , shaka::media::MediaHandler +, shaka::media::Muxer
  • ProducerConsumerQueue() : shaka::media::ProducerConsumerQueue< T > @@ -227,23 +228,19 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • pts() : shaka::media::mp2t::PesPacket
  • -
  • PullSample() -: shaka::media::MediaStream -
  • Push() : shaka::media::ByteQueue , shaka::media::ProducerConsumerQueue< T >
  • PushSample() -: shaka::media::MediaStream -, shaka::media::mp2t::PesPacketGenerator +: shaka::media::mp2t::PesPacketGenerator , shaka::media::WebVttSampleConverter
  • diff --git a/docs/functions_func_r.html b/docs/functions_func_r.html index cbf02af6e0..7e3b83441d 100644 --- a/docs/functions_func_r.html +++ b/docs/functions_func_r.html @@ -198,13 +198,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • Run() : shaka::media::ClosureThread , shaka::media::Demuxer -, shaka::media::Muxer
  • diff --git a/docs/functions_func_s.html b/docs/functions_func_s.html index a872685489..6f63386691 100644 --- a/docs/functions_func_s.html +++ b/docs/functions_func_s.html @@ -203,7 +203,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : shaka::xml::XmlNode
  • SetHandler() -: shaka::media::MediaHandler +: shaka::media::Demuxer +, shaka::media::MediaHandler
  • SetId() : shaka::xml::XmlNode @@ -218,6 +219,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : shaka::media::Demuxer , shaka::media::Muxer
  • +
  • SetLanguageOverride() +: shaka::media::Demuxer +
  • SetMuxerListener() : shaka::media::Muxer
  • @@ -264,9 +268,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • some_handler() : shaka::media::MediaHandlerTestBase
  • -
  • Start() -: shaka::media::MediaStream -
  • StartBox() : shaka::media::mp4::BoxReader
  • @@ -285,9 +286,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • stream_id() : shaka::media::mp2t::PesPacket
  • -
  • streams() -: shaka::media::Demuxer -
  • SuppressOnce() : shaka::Representation
  • @@ -298,7 +296,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_t.html b/docs/functions_func_t.html index 2eec2c73db..d71c718a98 100644 --- a/docs/functions_func_t.html +++ b/docs/functions_func_t.html @@ -144,7 +144,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • ToString() : shaka::media::AudioStreamInfo , shaka::media::MediaSample -, shaka::media::MediaStream , shaka::media::Status , shaka::media::StreamInfo , shaka::media::VideoStreamInfo @@ -178,7 +177,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_u.html b/docs/functions_func_u.html index ab71d65f79..c654b9be3a 100644 --- a/docs/functions_func_u.html +++ b/docs/functions_func_u.html @@ -146,7 +146,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_func_v.html b/docs/functions_func_v.html index 25a620a1b4..5c00cd1862 100644 --- a/docs/functions_func_v.html +++ b/docs/functions_func_v.html @@ -123,7 +123,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

    - v -

    diff --git a/docs/functions_r.html b/docs/functions_r.html index 4b060a5e4e..8b187f5339 100644 --- a/docs/functions_r.html +++ b/docs/functions_r.html @@ -198,13 +198,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • Run() : shaka::media::ClosureThread , shaka::media::Demuxer -, shaka::media::Muxer
  • diff --git a/docs/functions_s.html b/docs/functions_s.html index 50852afcb9..44e6e79c3e 100644 --- a/docs/functions_s.html +++ b/docs/functions_s.html @@ -219,7 +219,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : shaka::xml::XmlNode
  • SetHandler() -: shaka::media::MediaHandler +: shaka::media::Demuxer +, shaka::media::MediaHandler
  • SetId() : shaka::xml::XmlNode @@ -234,6 +235,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : shaka::media::Demuxer , shaka::media::Muxer
  • +
  • SetLanguageOverride() +: shaka::media::Demuxer +
  • SetMuxerListener() : shaka::media::Muxer
  • @@ -280,9 +284,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • some_handler() : shaka::media::MediaHandlerTestBase
  • -
  • Start() -: shaka::media::MediaStream -
  • StartBox() : shaka::media::mp4::BoxReader
  • @@ -301,9 +302,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • stream_id() : shaka::media::mp2t::PesPacket
  • -
  • streams() -: shaka::media::Demuxer -
  • subsegment_duration_in_seconds : shaka::media::ChunkingOptions
  • @@ -320,7 +318,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_t.html b/docs/functions_t.html index f60ecc7fb9..dff87e0007 100644 --- a/docs/functions_t.html +++ b/docs/functions_t.html @@ -147,7 +147,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • ToString() : shaka::media::AudioStreamInfo , shaka::media::MediaSample -, shaka::media::MediaStream , shaka::media::Status , shaka::media::StreamInfo , shaka::media::VideoStreamInfo @@ -181,7 +180,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_type.html b/docs/functions_type.html index 3556b9ee0f..5c3d78128b 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 bef2debb17..3ca977c95f 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 118777bdc3..c0aff0d8e4 100644 --- a/docs/functions_v.html +++ b/docs/functions_v.html @@ -123,7 +123,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

    - v -

    • ValidateOutputStreamIndex() -: shaka::media::MediaHandler +: shaka::media::Demuxer +, shaka::media::MediaHandler
    • VerifySignature() : shaka::media::RsaPublicKey @@ -138,7 +139,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_vars.html b/docs/functions_vars.html index 532be417ac..e82b81a9e2 100644 --- a/docs/functions_vars.html +++ b/docs/functions_vars.html @@ -170,7 +170,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/docs/functions_w.html b/docs/functions_w.html index 04ca928214..73bbe77e80 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 4e5e61606f..3ba56fb99f 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 bd3a894842..1531769091 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 dff6fac6a0..c9aa83899a 100644 --- a/docs/hierarchy.html +++ b/docs/hierarchy.html @@ -200,189 +200,188 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); oCshaka::media::mp4::DecodingTimeIterator oCshaka::media::DecryptConfig oCshaka::media::DecryptorSourceDecryptorSource wraps KeySource and is responsible for decryptor management -oCshaka::media::Demuxer -oCshaka::media::wvm::DemuxStreamIdMediaSample -oCshaka::media::mp4::EditListEntry -oCshaka::Element -oCshaka::media::EncryptionConfig -oCshaka::media::EncryptionKey -oCshaka::media::EncryptionOptionsThis structure defines encryption options -oCshaka::media::webm::Encryptor -oCshaka::media::ESDescriptor -oCshaka::media::mp2t::EsParser -|oCshaka::media::mp2t::EsParserAdts -|\Cshaka::media::mp2t::EsParserH26x -| oCshaka::media::mp2t::EsParserH264 -| \Cshaka::media::mp2t::EsParserH265 -oCshaka::media::FileDefine an abstract file interface -|oCshaka::media::LocalFileImplement LocalFile which deals with local storage -|oCshaka::media::MemoryFile -|oCshaka::media::ThreadedIoFileDeclaration of class which implements a thread-safe circular buffer -|\Cshaka::media::UdpFileImplements UdpFile, which receives UDP unicast and multicast streams -oCshaka::media::FileCloser -oCshaka::media::mp4::Fragmenter -|\Cshaka::media::mp4::EncryptingFragmenterEncryptingFragmenter generates MP4 fragments with sample encrypted -| \Cshaka::media::mp4::KeyRotationFragmenter -oCshaka::media::H264DecRefPicMarking -oCshaka::media::H264ModificationOfPicNum -oCshaka::media::H264Parser -oCshaka::media::H264Pps -oCshaka::media::H264SEIMessage -oCshaka::media::H264SEIRecoveryPoint -oCshaka::media::H264SliceHeader -oCshaka::media::H264Sps -oCshaka::media::H264WeightingFactors -oCshaka::media::H265Parser -oCshaka::media::H265Pps -oCshaka::media::H265ReferencePictureListModifications -oCshaka::media::H265ReferencePictureSet -oCshaka::media::H265SliceHeader -oCshaka::media::H265Sps -oCshaka::media::H265VuiParameters -oCshaka::media::H26xBitReader -oCshaka::media::H26xByteToUnitStreamConverterA base class that is used to convert H.26x byte streams to NAL unit streams -|oCshaka::media::H264ByteToUnitStreamConverter -|\Cshaka::media::H265ByteToUnitStreamConverter -oCIMkvWriter -|\Cshaka::media::MkvWriterAn implementation of IMkvWriter using our File type -oCshaka::media::IoCacheDeclaration of class which implements a thread-safe circular buffer -oCshaka::media::KeyFetcherBase class for fetching keys from the license service -|\Cshaka::media::HttpKeyFetcher -oCshaka::media::KeySourceKeySource is responsible for encryption key acquisition -|oCshaka::media::FixedKeySourceA key source that uses fixed keys for encryption -|oCshaka::media::PlayReadyKeySourceA key source that uses playready for encryption -|\Cshaka::media::WidevineKeySource -oCshaka::media::mp4::Language -oCshaka::media::LibcryptoThreadingConvenience class which initializes and terminates libcrypto threading -oCshaka::media::H265SliceHeader::LongTermPicsInfo -oCshaka::media::MediaEvent -oCshaka::media::MediaHandler -|oCshaka::media::ChunkingHandler -|\Cshaka::media::EncryptionHandler -oCshaka::media::MediaParser -|oCshaka::media::mp2t::Mp2tMediaParser -|oCshaka::media::mp4::MP4MediaParser -|oCshaka::media::WebMMediaParser -|oCshaka::media::WebVttMediaParser -|\Cshaka::media::wvm::WvmMediaParser -oCshaka::media::MediaSampleClass to hold a media sample -oCshaka::media::MediaStream -oCshaka::MpdBuilderThis class generates DASH MPDs (Media Presentation Descriptions) -|\Cshaka::MockMpdBuilder -oCshaka::MpdNotifier -|oCshaka::DashIopMpdNotifier -|oCshaka::MockMpdNotifier -|\Cshaka::SimpleMpdNotifier -oCshaka::MpdNotifierFactory -oCshaka::MpdOptionsDefines Mpd Options -oCshaka::MpdWriter -oCshaka::media::Muxer -|oCshaka::media::mp2t::TsMuxer -|oCshaka::media::mp4::MP4Muxer -|\Cshaka::media::webm::WebMMuxerImplements WebM Muxer -oCshaka::media::MuxerListener -|oCshaka::media::HlsNotifyMuxerListenerMuxerListener that uses HlsNotifier -|oCshaka::media::MockMuxerListener -|oCshaka::media::MpdNotifyMuxerListener -|\Cshaka::media::VodMediaInfoDumpMuxerListener -oCshaka::media::MuxerOptionsThis structure contains the list of configuration options for Muxer -oCshaka::media::Nalu -oCshaka::media::NalUnitToByteStreamConverter -oCshaka::media::NaluReader -oCshaka::media::OffsetByteQueue -oCshaka::media::OnMediaEndParameters -oCshaka::media::PeriodInfo -oCshaka::media::mp2t::PesPacketClass that carries PES packet information -oCshaka::media::mp2t::PesPacketGenerator -oCshaka::media::wvm::PrevSampleData -oCshaka::media::mp4::PrivFrameImplemented per http://id3.org/id3v2.4.0-frames -oCshaka::media::ProducerConsumerQueue< T > -oCshaka::media::mp2t::ProgramMapTableWriter -|oCshaka::media::mp2t::AacProgramMapTableWriter -|\Cshaka::media::mp2t::H264ProgramMapTableWriter -oCshaka::media::ProgressListenerThis class listens to progress updates events -oCshaka::media::ProtectionSystemSpecificInfo -oCshaka::Representation -|\Cshaka::MockRepresentation -oCshaka::RepresentationStateChangeListener -oCshaka::media::RequestSignerAbstract class used for signature generation -|oCshaka::media::AesRequestSignerAesRequestSigner uses AES-CBC signing -|\Cshaka::media::RsaRequestSignerRsaRequestSigner uses RSA-PSS signing -oCshaka::media::RsaPrivateKeyRsa private key, used for message signing and decryption -oCshaka::media::RsaPublicKeyRsa public key, used for signature verification and encryption -oCshaka::media::mp4::SampleEncryptionEntry -oCshaka::media::mp4::SampleToGroupEntry -oCshaka::media::SeekHead -oCshaka::media::mp4::Segmenter -|oCshaka::media::mp4::MultiSegmentSegmenter -|\Cshaka::media::mp4::SingleSegmentSegmenter -oCshaka::media::webm::Segmenter -|oCshaka::media::webm::MultiSegmentSegmenter -|\Cshaka::media::webm::SingleSegmentSegmenter -| \Cshaka::media::webm::TwoPassSingleSegmentSegmenter -oCshaka::media::SegmentInfo -oCshaka::SegmentInfo -oCshaka::media::mp4::SegmentReference -oCSimpleThread -|\Cshaka::media::ClosureThread -oCshaka::media::Status -oCshaka::media::StreamData -oCshaka::media::StreamDescriptor -oCshaka::media::StreamDescriptorCompareFn -oCshaka::media::StreamInfoAbstract class holds stream information -|oCshaka::media::AudioStreamInfoHolds audio stream information -|oCshaka::media::TextStreamInfo -|\Cshaka::media::VideoStreamInfoHolds video stream information -oCshaka::media::SubsampleEntry -oCshaka::media::mp4::SyncSampleIterator -oCTest -|oCshaka::media::MediaHandlerTestBase -|\Cshaka::media::SegmentTestBase -oCshaka::media::TextTrack -oCshaka::media::TextTrackConfig -oCshaka::media::mp4::TrackRunIterator -oCshaka::media::TracksBuilder -oCshaka::media::mp2t::TsPacket -oCshaka::media::mp2t::TsSection -|oCshaka::media::mp2t::TsSectionPes -|\Cshaka::media::mp2t::TsSectionPsi -| oCshaka::media::mp2t::TsSectionPat -| \Cshaka::media::mp2t::TsSectionPmt -oCshaka::media::mp2t::TsSegmenter -oCshaka::media::mp2t::TsWriter -oCshaka::media::UdpOptionsOptions parsed from UDP url string of the form: udp://ip:port[?options] -oCshaka::media::VideoSliceHeaderParser -|oCshaka::media::H264VideoSliceHeaderParser -|\Cshaka::media::H265VideoSliceHeaderParser -oCshaka::media::mp2t::EsParserH26x::VideoSliceInfo -oCshaka::media::VideoStreamInfoParameters -oCshaka::media::VPCodecConfigurationRecordClass for parsing or writing VP codec configuration record -oCshaka::media::VPxFrameInfo -oCshaka::media::VPxParser -|oCshaka::media::VP8Parser -|\Cshaka::media::VP9ParserClass to parse a vp9 bit stream -oCshaka::media::WebMListParser -oCshaka::media::WebMParserClient -|oCshaka::media::SegmentTestBase::ClusterParser -|oCshaka::media::WebMAudioClientHelper class used to parse an Audio element inside a TrackEntry element -|oCshaka::media::WebMClusterParser -|oCshaka::media::WebMContentEncodingsClientParser for WebM ContentEncodings element -|oCshaka::media::WebMInfoParserParser for WebM Info element -|oCshaka::media::WebMTracksParserParser for WebM Tracks element -|\Cshaka::media::WebMVideoClientHelper class used to parse a Video element inside a TrackEntry element -oCshaka::media::WebMWebVTTParser -oCshaka::media::WebVttSampleConverter -oCshaka::xml::XmlDeleter -\Cshaka::xml::XmlNode - \Cshaka::xml::RepresentationBaseXmlNode -  oCshaka::xml::AdaptationSetXmlNodeAdaptationSetType specified in MPD -  \Cshaka::xml::RepresentationXmlNodeRepresentationType in MPD +oCshaka::media::wvm::DemuxStreamIdMediaSample +oCshaka::media::mp4::EditListEntry +oCshaka::Element +oCshaka::media::EncryptionConfig +oCshaka::media::EncryptionKey +oCshaka::media::EncryptionOptionsThis structure defines encryption options +oCshaka::media::webm::Encryptor +oCshaka::media::ESDescriptor +oCshaka::media::mp2t::EsParser +|oCshaka::media::mp2t::EsParserAdts +|\Cshaka::media::mp2t::EsParserH26x +| oCshaka::media::mp2t::EsParserH264 +| \Cshaka::media::mp2t::EsParserH265 +oCshaka::media::FileDefine an abstract file interface +|oCshaka::media::LocalFileImplement LocalFile which deals with local storage +|oCshaka::media::MemoryFile +|oCshaka::media::ThreadedIoFileDeclaration of class which implements a thread-safe circular buffer +|\Cshaka::media::UdpFileImplements UdpFile, which receives UDP unicast and multicast streams +oCshaka::media::FileCloser +oCshaka::media::mp4::Fragmenter +|\Cshaka::media::mp4::EncryptingFragmenterEncryptingFragmenter generates MP4 fragments with sample encrypted +| \Cshaka::media::mp4::KeyRotationFragmenter +oCshaka::media::H264DecRefPicMarking +oCshaka::media::H264ModificationOfPicNum +oCshaka::media::H264Parser +oCshaka::media::H264Pps +oCshaka::media::H264SEIMessage +oCshaka::media::H264SEIRecoveryPoint +oCshaka::media::H264SliceHeader +oCshaka::media::H264Sps +oCshaka::media::H264WeightingFactors +oCshaka::media::H265Parser +oCshaka::media::H265Pps +oCshaka::media::H265ReferencePictureListModifications +oCshaka::media::H265ReferencePictureSet +oCshaka::media::H265SliceHeader +oCshaka::media::H265Sps +oCshaka::media::H265VuiParameters +oCshaka::media::H26xBitReader +oCshaka::media::H26xByteToUnitStreamConverterA base class that is used to convert H.26x byte streams to NAL unit streams +|oCshaka::media::H264ByteToUnitStreamConverter +|\Cshaka::media::H265ByteToUnitStreamConverter +oCIMkvWriter +|\Cshaka::media::MkvWriterAn implementation of IMkvWriter using our File type +oCshaka::media::IoCacheDeclaration of class which implements a thread-safe circular buffer +oCshaka::media::KeyFetcherBase class for fetching keys from the license service +|\Cshaka::media::HttpKeyFetcher +oCshaka::media::KeySourceKeySource is responsible for encryption key acquisition +|oCshaka::media::FixedKeySourceA key source that uses fixed keys for encryption +|oCshaka::media::PlayReadyKeySourceA key source that uses playready for encryption +|\Cshaka::media::WidevineKeySource +oCshaka::media::mp4::Language +oCshaka::media::LibcryptoThreadingConvenience class which initializes and terminates libcrypto threading +oCshaka::media::H265SliceHeader::LongTermPicsInfo +oCshaka::media::MediaEvent +oCshaka::media::MediaHandler +|oCshaka::media::ChunkingHandler +|oCshaka::media::Demuxer +|oCshaka::media::EncryptionHandler +|\Cshaka::media::Muxer +| oCshaka::media::mp2t::TsMuxer +| oCshaka::media::mp4::MP4Muxer +| \Cshaka::media::webm::WebMMuxerImplements WebM Muxer +oCshaka::media::MediaParser +|oCshaka::media::mp2t::Mp2tMediaParser +|oCshaka::media::mp4::MP4MediaParser +|oCshaka::media::WebMMediaParser +|oCshaka::media::WebVttMediaParser +|\Cshaka::media::wvm::WvmMediaParser +oCshaka::media::MediaSampleClass to hold a media sample +oCshaka::MpdBuilderThis class generates DASH MPDs (Media Presentation Descriptions) +|\Cshaka::MockMpdBuilder +oCshaka::MpdNotifier +|oCshaka::DashIopMpdNotifier +|oCshaka::MockMpdNotifier +|\Cshaka::SimpleMpdNotifier +oCshaka::MpdNotifierFactory +oCshaka::MpdOptionsDefines Mpd Options +oCshaka::MpdWriter +oCshaka::media::MuxerListener +|oCshaka::media::HlsNotifyMuxerListenerMuxerListener that uses HlsNotifier +|oCshaka::media::MockMuxerListener +|oCshaka::media::MpdNotifyMuxerListener +|\Cshaka::media::VodMediaInfoDumpMuxerListener +oCshaka::media::MuxerOptionsThis structure contains the list of configuration options for Muxer +oCshaka::media::Nalu +oCshaka::media::NalUnitToByteStreamConverter +oCshaka::media::NaluReader +oCshaka::media::OffsetByteQueue +oCshaka::media::OnMediaEndParameters +oCshaka::media::PeriodInfo +oCshaka::media::mp2t::PesPacketClass that carries PES packet information +oCshaka::media::mp2t::PesPacketGenerator +oCshaka::media::wvm::PrevSampleData +oCshaka::media::mp4::PrivFrameImplemented per http://id3.org/id3v2.4.0-frames +oCshaka::media::ProducerConsumerQueue< T > +oCshaka::media::mp2t::ProgramMapTableWriter +|oCshaka::media::mp2t::AacProgramMapTableWriter +|\Cshaka::media::mp2t::H264ProgramMapTableWriter +oCshaka::media::ProgressListenerThis class listens to progress updates events +oCshaka::media::ProtectionSystemSpecificInfo +oCshaka::Representation +|\Cshaka::MockRepresentation +oCshaka::RepresentationStateChangeListener +oCshaka::media::RequestSignerAbstract class used for signature generation +|oCshaka::media::AesRequestSignerAesRequestSigner uses AES-CBC signing +|\Cshaka::media::RsaRequestSignerRsaRequestSigner uses RSA-PSS signing +oCshaka::media::RsaPrivateKeyRsa private key, used for message signing and decryption +oCshaka::media::RsaPublicKeyRsa public key, used for signature verification and encryption +oCshaka::media::mp4::SampleEncryptionEntry +oCshaka::media::mp4::SampleToGroupEntry +oCshaka::media::SeekHead +oCshaka::media::webm::Segmenter +|oCshaka::media::webm::MultiSegmentSegmenter +|\Cshaka::media::webm::SingleSegmentSegmenter +| \Cshaka::media::webm::TwoPassSingleSegmentSegmenter +oCshaka::media::mp4::Segmenter +|oCshaka::media::mp4::MultiSegmentSegmenter +|\Cshaka::media::mp4::SingleSegmentSegmenter +oCshaka::media::SegmentInfo +oCshaka::SegmentInfo +oCshaka::media::mp4::SegmentReference +oCSimpleThread +|\Cshaka::media::ClosureThread +oCshaka::media::Status +oCshaka::media::StreamData +oCshaka::media::StreamDescriptor +oCshaka::media::StreamDescriptorCompareFn +oCshaka::media::StreamInfoAbstract class holds stream information +|oCshaka::media::AudioStreamInfoHolds audio stream information +|oCshaka::media::TextStreamInfo +|\Cshaka::media::VideoStreamInfoHolds video stream information +oCshaka::media::SubsampleEntry +oCshaka::media::mp4::SyncSampleIterator +oCTest +|oCshaka::media::MediaHandlerTestBase +|\Cshaka::media::SegmentTestBase +oCshaka::media::TextTrack +oCshaka::media::TextTrackConfig +oCshaka::media::mp4::TrackRunIterator +oCshaka::media::TracksBuilder +oCshaka::media::mp2t::TsPacket +oCshaka::media::mp2t::TsSection +|oCshaka::media::mp2t::TsSectionPes +|\Cshaka::media::mp2t::TsSectionPsi +| oCshaka::media::mp2t::TsSectionPat +| \Cshaka::media::mp2t::TsSectionPmt +oCshaka::media::mp2t::TsSegmenter +oCshaka::media::mp2t::TsWriter +oCshaka::media::UdpOptionsOptions parsed from UDP url string of the form: udp://ip:port[?options] +oCshaka::media::VideoSliceHeaderParser +|oCshaka::media::H264VideoSliceHeaderParser +|\Cshaka::media::H265VideoSliceHeaderParser +oCshaka::media::mp2t::EsParserH26x::VideoSliceInfo +oCshaka::media::VideoStreamInfoParameters +oCshaka::media::VPCodecConfigurationRecordClass for parsing or writing VP codec configuration record +oCshaka::media::VPxFrameInfo +oCshaka::media::VPxParser +|oCshaka::media::VP8Parser +|\Cshaka::media::VP9ParserClass to parse a vp9 bit stream +oCshaka::media::WebMListParser +oCshaka::media::WebMParserClient +|oCshaka::media::SegmentTestBase::ClusterParser +|oCshaka::media::WebMAudioClientHelper class used to parse an Audio element inside a TrackEntry element +|oCshaka::media::WebMClusterParser +|oCshaka::media::WebMContentEncodingsClientParser for WebM ContentEncodings element +|oCshaka::media::WebMInfoParserParser for WebM Info element +|oCshaka::media::WebMTracksParserParser for WebM Tracks element +|\Cshaka::media::WebMVideoClientHelper class used to parse a Video element inside a TrackEntry element +oCshaka::media::WebMWebVTTParser +oCshaka::media::WebVttSampleConverter +oCshaka::xml::XmlDeleter +\Cshaka::xml::XmlNode + \Cshaka::xml::RepresentationBaseXmlNode +  oCshaka::xml::AdaptationSetXmlNodeAdaptationSetType specified in MPD +  \Cshaka::xml::RepresentationXmlNodeRepresentationType in MPD diff --git a/docs/index.html b/docs/index.html index 69c7c46936..8d6330c19d 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 227dc4374c..c15791e963 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 0e6d5cd331..05e5e50ef0 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 77d9b5f193..6e7e32416d 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_0.js b/docs/search/all_0.js index 4f06c82946..acd52c3bda 100644 --- a/docs/search/all_0.js +++ b/docs/search/all_0.js @@ -23,8 +23,7 @@ var searchData= ['addrepresentation',['AddRepresentation',['../d8/d8e/classshaka_1_1AdaptationSet.html#a124e3c1ba5e3209f3214a556ecae28c3',1,'shaka::AdaptationSet']]], ['addrole',['AddRole',['../d8/d8e/classshaka_1_1AdaptationSet.html#ae96ad89ec7cc7d5ef1db467a9cf13730',1,'shaka::AdaptationSet']]], ['addroleelement',['AddRoleElement',['../d1/de7/classshaka_1_1xml_1_1AdaptationSetXmlNode.html#a2718eede55bb89447a74ff802b95fdb1',1,'shaka::xml::AdaptationSetXmlNode']]], - ['addsample',['AddSample',['../de/dde/classshaka_1_1media_1_1mp2t_1_1TsSegmenter.html#a16a92ce0a4d60e502135f89c4b7ffc9b',1,'shaka::media::mp2t::TsSegmenter::AddSample()'],['../dc/df3/classshaka_1_1media_1_1mp4_1_1EncryptingFragmenter.html#a47bfcdce7bfcf5884fa805130856c5b4',1,'shaka::media::mp4::EncryptingFragmenter::AddSample()'],['../db/d95/classshaka_1_1media_1_1mp4_1_1Fragmenter.html#a9453ee5952fc923eae502467e50317e2',1,'shaka::media::mp4::Fragmenter::AddSample()'],['../d9/d26/classshaka_1_1media_1_1mp4_1_1Segmenter.html#a7706ce1829da84b1155a2244c22411bf',1,'shaka::media::mp4::Segmenter::AddSample()'],['../dd/dc5/classshaka_1_1media_1_1webm_1_1Segmenter.html#aad137d0ae95d3e47a32725276970e324',1,'shaka::media::webm::Segmenter::AddSample()']]], - ['addstream',['AddStream',['../df/d46/classshaka_1_1media_1_1Muxer.html#ad9479d299d1c494604a5f5a052fe8280',1,'shaka::media::Muxer']]], + ['addsample',['AddSample',['../de/dde/classshaka_1_1media_1_1mp2t_1_1TsSegmenter.html#a16a92ce0a4d60e502135f89c4b7ffc9b',1,'shaka::media::mp2t::TsSegmenter::AddSample()'],['../dc/df3/classshaka_1_1media_1_1mp4_1_1EncryptingFragmenter.html#a47bfcdce7bfcf5884fa805130856c5b4',1,'shaka::media::mp4::EncryptingFragmenter::AddSample()'],['../db/d95/classshaka_1_1media_1_1mp4_1_1Fragmenter.html#a9453ee5952fc923eae502467e50317e2',1,'shaka::media::mp4::Fragmenter::AddSample()'],['../d9/d26/classshaka_1_1media_1_1mp4_1_1Segmenter.html#ab73caca6e3c9821a5f17c236bd798a1b',1,'shaka::media::mp4::Segmenter::AddSample()'],['../dd/dc5/classshaka_1_1media_1_1webm_1_1Segmenter.html#aad137d0ae95d3e47a32725276970e324',1,'shaka::media::webm::Segmenter::AddSample()']]], ['addsubsample',['AddSubsample',['../de/d49/classshaka_1_1media_1_1DecryptConfig.html#a36681ecf1eeb8a4effb0f00b232bda58',1,'shaka::media::DecryptConfig']]], ['addsupplementalproperty',['AddSupplementalProperty',['../dd/db9/classshaka_1_1xml_1_1RepresentationBaseXmlNode.html#a58965505799f01c99768823caeb66a6b',1,'shaka::xml::RepresentationBaseXmlNode']]], ['addtrackinfo',['AddTrackInfo',['../de/dfa/classshaka_1_1media_1_1webm_1_1Encryptor.html#a866bb619cd0fde0c28ee522cbd4a8c59',1,'shaka::media::webm::Encryptor']]], @@ -35,8 +34,8 @@ var searchData= ['advancechunk',['AdvanceChunk',['../d9/d57/classshaka_1_1media_1_1mp4_1_1ChunkInfoIterator.html#aacde1d08a3ce21cf187a1dff4fe031b4',1,'shaka::media::mp4::ChunkInfoIterator']]], ['advancerun',['AdvanceRun',['../de/df6/classshaka_1_1media_1_1mp4_1_1TrackRunIterator.html#ada6e03ef97d03b7c11ef7ac873461364',1,'shaka::media::mp4::TrackRunIterator']]], ['advancesample',['AdvanceSample',['../d9/d57/classshaka_1_1media_1_1mp4_1_1ChunkInfoIterator.html#abed93049cf801c0c3795801da9d5ff7c',1,'shaka::media::mp4::ChunkInfoIterator::AdvanceSample()'],['../db/d4e/classshaka_1_1media_1_1mp4_1_1CompositionOffsetIterator.html#afa13feae7d7b96708264877e3198f939',1,'shaka::media::mp4::CompositionOffsetIterator::AdvanceSample()'],['../d1/d20/classshaka_1_1media_1_1mp4_1_1DecodingTimeIterator.html#aec68fe0d0dcccedfe2d898320fd534d5',1,'shaka::media::mp4::DecodingTimeIterator::AdvanceSample()'],['../d7/d26/classshaka_1_1media_1_1mp4_1_1SyncSampleIterator.html#a2f3f28acc6ecd10f8b30bab65334609d',1,'shaka::media::mp4::SyncSampleIterator::AdvanceSample()'],['../de/df6/classshaka_1_1media_1_1mp4_1_1TrackRunIterator.html#a6ff6e2ce67a54051c5a7e39dfadcb48d',1,'shaka::media::mp4::TrackRunIterator::AdvanceSample()']]], - ['aescbcdecryptor',['AesCbcDecryptor',['../df/d2d/classshaka_1_1media_1_1AesCbcDecryptor.html',1,'shaka::media']]], ['aescbcdecryptor',['AesCbcDecryptor',['../df/d2d/classshaka_1_1media_1_1AesCbcDecryptor.html#a855ab9fa2f350879a7716ec90033f825',1,'shaka::media::AesCbcDecryptor::AesCbcDecryptor(CbcPaddingScheme padding_scheme)'],['../df/d2d/classshaka_1_1media_1_1AesCbcDecryptor.html#a350d11c34c42ee4d4e62cdd7aebc5fbb',1,'shaka::media::AesCbcDecryptor::AesCbcDecryptor(CbcPaddingScheme padding_scheme, ConstantIvFlag constant_iv_flag)']]], + ['aescbcdecryptor',['AesCbcDecryptor',['../df/d2d/classshaka_1_1media_1_1AesCbcDecryptor.html',1,'shaka::media']]], ['aescbcencryptor',['AesCbcEncryptor',['../d4/d20/classshaka_1_1media_1_1AesCbcEncryptor.html',1,'shaka::media']]], ['aescbcencryptor',['AesCbcEncryptor',['../d4/d20/classshaka_1_1media_1_1AesCbcEncryptor.html#a2cc8f20b92d884d959b3a586b527fece',1,'shaka::media::AesCbcEncryptor::AesCbcEncryptor(CbcPaddingScheme padding_scheme)'],['../d4/d20/classshaka_1_1media_1_1AesCbcEncryptor.html#adbe4df9a37be949487a806301d143230',1,'shaka::media::AesCbcEncryptor::AesCbcEncryptor(CbcPaddingScheme padding_scheme, ConstantIvFlag constant_iv_flag)']]], ['aescryptor',['AesCryptor',['../df/d87/classshaka_1_1media_1_1AesCryptor.html',1,'shaka::media']]], @@ -53,8 +52,8 @@ var searchData= ['audio_5fobject_5ftype',['audio_object_type',['../d0/da2/classshaka_1_1media_1_1AACAudioSpecificConfig.html#a8c89c8845d90d292fad38f8caf378a63',1,'shaka::media::AACAudioSpecificConfig']]], ['audiorollrecoveryentry',['AudioRollRecoveryEntry',['../da/d6e/structshaka_1_1media_1_1mp4_1_1AudioRollRecoveryEntry.html',1,'shaka::media::mp4']]], ['audiosampleentry',['AudioSampleEntry',['../d8/d5b/structshaka_1_1media_1_1mp4_1_1AudioSampleEntry.html',1,'shaka::media::mp4']]], - ['audiostreaminfo',['AudioStreamInfo',['../da/d4e/classshaka_1_1media_1_1AudioStreamInfo.html',1,'shaka::media']]], ['audiostreaminfo',['AudioStreamInfo',['../da/d4e/classshaka_1_1media_1_1AudioStreamInfo.html#a1333ea7b15790da37addb60ba49131b4',1,'shaka::media::AudioStreamInfo']]], + ['audiostreaminfo',['AudioStreamInfo',['../da/d4e/classshaka_1_1media_1_1AudioStreamInfo.html',1,'shaka::media']]], ['audiotimestamphelper',['AudioTimestampHelper',['../d0/d4d/classshaka_1_1media_1_1AudioTimestampHelper.html',1,'shaka::media']]], ['auxinfoneedstobecached',['AuxInfoNeedsToBeCached',['../de/df6/classshaka_1_1media_1_1mp4_1_1TrackRunIterator.html#a8d4fb433e66fec693035cac796ca6851',1,'shaka::media::mp4::TrackRunIterator']]], ['avcdecoderconfigurationrecord',['AVCDecoderConfigurationRecord',['../d6/d57/classshaka_1_1media_1_1AVCDecoderConfigurationRecord.html',1,'shaka::media']]] diff --git a/docs/search/all_10.js b/docs/search/all_10.js index 4ff989fa7d..f0f038893b 100644 --- a/docs/search/all_10.js +++ b/docs/search/all_10.js @@ -28,8 +28,8 @@ var searchData= ['segment_5fduration_5fin_5fseconds',['segment_duration_in_seconds',['../db/d02/structshaka_1_1media_1_1ChunkingOptions.html#a1cdbde61303f629cc9b4cbcd98f2d711',1,'shaka::media::ChunkingOptions']]], ['segment_5fsap_5faligned',['segment_sap_aligned',['../d0/d27/structshaka_1_1media_1_1MuxerOptions.html#a1f1336e9be8b12733fe28da083eaf93f',1,'shaka::media::MuxerOptions::segment_sap_aligned()'],['../db/d02/structshaka_1_1media_1_1ChunkingOptions.html#a0ae39a9eef9c4adc63916fa594f0fe64',1,'shaka::media::ChunkingOptions::segment_sap_aligned()']]], ['segment_5ftemplate',['segment_template',['../d0/d27/structshaka_1_1media_1_1MuxerOptions.html#ab98cfd28046fc5c52ab2a45dba1a339a',1,'shaka::media::MuxerOptions']]], - ['segmenter',['Segmenter',['../dd/dc5/classshaka_1_1media_1_1webm_1_1Segmenter.html',1,'shaka::media::webm']]], ['segmenter',['Segmenter',['../d9/d26/classshaka_1_1media_1_1mp4_1_1Segmenter.html',1,'shaka::media::mp4']]], + ['segmenter',['Segmenter',['../dd/dc5/classshaka_1_1media_1_1webm_1_1Segmenter.html',1,'shaka::media::webm']]], ['segmentindex',['SegmentIndex',['../d4/df9/structshaka_1_1media_1_1mp4_1_1SegmentIndex.html',1,'shaka::media::mp4']]], ['segmentinfo',['SegmentInfo',['../d0/dc0/structshaka_1_1media_1_1SegmentInfo.html',1,'shaka::media']]], ['segmentinfo',['SegmentInfo',['../dc/de1/structshaka_1_1SegmentInfo.html',1,'shaka']]], @@ -52,11 +52,12 @@ var searchData= ['setencryptionkey',['SetEncryptionKey',['../d5/de0/classshaka_1_1media_1_1mp2t_1_1PesPacketGenerator.html#acc603c661a6e0c592091b8bde5a77e3a',1,'shaka::media::mp2t::PesPacketGenerator']]], ['seterror',['SetError',['../d0/d93/classshaka_1_1media_1_1Status.html#a26903fbb0ee18f6b8d7cd441e922b644',1,'shaka::media::Status']]], ['setfloatingpointattribute',['SetFloatingPointAttribute',['../d1/d31/classshaka_1_1xml_1_1XmlNode.html#ac4b6c261b14ffe83e9820b76b16af1ba',1,'shaka::xml::XmlNode']]], - ['sethandler',['SetHandler',['../da/dfd/classshaka_1_1media_1_1MediaHandler.html#aced66ff3e906e7dd45f1f3771d61edd7',1,'shaka::media::MediaHandler']]], + ['sethandler',['SetHandler',['../dd/d17/classshaka_1_1media_1_1Demuxer.html#a1247302b6c57fbafb09aec71ce0109e3',1,'shaka::media::Demuxer::SetHandler()'],['../da/dfd/classshaka_1_1media_1_1MediaHandler.html#aced66ff3e906e7dd45f1f3771d61edd7',1,'shaka::media::MediaHandler::SetHandler()']]], ['setid',['SetId',['../d1/d31/classshaka_1_1xml_1_1XmlNode.html#a7479055041708fb681957a838e7ecc1f',1,'shaka::xml::XmlNode']]], ['setintegerattribute',['SetIntegerAttribute',['../d1/d31/classshaka_1_1xml_1_1XmlNode.html#ab15dbcc1a051218dc16f44584276ad20',1,'shaka::xml::XmlNode']]], ['setiv',['SetIv',['../df/d87/classshaka_1_1media_1_1AesCryptor.html#a4875146da4761bb757d6b00132ae6fea',1,'shaka::media::AesCryptor']]], ['setkeysource',['SetKeySource',['../dd/d17/classshaka_1_1media_1_1Demuxer.html#abfcf3a9a3f64c0e27497c72324049a1e',1,'shaka::media::Demuxer::SetKeySource()'],['../df/d46/classshaka_1_1media_1_1Muxer.html#ad9c8f69897171ab81db6e7e9c367b4ce',1,'shaka::media::Muxer::SetKeySource()']]], + ['setlanguageoverride',['SetLanguageOverride',['../dd/d17/classshaka_1_1media_1_1Demuxer.html#aa3fe0a64a2745fa6f462c3d179809c3b',1,'shaka::media::Demuxer']]], ['setmuxerlistener',['SetMuxerListener',['../df/d46/classshaka_1_1media_1_1Muxer.html#a0e76dd0a5c07dd538221459365ae824a',1,'shaka::media::Muxer']]], ['setprogrammaptablewriterfortesting',['SetProgramMapTableWriterForTesting',['../de/d64/classshaka_1_1media_1_1mp2t_1_1TsWriter.html#a6eeeadf8e60dc09378b5df7c62eb2bf0',1,'shaka::media::mp2t::TsWriter']]], ['setprogresslistener',['SetProgressListener',['../df/d46/classshaka_1_1media_1_1Muxer.html#a25a146d553c385aad70dbff6b3e87eec',1,'shaka::media::Muxer']]], @@ -75,11 +76,10 @@ var searchData= ['skipbytes',['SkipBytes',['../d6/da9/classshaka_1_1media_1_1BitReader.html#a7d349253d5cc8f9aa33f1ca2ea94677c',1,'shaka::media::BitReader::SkipBytes()'],['../d9/d13/classshaka_1_1media_1_1BufferReader.html#a2b15dfcd6ff891a9cb7b76f48d91d15d',1,'shaka::media::BufferReader::SkipBytes()']]], ['some_5fhandler',['some_handler',['../d4/d9b/classshaka_1_1media_1_1MediaHandlerTestBase.html#aba1f3fe6f82c2a205aefdeae3be60d1d',1,'shaka::media::MediaHandlerTestBase']]], ['soundmediaheader',['SoundMediaHeader',['../d7/d07/structshaka_1_1media_1_1mp4_1_1SoundMediaHeader.html',1,'shaka::media::mp4']]], - ['start',['Start',['../d8/d5c/classshaka_1_1media_1_1MediaStream.html#af5eca8f2e63e762d52fcc30c5f8c38b0',1,'shaka::media::MediaStream']]], ['startbox',['StartBox',['../d1/dee/classshaka_1_1media_1_1mp4_1_1BoxReader.html#a6bafd9cd95a97c4c1475d1806d602ae2',1,'shaka::media::mp4::BoxReader']]], ['startswithstartcode',['StartsWithStartCode',['../db/d86/classshaka_1_1media_1_1NaluReader.html#a9ed9d56a06f43717cdb7035f86075975',1,'shaka::media::NaluReader']]], - ['status',['Status',['../d0/d93/classshaka_1_1media_1_1Status.html#abb1d7be8e22d23adff199fdf1a5c8639',1,'shaka::media::Status::Status()'],['../d0/d93/classshaka_1_1media_1_1Status.html#a676879d7464117a9d29281f7fa25b005',1,'shaka::media::Status::Status(error::Code error_code, const std::string &error_message)']]], ['status',['Status',['../d0/d93/classshaka_1_1media_1_1Status.html',1,'shaka::media']]], + ['status',['Status',['../d0/d93/classshaka_1_1media_1_1Status.html#abb1d7be8e22d23adff199fdf1a5c8639',1,'shaka::media::Status::Status()'],['../d0/d93/classshaka_1_1media_1_1Status.html#a676879d7464117a9d29281f7fa25b005',1,'shaka::media::Status::Status(error::Code error_code, const std::string &error_message)']]], ['stop',['Stop',['../d5/d33/classshaka_1_1media_1_1ProducerConsumerQueue.html#ac600977b708381facf07f87e36b43d79',1,'shaka::media::ProducerConsumerQueue']]], ['stopped',['Stopped',['../d5/d33/classshaka_1_1media_1_1ProducerConsumerQueue.html#a3d88bdebfa412f2847f1d96fd804bba1',1,'shaka::media::ProducerConsumerQueue']]], ['stream_5fid',['stream_id',['../d2/d93/classshaka_1_1media_1_1mp2t_1_1PesPacket.html#aa023c7fafbced88ca40e98362a7e4c69',1,'shaka::media::mp2t::PesPacket']]], @@ -87,13 +87,12 @@ var searchData= ['streamdescriptor',['StreamDescriptor',['../d2/d95/structshaka_1_1media_1_1StreamDescriptor.html',1,'shaka::media']]], ['streamdescriptorcomparefn',['StreamDescriptorCompareFn',['../d8/d3e/classshaka_1_1media_1_1StreamDescriptorCompareFn.html',1,'shaka::media']]], ['streaminfo',['StreamInfo',['../d5/db1/classshaka_1_1media_1_1StreamInfo.html',1,'shaka::media']]], - ['streams',['streams',['../dd/d17/classshaka_1_1media_1_1Demuxer.html#aafb74f83b0de2c787336bad9f096ce50',1,'shaka::media::Demuxer']]], ['subsampleentry',['SubsampleEntry',['../d1/d34/structshaka_1_1media_1_1SubsampleEntry.html',1,'shaka::media']]], ['subsegment_5fduration_5fin_5fseconds',['subsegment_duration_in_seconds',['../db/d02/structshaka_1_1media_1_1ChunkingOptions.html#ac9368f6edb53d9dd90bc128b664a12e5',1,'shaka::media::ChunkingOptions']]], ['subsegment_5fsap_5faligned',['subsegment_sap_aligned',['../db/d02/structshaka_1_1media_1_1ChunkingOptions.html#a6d9761fdfca7819c94baa23845ce9ad7',1,'shaka::media::ChunkingOptions']]], ['subtitlemediaheader',['SubtitleMediaHeader',['../db/d21/structshaka_1_1media_1_1mp4_1_1SubtitleMediaHeader.html',1,'shaka::media::mp4']]], ['suppressonce',['SuppressOnce',['../de/d52/classshaka_1_1Representation.html#a473e45dbbf64e6ab6ed670ccedac84ed',1,'shaka::Representation']]], ['syncsample',['SyncSample',['../dd/d3f/structshaka_1_1media_1_1mp4_1_1SyncSample.html',1,'shaka::media::mp4']]], - ['syncsampleiterator',['SyncSampleIterator',['../d7/d26/classshaka_1_1media_1_1mp4_1_1SyncSampleIterator.html#af8bc2d5d153bfdd168f145213c47d3fe',1,'shaka::media::mp4::SyncSampleIterator']]], - ['syncsampleiterator',['SyncSampleIterator',['../d7/d26/classshaka_1_1media_1_1mp4_1_1SyncSampleIterator.html',1,'shaka::media::mp4']]] + ['syncsampleiterator',['SyncSampleIterator',['../d7/d26/classshaka_1_1media_1_1mp4_1_1SyncSampleIterator.html',1,'shaka::media::mp4']]], + ['syncsampleiterator',['SyncSampleIterator',['../d7/d26/classshaka_1_1media_1_1mp4_1_1SyncSampleIterator.html#af8bc2d5d153bfdd168f145213c47d3fe',1,'shaka::media::mp4::SyncSampleIterator']]] ]; diff --git a/docs/search/all_11.js b/docs/search/all_11.js index f2f6e8058c..15378769f1 100644 --- a/docs/search/all_11.js +++ b/docs/search/all_11.js @@ -12,7 +12,7 @@ var searchData= ['texttrack',['TextTrack',['../d4/d0b/classshaka_1_1media_1_1TextTrack.html',1,'shaka::media']]], ['texttrackconfig',['TextTrackConfig',['../de/db3/classshaka_1_1media_1_1TextTrackConfig.html',1,'shaka::media']]], ['threadediofile',['ThreadedIoFile',['../d0/d66/classshaka_1_1media_1_1ThreadedIoFile.html',1,'shaka::media']]], - ['tostring',['ToString',['../da/d4e/classshaka_1_1media_1_1AudioStreamInfo.html#a7f94e51abcf522ff70e2456a8c8595df',1,'shaka::media::AudioStreamInfo::ToString()'],['../d7/d6d/classshaka_1_1media_1_1MediaSample.html#aa3cbd9fee3a228403c3128be5141a614',1,'shaka::media::MediaSample::ToString()'],['../d8/d5c/classshaka_1_1media_1_1MediaStream.html#a51d85facae4f9d8d89b97a42148769dd',1,'shaka::media::MediaStream::ToString()'],['../d0/d93/classshaka_1_1media_1_1Status.html#ac5d67e71539ca2f3589d3b2d4dc9ad60',1,'shaka::media::Status::ToString()'],['../d5/db1/classshaka_1_1media_1_1StreamInfo.html#aa11d2fe5509ebfdc038aa3f2cdbbe00d',1,'shaka::media::StreamInfo::ToString()'],['../d6/db1/classshaka_1_1media_1_1VideoStreamInfo.html#a9cac8e75d76f1192a48d1dcf61435537',1,'shaka::media::VideoStreamInfo::ToString()'],['../dc/da1/classshaka_1_1MpdBuilder.html#af7eae5cc11141eed2b5451d969e57db6',1,'shaka::MpdBuilder::ToString()']]], + ['tostring',['ToString',['../da/d4e/classshaka_1_1media_1_1AudioStreamInfo.html#a7f94e51abcf522ff70e2456a8c8595df',1,'shaka::media::AudioStreamInfo::ToString()'],['../d7/d6d/classshaka_1_1media_1_1MediaSample.html#aa3cbd9fee3a228403c3128be5141a614',1,'shaka::media::MediaSample::ToString()'],['../d0/d93/classshaka_1_1media_1_1Status.html#ac5d67e71539ca2f3589d3b2d4dc9ad60',1,'shaka::media::Status::ToString()'],['../d5/db1/classshaka_1_1media_1_1StreamInfo.html#aa11d2fe5509ebfdc038aa3f2cdbbe00d',1,'shaka::media::StreamInfo::ToString()'],['../d6/db1/classshaka_1_1media_1_1VideoStreamInfo.html#a9cac8e75d76f1192a48d1dcf61435537',1,'shaka::media::VideoStreamInfo::ToString()'],['../dc/da1/classshaka_1_1MpdBuilder.html#af7eae5cc11141eed2b5451d969e57db6',1,'shaka::MpdBuilder::ToString()']]], ['track',['Track',['../d3/db5/structshaka_1_1media_1_1mp4_1_1Track.html',1,'shaka::media::mp4']]], ['trackencryption',['TrackEncryption',['../db/db8/structshaka_1_1media_1_1mp4_1_1TrackEncryption.html',1,'shaka::media::mp4']]], ['trackextends',['TrackExtends',['../de/d29/structshaka_1_1media_1_1mp4_1_1TrackExtends.html',1,'shaka::media::mp4']]], diff --git a/docs/search/all_13.js b/docs/search/all_13.js index f6cee89365..2e1976918b 100644 --- a/docs/search/all_13.js +++ b/docs/search/all_13.js @@ -2,7 +2,7 @@ var searchData= [ ['validatefixedcryptoflags',['ValidateFixedCryptoFlags',['../d8/daf/namespaceshaka.html#abc3f498491fb895860ebdee359935d93',1,'shaka']]], ['validateflag',['ValidateFlag',['../d8/daf/namespaceshaka.html#a9eab59c66195b54a0f4f2ff67630c2cd',1,'shaka']]], - ['validateoutputstreamindex',['ValidateOutputStreamIndex',['../da/dfd/classshaka_1_1media_1_1MediaHandler.html#a7b61972eedda125b436dc4d26f88c1e6',1,'shaka::media::MediaHandler']]], + ['validateoutputstreamindex',['ValidateOutputStreamIndex',['../dd/d17/classshaka_1_1media_1_1Demuxer.html#ae4a07c3b511d9b5fd3594f042cacbeae',1,'shaka::media::Demuxer::ValidateOutputStreamIndex()'],['../da/dfd/classshaka_1_1media_1_1MediaHandler.html#a7b61972eedda125b436dc4d26f88c1e6',1,'shaka::media::MediaHandler::ValidateOutputStreamIndex()']]], ['validateprcryptoflags',['ValidatePRCryptoFlags',['../d8/daf/namespaceshaka.html#a8b6212ccc4b98e5fdb72f84acf252c6b',1,'shaka']]], ['validatewidevinecryptoflags',['ValidateWidevineCryptoFlags',['../d8/daf/namespaceshaka.html#ade3cbb360c0dcaacc5667676af885008',1,'shaka']]], ['verifysignature',['VerifySignature',['../d9/d0c/classshaka_1_1media_1_1RsaPublicKey.html#a146cc97c8fcacadde1b08c373b766fe4',1,'shaka::media::RsaPublicKey']]], diff --git a/docs/search/all_2.js b/docs/search/all_2.js index c91f515d5c..b4fb1a3929 100644 --- a/docs/search/all_2.js +++ b/docs/search/all_2.js @@ -31,7 +31,6 @@ var searchData= ['compositionoffsetiterator',['CompositionOffsetIterator',['../db/d4e/classshaka_1_1media_1_1mp4_1_1CompositionOffsetIterator.html',1,'shaka::media::mp4']]], ['compositiontimetosample',['CompositionTimeToSample',['../df/d7b/structshaka_1_1media_1_1mp4_1_1CompositionTimeToSample.html',1,'shaka::media::mp4']]], ['computesize',['ComputeSize',['../d1/d2d/structshaka_1_1media_1_1mp4_1_1Box.html#aa4e47d0ba81e234707c76ca36e32c1d5',1,'shaka::media::mp4::Box::ComputeSize()'],['../d6/dcb/structshaka_1_1media_1_1mp4_1_1SampleEncryptionEntry.html#a253fbc00315441efac7ea917a5952e2c',1,'shaka::media::mp4::SampleEncryptionEntry::ComputeSize()']]], - ['connect',['Connect',['../d8/d5c/classshaka_1_1media_1_1MediaStream.html#a98e53e299c7258419623b3d709553562',1,'shaka::media::MediaStream']]], ['container_5fname',['container_name',['../dd/d17/classshaka_1_1media_1_1Demuxer.html#a385c93fd8d589b7d3bccd35e14c58290',1,'shaka::media::Demuxer']]], ['contentencoding',['ContentEncoding',['../dc/da6/classshaka_1_1media_1_1ContentEncoding.html',1,'shaka::media']]], ['contentprotectionelement',['ContentProtectionElement',['../da/d43/structshaka_1_1ContentProtectionElement.html',1,'shaka']]], diff --git a/docs/search/all_5.js b/docs/search/all_5.js index c4d7f2f95e..89326ed004 100644 --- a/docs/search/all_5.js +++ b/docs/search/all_5.js @@ -11,7 +11,7 @@ var searchData= ['finalizesegment',['FinalizeSegment',['../de/d64/classshaka_1_1media_1_1mp2t_1_1TsWriter.html#ae9979f940d7a07127709576aa1f766a1',1,'shaka::media::mp2t::TsWriter']]], ['fixedkeysource',['FixedKeySource',['../d0/dac/classshaka_1_1media_1_1FixedKeySource.html',1,'shaka::media']]], ['flush',['Flush',['../d3/d0a/classshaka_1_1media_1_1MediaParser.html#a26752164d7e8ae6a9a894512291ad9cd',1,'shaka::media::MediaParser::Flush()'],['../d3/d61/classshaka_1_1media_1_1File.html#aba73e887fbfe2de3a679c679ddf03f4b',1,'shaka::media::File::Flush()'],['../d9/de6/classshaka_1_1media_1_1LocalFile.html#ad09f01654ef3109b66e3fb5dd9730516',1,'shaka::media::LocalFile::Flush()'],['../d9/dbd/classshaka_1_1media_1_1MemoryFile.html#abc1d0dc10b8ad719b92959c72c394b64',1,'shaka::media::MemoryFile::Flush()'],['../d0/d66/classshaka_1_1media_1_1ThreadedIoFile.html#a4c8d46b1a16fba8bf4267c0a11fa856e',1,'shaka::media::ThreadedIoFile::Flush()'],['../d7/d7a/classshaka_1_1media_1_1UdpFile.html#a66276fd0b6a7effe314ccd63e223d149',1,'shaka::media::UdpFile::Flush()'],['../d3/dc1/classshaka_1_1media_1_1mp2t_1_1Mp2tMediaParser.html#afdb1a88116e3347e67afeb7715847135',1,'shaka::media::mp2t::Mp2tMediaParser::Flush()'],['../d5/de0/classshaka_1_1media_1_1mp2t_1_1PesPacketGenerator.html#a71ea0819224b94ba9df5c951424bc6b1',1,'shaka::media::mp2t::PesPacketGenerator::Flush()'],['../d7/dd5/classshaka_1_1media_1_1mp4_1_1MP4MediaParser.html#a6f26e0d76aeda601fa87190901de27ea',1,'shaka::media::mp4::MP4MediaParser::Flush()'],['../da/de4/classshaka_1_1media_1_1WebMClusterParser.html#ac3d4be1a12667ed722915be727747eee',1,'shaka::media::WebMClusterParser::Flush()'],['../d2/ddb/classshaka_1_1media_1_1WebMMediaParser.html#a6c2d4b5b36304831e637f7ae1b9e54a2',1,'shaka::media::WebMMediaParser::Flush()'],['../dc/df2/classshaka_1_1media_1_1WebVttMediaParser.html#aa666cb1b9ee2ff940d9fc7efda4b50d7',1,'shaka::media::WebVttMediaParser::Flush()'],['../de/ddd/classshaka_1_1media_1_1WebVttSampleConverter.html#aa02d5ce7d9609b3841835fbab74b8c81',1,'shaka::media::WebVttSampleConverter::Flush()'],['../dc/d18/classshaka_1_1media_1_1wvm_1_1WvmMediaParser.html#ac5680e3bd6cdb07fd65af3f39fce999a',1,'shaka::media::wvm::WvmMediaParser::Flush()'],['../d4/d70/classshaka_1_1DashIopMpdNotifier.html#ab3411eb75eedce9a26f0767210280e71',1,'shaka::DashIopMpdNotifier::Flush()'],['../d3/dd0/classshaka_1_1MpdNotifier.html#af8149126f4793506bef385d067561dbf',1,'shaka::MpdNotifier::Flush()'],['../d8/de1/classshaka_1_1SimpleMpdNotifier.html#a8ea622a21a5807775bb2d998fa04658f',1,'shaka::SimpleMpdNotifier::Flush()']]], - ['flushstream',['FlushStream',['../da/dfd/classshaka_1_1media_1_1MediaHandler.html#ae7b4b8f83bf00b3bac0441f3fd991d4b',1,'shaka::media::MediaHandler::FlushStream()'],['../d4/d43/classshaka_1_1media_1_1ChunkingHandler.html#a528a31fccfbfac2d508d1d878ab54659',1,'shaka::media::ChunkingHandler::FlushStream()']]], + ['flushstream',['FlushStream',['../da/dfd/classshaka_1_1media_1_1MediaHandler.html#ae7b4b8f83bf00b3bac0441f3fd991d4b',1,'shaka::media::MediaHandler::FlushStream()'],['../df/d46/classshaka_1_1media_1_1Muxer.html#a522a24c661f6e50aa6fb2a04afbfe5f8',1,'shaka::media::Muxer::FlushStream()'],['../d4/d43/classshaka_1_1media_1_1ChunkingHandler.html#a528a31fccfbfac2d508d1d878ab54659',1,'shaka::media::ChunkingHandler::FlushStream()']]], ['forcesetsegmentalignment',['ForceSetSegmentAlignment',['../d8/d8e/classshaka_1_1AdaptationSet.html#a40532ecbed5f71de85bde0cb7eb1ef9d',1,'shaka::AdaptationSet']]], ['fragment_5fduration',['fragment_duration',['../d0/d27/structshaka_1_1media_1_1MuxerOptions.html#a0dbe637b21f1f22f248437b59ad62a38',1,'shaka::media::MuxerOptions']]], ['fragment_5fsap_5faligned',['fragment_sap_aligned',['../d0/d27/structshaka_1_1media_1_1MuxerOptions.html#acb335182d4bd226c1f044cc83705f4fc',1,'shaka::media::MuxerOptions']]], diff --git a/docs/search/all_8.js b/docs/search/all_8.js index d0f652503f..8273a36ade 100644 --- a/docs/search/all_8.js +++ b/docs/search/all_8.js @@ -5,9 +5,9 @@ var searchData= ['ignorebytes',['IgnoreBytes',['../d1/da1/classshaka_1_1media_1_1mp4_1_1BoxBuffer.html#a1a0c70e3124677ae08164f7b89f6a1d4',1,'shaka::media::mp4::BoxBuffer']]], ['init',['Init',['../d3/d0a/classshaka_1_1media_1_1MediaParser.html#adc7c91bebe75879abba91a56dae52153',1,'shaka::media::MediaParser::Init()'],['../d3/dc1/classshaka_1_1media_1_1mp2t_1_1Mp2tMediaParser.html#aa2aff12312827aacf2b7db6e2f792c52',1,'shaka::media::mp2t::Mp2tMediaParser::Init()'],['../d7/dd5/classshaka_1_1media_1_1mp4_1_1MP4MediaParser.html#acc87b9752a7f6e8c739109acbc02b69d',1,'shaka::media::mp4::MP4MediaParser::Init()'],['../de/df6/classshaka_1_1media_1_1mp4_1_1TrackRunIterator.html#ae9f02c32b4e2be8fc41a20f3f00f3494',1,'shaka::media::mp4::TrackRunIterator::Init()'],['../de/df6/classshaka_1_1media_1_1mp4_1_1TrackRunIterator.html#a4d39eaf8568da29b597411c56f50d86f',1,'shaka::media::mp4::TrackRunIterator::Init(const MovieFragment &moof)'],['../d2/ddb/classshaka_1_1media_1_1WebMMediaParser.html#a5cd5c298938e2c58c45f962b21e43b2e',1,'shaka::media::WebMMediaParser::Init()'],['../dc/df2/classshaka_1_1media_1_1WebVttMediaParser.html#af6c0fb7de806cccd0e1f9dd92b5310f3',1,'shaka::media::WebVttMediaParser::Init()'],['../dc/d18/classshaka_1_1media_1_1wvm_1_1WvmMediaParser.html#a6f931f1702724a9b19c3078a7832bc77',1,'shaka::media::wvm::WvmMediaParser::Init()'],['../d4/d70/classshaka_1_1DashIopMpdNotifier.html#a9dd9d655a538ff2618634ca1f9809478',1,'shaka::DashIopMpdNotifier::Init()'],['../de/d52/classshaka_1_1Representation.html#ae998409ae94f3ba12909a96e8f3f4f7e',1,'shaka::Representation::Init()'],['../d3/dd0/classshaka_1_1MpdNotifier.html#ad6171481d6fb437767b1f5b9e0dac1a3',1,'shaka::MpdNotifier::Init()'],['../d8/de1/classshaka_1_1SimpleMpdNotifier.html#a59bcb401b5ca8d5b893ec7da9461569f',1,'shaka::SimpleMpdNotifier::Init()']]], ['initcb',['InitCB',['../d3/d0a/classshaka_1_1media_1_1MediaParser.html#aef5795d2b3df2526c6e8afe1e4d072bf',1,'shaka::media::MediaParser']]], - ['initialize',['Initialize',['../dd/d17/classshaka_1_1media_1_1Demuxer.html#a436ed9fd2a3ddd78056ec7cf656fd9ad',1,'shaka::media::Demuxer::Initialize()'],['../da/dfd/classshaka_1_1media_1_1MediaHandler.html#aed0da512bbd998ec9d0a5c019ad17acb',1,'shaka::media::MediaHandler::Initialize()'],['../d5/d66/classshaka_1_1media_1_1NalUnitToByteStreamConverter.html#a27986db8a2e62669fe1983a39383c546',1,'shaka::media::NalUnitToByteStreamConverter::Initialize()'],['../dd/de4/classshaka_1_1media_1_1VideoSliceHeaderParser.html#a862422cdf78f370069055037338fa53d',1,'shaka::media::VideoSliceHeaderParser::Initialize()'],['../da/df0/classshaka_1_1media_1_1H264VideoSliceHeaderParser.html#a551bd1e2a852d1a3b23b77df8505b7f7',1,'shaka::media::H264VideoSliceHeaderParser::Initialize()'],['../d1/d79/classshaka_1_1media_1_1H265VideoSliceHeaderParser.html#a83a25520f713f4818a765ea3324a1438',1,'shaka::media::H265VideoSliceHeaderParser::Initialize()'],['../d5/de0/classshaka_1_1media_1_1mp2t_1_1PesPacketGenerator.html#aa0346189f99b2f0fc2c71da1543155fa',1,'shaka::media::mp2t::PesPacketGenerator::Initialize()'],['../de/dde/classshaka_1_1media_1_1mp2t_1_1TsSegmenter.html#acfb51e2e6163e7ae3c4fb62bda437466',1,'shaka::media::mp2t::TsSegmenter::Initialize()'],['../de/d64/classshaka_1_1media_1_1mp2t_1_1TsWriter.html#a6bee605be771538f78633e2ecfc979c6',1,'shaka::media::mp2t::TsWriter::Initialize()'],['../d9/d26/classshaka_1_1media_1_1mp4_1_1Segmenter.html#aaf326521fc1d46d31a7a3b94bcf17c24',1,'shaka::media::mp4::Segmenter::Initialize()'],['../de/dfa/classshaka_1_1media_1_1webm_1_1Encryptor.html#afa6065049fad093b96643b9e3d70595f',1,'shaka::media::webm::Encryptor::Initialize()'],['../dd/dc5/classshaka_1_1media_1_1webm_1_1Segmenter.html#abfde7f995368ea9e91ded9f4980903a6',1,'shaka::media::webm::Segmenter::Initialize()']]], + ['initialize',['Initialize',['../da/dfd/classshaka_1_1media_1_1MediaHandler.html#aed0da512bbd998ec9d0a5c019ad17acb',1,'shaka::media::MediaHandler::Initialize()'],['../d5/d66/classshaka_1_1media_1_1NalUnitToByteStreamConverter.html#a27986db8a2e62669fe1983a39383c546',1,'shaka::media::NalUnitToByteStreamConverter::Initialize()'],['../dd/de4/classshaka_1_1media_1_1VideoSliceHeaderParser.html#a862422cdf78f370069055037338fa53d',1,'shaka::media::VideoSliceHeaderParser::Initialize()'],['../da/df0/classshaka_1_1media_1_1H264VideoSliceHeaderParser.html#a551bd1e2a852d1a3b23b77df8505b7f7',1,'shaka::media::H264VideoSliceHeaderParser::Initialize()'],['../d1/d79/classshaka_1_1media_1_1H265VideoSliceHeaderParser.html#a83a25520f713f4818a765ea3324a1438',1,'shaka::media::H265VideoSliceHeaderParser::Initialize()'],['../d5/de0/classshaka_1_1media_1_1mp2t_1_1PesPacketGenerator.html#aa0346189f99b2f0fc2c71da1543155fa',1,'shaka::media::mp2t::PesPacketGenerator::Initialize()'],['../de/dde/classshaka_1_1media_1_1mp2t_1_1TsSegmenter.html#acfb51e2e6163e7ae3c4fb62bda437466',1,'shaka::media::mp2t::TsSegmenter::Initialize()'],['../de/d64/classshaka_1_1media_1_1mp2t_1_1TsWriter.html#a6bee605be771538f78633e2ecfc979c6',1,'shaka::media::mp2t::TsWriter::Initialize()'],['../d9/d26/classshaka_1_1media_1_1mp4_1_1Segmenter.html#a871281f21d7c5e4194febe925860305c',1,'shaka::media::mp4::Segmenter::Initialize()'],['../de/dfa/classshaka_1_1media_1_1webm_1_1Encryptor.html#afa6065049fad093b96643b9e3d70595f',1,'shaka::media::webm::Encryptor::Initialize()'],['../dd/dc5/classshaka_1_1media_1_1webm_1_1Segmenter.html#abfde7f995368ea9e91ded9f4980903a6',1,'shaka::media::webm::Segmenter::Initialize()']]], ['initializefragment',['InitializeFragment',['../dc/df3/classshaka_1_1media_1_1mp4_1_1EncryptingFragmenter.html#a126294f104809268975fe04391902ad3',1,'shaka::media::mp4::EncryptingFragmenter::InitializeFragment()'],['../db/d95/classshaka_1_1media_1_1mp4_1_1Fragmenter.html#aa702c2af5ea5096d94f2943076a21e4a',1,'shaka::media::mp4::Fragmenter::InitializeFragment()']]], - ['initializeinternal',['InitializeInternal',['../da/dfd/classshaka_1_1media_1_1MediaHandler.html#a0e05325d62bfb66318301c1ed790a46e',1,'shaka::media::MediaHandler::InitializeInternal()'],['../d4/d43/classshaka_1_1media_1_1ChunkingHandler.html#a76a5f4b74da3876cc72f44301c389ebd',1,'shaka::media::ChunkingHandler::InitializeInternal()'],['../d6/d4c/classshaka_1_1media_1_1EncryptionHandler.html#a3f1808a4386081e5e1c9a798a1a69dd0',1,'shaka::media::EncryptionHandler::InitializeInternal()']]], + ['initializeinternal',['InitializeInternal',['../dd/d17/classshaka_1_1media_1_1Demuxer.html#a7488d8ea312be5822c67f5b69a8dbd9f',1,'shaka::media::Demuxer::InitializeInternal()'],['../da/dfd/classshaka_1_1media_1_1MediaHandler.html#a0e05325d62bfb66318301c1ed790a46e',1,'shaka::media::MediaHandler::InitializeInternal()'],['../df/d46/classshaka_1_1media_1_1Muxer.html#a36882e12df5c5bfd48a7b94d1dfad857',1,'shaka::media::Muxer::InitializeInternal()'],['../d4/d43/classshaka_1_1media_1_1ChunkingHandler.html#a76a5f4b74da3876cc72f44301c389ebd',1,'shaka::media::ChunkingHandler::InitializeInternal()'],['../d6/d4c/classshaka_1_1media_1_1EncryptionHandler.html#a3f1808a4386081e5e1c9a798a1a69dd0',1,'shaka::media::EncryptionHandler::InitializeInternal()']]], ['initializewithiv',['InitializeWithIv',['../df/d87/classshaka_1_1media_1_1AesCryptor.html#a41954df34b76b04d561892732dd0ec2f',1,'shaka::media::AesCryptor::InitializeWithIv()'],['../df/d2d/classshaka_1_1media_1_1AesCbcDecryptor.html#a71ff0b9654de96f9990b29c35fa9b7bf',1,'shaka::media::AesCbcDecryptor::InitializeWithIv()'],['../d3/d75/classshaka_1_1media_1_1AesEncryptor.html#a0695df5615cadf6977fdbac978daeffa',1,'shaka::media::AesEncryptor::InitializeWithIv()'],['../d3/dfe/classshaka_1_1media_1_1AesPatternCryptor.html#af878688f0f277f3f6757e85654439c34',1,'shaka::media::AesPatternCryptor::InitializeWithIv()']]], ['injectclockfortesting',['InjectClockForTesting',['../dc/da1/classshaka_1_1MpdBuilder.html#a7a4f96f12b589cfc4b5c2f44532eec53',1,'shaka::MpdBuilder']]], ['injectpespacketgeneratorfortesting',['InjectPesPacketGeneratorForTesting',['../de/dde/classshaka_1_1media_1_1mp2t_1_1TsSegmenter.html#abb78b18426643d58bc44ea61823dc29c',1,'shaka::media::mp2t::TsSegmenter']]], diff --git a/docs/search/all_b.js b/docs/search/all_b.js index b8023a82b7..767a5c884b 100644 --- a/docs/search/all_b.js +++ b/docs/search/all_b.js @@ -14,8 +14,6 @@ var searchData= ['mediainformation',['MediaInformation',['../d5/d86/structshaka_1_1media_1_1mp4_1_1MediaInformation.html',1,'shaka::media::mp4']]], ['mediaparser',['MediaParser',['../d3/d0a/classshaka_1_1media_1_1MediaParser.html',1,'shaka::media']]], ['mediasample',['MediaSample',['../d7/d6d/classshaka_1_1media_1_1MediaSample.html',1,'shaka::media']]], - ['mediastream',['MediaStream',['../d8/d5c/classshaka_1_1media_1_1MediaStream.html',1,'shaka::media']]], - ['mediastream',['MediaStream',['../d8/d5c/classshaka_1_1media_1_1MediaStream.html#a12b0f703395d756a584d78b686b2b99b',1,'shaka::media::MediaStream']]], ['memoryfile',['MemoryFile',['../d9/dbd/classshaka_1_1media_1_1MemoryFile.html',1,'shaka::media']]], ['metadata',['Metadata',['../dd/df6/structshaka_1_1media_1_1mp4_1_1Metadata.html',1,'shaka::media::mp4']]], ['mkvwriter',['MkvWriter',['../d1/d0a/classshaka_1_1media_1_1MkvWriter.html',1,'shaka::media']]], @@ -33,19 +31,19 @@ var searchData= ['mp2tmediaparser',['Mp2tMediaParser',['../d3/dc1/classshaka_1_1media_1_1mp2t_1_1Mp2tMediaParser.html',1,'shaka::media::mp2t']]], ['mp4_5fuse_5fdecoding_5ftimestamp_5fin_5ftimeline',['mp4_use_decoding_timestamp_in_timeline',['../d0/d27/structshaka_1_1media_1_1MuxerOptions.html#a4d3d8c1923a2e0f684c2591cd7f4a890',1,'shaka::media::MuxerOptions']]], ['mp4mediaparser',['MP4MediaParser',['../d7/dd5/classshaka_1_1media_1_1mp4_1_1MP4MediaParser.html',1,'shaka::media::mp4']]], - ['mp4muxer',['MP4Muxer',['../db/d30/classshaka_1_1media_1_1mp4_1_1MP4Muxer.html#a5b6a878865250e3e17268c011a361497',1,'shaka::media::mp4::MP4Muxer']]], ['mp4muxer',['MP4Muxer',['../db/d30/classshaka_1_1media_1_1mp4_1_1MP4Muxer.html',1,'shaka::media::mp4']]], + ['mp4muxer',['MP4Muxer',['../db/d30/classshaka_1_1media_1_1mp4_1_1MP4Muxer.html#a5b6a878865250e3e17268c011a361497',1,'shaka::media::mp4::MP4Muxer']]], ['mpd_5ftype',['mpd_type',['../d3/dd0/classshaka_1_1MpdNotifier.html#adfb5bc1586cdb7860dd349b3caf25faa',1,'shaka::MpdNotifier']]], - ['mpdbuilder',['MpdBuilder',['../dc/da1/classshaka_1_1MpdBuilder.html#ab364102e01afedd8a4dcc9be4fdcc0ab',1,'shaka::MpdBuilder']]], ['mpdbuilder',['MpdBuilder',['../dc/da1/classshaka_1_1MpdBuilder.html',1,'shaka']]], + ['mpdbuilder',['MpdBuilder',['../dc/da1/classshaka_1_1MpdBuilder.html#ab364102e01afedd8a4dcc9be4fdcc0ab',1,'shaka::MpdBuilder']]], ['mpdnotifier',['MpdNotifier',['../d3/dd0/classshaka_1_1MpdNotifier.html',1,'shaka']]], ['mpdnotifierfactory',['MpdNotifierFactory',['../d4/db4/classshaka_1_1MpdNotifierFactory.html',1,'shaka']]], - ['mpdnotifymuxerlistener',['MpdNotifyMuxerListener',['../d9/da5/classshaka_1_1media_1_1MpdNotifyMuxerListener.html',1,'shaka::media']]], ['mpdnotifymuxerlistener',['MpdNotifyMuxerListener',['../d9/da5/classshaka_1_1media_1_1MpdNotifyMuxerListener.html#a6912e6cfc341c1a768d214ce08bb0f82',1,'shaka::media::MpdNotifyMuxerListener']]], + ['mpdnotifymuxerlistener',['MpdNotifyMuxerListener',['../d9/da5/classshaka_1_1media_1_1MpdNotifyMuxerListener.html',1,'shaka::media']]], ['mpdoptions',['MpdOptions',['../d1/df3/structshaka_1_1MpdOptions.html',1,'shaka']]], ['mpdwriter',['MpdWriter',['../db/dcd/classshaka_1_1MpdWriter.html',1,'shaka']]], - ['multisegmentsegmenter',['MultiSegmentSegmenter',['../d2/dd5/classshaka_1_1media_1_1webm_1_1MultiSegmentSegmenter.html',1,'shaka::media::webm']]], ['multisegmentsegmenter',['MultiSegmentSegmenter',['../d8/db7/classshaka_1_1media_1_1mp4_1_1MultiSegmentSegmenter.html',1,'shaka::media::mp4']]], + ['multisegmentsegmenter',['MultiSegmentSegmenter',['../d2/dd5/classshaka_1_1media_1_1webm_1_1MultiSegmentSegmenter.html',1,'shaka::media::webm']]], ['mutable_5fdata',['mutable_data',['../d2/d93/classshaka_1_1media_1_1mp2t_1_1PesPacket.html#a41aa532d0953db4ed9308ad176c6d878',1,'shaka::media::mp2t::PesPacket']]], ['muxer',['Muxer',['../df/d46/classshaka_1_1media_1_1Muxer.html',1,'shaka::media']]], ['muxerlistener',['MuxerListener',['../dd/d7a/classshaka_1_1media_1_1MuxerListener.html',1,'shaka::media']]], diff --git a/docs/search/all_e.js b/docs/search/all_e.js index 3c19c50ee2..0cc6b9e412 100644 --- a/docs/search/all_e.js +++ b/docs/search/all_e.js @@ -1,6 +1,6 @@ var searchData= [ - ['parse',['Parse',['../dd/d17/classshaka_1_1media_1_1Demuxer.html#a0f9b7c954ff48c3021467300d755ac29',1,'shaka::media::Demuxer::Parse()'],['../d3/d0a/classshaka_1_1media_1_1MediaParser.html#a0c85f3cb0591f67c036276be82a1ba9d',1,'shaka::media::MediaParser::Parse()'],['../d0/dd4/classshaka_1_1media_1_1ProtectionSystemSpecificInfo.html#a13b0f93b68efff614c5356df081f2560',1,'shaka::media::ProtectionSystemSpecificInfo::Parse()'],['../d0/da2/classshaka_1_1media_1_1AACAudioSpecificConfig.html#a6b3deca725a42113bf7303387ab74f0f',1,'shaka::media::AACAudioSpecificConfig::Parse()'],['../de/de0/classshaka_1_1media_1_1DecoderConfigurationRecord.html#ab05a1971c60e510b7bc0b5b578dfb04b',1,'shaka::media::DecoderConfigurationRecord::Parse(const std::vector< uint8_t > &data)'],['../de/de0/classshaka_1_1media_1_1DecoderConfigurationRecord.html#a07b7d0dbae45971d4fd4a24652980f65',1,'shaka::media::DecoderConfigurationRecord::Parse(const uint8_t *data, size_t data_size)'],['../d8/d14/classshaka_1_1media_1_1VP8Parser.html#a8baec0e4c74b0b220b777426d0c463e1',1,'shaka::media::VP8Parser::Parse()'],['../db/d5a/classshaka_1_1media_1_1VP9Parser.html#ae915c36aa472d70b55e3d65b24612e57',1,'shaka::media::VP9Parser::Parse()'],['../db/dcb/classshaka_1_1media_1_1VPxParser.html#abb83c8c74d304e83efb8fa60bd7bb722',1,'shaka::media::VPxParser::Parse()'],['../d3/d0c/classshaka_1_1media_1_1mp2t_1_1AdtsHeader.html#a2e154d7423498baf8cd8888c70dcfca9',1,'shaka::media::mp2t::AdtsHeader::Parse()'],['../d3/dc1/classshaka_1_1media_1_1mp2t_1_1Mp2tMediaParser.html#af1a8a33b4ce61777c876717b005d0026',1,'shaka::media::mp2t::Mp2tMediaParser::Parse()'],['../d1/d2d/structshaka_1_1media_1_1mp4_1_1Box.html#a209382fcd42e82a896c29e856627ca52',1,'shaka::media::mp4::Box::Parse()'],['../d7/dd5/classshaka_1_1media_1_1mp4_1_1MP4MediaParser.html#a4105cdbe5ece03071a17c06fb27699b0',1,'shaka::media::mp4::MP4MediaParser::Parse()'],['../da/de4/classshaka_1_1media_1_1WebMClusterParser.html#aba1bae97c2d96181027e43b0a1993e67',1,'shaka::media::WebMClusterParser::Parse()'],['../db/dae/classshaka_1_1media_1_1WebMInfoParser.html#ae0b4d37e02d43627b1bc9c64f43ee3f7',1,'shaka::media::WebMInfoParser::Parse()'],['../d2/ddb/classshaka_1_1media_1_1WebMMediaParser.html#a40940ec01d965e3a78213861a93f7cfc',1,'shaka::media::WebMMediaParser::Parse()'],['../dc/dca/classshaka_1_1media_1_1WebMListParser.html#acd805b7eb25afcd9a3be2d8d88e3c6af',1,'shaka::media::WebMListParser::Parse()'],['../d8/d86/classshaka_1_1media_1_1WebMTracksParser.html#aa4b6d4ac9fa57b47cbc17ee7c1bd3639',1,'shaka::media::WebMTracksParser::Parse()'],['../d4/d59/classshaka_1_1media_1_1WebMWebVTTParser.html#a4e6f754e4fba24f7ea77fd0db959908b',1,'shaka::media::WebMWebVTTParser::Parse()'],['../dc/df2/classshaka_1_1media_1_1WebVttMediaParser.html#a5295c061b251726d1525cefc091101a2',1,'shaka::media::WebVttMediaParser::Parse()'],['../dc/d18/classshaka_1_1media_1_1wvm_1_1WvmMediaParser.html#a246702aa75891cbe396ca7cc11e13eeb',1,'shaka::media::wvm::WvmMediaParser::Parse()']]], + ['parse',['Parse',['../d3/d0a/classshaka_1_1media_1_1MediaParser.html#a0c85f3cb0591f67c036276be82a1ba9d',1,'shaka::media::MediaParser::Parse()'],['../d0/dd4/classshaka_1_1media_1_1ProtectionSystemSpecificInfo.html#a13b0f93b68efff614c5356df081f2560',1,'shaka::media::ProtectionSystemSpecificInfo::Parse()'],['../d0/da2/classshaka_1_1media_1_1AACAudioSpecificConfig.html#a6b3deca725a42113bf7303387ab74f0f',1,'shaka::media::AACAudioSpecificConfig::Parse()'],['../de/de0/classshaka_1_1media_1_1DecoderConfigurationRecord.html#ab05a1971c60e510b7bc0b5b578dfb04b',1,'shaka::media::DecoderConfigurationRecord::Parse(const std::vector< uint8_t > &data)'],['../de/de0/classshaka_1_1media_1_1DecoderConfigurationRecord.html#a07b7d0dbae45971d4fd4a24652980f65',1,'shaka::media::DecoderConfigurationRecord::Parse(const uint8_t *data, size_t data_size)'],['../d8/d14/classshaka_1_1media_1_1VP8Parser.html#a8baec0e4c74b0b220b777426d0c463e1',1,'shaka::media::VP8Parser::Parse()'],['../db/d5a/classshaka_1_1media_1_1VP9Parser.html#ae915c36aa472d70b55e3d65b24612e57',1,'shaka::media::VP9Parser::Parse()'],['../db/dcb/classshaka_1_1media_1_1VPxParser.html#abb83c8c74d304e83efb8fa60bd7bb722',1,'shaka::media::VPxParser::Parse()'],['../d3/d0c/classshaka_1_1media_1_1mp2t_1_1AdtsHeader.html#a2e154d7423498baf8cd8888c70dcfca9',1,'shaka::media::mp2t::AdtsHeader::Parse()'],['../d3/dc1/classshaka_1_1media_1_1mp2t_1_1Mp2tMediaParser.html#af1a8a33b4ce61777c876717b005d0026',1,'shaka::media::mp2t::Mp2tMediaParser::Parse()'],['../d1/d2d/structshaka_1_1media_1_1mp4_1_1Box.html#a209382fcd42e82a896c29e856627ca52',1,'shaka::media::mp4::Box::Parse()'],['../d7/dd5/classshaka_1_1media_1_1mp4_1_1MP4MediaParser.html#a4105cdbe5ece03071a17c06fb27699b0',1,'shaka::media::mp4::MP4MediaParser::Parse()'],['../da/de4/classshaka_1_1media_1_1WebMClusterParser.html#aba1bae97c2d96181027e43b0a1993e67',1,'shaka::media::WebMClusterParser::Parse()'],['../db/dae/classshaka_1_1media_1_1WebMInfoParser.html#ae0b4d37e02d43627b1bc9c64f43ee3f7',1,'shaka::media::WebMInfoParser::Parse()'],['../d2/ddb/classshaka_1_1media_1_1WebMMediaParser.html#a40940ec01d965e3a78213861a93f7cfc',1,'shaka::media::WebMMediaParser::Parse()'],['../dc/dca/classshaka_1_1media_1_1WebMListParser.html#acd805b7eb25afcd9a3be2d8d88e3c6af',1,'shaka::media::WebMListParser::Parse()'],['../d8/d86/classshaka_1_1media_1_1WebMTracksParser.html#aa4b6d4ac9fa57b47cbc17ee7c1bd3639',1,'shaka::media::WebMTracksParser::Parse()'],['../d4/d59/classshaka_1_1media_1_1WebMWebVTTParser.html#a4e6f754e4fba24f7ea77fd0db959908b',1,'shaka::media::WebMWebVTTParser::Parse()'],['../dc/df2/classshaka_1_1media_1_1WebVttMediaParser.html#a5295c061b251726d1525cefc091101a2',1,'shaka::media::WebVttMediaParser::Parse()'],['../dc/d18/classshaka_1_1media_1_1wvm_1_1WvmMediaParser.html#a246702aa75891cbe396ca7cc11e13eeb',1,'shaka::media::wvm::WvmMediaParser::Parse()']]], ['parseboxes',['ParseBoxes',['../d0/dd4/classshaka_1_1media_1_1ProtectionSystemSpecificInfo.html#aa984e27d2655a451ea87ff0a4ddd8b79',1,'shaka::media::ProtectionSystemSpecificInfo']]], ['parsefrombuffer',['ParseFromBuffer',['../d6/dcb/structshaka_1_1media_1_1mp4_1_1SampleEncryptionEntry.html#a247ca9987470a6c724f1e099a78d3460',1,'shaka::media::mp4::SampleEncryptionEntry']]], ['parsefromsampleencryptiondata',['ParseFromSampleEncryptionData',['../d4/dad/structshaka_1_1media_1_1mp4_1_1SampleEncryption.html#a0498009b07beb46e029c65bfb55fc741',1,'shaka::media::mp4::SampleEncryption']]], @@ -21,8 +21,8 @@ var searchData= ['pixel_5fheight',['pixel_height',['../d6/db1/classshaka_1_1media_1_1VideoStreamInfo.html#ae420a97a606ef54be16beb49e42cd135',1,'shaka::media::VideoStreamInfo']]], ['pixel_5fwidth',['pixel_width',['../d6/db1/classshaka_1_1media_1_1VideoStreamInfo.html#af5f655f36865a3af28bd0c7328e9a91e',1,'shaka::media::VideoStreamInfo']]], ['pixelaspectratio',['PixelAspectRatio',['../dd/d71/structshaka_1_1media_1_1mp4_1_1PixelAspectRatio.html',1,'shaka::media::mp4']]], - ['playreadykeysource',['PlayReadyKeySource',['../d4/da6/classshaka_1_1media_1_1PlayReadyKeySource.html',1,'shaka::media']]], ['playreadykeysource',['PlayReadyKeySource',['../d4/da6/classshaka_1_1media_1_1PlayReadyKeySource.html#a2d85b64ad09aec73b84a26071a9c059e',1,'shaka::media::PlayReadyKeySource::PlayReadyKeySource(const std::string &server_url)'],['../d4/da6/classshaka_1_1media_1_1PlayReadyKeySource.html#a11f5940080bf569c4c3dca1fe4bd9ce1',1,'shaka::media::PlayReadyKeySource::PlayReadyKeySource(const std::string &server_url, const std::string &client_cert_file, const std::string &client_cert_private_key_file, const std::string &client_cert_private_key_password)']]], + ['playreadykeysource',['PlayReadyKeySource',['../d4/da6/classshaka_1_1media_1_1PlayReadyKeySource.html',1,'shaka::media']]], ['pop',['Pop',['../d7/dda/classshaka_1_1media_1_1ByteQueue.html#a31b30d39d14fca3ce722b4233de95c79',1,'shaka::media::ByteQueue::Pop()'],['../d5/d33/classshaka_1_1media_1_1ProducerConsumerQueue.html#a935e9ddee232be82d224c9b81b3b4f88',1,'shaka::media::ProducerConsumerQueue::Pop()']]], ['popsample',['PopSample',['../de/ddd/classshaka_1_1media_1_1WebVttSampleConverter.html#a43fa59b53f847b638cf32c6f03f87dcd',1,'shaka::media::WebVttSampleConverter']]], ['pos',['Pos',['../d1/da1/classshaka_1_1media_1_1mp4_1_1BoxBuffer.html#a2659cd1503fb96d2d25aaa75fe2746de',1,'shaka::media::mp4::BoxBuffer']]], @@ -34,9 +34,9 @@ var searchData= ['printerror',['PrintError',['../d8/daf/namespaceshaka.html#a54fadd9c7ef14b39cd0355a5c269c772',1,'shaka']]], ['private_5fframe',['private_frame',['../d3/dad/structshaka_1_1media_1_1mp4_1_1ID3v2.html#a33c145fa8ed1417799dce66a94f8e95c',1,'shaka::media::mp4::ID3v2']]], ['privframe',['PrivFrame',['../d3/d47/structshaka_1_1media_1_1mp4_1_1PrivFrame.html',1,'shaka::media::mp4']]], - ['process',['Process',['../da/dfd/classshaka_1_1media_1_1MediaHandler.html#acb614e9f43e1eb6f837801b15b78c0b4',1,'shaka::media::MediaHandler::Process()'],['../d4/d43/classshaka_1_1media_1_1ChunkingHandler.html#a44c30ffd7c283be2ba4347bda7848633',1,'shaka::media::ChunkingHandler::Process()'],['../d6/d4c/classshaka_1_1media_1_1EncryptionHandler.html#a7887e6060eb572036674ecb9a7e045c4',1,'shaka::media::EncryptionHandler::Process()']]], - ['producerconsumerqueue',['ProducerConsumerQueue',['../d5/d33/classshaka_1_1media_1_1ProducerConsumerQueue.html',1,'shaka::media']]], + ['process',['Process',['../dd/d17/classshaka_1_1media_1_1Demuxer.html#a869b21d13f02d4d5c0519f9eb35117cd',1,'shaka::media::Demuxer::Process()'],['../da/dfd/classshaka_1_1media_1_1MediaHandler.html#acb614e9f43e1eb6f837801b15b78c0b4',1,'shaka::media::MediaHandler::Process()'],['../df/d46/classshaka_1_1media_1_1Muxer.html#aec730b070245231a0887787005c06eee',1,'shaka::media::Muxer::Process()'],['../d4/d43/classshaka_1_1media_1_1ChunkingHandler.html#a44c30ffd7c283be2ba4347bda7848633',1,'shaka::media::ChunkingHandler::Process()'],['../d6/d4c/classshaka_1_1media_1_1EncryptionHandler.html#a7887e6060eb572036674ecb9a7e045c4',1,'shaka::media::EncryptionHandler::Process()']]], ['producerconsumerqueue',['ProducerConsumerQueue',['../d5/d33/classshaka_1_1media_1_1ProducerConsumerQueue.html#ad7ccb149baa88e5f8356be18344d2baf',1,'shaka::media::ProducerConsumerQueue::ProducerConsumerQueue(size_t capacity)'],['../d5/d33/classshaka_1_1media_1_1ProducerConsumerQueue.html#a80ff75afdbbf7f567dcb57a755542ffc',1,'shaka::media::ProducerConsumerQueue::ProducerConsumerQueue(size_t capacity, size_t starting_pos)']]], + ['producerconsumerqueue',['ProducerConsumerQueue',['../d5/d33/classshaka_1_1media_1_1ProducerConsumerQueue.html',1,'shaka::media']]], ['programmaptablewriter',['ProgramMapTableWriter',['../dc/d03/classshaka_1_1media_1_1mp2t_1_1ProgramMapTableWriter.html',1,'shaka::media::mp2t']]], ['progresslistener',['ProgressListener',['../d4/de6/classshaka_1_1media_1_1ProgressListener.html',1,'shaka::media']]], ['protection_5fscheme',['protection_scheme',['../d6/d82/structshaka_1_1media_1_1EncryptionOptions.html#ac858b4c03e49e871e07e38fc35893088',1,'shaka::media::EncryptionOptions']]], @@ -44,7 +44,6 @@ var searchData= ['protectionsystemspecificheader',['ProtectionSystemSpecificHeader',['../d0/d3c/structshaka_1_1media_1_1mp4_1_1ProtectionSystemSpecificHeader.html',1,'shaka::media::mp4']]], ['protectionsystemspecificinfo',['ProtectionSystemSpecificInfo',['../d0/dd4/classshaka_1_1media_1_1ProtectionSystemSpecificInfo.html',1,'shaka::media']]], ['pts',['pts',['../d2/d93/classshaka_1_1media_1_1mp2t_1_1PesPacket.html#a5c02473f77069810be154a13c7cdcc66',1,'shaka::media::mp2t::PesPacket']]], - ['pullsample',['PullSample',['../d8/d5c/classshaka_1_1media_1_1MediaStream.html#aee15b821f0682812a9d631d531ed8101',1,'shaka::media::MediaStream']]], ['push',['Push',['../d7/dda/classshaka_1_1media_1_1ByteQueue.html#acea792e406efe5119cec2e3e522e02c2',1,'shaka::media::ByteQueue::Push()'],['../d5/d33/classshaka_1_1media_1_1ProducerConsumerQueue.html#a6eaf80daa8c96b0157f5fcd9763dbec1',1,'shaka::media::ProducerConsumerQueue::Push()']]], - ['pushsample',['PushSample',['../d8/d5c/classshaka_1_1media_1_1MediaStream.html#ac65da3105afb21a9013f59a217a26b29',1,'shaka::media::MediaStream::PushSample()'],['../d5/de0/classshaka_1_1media_1_1mp2t_1_1PesPacketGenerator.html#a1a0286c1be09cddc6e8189f4b6b1f544',1,'shaka::media::mp2t::PesPacketGenerator::PushSample()'],['../de/ddd/classshaka_1_1media_1_1WebVttSampleConverter.html#a3e60653861c6d7785adb0ccdb2ed42a3',1,'shaka::media::WebVttSampleConverter::PushSample()']]] + ['pushsample',['PushSample',['../d5/de0/classshaka_1_1media_1_1mp2t_1_1PesPacketGenerator.html#a1a0286c1be09cddc6e8189f4b6b1f544',1,'shaka::media::mp2t::PesPacketGenerator::PushSample()'],['../de/ddd/classshaka_1_1media_1_1WebVttSampleConverter.html#a3e60653861c6d7785adb0ccdb2ed42a3',1,'shaka::media::WebVttSampleConverter::PushSample()']]] ]; diff --git a/docs/search/all_f.js b/docs/search/all_f.js index 5fff4ab06c..64a2af32f0 100644 --- a/docs/search/all_f.js +++ b/docs/search/all_f.js @@ -29,5 +29,5 @@ var searchData= ['rsaprivatekey',['RsaPrivateKey',['../d0/dce/classshaka_1_1media_1_1RsaPrivateKey.html',1,'shaka::media']]], ['rsapublickey',['RsaPublicKey',['../d9/d0c/classshaka_1_1media_1_1RsaPublicKey.html',1,'shaka::media']]], ['rsarequestsigner',['RsaRequestSigner',['../d7/ddd/classshaka_1_1media_1_1RsaRequestSigner.html',1,'shaka::media']]], - ['run',['Run',['../dc/df0/classshaka_1_1media_1_1ClosureThread.html#a2c95d317c0b83b66ac7991c3506dc4e7',1,'shaka::media::ClosureThread::Run()'],['../dd/d17/classshaka_1_1media_1_1Demuxer.html#a9e0b4a430603fdf4639c2153622ae1a2',1,'shaka::media::Demuxer::Run()'],['../df/d46/classshaka_1_1media_1_1Muxer.html#adc96fbcd6a4d4ba9845f8d00974ace0f',1,'shaka::media::Muxer::Run()']]] + ['run',['Run',['../dc/df0/classshaka_1_1media_1_1ClosureThread.html#a2c95d317c0b83b66ac7991c3506dc4e7',1,'shaka::media::ClosureThread::Run()'],['../dd/d17/classshaka_1_1media_1_1Demuxer.html#a9e0b4a430603fdf4639c2153622ae1a2',1,'shaka::media::Demuxer::Run()']]] ]; diff --git a/docs/search/classes_a.js b/docs/search/classes_a.js index 292840a847..c52adb270a 100644 --- a/docs/search/classes_a.js +++ b/docs/search/classes_a.js @@ -9,7 +9,6 @@ var searchData= ['mediainformation',['MediaInformation',['../d5/d86/structshaka_1_1media_1_1mp4_1_1MediaInformation.html',1,'shaka::media::mp4']]], ['mediaparser',['MediaParser',['../d3/d0a/classshaka_1_1media_1_1MediaParser.html',1,'shaka::media']]], ['mediasample',['MediaSample',['../d7/d6d/classshaka_1_1media_1_1MediaSample.html',1,'shaka::media']]], - ['mediastream',['MediaStream',['../d8/d5c/classshaka_1_1media_1_1MediaStream.html',1,'shaka::media']]], ['memoryfile',['MemoryFile',['../d9/dbd/classshaka_1_1media_1_1MemoryFile.html',1,'shaka::media']]], ['metadata',['Metadata',['../dd/df6/structshaka_1_1media_1_1mp4_1_1Metadata.html',1,'shaka::media::mp4']]], ['mkvwriter',['MkvWriter',['../d1/d0a/classshaka_1_1media_1_1MkvWriter.html',1,'shaka::media']]], diff --git a/docs/search/classes_f.js b/docs/search/classes_f.js index edc18a0bf0..cbe09f5831 100644 --- a/docs/search/classes_f.js +++ b/docs/search/classes_f.js @@ -14,8 +14,8 @@ var searchData= ['schemeinfo',['SchemeInfo',['../d2/d70/structshaka_1_1media_1_1mp4_1_1SchemeInfo.html',1,'shaka::media::mp4']]], ['schemetype',['SchemeType',['../d3/da2/structshaka_1_1media_1_1mp4_1_1SchemeType.html',1,'shaka::media::mp4']]], ['seekhead',['SeekHead',['../dc/d16/classshaka_1_1media_1_1SeekHead.html',1,'shaka::media']]], - ['segmenter',['Segmenter',['../dd/dc5/classshaka_1_1media_1_1webm_1_1Segmenter.html',1,'shaka::media::webm']]], ['segmenter',['Segmenter',['../d9/d26/classshaka_1_1media_1_1mp4_1_1Segmenter.html',1,'shaka::media::mp4']]], + ['segmenter',['Segmenter',['../dd/dc5/classshaka_1_1media_1_1webm_1_1Segmenter.html',1,'shaka::media::webm']]], ['segmentindex',['SegmentIndex',['../d4/df9/structshaka_1_1media_1_1mp4_1_1SegmentIndex.html',1,'shaka::media::mp4']]], ['segmentinfo',['SegmentInfo',['../d0/dc0/structshaka_1_1media_1_1SegmentInfo.html',1,'shaka::media']]], ['segmentinfo',['SegmentInfo',['../dc/de1/structshaka_1_1SegmentInfo.html',1,'shaka']]], diff --git a/docs/search/functions_0.js b/docs/search/functions_0.js index 72efc472c9..f15f06fb3c 100644 --- a/docs/search/functions_0.js +++ b/docs/search/functions_0.js @@ -18,8 +18,7 @@ var searchData= ['addrepresentation',['AddRepresentation',['../d8/d8e/classshaka_1_1AdaptationSet.html#a124e3c1ba5e3209f3214a556ecae28c3',1,'shaka::AdaptationSet']]], ['addrole',['AddRole',['../d8/d8e/classshaka_1_1AdaptationSet.html#ae96ad89ec7cc7d5ef1db467a9cf13730',1,'shaka::AdaptationSet']]], ['addroleelement',['AddRoleElement',['../d1/de7/classshaka_1_1xml_1_1AdaptationSetXmlNode.html#a2718eede55bb89447a74ff802b95fdb1',1,'shaka::xml::AdaptationSetXmlNode']]], - ['addsample',['AddSample',['../de/dde/classshaka_1_1media_1_1mp2t_1_1TsSegmenter.html#a16a92ce0a4d60e502135f89c4b7ffc9b',1,'shaka::media::mp2t::TsSegmenter::AddSample()'],['../dc/df3/classshaka_1_1media_1_1mp4_1_1EncryptingFragmenter.html#a47bfcdce7bfcf5884fa805130856c5b4',1,'shaka::media::mp4::EncryptingFragmenter::AddSample()'],['../db/d95/classshaka_1_1media_1_1mp4_1_1Fragmenter.html#a9453ee5952fc923eae502467e50317e2',1,'shaka::media::mp4::Fragmenter::AddSample()'],['../d9/d26/classshaka_1_1media_1_1mp4_1_1Segmenter.html#a7706ce1829da84b1155a2244c22411bf',1,'shaka::media::mp4::Segmenter::AddSample()'],['../dd/dc5/classshaka_1_1media_1_1webm_1_1Segmenter.html#aad137d0ae95d3e47a32725276970e324',1,'shaka::media::webm::Segmenter::AddSample()']]], - ['addstream',['AddStream',['../df/d46/classshaka_1_1media_1_1Muxer.html#ad9479d299d1c494604a5f5a052fe8280',1,'shaka::media::Muxer']]], + ['addsample',['AddSample',['../de/dde/classshaka_1_1media_1_1mp2t_1_1TsSegmenter.html#a16a92ce0a4d60e502135f89c4b7ffc9b',1,'shaka::media::mp2t::TsSegmenter::AddSample()'],['../dc/df3/classshaka_1_1media_1_1mp4_1_1EncryptingFragmenter.html#a47bfcdce7bfcf5884fa805130856c5b4',1,'shaka::media::mp4::EncryptingFragmenter::AddSample()'],['../db/d95/classshaka_1_1media_1_1mp4_1_1Fragmenter.html#a9453ee5952fc923eae502467e50317e2',1,'shaka::media::mp4::Fragmenter::AddSample()'],['../d9/d26/classshaka_1_1media_1_1mp4_1_1Segmenter.html#ab73caca6e3c9821a5f17c236bd798a1b',1,'shaka::media::mp4::Segmenter::AddSample()'],['../dd/dc5/classshaka_1_1media_1_1webm_1_1Segmenter.html#aad137d0ae95d3e47a32725276970e324',1,'shaka::media::webm::Segmenter::AddSample()']]], ['addsubsample',['AddSubsample',['../de/d49/classshaka_1_1media_1_1DecryptConfig.html#a36681ecf1eeb8a4effb0f00b232bda58',1,'shaka::media::DecryptConfig']]], ['addsupplementalproperty',['AddSupplementalProperty',['../dd/db9/classshaka_1_1xml_1_1RepresentationBaseXmlNode.html#a58965505799f01c99768823caeb66a6b',1,'shaka::xml::RepresentationBaseXmlNode']]], ['addtrackinfo',['AddTrackInfo',['../de/dfa/classshaka_1_1media_1_1webm_1_1Encryptor.html#a866bb619cd0fde0c28ee522cbd4a8c59',1,'shaka::media::webm::Encryptor']]], diff --git a/docs/search/functions_10.js b/docs/search/functions_10.js index d526081ef7..42d0238f41 100644 --- a/docs/search/functions_10.js +++ b/docs/search/functions_10.js @@ -25,11 +25,12 @@ var searchData= ['setencryptionkey',['SetEncryptionKey',['../d5/de0/classshaka_1_1media_1_1mp2t_1_1PesPacketGenerator.html#acc603c661a6e0c592091b8bde5a77e3a',1,'shaka::media::mp2t::PesPacketGenerator']]], ['seterror',['SetError',['../d0/d93/classshaka_1_1media_1_1Status.html#a26903fbb0ee18f6b8d7cd441e922b644',1,'shaka::media::Status']]], ['setfloatingpointattribute',['SetFloatingPointAttribute',['../d1/d31/classshaka_1_1xml_1_1XmlNode.html#ac4b6c261b14ffe83e9820b76b16af1ba',1,'shaka::xml::XmlNode']]], - ['sethandler',['SetHandler',['../da/dfd/classshaka_1_1media_1_1MediaHandler.html#aced66ff3e906e7dd45f1f3771d61edd7',1,'shaka::media::MediaHandler']]], + ['sethandler',['SetHandler',['../dd/d17/classshaka_1_1media_1_1Demuxer.html#a1247302b6c57fbafb09aec71ce0109e3',1,'shaka::media::Demuxer::SetHandler()'],['../da/dfd/classshaka_1_1media_1_1MediaHandler.html#aced66ff3e906e7dd45f1f3771d61edd7',1,'shaka::media::MediaHandler::SetHandler()']]], ['setid',['SetId',['../d1/d31/classshaka_1_1xml_1_1XmlNode.html#a7479055041708fb681957a838e7ecc1f',1,'shaka::xml::XmlNode']]], ['setintegerattribute',['SetIntegerAttribute',['../d1/d31/classshaka_1_1xml_1_1XmlNode.html#ab15dbcc1a051218dc16f44584276ad20',1,'shaka::xml::XmlNode']]], ['setiv',['SetIv',['../df/d87/classshaka_1_1media_1_1AesCryptor.html#a4875146da4761bb757d6b00132ae6fea',1,'shaka::media::AesCryptor']]], ['setkeysource',['SetKeySource',['../dd/d17/classshaka_1_1media_1_1Demuxer.html#abfcf3a9a3f64c0e27497c72324049a1e',1,'shaka::media::Demuxer::SetKeySource()'],['../df/d46/classshaka_1_1media_1_1Muxer.html#ad9c8f69897171ab81db6e7e9c367b4ce',1,'shaka::media::Muxer::SetKeySource()']]], + ['setlanguageoverride',['SetLanguageOverride',['../dd/d17/classshaka_1_1media_1_1Demuxer.html#aa3fe0a64a2745fa6f462c3d179809c3b',1,'shaka::media::Demuxer']]], ['setmuxerlistener',['SetMuxerListener',['../df/d46/classshaka_1_1media_1_1Muxer.html#a0e76dd0a5c07dd538221459365ae824a',1,'shaka::media::Muxer']]], ['setprogrammaptablewriterfortesting',['SetProgramMapTableWriterForTesting',['../de/d64/classshaka_1_1media_1_1mp2t_1_1TsWriter.html#a6eeeadf8e60dc09378b5df7c62eb2bf0',1,'shaka::media::mp2t::TsWriter']]], ['setprogresslistener',['SetProgressListener',['../df/d46/classshaka_1_1media_1_1Muxer.html#a25a146d553c385aad70dbff6b3e87eec',1,'shaka::media::Muxer']]], @@ -43,14 +44,12 @@ var searchData= ['skipbitsconditional',['SkipBitsConditional',['../d6/da9/classshaka_1_1media_1_1BitReader.html#a98bbbbc849a3fadc1a136662174d470e',1,'shaka::media::BitReader']]], ['skipbytes',['SkipBytes',['../d6/da9/classshaka_1_1media_1_1BitReader.html#a7d349253d5cc8f9aa33f1ca2ea94677c',1,'shaka::media::BitReader::SkipBytes()'],['../d9/d13/classshaka_1_1media_1_1BufferReader.html#a2b15dfcd6ff891a9cb7b76f48d91d15d',1,'shaka::media::BufferReader::SkipBytes()']]], ['some_5fhandler',['some_handler',['../d4/d9b/classshaka_1_1media_1_1MediaHandlerTestBase.html#aba1f3fe6f82c2a205aefdeae3be60d1d',1,'shaka::media::MediaHandlerTestBase']]], - ['start',['Start',['../d8/d5c/classshaka_1_1media_1_1MediaStream.html#af5eca8f2e63e762d52fcc30c5f8c38b0',1,'shaka::media::MediaStream']]], ['startbox',['StartBox',['../d1/dee/classshaka_1_1media_1_1mp4_1_1BoxReader.html#a6bafd9cd95a97c4c1475d1806d602ae2',1,'shaka::media::mp4::BoxReader']]], ['startswithstartcode',['StartsWithStartCode',['../db/d86/classshaka_1_1media_1_1NaluReader.html#a9ed9d56a06f43717cdb7035f86075975',1,'shaka::media::NaluReader']]], ['status',['Status',['../d0/d93/classshaka_1_1media_1_1Status.html#abb1d7be8e22d23adff199fdf1a5c8639',1,'shaka::media::Status::Status()'],['../d0/d93/classshaka_1_1media_1_1Status.html#a676879d7464117a9d29281f7fa25b005',1,'shaka::media::Status::Status(error::Code error_code, const std::string &error_message)']]], ['stop',['Stop',['../d5/d33/classshaka_1_1media_1_1ProducerConsumerQueue.html#ac600977b708381facf07f87e36b43d79',1,'shaka::media::ProducerConsumerQueue']]], ['stopped',['Stopped',['../d5/d33/classshaka_1_1media_1_1ProducerConsumerQueue.html#a3d88bdebfa412f2847f1d96fd804bba1',1,'shaka::media::ProducerConsumerQueue']]], ['stream_5fid',['stream_id',['../d2/d93/classshaka_1_1media_1_1mp2t_1_1PesPacket.html#aa023c7fafbced88ca40e98362a7e4c69',1,'shaka::media::mp2t::PesPacket']]], - ['streams',['streams',['../dd/d17/classshaka_1_1media_1_1Demuxer.html#aafb74f83b0de2c787336bad9f096ce50',1,'shaka::media::Demuxer']]], ['suppressonce',['SuppressOnce',['../de/d52/classshaka_1_1Representation.html#a473e45dbbf64e6ab6ed670ccedac84ed',1,'shaka::Representation']]], ['syncsampleiterator',['SyncSampleIterator',['../d7/d26/classshaka_1_1media_1_1mp4_1_1SyncSampleIterator.html#af8bc2d5d153bfdd168f145213c47d3fe',1,'shaka::media::mp4::SyncSampleIterator']]] ]; diff --git a/docs/search/functions_11.js b/docs/search/functions_11.js index 11d0209b36..96c068d389 100644 --- a/docs/search/functions_11.js +++ b/docs/search/functions_11.js @@ -6,7 +6,7 @@ var searchData= ['tempfilepath',['TempFilePath',['../d8/daf/namespaceshaka.html#a66e7e156c1f83435fb6c130803e48f62',1,'shaka']]], ['templatefilename',['TemplateFileName',['../d2/dba/classshaka_1_1media_1_1SegmentTestBase.html#afa2cdde90c04bf69301a9589faa7efd9',1,'shaka::media::SegmentTestBase']]], ['textstreaminfo',['TextStreamInfo',['../db/dab/classshaka_1_1media_1_1TextStreamInfo.html#a3cc97869179c6e1f845ee84ba630048f',1,'shaka::media::TextStreamInfo']]], - ['tostring',['ToString',['../da/d4e/classshaka_1_1media_1_1AudioStreamInfo.html#a7f94e51abcf522ff70e2456a8c8595df',1,'shaka::media::AudioStreamInfo::ToString()'],['../d7/d6d/classshaka_1_1media_1_1MediaSample.html#aa3cbd9fee3a228403c3128be5141a614',1,'shaka::media::MediaSample::ToString()'],['../d8/d5c/classshaka_1_1media_1_1MediaStream.html#a51d85facae4f9d8d89b97a42148769dd',1,'shaka::media::MediaStream::ToString()'],['../d0/d93/classshaka_1_1media_1_1Status.html#ac5d67e71539ca2f3589d3b2d4dc9ad60',1,'shaka::media::Status::ToString()'],['../d5/db1/classshaka_1_1media_1_1StreamInfo.html#aa11d2fe5509ebfdc038aa3f2cdbbe00d',1,'shaka::media::StreamInfo::ToString()'],['../d6/db1/classshaka_1_1media_1_1VideoStreamInfo.html#a9cac8e75d76f1192a48d1dcf61435537',1,'shaka::media::VideoStreamInfo::ToString()'],['../dc/da1/classshaka_1_1MpdBuilder.html#af7eae5cc11141eed2b5451d969e57db6',1,'shaka::MpdBuilder::ToString()']]], + ['tostring',['ToString',['../da/d4e/classshaka_1_1media_1_1AudioStreamInfo.html#a7f94e51abcf522ff70e2456a8c8595df',1,'shaka::media::AudioStreamInfo::ToString()'],['../d7/d6d/classshaka_1_1media_1_1MediaSample.html#aa3cbd9fee3a228403c3128be5141a614',1,'shaka::media::MediaSample::ToString()'],['../d0/d93/classshaka_1_1media_1_1Status.html#ac5d67e71539ca2f3589d3b2d4dc9ad60',1,'shaka::media::Status::ToString()'],['../d5/db1/classshaka_1_1media_1_1StreamInfo.html#aa11d2fe5509ebfdc038aa3f2cdbbe00d',1,'shaka::media::StreamInfo::ToString()'],['../d6/db1/classshaka_1_1media_1_1VideoStreamInfo.html#a9cac8e75d76f1192a48d1dcf61435537',1,'shaka::media::VideoStreamInfo::ToString()'],['../dc/da1/classshaka_1_1MpdBuilder.html#af7eae5cc11141eed2b5451d969e57db6',1,'shaka::MpdBuilder::ToString()']]], ['trackruniterator',['TrackRunIterator',['../de/df6/classshaka_1_1media_1_1mp4_1_1TrackRunIterator.html#a743961add0060500509c3fc74ffd26ab',1,'shaka::media::mp4::TrackRunIterator']]], ['tracktypetostring',['TrackTypeToString',['../d1/d1f/classshaka_1_1media_1_1KeySource.html#a4f9cede7a8c1678e1fac93c8fe12aa75',1,'shaka::media::KeySource']]], ['trim',['Trim',['../d9/df9/classshaka_1_1media_1_1OffsetByteQueue.html#a77b9a12145dad80df95845bd2b66b6a8',1,'shaka::media::OffsetByteQueue']]], diff --git a/docs/search/functions_13.js b/docs/search/functions_13.js index bc698254dd..479e05e2ea 100644 --- a/docs/search/functions_13.js +++ b/docs/search/functions_13.js @@ -2,7 +2,7 @@ var searchData= [ ['validatefixedcryptoflags',['ValidateFixedCryptoFlags',['../d8/daf/namespaceshaka.html#abc3f498491fb895860ebdee359935d93',1,'shaka']]], ['validateflag',['ValidateFlag',['../d8/daf/namespaceshaka.html#a9eab59c66195b54a0f4f2ff67630c2cd',1,'shaka']]], - ['validateoutputstreamindex',['ValidateOutputStreamIndex',['../da/dfd/classshaka_1_1media_1_1MediaHandler.html#a7b61972eedda125b436dc4d26f88c1e6',1,'shaka::media::MediaHandler']]], + ['validateoutputstreamindex',['ValidateOutputStreamIndex',['../dd/d17/classshaka_1_1media_1_1Demuxer.html#ae4a07c3b511d9b5fd3594f042cacbeae',1,'shaka::media::Demuxer::ValidateOutputStreamIndex()'],['../da/dfd/classshaka_1_1media_1_1MediaHandler.html#a7b61972eedda125b436dc4d26f88c1e6',1,'shaka::media::MediaHandler::ValidateOutputStreamIndex()']]], ['validateprcryptoflags',['ValidatePRCryptoFlags',['../d8/daf/namespaceshaka.html#a8b6212ccc4b98e5fdb72f84acf252c6b',1,'shaka']]], ['validatewidevinecryptoflags',['ValidateWidevineCryptoFlags',['../d8/daf/namespaceshaka.html#ade3cbb360c0dcaacc5667676af885008',1,'shaka']]], ['verifysignature',['VerifySignature',['../d9/d0c/classshaka_1_1media_1_1RsaPublicKey.html#a146cc97c8fcacadde1b08c373b766fe4',1,'shaka::media::RsaPublicKey']]], diff --git a/docs/search/functions_2.js b/docs/search/functions_2.js index 2441830069..cb62b97d6f 100644 --- a/docs/search/functions_2.js +++ b/docs/search/functions_2.js @@ -14,7 +14,6 @@ var searchData= ['codec_5fconfig',['codec_config',['../db/dcb/classshaka_1_1media_1_1VPxParser.html#a79057bf3418757cc7d47c3979479220d',1,'shaka::media::VPxParser']]], ['compositionoffsetiterator',['CompositionOffsetIterator',['../db/d4e/classshaka_1_1media_1_1mp4_1_1CompositionOffsetIterator.html#a70511a15ee2f03d447b18668de57ca93',1,'shaka::media::mp4::CompositionOffsetIterator']]], ['computesize',['ComputeSize',['../d1/d2d/structshaka_1_1media_1_1mp4_1_1Box.html#aa4e47d0ba81e234707c76ca36e32c1d5',1,'shaka::media::mp4::Box::ComputeSize()'],['../d6/dcb/structshaka_1_1media_1_1mp4_1_1SampleEncryptionEntry.html#a253fbc00315441efac7ea917a5952e2c',1,'shaka::media::mp4::SampleEncryptionEntry::ComputeSize()']]], - ['connect',['Connect',['../d8/d5c/classshaka_1_1media_1_1MediaStream.html#a98e53e299c7258419623b3d709553562',1,'shaka::media::MediaStream']]], ['container_5fname',['container_name',['../dd/d17/classshaka_1_1media_1_1Demuxer.html#a385c93fd8d589b7d3bccd35e14c58290',1,'shaka::media::Demuxer']]], ['convertbytestreamtonalunitstream',['ConvertByteStreamToNalUnitStream',['../de/dea/classshaka_1_1media_1_1H26xByteToUnitStreamConverter.html#a8f85f99c1cc939382c4eecd6580ecd17',1,'shaka::media::H26xByteToUnitStreamConverter']]], ['converttoadts',['ConvertToADTS',['../d0/da2/classshaka_1_1media_1_1AACAudioSpecificConfig.html#af0ab71e8365a6a93c63badc3150fdacd',1,'shaka::media::AACAudioSpecificConfig']]], diff --git a/docs/search/functions_5.js b/docs/search/functions_5.js index fc709527df..757055290e 100644 --- a/docs/search/functions_5.js +++ b/docs/search/functions_5.js @@ -7,7 +7,7 @@ var searchData= ['finalizefragmentforencryption',['FinalizeFragmentForEncryption',['../dc/df3/classshaka_1_1media_1_1mp4_1_1EncryptingFragmenter.html#a5cfbe43af4b1617853cef5fc2243003b',1,'shaka::media::mp4::EncryptingFragmenter']]], ['finalizesegment',['FinalizeSegment',['../de/d64/classshaka_1_1media_1_1mp2t_1_1TsWriter.html#ae9979f940d7a07127709576aa1f766a1',1,'shaka::media::mp2t::TsWriter']]], ['flush',['Flush',['../d3/d0a/classshaka_1_1media_1_1MediaParser.html#a26752164d7e8ae6a9a894512291ad9cd',1,'shaka::media::MediaParser::Flush()'],['../d3/d61/classshaka_1_1media_1_1File.html#aba73e887fbfe2de3a679c679ddf03f4b',1,'shaka::media::File::Flush()'],['../d9/de6/classshaka_1_1media_1_1LocalFile.html#ad09f01654ef3109b66e3fb5dd9730516',1,'shaka::media::LocalFile::Flush()'],['../d9/dbd/classshaka_1_1media_1_1MemoryFile.html#abc1d0dc10b8ad719b92959c72c394b64',1,'shaka::media::MemoryFile::Flush()'],['../d0/d66/classshaka_1_1media_1_1ThreadedIoFile.html#a4c8d46b1a16fba8bf4267c0a11fa856e',1,'shaka::media::ThreadedIoFile::Flush()'],['../d7/d7a/classshaka_1_1media_1_1UdpFile.html#a66276fd0b6a7effe314ccd63e223d149',1,'shaka::media::UdpFile::Flush()'],['../d3/dc1/classshaka_1_1media_1_1mp2t_1_1Mp2tMediaParser.html#afdb1a88116e3347e67afeb7715847135',1,'shaka::media::mp2t::Mp2tMediaParser::Flush()'],['../d5/de0/classshaka_1_1media_1_1mp2t_1_1PesPacketGenerator.html#a71ea0819224b94ba9df5c951424bc6b1',1,'shaka::media::mp2t::PesPacketGenerator::Flush()'],['../d7/dd5/classshaka_1_1media_1_1mp4_1_1MP4MediaParser.html#a6f26e0d76aeda601fa87190901de27ea',1,'shaka::media::mp4::MP4MediaParser::Flush()'],['../da/de4/classshaka_1_1media_1_1WebMClusterParser.html#ac3d4be1a12667ed722915be727747eee',1,'shaka::media::WebMClusterParser::Flush()'],['../d2/ddb/classshaka_1_1media_1_1WebMMediaParser.html#a6c2d4b5b36304831e637f7ae1b9e54a2',1,'shaka::media::WebMMediaParser::Flush()'],['../dc/df2/classshaka_1_1media_1_1WebVttMediaParser.html#aa666cb1b9ee2ff940d9fc7efda4b50d7',1,'shaka::media::WebVttMediaParser::Flush()'],['../de/ddd/classshaka_1_1media_1_1WebVttSampleConverter.html#aa02d5ce7d9609b3841835fbab74b8c81',1,'shaka::media::WebVttSampleConverter::Flush()'],['../dc/d18/classshaka_1_1media_1_1wvm_1_1WvmMediaParser.html#ac5680e3bd6cdb07fd65af3f39fce999a',1,'shaka::media::wvm::WvmMediaParser::Flush()'],['../d4/d70/classshaka_1_1DashIopMpdNotifier.html#ab3411eb75eedce9a26f0767210280e71',1,'shaka::DashIopMpdNotifier::Flush()'],['../d3/dd0/classshaka_1_1MpdNotifier.html#af8149126f4793506bef385d067561dbf',1,'shaka::MpdNotifier::Flush()'],['../d8/de1/classshaka_1_1SimpleMpdNotifier.html#a8ea622a21a5807775bb2d998fa04658f',1,'shaka::SimpleMpdNotifier::Flush()']]], - ['flushstream',['FlushStream',['../da/dfd/classshaka_1_1media_1_1MediaHandler.html#ae7b4b8f83bf00b3bac0441f3fd991d4b',1,'shaka::media::MediaHandler::FlushStream()'],['../d4/d43/classshaka_1_1media_1_1ChunkingHandler.html#a528a31fccfbfac2d508d1d878ab54659',1,'shaka::media::ChunkingHandler::FlushStream()']]], + ['flushstream',['FlushStream',['../da/dfd/classshaka_1_1media_1_1MediaHandler.html#ae7b4b8f83bf00b3bac0441f3fd991d4b',1,'shaka::media::MediaHandler::FlushStream()'],['../df/d46/classshaka_1_1media_1_1Muxer.html#a522a24c661f6e50aa6fb2a04afbfe5f8',1,'shaka::media::Muxer::FlushStream()'],['../d4/d43/classshaka_1_1media_1_1ChunkingHandler.html#a528a31fccfbfac2d508d1d878ab54659',1,'shaka::media::ChunkingHandler::FlushStream()']]], ['forcesetsegmentalignment',['ForceSetSegmentAlignment',['../d8/d8e/classshaka_1_1AdaptationSet.html#a40532ecbed5f71de85bde0cb7eb1ef9d',1,'shaka::AdaptationSet']]], ['fragmenter',['Fragmenter',['../db/d95/classshaka_1_1media_1_1mp4_1_1Fragmenter.html#a1be96f51fc8ea765aab7142df1bf6006',1,'shaka::media::mp4::Fragmenter']]], ['frequency',['frequency',['../d0/da2/classshaka_1_1media_1_1AACAudioSpecificConfig.html#a10f2acc7fcf3ec9de2fe3598c255786d',1,'shaka::media::AACAudioSpecificConfig']]], diff --git a/docs/search/functions_8.js b/docs/search/functions_8.js index c1a44c4fc8..3c8ebef899 100644 --- a/docs/search/functions_8.js +++ b/docs/search/functions_8.js @@ -3,9 +3,9 @@ var searchData= ['id',['id',['../de/d52/classshaka_1_1Representation.html#a6a3ba385179698e57a1451d1a26ad827',1,'shaka::Representation']]], ['ignorebytes',['IgnoreBytes',['../d1/da1/classshaka_1_1media_1_1mp4_1_1BoxBuffer.html#a1a0c70e3124677ae08164f7b89f6a1d4',1,'shaka::media::mp4::BoxBuffer']]], ['init',['Init',['../d3/d0a/classshaka_1_1media_1_1MediaParser.html#adc7c91bebe75879abba91a56dae52153',1,'shaka::media::MediaParser::Init()'],['../d3/dc1/classshaka_1_1media_1_1mp2t_1_1Mp2tMediaParser.html#aa2aff12312827aacf2b7db6e2f792c52',1,'shaka::media::mp2t::Mp2tMediaParser::Init()'],['../d7/dd5/classshaka_1_1media_1_1mp4_1_1MP4MediaParser.html#acc87b9752a7f6e8c739109acbc02b69d',1,'shaka::media::mp4::MP4MediaParser::Init()'],['../de/df6/classshaka_1_1media_1_1mp4_1_1TrackRunIterator.html#ae9f02c32b4e2be8fc41a20f3f00f3494',1,'shaka::media::mp4::TrackRunIterator::Init()'],['../de/df6/classshaka_1_1media_1_1mp4_1_1TrackRunIterator.html#a4d39eaf8568da29b597411c56f50d86f',1,'shaka::media::mp4::TrackRunIterator::Init(const MovieFragment &moof)'],['../d2/ddb/classshaka_1_1media_1_1WebMMediaParser.html#a5cd5c298938e2c58c45f962b21e43b2e',1,'shaka::media::WebMMediaParser::Init()'],['../dc/df2/classshaka_1_1media_1_1WebVttMediaParser.html#af6c0fb7de806cccd0e1f9dd92b5310f3',1,'shaka::media::WebVttMediaParser::Init()'],['../dc/d18/classshaka_1_1media_1_1wvm_1_1WvmMediaParser.html#a6f931f1702724a9b19c3078a7832bc77',1,'shaka::media::wvm::WvmMediaParser::Init()'],['../d4/d70/classshaka_1_1DashIopMpdNotifier.html#a9dd9d655a538ff2618634ca1f9809478',1,'shaka::DashIopMpdNotifier::Init()'],['../de/d52/classshaka_1_1Representation.html#ae998409ae94f3ba12909a96e8f3f4f7e',1,'shaka::Representation::Init()'],['../d3/dd0/classshaka_1_1MpdNotifier.html#ad6171481d6fb437767b1f5b9e0dac1a3',1,'shaka::MpdNotifier::Init()'],['../d8/de1/classshaka_1_1SimpleMpdNotifier.html#a59bcb401b5ca8d5b893ec7da9461569f',1,'shaka::SimpleMpdNotifier::Init()']]], - ['initialize',['Initialize',['../dd/d17/classshaka_1_1media_1_1Demuxer.html#a436ed9fd2a3ddd78056ec7cf656fd9ad',1,'shaka::media::Demuxer::Initialize()'],['../da/dfd/classshaka_1_1media_1_1MediaHandler.html#aed0da512bbd998ec9d0a5c019ad17acb',1,'shaka::media::MediaHandler::Initialize()'],['../d5/d66/classshaka_1_1media_1_1NalUnitToByteStreamConverter.html#a27986db8a2e62669fe1983a39383c546',1,'shaka::media::NalUnitToByteStreamConverter::Initialize()'],['../dd/de4/classshaka_1_1media_1_1VideoSliceHeaderParser.html#a862422cdf78f370069055037338fa53d',1,'shaka::media::VideoSliceHeaderParser::Initialize()'],['../da/df0/classshaka_1_1media_1_1H264VideoSliceHeaderParser.html#a551bd1e2a852d1a3b23b77df8505b7f7',1,'shaka::media::H264VideoSliceHeaderParser::Initialize()'],['../d1/d79/classshaka_1_1media_1_1H265VideoSliceHeaderParser.html#a83a25520f713f4818a765ea3324a1438',1,'shaka::media::H265VideoSliceHeaderParser::Initialize()'],['../d5/de0/classshaka_1_1media_1_1mp2t_1_1PesPacketGenerator.html#aa0346189f99b2f0fc2c71da1543155fa',1,'shaka::media::mp2t::PesPacketGenerator::Initialize()'],['../de/dde/classshaka_1_1media_1_1mp2t_1_1TsSegmenter.html#acfb51e2e6163e7ae3c4fb62bda437466',1,'shaka::media::mp2t::TsSegmenter::Initialize()'],['../de/d64/classshaka_1_1media_1_1mp2t_1_1TsWriter.html#a6bee605be771538f78633e2ecfc979c6',1,'shaka::media::mp2t::TsWriter::Initialize()'],['../d9/d26/classshaka_1_1media_1_1mp4_1_1Segmenter.html#aaf326521fc1d46d31a7a3b94bcf17c24',1,'shaka::media::mp4::Segmenter::Initialize()'],['../de/dfa/classshaka_1_1media_1_1webm_1_1Encryptor.html#afa6065049fad093b96643b9e3d70595f',1,'shaka::media::webm::Encryptor::Initialize()'],['../dd/dc5/classshaka_1_1media_1_1webm_1_1Segmenter.html#abfde7f995368ea9e91ded9f4980903a6',1,'shaka::media::webm::Segmenter::Initialize()']]], + ['initialize',['Initialize',['../da/dfd/classshaka_1_1media_1_1MediaHandler.html#aed0da512bbd998ec9d0a5c019ad17acb',1,'shaka::media::MediaHandler::Initialize()'],['../d5/d66/classshaka_1_1media_1_1NalUnitToByteStreamConverter.html#a27986db8a2e62669fe1983a39383c546',1,'shaka::media::NalUnitToByteStreamConverter::Initialize()'],['../dd/de4/classshaka_1_1media_1_1VideoSliceHeaderParser.html#a862422cdf78f370069055037338fa53d',1,'shaka::media::VideoSliceHeaderParser::Initialize()'],['../da/df0/classshaka_1_1media_1_1H264VideoSliceHeaderParser.html#a551bd1e2a852d1a3b23b77df8505b7f7',1,'shaka::media::H264VideoSliceHeaderParser::Initialize()'],['../d1/d79/classshaka_1_1media_1_1H265VideoSliceHeaderParser.html#a83a25520f713f4818a765ea3324a1438',1,'shaka::media::H265VideoSliceHeaderParser::Initialize()'],['../d5/de0/classshaka_1_1media_1_1mp2t_1_1PesPacketGenerator.html#aa0346189f99b2f0fc2c71da1543155fa',1,'shaka::media::mp2t::PesPacketGenerator::Initialize()'],['../de/dde/classshaka_1_1media_1_1mp2t_1_1TsSegmenter.html#acfb51e2e6163e7ae3c4fb62bda437466',1,'shaka::media::mp2t::TsSegmenter::Initialize()'],['../de/d64/classshaka_1_1media_1_1mp2t_1_1TsWriter.html#a6bee605be771538f78633e2ecfc979c6',1,'shaka::media::mp2t::TsWriter::Initialize()'],['../d9/d26/classshaka_1_1media_1_1mp4_1_1Segmenter.html#a871281f21d7c5e4194febe925860305c',1,'shaka::media::mp4::Segmenter::Initialize()'],['../de/dfa/classshaka_1_1media_1_1webm_1_1Encryptor.html#afa6065049fad093b96643b9e3d70595f',1,'shaka::media::webm::Encryptor::Initialize()'],['../dd/dc5/classshaka_1_1media_1_1webm_1_1Segmenter.html#abfde7f995368ea9e91ded9f4980903a6',1,'shaka::media::webm::Segmenter::Initialize()']]], ['initializefragment',['InitializeFragment',['../dc/df3/classshaka_1_1media_1_1mp4_1_1EncryptingFragmenter.html#a126294f104809268975fe04391902ad3',1,'shaka::media::mp4::EncryptingFragmenter::InitializeFragment()'],['../db/d95/classshaka_1_1media_1_1mp4_1_1Fragmenter.html#aa702c2af5ea5096d94f2943076a21e4a',1,'shaka::media::mp4::Fragmenter::InitializeFragment()']]], - ['initializeinternal',['InitializeInternal',['../da/dfd/classshaka_1_1media_1_1MediaHandler.html#a0e05325d62bfb66318301c1ed790a46e',1,'shaka::media::MediaHandler::InitializeInternal()'],['../d4/d43/classshaka_1_1media_1_1ChunkingHandler.html#a76a5f4b74da3876cc72f44301c389ebd',1,'shaka::media::ChunkingHandler::InitializeInternal()'],['../d6/d4c/classshaka_1_1media_1_1EncryptionHandler.html#a3f1808a4386081e5e1c9a798a1a69dd0',1,'shaka::media::EncryptionHandler::InitializeInternal()']]], + ['initializeinternal',['InitializeInternal',['../dd/d17/classshaka_1_1media_1_1Demuxer.html#a7488d8ea312be5822c67f5b69a8dbd9f',1,'shaka::media::Demuxer::InitializeInternal()'],['../da/dfd/classshaka_1_1media_1_1MediaHandler.html#a0e05325d62bfb66318301c1ed790a46e',1,'shaka::media::MediaHandler::InitializeInternal()'],['../df/d46/classshaka_1_1media_1_1Muxer.html#a36882e12df5c5bfd48a7b94d1dfad857',1,'shaka::media::Muxer::InitializeInternal()'],['../d4/d43/classshaka_1_1media_1_1ChunkingHandler.html#a76a5f4b74da3876cc72f44301c389ebd',1,'shaka::media::ChunkingHandler::InitializeInternal()'],['../d6/d4c/classshaka_1_1media_1_1EncryptionHandler.html#a3f1808a4386081e5e1c9a798a1a69dd0',1,'shaka::media::EncryptionHandler::InitializeInternal()']]], ['initializewithiv',['InitializeWithIv',['../df/d87/classshaka_1_1media_1_1AesCryptor.html#a41954df34b76b04d561892732dd0ec2f',1,'shaka::media::AesCryptor::InitializeWithIv()'],['../df/d2d/classshaka_1_1media_1_1AesCbcDecryptor.html#a71ff0b9654de96f9990b29c35fa9b7bf',1,'shaka::media::AesCbcDecryptor::InitializeWithIv()'],['../d3/d75/classshaka_1_1media_1_1AesEncryptor.html#a0695df5615cadf6977fdbac978daeffa',1,'shaka::media::AesEncryptor::InitializeWithIv()'],['../d3/dfe/classshaka_1_1media_1_1AesPatternCryptor.html#af878688f0f277f3f6757e85654439c34',1,'shaka::media::AesPatternCryptor::InitializeWithIv()']]], ['injectclockfortesting',['InjectClockForTesting',['../dc/da1/classshaka_1_1MpdBuilder.html#a7a4f96f12b589cfc4b5c2f44532eec53',1,'shaka::MpdBuilder']]], ['injectpespacketgeneratorfortesting',['InjectPesPacketGeneratorForTesting',['../de/dde/classshaka_1_1media_1_1mp2t_1_1TsSegmenter.html#abb78b18426643d58bc44ea61823dc29c',1,'shaka::media::mp2t::TsSegmenter']]], diff --git a/docs/search/functions_b.js b/docs/search/functions_b.js index 2e40e4452a..efded7c2e6 100644 --- a/docs/search/functions_b.js +++ b/docs/search/functions_b.js @@ -2,7 +2,6 @@ var searchData= [ ['makepathsrelativetompd',['MakePathsRelativeToMpd',['../dc/da1/classshaka_1_1MpdBuilder.html#a247a9c807274d4e707530f24e2d207f9',1,'shaka::MpdBuilder']]], ['matches',['Matches',['../d0/d93/classshaka_1_1media_1_1Status.html#a2a94b3ef32cf301bbb258c44ca180eba',1,'shaka::media::Status']]], - ['mediastream',['MediaStream',['../d8/d5c/classshaka_1_1media_1_1MediaStream.html#a12b0f703395d756a584d78b686b2b99b',1,'shaka::media::MediaStream']]], ['mp4muxer',['MP4Muxer',['../db/d30/classshaka_1_1media_1_1mp4_1_1MP4Muxer.html#a5b6a878865250e3e17268c011a361497',1,'shaka::media::mp4::MP4Muxer']]], ['mpd_5ftype',['mpd_type',['../d3/dd0/classshaka_1_1MpdNotifier.html#adfb5bc1586cdb7860dd349b3caf25faa',1,'shaka::MpdNotifier']]], ['mpdbuilder',['MpdBuilder',['../dc/da1/classshaka_1_1MpdBuilder.html#ab364102e01afedd8a4dcc9be4fdcc0ab',1,'shaka::MpdBuilder']]], diff --git a/docs/search/functions_e.js b/docs/search/functions_e.js index 30bd69f483..80134cc6d8 100644 --- a/docs/search/functions_e.js +++ b/docs/search/functions_e.js @@ -1,6 +1,6 @@ var searchData= [ - ['parse',['Parse',['../dd/d17/classshaka_1_1media_1_1Demuxer.html#a0f9b7c954ff48c3021467300d755ac29',1,'shaka::media::Demuxer::Parse()'],['../d3/d0a/classshaka_1_1media_1_1MediaParser.html#a0c85f3cb0591f67c036276be82a1ba9d',1,'shaka::media::MediaParser::Parse()'],['../d0/dd4/classshaka_1_1media_1_1ProtectionSystemSpecificInfo.html#a13b0f93b68efff614c5356df081f2560',1,'shaka::media::ProtectionSystemSpecificInfo::Parse()'],['../d0/da2/classshaka_1_1media_1_1AACAudioSpecificConfig.html#a6b3deca725a42113bf7303387ab74f0f',1,'shaka::media::AACAudioSpecificConfig::Parse()'],['../de/de0/classshaka_1_1media_1_1DecoderConfigurationRecord.html#ab05a1971c60e510b7bc0b5b578dfb04b',1,'shaka::media::DecoderConfigurationRecord::Parse(const std::vector< uint8_t > &data)'],['../de/de0/classshaka_1_1media_1_1DecoderConfigurationRecord.html#a07b7d0dbae45971d4fd4a24652980f65',1,'shaka::media::DecoderConfigurationRecord::Parse(const uint8_t *data, size_t data_size)'],['../d8/d14/classshaka_1_1media_1_1VP8Parser.html#a8baec0e4c74b0b220b777426d0c463e1',1,'shaka::media::VP8Parser::Parse()'],['../db/d5a/classshaka_1_1media_1_1VP9Parser.html#ae915c36aa472d70b55e3d65b24612e57',1,'shaka::media::VP9Parser::Parse()'],['../db/dcb/classshaka_1_1media_1_1VPxParser.html#abb83c8c74d304e83efb8fa60bd7bb722',1,'shaka::media::VPxParser::Parse()'],['../d3/d0c/classshaka_1_1media_1_1mp2t_1_1AdtsHeader.html#a2e154d7423498baf8cd8888c70dcfca9',1,'shaka::media::mp2t::AdtsHeader::Parse()'],['../d3/dc1/classshaka_1_1media_1_1mp2t_1_1Mp2tMediaParser.html#af1a8a33b4ce61777c876717b005d0026',1,'shaka::media::mp2t::Mp2tMediaParser::Parse()'],['../d1/d2d/structshaka_1_1media_1_1mp4_1_1Box.html#a209382fcd42e82a896c29e856627ca52',1,'shaka::media::mp4::Box::Parse()'],['../d7/dd5/classshaka_1_1media_1_1mp4_1_1MP4MediaParser.html#a4105cdbe5ece03071a17c06fb27699b0',1,'shaka::media::mp4::MP4MediaParser::Parse()'],['../da/de4/classshaka_1_1media_1_1WebMClusterParser.html#aba1bae97c2d96181027e43b0a1993e67',1,'shaka::media::WebMClusterParser::Parse()'],['../db/dae/classshaka_1_1media_1_1WebMInfoParser.html#ae0b4d37e02d43627b1bc9c64f43ee3f7',1,'shaka::media::WebMInfoParser::Parse()'],['../d2/ddb/classshaka_1_1media_1_1WebMMediaParser.html#a40940ec01d965e3a78213861a93f7cfc',1,'shaka::media::WebMMediaParser::Parse()'],['../dc/dca/classshaka_1_1media_1_1WebMListParser.html#acd805b7eb25afcd9a3be2d8d88e3c6af',1,'shaka::media::WebMListParser::Parse()'],['../d8/d86/classshaka_1_1media_1_1WebMTracksParser.html#aa4b6d4ac9fa57b47cbc17ee7c1bd3639',1,'shaka::media::WebMTracksParser::Parse()'],['../d4/d59/classshaka_1_1media_1_1WebMWebVTTParser.html#a4e6f754e4fba24f7ea77fd0db959908b',1,'shaka::media::WebMWebVTTParser::Parse()'],['../dc/df2/classshaka_1_1media_1_1WebVttMediaParser.html#a5295c061b251726d1525cefc091101a2',1,'shaka::media::WebVttMediaParser::Parse()'],['../dc/d18/classshaka_1_1media_1_1wvm_1_1WvmMediaParser.html#a246702aa75891cbe396ca7cc11e13eeb',1,'shaka::media::wvm::WvmMediaParser::Parse()']]], + ['parse',['Parse',['../d3/d0a/classshaka_1_1media_1_1MediaParser.html#a0c85f3cb0591f67c036276be82a1ba9d',1,'shaka::media::MediaParser::Parse()'],['../d0/dd4/classshaka_1_1media_1_1ProtectionSystemSpecificInfo.html#a13b0f93b68efff614c5356df081f2560',1,'shaka::media::ProtectionSystemSpecificInfo::Parse()'],['../d0/da2/classshaka_1_1media_1_1AACAudioSpecificConfig.html#a6b3deca725a42113bf7303387ab74f0f',1,'shaka::media::AACAudioSpecificConfig::Parse()'],['../de/de0/classshaka_1_1media_1_1DecoderConfigurationRecord.html#ab05a1971c60e510b7bc0b5b578dfb04b',1,'shaka::media::DecoderConfigurationRecord::Parse(const std::vector< uint8_t > &data)'],['../de/de0/classshaka_1_1media_1_1DecoderConfigurationRecord.html#a07b7d0dbae45971d4fd4a24652980f65',1,'shaka::media::DecoderConfigurationRecord::Parse(const uint8_t *data, size_t data_size)'],['../d8/d14/classshaka_1_1media_1_1VP8Parser.html#a8baec0e4c74b0b220b777426d0c463e1',1,'shaka::media::VP8Parser::Parse()'],['../db/d5a/classshaka_1_1media_1_1VP9Parser.html#ae915c36aa472d70b55e3d65b24612e57',1,'shaka::media::VP9Parser::Parse()'],['../db/dcb/classshaka_1_1media_1_1VPxParser.html#abb83c8c74d304e83efb8fa60bd7bb722',1,'shaka::media::VPxParser::Parse()'],['../d3/d0c/classshaka_1_1media_1_1mp2t_1_1AdtsHeader.html#a2e154d7423498baf8cd8888c70dcfca9',1,'shaka::media::mp2t::AdtsHeader::Parse()'],['../d3/dc1/classshaka_1_1media_1_1mp2t_1_1Mp2tMediaParser.html#af1a8a33b4ce61777c876717b005d0026',1,'shaka::media::mp2t::Mp2tMediaParser::Parse()'],['../d1/d2d/structshaka_1_1media_1_1mp4_1_1Box.html#a209382fcd42e82a896c29e856627ca52',1,'shaka::media::mp4::Box::Parse()'],['../d7/dd5/classshaka_1_1media_1_1mp4_1_1MP4MediaParser.html#a4105cdbe5ece03071a17c06fb27699b0',1,'shaka::media::mp4::MP4MediaParser::Parse()'],['../da/de4/classshaka_1_1media_1_1WebMClusterParser.html#aba1bae97c2d96181027e43b0a1993e67',1,'shaka::media::WebMClusterParser::Parse()'],['../db/dae/classshaka_1_1media_1_1WebMInfoParser.html#ae0b4d37e02d43627b1bc9c64f43ee3f7',1,'shaka::media::WebMInfoParser::Parse()'],['../d2/ddb/classshaka_1_1media_1_1WebMMediaParser.html#a40940ec01d965e3a78213861a93f7cfc',1,'shaka::media::WebMMediaParser::Parse()'],['../dc/dca/classshaka_1_1media_1_1WebMListParser.html#acd805b7eb25afcd9a3be2d8d88e3c6af',1,'shaka::media::WebMListParser::Parse()'],['../d8/d86/classshaka_1_1media_1_1WebMTracksParser.html#aa4b6d4ac9fa57b47cbc17ee7c1bd3639',1,'shaka::media::WebMTracksParser::Parse()'],['../d4/d59/classshaka_1_1media_1_1WebMWebVTTParser.html#a4e6f754e4fba24f7ea77fd0db959908b',1,'shaka::media::WebMWebVTTParser::Parse()'],['../dc/df2/classshaka_1_1media_1_1WebVttMediaParser.html#a5295c061b251726d1525cefc091101a2',1,'shaka::media::WebVttMediaParser::Parse()'],['../dc/d18/classshaka_1_1media_1_1wvm_1_1WvmMediaParser.html#a246702aa75891cbe396ca7cc11e13eeb',1,'shaka::media::wvm::WvmMediaParser::Parse()']]], ['parseboxes',['ParseBoxes',['../d0/dd4/classshaka_1_1media_1_1ProtectionSystemSpecificInfo.html#aa984e27d2655a451ea87ff0a4ddd8b79',1,'shaka::media::ProtectionSystemSpecificInfo']]], ['parsefrombuffer',['ParseFromBuffer',['../d6/dcb/structshaka_1_1media_1_1mp4_1_1SampleEncryptionEntry.html#a247ca9987470a6c724f1e099a78d3460',1,'shaka::media::mp4::SampleEncryptionEntry']]], ['parsefromsampleencryptiondata',['ParseFromSampleEncryptionData',['../d4/dad/structshaka_1_1media_1_1mp4_1_1SampleEncryption.html#a0498009b07beb46e029c65bfb55fc741',1,'shaka::media::mp4::SampleEncryption']]], @@ -25,10 +25,9 @@ var searchData= ['preparechildren',['PrepareChildren',['../d1/da1/classshaka_1_1media_1_1mp4_1_1BoxBuffer.html#a29158ec9769dafbdcf1192abf9a2aa2a',1,'shaka::media::mp4::BoxBuffer']]], ['preparefragmentforencryption',['PrepareFragmentForEncryption',['../dc/df3/classshaka_1_1media_1_1mp4_1_1EncryptingFragmenter.html#ace1882cf57dab24ee8e38765675e69a1',1,'shaka::media::mp4::EncryptingFragmenter::PrepareFragmentForEncryption()'],['../d2/d29/classshaka_1_1media_1_1mp4_1_1KeyRotationFragmenter.html#a3bdb3a237cb8eb1484ee98e195d290a7',1,'shaka::media::mp4::KeyRotationFragmenter::PrepareFragmentForEncryption()']]], ['printerror',['PrintError',['../d8/daf/namespaceshaka.html#a54fadd9c7ef14b39cd0355a5c269c772',1,'shaka']]], - ['process',['Process',['../da/dfd/classshaka_1_1media_1_1MediaHandler.html#acb614e9f43e1eb6f837801b15b78c0b4',1,'shaka::media::MediaHandler::Process()'],['../d4/d43/classshaka_1_1media_1_1ChunkingHandler.html#a44c30ffd7c283be2ba4347bda7848633',1,'shaka::media::ChunkingHandler::Process()'],['../d6/d4c/classshaka_1_1media_1_1EncryptionHandler.html#a7887e6060eb572036674ecb9a7e045c4',1,'shaka::media::EncryptionHandler::Process()']]], + ['process',['Process',['../dd/d17/classshaka_1_1media_1_1Demuxer.html#a869b21d13f02d4d5c0519f9eb35117cd',1,'shaka::media::Demuxer::Process()'],['../da/dfd/classshaka_1_1media_1_1MediaHandler.html#acb614e9f43e1eb6f837801b15b78c0b4',1,'shaka::media::MediaHandler::Process()'],['../df/d46/classshaka_1_1media_1_1Muxer.html#aec730b070245231a0887787005c06eee',1,'shaka::media::Muxer::Process()'],['../d4/d43/classshaka_1_1media_1_1ChunkingHandler.html#a44c30ffd7c283be2ba4347bda7848633',1,'shaka::media::ChunkingHandler::Process()'],['../d6/d4c/classshaka_1_1media_1_1EncryptionHandler.html#a7887e6060eb572036674ecb9a7e045c4',1,'shaka::media::EncryptionHandler::Process()']]], ['producerconsumerqueue',['ProducerConsumerQueue',['../d5/d33/classshaka_1_1media_1_1ProducerConsumerQueue.html#ad7ccb149baa88e5f8356be18344d2baf',1,'shaka::media::ProducerConsumerQueue::ProducerConsumerQueue(size_t capacity)'],['../d5/d33/classshaka_1_1media_1_1ProducerConsumerQueue.html#a80ff75afdbbf7f567dcb57a755542ffc',1,'shaka::media::ProducerConsumerQueue::ProducerConsumerQueue(size_t capacity, size_t starting_pos)']]], ['pts',['pts',['../d2/d93/classshaka_1_1media_1_1mp2t_1_1PesPacket.html#a5c02473f77069810be154a13c7cdcc66',1,'shaka::media::mp2t::PesPacket']]], - ['pullsample',['PullSample',['../d8/d5c/classshaka_1_1media_1_1MediaStream.html#aee15b821f0682812a9d631d531ed8101',1,'shaka::media::MediaStream']]], ['push',['Push',['../d7/dda/classshaka_1_1media_1_1ByteQueue.html#acea792e406efe5119cec2e3e522e02c2',1,'shaka::media::ByteQueue::Push()'],['../d5/d33/classshaka_1_1media_1_1ProducerConsumerQueue.html#a6eaf80daa8c96b0157f5fcd9763dbec1',1,'shaka::media::ProducerConsumerQueue::Push()']]], - ['pushsample',['PushSample',['../d8/d5c/classshaka_1_1media_1_1MediaStream.html#ac65da3105afb21a9013f59a217a26b29',1,'shaka::media::MediaStream::PushSample()'],['../d5/de0/classshaka_1_1media_1_1mp2t_1_1PesPacketGenerator.html#a1a0286c1be09cddc6e8189f4b6b1f544',1,'shaka::media::mp2t::PesPacketGenerator::PushSample()'],['../de/ddd/classshaka_1_1media_1_1WebVttSampleConverter.html#a3e60653861c6d7785adb0ccdb2ed42a3',1,'shaka::media::WebVttSampleConverter::PushSample()']]] + ['pushsample',['PushSample',['../d5/de0/classshaka_1_1media_1_1mp2t_1_1PesPacketGenerator.html#a1a0286c1be09cddc6e8189f4b6b1f544',1,'shaka::media::mp2t::PesPacketGenerator::PushSample()'],['../de/ddd/classshaka_1_1media_1_1WebVttSampleConverter.html#a3e60653861c6d7785adb0ccdb2ed42a3',1,'shaka::media::WebVttSampleConverter::PushSample()']]] ]; diff --git a/docs/search/functions_f.js b/docs/search/functions_f.js index 2c05c8a166..ef856098ff 100644 --- a/docs/search/functions_f.js +++ b/docs/search/functions_f.js @@ -21,5 +21,5 @@ var searchData= ['reopen',['Reopen',['../dd/d7c/classshaka_1_1media_1_1IoCache.html#ae751faea047196ba2770f5bf90649185',1,'shaka::media::IoCache']]], ['representation',['Representation',['../de/d52/classshaka_1_1Representation.html#a997138fcaa5deef5151a64a2d7ce6aeb',1,'shaka::Representation']]], ['reset',['Reset',['../d7/dda/classshaka_1_1media_1_1ByteQueue.html#ab1659ef71098c37e9fb4e55ab1664e84',1,'shaka::media::ByteQueue::Reset()'],['../d3/d7c/classshaka_1_1media_1_1WebMAudioClient.html#afd1a338848c52dc4db79d89ae13b6ea6',1,'shaka::media::WebMAudioClient::Reset()'],['../da/de4/classshaka_1_1media_1_1WebMClusterParser.html#abb306c3299a7279125b8f321ef5bbc94',1,'shaka::media::WebMClusterParser::Reset()'],['../dc/dca/classshaka_1_1media_1_1WebMListParser.html#a4ebac4e1a4165017d206d4aa5c4c0350',1,'shaka::media::WebMListParser::Reset()'],['../d3/d67/classshaka_1_1media_1_1WebMVideoClient.html#af3ad16a6046f60abf43a798747fc1edc',1,'shaka::media::WebMVideoClient::Reset()']]], - ['run',['Run',['../dc/df0/classshaka_1_1media_1_1ClosureThread.html#a2c95d317c0b83b66ac7991c3506dc4e7',1,'shaka::media::ClosureThread::Run()'],['../dd/d17/classshaka_1_1media_1_1Demuxer.html#a9e0b4a430603fdf4639c2153622ae1a2',1,'shaka::media::Demuxer::Run()'],['../df/d46/classshaka_1_1media_1_1Muxer.html#adc96fbcd6a4d4ba9845f8d00974ace0f',1,'shaka::media::Muxer::Run()']]] + ['run',['Run',['../dc/df0/classshaka_1_1media_1_1ClosureThread.html#a2c95d317c0b83b66ac7991c3506dc4e7',1,'shaka::media::ClosureThread::Run()'],['../dd/d17/classshaka_1_1media_1_1Demuxer.html#a9e0b4a430603fdf4639c2153622ae1a2',1,'shaka::media::Demuxer::Run()']]] ];